@tamagui/core 1.0.1-beta.27 → 1.0.1-beta.30

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 (113) hide show
  1. package/dist/cjs/ThemeManager.js +19 -9
  2. package/dist/cjs/ThemeManager.js.map +2 -2
  3. package/dist/cjs/constants/platform.js +6 -6
  4. package/dist/cjs/constants/platform.js.map +2 -2
  5. package/dist/cjs/constants/rnw.js.map +2 -2
  6. package/dist/cjs/createComponent.js +29 -24
  7. package/dist/cjs/createComponent.js.map +2 -2
  8. package/dist/cjs/createTamagui.js +10 -2
  9. package/dist/cjs/createTamagui.js.map +2 -2
  10. package/dist/cjs/helpers/createMediaStyle.js +1 -0
  11. package/dist/cjs/helpers/createMediaStyle.js.map +2 -2
  12. package/dist/cjs/helpers/createPropMapper.js +9 -39
  13. package/dist/cjs/helpers/createPropMapper.js.map +2 -2
  14. package/dist/cjs/helpers/generateAtomicStyles.js +455 -0
  15. package/dist/cjs/helpers/generateAtomicStyles.js.map +7 -0
  16. package/dist/cjs/helpers/getSplitStyles.js +69 -66
  17. package/dist/cjs/helpers/getSplitStyles.js.map +2 -2
  18. package/dist/cjs/helpers/getStylesAtomic.js +31 -40
  19. package/dist/cjs/helpers/getStylesAtomic.js.map +2 -2
  20. package/dist/cjs/helpers/mergeTransform.js +42 -0
  21. package/dist/cjs/helpers/mergeTransform.js.map +7 -0
  22. package/dist/cjs/helpers/prefixStyles.js +192 -0
  23. package/dist/cjs/helpers/prefixStyles.js.map +7 -0
  24. package/dist/cjs/hooks/useIsTouchDevice.js +1 -1
  25. package/dist/cjs/hooks/useIsTouchDevice.js.map +2 -2
  26. package/dist/cjs/hooks/useTheme.js +8 -7
  27. package/dist/cjs/hooks/useTheme.js.map +2 -2
  28. package/dist/cjs/types.js.map +1 -1
  29. package/dist/cjs/views/Theme.js.map +2 -2
  30. package/dist/cjs/views/ThemeProvider.js +1 -1
  31. package/dist/cjs/views/ThemeProvider.js.map +2 -2
  32. package/dist/cjs/views/ThemeReset.js +1 -0
  33. package/dist/cjs/views/ThemeReset.js.map +2 -2
  34. package/dist/esm/ThemeManager.js +19 -9
  35. package/dist/esm/ThemeManager.js.map +2 -2
  36. package/dist/esm/constants/platform.js +4 -4
  37. package/dist/esm/constants/platform.js.map +2 -2
  38. package/dist/esm/constants/rnw.js.map +2 -2
  39. package/dist/esm/createComponent.js +30 -24
  40. package/dist/esm/createComponent.js.map +2 -2
  41. package/dist/esm/createTamagui.js +8 -1
  42. package/dist/esm/createTamagui.js.map +2 -2
  43. package/dist/esm/helpers/createMediaStyle.js +1 -0
  44. package/dist/esm/helpers/createMediaStyle.js.map +2 -2
  45. package/dist/esm/helpers/createPropMapper.js +9 -40
  46. package/dist/esm/helpers/createPropMapper.js.map +2 -2
  47. package/dist/esm/helpers/generateAtomicStyles.js +427 -0
  48. package/dist/esm/helpers/generateAtomicStyles.js.map +7 -0
  49. package/dist/esm/helpers/getSplitStyles.js +71 -73
  50. package/dist/esm/helpers/getSplitStyles.js.map +2 -2
  51. package/dist/esm/helpers/getStylesAtomic.js +26 -39
  52. package/dist/esm/helpers/getStylesAtomic.js.map +2 -2
  53. package/dist/esm/helpers/mergeTransform.js +19 -0
  54. package/dist/esm/helpers/mergeTransform.js.map +7 -0
  55. package/dist/esm/helpers/prefixStyles.js +166 -0
  56. package/dist/esm/helpers/prefixStyles.js.map +7 -0
  57. package/dist/esm/hooks/useIsTouchDevice.js +2 -2
  58. package/dist/esm/hooks/useIsTouchDevice.js.map +2 -2
  59. package/dist/esm/hooks/useTheme.js +8 -7
  60. package/dist/esm/hooks/useTheme.js.map +2 -2
  61. package/dist/esm/views/Theme.js.map +2 -2
  62. package/dist/esm/views/ThemeProvider.js +1 -1
  63. package/dist/esm/views/ThemeProvider.js.map +2 -2
  64. package/dist/esm/views/ThemeReset.js +1 -0
  65. package/dist/esm/views/ThemeReset.js.map +2 -2
  66. package/dist/jsx/ThemeManager.js +19 -9
  67. package/dist/jsx/constants/platform.js +4 -4
  68. package/dist/jsx/createComponent.js +30 -24
  69. package/dist/jsx/createTamagui.js +8 -1
  70. package/dist/jsx/helpers/createMediaStyle.js +1 -0
  71. package/dist/jsx/helpers/createPropMapper.js +9 -40
  72. package/dist/jsx/helpers/generateAtomicStyles.js +426 -0
  73. package/dist/jsx/helpers/getSplitStyles.js +71 -73
  74. package/dist/jsx/helpers/getStylesAtomic.js +26 -39
  75. package/dist/jsx/helpers/mergeTransform.js +18 -0
  76. package/dist/jsx/helpers/prefixStyles.js +165 -0
  77. package/dist/jsx/hooks/useIsTouchDevice.js +2 -2
  78. package/dist/jsx/hooks/useTheme.js +8 -7
  79. package/dist/jsx/views/ThemeProvider.js +1 -1
  80. package/dist/jsx/views/ThemeReset.js +1 -1
  81. package/package.json +8 -5
  82. package/reset.css +2 -1
  83. package/types/Tamagui.d.ts +1 -1
  84. package/types/Tamagui.d.ts.map +1 -1
  85. package/types/ThemeManager.d.ts +9 -6
  86. package/types/ThemeManager.d.ts.map +1 -1
  87. package/types/constants/platform.d.ts +2 -2
  88. package/types/constants/platform.d.ts.map +1 -1
  89. package/types/constants/rnw.d.ts +1 -1
  90. package/types/constants/rnw.d.ts.map +1 -1
  91. package/types/createComponent.d.ts.map +1 -1
  92. package/types/createTamagui.d.ts +1 -0
  93. package/types/createTamagui.d.ts.map +1 -1
  94. package/types/helpers/createMediaStyle.d.ts.map +1 -1
  95. package/types/helpers/createPropMapper.d.ts +2 -2
  96. package/types/helpers/createPropMapper.d.ts.map +1 -1
  97. package/types/helpers/generateAtomicStyles.d.ts +22 -0
  98. package/types/helpers/generateAtomicStyles.d.ts.map +1 -0
  99. package/types/helpers/getSplitStyles.d.ts.map +1 -1
  100. package/types/helpers/getStylesAtomic.d.ts +10 -10
  101. package/types/helpers/getStylesAtomic.d.ts.map +1 -1
  102. package/types/helpers/mergeTransform.d.ts +7 -0
  103. package/types/helpers/mergeTransform.d.ts.map +1 -0
  104. package/types/helpers/prefixStyles.d.ts +5 -0
  105. package/types/helpers/prefixStyles.d.ts.map +1 -0
  106. package/types/hooks/useTheme.d.ts +13 -4
  107. package/types/hooks/useTheme.d.ts.map +1 -1
  108. package/types/types.d.ts +29 -29
  109. package/types/types.d.ts.map +1 -1
  110. package/types/views/Theme.d.ts +1 -9
  111. package/types/views/Theme.d.ts.map +1 -1
  112. package/types/views/ThemeProvider.d.ts +1 -0
  113. package/types/views/ThemeProvider.d.ts.map +1 -1
