@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.
- package/dist/cjs/ThemeManager.js +19 -9
- package/dist/cjs/ThemeManager.js.map +2 -2
- package/dist/cjs/constants/platform.js +6 -6
- package/dist/cjs/constants/platform.js.map +2 -2
- package/dist/cjs/constants/rnw.js.map +2 -2
- package/dist/cjs/createComponent.js +29 -24
- package/dist/cjs/createComponent.js.map +2 -2
- package/dist/cjs/createTamagui.js +10 -2
- package/dist/cjs/createTamagui.js.map +2 -2
- package/dist/cjs/helpers/createMediaStyle.js +1 -0
- package/dist/cjs/helpers/createMediaStyle.js.map +2 -2
- package/dist/cjs/helpers/createPropMapper.js +9 -39
- package/dist/cjs/helpers/createPropMapper.js.map +2 -2
- package/dist/cjs/helpers/generateAtomicStyles.js +455 -0
- package/dist/cjs/helpers/generateAtomicStyles.js.map +7 -0
- package/dist/cjs/helpers/getSplitStyles.js +69 -66
- package/dist/cjs/helpers/getSplitStyles.js.map +2 -2
- package/dist/cjs/helpers/getStylesAtomic.js +31 -40
- package/dist/cjs/helpers/getStylesAtomic.js.map +2 -2
- package/dist/cjs/helpers/mergeTransform.js +42 -0
- package/dist/cjs/helpers/mergeTransform.js.map +7 -0
- package/dist/cjs/helpers/prefixStyles.js +192 -0
- package/dist/cjs/helpers/prefixStyles.js.map +7 -0
- package/dist/cjs/hooks/useIsTouchDevice.js +1 -1
- package/dist/cjs/hooks/useIsTouchDevice.js.map +2 -2
- package/dist/cjs/hooks/useTheme.js +8 -7
- package/dist/cjs/hooks/useTheme.js.map +2 -2
- package/dist/cjs/types.js.map +1 -1
- package/dist/cjs/views/Theme.js.map +2 -2
- package/dist/cjs/views/ThemeProvider.js +1 -1
- package/dist/cjs/views/ThemeProvider.js.map +2 -2
- package/dist/cjs/views/ThemeReset.js +1 -0
- package/dist/cjs/views/ThemeReset.js.map +2 -2
- package/dist/esm/ThemeManager.js +19 -9
- package/dist/esm/ThemeManager.js.map +2 -2
- package/dist/esm/constants/platform.js +4 -4
- package/dist/esm/constants/platform.js.map +2 -2
- package/dist/esm/constants/rnw.js.map +2 -2
- package/dist/esm/createComponent.js +30 -24
- package/dist/esm/createComponent.js.map +2 -2
- package/dist/esm/createTamagui.js +8 -1
- package/dist/esm/createTamagui.js.map +2 -2
- package/dist/esm/helpers/createMediaStyle.js +1 -0
- package/dist/esm/helpers/createMediaStyle.js.map +2 -2
- package/dist/esm/helpers/createPropMapper.js +9 -40
- package/dist/esm/helpers/createPropMapper.js.map +2 -2
- package/dist/esm/helpers/generateAtomicStyles.js +427 -0
- package/dist/esm/helpers/generateAtomicStyles.js.map +7 -0
- package/dist/esm/helpers/getSplitStyles.js +71 -73
- package/dist/esm/helpers/getSplitStyles.js.map +2 -2
- package/dist/esm/helpers/getStylesAtomic.js +26 -39
- package/dist/esm/helpers/getStylesAtomic.js.map +2 -2
- package/dist/esm/helpers/mergeTransform.js +19 -0
- package/dist/esm/helpers/mergeTransform.js.map +7 -0
- package/dist/esm/helpers/prefixStyles.js +166 -0
- package/dist/esm/helpers/prefixStyles.js.map +7 -0
- package/dist/esm/hooks/useIsTouchDevice.js +2 -2
- package/dist/esm/hooks/useIsTouchDevice.js.map +2 -2
- package/dist/esm/hooks/useTheme.js +8 -7
- package/dist/esm/hooks/useTheme.js.map +2 -2
- package/dist/esm/views/Theme.js.map +2 -2
- package/dist/esm/views/ThemeProvider.js +1 -1
- package/dist/esm/views/ThemeProvider.js.map +2 -2
- package/dist/esm/views/ThemeReset.js +1 -0
- package/dist/esm/views/ThemeReset.js.map +2 -2
- package/dist/jsx/ThemeManager.js +19 -9
- package/dist/jsx/constants/platform.js +4 -4
- package/dist/jsx/createComponent.js +30 -24
- package/dist/jsx/createTamagui.js +8 -1
- package/dist/jsx/helpers/createMediaStyle.js +1 -0
- package/dist/jsx/helpers/createPropMapper.js +9 -40
- package/dist/jsx/helpers/generateAtomicStyles.js +426 -0
- package/dist/jsx/helpers/getSplitStyles.js +71 -73
- package/dist/jsx/helpers/getStylesAtomic.js +26 -39
- package/dist/jsx/helpers/mergeTransform.js +18 -0
- package/dist/jsx/helpers/prefixStyles.js +165 -0
- package/dist/jsx/hooks/useIsTouchDevice.js +2 -2
- package/dist/jsx/hooks/useTheme.js +8 -7
- package/dist/jsx/views/ThemeProvider.js +1 -1
- package/dist/jsx/views/ThemeReset.js +1 -1
- package/package.json +8 -5
- package/reset.css +2 -1
- package/types/Tamagui.d.ts +1 -1
- package/types/Tamagui.d.ts.map +1 -1
- package/types/ThemeManager.d.ts +9 -6
- package/types/ThemeManager.d.ts.map +1 -1
- package/types/constants/platform.d.ts +2 -2
- package/types/constants/platform.d.ts.map +1 -1
- package/types/constants/rnw.d.ts +1 -1
- package/types/constants/rnw.d.ts.map +1 -1
- package/types/createComponent.d.ts.map +1 -1
- package/types/createTamagui.d.ts +1 -0
- package/types/createTamagui.d.ts.map +1 -1
- package/types/helpers/createMediaStyle.d.ts.map +1 -1
- package/types/helpers/createPropMapper.d.ts +2 -2
- package/types/helpers/createPropMapper.d.ts.map +1 -1
- package/types/helpers/generateAtomicStyles.d.ts +22 -0
- package/types/helpers/generateAtomicStyles.d.ts.map +1 -0
- package/types/helpers/getSplitStyles.d.ts.map +1 -1
- package/types/helpers/getStylesAtomic.d.ts +10 -10
- package/types/helpers/getStylesAtomic.d.ts.map +1 -1
- package/types/helpers/mergeTransform.d.ts +7 -0
- package/types/helpers/mergeTransform.d.ts.map +1 -0
- package/types/helpers/prefixStyles.d.ts +5 -0
- package/types/helpers/prefixStyles.d.ts.map +1 -0
- package/types/hooks/useTheme.d.ts +13 -4
- package/types/hooks/useTheme.d.ts.map +1 -1
- package/types/types.d.ts +29 -29
- package/types/types.d.ts.map +1 -1
- package/types/views/Theme.d.ts +1 -9
- package/types/views/Theme.d.ts.map +1 -1
- package/types/views/ThemeProvider.d.ts +1 -0
- 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
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
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
|
-
|
|
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
|
-
|
|
150
|
-
|
|
151
|
-
|
|
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 (
|
|
155
|
-
|
|
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
|
|
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
|
|
219
|
-
addStyle(
|
|
220
|
-
mergeClassName(`${
|
|
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
|
-
|
|
239
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
298
|
-
|
|
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
|
-
|
|
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 [_,
|
|
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
|
-
|
|
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 {
|
|
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 (
|
|
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
|
|
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
|
|
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
|
|
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(
|
|
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.
|
|
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.
|
|
24
|
+
"@tamagui/helpers": "^1.0.1-beta.30",
|
|
25
25
|
"@tamagui/ow": "^0.28.1",
|
|
26
|
-
"@tamagui/use-debounce": "^1.0.1-beta.
|
|
27
|
-
"@tamagui/use-force-update": "^1.0.1-beta.
|
|
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.
|
|
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
package/types/Tamagui.d.ts
CHANGED
|
@@ -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:
|
|
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> & {
|
package/types/Tamagui.d.ts.map
CHANGED
|
@@ -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,
|
|
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"}
|