@tamagui/core 1.0.0-alpha.4 → 1.0.0-alpha.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/constants/constants.js +50 -0
- package/{_ → dist/cjs}/constants/constants.js.map +2 -2
- package/dist/cjs/constants/platform.js +43 -0
- package/dist/cjs/constants/platform.js.map +7 -0
- package/dist/cjs/constants/pseudos.js +25 -0
- package/{_ → dist/cjs}/constants/pseudos.js.map +2 -2
- package/{_ → dist/cjs}/constants/rnw.js +9 -3
- package/{_ → dist/cjs}/constants/rnw.js.map +2 -2
- package/dist/cjs/createComponent.js +531 -0
- package/dist/cjs/createComponent.js.map +7 -0
- package/dist/cjs/createFont.js +50 -0
- package/dist/cjs/createFont.js.map +7 -0
- package/{_ → dist/cjs}/createShorthands.js +9 -3
- package/{_ → dist/cjs}/createShorthands.js.map +2 -2
- package/dist/cjs/createTamagui.js +206 -0
- package/dist/cjs/createTamagui.js.map +7 -0
- package/dist/cjs/createTheme.js +42 -0
- package/{_ → dist/cjs}/createTheme.js.map +2 -2
- package/dist/cjs/createTokens.js +55 -0
- package/dist/cjs/createTokens.js.map +7 -0
- package/dist/cjs/createVariable.js +47 -0
- package/dist/cjs/createVariable.js.map +7 -0
- package/dist/cjs/helpers/addStylesUsingClassname.js +79 -0
- package/dist/cjs/helpers/addStylesUsingClassname.js.map +7 -0
- package/dist/cjs/helpers/createMediaStyle.js +56 -0
- package/{_ → dist/cjs}/helpers/createMediaStyle.js.map +2 -2
- package/dist/cjs/helpers/createPropMapper.js +190 -0
- package/dist/cjs/helpers/createPropMapper.js.map +7 -0
- package/dist/cjs/helpers/createTamaguiProvider.js +74 -0
- package/dist/cjs/helpers/createTamaguiProvider.js.map +7 -0
- package/dist/cjs/helpers/extendStaticConfig.js +82 -0
- package/dist/cjs/helpers/extendStaticConfig.js.map +7 -0
- package/dist/cjs/helpers/fixNativeShadow.js +14 -0
- package/dist/cjs/helpers/fixNativeShadow.js.map +7 -0
- package/{_ → dist/cjs}/helpers/fixNativeShadow.native.js +9 -3
- package/{_ → dist/cjs}/helpers/fixNativeShadow.native.js.map +2 -2
- package/dist/cjs/helpers/getSplitStyles.js +180 -0
- package/dist/cjs/helpers/getSplitStyles.js.map +7 -0
- package/dist/cjs/helpers/getStylesAtomic.js +117 -0
- package/{_ → dist/cjs}/helpers/getStylesAtomic.js.map +2 -2
- package/dist/cjs/helpers/getStylesAtomic.native.js +16 -0
- package/dist/cjs/helpers/getStylesAtomic.native.js.map +7 -0
- package/dist/cjs/helpers/insertStyleRule.js +46 -0
- package/{_ → dist/cjs}/helpers/insertStyleRule.js.map +2 -2
- package/dist/cjs/helpers/isObj.js +13 -0
- package/dist/cjs/helpers/isObj.js.map +7 -0
- package/dist/cjs/helpers/isTamaguiElement.js +33 -0
- package/dist/cjs/helpers/isTamaguiElement.js.map +7 -0
- package/dist/cjs/helpers/matchMedia.js +24 -0
- package/dist/cjs/helpers/matchMedia.js.map +7 -0
- package/dist/cjs/helpers/matchMedia.native.js +31 -0
- package/dist/cjs/helpers/matchMedia.native.js.map +7 -0
- package/dist/cjs/helpers/themeable.js +78 -0
- package/{_ → dist/cjs}/helpers/themeable.js.map +2 -2
- package/dist/cjs/helpers/validate.js +82 -0
- package/dist/cjs/helpers/validate.js.map +7 -0
- package/dist/cjs/hooks/useConstant.js +37 -0
- package/{_ → dist/cjs}/hooks/useConstant.js.map +2 -2
- package/dist/cjs/hooks/useFeatures.js +100 -0
- package/dist/cjs/hooks/useFeatures.js.map +7 -0
- package/{_ → dist/cjs}/hooks/useMedia.js +59 -28
- package/dist/cjs/hooks/useMedia.js.map +7 -0
- package/dist/cjs/hooks/usePressable.js +50 -0
- package/{_ → dist/cjs}/hooks/usePressable.js.map +2 -2
- package/dist/cjs/hooks/useTheme.js +111 -0
- package/dist/cjs/hooks/useTheme.js.map +7 -0
- package/dist/cjs/index.js +55 -0
- package/dist/cjs/index.js.map +7 -0
- package/dist/cjs/static/postProcessStyles.js +40 -0
- package/{_ → dist/cjs}/static/postProcessStyles.js.map +2 -2
- package/dist/cjs/static.js +34 -0
- package/dist/cjs/static.js.map +7 -0
- package/dist/cjs/styled.js +72 -0
- package/dist/cjs/styled.js.map +7 -0
- package/dist/cjs/types.js +4 -0
- package/dist/cjs/types.js.map +7 -0
- package/dist/cjs/views/Animated.js +129 -0
- package/{_ → dist/cjs}/views/Animated.js.map +2 -2
- package/dist/cjs/views/Stack.js +51 -0
- package/{_ → dist/cjs}/views/Stack.js.map +2 -2
- package/dist/cjs/views/Text.js +93 -0
- package/{_ → dist/cjs}/views/Text.js.map +2 -2
- package/dist/cjs/views/TextAncestorContext.js +41 -0
- package/{_ → dist/cjs}/views/TextAncestorContext.js.map +2 -2
- package/dist/cjs/views/Theme.js +88 -0
- package/dist/cjs/views/Theme.js.map +7 -0
- package/dist/cjs/views/ThemeContext.js +29 -0
- package/{_ → dist/cjs}/views/ThemeContext.js.map +2 -2
- package/dist/cjs/views/ThemeInverse.js +48 -0
- package/{_ → dist/cjs}/views/ThemeInverse.js.map +3 -3
- package/dist/cjs/views/ThemeManagerContext.js +84 -0
- package/dist/cjs/views/ThemeManagerContext.js.map +7 -0
- package/dist/cjs/views/ThemeProvider.js +67 -0
- package/{_ → dist/cjs}/views/ThemeProvider.js.map +2 -2
- package/dist/createComponent.js +49 -31
- package/dist/createComponent.js.map +2 -2
- package/dist/createFont.js +4 -0
- package/dist/createFont.js.map +2 -2
- package/dist/createTamagui.js +11 -2
- package/dist/createTamagui.js.map +2 -2
- package/dist/createTokens.js +4 -0
- package/dist/createTokens.js.map +2 -2
- package/dist/createVariable.js +3 -0
- package/dist/createVariable.js.map +2 -2
- package/dist/helpers/createPropMapper.js +2 -2
- package/dist/helpers/createPropMapper.js.map +1 -1
- package/dist/helpers/getSplitStyles.js +13 -23
- package/dist/helpers/getSplitStyles.js.map +2 -2
- package/dist/helpers/isComponent.js +10 -0
- package/dist/helpers/isComponent.js.map +7 -0
- package/dist/helpers/isTamaguiComponent.js +10 -0
- package/dist/helpers/isTamaguiComponent.js.map +7 -0
- package/dist/helpers/isTamaguiElement.js +10 -0
- package/dist/helpers/isTamaguiElement.js.map +7 -0
- package/dist/helpers/matchMedia.js +3 -0
- package/dist/helpers/matchMedia.js.map +2 -2
- package/dist/helpers/matchMedia.native.js +1 -0
- package/dist/helpers/matchMedia.native.js.map +2 -2
- package/dist/helpers/validate.js +60 -0
- package/dist/helpers/validate.js.map +7 -0
- package/dist/helpers/validateConfig.js +46 -0
- package/dist/helpers/validateConfig.js.map +7 -0
- package/dist/helpers/validateTokens.js +29 -0
- package/dist/helpers/validateTokens.js.map +7 -0
- package/dist/hooks/useFeatures.js +39 -51
- package/dist/hooks/useFeatures.js.map +2 -2
- package/dist/hooks/useMedia.js.map +1 -1
- package/dist/hooks/useTheme.js +5 -9
- package/dist/hooks/useTheme.js.map +2 -2
- package/dist/index.cjs +234 -135
- package/dist/index.cjs.map +3 -3
- package/dist/index.js +1 -1
- package/dist/index.js.map +2 -2
- package/dist/views/Theme.js +16 -7
- package/dist/views/Theme.js.map +2 -2
- package/dist/views/ThemeInverse.js +0 -1
- package/dist/views/ThemeInverse.js.map +2 -2
- package/dist/views/ThemeManagerContext.js +11 -5
- package/dist/views/ThemeManagerContext.js.map +2 -2
- package/package.json +18 -12
- package/src/createComponent.tsx +55 -40
- package/src/createFont.ts +5 -0
- package/src/createTamagui.ts +11 -1
- package/src/createTokens.ts +6 -1
- package/src/createVariable.ts +4 -0
- package/src/helpers/createPropMapper.ts +2 -2
- package/src/helpers/getSplitStyles.tsx +16 -26
- package/src/helpers/isTamaguiElement.tsx +5 -0
- package/src/helpers/matchMedia.native.ts +3 -0
- package/src/helpers/matchMedia.ts +9 -1
- package/src/helpers/validate.ts +59 -0
- package/src/hooks/useFeatures.tsx +54 -53
- package/src/hooks/useMedia.tsx +1 -1
- package/src/hooks/useTheme.tsx +7 -8
- package/src/index.ts +1 -1
- package/src/types.tsx +3 -2
- package/src/views/Theme.tsx +26 -9
- package/src/views/ThemeInverse.tsx +0 -1
- package/src/views/ThemeManagerContext.tsx +18 -6
- package/types.d.ts +10 -8
- package/.ultra.cache.json +0 -1
- package/_/constants/constants.js +0 -14
- package/_/constants/platform.js +0 -20
- package/_/constants/platform.js.map +0 -7
- package/_/constants/pseudos.js +0 -18
- package/_/createComponent.js +0 -427
- package/_/createComponent.js.map +0 -7
- package/_/createTamagui.js +0 -122
- package/_/createTamagui.js.map +0 -7
- package/_/createTheme.js +0 -20
- package/_/createTokens.js +0 -29
- package/_/createTokens.js.map +0 -7
- package/_/createVariable.js +0 -22
- package/_/createVariable.js.map +0 -7
- package/_/helpers/addStylesUsingClassname.js +0 -32
- package/_/helpers/addStylesUsingClassname.js.map +0 -7
- package/_/helpers/createMediaStyle.js +0 -34
- package/_/helpers/createTamaguiProvider.js +0 -42
- package/_/helpers/createTamaguiProvider.js.map +0 -7
- package/_/helpers/extendStaticConfig.js +0 -176
- package/_/helpers/extendStaticConfig.js.map +0 -7
- package/_/helpers/fixNativeShadow.js +0 -8
- package/_/helpers/fixNativeShadow.js.map +0 -7
- package/_/helpers/getSplitStyles.js +0 -160
- package/_/helpers/getSplitStyles.js.map +0 -7
- package/_/helpers/getStylesAtomic.js +0 -84
- package/_/helpers/getStylesAtomic.native.js +0 -10
- package/_/helpers/getStylesAtomic.native.js.map +0 -7
- package/_/helpers/insertStyleRule.js +0 -24
- package/_/helpers/matchMedia.js +0 -15
- package/_/helpers/matchMedia.js.map +0 -7
- package/_/helpers/matchMedia.native.js +0 -8
- package/_/helpers/matchMedia.native.js.map +0 -7
- package/_/helpers/themeable.js +0 -26
- package/_/hooks/useConstant.js +0 -15
- package/_/hooks/useFeatures.js +0 -75
- package/_/hooks/useFeatures.js.map +0 -7
- package/_/hooks/useForceUpdate.js +0 -28
- package/_/hooks/useForceUpdate.js.map +0 -7
- package/_/hooks/useMedia.js.map +0 -7
- package/_/hooks/usePressable.js +0 -14
- package/_/hooks/useTheme.js +0 -94
- package/_/hooks/useTheme.js.map +0 -7
- package/_/index.js +0 -30
- package/_/index.js.map +0 -7
- package/_/static/postProcessStyles.js +0 -18
- package/_/static.js +0 -12
- package/_/static.js.map +0 -7
- package/_/styled.js +0 -21
- package/_/styled.js.map +0 -7
- package/_/types.js +0 -1
- package/_/types.js.map +0 -7
- package/_/views/Animated.js +0 -79
- package/_/views/Stack.js +0 -12
- package/_/views/Text.js +0 -60
- package/_/views/TextAncestorContext.js +0 -19
- package/_/views/Theme.js +0 -57
- package/_/views/Theme.js.map +0 -7
- package/_/views/ThemeContext.js +0 -6
- package/_/views/ThemeInverse.js +0 -27
- package/_/views/ThemeManagerContext.js +0 -56
- package/_/views/ThemeManagerContext.js.map +0 -7
- package/_/views/ThemeProvider.js +0 -45
- package/src/views/SafeAreaProvider.tsx +0 -33
- package/tsconfig.json +0 -8
package/dist/index.cjs
CHANGED
|
@@ -56,7 +56,6 @@ var __toModule = (module2) => {
|
|
|
56
56
|
__export(exports, {
|
|
57
57
|
AnimatedStack: () => AnimatedStack,
|
|
58
58
|
GET_DEFAULT_THEME: () => GET_DEFAULT_THEME,
|
|
59
|
-
SafeAreaProvider: () => SafeAreaProvider,
|
|
60
59
|
Spacer: () => Spacer,
|
|
61
60
|
Stack: () => Stack,
|
|
62
61
|
Text: () => Text2,
|
|
@@ -83,6 +82,7 @@ __export(exports, {
|
|
|
83
82
|
isChrome: () => isChrome,
|
|
84
83
|
isObj: () => isObj,
|
|
85
84
|
isSSR: () => isSSR,
|
|
85
|
+
isTamaguiElement: () => isTamaguiElement,
|
|
86
86
|
isTouchDevice: () => isTouchDevice,
|
|
87
87
|
isVariable: () => isVariable,
|
|
88
88
|
isWeb: () => isWeb,
|
|
@@ -166,6 +166,9 @@ var Variable = class {
|
|
|
166
166
|
this.name = name;
|
|
167
167
|
this.variable = isWeb ? `var(--${name})` : this.val;
|
|
168
168
|
}
|
|
169
|
+
toString() {
|
|
170
|
+
return isWeb ? this.variable : this.val;
|
|
171
|
+
}
|
|
169
172
|
};
|
|
170
173
|
__name(Variable, "Variable");
|
|
171
174
|
var createVariable = /* @__PURE__ */ __name((props) => new Variable(props), "createVariable");
|
|
@@ -216,16 +219,22 @@ var import_react5 = __toModule(require("react"));
|
|
|
216
219
|
var ThemeManager = class {
|
|
217
220
|
constructor() {
|
|
218
221
|
this.name = "light";
|
|
222
|
+
this.parentName = null;
|
|
219
223
|
this.keys = new Map();
|
|
220
224
|
this.listeners = new Map();
|
|
221
225
|
this.callbacks = new Set();
|
|
222
226
|
this.theme = null;
|
|
223
227
|
}
|
|
224
|
-
setActiveTheme(
|
|
228
|
+
setActiveTheme({
|
|
229
|
+
name,
|
|
230
|
+
theme,
|
|
231
|
+
parentName
|
|
232
|
+
}) {
|
|
225
233
|
if (name === this.name)
|
|
226
234
|
return;
|
|
227
235
|
this.name = name;
|
|
228
236
|
this.theme = theme;
|
|
237
|
+
this.parentName = parentName || null;
|
|
229
238
|
this.update();
|
|
230
239
|
}
|
|
231
240
|
track(uuid, keys) {
|
|
@@ -269,28 +278,37 @@ var Theme = /* @__PURE__ */ __name((props) => {
|
|
|
269
278
|
const themes = (0, import_react6.useContext)(ThemeContext);
|
|
270
279
|
const [parentName, setParentName] = (0, import_react6.useState)(parent.name || "light");
|
|
271
280
|
if (!themes) {
|
|
272
|
-
console.warn("no themes
|
|
281
|
+
console.warn("Error, no themes in context", props);
|
|
273
282
|
return props.children;
|
|
274
283
|
}
|
|
275
284
|
const name = props.name;
|
|
276
|
-
const
|
|
285
|
+
const nextNameParent = `${name}-${parentName}`;
|
|
286
|
+
const nextNameParentParent = `${name}-${parent.parentName}`;
|
|
287
|
+
const activeName = !name ? null : name in themes ? name : nextNameParent in themes ? nextNameParent : nextNameParentParent in themes ? nextNameParentParent : null;
|
|
288
|
+
const theme = activeName ? themes[activeName] : null;
|
|
277
289
|
const themeManager = useConstant(() => {
|
|
290
|
+
if (!theme) {
|
|
291
|
+
return null;
|
|
292
|
+
}
|
|
278
293
|
const manager = new ThemeManager();
|
|
279
294
|
if (name) {
|
|
280
|
-
manager.setActiveTheme(name, themes[name]);
|
|
295
|
+
manager.setActiveTheme({ name, theme: themes[name], parentName });
|
|
281
296
|
}
|
|
282
297
|
return manager;
|
|
283
298
|
});
|
|
284
299
|
useIsomorphicLayoutEffect(() => {
|
|
285
|
-
themeManager
|
|
300
|
+
if (!themeManager) {
|
|
301
|
+
return;
|
|
302
|
+
}
|
|
303
|
+
themeManager.setActiveTheme({ name: activeName, theme, parentName });
|
|
286
304
|
return parent.onChangeTheme((next) => {
|
|
287
305
|
if (next) {
|
|
288
|
-
themeManager.setActiveTheme(next, themes[next]);
|
|
306
|
+
themeManager.setActiveTheme({ name: next, theme: themes[next], parentName });
|
|
289
307
|
setParentName(next);
|
|
290
308
|
}
|
|
291
309
|
});
|
|
292
|
-
}, [themes,
|
|
293
|
-
if (!name) {
|
|
310
|
+
}, [themes, activeName, parentName]);
|
|
311
|
+
if (!name || !theme) {
|
|
294
312
|
return props.children;
|
|
295
313
|
}
|
|
296
314
|
const contents = themeManager ? /* @__PURE__ */ import_react6.default.createElement(ThemeManagerContext.Provider, {
|
|
@@ -363,6 +381,60 @@ function createTamaguiProvider(themeProps) {
|
|
|
363
381
|
}
|
|
364
382
|
__name(createTamaguiProvider, "createTamaguiProvider");
|
|
365
383
|
|
|
384
|
+
// src/helpers/validate.ts
|
|
385
|
+
var import_ow = __toModule(require("@tamagui/ow"));
|
|
386
|
+
var validateConfig = /* @__PURE__ */ __name((conf3) => {
|
|
387
|
+
if (!conf3) {
|
|
388
|
+
console.warn("no conf?");
|
|
389
|
+
return;
|
|
390
|
+
}
|
|
391
|
+
try {
|
|
392
|
+
(0, import_ow.default)(conf3, validConfig);
|
|
393
|
+
} catch (err) {
|
|
394
|
+
console.log("Given config:\n", JSON.stringify(conf3, null, 2));
|
|
395
|
+
throw err;
|
|
396
|
+
}
|
|
397
|
+
}, "validateConfig");
|
|
398
|
+
var validConfig = import_ow.default.object.exactShape({
|
|
399
|
+
defaultTheme: import_ow.default.optional.string,
|
|
400
|
+
disableRootThemeClass: import_ow.default.optional.boolean,
|
|
401
|
+
shorthands: import_ow.default.optional.object.valuesOfType(import_ow.default.string),
|
|
402
|
+
themes: import_ow.default.object.valuesOfType(import_ow.default.object),
|
|
403
|
+
tokens: import_ow.default.object.valuesOfType(import_ow.default.object),
|
|
404
|
+
media: import_ow.default.object.valuesOfType(import_ow.default.object)
|
|
405
|
+
});
|
|
406
|
+
var validFont = import_ow.default.object.exactShape({
|
|
407
|
+
family: import_ow.default.string,
|
|
408
|
+
size: import_ow.default.object.nonEmpty.valuesOfType(import_ow.default.number),
|
|
409
|
+
lineHeight: import_ow.default.object.nonEmpty.valuesOfType(import_ow.default.number),
|
|
410
|
+
weight: import_ow.default.object.nonEmpty.valuesOfType(import_ow.default.string),
|
|
411
|
+
letterSpacing: import_ow.default.object.nonEmpty.valuesOfType(import_ow.default.number)
|
|
412
|
+
});
|
|
413
|
+
var validTokens = import_ow.default.object.exactShape({
|
|
414
|
+
font: import_ow.default.object.valuesOfType(validFont),
|
|
415
|
+
size: import_ow.default.object.nonEmpty.valuesOfType(import_ow.default.number),
|
|
416
|
+
space: import_ow.default.object.nonEmpty.valuesOfType(import_ow.default.number),
|
|
417
|
+
zIndex: import_ow.default.object.nonEmpty.valuesOfType(import_ow.default.number),
|
|
418
|
+
radius: import_ow.default.object.nonEmpty.valuesOfType(import_ow.default.number),
|
|
419
|
+
color: import_ow.default.object.nonEmpty.valuesOfType(import_ow.default.string)
|
|
420
|
+
});
|
|
421
|
+
var validateTokens = /* @__PURE__ */ __name((tokens) => {
|
|
422
|
+
try {
|
|
423
|
+
(0, import_ow.default)(tokens, validTokens);
|
|
424
|
+
} catch (err) {
|
|
425
|
+
console.log("Given tokens:\n", JSON.stringify(tokens, null, 2));
|
|
426
|
+
throw err;
|
|
427
|
+
}
|
|
428
|
+
}, "validateTokens");
|
|
429
|
+
var validateFont = /* @__PURE__ */ __name((font) => {
|
|
430
|
+
try {
|
|
431
|
+
(0, import_ow.default)(font, validFont);
|
|
432
|
+
} catch (err) {
|
|
433
|
+
console.log("Given font:\n", JSON.stringify(font, null, 2));
|
|
434
|
+
throw err;
|
|
435
|
+
}
|
|
436
|
+
}, "validateFont");
|
|
437
|
+
|
|
366
438
|
// src/hooks/useMedia.tsx
|
|
367
439
|
var import_use_force_update = __toModule(require("@tamagui/use-force-update"));
|
|
368
440
|
var import_react8 = __toModule(require("react"));
|
|
@@ -371,6 +443,9 @@ var import_react8 = __toModule(require("react"));
|
|
|
371
443
|
var matchMedia = typeof window !== "undefined" && window.matchMedia || /* @__PURE__ */ __name(function matchMediaFallback(query) {
|
|
372
444
|
return {
|
|
373
445
|
addListener() {
|
|
446
|
+
if (process.env.NODE_ENV === "development") {
|
|
447
|
+
console.log("warning: matchMedia not loading! Is native picking up .native.js files?");
|
|
448
|
+
}
|
|
374
449
|
},
|
|
375
450
|
removeListener() {
|
|
376
451
|
},
|
|
@@ -544,6 +619,11 @@ var onConfiguredOnce = /* @__PURE__ */ __name((cb) => {
|
|
|
544
619
|
}, "onConfiguredOnce");
|
|
545
620
|
var PREFIX = `theme--`;
|
|
546
621
|
function createTamagui(config) {
|
|
622
|
+
if (process.env.NODE_ENV === "development") {
|
|
623
|
+
if (!config["parsed"]) {
|
|
624
|
+
validateConfig(config);
|
|
625
|
+
}
|
|
626
|
+
}
|
|
547
627
|
if (conf2) {
|
|
548
628
|
console.warn("Called createTamagui twice! Should never do so");
|
|
549
629
|
}
|
|
@@ -630,6 +710,7 @@ ${vars}
|
|
|
630
710
|
themeConfig,
|
|
631
711
|
themeParsed,
|
|
632
712
|
tokensParsed,
|
|
713
|
+
parsed: true,
|
|
633
714
|
getCSS() {
|
|
634
715
|
return `${themeConfig.css}
|
|
635
716
|
${[...(0, import_helpers.getStyleRules)()].join("\n")}`;
|
|
@@ -1067,7 +1148,6 @@ var getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, isSplit
|
|
|
1067
1148
|
const validStyleProps = staticConfig.isText ? import_helpers3.stylePropsText : import_helpers3.validStyles;
|
|
1068
1149
|
const viewProps = {};
|
|
1069
1150
|
const style = [];
|
|
1070
|
-
const blacklistProps = isSplittingDefaultProps ? blacklistDefaultProps : blacklistFinalProps;
|
|
1071
1151
|
let pseudos2 = null;
|
|
1072
1152
|
let cur = null;
|
|
1073
1153
|
let classNames = null;
|
|
@@ -1081,14 +1161,14 @@ var getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, isSplit
|
|
|
1081
1161
|
}
|
|
1082
1162
|
const mediaProps = __spreadValues(__spreadValues({}, props), valInit);
|
|
1083
1163
|
const mediaStyle = getSubStyle(valInit, staticConfig, theme, props);
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
if (
|
|
1087
|
-
|
|
1164
|
+
if (isWeb) {
|
|
1165
|
+
const mediaStyles = getStylesAtomic(mediaStyle);
|
|
1166
|
+
if (process.env.NODE_ENV === "development") {
|
|
1167
|
+
if (props["debug"]) {
|
|
1168
|
+
console.log("mediaStyles", keyInit, { mediaProps, mediaStyle, mediaStyles });
|
|
1169
|
+
}
|
|
1088
1170
|
}
|
|
1089
|
-
|
|
1090
|
-
for (const style2 of mediaStyles) {
|
|
1091
|
-
if (isWeb) {
|
|
1171
|
+
for (const style2 of mediaStyles) {
|
|
1092
1172
|
const out2 = createMediaStyle(style2, mediaKey, mediaQueryConfig);
|
|
1093
1173
|
classNames = classNames || [];
|
|
1094
1174
|
classNames.push(out2.identifier);
|
|
@@ -1097,8 +1177,10 @@ var getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, isSplit
|
|
|
1097
1177
|
if (process.env.NODE_ENV === "development" && props["debug"]) {
|
|
1098
1178
|
console.log("mediaProp", style2.identifier, out2, mediaProps, mediaStyle, mediaStyles);
|
|
1099
1179
|
}
|
|
1100
|
-
}
|
|
1101
|
-
|
|
1180
|
+
}
|
|
1181
|
+
} else {
|
|
1182
|
+
if (mediaState[mediaKey]) {
|
|
1183
|
+
style.push(mediaStyle);
|
|
1102
1184
|
}
|
|
1103
1185
|
}
|
|
1104
1186
|
continue;
|
|
@@ -1146,7 +1228,7 @@ var getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, isSplit
|
|
|
1146
1228
|
cur[key] = val;
|
|
1147
1229
|
continue;
|
|
1148
1230
|
}
|
|
1149
|
-
if (!
|
|
1231
|
+
if (!staticConfig.variants || !(key in staticConfig.variants)) {
|
|
1150
1232
|
viewProps[key] = val;
|
|
1151
1233
|
}
|
|
1152
1234
|
}
|
|
@@ -1184,13 +1266,6 @@ var getSubStyle = /* @__PURE__ */ __name((styleIn, staticConfig, theme, props) =
|
|
|
1184
1266
|
fixNativeShadow(styleOut);
|
|
1185
1267
|
return styleOut;
|
|
1186
1268
|
}, "getSubStyle");
|
|
1187
|
-
var blacklistDefaultProps = __spreadValues(__spreadValues({}, import_helpers3.validStyles), import_helpers3.stylePropsText);
|
|
1188
|
-
var blacklistFinalProps = __spreadProps(__spreadValues({}, blacklistDefaultProps), {
|
|
1189
|
-
tag: true,
|
|
1190
|
-
debug: true,
|
|
1191
|
-
space: true,
|
|
1192
|
-
hitSlop: true
|
|
1193
|
-
});
|
|
1194
1269
|
var mapTransformKeys = {
|
|
1195
1270
|
x: "translateX",
|
|
1196
1271
|
y: "translateY"
|
|
@@ -1203,61 +1278,20 @@ var mergeTransform = /* @__PURE__ */ __name((obj, key, val) => {
|
|
|
1203
1278
|
|
|
1204
1279
|
// src/hooks/useFeatures.tsx
|
|
1205
1280
|
var import_react10 = __toModule(require("react"));
|
|
1206
|
-
var createDefinition = /* @__PURE__ */ __name(({
|
|
1281
|
+
var createDefinition = /* @__PURE__ */ __name(({
|
|
1282
|
+
Component,
|
|
1283
|
+
propNames
|
|
1284
|
+
}) => ({
|
|
1207
1285
|
isEnabled: (props) => propNames.some((name) => !!props[name]),
|
|
1208
1286
|
Component
|
|
1209
1287
|
}), "createDefinition");
|
|
1210
|
-
var
|
|
1211
|
-
"$xs",
|
|
1212
|
-
"$sm",
|
|
1213
|
-
"$md",
|
|
1214
|
-
"$lg",
|
|
1215
|
-
"$xl",
|
|
1216
|
-
"$xxl",
|
|
1217
|
-
"$pointerCoarse",
|
|
1218
|
-
"$hoverNone",
|
|
1219
|
-
"$tall",
|
|
1220
|
-
"$short",
|
|
1221
|
-
"$gtSm",
|
|
1222
|
-
"$notXs",
|
|
1223
|
-
"$gtMd",
|
|
1224
|
-
"$gtLg"
|
|
1225
|
-
];
|
|
1226
|
-
var featureDefinitions = {
|
|
1227
|
-
measureLayout: createDefinition({
|
|
1228
|
-
Component: (props) => {
|
|
1229
|
-
console.log("measure", props);
|
|
1230
|
-
return null;
|
|
1231
|
-
},
|
|
1232
|
-
propNames: ["onLayout"]
|
|
1233
|
-
}),
|
|
1234
|
-
mediaQuery: createDefinition({
|
|
1235
|
-
Component: (props) => {
|
|
1236
|
-
if (isWeb) {
|
|
1237
|
-
return;
|
|
1238
|
-
}
|
|
1239
|
-
const keys = mediaQueryPropNames.flatMap((x) => x in props ? x.slice(1) : []);
|
|
1240
|
-
useIsomorphicLayoutEffect(() => {
|
|
1241
|
-
for (const key of keys) {
|
|
1242
|
-
addMediaQueryListener(key, props._utils.forceUpdate);
|
|
1243
|
-
}
|
|
1244
|
-
return () => {
|
|
1245
|
-
for (const key of keys) {
|
|
1246
|
-
removeMediaQueryListener(key, props._utils.forceUpdate);
|
|
1247
|
-
}
|
|
1248
|
-
};
|
|
1249
|
-
}, [keys.join(",")]);
|
|
1250
|
-
return null;
|
|
1251
|
-
},
|
|
1252
|
-
propNames: mediaQueryPropNames
|
|
1253
|
-
})
|
|
1254
|
-
};
|
|
1255
|
-
var featureNames = Object.keys(featureDefinitions);
|
|
1256
|
-
var numFeatures = featureNames.length;
|
|
1288
|
+
var featureDefinitions = null;
|
|
1257
1289
|
var useFeatures = /* @__PURE__ */ __name((props, utils) => {
|
|
1290
|
+
if (!featureDefinitions) {
|
|
1291
|
+
featureDefinitions = loadFeatures();
|
|
1292
|
+
}
|
|
1258
1293
|
const features = [];
|
|
1259
|
-
for (
|
|
1260
|
-
const name = featureNames[i];
|
|
1294
|
+
for (const name in featureDefinitions) {
|
|
1261
1295
|
const { isEnabled, Component } = featureDefinitions[name];
|
|
1262
1296
|
if (isEnabled(props) && Component) {
|
|
1263
1297
|
features.push(/* @__PURE__ */ import_react10.default.createElement(Component, __spreadProps(__spreadValues({
|
|
@@ -1269,6 +1303,33 @@ var useFeatures = /* @__PURE__ */ __name((props, utils) => {
|
|
|
1269
1303
|
}
|
|
1270
1304
|
return features;
|
|
1271
1305
|
}, "useFeatures");
|
|
1306
|
+
function loadFeatures() {
|
|
1307
|
+
return __spreadValues({}, !isWeb && {
|
|
1308
|
+
mediaQuery: loadMediaQueryFeature()
|
|
1309
|
+
});
|
|
1310
|
+
}
|
|
1311
|
+
__name(loadFeatures, "loadFeatures");
|
|
1312
|
+
function loadMediaQueryFeature() {
|
|
1313
|
+
const mediaPropNames = Object.keys(mediaState);
|
|
1314
|
+
return createDefinition({
|
|
1315
|
+
Component: (props) => {
|
|
1316
|
+
const keys = mediaPropNames.flatMap((x) => x in props ? x.slice(1) : []);
|
|
1317
|
+
useIsomorphicLayoutEffect(() => {
|
|
1318
|
+
for (const key of keys) {
|
|
1319
|
+
addMediaQueryListener(key, props._utils.forceUpdate);
|
|
1320
|
+
}
|
|
1321
|
+
return () => {
|
|
1322
|
+
for (const key of keys) {
|
|
1323
|
+
removeMediaQueryListener(key, props._utils.forceUpdate);
|
|
1324
|
+
}
|
|
1325
|
+
};
|
|
1326
|
+
}, [keys.join(",")]);
|
|
1327
|
+
return null;
|
|
1328
|
+
},
|
|
1329
|
+
propNames: mediaPropNames
|
|
1330
|
+
});
|
|
1331
|
+
}
|
|
1332
|
+
__name(loadMediaQueryFeature, "loadMediaQueryFeature");
|
|
1272
1333
|
|
|
1273
1334
|
// src/hooks/usePressable.tsx
|
|
1274
1335
|
var import_react_native2 = __toModule(require("react-native"));
|
|
@@ -1303,8 +1364,40 @@ function createComponent(configIn) {
|
|
|
1303
1364
|
let defaultsClassName = "";
|
|
1304
1365
|
let initialTheme;
|
|
1305
1366
|
const component = (0, import_react11.forwardRef)((props, forwardedRef) => {
|
|
1306
|
-
var
|
|
1367
|
+
var _b2;
|
|
1368
|
+
const forceUpdate = (0, import_use_force_update2.useForceUpdate)();
|
|
1369
|
+
const features = useFeatures(props, { forceUpdate });
|
|
1370
|
+
const manager = (0, import_react11.useContext)(ThemeManagerContext);
|
|
1371
|
+
const [state, set_] = (0, import_react11.useState)(() => ({
|
|
1372
|
+
hover: false,
|
|
1373
|
+
press: false,
|
|
1374
|
+
pressIn: false,
|
|
1375
|
+
theme: manager.name
|
|
1376
|
+
}));
|
|
1377
|
+
const set = /* @__PURE__ */ __name((next) => set_((prev) => {
|
|
1378
|
+
for (const key in next) {
|
|
1379
|
+
if (prev[key] !== next[key]) {
|
|
1380
|
+
return __spreadValues(__spreadValues({}, prev), next);
|
|
1381
|
+
}
|
|
1382
|
+
}
|
|
1383
|
+
return prev;
|
|
1384
|
+
}), "set");
|
|
1385
|
+
if (process.env.NODE_ENV === "development" && !isText && isWeb) {
|
|
1386
|
+
import_react11.Children.toArray(props.children).forEach((item) => {
|
|
1387
|
+
if (typeof item === "string") {
|
|
1388
|
+
console.error(`Unexpected text node: ${item}. A text node cannot be a child of a <View>.`);
|
|
1389
|
+
}
|
|
1390
|
+
});
|
|
1391
|
+
}
|
|
1392
|
+
const hasTextAncestor = isWeb ? (0, import_react11.useContext)(TextAncestorContext) : false;
|
|
1393
|
+
const hostRef = (0, import_react11.useRef)(null);
|
|
1307
1394
|
const {
|
|
1395
|
+
viewProps: viewPropsIn,
|
|
1396
|
+
pseudos: pseudos2,
|
|
1397
|
+
style,
|
|
1398
|
+
classNames
|
|
1399
|
+
} = getSplitStyles(props, staticConfig, manager.theme || initialTheme);
|
|
1400
|
+
const _a4 = viewPropsIn, {
|
|
1308
1401
|
tag,
|
|
1309
1402
|
hitSlop,
|
|
1310
1403
|
children,
|
|
@@ -1337,34 +1430,52 @@ function createComponent(configIn) {
|
|
|
1337
1430
|
onStartShouldSetResponderCapture,
|
|
1338
1431
|
onMouseDown,
|
|
1339
1432
|
onClick,
|
|
1433
|
+
accessible,
|
|
1434
|
+
accessibilityRole,
|
|
1340
1435
|
onLayout
|
|
1341
|
-
} =
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1436
|
+
} = _a4, viewProps = __objRest(_a4, [
|
|
1437
|
+
"tag",
|
|
1438
|
+
"hitSlop",
|
|
1439
|
+
"children",
|
|
1440
|
+
"pointerEvents",
|
|
1441
|
+
"onPress",
|
|
1442
|
+
"onPressIn",
|
|
1443
|
+
"onPressOut",
|
|
1444
|
+
"onHoverIn",
|
|
1445
|
+
"onHoverOut",
|
|
1446
|
+
"space",
|
|
1447
|
+
"disabled",
|
|
1448
|
+
"onMouseEnter",
|
|
1449
|
+
"onMouseLeave",
|
|
1450
|
+
"hrefAttrs",
|
|
1451
|
+
"onMoveShouldSetResponder",
|
|
1452
|
+
"onMoveShouldSetResponderCapture",
|
|
1453
|
+
"onResponderEnd",
|
|
1454
|
+
"onResponderGrant",
|
|
1455
|
+
"onResponderMove",
|
|
1456
|
+
"onResponderReject",
|
|
1457
|
+
"onResponderRelease",
|
|
1458
|
+
"onResponderStart",
|
|
1459
|
+
"onResponderTerminate",
|
|
1460
|
+
"onResponderTerminationRequest",
|
|
1461
|
+
"onScrollShouldSetResponder",
|
|
1462
|
+
"onScrollShouldSetResponderCapture",
|
|
1463
|
+
"onSelectionChangeShouldSetResponder",
|
|
1464
|
+
"onSelectionChangeShouldSetResponderCapture",
|
|
1465
|
+
"onStartShouldSetResponder",
|
|
1466
|
+
"onStartShouldSetResponderCapture",
|
|
1467
|
+
"onMouseDown",
|
|
1468
|
+
"onClick",
|
|
1469
|
+
"accessible",
|
|
1470
|
+
"accessibilityRole",
|
|
1471
|
+
"onLayout"
|
|
1472
|
+
]);
|
|
1473
|
+
if (!isWeb) {
|
|
1474
|
+
if (accessible)
|
|
1475
|
+
viewProps.accessible = accessible;
|
|
1476
|
+
if (accessibilityRole)
|
|
1477
|
+
viewProps.accessibilityRole = accessibilityRole;
|
|
1365
1478
|
}
|
|
1366
|
-
const hasTextAncestor = isWeb ? (0, import_react11.useContext)(TextAncestorContext) : false;
|
|
1367
|
-
const hostRef = (0, import_react11.useRef)(null);
|
|
1368
1479
|
if (isWeb) {
|
|
1369
1480
|
rnw.useResponderEvents(hostRef, {
|
|
1370
1481
|
onMoveShouldSetResponder,
|
|
@@ -1386,7 +1497,6 @@ function createComponent(configIn) {
|
|
|
1386
1497
|
});
|
|
1387
1498
|
}
|
|
1388
1499
|
const isTracking = (0, import_react11.useRef)(false);
|
|
1389
|
-
const { viewProps, pseudos: pseudos2, style, classNames } = getSplitStyles(props, staticConfig, manager.theme || initialTheme);
|
|
1390
1500
|
const internal = (0, import_react11.useRef)();
|
|
1391
1501
|
if (!internal.current) {
|
|
1392
1502
|
internal.current = {
|
|
@@ -1565,7 +1675,7 @@ function createComponent(configIn) {
|
|
|
1565
1675
|
viewProps["debug"] = true;
|
|
1566
1676
|
console.log("\u{1F95A} props in:", props);
|
|
1567
1677
|
console.log("\u{1F95A} props out:", viewProps);
|
|
1568
|
-
console.log((
|
|
1678
|
+
console.log((_b2 = props.onClick) == null ? void 0 : _b2.toString());
|
|
1569
1679
|
console.log("\u{1F95A} etc:", { shouldAttach, ViewComponent, viewProps, styles, pseudos: pseudos2, content, childEls });
|
|
1570
1680
|
if (isWeb) {
|
|
1571
1681
|
console.log("\u{1F95A} component info", { staticConfig, tamaguiConfig });
|
|
@@ -1587,7 +1697,7 @@ function createComponent(configIn) {
|
|
|
1587
1697
|
} else {
|
|
1588
1698
|
if (!hasWarnedOnce) {
|
|
1589
1699
|
hasWarnedOnce = true;
|
|
1590
|
-
console.log("\u26A0\uFE0F
|
|
1700
|
+
console.log("\u26A0\uFE0F TODO account for default styles for media queries");
|
|
1591
1701
|
}
|
|
1592
1702
|
}
|
|
1593
1703
|
component.defaultProps = __spreadValues(__spreadValues({}, next.viewProps), component.defaultProps);
|
|
@@ -1712,6 +1822,9 @@ var createTheme = /* @__PURE__ */ __name((theme) => {
|
|
|
1712
1822
|
|
|
1713
1823
|
// src/createFont.ts
|
|
1714
1824
|
var createFont = /* @__PURE__ */ __name((font) => {
|
|
1825
|
+
if (process.env.NODE_ENV === "development") {
|
|
1826
|
+
validateFont(font);
|
|
1827
|
+
}
|
|
1715
1828
|
const sizeKeys = Object.keys(font.size);
|
|
1716
1829
|
for (const key in font) {
|
|
1717
1830
|
if (key === "size" || key === "family")
|
|
@@ -1732,6 +1845,9 @@ var createFont = /* @__PURE__ */ __name((font) => {
|
|
|
1732
1845
|
|
|
1733
1846
|
// src/createTokens.ts
|
|
1734
1847
|
function createTokens(tokens) {
|
|
1848
|
+
if (process.env.NODE_ENV === "development") {
|
|
1849
|
+
validateTokens(tokens);
|
|
1850
|
+
}
|
|
1735
1851
|
return setupTokens(tokens);
|
|
1736
1852
|
}
|
|
1737
1853
|
__name(createTokens, "createTokens");
|
|
@@ -1869,7 +1985,6 @@ var ThemeInverse = /* @__PURE__ */ __name((props) => {
|
|
|
1869
1985
|
const themeName = useThemeName();
|
|
1870
1986
|
const defaultTheme = useDefaultThemeName();
|
|
1871
1987
|
const name = inversions[themeName] || inversions[defaultTheme] || null;
|
|
1872
|
-
console.log("todo fixme invert", { themeName, defaultTheme, next: name });
|
|
1873
1988
|
return /* @__PURE__ */ import_react13.default.createElement(Theme, {
|
|
1874
1989
|
name
|
|
1875
1990
|
}, props.children);
|
|
@@ -1895,8 +2010,15 @@ var themeable = /* @__PURE__ */ __name(function graphql(component) {
|
|
|
1895
2010
|
return withTheme;
|
|
1896
2011
|
}, "graphql");
|
|
1897
2012
|
|
|
1898
|
-
// src/
|
|
2013
|
+
// src/helpers/isTamaguiElement.tsx
|
|
1899
2014
|
var import_react15 = __toModule(require("react"));
|
|
2015
|
+
var isTamaguiElement = /* @__PURE__ */ __name((child) => {
|
|
2016
|
+
var _a4;
|
|
2017
|
+
return (0, import_react15.isValidElement)(child) && !!((_a4 = child.type["staticConfig"]) == null ? void 0 : _a4.parsed);
|
|
2018
|
+
}, "isTamaguiElement");
|
|
2019
|
+
|
|
2020
|
+
// src/views/Animated.tsx
|
|
2021
|
+
var import_react16 = __toModule(require("react"));
|
|
1900
2022
|
var import_react_native4 = __toModule(require("react-native"));
|
|
1901
2023
|
|
|
1902
2024
|
// src/views/Stack.tsx
|
|
@@ -1939,7 +2061,7 @@ var AnimatedStack = /* @__PURE__ */ __name((_a4) => {
|
|
|
1939
2061
|
const driver = useConstant(() => {
|
|
1940
2062
|
return new import_react_native4.Animated.Value(0);
|
|
1941
2063
|
});
|
|
1942
|
-
const animatedProps = (0,
|
|
2064
|
+
const animatedProps = (0, import_react16.useMemo)(() => {
|
|
1943
2065
|
if (!animated) {
|
|
1944
2066
|
return null;
|
|
1945
2067
|
}
|
|
@@ -1972,8 +2094,8 @@ var AnimatedStack = /* @__PURE__ */ __name((_a4) => {
|
|
|
1972
2094
|
toValue: animateState === "in" ? 1 : 0
|
|
1973
2095
|
}).start();
|
|
1974
2096
|
}, [animated, animateState]);
|
|
1975
|
-
const childrenMemo = (0,
|
|
1976
|
-
return /* @__PURE__ */
|
|
2097
|
+
const childrenMemo = (0, import_react16.useMemo)(() => children, [children]);
|
|
2098
|
+
return /* @__PURE__ */ import_react16.default.createElement(Stack, __spreadValues(__spreadValues({
|
|
1977
2099
|
animated
|
|
1978
2100
|
}, props), animatedProps), childrenMemo);
|
|
1979
2101
|
}, "AnimatedStack");
|
|
@@ -2077,27 +2199,4 @@ var Text2 = createComponent({
|
|
|
2077
2199
|
cursor: true
|
|
2078
2200
|
})
|
|
2079
2201
|
});
|
|
2080
|
-
|
|
2081
|
-
// src/views/SafeAreaProvider.tsx
|
|
2082
|
-
var import_react16 = __toModule(require("react"));
|
|
2083
|
-
var import_react_native5 = __toModule(require("react-native"));
|
|
2084
|
-
var import_react_native_safe_area_context = __toModule(require("react-native-safe-area-context"));
|
|
2085
|
-
var defaultMetrics = null;
|
|
2086
|
-
var SafeAreaProvider = /* @__PURE__ */ __name(({
|
|
2087
|
-
initialWindowMetrics,
|
|
2088
|
-
children
|
|
2089
|
-
}) => {
|
|
2090
|
-
if (!initialWindowMetrics && !defaultMetrics) {
|
|
2091
|
-
defaultMetrics = import_react_native5.Platform.select({
|
|
2092
|
-
web: {
|
|
2093
|
-
frame: { x: 0, y: 0, width: 0, height: 0 },
|
|
2094
|
-
insets: { top: 0, left: 0, right: 0, bottom: 0 }
|
|
2095
|
-
},
|
|
2096
|
-
default: import_react_native_safe_area_context.initialWindowMetrics
|
|
2097
|
-
});
|
|
2098
|
-
}
|
|
2099
|
-
return /* @__PURE__ */ import_react16.default.createElement(import_react_native_safe_area_context.SafeAreaProvider, {
|
|
2100
|
-
initialMetrics: initialWindowMetrics ?? defaultMetrics
|
|
2101
|
-
}, children);
|
|
2102
|
-
}, "SafeAreaProvider");
|
|
2103
2202
|
//# sourceMappingURL=index.cjs.map
|