@tamagui/core 1.0.1-beta.141 → 1.0.1-beta.144
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/Tamagui.js +2 -2
- package/dist/cjs/Tamagui.js.map +2 -2
- package/dist/cjs/addTheme.js +28 -22
- package/dist/cjs/addTheme.js.map +2 -2
- package/dist/cjs/config.js +75 -0
- package/dist/cjs/config.js.map +7 -0
- package/dist/cjs/constants/platform.js +7 -1
- package/dist/cjs/constants/platform.js.map +2 -2
- package/dist/cjs/constants/platform.native.js +62 -0
- package/dist/cjs/constants/platform.native.js.map +7 -0
- package/dist/cjs/createComponent.js +71 -58
- package/dist/cjs/createComponent.js.map +2 -2
- package/dist/cjs/createComponent.server.js +431 -0
- package/dist/cjs/createComponent.server.js.map +7 -0
- package/dist/cjs/createTamagui.js +10 -8
- package/dist/cjs/createTamagui.js.map +2 -2
- package/dist/cjs/createVariable.js +6 -12
- package/dist/cjs/createVariable.js.map +2 -2
- package/dist/cjs/createVariables.js +5 -2
- package/dist/cjs/createVariables.js.map +2 -2
- package/dist/cjs/helpers/RNComponents.js +11 -11
- package/dist/cjs/helpers/RNComponents.js.map +2 -2
- package/dist/cjs/helpers/ThemeManager.js +7 -9
- package/dist/cjs/helpers/ThemeManager.js.map +2 -2
- package/dist/cjs/helpers/assignNativePropsToWeb.js +0 -1
- package/dist/cjs/helpers/assignNativePropsToWeb.js.map +2 -2
- package/dist/cjs/helpers/createPropMapper.js +3 -3
- package/dist/cjs/helpers/createPropMapper.js.map +2 -2
- package/dist/cjs/helpers/expandStyles.js +4 -4
- package/dist/cjs/helpers/expandStyles.js.map +2 -2
- package/dist/cjs/helpers/getAnimationDriver.js +32 -0
- package/dist/cjs/helpers/getAnimationDriver.js.map +7 -0
- package/dist/cjs/helpers/getExpandedShorthands.js +3 -3
- package/dist/cjs/helpers/getExpandedShorthands.js.map +2 -2
- package/dist/cjs/helpers/getFont.js +1 -1
- package/dist/cjs/helpers/getFont.js.map +2 -2
- package/dist/cjs/helpers/getSize.js +2 -2
- package/dist/cjs/helpers/getSize.js.map +2 -2
- package/dist/cjs/helpers/getSplitStyles.js +12 -13
- package/dist/cjs/helpers/getSplitStyles.js.map +2 -2
- package/dist/cjs/helpers/getStylesAtomic.js +6 -4
- package/dist/cjs/helpers/getStylesAtomic.js.map +2 -2
- package/dist/cjs/helpers/getVariantExtras.js +2 -2
- package/dist/cjs/helpers/getVariantExtras.js.map +2 -2
- package/dist/cjs/helpers/normalizeColor.js +2 -2
- package/dist/cjs/helpers/normalizeColor.js.map +2 -2
- package/dist/cjs/helpers/normalizeValueWithProperty.js.map +2 -2
- package/dist/cjs/helpers/useAnimationDriver.js +2 -0
- package/dist/cjs/helpers/useAnimationDriver.js.map +7 -0
- package/dist/cjs/hooks/getThemeUnwrapped.js +2 -0
- package/dist/cjs/hooks/getThemeUnwrapped.js.map +2 -2
- package/dist/cjs/hooks/useAnimationDriver.js +2 -0
- package/dist/cjs/hooks/useAnimationDriver.js.map +7 -0
- package/dist/cjs/hooks/useFeatures.js +2 -2
- package/dist/cjs/hooks/useFeatures.js.map +2 -2
- package/dist/cjs/hooks/useServerContext.js +21 -0
- package/dist/cjs/hooks/useServerContext.js.map +7 -0
- package/dist/cjs/hooks/useServerHooks.js +36 -0
- package/dist/cjs/hooks/useServerHooks.js.map +7 -0
- package/dist/cjs/hooks/useTheme.js +71 -41
- package/dist/cjs/hooks/useTheme.js.map +2 -2
- package/dist/cjs/index.js +7 -6
- package/dist/cjs/index.js.map +2 -2
- package/dist/cjs/injectStyles.js +40 -0
- package/dist/cjs/injectStyles.js.map +7 -0
- package/dist/cjs/insertFont.js +2 -2
- package/dist/cjs/insertFont.js.map +2 -2
- package/dist/cjs/styled.js +11 -1
- package/dist/cjs/styled.js.map +2 -2
- package/dist/cjs/types.js.map +1 -1
- package/dist/cjs/views/TamaguiProvider.js +6 -1
- package/dist/cjs/views/TamaguiProvider.js.map +2 -2
- package/dist/cjs/views/ThemeProvider.js +9 -5
- package/dist/cjs/views/ThemeProvider.js.map +2 -2
- package/dist/esm/Tamagui.js +1 -1
- package/dist/esm/Tamagui.js.map +1 -1
- package/dist/esm/addTheme.js +27 -21
- package/dist/esm/addTheme.js.map +2 -2
- package/dist/esm/config.js +43 -0
- package/dist/esm/config.js.map +7 -0
- package/dist/esm/constants/platform.js +5 -1
- package/dist/esm/constants/platform.js.map +2 -2
- package/dist/esm/constants/platform.native.js +28 -0
- package/dist/esm/constants/platform.native.js.map +7 -0
- package/dist/esm/createComponent.js +71 -60
- package/dist/esm/createComponent.js.map +2 -2
- package/dist/esm/createComponent.server.js +408 -0
- package/dist/esm/createComponent.server.js.map +7 -0
- package/dist/esm/createTamagui.js +7 -5
- package/dist/esm/createTamagui.js.map +2 -2
- package/dist/esm/createVariable.js +6 -12
- package/dist/esm/createVariable.js.map +2 -2
- package/dist/esm/createVariables.js +5 -2
- package/dist/esm/createVariables.js.map +2 -2
- package/dist/esm/helpers/RNComponents.js +11 -8
- package/dist/esm/helpers/RNComponents.js.map +2 -2
- package/dist/esm/helpers/ThemeManager.js +6 -8
- package/dist/esm/helpers/ThemeManager.js.map +2 -2
- package/dist/esm/helpers/assignNativePropsToWeb.js +0 -1
- package/dist/esm/helpers/assignNativePropsToWeb.js.map +2 -2
- package/dist/esm/helpers/createPropMapper.js +2 -2
- package/dist/esm/helpers/createPropMapper.js.map +2 -2
- package/dist/esm/helpers/expandStyles.js +3 -3
- package/dist/esm/helpers/expandStyles.js.map +2 -2
- package/dist/esm/helpers/getAnimationDriver.js +8 -0
- package/dist/esm/helpers/getAnimationDriver.js.map +7 -0
- package/dist/esm/helpers/getExpandedShorthands.js +2 -2
- package/dist/esm/helpers/getExpandedShorthands.js.map +2 -2
- package/dist/esm/helpers/getFont.js +1 -1
- package/dist/esm/helpers/getFont.js.map +2 -2
- package/dist/esm/helpers/getSize.js +1 -1
- package/dist/esm/helpers/getSize.js.map +1 -1
- package/dist/esm/helpers/getSplitStyles.js +12 -13
- package/dist/esm/helpers/getSplitStyles.js.map +2 -2
- package/dist/esm/helpers/getStylesAtomic.js +5 -3
- package/dist/esm/helpers/getStylesAtomic.js.map +2 -2
- package/dist/esm/helpers/getVariantExtras.js +1 -1
- package/dist/esm/helpers/getVariantExtras.js.map +1 -1
- package/dist/esm/helpers/normalizeColor.js +1 -1
- package/dist/esm/helpers/normalizeColor.js.map +1 -1
- package/dist/esm/helpers/normalizeValueWithProperty.js.map +2 -2
- package/dist/esm/helpers/useAnimationDriver.js +1 -0
- package/dist/esm/helpers/useAnimationDriver.js.map +7 -0
- package/dist/esm/hooks/getThemeUnwrapped.js +2 -0
- package/dist/esm/hooks/getThemeUnwrapped.js.map +2 -2
- package/dist/esm/hooks/useAnimationDriver.js +1 -0
- package/dist/esm/hooks/useAnimationDriver.js.map +7 -0
- package/dist/esm/hooks/useFeatures.js +1 -1
- package/dist/esm/hooks/useFeatures.js.map +2 -2
- package/dist/esm/hooks/useServerContext.js +4 -0
- package/dist/esm/hooks/useServerContext.js.map +7 -0
- package/dist/esm/hooks/useServerHooks.js +11 -0
- package/dist/esm/hooks/useServerHooks.js.map +7 -0
- package/dist/esm/hooks/useTheme.js +72 -42
- package/dist/esm/hooks/useTheme.js.map +2 -2
- package/dist/esm/index.js +2 -1
- package/dist/esm/index.js.map +2 -2
- package/dist/esm/injectStyles.js +16 -0
- package/dist/esm/injectStyles.js.map +7 -0
- package/dist/esm/insertFont.js +1 -1
- package/dist/esm/insertFont.js.map +1 -1
- package/dist/esm/styled.js +11 -1
- package/dist/esm/styled.js.map +2 -2
- package/dist/esm/views/TamaguiProvider.js +7 -2
- package/dist/esm/views/TamaguiProvider.js.map +2 -2
- package/dist/esm/views/ThemeProvider.js +9 -5
- package/dist/esm/views/ThemeProvider.js.map +2 -2
- package/package.json +35 -14
- package/src/Tamagui.ts +1 -1
- package/src/addTheme.ts +33 -21
- package/src/{conf.ts → config.ts} +4 -0
- package/src/constants/platform.native.ts +14 -0
- package/src/constants/platform.ts +12 -1
- package/src/createComponent.tsx +164 -148
- package/src/createTamagui.ts +11 -5
- package/src/createVariable.ts +8 -25
- package/src/createVariables.ts +5 -2
- package/src/helpers/RNComponents.tsx +13 -13
- package/src/helpers/ThemeManager.tsx +15 -12
- package/src/helpers/assignNativePropsToWeb.tsx +0 -1
- package/src/helpers/createPropMapper.ts +2 -2
- package/src/helpers/expandStyles.ts +4 -3
- package/src/helpers/getAnimationDriver.tsx +5 -0
- package/src/helpers/getExpandedShorthands.ts +2 -2
- package/src/helpers/getFont.tsx +1 -1
- package/src/helpers/getSize.ts +1 -1
- package/src/helpers/getSplitStyles.tsx +12 -13
- package/src/helpers/getStylesAtomic.ts +6 -3
- package/src/helpers/getVariantExtras.tsx +2 -2
- package/src/helpers/normalizeColor.ts +1 -1
- package/src/helpers/normalizeValueWithProperty.ts +2 -0
- package/src/hooks/getThemeUnwrapped.tsx +1 -0
- package/src/hooks/useFeatures.tsx +2 -1
- package/src/hooks/useServerHooks.tsx +13 -0
- package/src/hooks/useTheme.tsx +94 -48
- package/src/index.ts +2 -1
- package/src/injectStyles.ts +20 -0
- package/src/insertFont.ts +1 -1
- package/src/styled.tsx +15 -1
- package/src/types.tsx +33 -0
- package/src/views/TamaguiProvider.tsx +11 -4
- package/src/views/ThemeProvider.tsx +9 -6
- package/types/config.d.ts +27 -0
- package/types/constants/platform.d.ts +1 -0
- package/types/constants/platform.native.d.ts +13 -0
- package/types/createComponent.server.d.ts +36 -0
- package/types/createVariable.d.ts +1 -2
- package/types/helpers/RNComponents.d.ts +1 -1
- package/types/helpers/ThemeManager.d.ts +2 -8
- package/types/helpers/getAnimationDriver.d.ts +6 -0
- package/types/helpers/useAnimationDriver.d.ts +1 -0
- package/types/hooks/useAnimationDriver.d.ts +1 -0
- package/types/hooks/useServerContext.d.ts +2 -0
- package/types/hooks/useServerHooks.d.ts +4 -0
- package/types/hooks/useTheme.d.ts +5 -21
- package/types/index.d.ts +2 -1
- package/types/injectStyles.d.ts +7 -0
- package/types/types.d.ts +23 -0
- package/types/views/TamaguiProvider.d.ts +1 -1
- package/types/views/ThemeProvider.d.ts +0 -1
|
@@ -0,0 +1,431 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
|
|
21
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
22
|
+
var createComponent_server_exports = {};
|
|
23
|
+
__export(createComponent_server_exports, {
|
|
24
|
+
Spacer: () => Spacer,
|
|
25
|
+
Unspaced: () => Unspaced,
|
|
26
|
+
accessibilityRoleToWebRole: () => accessibilityRoleToWebRole,
|
|
27
|
+
createComponent: () => createComponent,
|
|
28
|
+
mouseUps: () => mouseUps,
|
|
29
|
+
processIDRefList: () => processIDRefList,
|
|
30
|
+
spacedChildren: () => spacedChildren
|
|
31
|
+
});
|
|
32
|
+
module.exports = __toCommonJS(createComponent_server_exports);
|
|
33
|
+
var import_helpers = require("@tamagui/helpers");
|
|
34
|
+
var import_use_force_update = require("@tamagui/use-force-update");
|
|
35
|
+
var import_react = __toESM(require("react"));
|
|
36
|
+
var import_react_native = require("react-native");
|
|
37
|
+
var import_conf = require("./conf");
|
|
38
|
+
var import_constants = require("./constants/constants");
|
|
39
|
+
var import_platform = require("./constants/platform");
|
|
40
|
+
var import_FontLanguageContext = require("./contexts/FontLanguageContext");
|
|
41
|
+
var import_TextAncestorContext = require("./contexts/TextAncestorContext");
|
|
42
|
+
var import_extendStaticConfig = require("./helpers/extendStaticConfig");
|
|
43
|
+
var import_getSplitStyles = require("./helpers/getSplitStyles");
|
|
44
|
+
var import_mergeProps = require("./helpers/mergeProps");
|
|
45
|
+
var import_proxyThemeVariables = require("./helpers/proxyThemeVariables");
|
|
46
|
+
var import_useTheme = require("./hooks/useTheme");
|
|
47
|
+
const import_meta = {};
|
|
48
|
+
import_react.default["keep"];
|
|
49
|
+
const isRSC = import_meta.env.SSR;
|
|
50
|
+
const defaultComponentState = Object.freeze({
|
|
51
|
+
hover: false,
|
|
52
|
+
press: false,
|
|
53
|
+
pressIn: false,
|
|
54
|
+
focus: false,
|
|
55
|
+
mounted: false,
|
|
56
|
+
animation: null
|
|
57
|
+
});
|
|
58
|
+
const mouseUps = /* @__PURE__ */ new Set();
|
|
59
|
+
if (typeof document !== "undefined") {
|
|
60
|
+
const cancelTouches = () => {
|
|
61
|
+
mouseUps.forEach((x) => x());
|
|
62
|
+
mouseUps.clear();
|
|
63
|
+
};
|
|
64
|
+
document.addEventListener("mouseup", cancelTouches);
|
|
65
|
+
document.addEventListener("touchend", cancelTouches);
|
|
66
|
+
document.addEventListener("touchcancel", cancelTouches);
|
|
67
|
+
}
|
|
68
|
+
function mergeShorthands({ defaultProps }, { shorthands }) {
|
|
69
|
+
for (const key in defaultProps) {
|
|
70
|
+
defaultProps[shorthands[key] || key] = defaultProps[key];
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
let initialTheme;
|
|
74
|
+
let config;
|
|
75
|
+
function createComponent(configIn, ParentComponent) {
|
|
76
|
+
const staticConfig = (() => {
|
|
77
|
+
const next = (0, import_extendStaticConfig.extendStaticConfig)(configIn, ParentComponent);
|
|
78
|
+
if ("parsed" in next) {
|
|
79
|
+
return next;
|
|
80
|
+
} else {
|
|
81
|
+
return (0, import_extendStaticConfig.parseStaticConfig)(next);
|
|
82
|
+
}
|
|
83
|
+
})();
|
|
84
|
+
const defaultComponentClassName = `is_${staticConfig.componentName}`;
|
|
85
|
+
let tamaguiConfig;
|
|
86
|
+
let AnimatedText;
|
|
87
|
+
let AnimatedView;
|
|
88
|
+
let avoidClasses = true;
|
|
89
|
+
let defaultNativeStyle;
|
|
90
|
+
let defaultNativeStyleSheet;
|
|
91
|
+
let tamaguiDefaultProps;
|
|
92
|
+
let initialSplitStyles;
|
|
93
|
+
const component = (0, import_react.forwardRef)((propsIn, forwardedRef) => {
|
|
94
|
+
let props;
|
|
95
|
+
if (tamaguiDefaultProps && !propsIn.asChild) {
|
|
96
|
+
props = (0, import_mergeProps.mergeProps)(tamaguiDefaultProps, propsIn)[0];
|
|
97
|
+
} else {
|
|
98
|
+
props = propsIn;
|
|
99
|
+
}
|
|
100
|
+
const { Component, isText, isZStack } = staticConfig;
|
|
101
|
+
const componentName = props.componentName || staticConfig.componentName;
|
|
102
|
+
const componentClassName = props.asChild ? "" : props.componentName ? `is_${props.componentName}` : defaultComponentClassName;
|
|
103
|
+
if (process.env.NODE_ENV === "development") {
|
|
104
|
+
if (props["debug"]) {
|
|
105
|
+
const name = `${componentName || (Component == null ? void 0 : Component.displayName) || (Component == null ? void 0 : Component.name) || "[Unnamed Component]"}`;
|
|
106
|
+
const banner = `${name} ${propsIn["data-is"] || ""}`;
|
|
107
|
+
console.group(`%c \u{1F41B} ${banner}`, "background: yellow;");
|
|
108
|
+
console.log("props", propsIn);
|
|
109
|
+
if (props["debug"] === "break") {
|
|
110
|
+
debugger;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
const forceUpdate = (0, import_use_force_update.useForceUpdate)();
|
|
115
|
+
config = config || (0, import_conf.getConfig)();
|
|
116
|
+
const theme = (0, import_useTheme.useTheme)(props.theme, componentName, props, forceUpdate);
|
|
117
|
+
const states = isRSC ? [defaultComponentState, null] : (0, import_react.useState)(defaultComponentState);
|
|
118
|
+
const state = propsIn.forceStyle ? { ...states[0], [propsIn.forceStyle]: true } : states[0];
|
|
119
|
+
const shouldAvoidClasses = !!(props.animation && avoidClasses);
|
|
120
|
+
const shouldForcePseudo = !!propsIn.forceStyle;
|
|
121
|
+
const hasTextAncestor = !!(import_platform.isWeb && isText ? (0, import_react.useContext)(import_TextAncestorContext.TextAncestorContext) : false);
|
|
122
|
+
const splitStyleState = !shouldAvoidClasses && !shouldForcePseudo ? {
|
|
123
|
+
...state,
|
|
124
|
+
hasTextAncestor,
|
|
125
|
+
dynamicStylesInline: true
|
|
126
|
+
} : {
|
|
127
|
+
...state,
|
|
128
|
+
noClassNames: true,
|
|
129
|
+
dynamicStylesInline: true,
|
|
130
|
+
hasTextAncestor,
|
|
131
|
+
resolveVariablesAs: "value"
|
|
132
|
+
};
|
|
133
|
+
const languageContext = isRSC ? null : (0, import_react.useContext)(import_FontLanguageContext.FontLanguageContext);
|
|
134
|
+
const splitStyles = (0, import_getSplitStyles.useSplitStyles)(props, staticConfig, theme, splitStyleState, props.asChild ? null : initialSplitStyles == null ? void 0 : initialSplitStyles.classNames, languageContext || void 0, props["debug"]);
|
|
135
|
+
console.log("hi2");
|
|
136
|
+
return propsIn.children;
|
|
137
|
+
});
|
|
138
|
+
if (staticConfig.componentName) {
|
|
139
|
+
component.displayName = staticConfig.componentName;
|
|
140
|
+
}
|
|
141
|
+
(0, import_conf.onConfiguredOnce)((conf) => {
|
|
142
|
+
if (isRSC)
|
|
143
|
+
return;
|
|
144
|
+
if (process.env.IS_STATIC === "is_static")
|
|
145
|
+
return;
|
|
146
|
+
tamaguiConfig = conf;
|
|
147
|
+
mergeShorthands(staticConfig, tamaguiConfig);
|
|
148
|
+
if (tamaguiConfig.animations) {
|
|
149
|
+
avoidClasses = !!tamaguiConfig.animations.avoidClasses;
|
|
150
|
+
AnimatedText = tamaguiConfig.animations.Text;
|
|
151
|
+
AnimatedView = tamaguiConfig.animations.View;
|
|
152
|
+
}
|
|
153
|
+
initialTheme = initialTheme || (0, import_proxyThemeVariables.proxyThemeVariables)(conf.themes[conf.defaultTheme || Object.keys(conf.themes)[0]]);
|
|
154
|
+
config = (0, import_conf.getConfig)();
|
|
155
|
+
let defaultPropsIn = staticConfig.defaultProps || {};
|
|
156
|
+
const parentNames = [...staticConfig.parentNames || [], staticConfig.componentName];
|
|
157
|
+
if (config.defaultProps && parentNames && staticConfig.componentName) {
|
|
158
|
+
defaultPropsIn = mergeConfigDefaultProps(staticConfig.componentName, defaultPropsIn, config.defaultProps, parentNames, conf);
|
|
159
|
+
}
|
|
160
|
+
const debug = true ? defaultPropsIn["debug"] : false;
|
|
161
|
+
if (process.env.NODE_ENV === "development" && debug === "break") {
|
|
162
|
+
debugger;
|
|
163
|
+
}
|
|
164
|
+
const [parentProps, parentClassNames] = (0, import_mergeProps.mergeProps)(defaultPropsIn, {}, true);
|
|
165
|
+
initialSplitStyles = (0, import_getSplitStyles.insertSplitStyles)(parentProps, staticConfig, initialTheme, {
|
|
166
|
+
mounted: true,
|
|
167
|
+
hover: false,
|
|
168
|
+
press: false,
|
|
169
|
+
pressIn: false,
|
|
170
|
+
focus: false,
|
|
171
|
+
resolveVariablesAs: "both",
|
|
172
|
+
keepVariantsAsProps: true
|
|
173
|
+
}, void 0, void 0, debug);
|
|
174
|
+
const [defaults, defaultsClassnames] = (0, import_mergeProps.mergeProps)(component.defaultProps, initialSplitStyles.viewProps, true);
|
|
175
|
+
initialSplitStyles.classNames = {
|
|
176
|
+
...parentClassNames,
|
|
177
|
+
...defaultsClassnames,
|
|
178
|
+
...initialSplitStyles.classNames
|
|
179
|
+
};
|
|
180
|
+
defaultNativeStyle = {};
|
|
181
|
+
const validStyles2 = staticConfig.validStyles || import_helpers.stylePropsView;
|
|
182
|
+
if (!import_platform.isWeb) {
|
|
183
|
+
for (const key in staticConfig.defaultProps) {
|
|
184
|
+
const val = staticConfig.defaultProps[key];
|
|
185
|
+
if (import_helpers.validPseudoKeys[key])
|
|
186
|
+
continue;
|
|
187
|
+
if (typeof val === "string" && val[0] === "$" || !validStyles2[key]) {
|
|
188
|
+
defaults[key] = val;
|
|
189
|
+
} else {
|
|
190
|
+
defaultNativeStyle[key] = val;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
defaultNativeStyleSheet = import_react_native.StyleSheet.create({
|
|
195
|
+
base: defaultNativeStyle
|
|
196
|
+
});
|
|
197
|
+
if (Object.keys(defaults).length) {
|
|
198
|
+
tamaguiDefaultProps = defaults;
|
|
199
|
+
}
|
|
200
|
+
if (process.env.NODE_ENV === "development" && debug) {
|
|
201
|
+
if (process.env.IS_STATIC !== "is_static") {
|
|
202
|
+
console.log(`\u{1F41B} [${staticConfig.componentName || "Component"}]`, {
|
|
203
|
+
staticConfig,
|
|
204
|
+
initialSplitStyles,
|
|
205
|
+
tamaguiDefaultProps,
|
|
206
|
+
defaultNativeStyle,
|
|
207
|
+
defaults,
|
|
208
|
+
defaultPropsIn
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
let res = component;
|
|
214
|
+
if (configIn.memo) {
|
|
215
|
+
res = (0, import_react.memo)(res);
|
|
216
|
+
}
|
|
217
|
+
res.staticConfig = {
|
|
218
|
+
validStyles: staticConfig.validStyles || import_helpers.stylePropsView,
|
|
219
|
+
...staticConfig
|
|
220
|
+
};
|
|
221
|
+
res.extractable = (Component, conf) => {
|
|
222
|
+
Component.staticConfig = (0, import_extendStaticConfig.extendStaticConfig)({
|
|
223
|
+
Component,
|
|
224
|
+
...conf,
|
|
225
|
+
neverFlatten: true,
|
|
226
|
+
isExtractable: true,
|
|
227
|
+
defaultProps: {
|
|
228
|
+
...Component.defaultProps,
|
|
229
|
+
...conf == null ? void 0 : conf.defaultProps
|
|
230
|
+
}
|
|
231
|
+
}, res);
|
|
232
|
+
return Component;
|
|
233
|
+
};
|
|
234
|
+
return res;
|
|
235
|
+
}
|
|
236
|
+
const Unspaced = (props) => {
|
|
237
|
+
return props.children;
|
|
238
|
+
};
|
|
239
|
+
Unspaced["isUnspaced"] = true;
|
|
240
|
+
const Spacer = createComponent({
|
|
241
|
+
memo: true,
|
|
242
|
+
componentName: "Spacer",
|
|
243
|
+
validStyles: import_helpers.validStyles,
|
|
244
|
+
defaultProps: {
|
|
245
|
+
...import_constants.stackDefaultStyles,
|
|
246
|
+
size: true
|
|
247
|
+
},
|
|
248
|
+
variants: {
|
|
249
|
+
size: {
|
|
250
|
+
"...size": (size, { tokens }) => {
|
|
251
|
+
size = size == true ? "$true" : size;
|
|
252
|
+
const sizePx = tokens.space[size] ?? size;
|
|
253
|
+
return {
|
|
254
|
+
width: sizePx,
|
|
255
|
+
height: sizePx,
|
|
256
|
+
minWidth: sizePx,
|
|
257
|
+
minHeight: sizePx
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
},
|
|
261
|
+
flex: {
|
|
262
|
+
true: {
|
|
263
|
+
flexGrow: 1
|
|
264
|
+
}
|
|
265
|
+
},
|
|
266
|
+
direction: {
|
|
267
|
+
horizontal: {
|
|
268
|
+
height: 0,
|
|
269
|
+
minHeight: 0
|
|
270
|
+
},
|
|
271
|
+
vertical: {
|
|
272
|
+
width: 0,
|
|
273
|
+
minWidth: 0
|
|
274
|
+
},
|
|
275
|
+
both: {}
|
|
276
|
+
}
|
|
277
|
+
},
|
|
278
|
+
defaultVariants: {
|
|
279
|
+
direction: "both"
|
|
280
|
+
}
|
|
281
|
+
});
|
|
282
|
+
function spacedChildren({
|
|
283
|
+
isZStack,
|
|
284
|
+
children,
|
|
285
|
+
space,
|
|
286
|
+
direction,
|
|
287
|
+
spaceFlex,
|
|
288
|
+
separator
|
|
289
|
+
}) {
|
|
290
|
+
const hasSpace = !!(space || spaceFlex);
|
|
291
|
+
const hasSeparator = !(separator === void 0 || separator === null);
|
|
292
|
+
if (!hasSpace && !hasSeparator && !isZStack) {
|
|
293
|
+
return children;
|
|
294
|
+
}
|
|
295
|
+
const childrenList = import_react.Children.toArray(children);
|
|
296
|
+
if (childrenList.length <= 1 && !isZStack) {
|
|
297
|
+
return childrenList;
|
|
298
|
+
}
|
|
299
|
+
const final = [];
|
|
300
|
+
for (const [index, child] of childrenList.entries()) {
|
|
301
|
+
const isEmpty = child === null || child === void 0 || Array.isArray(child) && child.length === 0;
|
|
302
|
+
if (isEmpty || !child || child["key"] && !isZStack) {
|
|
303
|
+
final.push(child);
|
|
304
|
+
} else {
|
|
305
|
+
final.push(/* @__PURE__ */ import_react.default.createElement(import_react.Fragment, {
|
|
306
|
+
key: index
|
|
307
|
+
}, isZStack ? /* @__PURE__ */ import_react.default.createElement(AbsoluteFill, null, child) : child));
|
|
308
|
+
}
|
|
309
|
+
if (isUnspaced(child) && index === 0) {
|
|
310
|
+
continue;
|
|
311
|
+
}
|
|
312
|
+
if (isZStack) {
|
|
313
|
+
continue;
|
|
314
|
+
}
|
|
315
|
+
const next = childrenList[index + 1];
|
|
316
|
+
if (next && !isUnspaced(next)) {
|
|
317
|
+
if (separator) {
|
|
318
|
+
if (hasSpace) {
|
|
319
|
+
final.push(createSpacer({
|
|
320
|
+
key: `_${index}_before_sep_spacer`,
|
|
321
|
+
direction,
|
|
322
|
+
space,
|
|
323
|
+
spaceFlex
|
|
324
|
+
}));
|
|
325
|
+
}
|
|
326
|
+
final.push(import_react.default.isValidElement(separator) ? import_react.default.cloneElement(separator, { key: `sep_${index}` }) : separator);
|
|
327
|
+
if (hasSpace) {
|
|
328
|
+
final.push(createSpacer({
|
|
329
|
+
key: `_${index}_after_sep_spacer`,
|
|
330
|
+
direction,
|
|
331
|
+
space,
|
|
332
|
+
spaceFlex
|
|
333
|
+
}));
|
|
334
|
+
}
|
|
335
|
+
} else {
|
|
336
|
+
final.push(createSpacer({
|
|
337
|
+
key: `_${index}_spacer`,
|
|
338
|
+
direction,
|
|
339
|
+
space,
|
|
340
|
+
spaceFlex
|
|
341
|
+
}));
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
return final;
|
|
346
|
+
}
|
|
347
|
+
function createSpacer({ key, direction, space, spaceFlex }) {
|
|
348
|
+
return /* @__PURE__ */ import_react.default.createElement(Spacer, {
|
|
349
|
+
key,
|
|
350
|
+
size: space,
|
|
351
|
+
direction,
|
|
352
|
+
...spaceFlex && {
|
|
353
|
+
flex: spaceFlex
|
|
354
|
+
}
|
|
355
|
+
});
|
|
356
|
+
}
|
|
357
|
+
function isUnspaced(child) {
|
|
358
|
+
var _a, _b;
|
|
359
|
+
return ((_a = child == null ? void 0 : child["type"]) == null ? void 0 : _a["isVisuallyHidden"]) || ((_b = child == null ? void 0 : child["type"]) == null ? void 0 : _b["isUnspaced"]);
|
|
360
|
+
}
|
|
361
|
+
function AbsoluteFill(props) {
|
|
362
|
+
return /* @__PURE__ */ import_react.default.createElement(import_react_native.View, {
|
|
363
|
+
pointerEvents: "box-none",
|
|
364
|
+
style: import_react_native.StyleSheet.absoluteFill
|
|
365
|
+
}, props.children);
|
|
366
|
+
}
|
|
367
|
+
function processIDRefList(idRefList) {
|
|
368
|
+
return Array.isArray(idRefList) ? idRefList.join(" ") : idRefList;
|
|
369
|
+
}
|
|
370
|
+
const accessibilityRoleToWebRole = {
|
|
371
|
+
adjustable: "slider",
|
|
372
|
+
button: "button",
|
|
373
|
+
header: "heading",
|
|
374
|
+
image: "img",
|
|
375
|
+
imagebutton: null,
|
|
376
|
+
keyboardkey: null,
|
|
377
|
+
label: null,
|
|
378
|
+
link: "link",
|
|
379
|
+
none: "presentation",
|
|
380
|
+
search: "search",
|
|
381
|
+
summary: "region",
|
|
382
|
+
text: null
|
|
383
|
+
};
|
|
384
|
+
function addPseudoToStyles(styles, initialPseudos, pseudos, name, force = false) {
|
|
385
|
+
const pseudoStyle = pseudos[name];
|
|
386
|
+
const shouldNestObject = import_platform.isWeb && name !== "enterStyle" && name !== "exitStyle";
|
|
387
|
+
const defaultPseudoStyle = initialPseudos[name];
|
|
388
|
+
const style = defaultPseudoStyle ? { ...defaultPseudoStyle, ...pseudoStyle } : pseudoStyle;
|
|
389
|
+
if (style) {
|
|
390
|
+
styles.push(shouldNestObject && !force ? { [name]: style } : style);
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
const DefaultProps = /* @__PURE__ */ new Map();
|
|
394
|
+
function mergeConfigDefaultProps(name, props, configDefaults, parentNames, conf) {
|
|
395
|
+
const len = parentNames.length;
|
|
396
|
+
let prev;
|
|
397
|
+
for (let i = 0; i < len; i++) {
|
|
398
|
+
const n = parentNames[i];
|
|
399
|
+
if (!n)
|
|
400
|
+
continue;
|
|
401
|
+
if (DefaultProps.has(n)) {
|
|
402
|
+
prev = DefaultProps.get(n);
|
|
403
|
+
continue;
|
|
404
|
+
}
|
|
405
|
+
const props2 = configDefaults[n];
|
|
406
|
+
if (!props2) {
|
|
407
|
+
if (prev) {
|
|
408
|
+
DefaultProps.set(n, prev);
|
|
409
|
+
}
|
|
410
|
+
continue;
|
|
411
|
+
}
|
|
412
|
+
prev = (0, import_mergeProps.mergeProps)(prev || {}, props2, false, conf.inverseShorthands)[0];
|
|
413
|
+
DefaultProps.set(n, prev);
|
|
414
|
+
}
|
|
415
|
+
const ourDefaultsMerged = DefaultProps.get(name);
|
|
416
|
+
if (ourDefaultsMerged) {
|
|
417
|
+
return (0, import_mergeProps.mergeProps)(props, ourDefaultsMerged, false, conf.inverseShorthands)[0];
|
|
418
|
+
}
|
|
419
|
+
return props;
|
|
420
|
+
}
|
|
421
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
422
|
+
0 && (module.exports = {
|
|
423
|
+
Spacer,
|
|
424
|
+
Unspaced,
|
|
425
|
+
accessibilityRoleToWebRole,
|
|
426
|
+
createComponent,
|
|
427
|
+
mouseUps,
|
|
428
|
+
processIDRefList,
|
|
429
|
+
spacedChildren
|
|
430
|
+
});
|
|
431
|
+
//# sourceMappingURL=createComponent.server.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/createComponent.server.tsx"],
|
|
4
|
+
"sourcesContent": ["/* eslint-disable react-hooks/rules-of-hooks */\nimport {\n composeEventHandlers,\n stylePropsView,\n validPseudoKeys,\n validStyles,\n} from '@tamagui/helpers'\nimport {\n useElementLayout,\n useMergeRefs,\n usePlatformMethods,\n useResponderEvents,\n} from '@tamagui/rnw'\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 { getConfig, onConfiguredOnce } from './conf'\nimport { stackDefaultStyles } from './constants/constants'\nimport { isClient, isWeb, useIsomorphicLayoutEffect } from './constants/platform'\nimport { FontLanguageContext } from './contexts/FontLanguageContext'\nimport { TextAncestorContext } from './contexts/TextAncestorContext'\nimport { assignNativePropsToWeb } from './helpers/assignNativePropsToWeb'\nimport { getReturnVariablesAs } from './helpers/createPropMapper'\nimport { createShallowUpdate } from './helpers/createShallowUpdate'\nimport { extendStaticConfig, parseStaticConfig } from './helpers/extendStaticConfig'\nimport { SplitStyleResult, insertSplitStyles, useSplitStyles } from './helpers/getSplitStyles'\nimport { getAllSelectors } from './helpers/insertStyleRule'\nimport { mergeProps } from './helpers/mergeProps'\nimport { proxyThemeVariables } from './helpers/proxyThemeVariables'\nimport { useFeatures } from './hooks/useFeatures'\nimport { mediaState } from './hooks/useMedia'\nimport { usePressable } from './hooks/usePressable'\nimport { getThemeManager, useTheme } from './hooks/useTheme'\nimport {\n SpaceDirection,\n SpaceTokens,\n SpacerProps,\n StaticConfig,\n StaticConfigParsed,\n StylableComponent,\n TamaguiComponent,\n TamaguiComponentState,\n TamaguiConfig,\n TamaguiElement,\n TamaguiInternalConfig,\n UseAnimationHook,\n} from './types'\nimport { usePressability } from './vendor/Pressability'\nimport { Slot, mergeEvent } from './views/Slot'\nimport { wrapThemeManagerContext } from './views/Theme'\n\nReact['keep']\n\n// @ts-ignore\nconst isRSC = import.meta.env.SSR\n\nconst defaultComponentState: TamaguiComponentState = Object.freeze({\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 const cancelTouches = () => {\n mouseUps.forEach((x) => x())\n mouseUps.clear()\n }\n document.addEventListener('mouseup', cancelTouches)\n document.addEventListener('touchend', cancelTouches)\n document.addEventListener('touchcancel', cancelTouches)\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\nlet config: TamaguiInternalConfig\n\nexport function createComponent<\n ComponentPropTypes extends Object = {},\n Ref = TamaguiElement,\n BaseProps = never\n>(configIn: Partial<StaticConfig> | StaticConfigParsed, ParentComponent?: StylableComponent) {\n const staticConfig = (() => {\n const next = extendStaticConfig(configIn, ParentComponent)\n if ('parsed' in next) {\n return next\n } else {\n return parseStaticConfig(next)\n }\n })()\n\n const defaultComponentClassName = `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 // see onConfiguredOnce below which attaches a name then to this component\n const component = forwardRef<Ref, ComponentPropTypes>((propsIn: any, forwardedRef) => {\n // React inserts default props after your props for some reason...\n // order important so we do loops, you can't just spread because JS does weird things\n let props: any\n if (tamaguiDefaultProps && !propsIn.asChild) {\n props = mergeProps(tamaguiDefaultProps, propsIn)[0]\n } else {\n props = propsIn\n }\n\n const { Component, isText, isZStack } = staticConfig\n const componentName = props.componentName || staticConfig.componentName\n const componentClassName = props.asChild\n ? ''\n : props.componentName\n ? `is_${props.componentName}`\n : defaultComponentClassName\n\n if (process.env.NODE_ENV === 'development') {\n if (props['debug']) {\n const name = `${\n componentName || Component?.displayName || Component?.name || '[Unnamed Component]'\n }`\n const banner = `${name} ${propsIn['data-is'] || ''}`\n // eslint-disable-next-line no-console\n console.group(`%c \uD83D\uDC1B ${banner}`, 'background: yellow;')\n // eslint-disable-next-line no-console\n console.log('props', propsIn)\n // eslint-disable-next-line no-console\n // console.log('ref', hostRef, '(click to view)')\n if (props['debug'] === 'break') {\n // eslint-disable-next-line no-debugger\n debugger\n }\n }\n }\n\n const forceUpdate = useForceUpdate()\n config = config || getConfig()\n const theme = useTheme(props.theme, componentName, props, forceUpdate)\n\n const states = isRSC\n ? ([defaultComponentState, null as any] as [\n TamaguiComponentState,\n React.Dispatch<React.SetStateAction<TamaguiComponentState>>\n ])\n : useState<TamaguiComponentState>(defaultComponentState)\n const state = propsIn.forceStyle ? { ...states[0], [propsIn.forceStyle]: true } : states[0]\n\n const shouldAvoidClasses = !!(props.animation && avoidClasses)\n const shouldForcePseudo = !!propsIn.forceStyle\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const hasTextAncestor = !!(isWeb && isText ? useContext(TextAncestorContext) : false)\n const splitStyleState =\n !shouldAvoidClasses && !shouldForcePseudo\n ? {\n ...state,\n hasTextAncestor,\n dynamicStylesInline: true,\n }\n : ({\n ...state,\n noClassNames: true,\n dynamicStylesInline: true,\n hasTextAncestor,\n resolveVariablesAs: 'value',\n } as const)\n\n const languageContext = isRSC ? null : useContext(FontLanguageContext)\n\n const splitStyles = useSplitStyles(\n props,\n staticConfig,\n theme,\n splitStyleState,\n props.asChild ? null : initialSplitStyles?.classNames,\n languageContext || undefined,\n props['debug']\n )\n\n console.log('hi2')\n\n return propsIn.children\n })\n\n if (staticConfig.componentName) {\n component.displayName = staticConfig.componentName\n }\n\n // Once configuration is run and all components are registered\n // get default props + className and analyze styles\n onConfiguredOnce((conf) => {\n if (isRSC) return\n // in static mode we just use these to lookup configuration\n // ... we likely want this? need to test\n if (process.env.IS_STATIC === 'is_static') return\n\n tamaguiConfig = conf\n\n // do this to make sure shorthands don't duplicate with.. longhands\n mergeShorthands(staticConfig, tamaguiConfig)\n\n if (tamaguiConfig.animations) {\n avoidClasses = !!tamaguiConfig.animations.avoidClasses\n AnimatedText = tamaguiConfig.animations.Text\n AnimatedView = tamaguiConfig.animations.View\n }\n\n initialTheme =\n initialTheme ||\n proxyThemeVariables(conf.themes[conf.defaultTheme || Object.keys(conf.themes)[0]])\n\n // adds in user defined default props\n config = getConfig()\n\n let defaultPropsIn = staticConfig.defaultProps || {}\n\n // because we run createTamagui after styled() defs, have to do some work here\n // gather defaults props one time and merge downwards\n // find last unprocessed and process\n const parentNames = [...(staticConfig.parentNames || []), staticConfig.componentName]\n\n if (config.defaultProps && parentNames && staticConfig.componentName) {\n defaultPropsIn = mergeConfigDefaultProps(\n staticConfig.componentName,\n defaultPropsIn,\n config.defaultProps,\n parentNames,\n conf\n )\n }\n\n const debug = true ? defaultPropsIn['debug'] : false\n\n if (process.env.NODE_ENV === 'development' && debug === 'break') {\n // eslint-disable-next-line no-debugger\n debugger\n }\n\n // remove all classNames\n const [parentProps, parentClassNames] = mergeProps(defaultPropsIn, {}, true)\n\n initialSplitStyles = insertSplitStyles(\n parentProps,\n staticConfig,\n initialTheme,\n {\n mounted: true,\n hover: false,\n press: false,\n pressIn: false,\n focus: false,\n resolveVariablesAs: 'both',\n keepVariantsAsProps: true,\n },\n undefined,\n undefined,\n debug\n )\n\n // must preserve prop order\n // leave out className because we handle that already with initialSplitStyles.classNames\n // otherwise it confuses variant functions getting className props\n const [defaults, defaultsClassnames] = mergeProps(\n component.defaultProps as any,\n initialSplitStyles.viewProps,\n true\n // conf.inverseShorthands\n )\n\n // avoid passing className props to variants\n initialSplitStyles.classNames = {\n ...parentClassNames,\n ...defaultsClassnames,\n ...initialSplitStyles.classNames,\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 if (!isWeb) {\n for (const key in staticConfig.defaultProps) {\n const val = staticConfig.defaultProps[key]\n if (validPseudoKeys[key]) continue\n if ((typeof val === 'string' && val[0] === '$') || !validStyles[key]) {\n defaults[key] = val\n } else {\n defaultNativeStyle[key] = val\n }\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' && debug) {\n if (process.env.IS_STATIC !== 'is_static') {\n // eslint-disable-next-line no-console\n console.log(`\uD83D\uDC1B [${staticConfig.componentName || 'Component'}]`, {\n staticConfig,\n initialSplitStyles,\n tamaguiDefaultProps,\n defaultNativeStyle,\n defaults,\n defaultPropsIn,\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 // res.extractable HoC\n res.extractable = (Component: any, conf?: Partial<StaticConfig>) => {\n Component.staticConfig = extendStaticConfig(\n {\n Component,\n ...conf,\n neverFlatten: true,\n isExtractable: 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// for elements to avoid spacing\nexport const Unspaced = (props: { children?: any }) => {\n return props.children\n}\nUnspaced['isUnspaced'] = true\n\n// dont used styled() here to avoid circular deps\n// keep inline to avoid circular deps\n\nexport const Spacer = createComponent<SpacerProps>({\n memo: true,\n componentName: 'Spacer',\n validStyles,\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.space[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 flexGrow: 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 both: {},\n },\n },\n\n defaultVariants: {\n direction: 'both',\n },\n})\n\nexport type SpacedChildrenProps = {\n isZStack?: boolean\n children?: React.ReactNode\n space?: SpaceTokens | number | null\n spaceFlex?: boolean | number\n direction?: SpaceDirection\n separator?: React.ReactNode\n}\n\nexport function spacedChildren({\n isZStack,\n children,\n space,\n direction,\n spaceFlex,\n separator,\n}: SpacedChildrenProps) {\n const hasSpace = !!(space || spaceFlex)\n const hasSeparator = !(separator === undefined || separator === null)\n if (!hasSpace && !hasSeparator && !isZStack) {\n return children\n }\n const childrenList = Children.toArray(children)\n if (childrenList.length <= 1 && !isZStack) {\n return childrenList\n }\n const final: React.ReactNode[] = []\n for (const [index, child] of childrenList.entries()) {\n const isEmpty =\n child === null || child === undefined || (Array.isArray(child) && child.length === 0)\n\n // push them all, but wrap some in Fragment\n if (isEmpty || !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 // first child unspaced avoid insert space\n if (isUnspaced(child) && index === 0) {\n continue\n }\n\n // no spacing on ZStack\n if (isZStack) {\n continue\n }\n\n const next = childrenList[index + 1]\n\n if (next && !isUnspaced(next)) {\n if (separator) {\n if (hasSpace) {\n final.push(\n createSpacer({\n key: `_${index}_before_sep_spacer`,\n direction,\n space,\n spaceFlex,\n })\n )\n }\n final.push(\n React.isValidElement(separator)\n ? React.cloneElement(separator, { key: `sep_${index}` })\n : separator\n )\n if (hasSpace) {\n final.push(\n createSpacer({\n key: `_${index}_after_sep_spacer`,\n direction,\n space,\n spaceFlex,\n })\n )\n }\n } else {\n final.push(\n createSpacer({\n key: `_${index}_spacer`,\n direction,\n space,\n spaceFlex,\n })\n )\n }\n }\n }\n\n return final\n}\n\ntype CreateSpacerProps = SpacedChildrenProps & { key: string }\n\nfunction createSpacer({ key, direction, space, spaceFlex }: CreateSpacerProps) {\n return (\n <Spacer\n key={key}\n size={space}\n direction={direction}\n {...(spaceFlex && {\n flex: spaceFlex,\n })}\n />\n )\n}\n\nfunction isUnspaced(child: React.ReactNode) {\n // console.log('unspaced?', child, getMedia())\n return child?.['type']?.['isVisuallyHidden'] || child?.['type']?.['isUnspaced']\n}\n\nfunction AbsoluteFill(props: { children?: any }) {\n return (\n <View pointerEvents=\"box-none\" style={StyleSheet.absoluteFill}>\n {props.children}\n </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\nexport function processIDRefList(idRefList: string | Array<string>): string {\n return Array.isArray(idRefList) ? idRefList.join(' ') : idRefList\n}\n\nexport const accessibilityRoleToWebRole = {\n adjustable: 'slider',\n button: 'button',\n header: 'heading',\n image: 'img',\n imagebutton: null,\n keyboardkey: null,\n label: null,\n link: 'link',\n none: 'presentation',\n search: 'search',\n summary: 'region',\n text: null,\n}\n\nfunction addPseudoToStyles(\n styles: any[],\n initialPseudos: SplitStyleResult['pseudos'],\n pseudos: any,\n name: string,\n force = false\n) {\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 = initialPseudos[name]\n const style = defaultPseudoStyle ? { ...defaultPseudoStyle, ...pseudoStyle } : pseudoStyle\n if (style) {\n styles.push(shouldNestObject && !force ? { [name]: style } : style)\n }\n}\n\nconst DefaultProps = new Map()\n\nfunction mergeConfigDefaultProps(\n name: string,\n props: Record<string, any>,\n configDefaults: Record<string, Object>,\n parentNames: (string | undefined)[],\n conf: TamaguiInternalConfig\n) {\n const len = parentNames.length\n let prev\n\n for (let i = 0; i < len; i++) {\n const n = parentNames[i]\n if (!n) continue\n if (DefaultProps.has(n)) {\n prev = DefaultProps.get(n)\n continue\n }\n const props = configDefaults[n]\n if (!props) {\n if (prev) {\n DefaultProps.set(n, prev)\n }\n continue\n }\n prev = mergeProps(prev || {}, props, false, conf.inverseShorthands)[0]\n DefaultProps.set(n, prev)\n }\n\n // overwrite the user defined defaults on top of internal defined defaults\n const ourDefaultsMerged = DefaultProps.get(name)\n if (ourDefaultsMerged) {\n return mergeProps(props, ourDefaultsMerged, false, conf.inverseShorthands)[0]\n }\n return props\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -21,7 +21,7 @@ __export(createTamagui_exports, {
|
|
|
21
21
|
createTamagui: () => createTamagui
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(createTamagui_exports);
|
|
24
|
-
var
|
|
24
|
+
var import_config = require("./config");
|
|
25
25
|
var import_platform = require("./constants/platform");
|
|
26
26
|
var import_createVariables = require("./createVariables");
|
|
27
27
|
var import_getThemeCSSRules = require("./helpers/getThemeCSSRules");
|
|
@@ -51,7 +51,9 @@ function createTamagui(configIn) {
|
|
|
51
51
|
queries: configIn.media,
|
|
52
52
|
defaultActive: configIn.mediaQueryDefaultActive
|
|
53
53
|
});
|
|
54
|
-
const fontTokens = (
|
|
54
|
+
const fontTokens = Object.fromEntries(Object.entries(configIn.fonts).map(([k, v]) => {
|
|
55
|
+
return [k, (0, import_createVariables.createVariables)(v, "f", true)];
|
|
56
|
+
}));
|
|
55
57
|
const fontsParsed = (() => {
|
|
56
58
|
const res = {};
|
|
57
59
|
for (const familyName in fontTokens) {
|
|
@@ -116,7 +118,7 @@ function createTamagui(configIn) {
|
|
|
116
118
|
};
|
|
117
119
|
existing.set(rawTheme, dedupedThemes[themeName]);
|
|
118
120
|
}
|
|
119
|
-
if (import_platform.isWeb) {
|
|
121
|
+
if (import_platform.isWeb || import_platform.isRSC) {
|
|
120
122
|
for (const themeName in dedupedThemes) {
|
|
121
123
|
cssRuleSets = [
|
|
122
124
|
...cssRuleSets,
|
|
@@ -152,7 +154,7 @@ ${(0, import_insertStyleRule.getAllRules)().join("\n")}`;
|
|
|
152
154
|
animations: {},
|
|
153
155
|
media: {},
|
|
154
156
|
...configIn,
|
|
155
|
-
shorthands,
|
|
157
|
+
shorthands: { ...shorthands },
|
|
156
158
|
inverseShorthands: shorthands ? Object.fromEntries(Object.entries(shorthands).map(([k, v]) => [v, k])) : {},
|
|
157
159
|
themes: themeConfig.themes,
|
|
158
160
|
fontsParsed,
|
|
@@ -161,10 +163,10 @@ ${(0, import_insertStyleRule.getAllRules)().join("\n")}`;
|
|
|
161
163
|
parsed: true,
|
|
162
164
|
getCSS
|
|
163
165
|
};
|
|
164
|
-
(0,
|
|
165
|
-
if (
|
|
166
|
-
|
|
167
|
-
|
|
166
|
+
(0, import_config.setConfig)(config);
|
|
167
|
+
if (import_config.configListeners.size) {
|
|
168
|
+
import_config.configListeners.forEach((cb) => cb(config));
|
|
169
|
+
import_config.configListeners.clear();
|
|
168
170
|
}
|
|
169
171
|
createdConfigs.set(config, true);
|
|
170
172
|
if (process.env.NODE_ENV === "development") {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/createTamagui.ts"],
|
|
4
|
-
"sourcesContent": ["import { configListeners, setConfig } from './
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,
|
|
4
|
+
"sourcesContent": ["import { configListeners, setConfig } from './config'\nimport { isRSC, isWeb } from './constants/platform'\nimport { createVariables } from './createVariables'\nimport { getThemeCSSRules } from './helpers/getThemeCSSRules'\nimport { getAllRules } from './helpers/insertStyleRule'\nimport {\n registerCSSVariable,\n tokensValueToVariable,\n variableToCSS,\n} from './helpers/registerCSSVariable'\nimport { ensureThemeVariable, proxyThemeToParents } from './helpers/themes'\nimport { configureMedia } from './hooks/useMedia'\nimport { parseFont, registerFontVariables } from './insertFont'\nimport { Tamagui } from './Tamagui'\nimport { CreateTamaguiProps, InferTamaguiConfig, TamaguiInternalConfig, ThemeObject } from './types'\n\n// config is re-run by the @tamagui/static, dont double validate\nconst createdConfigs = new WeakMap<any, boolean>()\n\nexport function createTamagui<Conf extends CreateTamaguiProps>(\n configIn: Conf\n): InferTamaguiConfig<Conf> {\n if (createdConfigs.has(configIn)) {\n return configIn as any\n }\n\n if (process.env.NODE_ENV === 'development') {\n if (!configIn.tokens) {\n throw new Error(`Must define tokens`)\n }\n if (!configIn.themes) {\n throw new Error(`Must define themes`)\n }\n if (!configIn.fonts) {\n throw new Error(`Must define fonts`)\n }\n }\n\n configureMedia({\n queries: configIn.media as any,\n defaultActive: configIn.mediaQueryDefaultActive,\n })\n\n const fontTokens = Object.fromEntries(\n Object.entries(configIn.fonts!).map(([k, v]) => {\n return [k, createVariables(v, 'f', true)]\n })\n )\n\n const fontsParsed = (() => {\n const res = {} as typeof fontTokens\n for (const familyName in fontTokens) {\n res[`$${familyName}`] = parseFont(fontTokens[familyName])\n }\n return res!\n })()\n\n const themeConfig = (() => {\n const themes = { ...configIn.themes }\n let cssRuleSets: string[] = []\n\n if (isWeb) {\n const declarations: string[] = []\n const fontDeclarations: Record<\n string,\n { name: string; declarations: string[]; language?: string }\n > = {}\n\n for (const key in configIn.tokens) {\n for (const skey in configIn.tokens[key]) {\n const val = configIn.tokens[key][skey]\n registerCSSVariable(val)\n declarations.push(variableToCSS(val))\n }\n }\n\n for (const key in fontsParsed) {\n const fontParsed = fontsParsed[key]\n const [name, language] = key.includes('_') ? key.split('_') : [key]\n const fontVars = registerFontVariables(fontParsed)\n fontDeclarations[key] = { name: name.slice(1), declarations: fontVars, language }\n }\n\n const sep = process.env.NODE_ENV === 'development' ? configIn.cssStyleSeparator || ' ' : ''\n\n function declarationsToRuleSet(decs: string[], selector = '') {\n return `:root${selector} {${sep}${[...decs].join(`;${sep}`)}${sep}}`\n }\n\n // non-font\n cssRuleSets.push(declarationsToRuleSet(declarations))\n\n // fonts\n if (fontDeclarations) {\n for (const key in fontDeclarations) {\n const { name, declarations, language = 'default' } = fontDeclarations[key]\n const fontSelector = `.font_${name}`\n const langSelector = `:root .t_lang-${name}-${language} ${fontSelector}`\n const selectors =\n language === 'default' ? ` ${fontSelector}, ${langSelector}` : langSelector\n const specificRuleSet = declarationsToRuleSet(declarations, selectors)\n cssRuleSets.push(specificRuleSet)\n }\n }\n }\n\n // dedupe themes to avoid duplicate CSS generation\n type DedupedTheme = {\n names: string[]\n theme: ThemeObject\n }\n const dedupedThemes: {\n [key: string]: DedupedTheme\n } = {}\n const existing = new WeakMap<ThemeObject, DedupedTheme>()\n\n // first, de-dupe and parse them\n for (const themeName in themes) {\n const rawTheme = themes[themeName]\n\n // if existing, avoid\n if (existing.has(rawTheme)) {\n const e = existing.get(rawTheme)!\n themes[themeName] = e.theme\n e.names.push(themeName)\n continue\n }\n\n // ensure each theme object unique for dedupe\n const theme = { ...rawTheme }\n // parse into variables\n for (const key in theme) {\n // make sure properly names theme variables\n ensureThemeVariable(theme, key)\n }\n themes[themeName] = theme\n\n // set deduped\n dedupedThemes[themeName] = {\n names: [themeName],\n theme,\n }\n existing.set(rawTheme, dedupedThemes[themeName])\n }\n\n // then, generate CSS from de-duped\n if (isWeb || isRSC) {\n for (const themeName in dedupedThemes) {\n cssRuleSets = [\n ...cssRuleSets,\n ...getThemeCSSRules({\n config: configIn,\n themeName,\n ...dedupedThemes[themeName],\n }),\n ]\n }\n }\n\n // proxy upwards to get parent variables (themes are subset going down)\n for (const themeName in themes) {\n themes[themeName] = proxyThemeToParents(themeName, themes[themeName], themes)\n }\n\n tokensValueToVariable.clear()\n Object.freeze(cssRuleSets)\n const css = cssRuleSets.join('\\n')\n\n return {\n themes,\n cssRuleSets,\n css,\n }\n })()\n\n // faster lookups token keys become $keys to match input\n const tokensParsed: any = parseTokens(configIn.tokens)\n\n const getCSS = () => {\n return `${themeConfig.css}\\n${getAllRules().join('\\n')}`\n }\n\n const shorthands = configIn.shorthands || {}\n\n const config: TamaguiInternalConfig = {\n fontLanguages: [],\n defaultTheme: 'light',\n animations: {} as any,\n media: {},\n ...configIn,\n // vite made this into a function if it wasn't set\n shorthands: { ...shorthands },\n inverseShorthands: shorthands\n ? Object.fromEntries(Object.entries(shorthands).map(([k, v]) => [v, k]))\n : {},\n themes: themeConfig.themes,\n fontsParsed,\n themeConfig,\n tokensParsed,\n parsed: true,\n getCSS,\n }\n\n setConfig(config)\n\n if (configListeners.size) {\n configListeners.forEach((cb) => cb(config))\n configListeners.clear()\n }\n\n createdConfigs.set(config, true)\n\n if (process.env.NODE_ENV === 'development') {\n if (!globalThis['Tamagui']) {\n globalThis['Tamagui'] = Tamagui\n }\n }\n\n // @ts-expect-error\n return config\n}\n\nconst parseTokens = (tokens: any) => {\n const res: any = {}\n for (const key in tokens) {\n res[key] = {}\n for (const skey in tokens[key]) {\n res[key][`$${skey}`] = tokens[key][skey]\n }\n }\n return res\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -27,6 +27,7 @@ __export(createVariable_exports, {
|
|
|
27
27
|
variableToString: () => variableToString
|
|
28
28
|
});
|
|
29
29
|
module.exports = __toCommonJS(createVariable_exports);
|
|
30
|
+
var import_helpers = require("@tamagui/helpers");
|
|
30
31
|
var import_platform = require("./constants/platform");
|
|
31
32
|
const IS_VAR = "__isVar__";
|
|
32
33
|
const createVariable = (props) => {
|
|
@@ -42,9 +43,10 @@ const createVariable = (props) => {
|
|
|
42
43
|
function variableToString(vrble) {
|
|
43
44
|
if (!vrble)
|
|
44
45
|
return "";
|
|
45
|
-
if (
|
|
46
|
-
return vrble
|
|
47
|
-
|
|
46
|
+
if (isVariable(vrble)) {
|
|
47
|
+
return `${import_platform.isWeb ? vrble.variable : vrble.val}`;
|
|
48
|
+
}
|
|
49
|
+
return `${vrble}`;
|
|
48
50
|
}
|
|
49
51
|
function isVariable(v) {
|
|
50
52
|
return !!(v && v[IS_VAR]);
|
|
@@ -71,15 +73,7 @@ const createCSSVariable = (nameProp, includeVar = true) => {
|
|
|
71
73
|
return ``;
|
|
72
74
|
}
|
|
73
75
|
}
|
|
74
|
-
|
|
75
|
-
for (let i = 0; i < nameProp.length; i++) {
|
|
76
|
-
const code = nameProp.charCodeAt(i);
|
|
77
|
-
if (code >= 65 && code <= 90 || code >= 97 && code <= 122 || code == 95 || code === 45 || code >= 48 && code <= 57) {
|
|
78
|
-
name += nameProp[i];
|
|
79
|
-
} else {
|
|
80
|
-
name += `-c${code}-`;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
76
|
+
const name = (0, import_helpers.simpleHash)(nameProp, 60);
|
|
83
77
|
return includeVar ? `var(--${name})` : name;
|
|
84
78
|
};
|
|
85
79
|
// Annotate the CommonJS export names for ESM import in node:
|