@tamagui/core 1.0.0-canary.204 → 1.0.1-beta.20
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/README.md +1 -0
- package/dist/cjs/createComponent.js +114 -62
- package/dist/cjs/createComponent.js.map +2 -2
- package/dist/cjs/createTamagui.js +3 -2
- package/dist/cjs/createTamagui.js.map +2 -2
- package/dist/cjs/helpers/createPropMapper.js +34 -3
- package/dist/cjs/helpers/createPropMapper.js.map +2 -2
- package/dist/cjs/helpers/fixNativeShadow.native.js +4 -7
- package/dist/cjs/helpers/fixNativeShadow.native.js.map +2 -2
- package/dist/cjs/helpers/getButtonSize.js +45 -0
- package/dist/cjs/helpers/getButtonSize.js.map +7 -0
- package/dist/cjs/helpers/getSplitStyles.js +58 -16
- package/dist/cjs/helpers/getSplitStyles.js.map +2 -2
- package/dist/cjs/helpers/getTextSize.js +56 -0
- package/dist/cjs/helpers/getTextSize.js.map +7 -0
- package/dist/cjs/helpers/insertStyleRule.js +1 -0
- package/dist/cjs/helpers/insertStyleRule.js.map +2 -2
- package/dist/cjs/helpers/nativeGestureHandler.js +29 -0
- package/dist/cjs/helpers/nativeGestureHandler.js.map +7 -0
- package/dist/cjs/helpers/nativeGestureHandler.native.js +18 -0
- package/dist/cjs/helpers/nativeGestureHandler.native.js.map +7 -0
- package/dist/cjs/hooks/useId.js +59 -0
- package/dist/cjs/hooks/useId.js.map +7 -0
- package/dist/cjs/hooks/useIsTouchDevice.js +4 -4
- package/dist/cjs/hooks/useIsTouchDevice.js.map +2 -2
- package/dist/cjs/hooks/useMedia.js +0 -1
- package/dist/cjs/hooks/useMedia.js.map +2 -2
- package/dist/cjs/hooks/usePrevious.js +1 -0
- package/dist/cjs/hooks/usePrevious.js.map +7 -0
- package/dist/cjs/hooks/useTheme.js.map +2 -2
- package/dist/cjs/index.js +9 -6
- package/dist/cjs/index.js.map +2 -2
- package/dist/cjs/nativeGestureHandler.native.js +18 -0
- package/dist/cjs/nativeGestureHandler.native.js.map +7 -0
- package/dist/cjs/styled.js +4 -1
- package/dist/cjs/styled.js.map +2 -2
- package/dist/cjs/types.js.map +1 -1
- package/dist/cjs/views/Slot.js +134 -0
- package/dist/cjs/views/Slot.js.map +7 -0
- package/dist/cjs/views/Text.js +9 -14
- package/dist/cjs/views/Text.js.map +2 -2
- package/dist/cjs/views/ThemeInverse.js +5 -1
- package/dist/cjs/views/ThemeInverse.js.map +2 -2
- package/dist/esm/createComponent.js +120 -71
- package/dist/esm/createComponent.js.map +2 -2
- package/dist/esm/createTamagui.js +4 -3
- package/dist/esm/createTamagui.js.map +2 -2
- package/dist/esm/helpers/createPropMapper.js +35 -3
- package/dist/esm/helpers/createPropMapper.js.map +2 -2
- package/dist/esm/helpers/fixNativeShadow.native.js +5 -7
- package/dist/esm/helpers/fixNativeShadow.native.js.map +2 -2
- package/dist/esm/helpers/getButtonSize.js +24 -0
- package/dist/esm/helpers/getButtonSize.js.map +7 -0
- package/dist/esm/helpers/getSplitStyles.js +62 -17
- package/dist/esm/helpers/getSplitStyles.js.map +2 -2
- package/dist/esm/helpers/getTextSize.js +34 -0
- package/dist/esm/helpers/getTextSize.js.map +7 -0
- package/dist/esm/helpers/insertStyleRule.js +1 -0
- package/dist/esm/helpers/insertStyleRule.js.map +2 -2
- package/dist/esm/helpers/nativeGestureHandler.js +7 -0
- package/dist/esm/helpers/nativeGestureHandler.js.map +7 -0
- package/dist/esm/helpers/nativeGestureHandler.native.js +2 -0
- package/dist/esm/helpers/nativeGestureHandler.native.js.map +7 -0
- package/dist/esm/hooks/useId.js +35 -0
- package/dist/esm/hooks/useId.js.map +7 -0
- package/dist/esm/hooks/useIsTouchDevice.js +6 -6
- package/dist/esm/hooks/useIsTouchDevice.js.map +2 -2
- package/dist/esm/hooks/useMedia.js +0 -1
- package/dist/esm/hooks/useMedia.js.map +2 -2
- package/dist/esm/hooks/usePrevious.js +1 -0
- package/dist/esm/hooks/usePrevious.js.map +7 -0
- package/dist/esm/hooks/useTheme.js.map +2 -2
- package/dist/esm/index.js +9 -6
- package/dist/esm/index.js.map +2 -2
- package/dist/esm/nativeGestureHandler.native.js +2 -0
- package/dist/esm/nativeGestureHandler.native.js.map +7 -0
- package/dist/esm/styled.js +4 -1
- package/dist/esm/styled.js.map +2 -2
- package/dist/esm/views/Slot.js +82 -0
- package/dist/esm/views/Slot.js.map +7 -0
- package/dist/esm/views/Text.js +9 -14
- package/dist/esm/views/Text.js.map +2 -2
- package/dist/esm/views/ThemeInverse.js +6 -2
- package/dist/esm/views/ThemeInverse.js.map +2 -2
- package/dist/jsx/createComponent.js +110 -66
- package/dist/jsx/createTamagui.js +4 -3
- package/dist/jsx/helpers/createPropMapper.js +35 -3
- package/dist/jsx/helpers/fixNativeShadow.native.js +5 -7
- package/dist/jsx/helpers/getButtonSize.js +23 -0
- package/dist/jsx/helpers/getSplitStyles.js +62 -17
- package/dist/jsx/helpers/getTextSize.js +33 -0
- package/dist/jsx/helpers/insertStyleRule.js +1 -0
- package/dist/jsx/helpers/nativeGestureHandler.js +6 -0
- package/dist/jsx/helpers/nativeGestureHandler.native.js +1 -0
- package/dist/jsx/hooks/useId.js +34 -0
- package/dist/jsx/hooks/useIsTouchDevice.js +6 -6
- package/dist/jsx/hooks/useMedia.js +0 -1
- package/dist/jsx/hooks/usePrevious.js +0 -0
- package/dist/jsx/index.js +9 -6
- package/dist/jsx/nativeGestureHandler.native.js +1 -0
- package/dist/jsx/styled.js +4 -1
- package/dist/jsx/views/Slot.js +75 -0
- package/dist/jsx/views/Text.js +9 -14
- package/dist/jsx/views/ThemeInverse.js +6 -1
- package/package.json +10 -7
- package/reset.css +20 -0
- 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/createPropMapper.d.ts +1 -1
- package/types/helpers/createPropMapper.d.ts.map +1 -1
- package/types/helpers/fixNativeShadow.native.d.ts +2 -1
- package/types/helpers/fixNativeShadow.native.d.ts.map +1 -1
- package/types/helpers/getButtonSize.d.ts +8 -0
- package/types/helpers/getButtonSize.d.ts.map +1 -0
- package/types/helpers/getSplitStyles.d.ts +10 -5
- package/types/helpers/getSplitStyles.d.ts.map +1 -1
- package/types/helpers/getTextSize.d.ts +3 -0
- package/types/helpers/getTextSize.d.ts.map +1 -0
- package/types/helpers/nativeGestureHandler.d.ts +2 -0
- package/types/helpers/nativeGestureHandler.d.ts.map +1 -0
- package/types/helpers/nativeGestureHandler.native.d.ts +2 -0
- package/types/helpers/nativeGestureHandler.native.d.ts.map +1 -0
- package/types/hooks/useId.d.ts +9 -0
- package/types/hooks/useId.d.ts.map +1 -0
- package/types/hooks/useMedia.d.ts +3 -7
- package/types/hooks/useMedia.d.ts.map +1 -1
- package/types/hooks/usePrevious.d.ts +1 -0
- package/types/hooks/usePrevious.d.ts.map +1 -0
- package/types/hooks/useTheme.d.ts.map +1 -1
- package/types/index.d.ts +9 -6
- package/types/index.d.ts.map +1 -1
- package/types/nativeGestureHandler.native.d.ts +2 -0
- package/types/nativeGestureHandler.native.d.ts.map +1 -0
- package/types/types.d.ts +23 -8
- package/types/types.d.ts.map +1 -1
- package/types/views/Slot.d.ts +9 -0
- package/types/views/Slot.d.ts.map +1 -0
- package/LICENSE +0 -21
package/README.md
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
## core
|
|
@@ -65,16 +65,18 @@ var import_conf = require("./conf");
|
|
|
65
65
|
var import_constants = require("./constants/constants");
|
|
66
66
|
var import_platform = require("./constants/platform");
|
|
67
67
|
var import_rnw = require("./constants/rnw");
|
|
68
|
-
var import_createVariable = require("./createVariable");
|
|
69
68
|
var import_createShallowUpdate = require("./helpers/createShallowUpdate");
|
|
70
69
|
var import_extendStaticConfig = require("./helpers/extendStaticConfig");
|
|
71
70
|
var import_getSplitStyles = require("./helpers/getSplitStyles");
|
|
72
71
|
var import_insertStyleRule = require("./helpers/insertStyleRule");
|
|
72
|
+
var import_nativeGestureHandler = require("./helpers/nativeGestureHandler");
|
|
73
73
|
var import_proxyThemeVariables = require("./helpers/proxyThemeVariables");
|
|
74
74
|
var import_wrapThemeManagerContext = require("./helpers/wrapThemeManagerContext");
|
|
75
75
|
var import_useFeatures = require("./hooks/useFeatures");
|
|
76
|
+
var import_useIsTouchDevice = require("./hooks/useIsTouchDevice");
|
|
76
77
|
var import_usePressable = require("./hooks/usePressable");
|
|
77
78
|
var import_useTheme = require("./hooks/useTheme");
|
|
79
|
+
var import_Slot = require("./views/Slot");
|
|
78
80
|
var import_TextAncestorContext = require("./views/TextAncestorContext");
|
|
79
81
|
import_react.default["keep"];
|
|
80
82
|
const defaultComponentState = {
|
|
@@ -91,6 +93,14 @@ if (typeof document !== "undefined") {
|
|
|
91
93
|
mouseUps.forEach((x) => x());
|
|
92
94
|
mouseUps.clear();
|
|
93
95
|
});
|
|
96
|
+
document.addEventListener("touchend", () => {
|
|
97
|
+
mouseUps.forEach((x) => x());
|
|
98
|
+
mouseUps.clear();
|
|
99
|
+
});
|
|
100
|
+
document.addEventListener("touchcancel", () => {
|
|
101
|
+
mouseUps.forEach((x) => x());
|
|
102
|
+
mouseUps.clear();
|
|
103
|
+
});
|
|
94
104
|
}
|
|
95
105
|
function mergeShorthands({ defaultProps }, { shorthands }) {
|
|
96
106
|
for (const key in defaultProps) {
|
|
@@ -115,26 +125,28 @@ function createComponent(configIn, ParentComponent) {
|
|
|
115
125
|
let avoidClasses = true;
|
|
116
126
|
let defaultNativeStyle;
|
|
117
127
|
let defaultNativeStyleSheet;
|
|
128
|
+
let tamaguiDefaultProps;
|
|
118
129
|
let initialSplitStyles;
|
|
119
130
|
function addPseudoToStyles(styles, name, pseudos) {
|
|
120
131
|
const pseudoStyle = pseudos[name];
|
|
121
132
|
const shouldNestObject = import_platform.isWeb && name !== "enterStyle" && name !== "exitStyle";
|
|
122
|
-
if (pseudoStyle) {
|
|
123
|
-
styles.push(shouldNestObject ? { [name]: pseudoStyle } : pseudoStyle);
|
|
124
|
-
}
|
|
125
133
|
const defaultPseudoStyle = initialSplitStyles.pseudos[name];
|
|
126
134
|
if (defaultPseudoStyle) {
|
|
127
135
|
styles.push(shouldNestObject ? { [name]: defaultPseudoStyle } : defaultPseudoStyle);
|
|
128
136
|
}
|
|
137
|
+
if (pseudoStyle) {
|
|
138
|
+
styles.push(shouldNestObject ? { [name]: pseudoStyle } : pseudoStyle);
|
|
139
|
+
}
|
|
129
140
|
}
|
|
130
141
|
__name(addPseudoToStyles, "addPseudoToStyles");
|
|
131
142
|
const component = (0, import_react.forwardRef)((props, forwardedRef) => {
|
|
132
143
|
var _a, _c, _d, _e;
|
|
144
|
+
props = tamaguiDefaultProps && !props.asChild ? __spreadValues(__spreadValues({}, tamaguiDefaultProps), props) : props;
|
|
133
145
|
const { Component, componentName, isText, isZStack } = staticConfig;
|
|
134
146
|
if (process.env.NODE_ENV === "development") {
|
|
135
147
|
if (props["debug"]) {
|
|
136
|
-
console.
|
|
137
|
-
console.log("props in:", props);
|
|
148
|
+
console.log("\u26A0\uFE0F", staticConfig.componentName || (Component == null ? void 0 : Component.displayName) || (Component == null ? void 0 : Component.name) || "[Unnamed Component]", "debug on");
|
|
149
|
+
console.log("props in:", props, Object.keys(props));
|
|
138
150
|
if (props["debug"] === "break")
|
|
139
151
|
debugger;
|
|
140
152
|
}
|
|
@@ -144,7 +156,7 @@ function createComponent(configIn, ParentComponent) {
|
|
|
144
156
|
const [state, set_] = (0, import_react.useState)(defaultComponentState);
|
|
145
157
|
const setStateShallow = (0, import_createShallowUpdate.createShallowUpdate)(set_);
|
|
146
158
|
const shouldAvoidClasses = !!(props.animation && avoidClasses);
|
|
147
|
-
const splitStyles = (0, import_getSplitStyles.
|
|
159
|
+
const splitStyles = (0, import_getSplitStyles.useSplitStyles)(props, staticConfig, theme, shouldAvoidClasses ? __spreadProps(__spreadValues({}, state), { noClassNames: true, resolveVariablesAs: "value" }) : state, shouldAvoidClasses || props.asChild ? null : initialSplitStyles.classNames);
|
|
148
160
|
const { viewProps: viewPropsIn, pseudos, medias, style, classNames } = splitStyles;
|
|
149
161
|
const useAnimations = (_a = tamaguiConfig.animations) == null ? void 0 : _a.useAnimations;
|
|
150
162
|
const isAnimated = !!(useAnimations && props.animation);
|
|
@@ -163,6 +175,7 @@ function createComponent(configIn, ParentComponent) {
|
|
|
163
175
|
const _b = viewPropsIn, {
|
|
164
176
|
tag,
|
|
165
177
|
hitSlop,
|
|
178
|
+
asChild,
|
|
166
179
|
children,
|
|
167
180
|
pointerEvents,
|
|
168
181
|
onPress,
|
|
@@ -204,6 +217,7 @@ function createComponent(configIn, ParentComponent) {
|
|
|
204
217
|
} = _b, viewPropsRest = __objRest(_b, [
|
|
205
218
|
"tag",
|
|
206
219
|
"hitSlop",
|
|
220
|
+
"asChild",
|
|
207
221
|
"children",
|
|
208
222
|
"pointerEvents",
|
|
209
223
|
"onPress",
|
|
@@ -286,7 +300,7 @@ function createComponent(configIn, ParentComponent) {
|
|
|
286
300
|
if (accessibilityRole)
|
|
287
301
|
viewProps.accessibilityRole = accessibilityRole;
|
|
288
302
|
}
|
|
289
|
-
if (import_platform.isWeb) {
|
|
303
|
+
if (import_platform.isWeb && !asChild) {
|
|
290
304
|
import_rnw.rnw.useResponderEvents(hostRef, {
|
|
291
305
|
onMoveShouldSetResponder,
|
|
292
306
|
onMoveShouldSetResponderCapture,
|
|
@@ -386,10 +400,14 @@ function createComponent(configIn, ParentComponent) {
|
|
|
386
400
|
}
|
|
387
401
|
const initialPseudos = initialSplitStyles.pseudos;
|
|
388
402
|
const attachPress = !!(pseudos && pseudos.pressStyle || initialPseudos && initialPseudos.pressStyle || onPress || onPressOut || onPressIn || onClick);
|
|
389
|
-
const
|
|
403
|
+
const isTouch = (0, import_useIsTouchDevice.useIsTouchDevice)();
|
|
404
|
+
const isHoverable = import_platform.isWeb && !isTouch;
|
|
390
405
|
const attachHover = isHoverable && !!(pseudos && pseudos.hoverStyle || onHoverIn || onHoverOut || onMouseEnter || onMouseLeave);
|
|
391
|
-
const
|
|
392
|
-
const
|
|
406
|
+
const handlesPressEvents = !isStringElement && !asChild;
|
|
407
|
+
const pressKey = handlesPressEvents ? "onPress" : "onClick";
|
|
408
|
+
const pressInKey = handlesPressEvents ? "onPressIn" : "onMouseDown";
|
|
409
|
+
const pressOutKey = handlesPressEvents ? "onPressOut" : "onMouseUp";
|
|
410
|
+
const shouldAttach = !asChild && (attachPress || attachHover || "pressStyle" in props || "onPress" in props || "onPressIn" in props || "onPressOut" in props || import_platform.isWeb && ("hoverStyle" in props || "onHoverIn" in props || "onHoverOut" in props || "onMouseEnter" in props || "onMouseLeave" in props));
|
|
393
411
|
const unPress = (0, import_react.useCallback)(() => {
|
|
394
412
|
if (!internal.current.isMounted)
|
|
395
413
|
return;
|
|
@@ -398,12 +416,12 @@ function createComponent(configIn, ParentComponent) {
|
|
|
398
416
|
pressIn: false
|
|
399
417
|
});
|
|
400
418
|
}, []);
|
|
401
|
-
const events = shouldAttach ? __spreadProps(__spreadValues(
|
|
402
|
-
|
|
419
|
+
const events = shouldAttach ? __spreadProps(__spreadValues({
|
|
420
|
+
[pressOutKey]: attachPress ? (e) => {
|
|
403
421
|
unPress();
|
|
404
422
|
onPressOut == null ? void 0 : onPressOut(e);
|
|
405
|
-
}
|
|
406
|
-
}
|
|
423
|
+
} : void 0
|
|
424
|
+
}, isHoverable && {
|
|
407
425
|
onMouseEnter: attachHover ? (e) => {
|
|
408
426
|
let next = {};
|
|
409
427
|
if (attachHover) {
|
|
@@ -435,38 +453,29 @@ function createComponent(configIn, ParentComponent) {
|
|
|
435
453
|
onMouseLeave == null ? void 0 : onMouseLeave(e);
|
|
436
454
|
} : void 0
|
|
437
455
|
}), {
|
|
438
|
-
|
|
456
|
+
[pressInKey]: attachPress ? (e) => {
|
|
439
457
|
setStateShallow({
|
|
440
458
|
press: true,
|
|
441
459
|
pressIn: true
|
|
442
460
|
});
|
|
443
461
|
onPressIn == null ? void 0 : onPressIn(e);
|
|
444
462
|
onMouseDown == null ? void 0 : onMouseDown(e);
|
|
463
|
+
if (import_platform.isWeb) {
|
|
464
|
+
mouseUps.add(unPress);
|
|
465
|
+
}
|
|
445
466
|
} : null,
|
|
446
|
-
[
|
|
447
|
-
onPress == null ? void 0 : onPress(e);
|
|
467
|
+
[pressKey]: attachPress ? (e) => {
|
|
448
468
|
unPress();
|
|
449
|
-
onPressOut == null ? void 0 : onPressOut(e);
|
|
450
469
|
onClick == null ? void 0 : onClick(e);
|
|
470
|
+
onPress == null ? void 0 : onPress(e);
|
|
451
471
|
} : null
|
|
452
472
|
}) : null;
|
|
453
|
-
|
|
473
|
+
const childEls = !children || asChild ? children : (0, import_wrapThemeManagerContext.wrapThemeManagerContext)(spacedChildren({
|
|
454
474
|
children,
|
|
455
475
|
space,
|
|
456
476
|
flexDirection: props.flexDirection || ((_c = staticConfig.defaultProps) == null ? void 0 : _c.flexDirection),
|
|
457
477
|
isZStack
|
|
458
478
|
}), (0, import_useTheme.getThemeManagerIfChanged)(theme));
|
|
459
|
-
const [pressProps] = (0, import_usePressable.usePressable)(events ? __spreadProps(__spreadValues({
|
|
460
|
-
disabled
|
|
461
|
-
}, hitSlop && {
|
|
462
|
-
hitSlop
|
|
463
|
-
}), {
|
|
464
|
-
onPressIn: events.onMouseDown,
|
|
465
|
-
onPressOut: events.onPressOut,
|
|
466
|
-
onPress: events[pressEventKey]
|
|
467
|
-
}) : {
|
|
468
|
-
disabled: true
|
|
469
|
-
});
|
|
470
479
|
let content;
|
|
471
480
|
if (import_platform.isWeb) {
|
|
472
481
|
if (staticConfig.isReactNativeWeb) {
|
|
@@ -482,14 +491,46 @@ function createComponent(configIn, ParentComponent) {
|
|
|
482
491
|
}
|
|
483
492
|
}
|
|
484
493
|
}
|
|
485
|
-
if (
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
494
|
+
if (asChild) {
|
|
495
|
+
ViewComponent = import_Slot.Slot;
|
|
496
|
+
const onlyChild = import_react.default.Children.only(children);
|
|
497
|
+
Object.assign(viewProps, onlyChild.props);
|
|
498
|
+
}
|
|
499
|
+
if (import_platform.isWeb) {
|
|
500
|
+
const [pressableProps] = (0, import_usePressable.usePressable)(events ? __spreadProps(__spreadValues({
|
|
501
|
+
disabled
|
|
502
|
+
}, hitSlop && {
|
|
503
|
+
hitSlop
|
|
504
|
+
}), {
|
|
505
|
+
onPressOut: events[pressOutKey],
|
|
506
|
+
onPressIn: events[pressInKey],
|
|
507
|
+
onPress: events[pressKey]
|
|
508
|
+
}) : {
|
|
509
|
+
disabled: true
|
|
510
|
+
});
|
|
511
|
+
if (events) {
|
|
512
|
+
if (handlesPressEvents) {
|
|
513
|
+
Object.assign(viewProps, pressableProps);
|
|
514
|
+
} else {
|
|
515
|
+
Object.assign(viewProps, events);
|
|
516
|
+
}
|
|
490
517
|
}
|
|
491
518
|
}
|
|
492
519
|
content = (0, import_react.createElement)(ViewComponent, viewProps, childEls);
|
|
520
|
+
if (!import_platform.isWeb) {
|
|
521
|
+
if (attachPress && events) {
|
|
522
|
+
content = /* @__PURE__ */ import_react.default.createElement(import_react_native.Pressable, {
|
|
523
|
+
onPressIn: events[pressInKey],
|
|
524
|
+
onPress: events[pressKey]
|
|
525
|
+
}, /* @__PURE__ */ import_react.default.createElement(import_nativeGestureHandler.BaseButton, {
|
|
526
|
+
onActiveStateChange: (isActive) => {
|
|
527
|
+
if (!isActive) {
|
|
528
|
+
unPress();
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
}, content));
|
|
532
|
+
}
|
|
533
|
+
}
|
|
493
534
|
if (import_platform.isWeb && events && attachHover) {
|
|
494
535
|
content = /* @__PURE__ */ import_react.default.createElement("span", {
|
|
495
536
|
className: "tui_Hoverable",
|
|
@@ -502,8 +543,7 @@ function createComponent(configIn, ParentComponent) {
|
|
|
502
543
|
}
|
|
503
544
|
if (process.env.NODE_ENV === "development") {
|
|
504
545
|
if (props["debug"]) {
|
|
505
|
-
viewProps
|
|
506
|
-
console.log(" \xBB ", __spreadValues({ propsIn: __spreadValues({}, props), propsOut: __spreadValues({}, viewProps), state, splitStyles, animationStyles, isStringElement, classNamesIn: (_d = props.className) == null ? void 0 : _d.split(" "), classNamesOut: (_e = viewProps.className) == null ? void 0 : _e.split(" "), pressProps, events, shouldAttach, ViewComponent, viewProps, styles, pseudos, content, childEls, shouldAvoidClasses, avoidClasses, animation: props.animation, style, defaultNativeStyle, initialSplitStyles }, typeof window !== "undefined" ? { theme, themeState: theme.__state, themeClassName: theme.className, staticConfig, tamaguiConfig } : null));
|
|
546
|
+
console.log(" \xBB ", __spreadValues({ propsIn: __spreadValues({}, props), propsOut: __spreadValues({}, viewProps), state, splitStyles, animationStyles, isStringElement, classNamesIn: (_d = props.className) == null ? void 0 : _d.split(" "), classNamesOut: (_e = viewProps.className) == null ? void 0 : _e.split(" "), events, shouldAttach, ViewComponent, viewProps, styles, pseudos, content, childEls, shouldAvoidClasses, avoidClasses, animation: props.animation, style, defaultNativeStyle, initialSplitStyles }, typeof window !== "undefined" ? { theme, themeState: theme.__state, themeClassName: theme.className, staticConfig, tamaguiConfig } : null));
|
|
507
547
|
}
|
|
508
548
|
}
|
|
509
549
|
if (features.length) {
|
|
@@ -523,7 +563,7 @@ function createComponent(configIn, ParentComponent) {
|
|
|
523
563
|
AnimatedText = (_b = tamaguiConfig.animations) == null ? void 0 : _b.Text;
|
|
524
564
|
AnimatedView = (_c = tamaguiConfig == null ? void 0 : tamaguiConfig.animations) == null ? void 0 : _c.View;
|
|
525
565
|
initialTheme = initialTheme || (0, import_proxyThemeVariables.proxyThemeVariables)(conf.themes[conf.defaultTheme || Object.keys(conf.themes)[0]]);
|
|
526
|
-
initialSplitStyles = (0, import_getSplitStyles.
|
|
566
|
+
initialSplitStyles = (0, import_getSplitStyles.insertSplitStyles)(staticConfig.defaultProps, staticConfig, initialTheme, {
|
|
527
567
|
mounted: true,
|
|
528
568
|
hover: false,
|
|
529
569
|
press: false,
|
|
@@ -532,21 +572,31 @@ function createComponent(configIn, ParentComponent) {
|
|
|
532
572
|
resolveVariablesAs: "both",
|
|
533
573
|
keepVariantsAsProps: true
|
|
534
574
|
});
|
|
535
|
-
const
|
|
575
|
+
const defaults = __spreadValues(__spreadValues({}, component.defaultProps), initialSplitStyles.viewProps);
|
|
536
576
|
defaultNativeStyle = {};
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
577
|
+
const validStyles = staticConfig.validStyles || import_helpers.stylePropsView;
|
|
578
|
+
for (const key in staticConfig.defaultProps) {
|
|
579
|
+
const val = staticConfig.defaultProps[key];
|
|
580
|
+
if (typeof val === "string" && val[0] === "$" || !validStyles[key]) {
|
|
581
|
+
defaults[key] = val;
|
|
582
|
+
} else {
|
|
583
|
+
defaultNativeStyle[key] = val;
|
|
584
|
+
}
|
|
540
585
|
}
|
|
541
586
|
defaultNativeStyleSheet = import_react_native.StyleSheet.create({
|
|
542
587
|
base: defaultNativeStyle
|
|
543
588
|
});
|
|
544
|
-
|
|
589
|
+
if (Object.keys(defaults).length) {
|
|
590
|
+
tamaguiDefaultProps = defaults;
|
|
591
|
+
}
|
|
545
592
|
if (process.env.NODE_ENV === "development" && ((_d = staticConfig.defaultProps) == null ? void 0 : _d.debug)) {
|
|
546
593
|
if (process.env.IS_STATIC !== "is_static") {
|
|
547
594
|
console.log(`\u{1F41B} [${staticConfig.componentName || "Component"}]`, {
|
|
548
595
|
staticConfig,
|
|
549
|
-
initialSplitStyles
|
|
596
|
+
initialSplitStyles,
|
|
597
|
+
tamaguiDefaultProps,
|
|
598
|
+
defaultNativeStyle,
|
|
599
|
+
defaults
|
|
550
600
|
});
|
|
551
601
|
}
|
|
552
602
|
}
|
|
@@ -607,6 +657,9 @@ const Spacer = createComponent({
|
|
|
607
657
|
minWidth: 0
|
|
608
658
|
}
|
|
609
659
|
}
|
|
660
|
+
},
|
|
661
|
+
defaultVariants: {
|
|
662
|
+
direction: "horizontal"
|
|
610
663
|
}
|
|
611
664
|
});
|
|
612
665
|
function spacedChildren({
|
|
@@ -617,39 +670,38 @@ function spacedChildren({
|
|
|
617
670
|
spaceFlex
|
|
618
671
|
}) {
|
|
619
672
|
var _a;
|
|
620
|
-
const childrenList = import_react.Children.toArray(children);
|
|
673
|
+
const childrenList = Array.isArray(children) ? children : import_react.Children.toArray(children);
|
|
621
674
|
const len = childrenList.length;
|
|
622
|
-
if (len
|
|
675
|
+
if (len <= 1) {
|
|
623
676
|
return childrenList;
|
|
624
677
|
}
|
|
625
|
-
const
|
|
678
|
+
const final = [];
|
|
626
679
|
for (const [index, child] of childrenList.entries()) {
|
|
627
|
-
if (child === null || child === void 0) {
|
|
680
|
+
if (child === null || child === void 0 || child === false || Array.isArray(child) && child.length === 0) {
|
|
628
681
|
continue;
|
|
629
682
|
}
|
|
630
683
|
if (!child || child["key"] && !isZStack) {
|
|
631
|
-
|
|
684
|
+
final.push(child);
|
|
632
685
|
} else {
|
|
633
|
-
|
|
686
|
+
final.push(/* @__PURE__ */ import_react.default.createElement(import_react.Fragment, {
|
|
634
687
|
key: index
|
|
635
688
|
}, isZStack ? /* @__PURE__ */ import_react.default.createElement(AbsoluteFill, null, child) : child));
|
|
636
689
|
}
|
|
637
690
|
if ((_a = child["type"]) == null ? void 0 : _a["isVisuallyHidden"]) {
|
|
638
691
|
continue;
|
|
639
692
|
}
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
}
|
|
693
|
+
const next = childrenList[index + 1];
|
|
694
|
+
if (next && space) {
|
|
695
|
+
final.push(/* @__PURE__ */ import_react.default.createElement(Spacer, __spreadValues({
|
|
696
|
+
key: `_${index}_spacer`,
|
|
697
|
+
direction: flexDirection === "row" || flexDirection === "row-reverse" ? "horizontal" : "vertical",
|
|
698
|
+
size: space
|
|
699
|
+
}, spaceFlex && {
|
|
700
|
+
flex: spaceFlex
|
|
701
|
+
})));
|
|
650
702
|
}
|
|
651
703
|
}
|
|
652
|
-
return
|
|
704
|
+
return final;
|
|
653
705
|
}
|
|
654
706
|
__name(spacedChildren, "spacedChildren");
|
|
655
707
|
function AbsoluteFill(props) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/createComponent.tsx"],
|
|
4
|
-
"sourcesContent": ["import { stylePropsView } from '@tamagui/helpers'\nimport { useForceUpdate } from '@tamagui/use-force-update'\nimport React, {\n Children,\n Fragment,\n createElement,\n forwardRef,\n memo,\n useCallback,\n useContext,\n useRef,\n useState,\n} from 'react'\nimport { StyleSheet, Text, View, ViewStyle } from 'react-native'\n\nimport { onConfiguredOnce } from './conf'\nimport { stackDefaultStyles } from './constants/constants'\nimport { isAndroid, isTouchDevice, isWeb, useIsomorphicLayoutEffect } from './constants/platform'\nimport { rnw } from './constants/rnw'\nimport { isVariable } from './createVariable'\nimport { createShallowUpdate } from './helpers/createShallowUpdate'\nimport { extendStaticConfig, parseStaticConfig } from './helpers/extendStaticConfig'\nimport { SplitStyleResult, getSplitStyles } from './helpers/getSplitStyles'\nimport { getAllSelectors } from './helpers/insertStyleRule'\nimport { proxyThemeVariables } from './helpers/proxyThemeVariables'\nimport { wrapThemeManagerContext } from './helpers/wrapThemeManagerContext'\nimport { useFeatures } from './hooks/useFeatures'\nimport { usePressable } from './hooks/usePressable'\nimport { getThemeManagerIfChanged, useTheme } from './hooks/useTheme'\nimport {\n SpaceTokens,\n StackProps,\n StaticConfig,\n StaticConfigParsed,\n StylableComponent,\n TamaguiComponent,\n TamaguiComponentState,\n TamaguiConfig,\n TamaguiInternalConfig,\n UseAnimationHook,\n} from './types'\nimport { TextAncestorContext } from './views/TextAncestorContext'\n\nReact['keep']\n\nconst defaultComponentState: TamaguiComponentState = {\n hover: false,\n press: false,\n pressIn: false,\n focus: false,\n // only used by enterStyle\n mounted: false,\n animation: null,\n}\n\nexport const mouseUps = new Set<Function>()\nif (typeof document !== 'undefined') {\n document.addEventListener('mouseup', () => {\n mouseUps.forEach((x) => x())\n mouseUps.clear()\n })\n}\n\n// mutates\nfunction mergeShorthands({ defaultProps }: StaticConfigParsed, { shorthands }: TamaguiConfig) {\n // they are defined in correct order already { ...parent, ...child }\n for (const key in defaultProps) {\n defaultProps[shorthands[key] || key] = defaultProps[key]\n }\n}\n\nlet initialTheme: any\n\nexport function createComponent<\n ComponentPropTypes extends Object = {},\n Ref = View,\n BaseProps = never\n>(configIn: Partial<StaticConfig> | StaticConfigParsed, ParentComponent?: StylableComponent) {\n const staticConfig = (() => {\n const config = extendStaticConfig(configIn, ParentComponent)\n if ('parsed' in config) {\n return config\n } else {\n return parseStaticConfig(config)\n }\n })()\n\n const componentClassName = `is_${staticConfig.componentName}`\n let tamaguiConfig: TamaguiInternalConfig\n let AnimatedText: any\n let AnimatedView: any\n let avoidClasses = true\n let defaultNativeStyle: any\n let defaultNativeStyleSheet: StyleSheet.NamedStyles<{ base: {} }>\n let initialSplitStyles: SplitStyleResult\n\n function addPseudoToStyles(styles: any[], name: string, pseudos: any) {\n // on web use pseudo object { hoverStyle } to keep specificity with concatClassName\n const pseudoStyle = pseudos[name]\n const shouldNestObject = isWeb && name !== 'enterStyle' && name !== 'exitStyle'\n if (pseudoStyle) {\n styles.push(shouldNestObject ? { [name]: pseudoStyle } : pseudoStyle)\n }\n const defaultPseudoStyle = initialSplitStyles.pseudos[name]\n if (defaultPseudoStyle) {\n styles.push(shouldNestObject ? { [name]: defaultPseudoStyle } : defaultPseudoStyle)\n }\n }\n\n // see onConfiguredOnce below which attaches a name then to this component\n const component = forwardRef<Ref, ComponentPropTypes>((props: any, forwardedRef) => {\n const { Component, componentName, isText, isZStack } = staticConfig\n\n if (process.env.NODE_ENV === 'development') {\n if (props['debug']) {\n // prettier-ignore\n console.warn(staticConfig.componentName || Component?.displayName || Component?.name || '[Unnamed Component]', 'debug on')\n // keep separate react native warn touches every value on prop causing weird behavior\n console.log('props in:', props)\n if (props['debug'] === 'break') debugger\n }\n }\n\n const forceUpdate = useForceUpdate()\n const theme = useTheme(props.theme, staticConfig.componentName, props, forceUpdate)\n const [state, set_] = useState<TamaguiComponentState>(defaultComponentState)\n const setStateShallow = createShallowUpdate(set_)\n\n const shouldAvoidClasses = !!(props.animation && avoidClasses)\n const splitStyles = getSplitStyles(\n props,\n staticConfig,\n theme,\n shouldAvoidClasses ? { ...state, noClassNames: true, resolveVariablesAs: 'value' } : state,\n shouldAvoidClasses ? null : initialSplitStyles.classNames\n )\n\n const { viewProps: viewPropsIn, pseudos, medias, style, classNames } = splitStyles\n const useAnimations = tamaguiConfig.animations?.useAnimations as UseAnimationHook | undefined\n const isAnimated = !!(useAnimations && props.animation)\n const hasEnterStyle = !!props.enterStyle\n\n const features = useFeatures(props, {\n forceUpdate,\n setStateShallow,\n useAnimations,\n state,\n style: props.animation ? { ...defaultNativeStyle, ...style } : null,\n pseudos,\n staticConfig,\n theme,\n onDidAnimate: props.onDidAnimate,\n })\n\n const {\n tag,\n hitSlop,\n children,\n pointerEvents,\n onPress,\n onPressIn,\n onPressOut,\n onHoverIn,\n onHoverOut,\n space,\n disabled,\n onMouseEnter,\n onMouseLeave,\n hrefAttrs,\n onMoveShouldSetResponder,\n onMoveShouldSetResponderCapture,\n onResponderEnd,\n onResponderGrant,\n onResponderMove,\n onResponderReject,\n onResponderRelease,\n onResponderStart,\n onResponderTerminate,\n onResponderTerminationRequest,\n onScrollShouldSetResponder,\n onScrollShouldSetResponderCapture,\n onSelectionChangeShouldSetResponder,\n onSelectionChangeShouldSetResponderCapture,\n onStartShouldSetResponder,\n onStartShouldSetResponderCapture,\n onMouseDown,\n nativeID,\n\n accessible,\n accessibilityRole,\n\n // android\n collapsable,\n focusable,\n\n // ignore from here on out\n // for next/link compat etc\n // @ts-ignore\n onClick,\n theme: _themeProp,\n // @ts-ignore\n defaultVariants,\n\n // TODO feature load layout hook\n onLayout,\n ...viewPropsRest\n } = viewPropsIn\n\n let viewProps: StackProps = viewPropsRest\n\n // from react-native-web\n if (process.env.NODE_ENV === 'development' && !isText && isWeb) {\n Children.toArray(props.children).forEach((item) => {\n if (typeof item === 'string') {\n console.error(`Unexpected text node: ${item}. A text node cannot be a child of a <View>.`)\n }\n })\n }\n\n const hasTextAncestor = isWeb ? useContext(TextAncestorContext) : false\n const hostRef = useRef(null)\n\n // isMounted\n const internal = useRef<{ isMounted: boolean }>()\n if (!internal.current) {\n internal.current = {\n isMounted: true,\n }\n }\n\n useIsomorphicLayoutEffect(() => {\n // we need to use state to properly have mounted go from false => true\n if (typeof window !== 'undefined' && (hasEnterStyle || props.animation)) {\n // for SSR we never set mounted, ensuring enterStyle={{}} is set by default\n setStateShallow({\n mounted: true,\n })\n }\n\n internal.current!.isMounted = true\n return () => {\n mouseUps.delete(unPress)\n internal.current!.isMounted = false\n }\n }, [hasEnterStyle, props.animation])\n\n if (nativeID) {\n viewProps.id = nativeID\n }\n\n if (isAndroid) {\n if (collapsable) viewProps.collapsable = collapsable\n if (focusable) viewProps.focusable = focusable\n }\n\n if (!isWeb) {\n if (accessible) viewProps.accessible = accessible\n if (accessibilityRole) viewProps.accessibilityRole = accessibilityRole\n }\n\n if (isWeb) {\n // from react-native-web\n rnw.useResponderEvents(hostRef, {\n onMoveShouldSetResponder,\n onMoveShouldSetResponderCapture,\n onResponderEnd,\n onResponderGrant,\n onResponderMove,\n onResponderReject,\n onResponderRelease,\n onResponderStart,\n onResponderTerminate,\n onResponderTerminationRequest,\n onScrollShouldSetResponder,\n onScrollShouldSetResponderCapture,\n onSelectionChangeShouldSetResponder,\n onSelectionChangeShouldSetResponderCapture,\n onStartShouldSetResponder,\n onStartShouldSetResponderCapture,\n })\n }\n\n // get the right component\n const isTaggable = !Component || typeof Component === 'string'\n\n // default to tag, fallback to component (when both strings)\n const element = isWeb ? (isTaggable ? tag || Component : Component) : Component\n const BaseTextComponent = !isWeb ? Text : element || 'span'\n const BaseViewComponent = !isWeb ? View : element || (hasTextAncestor ? 'span' : 'div')\n let ViewComponent = isText\n ? (isAnimated ? AnimatedText || Text : null) || BaseTextComponent\n : (isAnimated ? AnimatedView || View : null) || BaseViewComponent\n\n ViewComponent = Component || ViewComponent\n\n let styles: any[]\n\n const isStringElement = typeof ViewComponent === 'string'\n const animationStyles = state.animation ? state.animation.style : null\n\n if (isStringElement && shouldAvoidClasses) {\n styles = {\n ...defaultNativeStyle,\n ...animationStyles,\n ...medias,\n }\n } else {\n styles = [\n isWeb ? null : defaultNativeStyleSheet ? (defaultNativeStyleSheet.base as ViewStyle) : null,\n // parity w react-native-web, only for text in text\n // TODO this should be able to be done w css to replicate after extraction:\n // (.text .text { display: inline-flex; }) (but if they set display we'd need stronger precendence)\n // isText && hasTextAncestor && isWeb ? { display: 'inline-flex' } : null,\n // style,\n animationStyles ? animationStyles : style,\n medias,\n ]\n if (!animationStyles) {\n !state.mounted && addPseudoToStyles(styles, 'enterStyle', pseudos)\n state.hover && addPseudoToStyles(styles, 'hoverStyle', pseudos)\n state.focus && addPseudoToStyles(styles, 'focusStyle', pseudos)\n state.press && addPseudoToStyles(styles, 'pressStyle', pseudos)\n }\n }\n\n if (isWeb) {\n if (!shouldAvoidClasses) {\n const fontFamilyName = isText\n ? props.fontFamily || staticConfig.defaultProps.fontFamily\n : null\n const fontFamily =\n fontFamilyName && fontFamilyName[0] === '$' ? fontFamilyName.slice(1) : null\n const classList = [\n componentName ? componentClassName : '',\n fontFamily ? `font_${fontFamily}` : '',\n theme.className,\n classNames ? Object.values(classNames).join(' ') : '',\n ]\n\n // TODO restore this to isText classList\n // hasTextAncestor === true && cssText.textHasAncestor,\n // TODO MOVE TO VARIANTS [number] [any]\n // numberOfLines != null && numberOfLines > 1 && cssText.textMultiLine,\n\n const className = classList.join(' ')\n if (process.env.NODE_ENV === 'development') {\n if (props['debug']) {\n // prettier-ignore\n console.log(' \u00BB className', { isStringElement, pseudos, state, classNames, propsClassName: props.className, style, classList, className: className.trim().split(' '), themeClassName: theme.className, values: Object.fromEntries(Object.entries(classNames).map(([k, v]) => [v, getAllSelectors()[v]])) })\n }\n }\n viewProps.className = className\n viewProps.style = animationStyles\n } else {\n viewProps.style = styles\n }\n } else {\n viewProps.style = styles\n }\n\n if (pointerEvents) {\n viewProps.pointerEvents = pointerEvents\n }\n\n if (isWeb) {\n // from react-native-web\n const platformMethodsRef = rnw.usePlatformMethods(viewProps)\n const setRef = rnw.useMergeRefs(hostRef, platformMethodsRef, forwardedRef)\n\n if (!isAnimated) {\n // @ts-ignore\n viewProps.ref = setRef\n } else {\n if (forwardedRef) {\n // @ts-ignore\n viewProps.ref = forwardedRef\n }\n }\n\n if (props.href != null && hrefAttrs != null) {\n const { download, rel, target } = hrefAttrs\n if (download != null) {\n viewProps.download = download\n }\n if (rel != null) {\n viewProps.rel = rel\n }\n if (typeof target === 'string') {\n viewProps.target = target.charAt(0) !== '_' ? '_' + target : target\n }\n }\n } else {\n if (forwardedRef) {\n // @ts-ignore\n viewProps.ref = forwardedRef\n }\n }\n\n // TODO need to loop active variants and see if they have matchin pseudos and apply as well\n const initialPseudos = initialSplitStyles.pseudos\n const attachPress = !!(\n (pseudos && pseudos.pressStyle) ||\n (initialPseudos && initialPseudos.pressStyle) ||\n onPress ||\n onPressOut ||\n onPressIn ||\n onClick\n )\n const isHoverable = isWeb && !isTouchDevice\n const attachHover =\n isHoverable &&\n !!((pseudos && pseudos.hoverStyle) || onHoverIn || onHoverOut || onMouseEnter || onMouseLeave)\n const pressEventKey = isStringElement ? 'onClick' : 'onPress'\n\n // check presence to prevent reparenting bugs, allows for onPress={x ? function : undefined} usage\n // while avoiding reparenting...\n // once proper reparenting is supported, we can remove this and use that...\n const shouldAttach =\n attachPress ||\n attachHover ||\n 'pressStyle' in props ||\n 'onPress' in props ||\n 'onPressIn' in props ||\n 'onPressOut' in props ||\n (isWeb &&\n ('hoverStyle' in props ||\n 'onHoverIn' in props ||\n 'onHoverOut' in props ||\n 'onMouseEnter' in props ||\n 'onMouseLeave' in props))\n\n const unPress = useCallback(() => {\n if (!internal.current!.isMounted) return\n setStateShallow({\n press: false,\n pressIn: false,\n })\n }, [])\n\n const events = shouldAttach\n ? {\n ...(!isWeb && {\n // non web\n onPressOut: (e) => {\n unPress()\n onPressOut?.(e)\n },\n }),\n ...(isHoverable && {\n onMouseEnter: attachHover\n ? (e) => {\n let next: Partial<typeof state> = {}\n if (attachHover) {\n next.hover = true\n }\n if (state.pressIn) {\n next.press = true\n }\n if (Object.keys(next).length) {\n setStateShallow(next)\n }\n onHoverIn?.(e)\n onMouseEnter?.(e)\n }\n : undefined,\n onMouseLeave: attachHover\n ? (e) => {\n let next: Partial<typeof state> = {}\n mouseUps.add(unPress)\n if (attachHover) {\n next.hover = false\n }\n if (state.pressIn) {\n next.press = false\n next.pressIn = false\n }\n if (Object.keys(next).length) {\n setStateShallow(next)\n }\n onHoverOut?.(e)\n onMouseLeave?.(e)\n }\n : undefined,\n }),\n onMouseDown: attachPress\n ? (e) => {\n setStateShallow({\n press: true,\n pressIn: true,\n })\n onPressIn?.(e)\n onMouseDown?.(e)\n }\n : null,\n [pressEventKey]: attachPress\n ? (e) => {\n onPress?.(e)\n unPress()\n onPressOut?.(e)\n onClick?.(e)\n }\n : null,\n }\n : null\n\n let childEls = !children\n ? children\n : wrapThemeManagerContext(\n spacedChildren({\n children,\n space,\n flexDirection: props.flexDirection || staticConfig.defaultProps?.flexDirection,\n isZStack,\n }),\n getThemeManagerIfChanged(theme)\n )\n\n // TODO once we do the above we can then rely entirely on pressStyle returned here isntead of above pressStyle logic\n const [pressProps] = usePressable(\n events\n ? {\n disabled,\n ...(hitSlop && {\n hitSlop,\n }),\n onPressIn: events.onMouseDown,\n onPressOut: events.onPressOut,\n onPress: events[pressEventKey],\n }\n : {\n disabled: true,\n }\n )\n\n let content: any\n\n // replicate react-native-web's `createElement`\n if (isWeb) {\n if (staticConfig.isReactNativeWeb) {\n viewProps.dataSet = {\n ...viewProps.dataSet,\n className: viewProps.className,\n }\n } else {\n const rnProps = rnw.createDOMProps(viewProps)\n const className =\n rnProps.className && rnProps.className !== viewProps.className\n ? `${rnProps.className} ${viewProps.className}`\n : viewProps.className\n\n // additive\n Object.assign(viewProps, rnProps)\n\n // we already handle Text/View properly\n if (className) {\n viewProps.className = className\n }\n }\n }\n\n if (events) {\n if (!isStringElement) {\n Object.assign(viewProps, pressProps)\n } else {\n Object.assign(viewProps, events)\n }\n }\n\n content = createElement(ViewComponent, viewProps, childEls)\n\n if (isWeb && events && attachHover) {\n content = (\n <span\n className=\"tui_Hoverable\"\n style={{\n display: 'contents',\n }}\n onMouseEnter={events.onMouseEnter}\n onMouseLeave={events.onMouseLeave}\n >\n {content}\n </span>\n )\n }\n\n if (process.env.NODE_ENV === 'development') {\n if (props['debug']) {\n viewProps['debug'] = true\n // prettier-ignore\n console.log(' \u00BB ', { propsIn: { ...props }, propsOut: { ...viewProps }, state, splitStyles, animationStyles, isStringElement, classNamesIn: props.className?.split(' '), classNamesOut: viewProps.className?.split(' '), pressProps, events, shouldAttach, ViewComponent, viewProps, styles, pseudos, content, childEls, shouldAvoidClasses, avoidClasses, animation: props.animation, style, defaultNativeStyle, initialSplitStyles, ...(typeof window !== 'undefined' ? { theme, themeState: theme.__state, themeClassName: theme.className, staticConfig, tamaguiConfig } : null) })\n }\n }\n\n if (features.length) {\n return (\n <>\n {features}\n {content}\n </>\n )\n }\n\n return content\n })\n\n component.displayName = staticConfig.componentName\n\n // Once configuration is run and all components are registered\n // get default props + className and analyze styles\n onConfiguredOnce((conf) => {\n if (process.env.IS_STATIC === 'is_static') {\n // in static mode we just use these to lookup configuration\n return\n }\n\n tamaguiConfig = conf\n\n // do this to make sure shorthands don't duplicate with.. longhands\n mergeShorthands(staticConfig, tamaguiConfig)\n\n avoidClasses = !!tamaguiConfig.animations?.avoidClasses\n AnimatedText = tamaguiConfig.animations?.Text\n AnimatedView = tamaguiConfig?.animations?.View\n initialTheme =\n initialTheme ||\n proxyThemeVariables(conf.themes[conf.defaultTheme || Object.keys(conf.themes)[0]])\n initialSplitStyles = getSplitStyles(staticConfig.defaultProps, staticConfig, initialTheme, {\n mounted: true,\n hover: false,\n press: false,\n pressIn: false,\n focus: false,\n resolveVariablesAs: 'both',\n keepVariantsAsProps: true,\n })\n\n const { style, viewProps } = initialSplitStyles\n defaultNativeStyle = {}\n for (const key in style) {\n const v = style[key]\n defaultNativeStyle[key] = isVariable(v) ? v.val : v\n }\n defaultNativeStyleSheet = StyleSheet.create({\n base: defaultNativeStyle,\n })\n\n // @ts-ignore\n component.defaultProps = {\n ...viewProps,\n ...component.defaultProps,\n }\n\n // debug\n if (process.env.NODE_ENV === 'development' && staticConfig.defaultProps?.debug) {\n if (process.env.IS_STATIC !== 'is_static') {\n console.log(`\uD83D\uDC1B [${staticConfig.componentName || 'Component'}]`, {\n staticConfig,\n initialSplitStyles,\n })\n }\n }\n })\n\n let res: TamaguiComponent<ComponentPropTypes, Ref, BaseProps> = component as any\n\n if (configIn.memo) {\n res = memo(res) as any\n }\n\n res['staticConfig'] = {\n validStyles: staticConfig.validStyles || stylePropsView,\n ...staticConfig,\n }\n\n if (process.env.NODE_ENV === 'development') {\n res['whyDidYouRender'] = true\n }\n\n // res.extractable HoC\n res['extractable'] = (Component: any, conf?: Partial<StaticConfig>) => {\n Component['staticConfig'] = extendStaticConfig(\n {\n Component,\n ...conf,\n neverFlatten: true,\n defaultProps: {\n ...Component.defaultProps,\n ...conf?.defaultProps,\n },\n },\n res\n )\n return Component\n }\n\n return res\n}\n\n// dont used styled() here to avoid circular deps\n// keep inline to avoid circular deps\n\nexport const Spacer = createComponent<\n Omit<StackProps, 'flex' | 'direction'> & {\n size?: number | SpaceTokens\n flex?: boolean | number\n direction?: 'horizontal' | 'vertical'\n }\n>({\n memo: true,\n componentName: 'Spacer',\n defaultProps: {\n ...stackDefaultStyles,\n size: true,\n },\n variants: {\n size: {\n '...size': (size, { tokens }) => {\n size = size == true ? '$true' : size\n const sizePx = tokens.size[size] ?? size\n return {\n width: sizePx,\n height: sizePx,\n minWidth: sizePx,\n minHeight: sizePx,\n }\n },\n },\n\n flex: {\n true: {\n flex: 1,\n },\n },\n\n direction: {\n horizontal: {\n height: 0,\n minHeight: 0,\n },\n vertical: {\n width: 0,\n minWidth: 0,\n },\n },\n },\n})\n\nexport function spacedChildren({\n isZStack,\n children,\n space,\n flexDirection,\n spaceFlex,\n}: {\n isZStack?: boolean\n children: any\n space?: any\n spaceFlex?: boolean | number\n flexDirection?: ViewStyle['flexDirection']\n}) {\n const childrenList = Children.toArray(children)\n const len = childrenList.length\n if (len === 1) {\n return childrenList\n }\n const next: any[] = []\n for (const [index, child] of childrenList.entries()) {\n if (child === null || child === undefined) {\n continue\n }\n\n if (!child || (child['key'] && !isZStack)) {\n next.push(child)\n } else {\n next.push(\n <Fragment key={index}>{isZStack ? <AbsoluteFill>{child}</AbsoluteFill> : child}</Fragment>\n )\n }\n\n // allows for custom visually hidden components that dont insert spacing\n if (child['type']?.['isVisuallyHidden']) {\n continue\n }\n\n if (index !== len - 1) {\n if (space) {\n next.push(\n <Spacer\n key={`_${index}_spacer`}\n direction={\n flexDirection === 'row' || flexDirection === 'row-reverse' ? 'horizontal' : 'vertical'\n }\n size={space}\n {...(spaceFlex && {\n flex: spaceFlex,\n })}\n />\n )\n }\n }\n }\n return next\n}\n\nexport function AbsoluteFill(props: any) {\n return isWeb ? (\n <div\n style={\n {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n } as any\n }\n >\n {props.children}\n </div>\n ) : (\n <View style={StyleSheet.absoluteFill}>{props.child}</View>\n )\n}\n\n// this can be done with CSS entirely right?\n// const shouldWrapTextAncestor = isWeb && isText && !hasTextAncestor\n// if (shouldWrapTextAncestor) {\n// // from react-native-web\n// content = createElement(TextAncestorContext.Provider, { value: true }, content)\n// }\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import { stylePropsView } from '@tamagui/helpers'\nimport { useForceUpdate } from '@tamagui/use-force-update'\nimport React, {\n Children,\n Fragment,\n createElement,\n forwardRef,\n memo,\n useCallback,\n useContext,\n useRef,\n useState,\n} from 'react'\nimport { Pressable, StyleSheet, Text, View, ViewStyle } from 'react-native'\n\nimport { onConfiguredOnce } from './conf'\nimport { stackDefaultStyles } from './constants/constants'\nimport { isAndroid, isWeb, useIsomorphicLayoutEffect } from './constants/platform'\nimport { rnw } from './constants/rnw'\nimport { createShallowUpdate } from './helpers/createShallowUpdate'\nimport { extendStaticConfig, parseStaticConfig } from './helpers/extendStaticConfig'\nimport { SplitStyleResult, insertSplitStyles, useSplitStyles } from './helpers/getSplitStyles'\nimport { getAllSelectors } from './helpers/insertStyleRule'\nimport { BaseButton } from './helpers/nativeGestureHandler'\nimport { proxyThemeVariables } from './helpers/proxyThemeVariables'\nimport { wrapThemeManagerContext } from './helpers/wrapThemeManagerContext'\nimport { useFeatures } from './hooks/useFeatures'\nimport { useIsTouchDevice } from './hooks/useIsTouchDevice'\nimport { usePressable } from './hooks/usePressable'\nimport { getThemeManagerIfChanged, useTheme } from './hooks/useTheme'\nimport {\n SpaceTokens,\n StackProps,\n StaticConfig,\n StaticConfigParsed,\n StylableComponent,\n TamaguiComponent,\n TamaguiComponentState,\n TamaguiConfig,\n TamaguiInternalConfig,\n UseAnimationHook,\n} from './types'\nimport { Slot } from './views/Slot'\nimport { TextAncestorContext } from './views/TextAncestorContext'\n\nReact['keep']\n\nconst defaultComponentState: TamaguiComponentState = {\n hover: false,\n press: false,\n pressIn: false,\n focus: false,\n // only used by enterStyle\n mounted: false,\n animation: null,\n}\n\nexport const mouseUps = new Set<Function>()\nif (typeof document !== 'undefined') {\n document.addEventListener('mouseup', () => {\n mouseUps.forEach((x) => x())\n mouseUps.clear()\n })\n document.addEventListener('touchend', () => {\n mouseUps.forEach((x) => x())\n mouseUps.clear()\n })\n document.addEventListener('touchcancel', () => {\n mouseUps.forEach((x) => x())\n mouseUps.clear()\n })\n}\n\n// mutates\nfunction mergeShorthands({ defaultProps }: StaticConfigParsed, { shorthands }: TamaguiConfig) {\n // they are defined in correct order already { ...parent, ...child }\n for (const key in defaultProps) {\n defaultProps[shorthands[key] || key] = defaultProps[key]\n }\n}\n\nlet initialTheme: any\n\nexport function createComponent<\n ComponentPropTypes extends Object = {},\n Ref = View,\n BaseProps = never\n>(configIn: Partial<StaticConfig> | StaticConfigParsed, ParentComponent?: StylableComponent) {\n const staticConfig = (() => {\n const config = extendStaticConfig(configIn, ParentComponent)\n if ('parsed' in config) {\n return config\n } else {\n return parseStaticConfig(config)\n }\n })()\n\n const componentClassName = `is_${staticConfig.componentName}`\n let tamaguiConfig: TamaguiInternalConfig\n let AnimatedText: any\n let AnimatedView: any\n let avoidClasses = true\n let defaultNativeStyle: any\n let defaultNativeStyleSheet: StyleSheet.NamedStyles<{ base: {} }>\n let tamaguiDefaultProps: any\n let initialSplitStyles: SplitStyleResult\n\n function addPseudoToStyles(styles: any[], name: string, pseudos: any) {\n // on web use pseudo object { hoverStyle } to keep specificity with concatClassName\n const pseudoStyle = pseudos[name]\n const shouldNestObject = isWeb && name !== 'enterStyle' && name !== 'exitStyle'\n const defaultPseudoStyle = initialSplitStyles.pseudos[name]\n if (defaultPseudoStyle) {\n styles.push(shouldNestObject ? { [name]: defaultPseudoStyle } : defaultPseudoStyle)\n }\n if (pseudoStyle) {\n styles.push(shouldNestObject ? { [name]: pseudoStyle } : pseudoStyle)\n }\n }\n\n // see onConfiguredOnce below which attaches a name then to this component\n const component = forwardRef<Ref, ComponentPropTypes>((props: any, forwardedRef) => {\n // ridiculous fix because react inserts default props after your props for some reason...\n props = tamaguiDefaultProps && !props.asChild ? { ...tamaguiDefaultProps, ...props } : props\n\n const { Component, componentName, isText, isZStack } = staticConfig\n\n if (process.env.NODE_ENV === 'development') {\n if (props['debug']) {\n // prettier-ignore\n console.log('\u26A0\uFE0F', staticConfig.componentName || Component?.displayName || Component?.name || '[Unnamed Component]', 'debug on')\n // keep separate react native warn touches every value on prop causing weird behavior\n console.log('props in:', props, Object.keys(props))\n if (props['debug'] === 'break') debugger\n }\n }\n\n const forceUpdate = useForceUpdate()\n const theme = useTheme(props.theme, staticConfig.componentName, props, forceUpdate)\n const [state, set_] = useState<TamaguiComponentState>(defaultComponentState)\n const setStateShallow = createShallowUpdate(set_)\n\n const shouldAvoidClasses = !!(props.animation && avoidClasses)\n const splitStyles = useSplitStyles(\n props,\n staticConfig,\n theme,\n shouldAvoidClasses ? { ...state, noClassNames: true, resolveVariablesAs: 'value' } : state,\n shouldAvoidClasses || props.asChild ? null : initialSplitStyles.classNames\n )\n\n const { viewProps: viewPropsIn, pseudos, medias, style, classNames } = splitStyles\n const useAnimations = tamaguiConfig.animations?.useAnimations as UseAnimationHook | undefined\n const isAnimated = !!(useAnimations && props.animation)\n const hasEnterStyle = !!props.enterStyle\n\n const features = useFeatures(props, {\n forceUpdate,\n setStateShallow,\n useAnimations,\n state,\n style: props.animation ? { ...defaultNativeStyle, ...style } : null,\n pseudos,\n staticConfig,\n theme,\n onDidAnimate: props.onDidAnimate,\n })\n\n const {\n tag,\n hitSlop,\n asChild,\n children,\n pointerEvents,\n onPress,\n onPressIn,\n onPressOut,\n onHoverIn,\n onHoverOut,\n space,\n disabled,\n onMouseEnter,\n onMouseLeave,\n hrefAttrs,\n onMoveShouldSetResponder,\n onMoveShouldSetResponderCapture,\n onResponderEnd,\n onResponderGrant,\n onResponderMove,\n onResponderReject,\n onResponderRelease,\n onResponderStart,\n onResponderTerminate,\n onResponderTerminationRequest,\n onScrollShouldSetResponder,\n onScrollShouldSetResponderCapture,\n onSelectionChangeShouldSetResponder,\n onSelectionChangeShouldSetResponderCapture,\n onStartShouldSetResponder,\n onStartShouldSetResponderCapture,\n onMouseDown,\n nativeID,\n\n accessible,\n accessibilityRole,\n\n // android\n collapsable,\n focusable,\n\n // ignore from here on out\n // for next/link compat etc\n // @ts-ignore\n onClick,\n theme: _themeProp,\n // @ts-ignore\n defaultVariants,\n\n // TODO feature load layout hook\n onLayout,\n ...viewPropsRest\n } = viewPropsIn\n\n let viewProps: StackProps = viewPropsRest\n\n // from react-native-web\n if (process.env.NODE_ENV === 'development' && !isText && isWeb) {\n Children.toArray(props.children).forEach((item) => {\n if (typeof item === 'string') {\n console.error(`Unexpected text node: ${item}. A text node cannot be a child of a <View>.`)\n }\n })\n }\n\n const hasTextAncestor = isWeb ? useContext(TextAncestorContext) : false\n const hostRef = useRef(null)\n\n // isMounted\n const internal = useRef<{ isMounted: boolean }>()\n if (!internal.current) {\n internal.current = {\n isMounted: true,\n }\n }\n\n useIsomorphicLayoutEffect(() => {\n // we need to use state to properly have mounted go from false => true\n if (typeof window !== 'undefined' && (hasEnterStyle || props.animation)) {\n // for SSR we never set mounted, ensuring enterStyle={{}} is set by default\n setStateShallow({\n mounted: true,\n })\n }\n\n internal.current!.isMounted = true\n return () => {\n mouseUps.delete(unPress)\n internal.current!.isMounted = false\n }\n }, [hasEnterStyle, props.animation])\n\n if (nativeID) {\n viewProps.id = nativeID\n }\n\n if (isAndroid) {\n if (collapsable) viewProps.collapsable = collapsable\n if (focusable) viewProps.focusable = focusable\n }\n\n if (!isWeb) {\n if (accessible) viewProps.accessible = accessible\n if (accessibilityRole) viewProps.accessibilityRole = accessibilityRole\n }\n\n if (isWeb && !asChild) {\n // from react-native-web\n rnw.useResponderEvents(hostRef, {\n onMoveShouldSetResponder,\n onMoveShouldSetResponderCapture,\n onResponderEnd,\n onResponderGrant,\n onResponderMove,\n onResponderReject,\n onResponderRelease,\n onResponderStart,\n onResponderTerminate,\n onResponderTerminationRequest,\n onScrollShouldSetResponder,\n onScrollShouldSetResponderCapture,\n onSelectionChangeShouldSetResponder,\n onSelectionChangeShouldSetResponderCapture,\n onStartShouldSetResponder,\n onStartShouldSetResponderCapture,\n })\n }\n\n // get the right component\n const isTaggable = !Component || typeof Component === 'string'\n\n // default to tag, fallback to component (when both strings)\n const element = isWeb ? (isTaggable ? tag || Component : Component) : Component\n const BaseTextComponent = !isWeb ? Text : element || 'span'\n const BaseViewComponent = !isWeb ? View : element || (hasTextAncestor ? 'span' : 'div')\n let ViewComponent = isText\n ? (isAnimated ? AnimatedText || Text : null) || BaseTextComponent\n : (isAnimated ? AnimatedView || View : null) || BaseViewComponent\n\n ViewComponent = Component || ViewComponent\n\n let styles: any[]\n\n const isStringElement = typeof ViewComponent === 'string'\n const animationStyles = state.animation ? state.animation.style : null\n\n if (isStringElement && shouldAvoidClasses) {\n styles = {\n ...defaultNativeStyle,\n ...animationStyles,\n ...medias,\n }\n } else {\n styles = [\n isWeb ? null : defaultNativeStyleSheet ? (defaultNativeStyleSheet.base as ViewStyle) : null,\n // parity w react-native-web, only for text in text\n // TODO this should be able to be done w css to replicate after extraction:\n // (.text .text { display: inline-flex; }) (but if they set display we'd need stronger precendence)\n // isText && hasTextAncestor && isWeb ? { display: 'inline-flex' } : null,\n // style,\n animationStyles ? animationStyles : style,\n medias,\n ]\n if (!animationStyles) {\n !state.mounted && addPseudoToStyles(styles, 'enterStyle', pseudos)\n state.hover && addPseudoToStyles(styles, 'hoverStyle', pseudos)\n state.focus && addPseudoToStyles(styles, 'focusStyle', pseudos)\n state.press && addPseudoToStyles(styles, 'pressStyle', pseudos)\n }\n }\n\n if (isWeb) {\n if (!shouldAvoidClasses) {\n const fontFamilyName = isText\n ? props.fontFamily || staticConfig.defaultProps.fontFamily\n : null\n const fontFamily =\n fontFamilyName && fontFamilyName[0] === '$' ? fontFamilyName.slice(1) : null\n const classList = [\n componentName ? componentClassName : '',\n fontFamily ? `font_${fontFamily}` : '',\n theme.className,\n classNames ? Object.values(classNames).join(' ') : '',\n ]\n\n // TODO restore this to isText classList\n // hasTextAncestor === true && cssText.textHasAncestor,\n // TODO MOVE TO VARIANTS [number] [any]\n // numberOfLines != null && numberOfLines > 1 && cssText.textMultiLine,\n\n const className = classList.join(' ')\n if (process.env.NODE_ENV === 'development') {\n if (props['debug']) {\n // prettier-ignore\n console.log(' \u00BB className', { isStringElement, pseudos, state, classNames, propsClassName: props.className, style, classList, className: className.trim().split(' '), themeClassName: theme.className, values: Object.fromEntries(Object.entries(classNames).map(([k, v]) => [v, getAllSelectors()[v]])) })\n }\n }\n viewProps.className = className\n viewProps.style = animationStyles\n } else {\n viewProps.style = styles\n }\n } else {\n viewProps.style = styles\n }\n\n if (pointerEvents) {\n viewProps.pointerEvents = pointerEvents\n }\n\n if (isWeb) {\n // from react-native-web\n const platformMethodsRef = rnw.usePlatformMethods(viewProps)\n const setRef = rnw.useMergeRefs(hostRef, platformMethodsRef, forwardedRef)\n\n if (!isAnimated) {\n // @ts-ignore\n viewProps.ref = setRef\n } else {\n if (forwardedRef) {\n // @ts-ignore\n viewProps.ref = forwardedRef\n }\n }\n\n if (props.href != null && hrefAttrs != null) {\n const { download, rel, target } = hrefAttrs\n if (download != null) {\n viewProps.download = download\n }\n if (rel != null) {\n viewProps.rel = rel\n }\n if (typeof target === 'string') {\n viewProps.target = target.charAt(0) !== '_' ? '_' + target : target\n }\n }\n } else {\n if (forwardedRef) {\n // @ts-ignore\n viewProps.ref = forwardedRef\n }\n }\n\n // TODO need to loop active variants and see if they have matchin pseudos and apply as well\n const initialPseudos = initialSplitStyles.pseudos\n const attachPress = !!(\n (pseudos && pseudos.pressStyle) ||\n (initialPseudos && initialPseudos.pressStyle) ||\n onPress ||\n onPressOut ||\n onPressIn ||\n onClick\n )\n\n const isTouch = useIsTouchDevice()\n const isHoverable = isWeb && !isTouch\n const attachHover =\n isHoverable &&\n !!((pseudos && pseudos.hoverStyle) || onHoverIn || onHoverOut || onMouseEnter || onMouseLeave)\n\n const handlesPressEvents = !isStringElement && !asChild\n const pressKey = handlesPressEvents ? 'onPress' : 'onClick'\n const pressInKey = handlesPressEvents ? 'onPressIn' : 'onMouseDown'\n const pressOutKey = handlesPressEvents ? 'onPressOut' : 'onMouseUp'\n\n // check presence to prevent reparenting bugs, allows for onPress={x ? function : undefined} usage\n // while avoiding reparenting...\n // once proper reparenting is supported, we can remove this and use that...\n const shouldAttach =\n !asChild &&\n (attachPress ||\n attachHover ||\n 'pressStyle' in props ||\n 'onPress' in props ||\n 'onPressIn' in props ||\n 'onPressOut' in props ||\n (isWeb &&\n ('hoverStyle' in props ||\n 'onHoverIn' in props ||\n 'onHoverOut' in props ||\n 'onMouseEnter' in props ||\n 'onMouseLeave' in props)))\n\n const unPress = useCallback(() => {\n if (!internal.current!.isMounted) return\n setStateShallow({\n press: false,\n pressIn: false,\n })\n }, [])\n\n const events = shouldAttach\n ? {\n [pressOutKey]: attachPress\n ? (e) => {\n unPress()\n onPressOut?.(e)\n }\n : undefined,\n ...(isHoverable && {\n onMouseEnter: attachHover\n ? (e) => {\n let next: Partial<typeof state> = {}\n if (attachHover) {\n next.hover = true\n }\n if (state.pressIn) {\n next.press = true\n }\n if (Object.keys(next).length) {\n setStateShallow(next)\n }\n onHoverIn?.(e)\n onMouseEnter?.(e)\n }\n : undefined,\n onMouseLeave: attachHover\n ? (e) => {\n let next: Partial<typeof state> = {}\n mouseUps.add(unPress)\n if (attachHover) {\n next.hover = false\n }\n if (state.pressIn) {\n next.press = false\n next.pressIn = false\n }\n if (Object.keys(next).length) {\n setStateShallow(next)\n }\n onHoverOut?.(e)\n onMouseLeave?.(e)\n }\n : undefined,\n }),\n [pressInKey]: attachPress\n ? (e) => {\n setStateShallow({\n press: true,\n pressIn: true,\n })\n onPressIn?.(e)\n onMouseDown?.(e)\n if (isWeb) {\n mouseUps.add(unPress)\n }\n }\n : null,\n [pressKey]: attachPress\n ? (e) => {\n unPress()\n onClick?.(e)\n onPress?.(e)\n }\n : null,\n }\n : null\n\n const childEls =\n !children || asChild\n ? children\n : wrapThemeManagerContext(\n spacedChildren({\n children,\n space,\n flexDirection: props.flexDirection || staticConfig.defaultProps?.flexDirection,\n isZStack,\n }),\n getThemeManagerIfChanged(theme)\n )\n\n let content: any\n\n // replicate react-native-web's `createElement`\n if (isWeb) {\n if (staticConfig.isReactNativeWeb) {\n viewProps.dataSet = {\n ...viewProps.dataSet,\n className: viewProps.className,\n }\n } else {\n const rnProps = rnw.createDOMProps(viewProps)\n const className =\n rnProps.className && rnProps.className !== viewProps.className\n ? `${rnProps.className} ${viewProps.className}`\n : viewProps.className\n\n // additive\n Object.assign(viewProps, rnProps)\n\n // we already handle Text/View properly\n if (className) {\n viewProps.className = className\n }\n }\n }\n\n if (asChild) {\n ViewComponent = Slot\n const onlyChild = React.Children.only(children)\n Object.assign(viewProps, onlyChild.props)\n }\n\n // EVENTS: web\n if (isWeb) {\n const [pressableProps] = usePressable(\n events\n ? {\n disabled,\n ...(hitSlop && {\n hitSlop,\n }),\n onPressOut: events[pressOutKey],\n onPressIn: events[pressInKey],\n onPress: events[pressKey],\n }\n : {\n disabled: true,\n }\n )\n if (events) {\n if (handlesPressEvents) {\n Object.assign(viewProps, pressableProps)\n } else {\n Object.assign(viewProps, events)\n }\n }\n }\n\n content = createElement(ViewComponent, viewProps, childEls)\n\n // EVENTS native\n // native just wrap in <Pressable />\n if (!isWeb) {\n if (attachPress && events) {\n content = (\n // bugfix: on native <Pressable /> pressing down and then moving finger off\n // doesn't actually turn off press styles\n // but react-native-gesture-handler doesn't pass GestureResponderEvent...\n <Pressable onPressIn={events[pressInKey]} onPress={events[pressKey]}>\n <BaseButton\n onActiveStateChange={(isActive) => {\n if (!isActive) {\n unPress()\n }\n }}\n >\n {content}\n </BaseButton>\n </Pressable>\n )\n }\n }\n\n if (isWeb && events && attachHover) {\n content = (\n <span\n className=\"tui_Hoverable\"\n style={{\n display: 'contents',\n }}\n onMouseEnter={events.onMouseEnter}\n onMouseLeave={events.onMouseLeave}\n >\n {content}\n </span>\n )\n }\n\n if (process.env.NODE_ENV === 'development') {\n if (props['debug']) {\n // prettier-ignore\n console.log(' \u00BB ', { propsIn: { ...props }, propsOut: { ...viewProps }, state, splitStyles, animationStyles, isStringElement, classNamesIn: props.className?.split(' '), classNamesOut: viewProps.className?.split(' '), events, shouldAttach, ViewComponent, viewProps, styles, pseudos, content, childEls, shouldAvoidClasses, avoidClasses, animation: props.animation, style, defaultNativeStyle, initialSplitStyles, ...(typeof window !== 'undefined' ? { theme, themeState: theme.__state, themeClassName: theme.className, staticConfig, tamaguiConfig } : null) })\n }\n }\n\n if (features.length) {\n return (\n <>\n {features}\n {content}\n </>\n )\n }\n\n return content\n })\n\n component.displayName = staticConfig.componentName\n\n // Once configuration is run and all components are registered\n // get default props + className and analyze styles\n onConfiguredOnce((conf) => {\n if (process.env.IS_STATIC === 'is_static') {\n // in static mode we just use these to lookup configuration\n return\n }\n\n tamaguiConfig = conf\n\n // do this to make sure shorthands don't duplicate with.. longhands\n mergeShorthands(staticConfig, tamaguiConfig)\n\n avoidClasses = !!tamaguiConfig.animations?.avoidClasses\n AnimatedText = tamaguiConfig.animations?.Text\n AnimatedView = tamaguiConfig?.animations?.View\n initialTheme =\n initialTheme ||\n proxyThemeVariables(conf.themes[conf.defaultTheme || Object.keys(conf.themes)[0]])\n initialSplitStyles = insertSplitStyles(staticConfig.defaultProps, staticConfig, initialTheme, {\n mounted: true,\n hover: false,\n press: false,\n pressIn: false,\n focus: false,\n resolveVariablesAs: 'both',\n keepVariantsAsProps: true,\n })\n\n // @ts-ignore\n // this ruins the prop order!!!\n // can't believe it but it puts default props after props?\n const defaults = {\n ...component.defaultProps,\n ...initialSplitStyles.viewProps,\n }\n\n defaultNativeStyle = {}\n\n const validStyles = staticConfig.validStyles || stylePropsView\n\n // split - keep variables on props to be processed using theme values at runtime (native)\n for (const key in staticConfig.defaultProps) {\n const val = staticConfig.defaultProps[key]\n if ((typeof val === 'string' && val[0] === '$') || !validStyles[key]) {\n defaults[key] = val\n } else {\n defaultNativeStyle[key] = val\n }\n }\n\n defaultNativeStyleSheet = StyleSheet.create({\n base: defaultNativeStyle,\n })\n\n if (Object.keys(defaults).length) {\n tamaguiDefaultProps = defaults\n }\n\n // add debug logs\n if (process.env.NODE_ENV === 'development' && staticConfig.defaultProps?.debug) {\n if (process.env.IS_STATIC !== 'is_static') {\n console.log(`\uD83D\uDC1B [${staticConfig.componentName || 'Component'}]`, {\n staticConfig,\n initialSplitStyles,\n tamaguiDefaultProps,\n defaultNativeStyle,\n defaults,\n })\n }\n }\n })\n\n let res: TamaguiComponent<ComponentPropTypes, Ref, BaseProps> = component as any\n\n if (configIn.memo) {\n res = memo(res) as any\n }\n\n res['staticConfig'] = {\n validStyles: staticConfig.validStyles || stylePropsView,\n ...staticConfig,\n }\n\n if (process.env.NODE_ENV === 'development') {\n res['whyDidYouRender'] = true\n }\n\n // res.extractable HoC\n res['extractable'] = (Component: any, conf?: Partial<StaticConfig>) => {\n Component['staticConfig'] = extendStaticConfig(\n {\n Component,\n ...conf,\n neverFlatten: true,\n defaultProps: {\n ...Component.defaultProps,\n ...conf?.defaultProps,\n },\n },\n res\n )\n return Component\n }\n\n return res\n}\n\n// dont used styled() here to avoid circular deps\n// keep inline to avoid circular deps\n\nexport const Spacer = createComponent<\n Omit<StackProps, 'flex' | 'direction'> & {\n size?: number | SpaceTokens\n flex?: boolean | number\n direction?: 'horizontal' | 'vertical'\n }\n>({\n memo: true,\n componentName: 'Spacer',\n defaultProps: {\n ...stackDefaultStyles,\n size: true,\n },\n variants: {\n size: {\n '...size': (size, { tokens }) => {\n size = size == true ? '$true' : size\n const sizePx = tokens.size[size] ?? size\n return {\n width: sizePx,\n height: sizePx,\n minWidth: sizePx,\n minHeight: sizePx,\n }\n },\n },\n\n flex: {\n true: {\n flex: 1,\n },\n },\n\n direction: {\n horizontal: {\n height: 0,\n minHeight: 0,\n },\n vertical: {\n width: 0,\n minWidth: 0,\n },\n },\n },\n\n defaultVariants: {\n direction: 'horizontal',\n },\n})\n\nexport function spacedChildren({\n isZStack,\n children,\n space,\n flexDirection,\n spaceFlex,\n}: {\n isZStack?: boolean\n children: any\n space?: any\n spaceFlex?: boolean | number\n flexDirection?: ViewStyle['flexDirection']\n}) {\n const childrenList = Array.isArray(children) ? children : Children.toArray(children)\n const len = childrenList.length\n if (len <= 1) {\n return childrenList\n }\n const final: any[] = []\n for (const [index, child] of childrenList.entries()) {\n if (\n child === null ||\n child === undefined ||\n child === false ||\n (Array.isArray(child) && child.length === 0)\n ) {\n continue\n }\n\n if (!child || (child['key'] && !isZStack)) {\n final.push(child)\n } else {\n final.push(\n <Fragment key={index}>{isZStack ? <AbsoluteFill>{child}</AbsoluteFill> : child}</Fragment>\n )\n }\n\n // allows for custom visually hidden components that dont insert spacing\n if (child['type']?.['isVisuallyHidden']) {\n continue\n }\n\n const next = childrenList[index + 1]\n\n if (next && space) {\n final.push(\n <Spacer\n key={`_${index}_spacer`}\n direction={\n flexDirection === 'row' || flexDirection === 'row-reverse' ? 'horizontal' : 'vertical'\n }\n size={space}\n {...(spaceFlex && {\n flex: spaceFlex,\n })}\n />\n )\n }\n }\n\n return final\n}\n\nexport function AbsoluteFill(props: any) {\n return isWeb ? (\n <div\n style={\n {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n } as any\n }\n >\n {props.children}\n </div>\n ) : (\n <View style={StyleSheet.absoluteFill}>{props.child}</View>\n )\n}\n\n// this can be done with CSS entirely right?\n// const shouldWrapTextAncestor = isWeb && isText && !hasTextAncestor\n// if (shouldWrapTextAncestor) {\n// // from react-native-web\n// content = createElement(TextAncestorContext.Provider, { value: true }, content)\n// }\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -133,8 +133,9 @@ function createTamagui(config) {
|
|
|
133
133
|
selectors.push(`${(parents.length > 1 ? parents.slice(1) : parents).join(" ")} ${childSelector}`);
|
|
134
134
|
});
|
|
135
135
|
}
|
|
136
|
-
|
|
137
|
-
|
|
136
|
+
const rootSep = config.themeClassNameOnRoot ? "" : " ";
|
|
137
|
+
cssRules.push(`${selectors.map((x) => `:root${rootSep}${x}`).join(", ")} {${vars}}`);
|
|
138
|
+
if (config.shouldAddPrefersColorThemes ?? true) {
|
|
138
139
|
if (isDarkOrLightBase) {
|
|
139
140
|
cssRules.push(`@media(prefers-color-scheme: ${isDark ? "dark" : "light"}) {
|
|
140
141
|
body { background:${theme.background}; color: ${theme.color} }
|