@tamagui/core 1.0.1-beta.41 → 1.0.1-beta.44
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/createComponent.js +71 -29
- package/dist/cjs/createComponent.js.map +2 -2
- package/dist/cjs/createTamagui.js +2 -0
- package/dist/cjs/createTamagui.js.map +2 -2
- package/dist/cjs/createTokens.js +1 -1
- package/dist/cjs/createTokens.js.map +2 -2
- package/dist/cjs/createVariable.js +2 -1
- package/dist/cjs/createVariable.js.map +2 -2
- package/dist/cjs/helpers/extendStaticConfig.js +0 -1
- package/dist/cjs/helpers/extendStaticConfig.js.map +2 -2
- package/dist/cjs/helpers/getSize.js.map +2 -2
- package/dist/cjs/helpers/getStackSize.js +1 -1
- package/dist/cjs/helpers/getStackSize.js.map +2 -2
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +2 -2
- package/dist/cjs/styled.js.map +2 -2
- package/dist/cjs/types.js.map +1 -1
- package/dist/cjs/views/Slot.js +3 -9
- package/dist/cjs/views/Slot.js.map +2 -2
- package/dist/esm/createComponent.js +71 -30
- package/dist/esm/createComponent.js.map +2 -2
- package/dist/esm/createTamagui.js +2 -0
- package/dist/esm/createTamagui.js.map +2 -2
- package/dist/esm/createTokens.js +1 -1
- package/dist/esm/createTokens.js.map +2 -2
- package/dist/esm/createVariable.js +2 -1
- package/dist/esm/createVariable.js.map +2 -2
- package/dist/esm/helpers/extendStaticConfig.js +0 -4
- package/dist/esm/helpers/extendStaticConfig.js.map +2 -2
- package/dist/esm/helpers/getSize.js.map +2 -2
- package/dist/esm/helpers/getStackSize.js +1 -1
- package/dist/esm/helpers/getStackSize.js.map +2 -2
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +2 -2
- package/dist/esm/styled.js.map +2 -2
- package/dist/esm/views/Slot.js +3 -10
- package/dist/esm/views/Slot.js.map +2 -2
- package/dist/jsx/createComponent.js +67 -26
- package/dist/jsx/createTamagui.js +2 -0
- package/dist/jsx/createTokens.js +1 -1
- package/dist/jsx/createVariable.js +2 -1
- package/dist/jsx/helpers/extendStaticConfig.js +0 -4
- package/dist/jsx/helpers/getStackSize.js +1 -1
- package/dist/jsx/index.js +1 -0
- package/dist/jsx/views/Slot.js +3 -7
- package/package.json +6 -6
- package/types/createComponent.d.ts +23 -13
- package/types/createComponent.d.ts.map +1 -1
- package/types/createVariable.d.ts +3 -1
- package/types/createVariable.d.ts.map +1 -1
- package/types/helpers/extendStaticConfig.d.ts.map +1 -1
- package/types/helpers/getSize.d.ts +1 -1
- package/types/helpers/getSize.d.ts.map +1 -1
- package/types/helpers/getStackSize.d.ts +3 -3
- package/types/helpers/getStackSize.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 +2 -2
- package/types/styled.d.ts.map +1 -1
- package/types/types.d.ts +10 -8
- package/types/types.d.ts.map +1 -1
- package/types/views/Slot.d.ts.map +1 -1
|
@@ -52,6 +52,7 @@ var createComponent_exports = {};
|
|
|
52
52
|
__export(createComponent_exports, {
|
|
53
53
|
AbsoluteFill: () => AbsoluteFill,
|
|
54
54
|
Spacer: () => Spacer,
|
|
55
|
+
Unspaced: () => Unspaced,
|
|
55
56
|
createComponent: () => createComponent,
|
|
56
57
|
mouseUps: () => mouseUps,
|
|
57
58
|
spacedChildren: () => spacedChildren
|
|
@@ -144,7 +145,7 @@ function createComponent(configIn, ParentComponent) {
|
|
|
144
145
|
props = tamaguiDefaultProps && !props.asChild ? __spreadValues(__spreadValues({}, tamaguiDefaultProps), props) : props;
|
|
145
146
|
const { Component, isText, isZStack } = staticConfig;
|
|
146
147
|
const componentName = props.componentName || staticConfig.componentName;
|
|
147
|
-
const componentClassName = props.componentName ? `is_${props.componentName}` : defaultComponentClassName;
|
|
148
|
+
const componentClassName = props.asChild ? "" : props.componentName ? `is_${props.componentName}` : defaultComponentClassName;
|
|
148
149
|
if (process.env.NODE_ENV === "development") {
|
|
149
150
|
if (props["debug"]) {
|
|
150
151
|
console.log("\u26A0\uFE0F", componentName || (Component == null ? void 0 : Component.displayName) || (Component == null ? void 0 : Component.name) || "[Unnamed Component]", "debug on");
|
|
@@ -195,6 +196,7 @@ function createComponent(configIn, ParentComponent) {
|
|
|
195
196
|
onMouseEnter,
|
|
196
197
|
onMouseLeave,
|
|
197
198
|
hrefAttrs,
|
|
199
|
+
separator,
|
|
198
200
|
onClick,
|
|
199
201
|
theme: _themeProp,
|
|
200
202
|
defaultVariants
|
|
@@ -214,6 +216,7 @@ function createComponent(configIn, ParentComponent) {
|
|
|
214
216
|
"onMouseEnter",
|
|
215
217
|
"onMouseLeave",
|
|
216
218
|
"hrefAttrs",
|
|
219
|
+
"separator",
|
|
217
220
|
"onClick",
|
|
218
221
|
"theme",
|
|
219
222
|
"defaultVariants"
|
|
@@ -655,7 +658,13 @@ function createComponent(configIn, ParentComponent) {
|
|
|
655
658
|
if (process.env.NODE_ENV === "development" && props["debug"]) {
|
|
656
659
|
console.log(" \xBB className", { splitStyles, style: style2, isStringElement, pseudos, state, classNames, propsClassName: props.className, classList, className: className.trim().split(" "), themeClassName: theme.className, values: Object.fromEntries(Object.entries(classNames).map(([k, v]) => [v, (0, import_insertStyleRule.getAllSelectors)()[v]])) });
|
|
657
660
|
}
|
|
658
|
-
|
|
661
|
+
if (staticConfig.isReactNativeWeb) {
|
|
662
|
+
viewProps.dataSet = __spreadProps(__spreadValues({}, viewProps.dataSet), {
|
|
663
|
+
className
|
|
664
|
+
});
|
|
665
|
+
} else {
|
|
666
|
+
viewProps.className = className;
|
|
667
|
+
}
|
|
659
668
|
viewProps.style = style2;
|
|
660
669
|
} else {
|
|
661
670
|
viewProps.style = styles;
|
|
@@ -732,24 +741,21 @@ function createComponent(configIn, ParentComponent) {
|
|
|
732
741
|
onPress == null ? void 0 : onPress(e);
|
|
733
742
|
} : null
|
|
734
743
|
}) : null;
|
|
735
|
-
|
|
744
|
+
let childEls = !children || asChild ? children : (0, import_wrapThemeManagerContext.wrapThemeManagerContext)(spacedChildren({
|
|
745
|
+
separator,
|
|
736
746
|
children,
|
|
737
747
|
space,
|
|
738
748
|
direction: props.spaceDirection || "both",
|
|
739
749
|
isZStack
|
|
740
750
|
}), (0, import_useTheme.getThemeManagerIfChanged)(theme));
|
|
741
751
|
let content;
|
|
742
|
-
if (import_platform.isWeb) {
|
|
743
|
-
if (staticConfig.isReactNativeWeb) {
|
|
744
|
-
viewProps.dataSet = __spreadProps(__spreadValues({}, viewProps.dataSet), {
|
|
745
|
-
className: viewProps.className
|
|
746
|
-
});
|
|
747
|
-
}
|
|
748
|
-
}
|
|
749
752
|
if (asChild) {
|
|
750
753
|
elementType = import_Slot.Slot;
|
|
751
|
-
|
|
752
|
-
|
|
754
|
+
viewProps = __spreadProps(__spreadValues({}, viewProps), {
|
|
755
|
+
onPress,
|
|
756
|
+
onPressIn,
|
|
757
|
+
onPressOut
|
|
758
|
+
});
|
|
753
759
|
}
|
|
754
760
|
if (import_platform.isWeb) {
|
|
755
761
|
const [pressableProps] = (0, import_usePressable.usePressable)(events ? __spreadProps(__spreadValues({
|
|
@@ -878,6 +884,10 @@ function createComponent(configIn, ParentComponent) {
|
|
|
878
884
|
return res;
|
|
879
885
|
}
|
|
880
886
|
__name(createComponent, "createComponent");
|
|
887
|
+
const Unspaced = /* @__PURE__ */ __name((props) => {
|
|
888
|
+
return props.children;
|
|
889
|
+
}, "Unspaced");
|
|
890
|
+
Unspaced["isUnspaced"] = true;
|
|
881
891
|
const Spacer = createComponent({
|
|
882
892
|
memo: true,
|
|
883
893
|
componentName: "Spacer",
|
|
@@ -922,14 +932,16 @@ function spacedChildren({
|
|
|
922
932
|
children,
|
|
923
933
|
space,
|
|
924
934
|
direction,
|
|
925
|
-
spaceFlex
|
|
935
|
+
spaceFlex,
|
|
936
|
+
separator
|
|
926
937
|
}) {
|
|
927
|
-
|
|
938
|
+
const hasSpace = !!(space || spaceFlex);
|
|
939
|
+
const hasSeparator = !(separator === void 0 || separator === null);
|
|
940
|
+
if (!hasSpace && !hasSeparator) {
|
|
928
941
|
return children;
|
|
929
942
|
}
|
|
930
|
-
const childrenList =
|
|
931
|
-
|
|
932
|
-
if (len <= 1) {
|
|
943
|
+
const childrenList = import_react.Children.toArray(children);
|
|
944
|
+
if (childrenList.length <= 1) {
|
|
933
945
|
return childrenList;
|
|
934
946
|
}
|
|
935
947
|
const final = [];
|
|
@@ -943,24 +955,53 @@ function spacedChildren({
|
|
|
943
955
|
}, isZStack ? /* @__PURE__ */ import_react.default.createElement(AbsoluteFill, null, child) : child));
|
|
944
956
|
}
|
|
945
957
|
const next = childrenList[index + 1];
|
|
946
|
-
if (next && !
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
958
|
+
if (next && !isUnspaced(next)) {
|
|
959
|
+
if (separator) {
|
|
960
|
+
if (hasSpace) {
|
|
961
|
+
final.push(createSpacer({
|
|
962
|
+
key: `_${index}_before_sep_spacer`,
|
|
963
|
+
direction,
|
|
964
|
+
space,
|
|
965
|
+
spaceFlex
|
|
966
|
+
}));
|
|
967
|
+
}
|
|
968
|
+
final.push(import_react.default.isValidElement(separator) ? import_react.default.cloneElement(separator, { key: `sep_${index}` }) : separator);
|
|
969
|
+
if (hasSpace) {
|
|
970
|
+
final.push(createSpacer({
|
|
971
|
+
key: `_${index}_after_sep_spacer`,
|
|
972
|
+
direction,
|
|
973
|
+
space,
|
|
974
|
+
spaceFlex
|
|
975
|
+
}));
|
|
976
|
+
}
|
|
977
|
+
} else {
|
|
978
|
+
final.push(createSpacer({
|
|
979
|
+
key: `_${index}_spacer`,
|
|
980
|
+
direction,
|
|
981
|
+
space,
|
|
982
|
+
spaceFlex
|
|
983
|
+
}));
|
|
984
|
+
}
|
|
954
985
|
}
|
|
955
986
|
}
|
|
956
987
|
return final;
|
|
957
988
|
}
|
|
958
989
|
__name(spacedChildren, "spacedChildren");
|
|
959
|
-
function
|
|
960
|
-
|
|
961
|
-
|
|
990
|
+
function createSpacer({ key, direction, space, spaceFlex }) {
|
|
991
|
+
return /* @__PURE__ */ import_react.default.createElement(Spacer, __spreadValues({
|
|
992
|
+
key,
|
|
993
|
+
direction: direction === "both" ? void 0 : direction === "row" || direction === "row-reverse" ? "horizontal" : "vertical",
|
|
994
|
+
size: space
|
|
995
|
+
}, spaceFlex && {
|
|
996
|
+
flex: spaceFlex
|
|
997
|
+
}));
|
|
998
|
+
}
|
|
999
|
+
__name(createSpacer, "createSpacer");
|
|
1000
|
+
function isUnspaced(child) {
|
|
1001
|
+
var _a, _b;
|
|
1002
|
+
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"]);
|
|
962
1003
|
}
|
|
963
|
-
__name(
|
|
1004
|
+
__name(isUnspaced, "isUnspaced");
|
|
964
1005
|
function AbsoluteFill(props) {
|
|
965
1006
|
return import_platform.isWeb ? /* @__PURE__ */ import_react.default.createElement("div", {
|
|
966
1007
|
style: {
|
|
@@ -997,6 +1038,7 @@ const accessibilityRoleToWebRole = {
|
|
|
997
1038
|
0 && (module.exports = {
|
|
998
1039
|
AbsoluteFill,
|
|
999
1040
|
Spacer,
|
|
1041
|
+
Unspaced,
|
|
1000
1042
|
createComponent,
|
|
1001
1043
|
mouseUps,
|
|
1002
1044
|
spacedChildren
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/createComponent.tsx"],
|
|
4
|
-
"sourcesContent": ["import { stylePropsView } from '@tamagui/helpers'\nimport { useForceUpdate } from '@tamagui/use-force-update'\nimport React, {\n Children,\n Fragment,\n createElement,\n forwardRef,\n memo,\n useCallback,\n useContext,\n useRef,\n useState,\n} from 'react'\nimport { Pressable, StyleSheet, Text, View, ViewStyle } from 'react-native'\n\nimport { onConfiguredOnce } from './conf'\nimport { stackDefaultStyles } from './constants/constants'\nimport { isAndroid, isWeb, useIsomorphicLayoutEffect } from './constants/platform'\nimport { rnw } from './constants/rnw'\nimport { createShallowUpdate } from './helpers/createShallowUpdate'\nimport { extendStaticConfig, parseStaticConfig } from './helpers/extendStaticConfig'\nimport { SplitStyleResult, insertSplitStyles, useSplitStyles } from './helpers/getSplitStyles'\nimport { getAllSelectors } from './helpers/insertStyleRule'\nimport { BaseButton } from './helpers/nativeGestureHandler'\nimport { proxyThemeVariables } from './helpers/proxyThemeVariables'\nimport { wrapThemeManagerContext } from './helpers/wrapThemeManagerContext'\nimport { useFeatures } from './hooks/useFeatures'\nimport { useIsTouchDevice } from './hooks/useIsTouchDevice'\nimport { usePressable } from './hooks/usePressable'\nimport { getThemeManagerIfChanged, useTheme } from './hooks/useTheme'\nimport {\n SpaceDirection,\n SpaceTokens,\n StackProps,\n StaticConfig,\n StaticConfigParsed,\n StylableComponent,\n TamaguiComponent,\n TamaguiComponentState,\n TamaguiConfig,\n TamaguiInternalConfig,\n UseAnimationHook,\n} from './types'\nimport { Slot } from './views/Slot'\nimport { TextAncestorContext } from './views/TextAncestorContext'\n\nReact['keep']\n\nconst defaultComponentState: TamaguiComponentState = {\n hover: false,\n press: false,\n pressIn: false,\n focus: false,\n // only used by enterStyle\n mounted: false,\n animation: null,\n}\n\nexport const mouseUps = new Set<Function>()\nif (typeof document !== 'undefined') {\n document.addEventListener('mouseup', () => {\n mouseUps.forEach((x) => x())\n mouseUps.clear()\n })\n document.addEventListener('touchend', () => {\n mouseUps.forEach((x) => x())\n mouseUps.clear()\n })\n document.addEventListener('touchcancel', () => {\n mouseUps.forEach((x) => x())\n mouseUps.clear()\n })\n}\n\n// mutates\nfunction mergeShorthands({ defaultProps }: StaticConfigParsed, { shorthands }: TamaguiConfig) {\n // they are defined in correct order already { ...parent, ...child }\n for (const key in defaultProps) {\n defaultProps[shorthands[key] || key] = defaultProps[key]\n }\n}\n\nlet initialTheme: any\n\nexport function createComponent<\n ComponentPropTypes extends Object = {},\n Ref = View,\n BaseProps = never\n>(configIn: Partial<StaticConfig> | StaticConfigParsed, ParentComponent?: StylableComponent) {\n const staticConfig = (() => {\n const config = extendStaticConfig(configIn, ParentComponent)\n if ('parsed' in config) {\n return config\n } else {\n return parseStaticConfig(config)\n }\n })()\n\n const 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 function addPseudoToStyles(styles: any[], name: string, pseudos: any) {\n // on web use pseudo object { hoverStyle } to keep specificity with concatClassName\n const pseudoStyle = pseudos[name]\n const shouldNestObject = isWeb && name !== 'enterStyle' && name !== 'exitStyle'\n const defaultPseudoStyle = initialSplitStyles.pseudos[name]\n if (defaultPseudoStyle) {\n styles.push(shouldNestObject ? { [name]: defaultPseudoStyle } : defaultPseudoStyle)\n }\n if (pseudoStyle) {\n styles.push(shouldNestObject ? { [name]: pseudoStyle } : pseudoStyle)\n }\n }\n\n // see onConfiguredOnce below which attaches a name then to this component\n const component = forwardRef<Ref, ComponentPropTypes>((props: any, forwardedRef) => {\n // ridiculous fix because react inserts default props after your props for some reason...\n props = tamaguiDefaultProps && !props.asChild ? { ...tamaguiDefaultProps, ...props } : props\n\n const { Component, isText, isZStack } = staticConfig\n const componentName = props.componentName || staticConfig.componentName\n const componentClassName = props.componentName\n ? `is_${props.componentName}`\n : defaultComponentClassName\n\n if (process.env.NODE_ENV === 'development') {\n if (props['debug']) {\n // prettier-ignore\n console.log('\u26A0\uFE0F', componentName || Component?.displayName || Component?.name || '[Unnamed Component]', 'debug on')\n // keep separate react native warn touches every value on prop causing weird behavior\n console.log('props in:', props, Object.keys(props))\n if (props['debug'] === 'break') debugger\n }\n }\n\n const forceUpdate = useForceUpdate()\n const theme = useTheme(props.theme, componentName, props, forceUpdate)\n const [state, set_] = useState<TamaguiComponentState>(defaultComponentState)\n const setStateShallow = createShallowUpdate(set_)\n\n const shouldAvoidClasses = !!(props.animation && avoidClasses)\n const splitStyles = useSplitStyles(\n props,\n staticConfig,\n theme,\n !shouldAvoidClasses\n ? state\n : {\n ...state,\n noClassNames: true,\n resolveVariablesAs: 'value',\n },\n shouldAvoidClasses || props.asChild ? null : initialSplitStyles.classNames\n )\n\n const { viewProps: viewPropsIn, pseudos, medias, style, classNames } = splitStyles\n const useAnimations = tamaguiConfig.animations?.useAnimations as UseAnimationHook | undefined\n const isAnimated = !!(useAnimations && props.animation)\n const hasEnterStyle = !!props.enterStyle\n const hostRef = useRef<HTMLElement | View>(null)\n\n const features = useFeatures(props, {\n forceUpdate,\n setStateShallow,\n useAnimations,\n state,\n style: props.animation ? { ...defaultNativeStyle, ...style } : null,\n pseudos,\n staticConfig,\n theme,\n hostRef,\n onDidAnimate: props.onDidAnimate,\n })\n\n const {\n tag,\n hitSlop,\n asChild,\n children,\n onPress,\n onPressIn,\n onPressOut,\n onHoverIn,\n onHoverOut,\n space,\n disabled: disabledProp,\n onMouseDown,\n onMouseEnter,\n onMouseLeave,\n hrefAttrs,\n // ignore from here on out\n // for next/link compat etc\n // @ts-ignore\n onClick,\n theme: _themeProp,\n // @ts-ignore\n defaultVariants,\n\n ...nonTamaguiProps\n } = viewPropsIn\n\n // get the right component\n const isTaggable = !Component || typeof Component === 'string'\n const hasTextAncestor = isWeb ? useContext(TextAncestorContext) : false\n\n // default to tag, fallback to component (when both strings)\n const element = isWeb ? (isTaggable ? tag || Component : Component) : Component\n const BaseTextComponent = !isWeb ? Text : element || 'span'\n const BaseViewComponent = !isWeb ? View : element || (hasTextAncestor ? 'span' : 'div')\n let elementType = isText\n ? (isAnimated ? AnimatedText || Text : null) || BaseTextComponent\n : (isAnimated ? AnimatedView || View : null) || BaseViewComponent\n\n elementType = Component || elementType\n const isStringElement = typeof elementType === 'string'\n\n const disabled =\n (props.accessibilityState != null && props.accessibilityState.disabled === true) ||\n props.accessibilityDisabled\n\n // these can ultimately be for DOM, react-native-web views, or animated views\n // so the type is pretty loose\n let viewProps: Record<string, any>\n\n // if react-native-web view just pass all props down\n if (isWeb && !staticConfig.isReactNativeWeb) {\n // otherwise replicate react-native-web functionality\n const {\n onMoveShouldSetResponder,\n onMoveShouldSetResponderCapture,\n onResponderEnd,\n onResponderGrant,\n onResponderMove,\n onResponderReject,\n onResponderRelease,\n onResponderStart,\n onResponderTerminate,\n onResponderTerminationRequest,\n onScrollShouldSetResponder,\n onScrollShouldSetResponderCapture,\n onSelectionChangeShouldSetResponder,\n onSelectionChangeShouldSetResponderCapture,\n onStartShouldSetResponder,\n onStartShouldSetResponderCapture,\n nativeID,\n\n // @ts-ignore\n accessibilityActiveDescendant,\n // @ts-ignore\n accessibilityAtomic,\n // @ts-ignore\n accessibilityAutoComplete,\n // @ts-ignore\n accessibilityBusy,\n // @ts-ignore\n accessibilityChecked,\n // @ts-ignore\n accessibilityColumnCount,\n // @ts-ignore\n accessibilityColumnIndex,\n // @ts-ignore\n accessibilityColumnSpan,\n // @ts-ignore\n accessibilityControls,\n // @ts-ignore\n accessibilityCurrent,\n // @ts-ignore\n accessibilityDescribedBy,\n // @ts-ignore\n accessibilityDetails,\n // @ts-ignore\n accessibilityDisabled,\n // @ts-ignore\n accessibilityErrorMessage,\n // @ts-ignore\n accessibilityExpanded,\n // @ts-ignore\n accessibilityFlowTo,\n // @ts-ignore\n accessibilityHasPopup,\n // @ts-ignore\n accessibilityHidden,\n // @ts-ignore\n accessibilityInvalid,\n // @ts-ignore\n accessibilityKeyShortcuts,\n // @ts-ignore\n accessibilityLabel,\n // @ts-ignore\n accessibilityLabelledBy,\n // @ts-ignore\n accessibilityLevel,\n // @ts-ignore\n accessibilityLiveRegion,\n // @ts-ignore\n accessibilityModal,\n // @ts-ignore\n accessibilityMultiline,\n // @ts-ignore\n accessibilityMultiSelectable,\n // @ts-ignore\n accessibilityOrientation,\n // @ts-ignore\n accessibilityOwns,\n // @ts-ignore\n accessibilityPlaceholder,\n // @ts-ignore\n accessibilityPosInSet,\n // @ts-ignore\n accessibilityPressed,\n // @ts-ignore\n accessibilityReadOnly,\n // @ts-ignore\n accessibilityRequired,\n // @ts-ignore\n accessibilityRole,\n // @ts-ignore\n accessibilityRoleDescription,\n // @ts-ignore\n accessibilityRowCount,\n // @ts-ignore\n accessibilityRowIndex,\n // @ts-ignore\n accessibilityRowSpan,\n // @ts-ignore\n accessibilitySelected,\n // @ts-ignore\n accessibilitySetSize,\n // @ts-ignore\n accessibilitySort,\n // @ts-ignore\n accessibilityValueMax,\n // @ts-ignore\n accessibilityValueMin,\n // @ts-ignore\n accessibilityValueNow,\n // @ts-ignore\n accessibilityValueText,\n\n // deprecated\n accessible,\n accessibilityState,\n accessibilityValue,\n\n // android\n collapsable,\n focusable,\n\n onLayout,\n\n ...webProps\n } = nonTamaguiProps\n\n viewProps = webProps\n\n // adapted from react-native-web\n if (!viewProps.role && accessibilityRole) {\n if (accessibilityRole === 'none') {\n viewProps.role = 'presentation'\n } else {\n const webRole = accessibilityRoleToWebRole[accessibilityRole]\n if (webRole != null) {\n viewProps.role = webRole || accessibilityRole\n }\n }\n }\n const role = viewProps.role\n\n // adapted from react-native-web\n // ACCESSIBILITY\n if (accessibilityActiveDescendant != null) {\n viewProps['aria-activedescendant'] = accessibilityActiveDescendant\n }\n if (accessibilityAtomic != null) {\n viewProps['aria-atomic'] = accessibilityAtomic\n }\n if (accessibilityAutoComplete != null) {\n viewProps['aria-autocomplete'] = accessibilityAutoComplete\n }\n if (accessibilityBusy != null) {\n viewProps['aria-busy'] = accessibilityBusy\n }\n if (accessibilityChecked != null) {\n viewProps['aria-checked'] = accessibilityChecked\n }\n if (accessibilityColumnCount != null) {\n viewProps['aria-colcount'] = accessibilityColumnCount\n }\n if (accessibilityColumnIndex != null) {\n viewProps['aria-colindex'] = accessibilityColumnIndex\n }\n if (accessibilityColumnSpan != null) {\n viewProps['aria-colspan'] = accessibilityColumnSpan\n }\n if (accessibilityControls != null) {\n viewProps['aria-controls'] = processIDRefList(accessibilityControls)\n }\n if (accessibilityCurrent != null) {\n viewProps['aria-current'] = accessibilityCurrent\n }\n if (accessibilityDescribedBy != null) {\n viewProps['aria-describedby'] = processIDRefList(accessibilityDescribedBy)\n }\n if (accessibilityDetails != null) {\n viewProps['aria-details'] = accessibilityDetails\n }\n if (disabled === true) {\n viewProps['aria-disabled'] = true\n // Enhance with native semantics\n if (\n elementType === 'button' ||\n elementType === 'form' ||\n elementType === 'input' ||\n elementType === 'select' ||\n elementType === 'textarea'\n ) {\n viewProps.disabled = true\n }\n }\n if (accessibilityErrorMessage != null) {\n viewProps['aria-errormessage'] = accessibilityErrorMessage\n }\n if (accessibilityExpanded != null) {\n viewProps['aria-expanded'] = accessibilityExpanded\n }\n if (accessibilityFlowTo != null) {\n viewProps['aria-flowto'] = processIDRefList(accessibilityFlowTo)\n }\n if (accessibilityHasPopup != null) {\n viewProps['aria-haspopup'] = accessibilityHasPopup\n }\n if (accessibilityHidden === true) {\n viewProps['aria-hidden'] = accessibilityHidden\n }\n if (accessibilityInvalid != null) {\n viewProps['aria-invalid'] = accessibilityInvalid\n }\n if (accessibilityKeyShortcuts != null && Array.isArray(accessibilityKeyShortcuts)) {\n viewProps['aria-keyshortcuts'] = accessibilityKeyShortcuts.join(' ')\n }\n if (accessibilityLabel != null) {\n viewProps['aria-label'] = accessibilityLabel\n }\n if (accessibilityLabelledBy != null) {\n viewProps['aria-labelledby'] = processIDRefList(accessibilityLabelledBy)\n }\n if (accessibilityLevel != null) {\n viewProps['aria-level'] = accessibilityLevel\n }\n if (accessibilityLiveRegion != null) {\n viewProps['aria-live'] =\n accessibilityLiveRegion === 'none' ? 'off' : accessibilityLiveRegion\n }\n if (accessibilityModal != null) {\n viewProps['aria-modal'] = accessibilityModal\n }\n if (accessibilityMultiline != null) {\n viewProps['aria-multiline'] = accessibilityMultiline\n }\n if (accessibilityMultiSelectable != null) {\n viewProps['aria-multiselectable'] = accessibilityMultiSelectable\n }\n if (accessibilityOrientation != null) {\n viewProps['aria-orientation'] = accessibilityOrientation\n }\n if (accessibilityOwns != null) {\n viewProps['aria-owns'] = processIDRefList(accessibilityOwns)\n }\n if (accessibilityPlaceholder != null) {\n viewProps['aria-placeholder'] = accessibilityPlaceholder\n }\n if (accessibilityPosInSet != null) {\n viewProps['aria-posinset'] = accessibilityPosInSet\n }\n if (accessibilityPressed != null) {\n viewProps['aria-pressed'] = accessibilityPressed\n }\n if (accessibilityReadOnly != null) {\n viewProps['aria-readonly'] = accessibilityReadOnly\n // Enhance with native semantics\n if (elementType === 'input' || elementType === 'select' || elementType === 'textarea') {\n viewProps.readOnly = true\n }\n }\n if (accessibilityRequired != null) {\n viewProps['aria-required'] = accessibilityRequired\n // Enhance with native semantics\n if (elementType === 'input' || elementType === 'select' || elementType === 'textarea') {\n viewProps.required = true\n }\n }\n if (accessibilityRoleDescription != null) {\n viewProps['aria-roledescription'] = accessibilityRoleDescription\n }\n if (accessibilityRowCount != null) {\n viewProps['aria-rowcount'] = accessibilityRowCount\n }\n if (accessibilityRowIndex != null) {\n viewProps['aria-rowindex'] = accessibilityRowIndex\n }\n if (accessibilityRowSpan != null) {\n viewProps['aria-rowspan'] = accessibilityRowSpan\n }\n if (accessibilitySelected != null) {\n viewProps['aria-selected'] = accessibilitySelected\n }\n if (accessibilitySetSize != null) {\n viewProps['aria-setsize'] = accessibilitySetSize\n }\n if (accessibilitySort != null) {\n viewProps['aria-sort'] = accessibilitySort\n }\n if (accessibilityValueMax != null) {\n viewProps['aria-valuemax'] = accessibilityValueMax\n }\n if (accessibilityValueMin != null) {\n viewProps['aria-valuemin'] = accessibilityValueMin\n }\n if (accessibilityValueNow != null) {\n viewProps['aria-valuenow'] = accessibilityValueNow\n }\n if (accessibilityValueText != null) {\n viewProps['aria-valuetext'] = accessibilityValueText\n }\n\n if (nativeID) {\n viewProps.id = nativeID\n }\n\n if (!asChild) {\n rnw.useElementLayout(hostRef, onLayout)\n\n // from react-native-web\n rnw.useResponderEvents(hostRef, {\n onMoveShouldSetResponder,\n onMoveShouldSetResponderCapture,\n onResponderEnd,\n onResponderGrant,\n onResponderMove,\n onResponderReject,\n onResponderRelease,\n onResponderStart,\n onResponderTerminate,\n onResponderTerminationRequest,\n onScrollShouldSetResponder,\n onScrollShouldSetResponderCapture,\n onSelectionChangeShouldSetResponder,\n onSelectionChangeShouldSetResponderCapture,\n onStartShouldSetResponder,\n onStartShouldSetResponderCapture,\n })\n }\n\n // from react-native-web\n const platformMethodsRef = rnw.usePlatformMethods(viewProps)\n const setRef = rnw.useMergeRefs(hostRef, platformMethodsRef, forwardedRef)\n\n if (!isAnimated) {\n // @ts-ignore\n viewProps.ref = setRef\n } else {\n if (forwardedRef) {\n // @ts-ignore\n viewProps.ref = forwardedRef\n }\n }\n\n if (props.href != null && hrefAttrs != null) {\n const { download, rel, target } = hrefAttrs\n if (download != null) {\n viewProps.download = download\n }\n if (rel != null) {\n viewProps.rel = rel\n }\n if (typeof target === 'string') {\n viewProps.target = target.charAt(0) !== '_' ? '_' + target : target\n }\n }\n\n // FOCUS\n // \"focusable\" indicates that an element may be a keyboard tab-stop.\n const _focusable = focusable != null ? focusable : accessible\n if (_focusable === false) {\n viewProps.tabIndex = '-1'\n }\n if (\n // These native elements are focusable by default\n elementType === 'a' ||\n elementType === 'button' ||\n elementType === 'input' ||\n elementType === 'select' ||\n elementType === 'textarea'\n ) {\n if (_focusable === false || accessibilityDisabled === true) {\n viewProps.tabIndex = '-1'\n }\n } else if (\n // These roles are made focusable by default\n role === 'button' ||\n role === 'checkbox' ||\n role === 'link' ||\n role === 'radio' ||\n role === 'textbox' ||\n role === 'switch'\n ) {\n if (_focusable !== false) {\n viewProps.tabIndex = '0'\n }\n } else {\n // Everything else must explicitly set the prop\n if (_focusable === true) {\n viewProps.tabIndex = '0'\n }\n }\n } else {\n viewProps = nonTamaguiProps\n if (forwardedRef) {\n // @ts-ignore\n viewProps.ref = forwardedRef\n }\n }\n\n // from react-native-web\n if (process.env.NODE_ENV === 'development' && !isText && isWeb) {\n Children.toArray(props.children).forEach((item) => {\n if (typeof item === 'string') {\n console.error(`Unexpected text node: ${item}. A text node cannot be a child of a <View>.`)\n }\n })\n }\n\n // isMounted\n const internal = useRef<{ isMounted: boolean }>()\n if (!internal.current) {\n internal.current = {\n isMounted: true,\n }\n }\n\n useIsomorphicLayoutEffect(() => {\n // we need to use state to properly have mounted go from false => true\n if (typeof window !== 'undefined' && (hasEnterStyle || props.animation)) {\n // for SSR we never set mounted, ensuring enterStyle={{}} is set by default\n setStateShallow({\n mounted: true,\n })\n }\n\n internal.current!.isMounted = true\n return () => {\n mouseUps.delete(unPress)\n internal.current!.isMounted = false\n }\n }, [hasEnterStyle, props.animation])\n\n let styles: any[]\n\n const animationStyles = state.animation ? state.animation.style : null\n\n if (isStringElement && shouldAvoidClasses) {\n styles = {\n ...defaultNativeStyle,\n ...(animationStyles ?? style),\n ...medias,\n }\n } else {\n styles = [\n isWeb ? null : defaultNativeStyleSheet ? (defaultNativeStyleSheet.base as ViewStyle) : null,\n // parity w react-native-web, only for text in text\n // TODO this should be able to be done w css to replicate after extraction:\n // (.text .text { display: inline-flex; }) (but if they set display we'd need stronger precendence)\n // isText && hasTextAncestor && isWeb ? { display: 'inline-flex' } : null,\n animationStyles ?? style,\n medias,\n ]\n if (!animationStyles) {\n !state.mounted && addPseudoToStyles(styles, 'enterStyle', pseudos)\n state.hover && addPseudoToStyles(styles, 'hoverStyle', pseudos)\n state.focus && addPseudoToStyles(styles, 'focusStyle', pseudos)\n state.press && addPseudoToStyles(styles, 'pressStyle', pseudos)\n }\n }\n\n if (isWeb) {\n const fontFamilyName = isText\n ? props.fontFamily || staticConfig.defaultProps.fontFamily\n : null\n const fontFamily =\n fontFamilyName && fontFamilyName[0] === '$' ? fontFamilyName.slice(1) : null\n const classList = [\n componentName ? componentClassName : '',\n fontFamily ? `font_${fontFamily}` : '',\n theme.className,\n classNames ? Object.values(classNames).join(' ') : '',\n ]\n\n if (!shouldAvoidClasses) {\n if (classNames) {\n classList.push(Object.values(classNames).join(' '))\n }\n // TODO restore this to isText classList\n // hasTextAncestor === true && cssText.textHasAncestor,\n // TODO MOVE TO VARIANTS [number] [any]\n // numberOfLines != null && numberOfLines > 1 && cssText.textMultiLine,\n }\n\n const className = classList.join(' ')\n const style = animationStyles ?? splitStyles.style\n\n if (process.env.NODE_ENV === 'development' && props['debug']) {\n // prettier-ignore\n console.log(' \u00BB className', { splitStyles, style, isStringElement, pseudos, state, classNames, propsClassName: props.className, classList, className: className.trim().split(' '), themeClassName: theme.className, values: Object.fromEntries(Object.entries(classNames).map(([k, v]) => [v, getAllSelectors()[v]])) })\n }\n\n viewProps.className = className\n viewProps.style = style\n } else {\n viewProps.style = styles\n }\n\n // TODO need to loop active variants and see if they have matchin pseudos and apply as well\n const initialPseudos = initialSplitStyles.pseudos\n const attachPress = !!(\n (pseudos && pseudos.pressStyle) ||\n (initialPseudos && initialPseudos.pressStyle) ||\n onPress ||\n onPressOut ||\n onPressIn ||\n onClick\n )\n\n const isTouch = useIsTouchDevice()\n const isHoverable = isWeb && !isTouch\n const attachHover =\n isHoverable &&\n !!((pseudos && pseudos.hoverStyle) || onHoverIn || onHoverOut || onMouseEnter || onMouseLeave)\n\n const handlesPressEvents = !isStringElement && !asChild\n const pressKey = handlesPressEvents ? 'onPress' : 'onClick'\n const pressInKey = handlesPressEvents ? 'onPressIn' : 'onMouseDown'\n const pressOutKey = handlesPressEvents ? 'onPressOut' : 'onMouseUp'\n\n // check presence to prevent reparenting bugs, allows for onPress={x ? function : undefined} usage\n // while avoiding reparenting...\n // once proper reparenting is supported, we can remove this and use that...\n const shouldAttach =\n !asChild &&\n (attachPress ||\n attachHover ||\n 'pressStyle' in props ||\n 'onPress' in props ||\n 'onPressIn' in props ||\n 'onPressOut' in props ||\n (isWeb &&\n ('hoverStyle' in props ||\n 'onHoverIn' in props ||\n 'onHoverOut' in props ||\n 'onMouseEnter' in props ||\n 'onMouseLeave' in props)))\n\n const unPress = useCallback(() => {\n if (!internal.current!.isMounted) return\n setStateShallow({\n press: false,\n pressIn: false,\n })\n }, [])\n\n const events = shouldAttach\n ? {\n [pressOutKey]: attachPress\n ? (e) => {\n unPress()\n onPressOut?.(e)\n }\n : undefined,\n ...(isHoverable && {\n onMouseEnter: attachHover\n ? (e) => {\n let next: Partial<typeof state> = {}\n if (attachHover) {\n next.hover = true\n }\n if (state.pressIn) {\n next.press = true\n }\n if (Object.keys(next).length) {\n setStateShallow(next)\n }\n onHoverIn?.(e)\n onMouseEnter?.(e)\n }\n : undefined,\n onMouseLeave: attachHover\n ? (e) => {\n let next: Partial<typeof state> = {}\n mouseUps.add(unPress)\n if (attachHover) {\n next.hover = false\n }\n if (state.pressIn) {\n next.press = false\n next.pressIn = false\n }\n if (Object.keys(next).length) {\n setStateShallow(next)\n }\n onHoverOut?.(e)\n onMouseLeave?.(e)\n }\n : undefined,\n }),\n [pressInKey]: attachPress\n ? (e) => {\n setStateShallow({\n press: true,\n pressIn: true,\n })\n onPressIn?.(e)\n onMouseDown?.(e)\n if (isWeb) {\n mouseUps.add(unPress)\n }\n }\n : null,\n [pressKey]: attachPress\n ? (e) => {\n unPress()\n onClick?.(e)\n onPress?.(e)\n }\n : null,\n }\n : null\n\n const childEls =\n !children || asChild\n ? children\n : wrapThemeManagerContext(\n spacedChildren({\n children,\n space,\n direction: props.spaceDirection || 'both',\n isZStack,\n }),\n getThemeManagerIfChanged(theme)\n )\n\n let content: any\n\n // replicate react-native-web's `createElement`\n if (isWeb) {\n if (staticConfig.isReactNativeWeb) {\n viewProps.dataSet = {\n ...viewProps.dataSet,\n className: viewProps.className,\n }\n }\n }\n\n if (asChild) {\n elementType = Slot\n const onlyChild = React.Children.only(children)\n Object.assign(viewProps, onlyChild.props)\n }\n\n // EVENTS: web\n if (isWeb) {\n const [pressableProps] = usePressable(\n events\n ? {\n disabled,\n ...(hitSlop && {\n hitSlop,\n }),\n onPressOut: events[pressOutKey],\n onPressIn: events[pressInKey],\n onPress: events[pressKey],\n }\n : {\n disabled: true,\n }\n )\n if (events) {\n if (handlesPressEvents) {\n Object.assign(viewProps, pressableProps)\n } else {\n Object.assign(viewProps, events)\n }\n }\n }\n\n content = createElement(elementType, viewProps, childEls)\n\n // EVENTS native\n // native just wrap in <Pressable />\n if (process.env.TAMAGUI_TARGET === 'native') {\n if (attachPress && events) {\n content = (\n // bugfix: on native <Pressable /> pressing down and then moving finger off\n // doesn't actually turn off press styles\n // but react-native-gesture-handler doesn't pass GestureResponderEvent...\n <Pressable onPressIn={events[pressInKey]} onPress={events[pressKey]}>\n <BaseButton\n onActiveStateChange={(isActive) => {\n if (!isActive) {\n unPress()\n }\n }}\n >\n {content}\n </BaseButton>\n </Pressable>\n )\n }\n }\n\n if (isWeb && events && attachHover) {\n content = (\n <span\n className=\"tui_Hoverable\"\n style={{\n display: 'contents',\n }}\n onMouseEnter={events.onMouseEnter}\n onMouseLeave={events.onMouseLeave}\n >\n {content}\n </span>\n )\n }\n\n if (process.env.NODE_ENV === 'development') {\n if (props['debug']) {\n // prettier-ignore\n console.log(' \u00BB ', { propsIn: { ...props }, propsOut: { ...viewProps }, state, splitStyles, animationStyles, isStringElement, classNamesIn: props.className?.split(' '), classNamesOut: viewProps.className?.split(' '), events, shouldAttach, ViewComponent: elementType, viewProps, styles, pseudos, content, childEls, shouldAvoidClasses, avoidClasses, animation: props.animation, style, defaultNativeStyle, initialSplitStyles, ...(typeof window !== 'undefined' ? { theme, themeState: theme.__state, themeClassName: theme.className, staticConfig, tamaguiConfig } : null) })\n }\n }\n\n if (features.length) {\n return (\n <>\n {features}\n {content}\n </>\n )\n }\n\n return content\n })\n\n component.displayName = staticConfig.componentName\n\n // Once configuration is run and all components are registered\n // get default props + className and analyze styles\n onConfiguredOnce((conf) => {\n if (process.env.IS_STATIC === 'is_static') {\n // in static mode we just use these to lookup configuration\n return\n }\n\n tamaguiConfig = conf\n\n // do this to make sure shorthands don't duplicate with.. longhands\n mergeShorthands(staticConfig, tamaguiConfig)\n\n avoidClasses = !!tamaguiConfig.animations?.avoidClasses\n AnimatedText = tamaguiConfig.animations?.Text\n AnimatedView = tamaguiConfig?.animations?.View\n initialTheme =\n initialTheme ||\n proxyThemeVariables(conf.themes[conf.defaultTheme || Object.keys(conf.themes)[0]])\n initialSplitStyles = insertSplitStyles(staticConfig.defaultProps, staticConfig, initialTheme, {\n mounted: true,\n hover: false,\n press: false,\n pressIn: false,\n focus: false,\n resolveVariablesAs: 'both',\n keepVariantsAsProps: true,\n })\n\n // this ruins the prop order!!!\n // can't believe it but it puts default props after props?\n const defaults = {\n ...component.defaultProps,\n ...initialSplitStyles.viewProps,\n }\n\n defaultNativeStyle = {}\n\n const validStyles = staticConfig.validStyles || stylePropsView\n\n // split - keep variables on props to be processed using theme values at runtime (native)\n for (const key in staticConfig.defaultProps) {\n const val = staticConfig.defaultProps[key]\n if ((typeof val === 'string' && val[0] === '$') || !validStyles[key]) {\n defaults[key] = val\n } else {\n defaultNativeStyle[key] = val\n }\n }\n\n defaultNativeStyleSheet = StyleSheet.create({\n base: defaultNativeStyle,\n })\n\n if (Object.keys(defaults).length) {\n tamaguiDefaultProps = defaults\n }\n\n // add debug logs\n if (process.env.NODE_ENV === 'development' && staticConfig.defaultProps?.debug) {\n if (process.env.IS_STATIC !== 'is_static') {\n console.log(`\uD83D\uDC1B [${staticConfig.componentName || 'Component'}]`, {\n staticConfig,\n initialSplitStyles,\n tamaguiDefaultProps,\n defaultNativeStyle,\n defaults,\n })\n }\n }\n })\n\n let res: TamaguiComponent<ComponentPropTypes, Ref, BaseProps> = component as any\n\n if (configIn.memo) {\n res = memo(res) as any\n }\n\n res['staticConfig'] = {\n validStyles: staticConfig.validStyles || stylePropsView,\n ...staticConfig,\n }\n\n if (process.env.NODE_ENV === 'development') {\n res['whyDidYouRender'] = true\n }\n\n // res.extractable HoC\n res['extractable'] = (Component: any, conf?: Partial<StaticConfig>) => {\n Component['staticConfig'] = extendStaticConfig(\n {\n Component,\n ...conf,\n neverFlatten: true,\n defaultProps: {\n ...Component.defaultProps,\n ...conf?.defaultProps,\n },\n },\n res\n )\n return Component\n }\n\n return res\n}\n\n// dont used styled() here to avoid circular deps\n// keep inline to avoid circular deps\n\nexport const Spacer = createComponent<\n Omit<StackProps, 'flex' | 'direction'> & {\n size?: number | SpaceTokens\n flex?: boolean | number\n direction?: 'horizontal' | 'vertical'\n }\n>({\n memo: true,\n componentName: 'Spacer',\n defaultProps: {\n ...stackDefaultStyles,\n size: true,\n },\n variants: {\n size: {\n '...size': (size, { tokens }) => {\n size = size == true ? '$true' : size\n const sizePx = tokens.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 flex: 1,\n },\n },\n\n direction: {\n horizontal: {\n height: 0,\n minHeight: 0,\n },\n vertical: {\n width: 0,\n minWidth: 0,\n },\n },\n },\n\n defaultVariants: {\n direction: 'horizontal',\n },\n})\n\nexport function spacedChildren({\n isZStack,\n children,\n space,\n direction,\n spaceFlex,\n}: {\n isZStack?: boolean\n children: any\n space?: any\n spaceFlex?: boolean | number\n direction?: SpaceDirection\n}) {\n if (!space && !spaceFlex) {\n return children\n }\n const childrenList = Array.isArray(children) ? children : Children.toArray(children)\n const len = childrenList.length\n if (len <= 1) {\n return childrenList\n }\n const final: any[] = []\n for (const [index, child] of childrenList.entries()) {\n const isEmpty =\n child === null ||\n child === undefined ||\n child === false ||\n (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 const next = childrenList[index + 1]\n\n if (next && !isVisuallyHidden(next)) {\n final.push(\n <Spacer\n key={`_${index}_spacer`}\n direction={\n direction === 'both'\n ? undefined\n : direction === 'row' || direction === 'row-reverse'\n ? 'horizontal'\n : 'vertical'\n }\n size={space}\n {...(spaceFlex && {\n flex: spaceFlex,\n })}\n />\n )\n }\n }\n\n return final\n}\n\nfunction isVisuallyHidden(child: any) {\n return child?.['type']?.['isVisuallyHidden']\n}\n\nexport function AbsoluteFill(props: any) {\n return isWeb ? (\n <div\n style={\n {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n } as any\n }\n >\n {props.children}\n </div>\n ) : (\n <View style={StyleSheet.absoluteFill}>{props.child}</View>\n )\n}\n\n// this can be done with CSS entirely right?\n// const shouldWrapTextAncestor = isWeb && isText && !hasTextAncestor\n// if (shouldWrapTextAncestor) {\n// // from react-native-web\n// content = createElement(TextAncestorContext.Provider, { value: true }, content)\n// }\n\nfunction processIDRefList(idRefList: string | Array<string>): string {\n return Array.isArray(idRefList) ? idRefList.join(' ') : idRefList\n}\n\nconst 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"],
|
|
5
|
-
"mappings": "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ACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QAGA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAGA;AAAA,QACA;AAAA,QACA;AAAA,QAGA;AAAA,QACA;AAAA,QAEA;AAAA,UAGE,IADC,qBACD,IADC;AAAA,QA1HH;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QAGA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA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",
|
|
4
|
+
"sourcesContent": ["import { stylePropsView } from '@tamagui/helpers'\nimport { useForceUpdate } from '@tamagui/use-force-update'\nimport React, {\n Children,\n Fragment,\n createElement,\n forwardRef,\n memo,\n useCallback,\n useContext,\n useRef,\n useState,\n} from 'react'\nimport { Pressable, StyleSheet, Text, View, ViewStyle } from 'react-native'\n\nimport { onConfiguredOnce } from './conf'\nimport { stackDefaultStyles } from './constants/constants'\nimport { isWeb, useIsomorphicLayoutEffect } from './constants/platform'\nimport { rnw } from './constants/rnw'\nimport { createShallowUpdate } from './helpers/createShallowUpdate'\nimport { extendStaticConfig, parseStaticConfig } from './helpers/extendStaticConfig'\nimport { SplitStyleResult, insertSplitStyles, useSplitStyles } from './helpers/getSplitStyles'\nimport { getAllSelectors } from './helpers/insertStyleRule'\nimport { BaseButton } from './helpers/nativeGestureHandler'\nimport { proxyThemeVariables } from './helpers/proxyThemeVariables'\nimport { wrapThemeManagerContext } from './helpers/wrapThemeManagerContext'\nimport { useFeatures } from './hooks/useFeatures'\nimport { useIsTouchDevice } from './hooks/useIsTouchDevice'\nimport { usePressable } from './hooks/usePressable'\nimport { getThemeManagerIfChanged, useTheme } from './hooks/useTheme'\nimport {\n SpaceFlexDirection,\n SpaceTokens,\n StackProps,\n StaticConfig,\n StaticConfigParsed,\n StylableComponent,\n TamaguiComponent,\n TamaguiComponentState,\n TamaguiConfig,\n TamaguiElement,\n TamaguiInternalConfig,\n UseAnimationHook,\n} from './types'\nimport { Slot } from './views/Slot'\nimport { TextAncestorContext } from './views/TextAncestorContext'\n\nReact['keep']\n\nconst defaultComponentState: TamaguiComponentState = {\n hover: false,\n press: false,\n pressIn: false,\n focus: false,\n // only used by enterStyle\n mounted: false,\n animation: null,\n}\n\nexport const mouseUps = new Set<Function>()\nif (typeof document !== 'undefined') {\n document.addEventListener('mouseup', () => {\n mouseUps.forEach((x) => x())\n mouseUps.clear()\n })\n document.addEventListener('touchend', () => {\n mouseUps.forEach((x) => x())\n mouseUps.clear()\n })\n document.addEventListener('touchcancel', () => {\n mouseUps.forEach((x) => x())\n mouseUps.clear()\n })\n}\n\n// mutates\nfunction mergeShorthands({ defaultProps }: StaticConfigParsed, { shorthands }: TamaguiConfig) {\n // they are defined in correct order already { ...parent, ...child }\n for (const key in defaultProps) {\n defaultProps[shorthands[key] || key] = defaultProps[key]\n }\n}\n\nlet initialTheme: any\n\nexport function createComponent<\n ComponentPropTypes extends Object = {},\n Ref = TamaguiElement,\n BaseProps = never\n>(configIn: Partial<StaticConfig> | StaticConfigParsed, ParentComponent?: StylableComponent) {\n const staticConfig = (() => {\n const config = extendStaticConfig(configIn, ParentComponent)\n if ('parsed' in config) {\n return config\n } else {\n return parseStaticConfig(config)\n }\n })()\n\n const 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 function addPseudoToStyles(styles: any[], name: string, pseudos: any) {\n // on web use pseudo object { hoverStyle } to keep specificity with concatClassName\n const pseudoStyle = pseudos[name]\n const shouldNestObject = isWeb && name !== 'enterStyle' && name !== 'exitStyle'\n const defaultPseudoStyle = initialSplitStyles.pseudos[name]\n if (defaultPseudoStyle) {\n styles.push(shouldNestObject ? { [name]: defaultPseudoStyle } : defaultPseudoStyle)\n }\n if (pseudoStyle) {\n styles.push(shouldNestObject ? { [name]: pseudoStyle } : pseudoStyle)\n }\n }\n\n // see onConfiguredOnce below which attaches a name then to this component\n const component = forwardRef<Ref, ComponentPropTypes>((props: any, forwardedRef) => {\n // ridiculous fix because react inserts default props after your props for some reason...\n props = tamaguiDefaultProps && !props.asChild ? { ...tamaguiDefaultProps, ...props } : props\n\n const { Component, 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 // prettier-ignore\n console.log('\u26A0\uFE0F', componentName || Component?.displayName || Component?.name || '[Unnamed Component]', 'debug on')\n // keep separate react native warn touches every value on prop causing weird behavior\n console.log('props in:', props, Object.keys(props))\n if (props['debug'] === 'break') debugger\n }\n }\n\n const forceUpdate = useForceUpdate()\n const theme = useTheme(props.theme, componentName, props, forceUpdate)\n const [state, set_] = useState<TamaguiComponentState>(defaultComponentState)\n const setStateShallow = createShallowUpdate(set_)\n\n const shouldAvoidClasses = !!(props.animation && avoidClasses)\n const splitStyles = useSplitStyles(\n props,\n staticConfig,\n theme,\n !shouldAvoidClasses\n ? state\n : {\n ...state,\n noClassNames: true,\n resolveVariablesAs: 'value',\n },\n shouldAvoidClasses || props.asChild ? null : initialSplitStyles.classNames\n )\n\n const { viewProps: viewPropsIn, pseudos, medias, style, classNames } = splitStyles\n const useAnimations = tamaguiConfig.animations?.useAnimations as UseAnimationHook | undefined\n const isAnimated = !!(useAnimations && props.animation)\n const hasEnterStyle = !!props.enterStyle\n const hostRef = useRef<HTMLElement | View>(null)\n\n const features = useFeatures(props, {\n forceUpdate,\n setStateShallow,\n useAnimations,\n state,\n style: props.animation ? { ...defaultNativeStyle, ...style } : null,\n pseudos,\n staticConfig,\n theme,\n hostRef,\n onDidAnimate: props.onDidAnimate,\n })\n\n const {\n tag,\n hitSlop,\n asChild,\n children,\n onPress,\n onPressIn,\n onPressOut,\n onHoverIn,\n onHoverOut,\n space,\n disabled: disabledProp,\n onMouseDown,\n onMouseEnter,\n onMouseLeave,\n hrefAttrs,\n separator,\n // ignore from here on out\n // for next/link compat etc\n // @ts-ignore\n onClick,\n theme: _themeProp,\n // @ts-ignore\n defaultVariants,\n\n ...nonTamaguiProps\n } = viewPropsIn\n\n // get the right component\n const isTaggable = !Component || typeof Component === 'string'\n const hasTextAncestor = isWeb ? useContext(TextAncestorContext) : false\n\n // default to tag, fallback to component (when both strings)\n const element = isWeb ? (isTaggable ? tag || Component : Component) : Component\n const BaseTextComponent = !isWeb ? Text : element || 'span'\n const BaseViewComponent = !isWeb ? View : element || (hasTextAncestor ? 'span' : 'div')\n let elementType = isText\n ? (isAnimated ? AnimatedText || Text : null) || BaseTextComponent\n : (isAnimated ? AnimatedView || View : null) || BaseViewComponent\n\n elementType = Component || elementType\n const isStringElement = typeof elementType === 'string'\n\n const disabled =\n (props.accessibilityState != null && props.accessibilityState.disabled === true) ||\n props.accessibilityDisabled\n\n // these can ultimately be for DOM, react-native-web views, or animated views\n // so the type is pretty loose\n let viewProps: Record<string, any>\n\n // if react-native-web view just pass all props down\n if (isWeb && !staticConfig.isReactNativeWeb) {\n // otherwise replicate react-native-web functionality\n const {\n // event props\n onMoveShouldSetResponder,\n onMoveShouldSetResponderCapture,\n onResponderEnd,\n onResponderGrant,\n onResponderMove,\n onResponderReject,\n onResponderRelease,\n onResponderStart,\n onResponderTerminate,\n onResponderTerminationRequest,\n onScrollShouldSetResponder,\n onScrollShouldSetResponderCapture,\n onSelectionChangeShouldSetResponder,\n onSelectionChangeShouldSetResponderCapture,\n onStartShouldSetResponder,\n onStartShouldSetResponderCapture,\n\n // react-native props\n nativeID,\n\n // react-native-web accessibility props\n // @ts-ignore\n accessibilityActiveDescendant,\n // @ts-ignore\n accessibilityAtomic,\n // @ts-ignore\n accessibilityAutoComplete,\n // @ts-ignore\n accessibilityBusy,\n // @ts-ignore\n accessibilityChecked,\n // @ts-ignore\n accessibilityColumnCount,\n // @ts-ignore\n accessibilityColumnIndex,\n // @ts-ignore\n accessibilityColumnSpan,\n // @ts-ignore\n accessibilityControls,\n // @ts-ignore\n accessibilityCurrent,\n // @ts-ignore\n accessibilityDescribedBy,\n // @ts-ignore\n accessibilityDetails,\n // @ts-ignore\n accessibilityDisabled,\n // @ts-ignore\n accessibilityErrorMessage,\n // @ts-ignore\n accessibilityExpanded,\n // @ts-ignore\n accessibilityFlowTo,\n // @ts-ignore\n accessibilityHasPopup,\n // @ts-ignore\n accessibilityHidden,\n // @ts-ignore\n accessibilityInvalid,\n // @ts-ignore\n accessibilityKeyShortcuts,\n // @ts-ignore\n accessibilityLabel,\n // @ts-ignore\n accessibilityLabelledBy,\n // @ts-ignore\n accessibilityLevel,\n // @ts-ignore\n accessibilityLiveRegion,\n // @ts-ignore\n accessibilityModal,\n // @ts-ignore\n accessibilityMultiline,\n // @ts-ignore\n accessibilityMultiSelectable,\n // @ts-ignore\n accessibilityOrientation,\n // @ts-ignore\n accessibilityOwns,\n // @ts-ignore\n accessibilityPlaceholder,\n // @ts-ignore\n accessibilityPosInSet,\n // @ts-ignore\n accessibilityPressed,\n // @ts-ignore\n accessibilityReadOnly,\n // @ts-ignore\n accessibilityRequired,\n // @ts-ignore\n accessibilityRole,\n // @ts-ignore\n accessibilityRoleDescription,\n // @ts-ignore\n accessibilityRowCount,\n // @ts-ignore\n accessibilityRowIndex,\n // @ts-ignore\n accessibilityRowSpan,\n // @ts-ignore\n accessibilitySelected,\n // @ts-ignore\n accessibilitySetSize,\n // @ts-ignore\n accessibilitySort,\n // @ts-ignore\n accessibilityValueMax,\n // @ts-ignore\n accessibilityValueMin,\n // @ts-ignore\n accessibilityValueNow,\n // @ts-ignore\n accessibilityValueText,\n\n // deprecated\n accessible,\n accessibilityState,\n accessibilityValue,\n\n // android\n collapsable,\n focusable,\n\n onLayout,\n\n ...webProps\n } = nonTamaguiProps\n\n viewProps = webProps\n\n // adapted from react-native-web\n if (!viewProps.role && accessibilityRole) {\n if (accessibilityRole === 'none') {\n viewProps.role = 'presentation'\n } else {\n const webRole = accessibilityRoleToWebRole[accessibilityRole]\n if (webRole != null) {\n viewProps.role = webRole || accessibilityRole\n }\n }\n }\n const role = viewProps.role\n\n // adapted from react-native-web\n // ACCESSIBILITY\n if (accessibilityActiveDescendant != null) {\n viewProps['aria-activedescendant'] = accessibilityActiveDescendant\n }\n if (accessibilityAtomic != null) {\n viewProps['aria-atomic'] = accessibilityAtomic\n }\n if (accessibilityAutoComplete != null) {\n viewProps['aria-autocomplete'] = accessibilityAutoComplete\n }\n if (accessibilityBusy != null) {\n viewProps['aria-busy'] = accessibilityBusy\n }\n if (accessibilityChecked != null) {\n viewProps['aria-checked'] = accessibilityChecked\n }\n if (accessibilityColumnCount != null) {\n viewProps['aria-colcount'] = accessibilityColumnCount\n }\n if (accessibilityColumnIndex != null) {\n viewProps['aria-colindex'] = accessibilityColumnIndex\n }\n if (accessibilityColumnSpan != null) {\n viewProps['aria-colspan'] = accessibilityColumnSpan\n }\n if (accessibilityControls != null) {\n viewProps['aria-controls'] = processIDRefList(accessibilityControls)\n }\n if (accessibilityCurrent != null) {\n viewProps['aria-current'] = accessibilityCurrent\n }\n if (accessibilityDescribedBy != null) {\n viewProps['aria-describedby'] = processIDRefList(accessibilityDescribedBy)\n }\n if (accessibilityDetails != null) {\n viewProps['aria-details'] = accessibilityDetails\n }\n if (disabled === true) {\n viewProps['aria-disabled'] = true\n // Enhance with native semantics\n if (\n elementType === 'button' ||\n elementType === 'form' ||\n elementType === 'input' ||\n elementType === 'select' ||\n elementType === 'textarea'\n ) {\n viewProps.disabled = true\n }\n }\n if (accessibilityErrorMessage != null) {\n viewProps['aria-errormessage'] = accessibilityErrorMessage\n }\n if (accessibilityExpanded != null) {\n viewProps['aria-expanded'] = accessibilityExpanded\n }\n if (accessibilityFlowTo != null) {\n viewProps['aria-flowto'] = processIDRefList(accessibilityFlowTo)\n }\n if (accessibilityHasPopup != null) {\n viewProps['aria-haspopup'] = accessibilityHasPopup\n }\n if (accessibilityHidden === true) {\n viewProps['aria-hidden'] = accessibilityHidden\n }\n if (accessibilityInvalid != null) {\n viewProps['aria-invalid'] = accessibilityInvalid\n }\n if (accessibilityKeyShortcuts != null && Array.isArray(accessibilityKeyShortcuts)) {\n viewProps['aria-keyshortcuts'] = accessibilityKeyShortcuts.join(' ')\n }\n if (accessibilityLabel != null) {\n viewProps['aria-label'] = accessibilityLabel\n }\n if (accessibilityLabelledBy != null) {\n viewProps['aria-labelledby'] = processIDRefList(accessibilityLabelledBy)\n }\n if (accessibilityLevel != null) {\n viewProps['aria-level'] = accessibilityLevel\n }\n if (accessibilityLiveRegion != null) {\n viewProps['aria-live'] =\n accessibilityLiveRegion === 'none' ? 'off' : accessibilityLiveRegion\n }\n if (accessibilityModal != null) {\n viewProps['aria-modal'] = accessibilityModal\n }\n if (accessibilityMultiline != null) {\n viewProps['aria-multiline'] = accessibilityMultiline\n }\n if (accessibilityMultiSelectable != null) {\n viewProps['aria-multiselectable'] = accessibilityMultiSelectable\n }\n if (accessibilityOrientation != null) {\n viewProps['aria-orientation'] = accessibilityOrientation\n }\n if (accessibilityOwns != null) {\n viewProps['aria-owns'] = processIDRefList(accessibilityOwns)\n }\n if (accessibilityPlaceholder != null) {\n viewProps['aria-placeholder'] = accessibilityPlaceholder\n }\n if (accessibilityPosInSet != null) {\n viewProps['aria-posinset'] = accessibilityPosInSet\n }\n if (accessibilityPressed != null) {\n viewProps['aria-pressed'] = accessibilityPressed\n }\n if (accessibilityReadOnly != null) {\n viewProps['aria-readonly'] = accessibilityReadOnly\n // Enhance with native semantics\n if (elementType === 'input' || elementType === 'select' || elementType === 'textarea') {\n viewProps.readOnly = true\n }\n }\n if (accessibilityRequired != null) {\n viewProps['aria-required'] = accessibilityRequired\n // Enhance with native semantics\n if (elementType === 'input' || elementType === 'select' || elementType === 'textarea') {\n viewProps.required = true\n }\n }\n if (accessibilityRoleDescription != null) {\n viewProps['aria-roledescription'] = accessibilityRoleDescription\n }\n if (accessibilityRowCount != null) {\n viewProps['aria-rowcount'] = accessibilityRowCount\n }\n if (accessibilityRowIndex != null) {\n viewProps['aria-rowindex'] = accessibilityRowIndex\n }\n if (accessibilityRowSpan != null) {\n viewProps['aria-rowspan'] = accessibilityRowSpan\n }\n if (accessibilitySelected != null) {\n viewProps['aria-selected'] = accessibilitySelected\n }\n if (accessibilitySetSize != null) {\n viewProps['aria-setsize'] = accessibilitySetSize\n }\n if (accessibilitySort != null) {\n viewProps['aria-sort'] = accessibilitySort\n }\n if (accessibilityValueMax != null) {\n viewProps['aria-valuemax'] = accessibilityValueMax\n }\n if (accessibilityValueMin != null) {\n viewProps['aria-valuemin'] = accessibilityValueMin\n }\n if (accessibilityValueNow != null) {\n viewProps['aria-valuenow'] = accessibilityValueNow\n }\n if (accessibilityValueText != null) {\n viewProps['aria-valuetext'] = accessibilityValueText\n }\n\n if (nativeID) {\n viewProps.id = nativeID\n }\n\n if (!asChild) {\n rnw.useElementLayout(hostRef, onLayout)\n\n // from react-native-web\n rnw.useResponderEvents(hostRef, {\n onMoveShouldSetResponder,\n onMoveShouldSetResponderCapture,\n onResponderEnd,\n onResponderGrant,\n onResponderMove,\n onResponderReject,\n onResponderRelease,\n onResponderStart,\n onResponderTerminate,\n onResponderTerminationRequest,\n onScrollShouldSetResponder,\n onScrollShouldSetResponderCapture,\n onSelectionChangeShouldSetResponder,\n onSelectionChangeShouldSetResponderCapture,\n onStartShouldSetResponder,\n onStartShouldSetResponderCapture,\n })\n }\n\n // from react-native-web\n const platformMethodsRef = rnw.usePlatformMethods(viewProps)\n const setRef = rnw.useMergeRefs(hostRef, platformMethodsRef, forwardedRef)\n\n if (!isAnimated) {\n // @ts-ignore\n viewProps.ref = setRef\n } else {\n if (forwardedRef) {\n // @ts-ignore\n viewProps.ref = forwardedRef\n }\n }\n\n if (props.href != null && hrefAttrs != null) {\n const { download, rel, target } = hrefAttrs\n if (download != null) {\n viewProps.download = download\n }\n if (rel != null) {\n viewProps.rel = rel\n }\n if (typeof target === 'string') {\n viewProps.target = target.charAt(0) !== '_' ? '_' + target : target\n }\n }\n\n // FOCUS\n // \"focusable\" indicates that an element may be a keyboard tab-stop.\n const _focusable = focusable != null ? focusable : accessible\n if (_focusable === false) {\n viewProps.tabIndex = '-1'\n }\n if (\n // These native elements are focusable by default\n elementType === 'a' ||\n elementType === 'button' ||\n elementType === 'input' ||\n elementType === 'select' ||\n elementType === 'textarea'\n ) {\n if (_focusable === false || accessibilityDisabled === true) {\n viewProps.tabIndex = '-1'\n }\n } else if (\n // These roles are made focusable by default\n role === 'button' ||\n role === 'checkbox' ||\n role === 'link' ||\n role === 'radio' ||\n role === 'textbox' ||\n role === 'switch'\n ) {\n if (_focusable !== false) {\n viewProps.tabIndex = '0'\n }\n } else {\n // Everything else must explicitly set the prop\n if (_focusable === true) {\n viewProps.tabIndex = '0'\n }\n }\n } else {\n viewProps = nonTamaguiProps\n if (forwardedRef) {\n // @ts-ignore\n viewProps.ref = forwardedRef\n }\n }\n\n // from react-native-web\n if (process.env.NODE_ENV === 'development' && !isText && isWeb) {\n Children.toArray(props.children).forEach((item) => {\n if (typeof item === 'string') {\n console.error(`Unexpected text node: ${item}. A text node cannot be a child of a <View>.`)\n }\n })\n }\n\n // isMounted\n const internal = useRef<{ isMounted: boolean }>()\n if (!internal.current) {\n internal.current = {\n isMounted: true,\n }\n }\n\n useIsomorphicLayoutEffect(() => {\n // we need to use state to properly have mounted go from false => true\n if (typeof window !== 'undefined' && (hasEnterStyle || props.animation)) {\n // for SSR we never set mounted, ensuring enterStyle={{}} is set by default\n setStateShallow({\n mounted: true,\n })\n }\n\n internal.current!.isMounted = true\n return () => {\n mouseUps.delete(unPress)\n internal.current!.isMounted = false\n }\n }, [hasEnterStyle, props.animation])\n\n let styles: any[]\n\n const animationStyles = state.animation ? state.animation.style : null\n\n if (isStringElement && shouldAvoidClasses) {\n styles = {\n ...defaultNativeStyle,\n ...(animationStyles ?? style),\n ...medias,\n }\n } else {\n styles = [\n isWeb ? null : defaultNativeStyleSheet ? (defaultNativeStyleSheet.base as ViewStyle) : null,\n // parity w react-native-web, only for text in text\n // TODO this should be able to be done w css to replicate after extraction:\n // (.text .text { display: inline-flex; }) (but if they set display we'd need stronger precendence)\n // isText && hasTextAncestor && isWeb ? { display: 'inline-flex' } : null,\n animationStyles ?? style,\n medias,\n ]\n if (!animationStyles) {\n !state.mounted && addPseudoToStyles(styles, 'enterStyle', pseudos)\n state.hover && addPseudoToStyles(styles, 'hoverStyle', pseudos)\n state.focus && addPseudoToStyles(styles, 'focusStyle', pseudos)\n state.press && addPseudoToStyles(styles, 'pressStyle', pseudos)\n }\n }\n\n if (isWeb) {\n const fontFamilyName = isText\n ? props.fontFamily || staticConfig.defaultProps.fontFamily\n : null\n const fontFamily =\n fontFamilyName && fontFamilyName[0] === '$' ? fontFamilyName.slice(1) : null\n const classList = [\n componentName ? componentClassName : '',\n fontFamily ? `font_${fontFamily}` : '',\n theme.className,\n classNames ? Object.values(classNames).join(' ') : '',\n ]\n\n if (!shouldAvoidClasses) {\n if (classNames) {\n classList.push(Object.values(classNames).join(' '))\n }\n // TODO restore this to isText classList\n // hasTextAncestor === true && cssText.textHasAncestor,\n // TODO MOVE TO VARIANTS [number] [any]\n // numberOfLines != null && numberOfLines > 1 && cssText.textMultiLine,\n }\n\n const className = classList.join(' ')\n const style = animationStyles ?? splitStyles.style\n\n if (process.env.NODE_ENV === 'development' && props['debug']) {\n // prettier-ignore\n console.log(' \u00BB className', { splitStyles, style, isStringElement, pseudos, state, classNames, propsClassName: props.className, classList, className: className.trim().split(' '), themeClassName: theme.className, values: Object.fromEntries(Object.entries(classNames).map(([k, v]) => [v, getAllSelectors()[v]])) })\n }\n\n if (staticConfig.isReactNativeWeb) {\n viewProps.dataSet = {\n ...viewProps.dataSet,\n className: className,\n }\n } else {\n viewProps.className = className\n }\n\n viewProps.style = style\n } else {\n viewProps.style = styles\n }\n\n // TODO need to loop active variants and see if they have matchin pseudos and apply as well\n const initialPseudos = initialSplitStyles.pseudos\n const attachPress = !!(\n (pseudos && pseudos.pressStyle) ||\n (initialPseudos && initialPseudos.pressStyle) ||\n onPress ||\n onPressOut ||\n onPressIn ||\n onClick\n )\n\n const isTouch = useIsTouchDevice()\n const isHoverable = isWeb && !isTouch\n const attachHover =\n isHoverable &&\n !!((pseudos && pseudos.hoverStyle) || onHoverIn || onHoverOut || onMouseEnter || onMouseLeave)\n\n const handlesPressEvents = !isStringElement && !asChild\n const pressKey = handlesPressEvents ? 'onPress' : 'onClick'\n const pressInKey = handlesPressEvents ? 'onPressIn' : 'onMouseDown'\n const pressOutKey = handlesPressEvents ? 'onPressOut' : 'onMouseUp'\n\n // check presence to prevent reparenting bugs, allows for onPress={x ? function : undefined} usage\n // while avoiding reparenting...\n // once proper reparenting is supported, we can remove this and use that...\n const shouldAttach =\n !asChild &&\n (attachPress ||\n attachHover ||\n 'pressStyle' in props ||\n 'onPress' in props ||\n 'onPressIn' in props ||\n 'onPressOut' in props ||\n (isWeb &&\n ('hoverStyle' in props ||\n 'onHoverIn' in props ||\n 'onHoverOut' in props ||\n 'onMouseEnter' in props ||\n 'onMouseLeave' in props)))\n\n const unPress = useCallback(() => {\n if (!internal.current!.isMounted) return\n setStateShallow({\n press: false,\n pressIn: false,\n })\n }, [])\n\n const events = shouldAttach\n ? {\n [pressOutKey]: attachPress\n ? (e) => {\n unPress()\n onPressOut?.(e)\n }\n : undefined,\n ...(isHoverable && {\n onMouseEnter: attachHover\n ? (e) => {\n let next: Partial<typeof state> = {}\n if (attachHover) {\n next.hover = true\n }\n if (state.pressIn) {\n next.press = true\n }\n if (Object.keys(next).length) {\n setStateShallow(next)\n }\n onHoverIn?.(e)\n onMouseEnter?.(e)\n }\n : undefined,\n onMouseLeave: attachHover\n ? (e) => {\n let next: Partial<typeof state> = {}\n mouseUps.add(unPress)\n if (attachHover) {\n next.hover = false\n }\n if (state.pressIn) {\n next.press = false\n next.pressIn = false\n }\n if (Object.keys(next).length) {\n setStateShallow(next)\n }\n onHoverOut?.(e)\n onMouseLeave?.(e)\n }\n : undefined,\n }),\n [pressInKey]: attachPress\n ? (e) => {\n setStateShallow({\n press: true,\n pressIn: true,\n })\n onPressIn?.(e)\n onMouseDown?.(e)\n if (isWeb) {\n mouseUps.add(unPress)\n }\n }\n : null,\n [pressKey]: attachPress\n ? (e) => {\n unPress()\n onClick?.(e)\n onPress?.(e)\n }\n : null,\n }\n : null\n\n let childEls =\n !children || asChild\n ? children\n : wrapThemeManagerContext(\n spacedChildren({\n separator,\n children,\n space,\n direction: props.spaceDirection || 'both',\n isZStack,\n }),\n getThemeManagerIfChanged(theme)\n )\n\n let content: any\n\n if (asChild) {\n elementType = Slot\n viewProps = {\n ...viewProps,\n onPress,\n onPressIn,\n onPressOut,\n }\n }\n\n // if (asChild) {\n // elementType = Slot\n // const onlyChild = React.Children.only(children)\n // const { children: onlyChildren, ...restProps } = onlyChild.props\n // viewProps = { ...props, ...restProps }\n // // childEls = onlyChildren\n // delete viewProps['asChild']\n // }\n\n // EVENTS: web\n if (isWeb) {\n const [pressableProps] = usePressable(\n events\n ? {\n disabled,\n ...(hitSlop && {\n hitSlop,\n }),\n onPressOut: events[pressOutKey],\n onPressIn: events[pressInKey],\n onPress: events[pressKey],\n }\n : {\n disabled: true,\n }\n )\n if (events) {\n if (handlesPressEvents) {\n Object.assign(viewProps, pressableProps)\n } else {\n Object.assign(viewProps, events)\n }\n }\n }\n\n content = createElement(elementType, viewProps, childEls)\n\n // EVENTS native\n // native just wrap in <Pressable />\n if (process.env.TAMAGUI_TARGET === 'native') {\n if (attachPress && events) {\n content = (\n // bugfix: on native <Pressable /> pressing down and then moving finger off\n // doesn't actually turn off press styles\n // but react-native-gesture-handler doesn't pass GestureResponderEvent...\n <Pressable onPressIn={events[pressInKey]} onPress={events[pressKey]}>\n <BaseButton\n onActiveStateChange={(isActive) => {\n if (!isActive) {\n unPress()\n }\n }}\n >\n {content}\n </BaseButton>\n </Pressable>\n )\n }\n }\n\n if (isWeb && events && attachHover) {\n content = (\n <span\n className=\"tui_Hoverable\"\n style={{\n display: 'contents',\n }}\n onMouseEnter={events.onMouseEnter}\n onMouseLeave={events.onMouseLeave}\n >\n {content}\n </span>\n )\n }\n\n if (process.env.NODE_ENV === 'development') {\n if (props['debug']) {\n // prettier-ignore\n console.log(' \u00BB ', { propsIn: { ...props }, propsOut: { ...viewProps }, state, splitStyles, animationStyles, isStringElement, classNamesIn: props.className?.split(' '), classNamesOut: viewProps.className?.split(' '), events, shouldAttach, ViewComponent: elementType, viewProps, styles, pseudos, content, childEls, shouldAvoidClasses, avoidClasses, animation: props.animation, style, defaultNativeStyle, initialSplitStyles, ...(typeof window !== 'undefined' ? { theme, themeState: theme.__state, themeClassName: theme.className, staticConfig, tamaguiConfig } : null) })\n }\n }\n\n if (features.length) {\n return (\n <>\n {features}\n {content}\n </>\n )\n }\n\n return content\n })\n\n component.displayName = staticConfig.componentName\n\n // Once configuration is run and all components are registered\n // get default props + className and analyze styles\n onConfiguredOnce((conf) => {\n if (process.env.IS_STATIC === 'is_static') {\n // in static mode we just use these to lookup configuration\n return\n }\n\n tamaguiConfig = conf\n\n // do this to make sure shorthands don't duplicate with.. longhands\n mergeShorthands(staticConfig, tamaguiConfig)\n\n avoidClasses = !!tamaguiConfig.animations?.avoidClasses\n AnimatedText = tamaguiConfig.animations?.Text\n AnimatedView = tamaguiConfig?.animations?.View\n initialTheme =\n initialTheme ||\n proxyThemeVariables(conf.themes[conf.defaultTheme || Object.keys(conf.themes)[0]])\n initialSplitStyles = insertSplitStyles(staticConfig.defaultProps, staticConfig, initialTheme, {\n mounted: true,\n hover: false,\n press: false,\n pressIn: false,\n focus: false,\n resolveVariablesAs: 'both',\n keepVariantsAsProps: true,\n })\n\n // this ruins the prop order!!!\n // can't believe it but it puts default props after props?\n const defaults = {\n ...component.defaultProps,\n ...initialSplitStyles.viewProps,\n }\n\n defaultNativeStyle = {}\n\n const validStyles = staticConfig.validStyles || stylePropsView\n\n // split - keep variables on props to be processed using theme values at runtime (native)\n for (const key in staticConfig.defaultProps) {\n const val = staticConfig.defaultProps[key]\n if ((typeof val === 'string' && val[0] === '$') || !validStyles[key]) {\n defaults[key] = val\n } else {\n defaultNativeStyle[key] = val\n }\n }\n\n defaultNativeStyleSheet = StyleSheet.create({\n base: defaultNativeStyle,\n })\n\n if (Object.keys(defaults).length) {\n tamaguiDefaultProps = defaults\n }\n\n // add debug logs\n if (process.env.NODE_ENV === 'development' && staticConfig.defaultProps?.debug) {\n if (process.env.IS_STATIC !== 'is_static') {\n console.log(`\uD83D\uDC1B [${staticConfig.componentName || 'Component'}]`, {\n staticConfig,\n initialSplitStyles,\n tamaguiDefaultProps,\n defaultNativeStyle,\n defaults,\n })\n }\n }\n })\n\n let res: TamaguiComponent<ComponentPropTypes, Ref, BaseProps> = component as any\n\n if (configIn.memo) {\n res = memo(res) as any\n }\n\n res['staticConfig'] = {\n validStyles: staticConfig.validStyles || stylePropsView,\n ...staticConfig,\n }\n\n if (process.env.NODE_ENV === 'development') {\n res['whyDidYouRender'] = true\n }\n\n // res.extractable HoC\n res['extractable'] = (Component: any, conf?: Partial<StaticConfig>) => {\n Component['staticConfig'] = extendStaticConfig(\n {\n Component,\n ...conf,\n neverFlatten: true,\n defaultProps: {\n ...Component.defaultProps,\n ...conf?.defaultProps,\n },\n },\n res\n )\n return Component\n }\n\n return res\n}\n\n// 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\ntype SpaceDirection = 'vertical' | 'horizontal'\n\nexport type SpacerProps = Omit<StackProps, 'flex' | 'direction'> & {\n size?: number | SpaceTokens\n flex?: boolean | number\n direction?: SpaceDirection\n}\nexport const Spacer = createComponent<SpacerProps>({\n memo: true,\n componentName: 'Spacer',\n defaultProps: {\n ...stackDefaultStyles,\n size: true,\n },\n variants: {\n size: {\n '...size': (size, { tokens }) => {\n size = size == true ? '$true' : size\n const sizePx = tokens.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 flex: 1,\n },\n },\n\n direction: {\n horizontal: {\n height: 0,\n minHeight: 0,\n },\n vertical: {\n width: 0,\n minWidth: 0,\n },\n },\n },\n\n defaultVariants: {\n direction: 'horizontal',\n },\n})\n\nexport type SpacedChildrenProps = {\n isZStack?: boolean\n children?: any\n space?: any\n spaceFlex?: boolean | number\n direction?: SpaceFlexDirection\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) {\n return children\n }\n const childrenList = Children.toArray(children)\n if (childrenList.length <= 1) {\n return childrenList\n }\n const final: any[] = []\n for (const [index, child] of childrenList.entries()) {\n const isEmpty =\n child === null ||\n child === undefined ||\n child === false ||\n (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 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 direction={\n direction === 'both'\n ? undefined\n : direction === 'row' || direction === 'row-reverse'\n ? 'horizontal'\n : 'vertical'\n }\n size={space}\n {...(spaceFlex && {\n flex: spaceFlex,\n })}\n />\n )\n}\n\nfunction isUnspaced(child: any) {\n return child?.['type']?.['isVisuallyHidden'] || child?.['type']?.['isUnspaced']\n}\n\nexport function AbsoluteFill(props: any) {\n return isWeb ? (\n <div\n style={\n {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n } as any\n }\n >\n {props.children}\n </div>\n ) : (\n <View style={StyleSheet.absoluteFill}>{props.child}</View>\n )\n}\n\n// this can be done with CSS entirely right?\n// const shouldWrapTextAncestor = isWeb && isText && !hasTextAncestor\n// if (shouldWrapTextAncestor) {\n// // from react-native-web\n// content = createElement(TextAncestorContext.Provider, { value: true }, content)\n// }\n\nfunction processIDRefList(idRefList: string | Array<string>): string {\n return Array.isArray(idRefList) ? idRefList.join(' ') : idRefList\n}\n\nconst 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"],
|
|
5
|
+
"mappings": "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ACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QAGA;AAAA,QAIA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAGA;AAAA,QACA;AAAA,QACA;AAAA,QAGA;AAAA,QACA;AAAA,QAEA;AAAA,UAGE,IADC,qBACD,IADC;AAAA,QA7HH;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QAGA;AAAA,QAIA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -227,12 +227,14 @@ function ensureThemeVariable(theme, key) {
|
|
|
227
227
|
const val = theme[key];
|
|
228
228
|
if (!(0, import_createVariable.isVariable)(val)) {
|
|
229
229
|
theme[key] = (0, import_createVariable.createVariable)({
|
|
230
|
+
key,
|
|
230
231
|
name: key,
|
|
231
232
|
val
|
|
232
233
|
});
|
|
233
234
|
} else {
|
|
234
235
|
if (val.name !== key) {
|
|
235
236
|
theme[key] = (0, import_createVariable.createVariable)({
|
|
237
|
+
key,
|
|
236
238
|
name: key,
|
|
237
239
|
val: val.val
|
|
238
240
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/createTamagui.ts"],
|
|
4
|
-
"sourcesContent": ["import { configListeners, getHasConfigured, setConfig } from './conf'\nimport { THEME_CLASSNAME_PREFIX } from './constants/constants'\nimport { isWeb } from './constants/platform'\nimport { Variable, createCSSVariable, createVariable, isVariable } from './createVariable'\nimport { createTamaguiProvider } from './helpers/createTamaguiProvider'\nimport { getInsertedRules } from './helpers/insertStyleRule'\nimport { configureMedia } from './hooks/useMedia'\nimport {\n AnimationDriver,\n CreateTamaguiConfig,\n GenericTamaguiConfig,\n MediaQueryKey,\n TamaguiInternalConfig,\n} from './types'\n\nexport type CreateTamaguiProps =\n // user then re-defines the types after createTamagui returns the typed object they want\n Partial<Omit<GenericTamaguiConfig, 'themes' | 'tokens' | 'animations'>> & {\n animations?: AnimationDriver<any>\n tokens: GenericTamaguiConfig['tokens']\n themes: {\n [key: string]: {\n [key: string]: string | number | Variable\n }\n }\n\n // for the first render, determines which media queries are true\n // useful for SSR\n mediaQueryDefaultActive?: MediaQueryKey[]\n\n // what's between each CSS style rule, set to \"\\n\" to be easier to read\n // defaults: \"\\n\" when NODE_ENV=development, \"\" otherwise\n cssStyleSeparator?: string\n\n // (Advanced)\n // on the web, tamagui treats `dark` and `light` themes as special and\n // generates extra CSS to avoid having to re-render the entire page.\n // this CSS relies on specificity hacks that multiply by your sub-themes.\n // this sets the maxiumum number of nested dark/light themes you can do\n // defaults to 3 for a balance, but can be higher if you nest them deeply.\n maxDarkLightNesting?: number\n\n // adds @media(prefers-color-scheme) media queries for dark/light\n shouldAddPrefersColorThemes?: boolean\n\n // only if you put the theme classname on the html element we have to generate diff\n themeClassNameOnRoot?: boolean\n }\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 config: Conf\n): Conf extends Partial<CreateTamaguiConfig<infer A, infer B, infer C, infer D, infer E, infer F>>\n ? TamaguiInternalConfig<A, B, C, D, E, F>\n : unknown {\n if (createdConfigs.has(config)) {\n return config as any\n }\n\n if (process.env.NODE_ENV === 'development') {\n if (!config.tokens) {\n throw new Error(`No tokens provided to Tamagui config`)\n }\n if (!config.themes) {\n throw new Error(`No themes provided to Tamagui config`)\n }\n }\n\n // test env loads a few times as it runs diff tests\n if (getHasConfigured()) {\n console.warn('Called createTamagui twice! Should never do so')\n // throw new Error(`#000 createTamagui called twice`)\n }\n\n configureMedia({\n queries: config.media as any,\n defaultActive: config.mediaQueryDefaultActive,\n })\n\n const themeConfig = (() => {\n let cssRules: string[] = []\n const varsByValue = new Map<string, Variable>()\n\n if (isWeb) {\n // tokens\n const tokenRules = new Set<string>()\n\n const addVar = (v: Variable) => {\n varsByValue[v.val] = v\n const rule = `--${createCSSVariable(v.name, false)}:${\n typeof v.val === 'number' ? `${v.val}px` : v.val\n }`\n tokenRules.add(rule)\n }\n\n for (const key in config.tokens) {\n for (const skey in config.tokens[key]) {\n const val = config.tokens[key][skey]\n if (key === 'font') {\n for (const fkey in val) {\n if (fkey === 'family') {\n addVar(val[fkey])\n } else {\n for (const fskey in val[fkey]) {\n addVar(val[fkey][fskey])\n }\n }\n }\n } else {\n addVar(val)\n }\n }\n }\n const sep = process.env.NODE_ENV === 'development' ? config.cssStyleSeparator || ' ' : ''\n cssRules.push(`:root {${sep}${[...tokenRules].join(`;${sep}`)}${sep}}`)\n }\n\n // special case for SSR\n const hasDarkLight = 'light' in config.themes && 'dark' in config.themes\n const CNP = `.${THEME_CLASSNAME_PREFIX}`\n\n // themes\n for (const themeName in config.themes) {\n // to allow using the same theme with diff names, be sure we don't mutate!\n const theme = { ...config.themes[themeName] }\n config.themes[themeName] = theme\n let vars = ''\n\n for (const themeKey in theme) {\n if (isWeb) {\n const val = theme[themeKey]\n // TODO sanity check is necessary\n const varName = val instanceof Variable ? val.name : varsByValue[val]?.name\n vars += `--${themeKey}:${varName ? createCSSVariable(varName) : `${val}`};`\n }\n // make sure properly names theme variables\n ensureThemeVariable(theme, themeKey)\n }\n\n if (isWeb) {\n const isDarkOrLightBase = themeName === 'dark' || themeName === 'light'\n const isDark = themeName.startsWith('dark')\n const selector = `${CNP}${themeName}`\n const selectors = [selector]\n\n // since we dont specify dark/light in classnames we have to do an awkward specificity war\n // use config.maxDarkLightNesting to determine how deep you can nest until it breaks\n if (hasDarkLight) {\n const childSelector = `${CNP}${themeName.replace('dark_', '').replace('light_', '')}`\n const order = isDark ? ['dark', 'light'] : ['light', 'dark']\n if (isDarkOrLightBase) {\n order.reverse()\n }\n const [stronger, weaker] = order\n const max = config.maxDarkLightNesting ?? 3\n new Array(max * 2).fill(undefined).forEach((_, pi) => {\n if (pi % 2 === 1) return\n const parents = new Array(pi + 1).fill(undefined).map((_, psi) => {\n return `${CNP}${psi % 2 === 0 ? stronger : weaker}`\n })\n selectors.push(\n `${(parents.length > 1 ? parents.slice(1) : parents).join(' ')} ${childSelector}`\n )\n })\n }\n\n const rootSep = config.themeClassNameOnRoot ? '' : ' '\n cssRules.push(`${selectors.map((x) => `:root${rootSep}${x}`).join(', ')} {${vars}}`)\n\n if (config.shouldAddPrefersColorThemes ?? true) {\n // add media prefers for dark/light base\n if (isDarkOrLightBase) {\n cssRules.push(\n `@media(prefers-color-scheme: ${isDark ? 'dark' : 'light'}) {\n body { background:${theme.background}; color: ${theme.color} }\n :root {${vars} } \n }`\n )\n }\n }\n }\n }\n\n varsByValue.clear()\n Object.freeze(cssRules)\n const css = cssRules.join('\\n')\n\n return {\n cssRules,\n css,\n }\n })()\n\n // faster lookups token keys become $keys to match input\n const tokensParsed: any = parseTokens(config.tokens)\n\n const fontsParsed = (() => {\n if (!config.fonts) {\n throw new Error(`No fonts defined!`)\n }\n const res = {} as typeof config.fonts\n for (const familyName in config.fonts) {\n const family = config.fonts[familyName]\n const parsed = {}\n for (const attrKey in family) {\n const attr = family[attrKey]\n if (attrKey === 'family') {\n parsed[attrKey] = attr\n continue\n }\n parsed[attrKey] = Object.keys(attr).reduce((acc, cur) => {\n acc[`$${cur}`] = attr[cur]\n return acc\n }, {})\n }\n res[`$${familyName}`] = parsed as any\n }\n return res!\n })()\n\n const getCSS = () => {\n return `${themeConfig.css}\\n${getInsertedRules().join('\\n')}`\n }\n\n if (config.shorthands) {\n for (const key in config.shorthands) {\n reversedShorthands[config.shorthands[key]] = key\n }\n }\n\n const next: TamaguiInternalConfig = {\n fonts: {},\n animations: {} as any,\n shorthands: {},\n media: {},\n ...config,\n Provider: createTamaguiProvider({\n getCSS,\n defaultTheme: 'light',\n ...config,\n }),\n fontsParsed,\n themeConfig,\n tokensParsed,\n parsed: true,\n getCSS,\n }\n\n setConfig(next)\n\n if (configListeners.size) {\n configListeners.forEach((cb) => cb(next))\n configListeners.clear()\n }\n\n createdConfigs.set(next, true)\n\n // @ts-expect-error\n return next\n}\n\nexport const reversedShorthands: Record<string, string> = {}\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\n// mutates, freeze after\n// shared by createTamagui so extracted here\nfunction ensureThemeVariable(theme: any, key: string) {\n const val = theme[key]\n if (!isVariable(val)) {\n theme[key] = createVariable({\n name: key,\n val,\n })\n } else {\n if (val.name !== key) {\n // rename to theme name\n theme[key] = createVariable({\n name: key,\n val: val.val,\n })\n }\n }\n}\n\n// for quick testing types:\n// const x = createTamagui({\n// shorthands: {},\n// media: {},\n// themes: {},\n// tokens: {\n// font: {},\n// color: {},\n// radius: {},\n// size: {},\n// space: {},\n// zIndex: {},\n// },\n// })\n"],
|
|
5
|
-
"mappings": "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
|
|
4
|
+
"sourcesContent": ["import { configListeners, getHasConfigured, setConfig } from './conf'\nimport { THEME_CLASSNAME_PREFIX } from './constants/constants'\nimport { isWeb } from './constants/platform'\nimport { Variable, createCSSVariable, createVariable, isVariable } from './createVariable'\nimport { createTamaguiProvider } from './helpers/createTamaguiProvider'\nimport { getInsertedRules } from './helpers/insertStyleRule'\nimport { configureMedia } from './hooks/useMedia'\nimport {\n AnimationDriver,\n CreateTamaguiConfig,\n GenericTamaguiConfig,\n MediaQueryKey,\n TamaguiInternalConfig,\n} from './types'\n\nexport type CreateTamaguiProps =\n // user then re-defines the types after createTamagui returns the typed object they want\n Partial<Omit<GenericTamaguiConfig, 'themes' | 'tokens' | 'animations'>> & {\n animations?: AnimationDriver<any>\n tokens: GenericTamaguiConfig['tokens']\n themes: {\n [key: string]: {\n [key: string]: string | number | Variable\n }\n }\n\n // for the first render, determines which media queries are true\n // useful for SSR\n mediaQueryDefaultActive?: MediaQueryKey[]\n\n // what's between each CSS style rule, set to \"\\n\" to be easier to read\n // defaults: \"\\n\" when NODE_ENV=development, \"\" otherwise\n cssStyleSeparator?: string\n\n // (Advanced)\n // on the web, tamagui treats `dark` and `light` themes as special and\n // generates extra CSS to avoid having to re-render the entire page.\n // this CSS relies on specificity hacks that multiply by your sub-themes.\n // this sets the maxiumum number of nested dark/light themes you can do\n // defaults to 3 for a balance, but can be higher if you nest them deeply.\n maxDarkLightNesting?: number\n\n // adds @media(prefers-color-scheme) media queries for dark/light\n shouldAddPrefersColorThemes?: boolean\n\n // only if you put the theme classname on the html element we have to generate diff\n themeClassNameOnRoot?: boolean\n }\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 config: Conf\n): Conf extends Partial<CreateTamaguiConfig<infer A, infer B, infer C, infer D, infer E, infer F>>\n ? TamaguiInternalConfig<A, B, C, D, E, F>\n : unknown {\n if (createdConfigs.has(config)) {\n return config as any\n }\n\n if (process.env.NODE_ENV === 'development') {\n if (!config.tokens) {\n throw new Error(`No tokens provided to Tamagui config`)\n }\n if (!config.themes) {\n throw new Error(`No themes provided to Tamagui config`)\n }\n }\n\n // test env loads a few times as it runs diff tests\n if (getHasConfigured()) {\n console.warn('Called createTamagui twice! Should never do so')\n // throw new Error(`#000 createTamagui called twice`)\n }\n\n configureMedia({\n queries: config.media as any,\n defaultActive: config.mediaQueryDefaultActive,\n })\n\n const themeConfig = (() => {\n let cssRules: string[] = []\n const varsByValue = new Map<string, Variable>()\n\n if (isWeb) {\n // tokens\n const tokenRules = new Set<string>()\n\n const addVar = (v: Variable) => {\n varsByValue[v.val] = v\n const rule = `--${createCSSVariable(v.name, false)}:${\n typeof v.val === 'number' ? `${v.val}px` : v.val\n }`\n tokenRules.add(rule)\n }\n\n for (const key in config.tokens) {\n for (const skey in config.tokens[key]) {\n const val = config.tokens[key][skey]\n if (key === 'font') {\n for (const fkey in val) {\n if (fkey === 'family') {\n addVar(val[fkey])\n } else {\n for (const fskey in val[fkey]) {\n addVar(val[fkey][fskey])\n }\n }\n }\n } else {\n addVar(val)\n }\n }\n }\n const sep = process.env.NODE_ENV === 'development' ? config.cssStyleSeparator || ' ' : ''\n cssRules.push(`:root {${sep}${[...tokenRules].join(`;${sep}`)}${sep}}`)\n }\n\n // special case for SSR\n const hasDarkLight = 'light' in config.themes && 'dark' in config.themes\n const CNP = `.${THEME_CLASSNAME_PREFIX}`\n\n // themes\n for (const themeName in config.themes) {\n // to allow using the same theme with diff names, be sure we don't mutate!\n const theme = { ...config.themes[themeName] }\n config.themes[themeName] = theme\n let vars = ''\n\n for (const themeKey in theme) {\n if (isWeb) {\n const val = theme[themeKey]\n // TODO sanity check is necessary\n const varName = val instanceof Variable ? val.name : varsByValue[val]?.name\n vars += `--${themeKey}:${varName ? createCSSVariable(varName) : `${val}`};`\n }\n // make sure properly names theme variables\n ensureThemeVariable(theme, themeKey)\n }\n\n if (isWeb) {\n const isDarkOrLightBase = themeName === 'dark' || themeName === 'light'\n const isDark = themeName.startsWith('dark')\n const selector = `${CNP}${themeName}`\n const selectors = [selector]\n\n // since we dont specify dark/light in classnames we have to do an awkward specificity war\n // use config.maxDarkLightNesting to determine how deep you can nest until it breaks\n if (hasDarkLight) {\n const childSelector = `${CNP}${themeName.replace('dark_', '').replace('light_', '')}`\n const order = isDark ? ['dark', 'light'] : ['light', 'dark']\n if (isDarkOrLightBase) {\n order.reverse()\n }\n const [stronger, weaker] = order\n const max = config.maxDarkLightNesting ?? 3\n new Array(max * 2).fill(undefined).forEach((_, pi) => {\n if (pi % 2 === 1) return\n const parents = new Array(pi + 1).fill(undefined).map((_, psi) => {\n return `${CNP}${psi % 2 === 0 ? stronger : weaker}`\n })\n selectors.push(\n `${(parents.length > 1 ? parents.slice(1) : parents).join(' ')} ${childSelector}`\n )\n })\n }\n\n const rootSep = config.themeClassNameOnRoot ? '' : ' '\n cssRules.push(`${selectors.map((x) => `:root${rootSep}${x}`).join(', ')} {${vars}}`)\n\n if (config.shouldAddPrefersColorThemes ?? true) {\n // add media prefers for dark/light base\n if (isDarkOrLightBase) {\n cssRules.push(\n `@media(prefers-color-scheme: ${isDark ? 'dark' : 'light'}) {\n body { background:${theme.background}; color: ${theme.color} }\n :root {${vars} } \n }`\n )\n }\n }\n }\n }\n\n varsByValue.clear()\n Object.freeze(cssRules)\n const css = cssRules.join('\\n')\n\n return {\n cssRules,\n css,\n }\n })()\n\n // faster lookups token keys become $keys to match input\n const tokensParsed: any = parseTokens(config.tokens)\n\n const fontsParsed = (() => {\n if (!config.fonts) {\n throw new Error(`No fonts defined!`)\n }\n const res = {} as typeof config.fonts\n for (const familyName in config.fonts) {\n const family = config.fonts[familyName]\n const parsed = {}\n for (const attrKey in family) {\n const attr = family[attrKey]\n if (attrKey === 'family') {\n parsed[attrKey] = attr\n continue\n }\n parsed[attrKey] = Object.keys(attr).reduce((acc, cur) => {\n acc[`$${cur}`] = attr[cur]\n return acc\n }, {})\n }\n res[`$${familyName}`] = parsed as any\n }\n return res!\n })()\n\n const getCSS = () => {\n return `${themeConfig.css}\\n${getInsertedRules().join('\\n')}`\n }\n\n if (config.shorthands) {\n for (const key in config.shorthands) {\n reversedShorthands[config.shorthands[key]] = key\n }\n }\n\n const next: TamaguiInternalConfig = {\n fonts: {},\n animations: {} as any,\n shorthands: {},\n media: {},\n ...config,\n Provider: createTamaguiProvider({\n getCSS,\n defaultTheme: 'light',\n ...config,\n }),\n fontsParsed,\n themeConfig,\n tokensParsed,\n parsed: true,\n getCSS,\n }\n\n setConfig(next)\n\n if (configListeners.size) {\n configListeners.forEach((cb) => cb(next))\n configListeners.clear()\n }\n\n createdConfigs.set(next, true)\n\n // @ts-expect-error\n return next\n}\n\nexport const reversedShorthands: Record<string, string> = {}\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\n// mutates, freeze after\n// shared by createTamagui so extracted here\nfunction ensureThemeVariable(theme: any, key: string) {\n const val = theme[key]\n if (!isVariable(val)) {\n theme[key] = createVariable({\n key,\n name: key,\n val,\n })\n } else {\n if (val.name !== key) {\n // rename to theme name\n theme[key] = createVariable({\n key,\n name: key,\n val: val.val,\n })\n }\n }\n}\n\n// for quick testing types:\n// const x = createTamagui({\n// shorthands: {},\n// media: {},\n// themes: {},\n// tokens: {\n// font: {},\n// color: {},\n// radius: {},\n// size: {},\n// space: {},\n// zIndex: {},\n// },\n// })\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/cjs/createTokens.js
CHANGED
|
@@ -39,7 +39,7 @@ const mapTokensToVariables = /* @__PURE__ */ __name((tokens, parentPath = "") =>
|
|
|
39
39
|
if (val && typeof val === "object") {
|
|
40
40
|
res[key] = mapTokensToVariables(tokens[key], name);
|
|
41
41
|
} else {
|
|
42
|
-
res[key] = (0, import_createVariable.createVariable)({ val, name });
|
|
42
|
+
res[key] = (0, import_createVariable.createVariable)({ val, name, key });
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
return res;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/createTokens.ts"],
|
|
4
|
-
"sourcesContent": ["import { Variable, createVariable } from './createVariable'\nimport { validateTokens } from './helpers/validate'\nimport { CreateTokens } from './types'\n\n// tokens.color.dark.red ===> { var: `color-dark-red`, val: '' }\n\nexport function createTokens<T extends CreateTokens>(tokens: T): MakeTokens<T> {\n if (process.env.NODE_ENV === 'development') {\n validateTokens(tokens)\n }\n return mapTokensToVariables(tokens) as any\n}\n\nexport const mapTokensToVariables = (\n tokens: CreateTokens,\n parentPath = ''\n): CreateTokens<Variable> => {\n const res = {}\n for (const key in tokens) {\n let val = tokens[key]\n const name = parentPath ? `${parentPath}-${key}` : key\n if (val && typeof val === 'object') {\n res[key] = mapTokensToVariables(tokens[key], name)\n } else {\n res[key] = createVariable({ val, name })\n }\n }\n // @ts-expect-error\n return res\n}\n\n// verbose but gives us nice types...\ntype MakeTokens<T> = T extends {\n color: infer E\n space: infer F\n size: infer G\n radius: infer H\n zIndex: infer J\n}\n ? {\n color: {\n [key in keyof E]: Variable\n }\n space: {\n [key in keyof F]: Variable\n }\n size: {\n [key in keyof G]: Variable\n }\n radius: {\n [key in keyof H]: Variable\n }\n zIndex: {\n [key in keyof J]: Variable\n }\n }\n : never\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAAyC;AACzC,sBAA+B;AAKxB,sBAA8C,QAA0B;AAC7E,MAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,wCAAe,MAAM;AAAA,EACvB;AACA,SAAO,qBAAqB,MAAM;AACpC;AALgB;AAOT,MAAM,uBAAuB,wBAClC,QACA,aAAa,OACc;AAC3B,QAAM,MAAM,CAAC;AACb,aAAW,OAAO,QAAQ;AACxB,QAAI,MAAM,OAAO;AACjB,UAAM,OAAO,aAAa,GAAG,cAAc,QAAQ;AACnD,QAAI,OAAO,OAAO,QAAQ,UAAU;AAClC,UAAI,OAAO,qBAAqB,OAAO,MAAM,IAAI;AAAA,IACnD,OAAO;AACL,UAAI,OAAO,0CAAe,EAAE,KAAK,
|
|
4
|
+
"sourcesContent": ["import { Variable, createVariable } from './createVariable'\nimport { validateTokens } from './helpers/validate'\nimport { CreateTokens } from './types'\n\n// tokens.color.dark.red ===> { var: `color-dark-red`, val: '' }\n\nexport function createTokens<T extends CreateTokens>(tokens: T): MakeTokens<T> {\n if (process.env.NODE_ENV === 'development') {\n validateTokens(tokens)\n }\n return mapTokensToVariables(tokens) as any\n}\n\nexport const mapTokensToVariables = (\n tokens: CreateTokens,\n parentPath = ''\n): CreateTokens<Variable> => {\n const res = {}\n for (const key in tokens) {\n let val = tokens[key]\n const name = parentPath ? `${parentPath}-${key}` : key\n if (val && typeof val === 'object') {\n res[key] = mapTokensToVariables(tokens[key], name)\n } else {\n res[key] = createVariable({ val, name, key })\n }\n }\n // @ts-expect-error\n return res\n}\n\n// verbose but gives us nice types...\ntype MakeTokens<T> = T extends {\n color: infer E\n space: infer F\n size: infer G\n radius: infer H\n zIndex: infer J\n}\n ? {\n color: {\n [key in keyof E]: Variable\n }\n space: {\n [key in keyof F]: Variable\n }\n size: {\n [key in keyof G]: Variable\n }\n radius: {\n [key in keyof H]: Variable\n }\n zIndex: {\n [key in keyof J]: Variable\n }\n }\n : never\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAAyC;AACzC,sBAA+B;AAKxB,sBAA8C,QAA0B;AAC7E,MAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,wCAAe,MAAM;AAAA,EACvB;AACA,SAAO,qBAAqB,MAAM;AACpC;AALgB;AAOT,MAAM,uBAAuB,wBAClC,QACA,aAAa,OACc;AAC3B,QAAM,MAAM,CAAC;AACb,aAAW,OAAO,QAAQ;AACxB,QAAI,MAAM,OAAO;AACjB,UAAM,OAAO,aAAa,GAAG,cAAc,QAAQ;AACnD,QAAI,OAAO,OAAO,QAAQ,UAAU;AAClC,UAAI,OAAO,qBAAqB,OAAO,MAAM,IAAI;AAAA,IACnD,OAAO;AACL,UAAI,OAAO,0CAAe,EAAE,KAAK,MAAM,IAAI,CAAC;AAAA,IAC9C;AAAA,EACF;AAEA,SAAO;AACT,GAhBoC;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -31,10 +31,11 @@ var import_platform = require("./constants/platform");
|
|
|
31
31
|
var _a;
|
|
32
32
|
const IS_VARIABLE_SYMBOL = "__isVariable__";
|
|
33
33
|
class Variable {
|
|
34
|
-
constructor({ val, name }) {
|
|
34
|
+
constructor({ val, name, key }) {
|
|
35
35
|
this[_a] = true;
|
|
36
36
|
this.val = isVariable(val) ? val.val : val;
|
|
37
37
|
this.name = name;
|
|
38
|
+
this.key = key;
|
|
38
39
|
this.variable = import_platform.isWeb ? createCSSVariable(name) : this.val;
|
|
39
40
|
}
|
|
40
41
|
toString() {
|