@@ -1,12 +1,6 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
- import {
4
- mergeTransform,
5
- stylePropsText,
6
- stylePropsTransform,
7
- validPseudoKeys,
8
- validStyles
9
- } from "@tamagui/helpers";
3
+ import { stylePropsText, stylePropsTransform, validPseudoKeys, validStyles } from "@tamagui/helpers";
10
4
  import { useInsertionEffect } from "react";
11
5
  import { getConfig } from "../conf";
12
6
  import { isClient, isWeb, useIsomorphicLayoutEffect } from "../constants/platform";
@@ -20,10 +14,12 @@ import {
20
14
  updateInserted,
21
15
  updateInsertedCache
22
16
  } from "./insertStyleRule";
17
+ import { mergeTransform } from "./mergeTransform";
23
18
  const skipProps = {
24
19
  animation: true,
25
20
  animateOnly: true,
26
21
  debug: true,
22
+ componentName: true,
27
23
  ...!isWeb && {
28
24
  tag: true,
29
25
  whiteSpace: true,
@@ -42,18 +38,14 @@ const skipProps = {
42
38
  let conf;
43
39
  const getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, state, defaultClassNames) => {
44
40
  var _a;
45
- if (process.env.NODE_ENV === "development" && props["debug"] === "verbose") {
46
- console.log(" \xBB getSplitStyles", { props, state, defaultClassNames });
47
- }
48
41
  conf = conf || getConfig();
49
42
  const validStyleProps = staticConfig.isText ? stylePropsText : validStyles;
50
43
  const viewProps = {};
51
- const style = {};
52
- const classNames = {
53
- ...defaultClassNames
54
- };
55
44
  const pseudos = {};
56
45
  const medias = {};
46
+ let style = {};
47
+ let classNames = {};
48
+ const usedKeys = /* @__PURE__ */ new Set();
57
49
  const rulesToInsert = [];
58
50
  function addStyle(prop, rule) {
59
51
  rulesToInsert.push([prop, rule]);
@@ -104,55 +96,32 @@ const getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, state
104
96
  }
105
97
  }
106
98
  __name(mergeClassName, "mergeClassName");
107
- function push() {
108
- if (!cur)
109
- return;
110
- normalizeStyleObject(cur);
111
- if (process.env.NODE_ENV === "development" && props["debug"] === "verbose") {
112
- console.log(" \xBB getSplitStyles push", cur, state);
113
- }
114
- if (isWeb && !state.noClassNames) {
115
- const atomic = getStylesAtomic(cur);
116
- for (const atomicStyle of atomic) {
117
- if (!state.noClassNames) {
118
- addStyle(atomicStyle.identifier, atomicStyle.rules[0]);
119
- mergeClassName(atomicStyle.property, atomicStyle.identifier);
120
- } else {
121
- style[atomicStyle.property] = atomicStyle.value;
122
- }
123
- }
124
- }
125
- if (!isWeb || state.noClassNames || state.resolveVariablesAs === "value" || state.resolveVariablesAs === "both") {
126
- for (const key in cur) {
127
- if (skipProps[key]) {
128
- continue;
129
- }
130
- if (key in stylePropsTransform) {
131
- mergeTransform(style, key, cur[key]);
132
- } else {
133
- style[key] = cur[key];
134
- }
135
- }
136
- }
137
- cur = null;
138
- }
139
- __name(push, "push");
140
- for (const keyInit in props) {
141
- if (skipProps[keyInit]) {
99
+ const propKeys = Object.keys(props);
100
+ for (let i = propKeys.length - 1; i >= 0; i--) {
101
+ const keyInit = propKeys[i];
102
+ if (usedKeys.has(keyInit))
142
103
  continue;
143
- }
144
- if (!isWeb && keyInit.startsWith("data-")) {
104
+ if (skipProps[keyInit])
105
+ continue;
106
+ if (!isWeb && keyInit.startsWith("data-"))
145
107
  continue;
146
- }
147
108
  const valInit = props[keyInit];
148
109
  if (keyInit === "style" || keyInit.startsWith("_style")) {
149
- push();
150
- cur = valInit;
151
- push();
110
+ if (!valInit)
111
+ continue;
112
+ for (const key in valInit) {
113
+ if (usedKeys.has(key))
114
+ continue;
115
+ style[key] = valInit;
116
+ }
117
+ continue;
118
+ }
119
+ if (keyInit === "className") {
120
+ mergeClassName(keyInit, valInit);
152
121
  continue;
153
122
  }
154
- if (keyInit === "className" || validStyleProps[keyInit] && valInit && valInit[0] === "_") {
155
- push();
123
+ if (validStyleProps[keyInit] && valInit && valInit[0] === "_") {
124
+ usedKeys.add(keyInit);
156
125
  mergeClassName(keyInit, valInit);
157
126
  continue;
158
127
  }
@@ -162,19 +131,24 @@ const getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, state
162
131
  let isMedia = keyInit[0] === "$";
163
132
  let isPseudo = validPseudoKeys[keyInit];
164
133
  if (!isMedia && !isPseudo && !((_a = staticConfig.variants) == null ? void 0 : _a[keyInit]) && !validStyleProps[keyInit] && !conf.shorthands[keyInit]) {
134
+ usedKeys.add(keyInit);
165
135
  viewProps[keyInit] = valInit;
166
136
  continue;
167
137
  }
168
- const out = isMedia || isPseudo ? true : staticConfig.propMapper(keyInit, valInit, theme, state.fallbackProps || props, state.resolveVariablesAs);
169
- const expanded = out === true || !out ? [[keyInit, valInit]] : Object.entries(out);
138
+ const expanded = isMedia || isPseudo ? [[keyInit, valInit]] : staticConfig.propMapper(keyInit, valInit, theme, props, state);
170
139
  if (process.env.NODE_ENV === "development" && props["debug"] === "verbose") {
171
140
  console.log(" \xBB getSplitStyles", keyInit, expanded);
172
141
  }
142
+ if (!expanded) {
143
+ continue;
144
+ }
173
145
  for (const [key, val] of expanded) {
174
- if (val === void 0) {
146
+ if (val === void 0)
147
+ continue;
148
+ if (usedKeys.has(key))
175
149
  continue;
176
- }
177
150
  if (key !== "target" && val && val[0] === "_") {
151
+ usedKeys.add(key);
178
152
  mergeClassName(key, val);
179
153
  continue;
180
154
  }
@@ -215,13 +189,12 @@ const getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, state
215
189
  if (shouldDoClasses) {
216
190
  const mediaStyles = getStylesAtomic(mediaStyle);
217
191
  for (const style2 of mediaStyles) {
218
- const out2 = createMediaStyle(style2, mediaKeyShort, mediaQueryConfig);
219
- addStyle(out2.identifier, out2.styleRule);
220
- mergeClassName(`${out2.identifier}-${mediaKey}`, out2.identifier);
192
+ const out = createMediaStyle(style2, mediaKeyShort, mediaQueryConfig);
193
+ addStyle(out.identifier, out.styleRule);
194
+ mergeClassName(`${out.identifier}-${mediaKey}`, out.identifier);
221
195
  }
222
196
  } else {
223
197
  if (mediaState[mediaKey]) {
224
- push();
225
198
  if (process.env.NODE_ENV === "development" && props["debug"]) {
226
199
  console.log("apply media style", mediaKey, mediaState);
227
200
  }
@@ -231,23 +204,46 @@ const getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, state
231
204
  continue;
232
205
  }
233
206
  if (!isWeb && key === "pointerEvents") {
207
+ usedKeys.add(key);
234
208
  viewProps[key] = val;
235
209
  continue;
236
210
  }
237
211
  if (validStyleProps[key]) {
238
- cur = cur || {};
239
- cur[key] = val;
212
+ usedKeys.add(key);
213
+ if (val && val[0] === "_") {
214
+ classNames[key] = val;
215
+ } else {
216
+ if (key in stylePropsTransform && (!isWeb || state.noClassNames || state.resolveVariablesAs === "value" || state.resolveVariablesAs === "both")) {
217
+ mergeTransform(style, key, val, true);
218
+ } else {
219
+ style[key] = val;
220
+ }
221
+ }
240
222
  continue;
241
223
  }
242
224
  if (!staticConfig.variants || !(key in staticConfig.variants)) {
243
225
  if (!skipProps[key]) {
244
- push();
245
226
  viewProps[key] = val;
227
+ usedKeys.add(key);
246
228
  }
247
229
  }
248
230
  }
249
231
  }
250
- push();
232
+ if (defaultClassNames) {
233
+ classNames = {
234
+ ...defaultClassNames,
235
+ ...classNames
236
+ };
237
+ }
238
+ if (isWeb && !state.noClassNames) {
239
+ const atomic = getStylesAtomic(style);
240
+ for (const atomicStyle of atomic) {
241
+ const key = atomicStyle.property;
242
+ addStyle(atomicStyle.identifier, atomicStyle.rules[0]);
243
+ mergeClassName(key, atomicStyle.identifier);
244
+ }
245
+ style = {};
246
+ }
251
247
  if (transforms) {
252
248
  for (const namespace in transforms) {
253
249
  const [hash, val] = transforms[namespace];
@@ -262,7 +258,9 @@ const getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, state
262
258
  }
263
259
  }
264
260
  if (process.env.NODE_ENV === "development" && props["debug"] === "verbose") {
265
- console.log(" \xBB getSplitStyles out", { style, pseudos, medias, classNames, viewProps, state });
261
+ if (typeof document !== "undefined") {
262
+ console.log(" \xBB getSplitStyles out", { style, pseudos, medias, classNames, viewProps, state });
263
+ }
266
264
  }
267
265
  return {
268
266
  viewProps,
@@ -294,8 +292,9 @@ const getSubStyle = /* @__PURE__ */ __name((styleIn, staticConfig, theme, props,
294
292
  const styleOut = {};
295
293
  for (const key in styleIn) {
296
294
  const val = styleIn[key];
297
- const out = staticConfig.propMapper(key, val, theme, state.fallbackProps || props, state.resolveVariablesAs, avoidDefaultProps);
298
- const expanded = out === true || !out ? [[key, val]] : Object.entries(out);
295
+ const expanded = staticConfig.propMapper(key, val, theme, props, state, avoidDefaultProps);
296
+ if (!expanded)
297
+ continue;
299
298
  for (const [skey, sval] of expanded) {
300
299
  if (skey in stylePropsTransform) {
301
300
  mergeTransform(styleOut, skey, sval);
@@ -304,7 +303,6 @@ const getSubStyle = /* @__PURE__ */ __name((styleIn, staticConfig, theme, props,
304
303
  }
305
304
  }
306
305
  }
307
- normalizeStyleObject(styleOut);
308
306
  return styleOut;
309
307
  }, "getSubStyle");
310
308
  function normalizeStyleObject(style) {
@@ -1,13 +1,25 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
- import {
4
- invertMapTransformKeys,
5
- mergeTransform,
6
- stylePropsTransform
7
- } from "@tamagui/helpers";
8
- import { getConfig } from "../conf";
9
- import { rnw } from "../constants/rnw";
3
+ import { stylePropsTransform } from "@tamagui/helpers";
4
+ import { reversedShorthands } from "../createTamagui";
10
5
  import { isVariable } from "../createVariable";
6
+ import { generateAtomicStyles } from "./generateAtomicStyles";
7
+ import { invertMapTransformKeys, mergeTransform } from "./mergeTransform";
8
+ const pseudos = {
9
+ hoverStyle: {
10
+ name: "hover",
11
+ priority: 1
12
+ },
13
+ pressStyle: {
14
+ name: "active",
15
+ priority: 2
16
+ },
17
+ focusStyle: {
18
+ name: "focus",
19
+ priority: 3
20
+ }
21
+ };
22
+ const pseudosOrdered = Object.values(pseudos);
11
23
  function getStylesAtomic(stylesIn, options = {}) {
12
24
  const { hoverStyle, pressStyle, focusStyle, ...base } = stylesIn;
13
25
  let res = [];
@@ -31,10 +43,6 @@ function getStylesAtomic(stylesIn, options = {}) {
31
43
  return res;
32
44
  }
33
45
  __name(getStylesAtomic, "getStylesAtomic");
34
- const generateAtomicStyles = /* @__PURE__ */ __name((style) => {
35
- return rnw.atomic(rnw.createCompileableStyle(rnw.createReactDOMStyle(style)));
36
- }, "generateAtomicStyles");
37
- let reversedShorthands = null;
38
46
  function getAtomicStyle(style, pseudo, options) {
39
47
  var _a;
40
48
  if (style == null || typeof style !== "object") {
@@ -62,27 +70,20 @@ function getAtomicStyle(style, pseudo, options) {
62
70
  } else {
63
71
  atomicStyles = generateAtomicStyles(style);
64
72
  }
65
- if (!reversedShorthands) {
66
- reversedShorthands = {};
67
- const conf = getConfig();
68
- if (conf.shorthands) {
69
- for (const key in conf.shorthands) {
70
- reversedShorthands[conf.shorthands[key]] = key;
71
- }
72
- }
73
- }
74
73
  return Object.keys(atomicStyles).map((key) => {
75
74
  const val = atomicStyles[key];
76
- const [_, a, b] = val.identifier.split("-");
77
- const hash = b || a;
75
+ const [_, hash] = val.identifier.split("-");
78
76
  const psuedoPrefix = pseudo ? `0${pseudo.name}-` : "";
77
+ if (!val.property) {
78
+ throw new Error(`no prop`);
79
+ }
79
80
  const shortProp = reversedShorthands[val.property] || val.property;
80
81
  const identifier = `_${shortProp}-${psuedoPrefix}${hash}`;
81
82
  const className = `.${identifier}`;
82
83
  const rules = val.rules.map((rule) => {
83
84
  if (pseudo) {
84
85
  const psuedoPrefixSelect = [...Array(pseudo.priority)].map(() => ":root").join("") + " ";
85
- let res = rule.replace(`.${val.identifier}`, `${psuedoPrefixSelect} ${className}`).replace("{", `:${pseudo.name}{`);
86
+ let res = rule.replace(`.${val.identifier}`, `${psuedoPrefixSelect} ${className}`).replace("{", `:${pseudo.name}{`).replace(";", " !important;");
86
87
  if (pseudo.name === "hover") {
87
88
  res = `@media not all and (hover: none) { ${res} }`;
88
89
  }
@@ -92,7 +93,8 @@ function getAtomicStyle(style, pseudo, options) {
92
93
  });
93
94
  const result = {
94
95
  property: val.transformProperty || val.property,
95
- value: val.value,
96
+ pseudo: pseudo == null ? void 0 : pseudo.name,
97
+ value: val.value || "",
96
98
  identifier,
97
99
  className,
98
100
  rules
@@ -109,21 +111,6 @@ const borderDefaults = {
109
111
  borderLeftWidth: "borderLeftStyle",
110
112
  borderRightWidth: "borderRightStyle"
111
113
  };
112
- const pseudos = {
113
- hoverStyle: {
114
- name: "hover",
115
- priority: 1
116
- },
117
- pressStyle: {
118
- name: "active",
119
- priority: 2
120
- },
121
- focusStyle: {
122
- name: "focus",
123
- priority: 3
124
- }
125
- };
126
- const pseudosOrdered = Object.values(pseudos);
127
114
  export {
128
115
  getStylesAtomic,
129
116
  pseudos
@@ -0,0 +1,18 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ const mergeTransform = /* @__PURE__ */ __name((obj, key, val, backwards = false) => {
4
+ obj.transform || (obj.transform = []);
5
+ obj.transform[backwards ? "unshift" : "push"]({ [mapTransformKeys[key] || key]: val });
6
+ }, "mergeTransform");
7
+ const mapTransformKeys = {
8
+ x: "translateX",
9
+ y: "translateY"
10
+ };
11
+ const invertMapTransformKeys = {
12
+ translateX: "x",
13
+ translateY: "y"
14
+ };
15
+ export {
16
+ invertMapTransformKeys,
17
+ mergeTransform
18
+ };
@@ -0,0 +1,165 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import createPrefixer from "inline-style-prefixer/lib/createPrefixer";
4
+ import backgroundClip from "inline-style-prefixer/lib/plugins/backgroundClip";
5
+ import crossFade from "inline-style-prefixer/lib/plugins/crossFade";
6
+ import cursor from "inline-style-prefixer/lib/plugins/cursor";
7
+ import filter from "inline-style-prefixer/lib/plugins/filter";
8
+ import flex from "inline-style-prefixer/lib/plugins/flex";
9
+ import flexboxIE from "inline-style-prefixer/lib/plugins/flexboxIE";
10
+ import flexboxOld from "inline-style-prefixer/lib/plugins/flexboxOld";
11
+ import gradient from "inline-style-prefixer/lib/plugins/gradient";
12
+ import grid from "inline-style-prefixer/lib/plugins/grid";
13
+ import imageSet from "inline-style-prefixer/lib/plugins/imageSet";
14
+ import logical from "inline-style-prefixer/lib/plugins/logical";
15
+ import position from "inline-style-prefixer/lib/plugins/position";
16
+ import sizing from "inline-style-prefixer/lib/plugins/sizing";
17
+ import transition from "inline-style-prefixer/lib/plugins/transition";
18
+ const prefixInlineStyles = /* @__PURE__ */ __name((style) => {
19
+ const prefixedStyles = prefixStyles(style);
20
+ Object.keys(prefixedStyles).forEach((prop) => {
21
+ const value = prefixedStyles[prop];
22
+ if (Array.isArray(value)) {
23
+ prefixedStyles[prop] = value[value.length - 1];
24
+ }
25
+ });
26
+ return prefixedStyles;
27
+ }, "prefixInlineStyles");
28
+ const w = ["Webkit"];
29
+ const m = ["Moz"];
30
+ const ms = ["ms"];
31
+ const wm = ["Webkit", "Moz"];
32
+ const wms = ["Webkit", "ms"];
33
+ const wmms = ["Webkit", "Moz", "ms"];
34
+ const staticData = {
35
+ plugins: [
36
+ backgroundClip,
37
+ crossFade,
38
+ cursor,
39
+ filter,
40
+ flex,
41
+ flexboxIE,
42
+ flexboxOld,
43
+ gradient,
44
+ grid,
45
+ imageSet,
46
+ logical,
47
+ position,
48
+ sizing,
49
+ transition
50
+ ],
51
+ prefixMap: {
52
+ animation: w,
53
+ animationDelay: w,
54
+ animationDirection: w,
55
+ animationFillMode: w,
56
+ animationDuration: w,
57
+ animationIterationCount: w,
58
+ animationName: w,
59
+ animationPlayState: w,
60
+ animationTimingFunction: w,
61
+ appearance: wm,
62
+ userSelect: wmms,
63
+ textEmphasisPosition: w,
64
+ textEmphasis: w,
65
+ textEmphasisStyle: w,
66
+ textEmphasisColor: w,
67
+ boxDecorationBreak: w,
68
+ clipPath: w,
69
+ maskImage: w,
70
+ maskMode: w,
71
+ maskRepeat: w,
72
+ maskPosition: w,
73
+ maskClip: w,
74
+ maskOrigin: w,
75
+ maskSize: w,
76
+ maskComposite: w,
77
+ mask: w,
78
+ maskBorderSource: w,
79
+ maskBorderMode: w,
80
+ maskBorderSlice: w,
81
+ maskBorderWidth: w,
82
+ maskBorderOutset: w,
83
+ maskBorderRepeat: w,
84
+ maskBorder: w,
85
+ maskType: w,
86
+ textDecorationStyle: w,
87
+ textDecorationSkip: w,
88
+ textDecorationLine: w,
89
+ textDecorationColor: w,
90
+ filter: w,
91
+ fontFeatureSettings: w,
92
+ breakAfter: wmms,
93
+ breakBefore: wmms,
94
+ breakInside: wmms,
95
+ columnCount: wm,
96
+ columnFill: wm,
97
+ columnGap: wm,
98
+ columnRule: wm,
99
+ columnRuleColor: wm,
100
+ columnRuleStyle: wm,
101
+ columnRuleWidth: wm,
102
+ columns: wm,
103
+ columnSpan: wm,
104
+ columnWidth: wm,
105
+ writingMode: wms,
106
+ flex: wms,
107
+ flexBasis: w,
108
+ flexDirection: wms,
109
+ flexGrow: w,
110
+ flexFlow: wms,
111
+ flexShrink: w,
112
+ flexWrap: wms,
113
+ alignContent: w,
114
+ alignItems: w,
115
+ alignSelf: w,
116
+ justifyContent: w,
117
+ order: w,
118
+ transform: w,
119
+ transformOrigin: w,
120
+ transformOriginX: w,
121
+ transformOriginY: w,
122
+ backfaceVisibility: w,
123
+ perspective: w,
124
+ perspectiveOrigin: w,
125
+ transformStyle: w,
126
+ transformOriginZ: w,
127
+ backdropFilter: w,
128
+ fontKerning: w,
129
+ scrollSnapType: wms,
130
+ scrollSnapPointsX: wms,
131
+ scrollSnapPointsY: wms,
132
+ scrollSnapDestination: wms,
133
+ scrollSnapCoordinate: wms,
134
+ shapeImageThreshold: w,
135
+ shapeImageMargin: w,
136
+ shapeImageOutside: w,
137
+ hyphens: wmms,
138
+ flowInto: wms,
139
+ flowFrom: wms,
140
+ regionFragment: wms,
141
+ textOrientation: w,
142
+ textAlignLast: m,
143
+ tabSize: m,
144
+ wrapFlow: ms,
145
+ wrapThrough: ms,
146
+ wrapMargin: ms,
147
+ touchAction: ms,
148
+ textSizeAdjust: ["ms", "Webkit"],
149
+ borderImage: w,
150
+ borderImageOutset: w,
151
+ borderImageRepeat: w,
152
+ borderImageSlice: w,
153
+ borderImageSource: w,
154
+ borderImageWidth: w,
155
+ transitionDelay: w,
156
+ transitionDuration: w,
157
+ transitionProperty: w,
158
+ transitionTimingFunction: w
159
+ }
160
+ };
161
+ const prefixStyles = createPrefixer(staticData);
162
+ export {
163
+ prefixInlineStyles,
164
+ prefixStyles
165
+ };
@@ -1,11 +1,11 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
3
  import { useState } from "react";
4
- import { isTouchDevice, useIsomorphicLayoutEffect } from "../constants/platform";
4
+ import { isTouchable, useIsomorphicLayoutEffect } from "../constants/platform";
5
5
  const useIsTouchDevice = /* @__PURE__ */ __name(() => {
6
6
  const [touchOnly, setTouchOnly] = useState(false);
7
7
  useIsomorphicLayoutEffect(() => {
8
- if (isTouchDevice) {
8
+ if (isTouchable) {
9
9
  setTouchOnly(true);
10
10
  }
11
11
  }, []);
@@ -11,7 +11,7 @@ import { useConstant } from "./useConstant";
11
11
  const useTheme = /* @__PURE__ */ __name((themeName, componentName, props, forceUpdate) => {
12
12
  const { name, theme, themes, themeManager, className, didChangeTheme } = useChangeThemeEffect(themeName, componentName, props, forceUpdate);
13
13
  if (process.env.NODE_ENV === "development") {
14
- if ((props == null ? void 0 : props["debug"]) === "verbose") {
14
+ if ((props == null ? void 0 : props.debug) === "verbose") {
15
15
  console.log(" \xBB useTheme", { themeName, componentName, name, className });
16
16
  }
17
17
  }
@@ -52,7 +52,7 @@ const useTheme = /* @__PURE__ */ __name((themeName, componentName, props, forceU
52
52
  if (!name || key === "__proto__" || typeof key === "symbol") {
53
53
  if (key === GetThemeManager) {
54
54
  if (process.env.NODE_ENV === "development") {
55
- if (props["debug"]) {
55
+ if (props == null ? void 0 : props.debug) {
56
56
  console.log("did change", { themeName, didChangeTheme, name, componentName }, themeManager == null ? void 0 : themeManager.parentName);
57
57
  }
58
58
  }
@@ -131,13 +131,14 @@ const useChangeThemeEffect = /* @__PURE__ */ __name((name, componentName, props,
131
131
  const debug = props && props["debug"];
132
132
  const parentManager = useContext(ThemeManagerContext) || emptyManager;
133
133
  const { themes } = useContext(ThemeContext);
134
- const next = parentManager.getNextTheme({ name, componentName, themes }, props);
134
+ const reset = (props == null ? void 0 : props.reset) || false;
135
+ const getThemeProps = { name, componentName, themes, reset };
136
+ const next = parentManager.getNextTheme(getThemeProps, debug);
135
137
  const forceUpdate = forceUpdateProp || useForceUpdate();
136
138
  const themeManager = useConstant(() => {
137
- if (!next) {
139
+ if (!next)
138
140
  return null;
139
- }
140
- return new ThemeManager(next.name, next.theme, parentManager);
141
+ return new ThemeManager(next.name, next.theme, parentManager, reset);
141
142
  });
142
143
  if (typeof document !== "undefined") {
143
144
  useLayoutEffect(() => {
@@ -147,7 +148,7 @@ const useChangeThemeEffect = /* @__PURE__ */ __name((name, componentName, props,
147
148
  themeManager.update(next);
148
149
  }
149
150
  return parentManager.onChangeTheme(() => {
150
- const next2 = parentManager.getNextTheme({ name, componentName, themes }, debug);
151
+ const next2 = parentManager.getNextTheme(getThemeProps, debug);
151
152
  if (!next2)
152
153
  return;
153
154
  if (themeManager.update(next2)) {
@@ -20,7 +20,7 @@ const ThemeProvider = /* @__PURE__ */ __name((props) => {
20
20
  return () => {
21
21
  document.body.classList.remove(cn);
22
22
  };
23
- }, [props.disableRootThemeClass]);
23
+ }, [props.defaultTheme, props.disableRootThemeClass]);
24
24
  }
25
25
  const themeContext = useMemo(() => {
26
26
  return {
@@ -27,7 +27,7 @@ const ThemeReset = /* @__PURE__ */ __name((props) => {
27
27
  if (!themeManager || !props.children) {
28
28
  return props.children || null;
29
29
  }
30
- return <Theme className="tui-theme-reset" name={name}>{props.children}</Theme>;
30
+ return <Theme className="tui-theme-reset" reset name={name}>{props.children}</Theme>;
31
31
  }, "ThemeReset");
32
32
  export {
33
33
  ThemeReset
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/core",
3
- "version": "1.0.1-beta.27",
3
+ "version": "1.0.1-beta.30",
4
4
  "source": "src/index.ts",
5
5
  "main": "dist/cjs",
6
6
  "module": "dist/esm",
@@ -21,11 +21,14 @@
21
21
  ],
22
22
  "dependencies": {
23
23
  "@expo/match-media": "^0.3.0",
24
- "@tamagui/helpers": "^1.0.1-beta.27",
24
+ "@tamagui/helpers": "^1.0.1-beta.30",
25
25
  "@tamagui/ow": "^0.28.1",
26
- "@tamagui/use-debounce": "^1.0.1-beta.27",
27
- "@tamagui/use-force-update": "^1.0.1-beta.27",
26
+ "@tamagui/use-debounce": "^1.0.1-beta.30",
27
+ "@tamagui/use-force-update": "^1.0.1-beta.30",
28
28
  "expo-screen-orientation": "^4.2.0",
29
+ "hyphenate-style-name": "^1.0.4",
30
+ "inline-style-prefixer": "^6.0.0",
31
+ "normalize-css-color": "^1.0.2",
29
32
  "react": "*",
30
33
  "react-dom": "*"
31
34
  },
@@ -33,7 +36,7 @@
33
36
  "react-native-web": "*"
34
37
  },
35
38
  "devDependencies": {
36
- "@tamagui/build": "^1.0.1-beta.27",
39
+ "@tamagui/build": "^1.0.1-beta.30",
37
40
  "@types/react": "^17.0.35",
38
41
  "csstype": "^3.0.10",
39
42
  "esbuild": "^0.14.36",
package/reset.css CHANGED
@@ -14,7 +14,8 @@ button,
14
14
  ul,
15
15
  ol,
16
16
  li,
17
- pre {
17
+ pre,
18
+ h1, h2, h3, h4, h5, h6 {
18
19
  margin: 0;
19
20
  padding: 0;
20
21
  }
@@ -1,7 +1,7 @@
1
1
  import * as Helpers from '@tamagui/helpers';
2
2
  import { TamaguiInternalConfig } from './types';
3
3
  declare class TamaguiManager {
4
- rnw: Record<string, any>;
4
+ rnw: any;
5
5
  Helpers: typeof Helpers;
6
6
  get config(): TamaguiInternalConfig<import("./types").CreateTokens<import("./types").VariableVal>, {
7
7
  [key: string]: Partial<import("./types").TamaguiBaseTheme> & {
@@ -1 +1 @@
1
- {"version":3,"file":"Tamagui.d.ts","sourceRoot":"","sources":["../src/Tamagui.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAA;AAK3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAI/C,cAAM,cAAc;IAClB,GAAG,sBAAM;IACT,OAAO,iBAAU;IAEjB,IAAI,MAAM;;;;;;;;;;;;;;OAET;IAED,IAAI,aAAa,cAEhB;IAED,IAAI,YAAY,OAEf;IAED,IAAI,aAAa,OAEhB;IAED,IAAI,iBAAiB,qBAEpB;CACF;AAED,eAAO,MAAM,OAAO,gBAAuB,CAAA;AAI3C,eAAO,MAAM,sBAAsB,eAAgB,MAAM,QAExD,CAAA;AAED,eAAO,MAAM,kBAAkB,eAAgB,MAAM,SAAS,GAAG,SAEhE,CAAA"}
1
+ {"version":3,"file":"Tamagui.d.ts","sourceRoot":"","sources":["../src/Tamagui.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAA;AAK3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAI/C,cAAM,cAAc;IAClB,GAAG,MAAM;IACT,OAAO,iBAAU;IAEjB,IAAI,MAAM;;;;;;;;;;;;;;OAET;IAED,IAAI,aAAa,cAEhB;IAED,IAAI,YAAY,OAEf;IAED,IAAI,aAAa,OAEhB;IAED,IAAI,iBAAiB,qBAEpB;CACF;AAED,eAAO,MAAM,OAAO,gBAAuB,CAAA;AAI3C,eAAO,MAAM,sBAAsB,eAAgB,MAAM,QAExD,CAAA;AAED,eAAO,MAAM,kBAAkB,eAAgB,MAAM,SAAS,GAAG,SAEhE,CAAA"}