@tamagui/core 1.0.0-beta.179 → 1.0.0-beta.181
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 +18 -1
- package/dist/cjs/Tamagui.js.map +2 -2
- package/dist/cjs/ThemeContext.js +4 -0
- package/dist/cjs/ThemeManager.js +30 -14
- package/dist/cjs/ThemeManager.js.map +2 -2
- package/dist/cjs/conf.js +10 -1
- package/dist/cjs/conf.js.map +2 -2
- package/dist/cjs/constants/constants.js +6 -0
- package/dist/cjs/constants/platform.js +12 -0
- package/dist/cjs/constants/pseudos.js +37 -0
- package/dist/cjs/constants/pseudos.js.map +7 -0
- package/dist/cjs/constants/rnw.js +4 -0
- package/dist/cjs/contexts/ButtonInsideButtonContext.js +4 -0
- package/dist/cjs/createComponent.js +132 -126
- package/dist/cjs/createComponent.js.map +2 -2
- package/dist/cjs/createFont.js +4 -0
- package/dist/cjs/createShallowUpdate.js +1 -0
- package/dist/cjs/createShallowUpdate.js.map +7 -0
- package/dist/cjs/createShorthands.js +4 -0
- package/dist/cjs/createTamagui.js +12 -0
- package/dist/cjs/createTamagui.js.map +2 -2
- package/dist/cjs/createTheme.js +4 -0
- package/dist/cjs/createTokens.js +5 -0
- package/dist/cjs/createTokens.js.map +1 -1
- package/dist/cjs/createVariable.js +9 -0
- package/dist/cjs/defaultComponentState.js +0 -30
- package/dist/cjs/defaultComponentState.js.map +3 -3
- package/dist/cjs/devtools.js +32 -0
- package/dist/cjs/devtools.js.map +7 -0
- package/dist/cjs/helpers/RNComponents.js +38 -0
- package/dist/cjs/helpers/RNComponents.js.map +7 -0
- package/dist/cjs/helpers/addStylesUsingClassname.js +8 -0
- package/dist/cjs/helpers/addStylesUsingClassname.js.map +2 -2
- package/dist/cjs/helpers/areEqualSets.js +4 -0
- package/dist/cjs/helpers/createMediaStyle.js +8 -6
- package/dist/cjs/helpers/createMediaStyle.js.map +2 -2
- package/dist/cjs/helpers/createPropMapper.js +57 -56
- package/dist/cjs/helpers/createPropMapper.js.map +2 -2
- package/dist/cjs/helpers/createShallowUpdate.js +55 -0
- package/dist/cjs/helpers/createShallowUpdate.js.map +7 -0
- package/dist/cjs/helpers/createTamaguiProvider.js +5 -5
- package/dist/cjs/helpers/createTamaguiProvider.js.map +2 -2
- package/dist/cjs/helpers/extendStaticConfig.js +8 -6
- package/dist/cjs/helpers/extendStaticConfig.js.map +2 -2
- package/dist/cjs/helpers/fixNativeShadow.js +4 -0
- package/dist/cjs/helpers/fixNativeShadow.native.js +6 -2
- package/dist/cjs/helpers/fixNativeShadow.native.js.map +2 -2
- package/dist/cjs/helpers/getExpandedShorthands.js +4 -0
- package/dist/cjs/helpers/getSplitStyles.js +94 -47
- package/dist/cjs/helpers/getSplitStyles.js.map +2 -2
- package/dist/cjs/helpers/getStylesAtomic.js +20 -2
- package/dist/cjs/helpers/getStylesAtomic.js.map +2 -2
- package/dist/cjs/helpers/getStylesAtomic.native.js +4 -0
- package/dist/cjs/helpers/insertStyleRule.js +46 -26
- package/dist/cjs/helpers/insertStyleRule.js.map +2 -2
- package/dist/cjs/helpers/isObj.js +4 -0
- package/dist/cjs/helpers/isTamaguiElement.js +4 -0
- package/dist/cjs/helpers/matchMedia.js +4 -0
- package/dist/cjs/helpers/matchMedia.native.js +4 -0
- package/dist/cjs/helpers/themeable.js +8 -2
- package/dist/cjs/helpers/themeable.js.map +2 -2
- package/dist/cjs/helpers/validate.js +46 -5
- package/dist/cjs/helpers/validate.js.map +2 -2
- package/dist/cjs/helpers/withStaticProperties.js +4 -0
- package/dist/cjs/helpers/wrapThemeManagerContext.js +4 -0
- package/dist/cjs/hooks/useConstant.js +4 -0
- package/dist/cjs/hooks/useFeatures.js +101 -12
- package/dist/cjs/hooks/useFeatures.js.map +2 -2
- package/dist/cjs/hooks/useIsMounted.js +4 -0
- package/dist/cjs/hooks/useIsTouchDevice.js +4 -0
- package/dist/cjs/hooks/useMedia.js +36 -43
- package/dist/cjs/hooks/useMedia.js.map +2 -2
- package/dist/cjs/hooks/usePressable.js +4 -0
- package/dist/cjs/hooks/useTheme.js +28 -13
- package/dist/cjs/hooks/useTheme.js.map +2 -2
- package/dist/cjs/hooks/useUnmountEffect.js +4 -0
- package/dist/cjs/index.js +14 -0
- package/dist/cjs/index.js.map +2 -2
- package/dist/cjs/styled.js +8 -15
- package/dist/cjs/styled.js.map +2 -2
- package/dist/cjs/tamagui-base.css +8 -0
- package/dist/cjs/tamagui-base.css.map +7 -0
- package/dist/cjs/types-rnw.js.map +1 -1
- package/dist/cjs/types.js.map +1 -1
- package/dist/cjs/views/Stack.js +5 -0
- package/dist/cjs/views/Stack.js.map +2 -2
- package/dist/cjs/views/Text.js +5 -0
- package/dist/cjs/views/Text.js.map +2 -2
- package/dist/cjs/views/TextAncestorContext.js +6 -0
- package/dist/cjs/views/Theme.js +17 -19
- package/dist/cjs/views/Theme.js.map +2 -2
- package/dist/cjs/views/ThemeInverse.js +5 -0
- package/dist/cjs/views/ThemeProvider.js +4 -0
- package/dist/cjs/views/ThemeReset.js +4 -0
- package/dist/esm/Tamagui.js +10 -2
- package/dist/esm/Tamagui.js.map +2 -2
- package/dist/esm/ThemeManager.js +21 -11
- package/dist/esm/ThemeManager.js.map +2 -2
- package/dist/esm/conf.js +0 -1
- package/dist/esm/conf.js.map +2 -2
- package/dist/esm/constants/pseudos.js +18 -0
- package/dist/esm/constants/pseudos.js.map +7 -0
- package/dist/esm/createComponent.js +122 -129
- package/dist/esm/createComponent.js.map +2 -2
- package/dist/esm/createShallowUpdate.js +1 -0
- package/dist/esm/createShallowUpdate.js.map +7 -0
- package/dist/esm/createTamagui.js +8 -0
- package/dist/esm/createTamagui.js.map +2 -2
- package/dist/esm/createTokens.js.map +1 -1
- package/dist/esm/defaultComponentState.js +0 -11
- package/dist/esm/defaultComponentState.js.map +3 -3
- package/dist/esm/devtools.js +14 -0
- package/dist/esm/devtools.js.map +7 -0
- package/dist/esm/helpers/RNComponents.js +12 -0
- package/dist/esm/helpers/RNComponents.js.map +7 -0
- package/dist/esm/helpers/addStylesUsingClassname.js +4 -1
- package/dist/esm/helpers/addStylesUsingClassname.js.map +2 -2
- package/dist/esm/helpers/createMediaStyle.js +3 -6
- package/dist/esm/helpers/createMediaStyle.js.map +2 -2
- package/dist/esm/helpers/createPropMapper.js +53 -56
- package/dist/esm/helpers/createPropMapper.js.map +2 -2
- package/dist/esm/helpers/createShallowUpdate.js +19 -0
- package/dist/esm/helpers/createShallowUpdate.js.map +7 -0
- package/dist/esm/helpers/createTamaguiProvider.js +1 -4
- package/dist/esm/helpers/createTamaguiProvider.js.map +2 -2
- package/dist/esm/helpers/extendStaticConfig.js +5 -6
- package/dist/esm/helpers/extendStaticConfig.js.map +2 -2
- package/dist/esm/helpers/fixNativeShadow.native.js +2 -2
- package/dist/esm/helpers/fixNativeShadow.native.js.map +2 -2
- package/dist/esm/helpers/getSplitStyles.js +89 -48
- package/dist/esm/helpers/getSplitStyles.js.map +2 -2
- package/dist/esm/helpers/getStylesAtomic.js +15 -2
- package/dist/esm/helpers/getStylesAtomic.js.map +2 -2
- package/dist/esm/helpers/insertStyleRule.js +36 -26
- package/dist/esm/helpers/insertStyleRule.js.map +2 -2
- package/dist/esm/helpers/themeable.js +4 -2
- package/dist/esm/helpers/themeable.js.map +2 -2
- package/dist/esm/helpers/validate.js +17 -5
- package/dist/esm/helpers/validate.js.map +2 -2
- package/dist/esm/hooks/useFeatures.js +96 -17
- package/dist/esm/hooks/useFeatures.js.map +2 -2
- package/dist/esm/hooks/useMedia.js +25 -43
- package/dist/esm/hooks/useMedia.js.map +2 -2
- package/dist/esm/hooks/useTheme.js +20 -13
- package/dist/esm/hooks/useTheme.js.map +2 -2
- package/dist/esm/index.js +3 -0
- package/dist/esm/index.js.map +2 -2
- package/dist/esm/styled.js +4 -12
- package/dist/esm/styled.js.map +2 -2
- package/dist/esm/tamagui-base.css +8 -0
- package/dist/esm/tamagui-base.css.map +7 -0
- package/dist/esm/views/Stack.js +1 -0
- package/dist/esm/views/Stack.js.map +2 -2
- package/dist/esm/views/Text.js +1 -0
- package/dist/esm/views/Text.js.map +2 -2
- package/dist/esm/views/Theme.js +13 -19
- package/dist/esm/views/Theme.js.map +2 -2
- package/dist/jsx/Tamagui.js +10 -2
- package/dist/jsx/ThemeManager.js +21 -11
- package/dist/jsx/conf.js +0 -1
- package/dist/jsx/constants/pseudos.js +17 -0
- package/dist/jsx/createComponent.js +115 -123
- package/dist/jsx/createShallowUpdate.js +0 -0
- package/dist/jsx/createTamagui.js +8 -0
- package/dist/jsx/defaultComponentState.js +0 -11
- package/dist/jsx/devtools.js +13 -0
- package/dist/jsx/helpers/RNComponents.js +11 -0
- package/dist/jsx/helpers/addStylesUsingClassname.js +4 -1
- package/dist/jsx/helpers/createMediaStyle.js +3 -6
- package/dist/jsx/helpers/createPropMapper.js +53 -56
- package/dist/jsx/helpers/createShallowUpdate.js +18 -0
- package/dist/jsx/helpers/createTamaguiProvider.js +1 -2
- package/dist/jsx/helpers/extendStaticConfig.js +5 -6
- package/dist/jsx/helpers/fixNativeShadow.native.js +2 -2
- package/dist/jsx/helpers/getSplitStyles.js +89 -48
- package/dist/jsx/helpers/getStylesAtomic.js +15 -2
- package/dist/jsx/helpers/insertStyleRule.js +36 -26
- package/dist/jsx/helpers/themeable.js +4 -3
- package/dist/jsx/helpers/validate.js +17 -5
- package/dist/jsx/hooks/useFeatures.js +96 -17
- package/dist/jsx/hooks/useMedia.js +25 -43
- package/dist/jsx/hooks/useTheme.js +20 -13
- package/dist/jsx/index.js +3 -0
- package/dist/jsx/styled.js +4 -12
- package/dist/jsx/tamagui-base.css +7 -0
- package/dist/jsx/views/Stack.js +1 -0
- package/dist/jsx/views/Text.js +1 -0
- package/dist/jsx/views/Theme.js +13 -19
- package/package.json +6 -6
- package/types/Tamagui.d.ts +16 -1
- package/types/Tamagui.d.ts.map +1 -1
- package/types/ThemeManager.d.ts +3 -3
- package/types/ThemeManager.d.ts.map +1 -1
- package/types/conf.d.ts.map +1 -1
- package/types/createComponent.d.ts +5 -7
- package/types/createComponent.d.ts.map +1 -1
- package/types/createFont.d.ts +1 -1
- package/types/createFont.d.ts.map +1 -1
- package/types/createTamagui.d.ts.map +1 -1
- package/types/createTokens.d.ts +8 -0
- package/types/createTokens.d.ts.map +1 -1
- package/types/defaultComponentState.d.ts +0 -12
- package/types/defaultComponentState.d.ts.map +1 -1
- package/types/helpers/RNComponents.d.ts +2 -0
- package/types/helpers/RNComponents.d.ts.map +1 -0
- package/types/helpers/addStylesUsingClassname.d.ts.map +1 -1
- package/types/helpers/createMediaStyle.d.ts +1 -1
- package/types/helpers/createMediaStyle.d.ts.map +1 -1
- package/types/helpers/createPropMapper.d.ts +2 -2
- package/types/helpers/createPropMapper.d.ts.map +1 -1
- package/types/helpers/createShallowUpdate.d.ts +4 -0
- package/types/helpers/createShallowUpdate.d.ts.map +1 -0
- package/types/helpers/createTamaguiProvider.d.ts +1 -1
- package/types/helpers/createTamaguiProvider.d.ts.map +1 -1
- package/types/helpers/extendStaticConfig.d.ts +2 -2
- package/types/helpers/extendStaticConfig.d.ts.map +1 -1
- package/types/helpers/getSplitStyles.d.ts +4 -14
- package/types/helpers/getSplitStyles.d.ts.map +1 -1
- package/types/helpers/getStylesAtomic.d.ts.map +1 -1
- package/types/helpers/insertStyleRule.d.ts +2 -1
- package/types/helpers/insertStyleRule.d.ts.map +1 -1
- package/types/helpers/themeable.d.ts +3 -1
- package/types/helpers/themeable.d.ts.map +1 -1
- package/types/helpers/validate.d.ts.map +1 -1
- package/types/hooks/useFeatures.d.ts +7 -5
- package/types/hooks/useFeatures.d.ts.map +1 -1
- package/types/hooks/useMedia.d.ts +3 -3
- package/types/hooks/useMedia.d.ts.map +1 -1
- package/types/hooks/useTheme.d.ts +1 -1
- package/types/hooks/useTheme.d.ts.map +1 -1
- package/types/index.d.ts +1 -0
- package/types/index.d.ts.map +1 -1
- package/types/styled.d.ts +13 -8
- package/types/styled.d.ts.map +1 -1
- package/types/types-rnw.d.ts +0 -5
- package/types/types-rnw.d.ts.map +1 -1
- package/types/types.d.ts +124 -90
- package/types/types.d.ts.map +1 -1
- package/types/views/Stack.d.ts +2 -2
- package/types/views/Stack.d.ts.map +1 -1
- package/types/views/Text.d.ts +2 -2
- package/types/views/Text.d.ts.map +1 -1
- package/types/views/Theme.d.ts +1 -0
- package/types/views/Theme.d.ts.map +1 -1
package/dist/esm/ThemeManager.js
CHANGED
|
@@ -16,9 +16,9 @@ var __privateMethod = (obj, member, method) => {
|
|
|
16
16
|
var _getClassName, getClassName_fn;
|
|
17
17
|
import { createContext } from "react";
|
|
18
18
|
import { getThemes } from "./conf";
|
|
19
|
-
import { THEME_CLASSNAME_PREFIX, THEME_NAME_SEPARATOR } from "./
|
|
19
|
+
import { THEME_CLASSNAME_PREFIX, THEME_NAME_SEPARATOR } from "./constants/constants";
|
|
20
20
|
class ThemeManager {
|
|
21
|
-
constructor(name =
|
|
21
|
+
constructor(name = "", theme = null, parentManager = null) {
|
|
22
22
|
this.name = name;
|
|
23
23
|
this.theme = theme;
|
|
24
24
|
this.parentManager = parentManager;
|
|
@@ -76,7 +76,7 @@ class ThemeManager {
|
|
|
76
76
|
return false;
|
|
77
77
|
}
|
|
78
78
|
this.className = className || null;
|
|
79
|
-
this.name = name ||
|
|
79
|
+
this.name = name || "";
|
|
80
80
|
this.theme = theme;
|
|
81
81
|
this.notifyListeners();
|
|
82
82
|
return true;
|
|
@@ -85,10 +85,14 @@ class ThemeManager {
|
|
|
85
85
|
const { themes = getThemes(), name, componentName } = opts;
|
|
86
86
|
if (!name) {
|
|
87
87
|
if (componentName) {
|
|
88
|
-
const
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
88
|
+
const names = [
|
|
89
|
+
`${this.name}_${componentName}`,
|
|
90
|
+
`${withoutComponentName(this.name)}_${componentName}`
|
|
91
|
+
];
|
|
92
|
+
for (const name2 of names) {
|
|
93
|
+
if (name2 in themes) {
|
|
94
|
+
return { name: name2, theme: themes[name2], className: __privateMethod(this, _getClassName, getClassName_fn).call(this, name2) };
|
|
95
|
+
}
|
|
92
96
|
}
|
|
93
97
|
}
|
|
94
98
|
return {
|
|
@@ -113,9 +117,14 @@ class ThemeManager {
|
|
|
113
117
|
parentName = parentName.slice(0, parentName.lastIndexOf(THEME_NAME_SEPARATOR));
|
|
114
118
|
}
|
|
115
119
|
if (componentName) {
|
|
116
|
-
const
|
|
117
|
-
|
|
118
|
-
nextName
|
|
120
|
+
const names = [
|
|
121
|
+
`${nextName}_${componentName}`,
|
|
122
|
+
`${withoutComponentName(nextName)}_${componentName}`
|
|
123
|
+
];
|
|
124
|
+
for (const name2 of names) {
|
|
125
|
+
if (name2 in themes) {
|
|
126
|
+
nextName = name2;
|
|
127
|
+
}
|
|
119
128
|
}
|
|
120
129
|
}
|
|
121
130
|
let theme = themes[nextName];
|
|
@@ -123,7 +132,7 @@ class ThemeManager {
|
|
|
123
132
|
theme = themes[`light_${nextName}`];
|
|
124
133
|
}
|
|
125
134
|
if (process.env.NODE_ENV === "development" && props && props["debug"]) {
|
|
126
|
-
console.log("getNextTheme", { opts, nextName, parentName }
|
|
135
|
+
console.log("getNextTheme", { name: opts.name, nextName, parentName });
|
|
127
136
|
}
|
|
128
137
|
return {
|
|
129
138
|
name: nextName,
|
|
@@ -169,6 +178,7 @@ getClassName_fn = /* @__PURE__ */ __name(function(name) {
|
|
|
169
178
|
}, "#getClassName");
|
|
170
179
|
const ThemeManagerContext = createContext(null);
|
|
171
180
|
const emptyManager = new ThemeManager();
|
|
181
|
+
const withoutComponentName = /* @__PURE__ */ __name((name) => name.replace(/\_[A-Z][a-z]+$/, ""), "withoutComponentName");
|
|
172
182
|
export {
|
|
173
183
|
ThemeManager,
|
|
174
184
|
ThemeManagerContext,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/ThemeManager.tsx"],
|
|
4
|
-
"sourcesContent": ["import { createContext } from 'react'\n\nimport { getThemes } from './conf'\nimport { THEME_CLASSNAME_PREFIX, THEME_NAME_SEPARATOR } from './
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAEA;AACA;AAYO,MAAM,aAAa;AAAA,EAMxB,YACS,
|
|
4
|
+
"sourcesContent": ["import { createContext } from 'react'\n\nimport { getThemes } from './conf'\nimport { THEME_CLASSNAME_PREFIX, THEME_NAME_SEPARATOR } from './constants/constants'\nimport { ThemeObject, Themes } from './types'\n\ntype ThemeListener = (name: string | null, themeManager: ThemeManager) => void\n\nexport type SetActiveThemeProps = {\n className?: string\n parentManager?: ThemeManager | null\n name?: string | null\n theme?: any\n}\n\nexport class ThemeManager {\n keys = new Map<any, Set<string>>()\n listeners = new Map<any, Function>()\n themeListeners = new Set<ThemeListener>()\n className: string | null = null\n\n constructor(\n public name: string = '',\n public theme: ThemeObject | null = null,\n public parentManager: ThemeManager | null = null\n ) {\n // find the nearest different parentManager\n let parent = parentManager\n let tries = 0\n while (true) {\n tries++\n if (tries > 10) {\n throw new Error(`Nested 10 of the same theme in a row, likely error`)\n }\n if (!parent) break\n if (parent.name === name) {\n // go up if same\n parent = parent.parentManager\n } else {\n this.parentManager = parent\n break\n }\n }\n }\n\n get parentName() {\n return this.parentManager?.name || null\n }\n\n get fullName(): string {\n return this.getNextTheme().name || this.name || ''\n // const parentName = this.parentManager?.fullName || ''\n // const name = this.name || ''\n // const parts = [...new Set([...`${parentName}_${name}`.split('_')])].filter(Boolean)\n // return parts.join('_')\n }\n\n // gets value going up to parents\n getValue(key: string) {\n let theme = this.theme\n let manager = this as ThemeManager | null\n while (true) {\n if (!theme) return\n if (key in theme) {\n return theme[key]\n }\n manager = this.parentManager\n if (!manager) {\n return\n }\n if (manager.theme === theme) {\n return\n }\n theme = manager.theme\n }\n }\n\n update({ name, theme, className }: SetActiveThemeProps = {}) {\n // className compare on web, avoids light/dark re-renders\n const sameNameOrClassName = this.className\n ? // == instead of === (sometimes its undefined/null)\n className == this.className\n : name === this.name\n if (sameNameOrClassName) {\n return false\n }\n this.className = className || null\n this.name = name || ''\n this.theme = theme\n this.notifyListeners()\n return true\n }\n\n getNextTheme(\n opts: { themes?: Themes; name?: string | null; componentName?: string | null } = {},\n props?: any\n ) {\n const { themes = getThemes(), name, componentName } = opts\n\n if (!name) {\n if (componentName) {\n // allow for _Card_Button or just _Button\n const names = [\n `${this.name}_${componentName}`,\n `${withoutComponentName(this.name)}_${componentName}`,\n ]\n for (const name of names) {\n if (name in themes) {\n return { name, theme: themes[name], className: this.#getClassName(name) }\n }\n }\n }\n return {\n name: this.name,\n theme: this.theme,\n }\n }\n\n let nextName = name || this.name || ''\n let parentName = this.fullName\n\n while (true) {\n if (nextName in themes) {\n break\n }\n nextName = `${parentName}_${name}`\n if (nextName in themes) {\n break\n }\n if (!parentName.includes(THEME_NAME_SEPARATOR)) {\n // not found!\n console.warn('theme not found', name)\n break\n }\n // go up one\n parentName = parentName.slice(0, parentName.lastIndexOf(THEME_NAME_SEPARATOR))\n }\n\n if (componentName) {\n // allow for _Card_Button or just _Button\n const names = [\n `${nextName}_${componentName}`,\n `${withoutComponentName(nextName)}_${componentName}`,\n ]\n for (const name of names) {\n if (name in themes) {\n nextName = name\n }\n }\n }\n\n let theme = themes[nextName]\n if (!theme) {\n theme = themes[`light_${nextName}`]\n }\n\n if (process.env.NODE_ENV === 'development' && props && props['debug']) {\n console.log('getNextTheme', { name: opts.name, nextName, parentName })\n }\n\n return {\n name: nextName,\n theme,\n className: this.#getClassName(nextName),\n }\n }\n\n #getClassName(name: string) {\n return `${THEME_CLASSNAME_PREFIX}${name} tui_theme`.replace('light_', '').replace('dark_', '')\n }\n\n track(uuid: any, keys: Set<string>) {\n if (!this.name) return\n this.keys.set(uuid, keys)\n }\n\n notifyListeners() {\n if (!this.name) {\n this.keys.clear()\n }\n for (const [uuid, keys] of this.keys.entries()) {\n if (keys.size) {\n this.listeners.get(uuid)?.()\n }\n }\n this.themeListeners.forEach((cb) => cb(this.name, this))\n }\n\n onChangeTheme(cb: ThemeListener) {\n this.themeListeners.add(cb)\n return () => {\n this.themeListeners.delete(cb)\n }\n }\n\n onUpdate(uuid: any, cb: Function) {\n this.listeners.set(uuid, cb)\n return () => {\n this.listeners.delete(uuid)\n this.keys.delete(uuid)\n }\n }\n}\n\nexport const ThemeManagerContext = createContext<ThemeManager | null>(null)\nexport const emptyManager = new ThemeManager()\n\nconst withoutComponentName = (name: string) => name.replace(/\\_[A-Z][a-z]+$/, '')\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/esm/conf.js
CHANGED
package/dist/esm/conf.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/conf.ts"],
|
|
4
|
-
"sourcesContent": ["import { Tamagui } from './Tamagui'\nimport { ConfigListener, TamaguiInternalConfig } from './types'\n\nlet conf: TamaguiInternalConfig | null\n\nexport const setConfig = (next: TamaguiInternalConfig) => {\n conf = next\n if (configListeners.size) {\n configListeners.forEach((cb) => cb(conf!))\n configListeners.clear()\n }\n}\n\nexport const getHasConfigured = () => !!conf\nexport const getConfig = () => conf!\nexport const getTokens = () => conf!.tokensParsed\nexport const getThemes = () => conf!.themes\n\nexport const configListeners = new Set<ConfigListener>()\n\nexport const onConfiguredOnce = (cb: ConfigListener) => {\n if (conf) {\n cb(conf)\n } else {\n configListeners.add(cb)\n }\n\n if (!globalThis['Tamagui']) {\n
|
|
5
|
-
"mappings": ";;AAAA;AAGA,IAAI;AAEG,MAAM,YAAY,wBAAC,SAAgC;AACxD,SAAO;AACP,MAAI,gBAAgB,MAAM;AACxB,oBAAgB,QAAQ,CAAC,OAAO,GAAG,IAAK,CAAC;AACzC,oBAAgB,MAAM;AAAA,EACxB;AACF,GANyB;AAQlB,MAAM,mBAAmB,6BAAM,CAAC,CAAC,MAAR;AACzB,MAAM,YAAY,6BAAM,MAAN;AAClB,MAAM,YAAY,6BAAM,KAAM,cAAZ;AAClB,MAAM,YAAY,6BAAM,KAAM,QAAZ;AAElB,MAAM,kBAAkB,oBAAI,IAAoB;AAEhD,MAAM,mBAAmB,wBAAC,OAAuB;AACtD,MAAI,MAAM;AACR,OAAG,
|
|
4
|
+
"sourcesContent": ["import { Tamagui } from './Tamagui'\nimport { ConfigListener, TamaguiInternalConfig } from './types'\n\nlet conf: TamaguiInternalConfig | null\n\nexport const setConfig = (next: TamaguiInternalConfig) => {\n conf = next\n if (configListeners.size) {\n configListeners.forEach((cb) => cb(conf!))\n configListeners.clear()\n }\n}\n\nexport const getHasConfigured = () => !!conf\nexport const getConfig = () => conf!\nexport const getTokens = () => conf!.tokensParsed\nexport const getThemes = () => conf!.themes\n\nexport const configListeners = new Set<ConfigListener>()\n\nexport const onConfiguredOnce = (cb: ConfigListener) => {\n if (conf) {\n cb(conf!)\n } else {\n configListeners.add(cb)\n }\n\n if (!globalThis['Tamagui']) {\n globalThis['Tamagui'] = Tamagui\n }\n}\n"],
|
|
5
|
+
"mappings": ";;AAAA;AAGA,IAAI;AAEG,MAAM,YAAY,wBAAC,SAAgC;AACxD,SAAO;AACP,MAAI,gBAAgB,MAAM;AACxB,oBAAgB,QAAQ,CAAC,OAAO,GAAG,IAAK,CAAC;AACzC,oBAAgB,MAAM;AAAA,EACxB;AACF,GANyB;AAQlB,MAAM,mBAAmB,6BAAM,CAAC,CAAC,MAAR;AACzB,MAAM,YAAY,6BAAM,MAAN;AAClB,MAAM,YAAY,6BAAM,KAAM,cAAZ;AAClB,MAAM,YAAY,6BAAM,KAAM,QAAZ;AAElB,MAAM,kBAAkB,oBAAI,IAAoB;AAEhD,MAAM,mBAAmB,wBAAC,OAAuB;AACtD,MAAI,MAAM;AACR,OAAG,IAAK;AAAA,EACV,OAAO;AACL,oBAAgB,IAAI,EAAE;AAAA,EACxB;AAEA,MAAI,CAAC,WAAW,YAAY;AAC1B,eAAW,aAAa;AAAA,EAC1B;AACF,GAVgC;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const pseudos = {
|
|
2
|
+
focusStyle: {
|
|
3
|
+
name: "focus",
|
|
4
|
+
priority: 3
|
|
5
|
+
},
|
|
6
|
+
pressStyle: {
|
|
7
|
+
name: "active",
|
|
8
|
+
priority: 2
|
|
9
|
+
},
|
|
10
|
+
hoverStyle: {
|
|
11
|
+
name: "hover",
|
|
12
|
+
priority: 1
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
export {
|
|
16
|
+
pseudos
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=pseudos.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/constants/pseudos.ts"],
|
|
4
|
+
"sourcesContent": ["export const pseudos = {\n focusStyle: {\n name: 'focus',\n priority: 3,\n },\n pressStyle: {\n name: 'active',\n priority: 2,\n },\n hoverStyle: {\n name: 'hover',\n priority: 1,\n },\n}\n"],
|
|
5
|
+
"mappings": "AAAO,MAAM,UAAU;AAAA,EACrB,YAAY;AAAA,IACV,MAAM;AAAA,IACN,UAAU;AAAA,EACZ;AAAA,EACA,YAAY;AAAA,IACV,MAAM;AAAA,IACN,UAAU;AAAA,EACZ;AAAA,EACA,YAAY;AAAA,IACV,MAAM;AAAA,IACN,UAAU;AAAA,EACZ;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -10,26 +10,33 @@ import React, {
|
|
|
10
10
|
memo,
|
|
11
11
|
useCallback,
|
|
12
12
|
useContext,
|
|
13
|
-
useEffect,
|
|
14
13
|
useRef,
|
|
15
14
|
useState
|
|
16
15
|
} from "react";
|
|
17
16
|
import { StyleSheet, Text, View } from "react-native";
|
|
18
17
|
import { onConfiguredOnce } from "./conf";
|
|
19
18
|
import { stackDefaultStyles } from "./constants/constants";
|
|
20
|
-
import { isAndroid, isTouchDevice, isWeb } from "./constants/platform";
|
|
19
|
+
import { isAndroid, isTouchDevice, isWeb, useIsomorphicLayoutEffect } from "./constants/platform";
|
|
21
20
|
import { rnw } from "./constants/rnw";
|
|
22
21
|
import { isVariable } from "./createVariable";
|
|
23
|
-
import {
|
|
22
|
+
import { createShallowUpdate } from "./helpers/createShallowUpdate";
|
|
24
23
|
import { extendStaticConfig, parseStaticConfig } from "./helpers/extendStaticConfig";
|
|
25
|
-
import {
|
|
26
|
-
|
|
27
|
-
} from "./helpers/getSplitStyles";
|
|
24
|
+
import { getSplitStyles } from "./helpers/getSplitStyles";
|
|
25
|
+
import { getAllSelectors } from "./helpers/insertStyleRule";
|
|
28
26
|
import { wrapThemeManagerContext } from "./helpers/wrapThemeManagerContext";
|
|
29
27
|
import { useFeatures } from "./hooks/useFeatures";
|
|
30
28
|
import { usePressable } from "./hooks/usePressable";
|
|
31
29
|
import { getThemeManagerIfChanged, useTheme } from "./hooks/useTheme";
|
|
32
30
|
import { TextAncestorContext } from "./views/TextAncestorContext";
|
|
31
|
+
React["keep"];
|
|
32
|
+
const defaultComponentState = {
|
|
33
|
+
hover: false,
|
|
34
|
+
press: false,
|
|
35
|
+
pressIn: false,
|
|
36
|
+
focus: false,
|
|
37
|
+
mounted: false,
|
|
38
|
+
animation: null
|
|
39
|
+
};
|
|
33
40
|
const mouseUps = /* @__PURE__ */ new Set();
|
|
34
41
|
if (typeof document !== "undefined") {
|
|
35
42
|
document.addEventListener("mouseup", () => {
|
|
@@ -37,76 +44,73 @@ if (typeof document !== "undefined") {
|
|
|
37
44
|
mouseUps.clear();
|
|
38
45
|
});
|
|
39
46
|
}
|
|
40
|
-
function
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
for (const key in next) {
|
|
44
|
-
if (prev[key] !== next[key]) {
|
|
45
|
-
return { ...prev, ...next };
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
return prev;
|
|
49
|
-
});
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
__name(createShallowUpdate, "createShallowUpdate");
|
|
53
|
-
function createComponent(configIn) {
|
|
54
|
-
let staticConfig;
|
|
55
|
-
if ("parsed" in configIn) {
|
|
56
|
-
staticConfig = configIn;
|
|
57
|
-
} else {
|
|
58
|
-
staticConfig = parseStaticConfig(configIn);
|
|
47
|
+
function mergeShorthands({ defaultProps }, { shorthands }) {
|
|
48
|
+
for (const key in defaultProps) {
|
|
49
|
+
defaultProps[shorthands[key] || key] = defaultProps[key];
|
|
59
50
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
51
|
+
}
|
|
52
|
+
__name(mergeShorthands, "mergeShorthands");
|
|
53
|
+
function createComponent(configIn, ParentComponent) {
|
|
54
|
+
const staticConfig = (() => {
|
|
55
|
+
const config = extendStaticConfig(configIn, ParentComponent);
|
|
56
|
+
if ("parsed" in config) {
|
|
57
|
+
return config;
|
|
58
|
+
} else {
|
|
59
|
+
return parseStaticConfig(config);
|
|
60
|
+
}
|
|
61
|
+
})();
|
|
62
|
+
const componentClassName = `is_${staticConfig.componentName}`;
|
|
63
63
|
let tamaguiConfig;
|
|
64
64
|
let AnimatedText;
|
|
65
65
|
let AnimatedView;
|
|
66
|
-
let avoidClasses =
|
|
67
|
-
let defaultPseudos = {};
|
|
66
|
+
let avoidClasses = true;
|
|
68
67
|
let defaultNativeStyle;
|
|
69
|
-
let defaultNativeStyleSheet
|
|
70
|
-
let defaultsClassName = null;
|
|
68
|
+
let defaultNativeStyleSheet;
|
|
71
69
|
let initialTheme;
|
|
72
|
-
let
|
|
70
|
+
let initialSplitStyles;
|
|
73
71
|
function addPseudoToStyles(styles, name, pseudos) {
|
|
74
72
|
const pseudoStyle = pseudos[name];
|
|
73
|
+
const shouldNestObject = isWeb && name !== "enterStyle" && name !== "exitStyle";
|
|
75
74
|
if (pseudoStyle) {
|
|
76
|
-
styles.push(
|
|
75
|
+
styles.push(shouldNestObject ? { [name]: pseudoStyle } : pseudoStyle);
|
|
77
76
|
}
|
|
78
|
-
const defaultPseudoStyle =
|
|
77
|
+
const defaultPseudoStyle = initialSplitStyles.pseudos[name];
|
|
79
78
|
if (defaultPseudoStyle) {
|
|
80
|
-
styles.push(
|
|
79
|
+
styles.push(shouldNestObject ? { [name]: defaultPseudoStyle } : defaultPseudoStyle);
|
|
81
80
|
}
|
|
82
81
|
}
|
|
83
82
|
__name(addPseudoToStyles, "addPseudoToStyles");
|
|
84
83
|
const component = forwardRef((props, forwardedRef) => {
|
|
85
84
|
var _a, _b, _c, _d;
|
|
85
|
+
const { Component, componentName, isText, isZStack } = staticConfig;
|
|
86
86
|
if (process.env.NODE_ENV === "development") {
|
|
87
87
|
if (props["debug"]) {
|
|
88
|
-
console.warn(componentName || (Component == null ? void 0 : Component.displayName) || (Component == null ? void 0 : Component.name) || "[Unnamed Component]", "
|
|
88
|
+
console.warn(staticConfig.componentName || (Component == null ? void 0 : Component.displayName) || (Component == null ? void 0 : Component.name) || "[Unnamed Component]", "debug on");
|
|
89
|
+
console.log("props in:", props);
|
|
89
90
|
if (props["debug"] === "break")
|
|
90
91
|
debugger;
|
|
91
92
|
}
|
|
92
93
|
}
|
|
93
94
|
const forceUpdate = useForceUpdate();
|
|
94
|
-
const theme = useTheme(props.theme, componentName, props, forceUpdate);
|
|
95
|
+
const theme = useTheme(props.theme, staticConfig.componentName, props, forceUpdate);
|
|
95
96
|
const [state, set_] = useState(defaultComponentState);
|
|
96
97
|
const setStateShallow = createShallowUpdate(set_);
|
|
97
|
-
const shouldAvoidClasses = !!(
|
|
98
|
-
const
|
|
99
|
-
const { viewProps: viewPropsIn, pseudos, medias, style, classNames } =
|
|
98
|
+
const shouldAvoidClasses = !!(props.animation && avoidClasses);
|
|
99
|
+
const splitStyles = getSplitStyles(props, staticConfig, theme, shouldAvoidClasses ? { ...state, noClassNames: true, resolveVariablesAs: "value" } : state, shouldAvoidClasses ? null : initialSplitStyles.classNames);
|
|
100
|
+
const { viewProps: viewPropsIn, pseudos, medias, style, classNames } = splitStyles;
|
|
100
101
|
const useAnimations = (_a = tamaguiConfig.animations) == null ? void 0 : _a.useAnimations;
|
|
101
102
|
const isAnimated = !!(useAnimations && props.animation);
|
|
102
|
-
const
|
|
103
|
+
const hasEnterStyle = !!props.enterStyle;
|
|
103
104
|
const features = useFeatures(props, {
|
|
104
105
|
forceUpdate,
|
|
105
106
|
setStateShallow,
|
|
106
107
|
useAnimations,
|
|
107
108
|
state,
|
|
108
|
-
style:
|
|
109
|
-
pseudos
|
|
109
|
+
style: props.animation ? { ...defaultNativeStyle, ...style } : null,
|
|
110
|
+
pseudos,
|
|
111
|
+
staticConfig,
|
|
112
|
+
theme,
|
|
113
|
+
onDidAnimate: props.onDidAnimate
|
|
110
114
|
});
|
|
111
115
|
const {
|
|
112
116
|
tag,
|
|
@@ -145,6 +149,7 @@ function createComponent(configIn) {
|
|
|
145
149
|
accessibilityRole,
|
|
146
150
|
collapsable,
|
|
147
151
|
focusable,
|
|
152
|
+
onClick,
|
|
148
153
|
theme: _themeProp,
|
|
149
154
|
defaultVariants,
|
|
150
155
|
onLayout,
|
|
@@ -160,15 +165,14 @@ function createComponent(configIn) {
|
|
|
160
165
|
}
|
|
161
166
|
const hasTextAncestor = isWeb ? useContext(TextAncestorContext) : false;
|
|
162
167
|
const hostRef = useRef(null);
|
|
163
|
-
const hasEnterStyle = !!props.enterStyle;
|
|
164
168
|
const internal = useRef();
|
|
165
169
|
if (!internal.current) {
|
|
166
170
|
internal.current = {
|
|
167
171
|
isMounted: true
|
|
168
172
|
};
|
|
169
173
|
}
|
|
170
|
-
|
|
171
|
-
if (hasEnterStyle) {
|
|
174
|
+
useIsomorphicLayoutEffect(() => {
|
|
175
|
+
if (typeof window !== "undefined" && (hasEnterStyle || props.animation)) {
|
|
172
176
|
setStateShallow({
|
|
173
177
|
mounted: true
|
|
174
178
|
});
|
|
@@ -178,7 +182,7 @@ function createComponent(configIn) {
|
|
|
178
182
|
mouseUps.delete(unPress);
|
|
179
183
|
internal.current.isMounted = false;
|
|
180
184
|
};
|
|
181
|
-
}, []);
|
|
185
|
+
}, [hasEnterStyle, props.animation]);
|
|
182
186
|
if (nativeID) {
|
|
183
187
|
viewProps.id = nativeID;
|
|
184
188
|
}
|
|
@@ -236,6 +240,7 @@ function createComponent(configIn) {
|
|
|
236
240
|
medias
|
|
237
241
|
];
|
|
238
242
|
if (!animationStyles) {
|
|
243
|
+
!state.mounted && addPseudoToStyles(styles, "enterStyle", pseudos);
|
|
239
244
|
state.hover && addPseudoToStyles(styles, "hoverStyle", pseudos);
|
|
240
245
|
state.focus && addPseudoToStyles(styles, "focusStyle", pseudos);
|
|
241
246
|
state.press && addPseudoToStyles(styles, "pressStyle", pseudos);
|
|
@@ -254,10 +259,11 @@ function createComponent(configIn) {
|
|
|
254
259
|
const className = classList.join(" ");
|
|
255
260
|
if (process.env.NODE_ENV === "development") {
|
|
256
261
|
if (props["debug"]) {
|
|
257
|
-
console.log(" \xBB className", { isStringElement, pseudos, state,
|
|
262
|
+
console.log(" \xBB 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]])) });
|
|
258
263
|
}
|
|
259
264
|
}
|
|
260
265
|
viewProps.className = className;
|
|
266
|
+
viewProps.style = animationStyles;
|
|
261
267
|
} else {
|
|
262
268
|
viewProps.style = styles;
|
|
263
269
|
}
|
|
@@ -294,7 +300,8 @@ function createComponent(configIn) {
|
|
|
294
300
|
viewProps.ref = forwardedRef;
|
|
295
301
|
}
|
|
296
302
|
}
|
|
297
|
-
const
|
|
303
|
+
const initialPseudos = initialSplitStyles.pseudos;
|
|
304
|
+
const attachPress = !!(pseudos && pseudos.pressStyle || initialPseudos && initialPseudos.pressStyle || onPress || onPressOut || onPressIn || onClick);
|
|
298
305
|
const isHoverable = isWeb && !isTouchDevice;
|
|
299
306
|
const attachHover = isHoverable && !!(pseudos && pseudos.hoverStyle || onHoverIn || onHoverOut || onMouseEnter || onMouseLeave);
|
|
300
307
|
const pressEventKey = isStringElement ? "onClick" : "onPress";
|
|
@@ -358,6 +365,7 @@ function createComponent(configIn) {
|
|
|
358
365
|
onPress == null ? void 0 : onPress(e);
|
|
359
366
|
unPress();
|
|
360
367
|
onPressOut == null ? void 0 : onPressOut(e);
|
|
368
|
+
onClick == null ? void 0 : onClick(e);
|
|
361
369
|
} : null
|
|
362
370
|
} : null;
|
|
363
371
|
let childEls = !children ? children : wrapThemeManagerContext(spacedChildren({
|
|
@@ -377,22 +385,6 @@ function createComponent(configIn) {
|
|
|
377
385
|
} : {
|
|
378
386
|
disabled: true
|
|
379
387
|
});
|
|
380
|
-
if (events) {
|
|
381
|
-
if (!isStringElement) {
|
|
382
|
-
Object.assign(viewProps, pressProps);
|
|
383
|
-
} else {
|
|
384
|
-
Object.assign(viewProps, events);
|
|
385
|
-
}
|
|
386
|
-
if (isWeb && isHoverable) {
|
|
387
|
-
childEls = /* @__PURE__ */ React.createElement("span", {
|
|
388
|
-
style: {
|
|
389
|
-
display: "contents"
|
|
390
|
-
},
|
|
391
|
-
onMouseEnter: events.onMouseEnter,
|
|
392
|
-
onMouseLeave: events.onMouseLeave
|
|
393
|
-
}, children);
|
|
394
|
-
}
|
|
395
|
-
}
|
|
396
388
|
let content;
|
|
397
389
|
if (isWeb) {
|
|
398
390
|
if (staticConfig.isReactNativeWeb) {
|
|
@@ -409,11 +401,28 @@ function createComponent(configIn) {
|
|
|
409
401
|
}
|
|
410
402
|
}
|
|
411
403
|
}
|
|
404
|
+
if (events) {
|
|
405
|
+
if (!isStringElement) {
|
|
406
|
+
Object.assign(viewProps, pressProps);
|
|
407
|
+
} else {
|
|
408
|
+
Object.assign(viewProps, events);
|
|
409
|
+
}
|
|
410
|
+
}
|
|
412
411
|
content = createElement(ViewComponent, viewProps, childEls);
|
|
412
|
+
if (isWeb && events && attachHover) {
|
|
413
|
+
content = /* @__PURE__ */ React.createElement("span", {
|
|
414
|
+
className: "tui_Hoverable",
|
|
415
|
+
style: {
|
|
416
|
+
display: "contents"
|
|
417
|
+
},
|
|
418
|
+
onMouseEnter: events.onMouseEnter,
|
|
419
|
+
onMouseLeave: events.onMouseLeave
|
|
420
|
+
}, content);
|
|
421
|
+
}
|
|
413
422
|
if (process.env.NODE_ENV === "development") {
|
|
414
423
|
if (props["debug"]) {
|
|
415
424
|
viewProps["debug"] = true;
|
|
416
|
-
console.log(" \xBB ", { propsIn: { ...props }, propsOut: { ...viewProps }, animationStyles, isStringElement, classNamesIn: (_c = props.className) == null ? void 0 : _c.split(" "), classNamesOut: (_d = viewProps.className) == null ? void 0 : _d.split(" "), pressProps, events, shouldAttach, ViewComponent, viewProps,
|
|
425
|
+
console.log(" \xBB ", { propsIn: { ...props }, propsOut: { ...viewProps }, state, splitStyles, animationStyles, isStringElement, classNamesIn: (_c = props.className) == null ? void 0 : _c.split(" "), classNamesOut: (_d = viewProps.className) == null ? void 0 : _d.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 });
|
|
417
426
|
}
|
|
418
427
|
}
|
|
419
428
|
if (features.length) {
|
|
@@ -421,23 +430,27 @@ function createComponent(configIn) {
|
|
|
421
430
|
}
|
|
422
431
|
return content;
|
|
423
432
|
});
|
|
433
|
+
component.displayName = staticConfig.componentName;
|
|
424
434
|
onConfiguredOnce((conf) => {
|
|
425
435
|
var _a, _b, _c, _d;
|
|
426
|
-
|
|
436
|
+
if (process.env.IS_STATIC === "is_static") {
|
|
437
|
+
return;
|
|
438
|
+
}
|
|
427
439
|
tamaguiConfig = conf;
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
440
|
+
mergeShorthands(staticConfig, tamaguiConfig);
|
|
441
|
+
avoidClasses = !!((_a = tamaguiConfig.animations) == null ? void 0 : _a.avoidClasses);
|
|
442
|
+
AnimatedText = (_b = tamaguiConfig.animations) == null ? void 0 : _b.Text;
|
|
443
|
+
AnimatedView = (_c = tamaguiConfig == null ? void 0 : tamaguiConfig.animations) == null ? void 0 : _c.View;
|
|
431
444
|
initialTheme = conf.themes[conf.defaultTheme || Object.keys(conf.themes)[0]];
|
|
432
|
-
|
|
445
|
+
initialSplitStyles = getSplitStyles(staticConfig.defaultProps, staticConfig, initialTheme, {
|
|
433
446
|
mounted: true,
|
|
434
|
-
|
|
447
|
+
hover: false,
|
|
448
|
+
press: false,
|
|
449
|
+
pressIn: false,
|
|
450
|
+
focus: false,
|
|
451
|
+
resolveVariablesAs: "both"
|
|
435
452
|
});
|
|
436
|
-
const {
|
|
437
|
-
if (isWeb) {
|
|
438
|
-
defaultsClassName = classNames;
|
|
439
|
-
}
|
|
440
|
-
defaultPseudos = pseudos;
|
|
453
|
+
const { style, viewProps } = initialSplitStyles;
|
|
441
454
|
defaultNativeStyle = {};
|
|
442
455
|
for (const key in style) {
|
|
443
456
|
const v = style[key];
|
|
@@ -446,13 +459,17 @@ function createComponent(configIn) {
|
|
|
446
459
|
defaultNativeStyleSheet = StyleSheet.create({
|
|
447
460
|
base: defaultNativeStyle
|
|
448
461
|
});
|
|
449
|
-
component.displayName = staticConfig.componentName;
|
|
450
462
|
component.defaultProps = {
|
|
451
463
|
...viewProps,
|
|
452
464
|
...component.defaultProps
|
|
453
465
|
};
|
|
454
|
-
if (process.env.NODE_ENV === "development" &&
|
|
455
|
-
|
|
466
|
+
if (process.env.NODE_ENV === "development" && ((_d = staticConfig.defaultProps) == null ? void 0 : _d.debug)) {
|
|
467
|
+
if (process.env.IS_STATIC !== "is_static") {
|
|
468
|
+
console.log(`\u{1F41B} [${staticConfig.componentName || "Component"}]`, {
|
|
469
|
+
staticConfig,
|
|
470
|
+
initialSplitStyles
|
|
471
|
+
});
|
|
472
|
+
}
|
|
456
473
|
}
|
|
457
474
|
});
|
|
458
475
|
let res = component;
|
|
@@ -460,25 +477,30 @@ function createComponent(configIn) {
|
|
|
460
477
|
res = memo(res);
|
|
461
478
|
}
|
|
462
479
|
res["staticConfig"] = {
|
|
463
|
-
validStyles:
|
|
480
|
+
validStyles: staticConfig.validStyles || stylePropsView,
|
|
464
481
|
...staticConfig
|
|
465
482
|
};
|
|
466
|
-
|
|
467
|
-
|
|
483
|
+
if (process.env.NODE_ENV === "development") {
|
|
484
|
+
res["whyDidYouRender"] = true;
|
|
485
|
+
}
|
|
486
|
+
res["extractable"] = (Component, conf) => {
|
|
487
|
+
Component["staticConfig"] = extendStaticConfig({
|
|
488
|
+
Component,
|
|
468
489
|
...conf,
|
|
469
490
|
neverFlatten: true,
|
|
470
491
|
defaultProps: {
|
|
471
|
-
...
|
|
492
|
+
...Component.defaultProps,
|
|
472
493
|
...conf == null ? void 0 : conf.defaultProps
|
|
473
494
|
}
|
|
474
|
-
});
|
|
475
|
-
return
|
|
495
|
+
}, res);
|
|
496
|
+
return Component;
|
|
476
497
|
};
|
|
477
498
|
return res;
|
|
478
499
|
}
|
|
479
500
|
__name(createComponent, "createComponent");
|
|
480
501
|
const Spacer = createComponent({
|
|
481
502
|
memo: true,
|
|
503
|
+
componentName: "Spacer",
|
|
482
504
|
defaultProps: {
|
|
483
505
|
...stackDefaultStyles,
|
|
484
506
|
size: true
|
|
@@ -558,49 +580,20 @@ function spacedChildren({
|
|
|
558
580
|
return next;
|
|
559
581
|
}
|
|
560
582
|
__name(spacedChildren, "spacedChildren");
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
continue;
|
|
570
|
-
for (const key in cur) {
|
|
571
|
-
const val = cur[key];
|
|
572
|
-
if (key !== "transform") {
|
|
573
|
-
if (!(key in res)) {
|
|
574
|
-
res[key] = val;
|
|
575
|
-
}
|
|
576
|
-
continue;
|
|
577
|
-
}
|
|
578
|
-
if (!res.transform) {
|
|
579
|
-
res.transform = val;
|
|
580
|
-
continue;
|
|
581
|
-
}
|
|
582
|
-
for (const t of val) {
|
|
583
|
-
const tkey = Object.keys(t)[0];
|
|
584
|
-
if (res.transform.find((existing) => tkey in existing)) {
|
|
585
|
-
continue;
|
|
586
|
-
}
|
|
587
|
-
res.transform.push(t);
|
|
588
|
-
}
|
|
583
|
+
function AbsoluteFill(props) {
|
|
584
|
+
return isWeb ? /* @__PURE__ */ React.createElement("div", {
|
|
585
|
+
style: {
|
|
586
|
+
position: "absolute",
|
|
587
|
+
top: 0,
|
|
588
|
+
left: 0,
|
|
589
|
+
right: 0,
|
|
590
|
+
bottom: 0
|
|
589
591
|
}
|
|
590
|
-
}
|
|
591
|
-
|
|
592
|
-
},
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
position: "absolute",
|
|
596
|
-
top: 0,
|
|
597
|
-
left: 0,
|
|
598
|
-
right: 0,
|
|
599
|
-
bottom: 0
|
|
600
|
-
}
|
|
601
|
-
}, props.children) : /* @__PURE__ */ React.createElement(View, {
|
|
602
|
-
style: StyleSheet.absoluteFill
|
|
603
|
-
}, props.child), "AbsoluteFill");
|
|
592
|
+
}, props.children) : /* @__PURE__ */ React.createElement(View, {
|
|
593
|
+
style: StyleSheet.absoluteFill
|
|
594
|
+
}, props.child);
|
|
595
|
+
}
|
|
596
|
+
__name(AbsoluteFill, "AbsoluteFill");
|
|
604
597
|
export {
|
|
605
598
|
AbsoluteFill,
|
|
606
599
|
Spacer,
|