@tamagui/web 1.2.5 → 1.2.7
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/config.js +27 -1
- package/dist/cjs/config.js.map +2 -2
- package/dist/cjs/createComponent.js +16 -13
- package/dist/cjs/createComponent.js.map +2 -2
- package/dist/cjs/types.js.map +1 -1
- package/dist/esm/config.js +27 -1
- package/dist/esm/config.js.map +2 -2
- package/dist/esm/createComponent.js +16 -13
- package/dist/esm/createComponent.js.map +2 -2
- package/package.json +9 -9
- package/src/config.ts +33 -3
- package/src/createComponent.tsx +17 -13
- package/src/types.tsx +30 -2
- package/types/config.d.ts +7 -4
- package/types/config.d.ts.map +1 -1
- package/types/createComponent.d.ts.map +1 -1
- package/types/types.d.ts +22 -2
- package/types/types.d.ts.map +1 -1
package/dist/esm/config.js
CHANGED
|
@@ -19,7 +19,33 @@ const getConfig = () => {
|
|
|
19
19
|
}
|
|
20
20
|
return conf;
|
|
21
21
|
};
|
|
22
|
-
|
|
22
|
+
let cached;
|
|
23
|
+
const getTokens = ({
|
|
24
|
+
prefixed
|
|
25
|
+
} = {}) => {
|
|
26
|
+
return cached ??= {
|
|
27
|
+
size: {
|
|
28
|
+
...conf.tokens["size"],
|
|
29
|
+
...conf.tokensParsed["size"]
|
|
30
|
+
},
|
|
31
|
+
space: {
|
|
32
|
+
...conf.tokens["space"],
|
|
33
|
+
...conf.tokensParsed["space"]
|
|
34
|
+
},
|
|
35
|
+
radius: {
|
|
36
|
+
...conf.tokens["radius"],
|
|
37
|
+
...conf.tokensParsed["radius"]
|
|
38
|
+
},
|
|
39
|
+
zIndex: {
|
|
40
|
+
...conf.tokens["zIndex"],
|
|
41
|
+
...conf.tokensParsed["zIndex"]
|
|
42
|
+
},
|
|
43
|
+
color: {
|
|
44
|
+
...conf.tokens["color"],
|
|
45
|
+
...conf.tokensParsed["color"]
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
};
|
|
23
49
|
const useTokens = () => getTokens();
|
|
24
50
|
const getThemes = () => conf.themes;
|
|
25
51
|
const configListeners = /* @__PURE__ */ new Set();
|
package/dist/esm/config.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/config.ts"],
|
|
4
|
-
"sourcesContent": ["import { ConfigListener, TamaguiInternalConfig,
|
|
5
|
-
"mappings": "AAEA,IAAI;AAEG,MAAM,YAAY,CAAC,SAAgC;AACxD,SAAO;AACP,kBAAgB,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;AAC1C;AAEO,MAAM,gBAAgB,CAAC,MAAc,MAAW,eAAoB;AACzE,MAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,QAAI,CAAC;AAAM,YAAM,IAAI,MAAM,kCAAkC;AAAA,EAC/D;AACA,OAAM,MAAM,IAAI,IAAI;AACpB,OAAM,YAAY,IAAI,MAAM,IAAI;AAClC;AAEO,MAAM,YAAY,MAAM;AAC7B,MAAI,CAAC,MAAM;AACT,UAAM,IAAI;AAAA,MACR,QAAQ,IAAI,aAAa,eACrB,wIACA;AAAA,IACN;AAAA,EACF;AACA,SAAO;AACT;
|
|
4
|
+
"sourcesContent": ["import { ConfigListener, TamaguiInternalConfig, TokensMerged } from './types'\n\nlet conf: TamaguiInternalConfig | null\n\nexport const setConfig = (next: TamaguiInternalConfig) => {\n conf = next\n configListeners.forEach((cb) => cb(next))\n}\n\nexport const setConfigFont = (name: string, font: any, fontParsed: any) => {\n if (process.env.NODE_ENV === 'development') {\n if (!conf) throw new Error(`Haven't called createTamagui yet`)\n }\n conf!.fonts[name] = font\n conf!.fontsParsed[`$${name}`] = fontParsed\n}\n\nexport const getConfig = () => {\n if (!conf) {\n throw new Error(\n process.env.NODE_ENV !== 'production'\n ? `Missing tamagui config, you either have a duplicate config, or haven't set it up. Be sure createTamagui is called before rendering.`\n : 'Err0'\n )\n }\n return conf\n}\n\nlet cached: TokensMerged\nexport const getTokens = ({\n prefixed,\n}: {\n /**\n * @deprecated prefixed true and false are merged together, no longer need this property\n */\n prefixed?: boolean\n} = {}): TokensMerged => {\n return (cached ??= {\n size: {\n ...conf!.tokens['size'],\n ...conf!.tokensParsed['size'],\n },\n space: {\n ...conf!.tokens['space'],\n ...conf!.tokensParsed['space'],\n },\n radius: {\n ...conf!.tokens['radius'],\n ...conf!.tokensParsed['radius'],\n },\n zIndex: {\n ...conf!.tokens['zIndex'],\n ...conf!.tokensParsed['zIndex'],\n },\n color: {\n ...conf!.tokens['color'],\n ...conf!.tokensParsed['color'],\n },\n } as any)\n}\n\n/**\n * Note: this is the same as `getTokens`\n */\nexport const useTokens = () => getTokens()\n\nexport const getThemes = () => conf!.themes\n\nexport const configListeners = new Set<ConfigListener>()\n\nexport const onConfiguredOnce = (cb: ConfigListener) => {\n if (conf) {\n cb(conf)\n } else {\n configListeners.add(cb)\n }\n}\n\nexport const updateConfig = (key: string, value: any) => {\n Object.assign(key, value)\n}\n\n// searches by value name or token name\nexport const getFont = (name: string) => {\n const conf = getConfig()\n return (\n conf.fontsParsed[name] ??\n Object.entries(conf.fontsParsed).find(\n ([k]) => conf.fontsParsed[k]?.family?.['val'] === name\n )?.[1]\n )\n}\n"],
|
|
5
|
+
"mappings": "AAEA,IAAI;AAEG,MAAM,YAAY,CAAC,SAAgC;AACxD,SAAO;AACP,kBAAgB,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;AAC1C;AAEO,MAAM,gBAAgB,CAAC,MAAc,MAAW,eAAoB;AACzE,MAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,QAAI,CAAC;AAAM,YAAM,IAAI,MAAM,kCAAkC;AAAA,EAC/D;AACA,OAAM,MAAM,IAAI,IAAI;AACpB,OAAM,YAAY,IAAI,MAAM,IAAI;AAClC;AAEO,MAAM,YAAY,MAAM;AAC7B,MAAI,CAAC,MAAM;AACT,UAAM,IAAI;AAAA,MACR,QAAQ,IAAI,aAAa,eACrB,wIACA;AAAA,IACN;AAAA,EACF;AACA,SAAO;AACT;AAEA,IAAI;AACG,MAAM,YAAY,CAAC;AAAA,EACxB;AACF,IAKI,CAAC,MAAoB;AACvB,SAAQ,WAAW;AAAA,IACjB,MAAM;AAAA,MACJ,GAAG,KAAM,OAAO,MAAM;AAAA,MACtB,GAAG,KAAM,aAAa,MAAM;AAAA,IAC9B;AAAA,IACA,OAAO;AAAA,MACL,GAAG,KAAM,OAAO,OAAO;AAAA,MACvB,GAAG,KAAM,aAAa,OAAO;AAAA,IAC/B;AAAA,IACA,QAAQ;AAAA,MACN,GAAG,KAAM,OAAO,QAAQ;AAAA,MACxB,GAAG,KAAM,aAAa,QAAQ;AAAA,IAChC;AAAA,IACA,QAAQ;AAAA,MACN,GAAG,KAAM,OAAO,QAAQ;AAAA,MACxB,GAAG,KAAM,aAAa,QAAQ;AAAA,IAChC;AAAA,IACA,OAAO;AAAA,MACL,GAAG,KAAM,OAAO,OAAO;AAAA,MACvB,GAAG,KAAM,aAAa,OAAO;AAAA,IAC/B;AAAA,EACF;AACF;AAKO,MAAM,YAAY,MAAM,UAAU;AAElC,MAAM,YAAY,MAAM,KAAM;AAE9B,MAAM,kBAAkB,oBAAI,IAAoB;AAEhD,MAAM,mBAAmB,CAAC,OAAuB;AACtD,MAAI,MAAM;AACR,OAAG,IAAI;AAAA,EACT,OAAO;AACL,oBAAgB,IAAI,EAAE;AAAA,EACxB;AACF;AAEO,MAAM,eAAe,CAAC,KAAa,UAAe;AACvD,SAAO,OAAO,KAAK,KAAK;AAC1B;AAGO,MAAM,UAAU,CAAC,SAAiB;AAnFzC;AAoFE,QAAMA,QAAO,UAAU;AACvB,SACEA,MAAK,YAAY,IAAI,OACrB,YAAO,QAAQA,MAAK,WAAW,EAAE;AAAA,IAC/B,CAAC,CAAC,CAAC,MAAG;AAxFZ,UAAAC,KAAA;AAwFe,qBAAAA,MAAAD,MAAK,YAAY,CAAC,MAAlB,gBAAAC,IAAqB,WAArB,mBAA8B,YAAW;AAAA;AAAA,EACpD,MAFA,mBAEI;AAER;",
|
|
6
6
|
"names": ["conf", "_a"]
|
|
7
7
|
}
|
|
@@ -473,21 +473,24 @@ function createComponent(configIn, ParentComponent) {
|
|
|
473
473
|
} : void 0,
|
|
474
474
|
onPress: attachPress ? (e) => {
|
|
475
475
|
unPress();
|
|
476
|
-
onClick == null ? void 0 : onClick(e);
|
|
476
|
+
isWeb && (onClick == null ? void 0 : onClick(e));
|
|
477
477
|
onPress == null ? void 0 : onPress(e);
|
|
478
|
-
} : void 0
|
|
479
|
-
// replicating TouchableWithoutFeedback
|
|
480
|
-
...!isWeb && {
|
|
481
|
-
cancelable: !props.rejectResponderTermination,
|
|
482
|
-
disabled: isDisabled,
|
|
483
|
-
hitSlop: props.hitSlop,
|
|
484
|
-
delayLongPress: props.delayLongPress,
|
|
485
|
-
delayPressIn: props.delayPressIn,
|
|
486
|
-
delayPressOut: props.delayPressOut,
|
|
487
|
-
focusable: viewProps.focusable ?? true,
|
|
488
|
-
minPressDuration: 0
|
|
489
|
-
}
|
|
478
|
+
} : void 0
|
|
490
479
|
} : null;
|
|
480
|
+
if (process.env.TAMAGUI_TARGET === "native") {
|
|
481
|
+
if (events) {
|
|
482
|
+
Object.assign(events, {
|
|
483
|
+
cancelable: !props.rejectResponderTermination,
|
|
484
|
+
disabled: isDisabled,
|
|
485
|
+
hitSlop: props.hitSlop,
|
|
486
|
+
delayLongPress: props.delayLongPress,
|
|
487
|
+
delayPressIn: props.delayPressIn,
|
|
488
|
+
delayPressOut: props.delayPressOut,
|
|
489
|
+
focusable: viewProps.focusable ?? true,
|
|
490
|
+
minPressDuration: 0
|
|
491
|
+
});
|
|
492
|
+
}
|
|
493
|
+
}
|
|
491
494
|
(_l = (_k = hooks).useEvents) == null ? void 0 : _l.call(_k, viewProps, events, splitStyles, setStateShallow);
|
|
492
495
|
const shouldReset = !!(themeShallow && themeState.isNewTheme);
|
|
493
496
|
if (shouldReset) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/createComponent.tsx"],
|
|
4
|
-
"sourcesContent": ["import { useComposedRefs } from '@tamagui/compose-refs'\nimport { isClient, isRSC, isServer, isWeb } from '@tamagui/constants'\nimport {\n composeEventHandlers,\n stylePropsView,\n validPseudoKeys,\n validStyles,\n} from '@tamagui/helpers'\nimport React, {\n Children,\n Fragment,\n createElement,\n forwardRef,\n memo,\n useCallback,\n useContext,\n useEffect,\n useRef,\n} from 'react'\n\nimport { onConfiguredOnce } from './config'\nimport { stackDefaultStyles } from './constants/constants'\nimport { FontLanguageContext } from './contexts/FontLanguageContext'\nimport { TextAncestorContext } from './contexts/TextAncestorContext'\nimport { didGetVariableValue, setDidGetVariableValue } from './createVariable'\nimport { extendStaticConfig, parseStaticConfig } from './helpers/extendStaticConfig'\nimport { useSplitStyles } from './helpers/getSplitStyles'\nimport { getAllSelectors } from './helpers/insertStyleRule'\nimport { mergeProps } from './helpers/mergeProps'\nimport { proxyThemeVariables } from './helpers/proxyThemeVariables'\nimport { useShallowSetState } from './helpers/useShallowSetState'\nimport { setMediaShouldUpdate, useMedia } from './hooks/useMedia'\nimport { useServerRef, useServerState } from './hooks/useServerHooks'\nimport { useThemeWithState } from './hooks/useTheme'\nimport { hooks } from './setupHooks'\nimport {\n DebugProp,\n SpaceDirection,\n SpaceTokens,\n SpacerProps,\n StaticConfig,\n StaticConfigParsed,\n StylableComponent,\n TamaguiComponent,\n TamaguiComponentEvents,\n TamaguiComponentState,\n TamaguiConfig,\n TamaguiElement,\n TamaguiInternalConfig,\n UseAnimationHook,\n UseAnimationProps,\n} from './types'\nimport { Slot, mergeEvent } from './views/Slot'\nimport { useThemedChildren } from './views/Theme'\n\n// let t\n// import { timer } from '@tamagui/timer'\n// if (true || process.env.ANALYZE) {\n// t = require().timer()\n// setTimeout(() => {\n// const out = t.print()\n// if (isClient) {\n// alert(out)\n// }\n// }, 2000)\n// }\n\n// this appears to fix expo / babel not picking this up sometimes? really odd\nprocess.env.TAMAGUI_TARGET\n\nexport const defaultComponentState: TamaguiComponentState = {\n hover: false,\n press: false,\n pressIn: false,\n focus: false,\n unmounted: true,\n}\n\nconst defaultComponentStateMounted: TamaguiComponentState = {\n ...defaultComponentState,\n unmounted: false,\n}\n\n/**\n * All things that need one-time setup after createTamagui is called\n */\nlet tamaguiConfig: TamaguiInternalConfig\nlet AnimatedText: any\nlet AnimatedView: any\nlet initialTheme: any\n\nexport const mouseUps = new Set<Function>()\nif (typeof document !== 'undefined') {\n const cancelTouches = () => {\n mouseUps.forEach((x) => x())\n mouseUps.clear()\n }\n addEventListener('mouseup', cancelTouches)\n addEventListener('touchend', cancelTouches)\n addEventListener('touchcancel', cancelTouches)\n}\n\n// mutates\nfunction mergeShorthands(\n { defaultProps }: StaticConfigParsed,\n { shorthands }: TamaguiConfig\n) {\n // they are defined in correct order already { ...parent, ...child }\n for (const key of Object.keys(defaultProps)) {\n defaultProps[shorthands[key] || key] = defaultProps[key]\n }\n}\n\n/**\n * Only on native do we need the actual underlying View/Text\n * On the web we avoid react-native dep altogether.\n */\nlet BaseText: any\nlet BaseView: any\nlet hasSetupBaseViews = false\n\nexport function createComponent<\n ComponentPropTypes extends Object = {},\n Ref = TamaguiElement,\n BaseProps = never\n>(\n configIn: Partial<StaticConfig> | StaticConfigParsed,\n ParentComponent?: StylableComponent\n) {\n const staticConfig = (() => {\n const next = extendStaticConfig(configIn, ParentComponent)\n if ('parsed' in next) {\n return next\n } else {\n return parseStaticConfig(next)\n }\n })()\n\n const defaultComponentClassName = `is_${staticConfig.componentName}`\n let tamaguiDefaultProps: any\n let defaultTag: string | undefined\n\n // see onConfiguredOnce below which attaches a name then to this component\n const component = forwardRef<Ref, ComponentPropTypes>((propsIn: any, forwardedRef) => {\n if (process.env.TAMAGUI_TARGET === 'native') {\n // todo this could be moved to a cleaner location\n if (!hasSetupBaseViews) {\n hasSetupBaseViews = true\n const baseViews = hooks.getBaseViews?.()\n if (baseViews) {\n BaseText = baseViews.Text\n BaseView = baseViews.View\n }\n }\n }\n\n // test only\n if (process.env.NODE_ENV === 'test') {\n if (propsIn['data-test-renders']) {\n propsIn['data-test-renders']['current'] ??= 0\n propsIn['data-test-renders']['current'] += 1\n }\n }\n // const time = t.start({ quiet: true })\n\n // React inserts default props after your props for some reason...\n // order important so we do loops, you can't just spread because JS does weird things\n let props: any\n if (tamaguiDefaultProps && !propsIn.asChild) {\n props = mergeProps(tamaguiDefaultProps, propsIn)[0]\n } else {\n props = propsIn\n }\n\n const debugProp = props['debug'] as DebugProp\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 /**\n * Component state for tracking animations, pseudos\n */\n const animationsConfig = tamaguiConfig.animations\n const useAnimations = animationsConfig?.useAnimations as UseAnimationHook | undefined\n const avoidClassesWhileAnimating = animationsConfig.isReactNative\n const hasEnterStyle = !!props.enterStyle\n const needsMount = Boolean(\n (isWeb ? isClient : true) && (hasEnterStyle || props.animation)\n )\n const states = useServerState<TamaguiComponentState>(\n needsMount ? defaultComponentState! : defaultComponentStateMounted!\n )\n\n const state = propsIn.forceStyle\n ? { ...states[0], [propsIn.forceStyle]: true }\n : states[0]\n const setState = states[1]\n const setStateShallow = useShallowSetState(setState, debugProp, componentName)\n\n // conditional but if ever true stays true\n // [animated, inversed]\n const stateRef = useRef(\n undefined as any as {\n hasAnimated?: boolean\n themeShallow?: boolean\n didAccessThemeVariableValue?: boolean\n }\n )\n stateRef.current ??= {}\n\n const isAnimated = (() => {\n const next = !!(useAnimations && props.animation)\n if (next && !stateRef.current.hasAnimated) {\n stateRef.current.hasAnimated = true\n }\n return next || stateRef.current.hasAnimated\n })()\n\n const usePresence = tamaguiConfig.animations?.usePresence\n const presence = !isRSC && isAnimated ? usePresence() : null\n\n // set enter/exit variants onto our new props object\n if (isAnimated && presence) {\n const presenceState = presence[2]\n if (presenceState) {\n if (state.unmounted && presenceState.enterVariant) {\n props[presenceState.enterVariant] = true\n }\n if (!presenceState.isPresent && presenceState.exitVariant) {\n props[presenceState.exitVariant] = true\n }\n }\n }\n\n const isReactNative = Boolean(\n staticConfig.isReactNative || (isAnimated && tamaguiConfig.animations.isReactNative)\n )\n\n if (process.env.NODE_ENV === 'development') {\n if (debugProp) {\n // prettier-ignore\n const name = `${componentName || Component?.displayName || Component?.name || '[Unnamed Component]'}`\n const type = isReactNative ? '(rnw)' : ''\n const dataIs = propsIn['data-is'] || ''\n const banner = `${name}${dataIs ? ` ${dataIs}` : ''} ${type}`\n console.group(`%c ${banner}`, 'background: yellow;')\n if (!isServer) {\n console.log('state', state)\n }\n }\n }\n\n const shouldAvoidClasses =\n !isWeb ||\n !!(props.animation && avoidClassesWhileAnimating) ||\n !staticConfig.acceptsClassName\n const shouldForcePseudo = !!propsIn.forceStyle\n const noClassNames = shouldAvoidClasses || shouldForcePseudo\n\n const themeState = useThemeWithState({\n name: props.theme,\n componentName,\n reset: props.reset,\n inverse: props.themeInverse,\n // @ts-expect-error\n disable: props['data-themeable'],\n debug: props.debug,\n shouldUpdate: () => !!stateRef.current.didAccessThemeVariableValue,\n })!\n\n const hasTextAncestor = !!(isWeb && isText ? useContext(TextAncestorContext) : false)\n const languageContext = isRSC ? null : useContext(FontLanguageContext)\n const isDisabled = props.disabled ?? props.accessibilityState?.disabled\n\n const isTaggable = !Component || typeof Component === 'string'\n // default to tag, fallback to component (when both strings)\n const element = isWeb\n ? isTaggable\n ? props.tag || defaultTag || Component\n : Component\n : Component\n\n const BaseTextComponent = BaseText || element || 'span'\n const BaseViewComponent = BaseView || element || (hasTextAncestor ? 'span' : 'div')\n let elementType = isText\n ? (isAnimated ? AnimatedText : null) || BaseTextComponent\n : (isAnimated ? AnimatedView : null) || BaseViewComponent\n\n elementType = Component || elementType\n const isStringElement = typeof elementType === 'string'\n\n const isExiting = presence?.[0] === false\n\n const mediaState = useMedia(\n // @ts-ignore, we just pass a stable object so we can get it later with\n // should match to the one used in `setMediaShouldUpdate` below\n stateRef,\n debugProp ? { props, staticConfig } : null\n )\n\n setDidGetVariableValue(false)\n\n const splitStyles = useSplitStyles(\n props,\n staticConfig,\n themeState.theme,\n {\n ...state,\n mediaState,\n noClassNames,\n dynamicStylesInline: noClassNames,\n hasTextAncestor,\n resolveVariablesAs: 'auto',\n isExiting,\n },\n null,\n languageContext || undefined,\n elementType,\n debugProp\n )\n\n // only listen for changes if we are using raw theme values or media space, or dynamic media (native)\n // array = space media breakpoints\n const isMediaSpaced = Array.isArray(splitStyles.hasMedia)\n const shouldListenForMedia =\n didGetVariableValue() ||\n isMediaSpaced ||\n (noClassNames && splitStyles.hasMedia === true)\n\n setMediaShouldUpdate(stateRef, {\n enabled: shouldListenForMedia,\n keys: noClassNames && isMediaSpaced ? (splitStyles.hasMedia as any) : null,\n })\n\n const hostRef = useServerRef<TamaguiElement>(null)\n\n // animation setup\n const isAnimatedReactNativeWeb = isAnimated && avoidClassesWhileAnimating\n\n if (process.env.NODE_ENV === 'development') {\n if (!process.env.TAMAGUI_TARGET) {\n console.error(\n `No process.env.TAMAGUI_TARGET set, please set it to \"native\" or \"web\".`\n )\n }\n\n if (debugProp) {\n console.groupCollapsed('props')\n // prettier-ignore\n console.log('props in', propsIn, 'mapped to', props, 'in order', Object.keys(props))\n console.log('splitStyles', splitStyles)\n // eslint-disable-next-line no-console\n console.log('shouldListenForMedia', shouldListenForMedia)\n // eslint-disable-next-line no-console\n console.log('className', Object.values(splitStyles.classNames))\n if (isClient) {\n console.log('ref', hostRef, '(click to view)')\n }\n console.groupEnd()\n if (debugProp === 'break') {\n // rome-ignore lint/suspicious/noDebugger: ok\n debugger\n }\n }\n }\n\n const {\n viewProps: viewPropsIn,\n pseudos,\n style: splitStylesStyle,\n classNames,\n space,\n } = splitStyles\n\n const propsWithAnimation = props as UseAnimationProps\n\n // once you set animation prop don't remove it, you can set to undefined/false\n // reason is animations are heavy - no way around it, and must be run inline here (\uD83D\uDE45 loading as a sub-component)\n let animationStyles: any\n if (!isRSC && isAnimated && useAnimations) {\n const animations = useAnimations({\n props: propsWithAnimation,\n style: splitStylesStyle,\n presence,\n state,\n pseudos: pseudos || null,\n onDidAnimate: props.onDidAnimate,\n hostRef,\n staticConfig,\n })\n if (animations) {\n animationStyles = animations.style\n }\n }\n\n const {\n hitSlop,\n asChild,\n children,\n onPress,\n onPressIn,\n onPressOut,\n onHoverIn,\n onHoverOut,\n themeShallow,\n spaceDirection: _spaceDirection,\n disabled: disabledProp,\n onMouseUp,\n onMouseDown,\n onMouseEnter,\n onMouseLeave,\n separator,\n // ignore from here on out\n forceStyle: _forceStyle,\n // @ts-ignore for next/link compat etc\n onClick,\n theme: _themeProp,\n // @ts-ignore\n defaultVariants,\n\n ...nonTamaguiProps\n } = viewPropsIn\n\n const disabled = props.accessibilityState?.disabled || 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 (process.env.TAMAGUI_TARGET === 'web' && !isReactNative && !asChild) {\n viewProps = hooks.usePropsTransform?.(elementType, viewPropsIn, hostRef)\n } else {\n viewProps = nonTamaguiProps\n }\n\n viewProps.ref = useComposedRefs(hostRef as any, forwardedRef)\n\n if (process.env.NODE_ENV === 'development') {\n if (!isText && isWeb && !staticConfig.isHOC) {\n Children.toArray(props.children).forEach((item) => {\n // allow newlines because why not its annoying with mdx\n if (typeof item === 'string' && item !== '\\n') {\n console.error(\n `Unexpected text node: ${item}. A text node cannot be a child of a <View>.`\n )\n }\n })\n }\n }\n\n const unPress = useCallback(() => {\n setStateShallow({\n press: false,\n pressIn: false,\n })\n }, [setStateShallow])\n\n if (isWeb) {\n useEffect(() => {\n return () => {\n mouseUps.delete(unPress)\n }\n }, [])\n }\n\n const shouldSetMounted = needsMount && state.unmounted\n useEffect(() => {\n if (!shouldSetMounted) return\n if (state.unmounted === true && needsMount) {\n setStateShallow({\n unmounted: false,\n })\n return\n }\n\n setStateShallow({\n unmounted: false,\n })\n }, [shouldSetMounted, state.unmounted])\n\n let styles: Record<string, any>[]\n\n if (isStringElement && shouldAvoidClasses && !shouldForcePseudo) {\n styles = {\n ...(animationStyles ?? splitStylesStyle),\n }\n } else {\n styles = [animationStyles ?? splitStylesStyle]\n\n // ugly but for now...\n if (shouldForcePseudo) {\n const next = {}\n styles.forEach((style) => Object.assign(next, style))\n // @ts-ignore\n Object.assign(splitStyles.style, next)\n }\n }\n\n let fontFamily = isText\n ? splitStyles.fontFamily || staticConfig.defaultProps.fontFamily\n : null\n if (fontFamily && fontFamily[0] === '$') {\n fontFamily = fontFamily.slice(1)\n }\n const fontFamilyClassName = fontFamily ? `font_${fontFamily}` : ''\n\n const classList = [\n hasEnterStyle && ((state.unmounted && needsMount) || !isClient)\n ? 't_will-mount'\n : '',\n componentName ? componentClassName : '',\n fontFamilyClassName,\n classNames ? Object.values(classNames).join(' ') : '',\n ]\n\n const className = classList.join(' ')\n\n if (process.env.TAMAGUI_TARGET === 'web') {\n const style = animationStyles ?? splitStyles.style\n\n if (isAnimatedReactNativeWeb) {\n viewProps.style = style\n } else if (isReactNative) {\n const rnwStyle = { $$css: true }\n for (const name of className.split(' ')) {\n rnwStyle[name] = name\n }\n viewProps.style = [rnwStyle, ...(Array.isArray(style) ? style : [style])]\n\n if (process.env.NODE_ENV === 'development') {\n // turn debug data- props into dataSet in dev mode\n Object.keys(viewProps).forEach((key) => {\n if (key.startsWith('data-')) {\n viewProps.dataSet ??= {}\n viewProps.dataSet[key.replace('data-', '')] = viewProps[key]\n delete viewProps[key]\n }\n })\n }\n } else {\n viewProps.className = className\n viewProps.style = style\n }\n }\n\n // TODO MOVE INTO HOOK\n if (process.env.TAMAGUI_TARGET === 'native') {\n // swap out the right family based on weight/style\n if (splitStyles.fontFamily) {\n const faceInfo = tamaguiConfig.fontsParsed[splitStyles.fontFamily]?.face\n if (faceInfo) {\n const [weight, style] = (() => {\n let weight: string | undefined\n let style: string | undefined\n for (let i = styles.length; i >= 0; i--) {\n weight ??= styles[i]?.fontWeight\n style ??= styles[i]?.fontStyle\n }\n return [weight || '400', style || 'normal'] as const\n })()\n const overrideFace = faceInfo[weight]?.[style]?.val\n if (overrideFace) {\n for (const style of styles) {\n if (style?.fontFamily) {\n style.fontFamily = overrideFace\n style.fontWeight = undefined\n style.fontStyle = undefined\n }\n }\n }\n }\n }\n\n // assign styles\n viewProps.style = styles\n }\n\n const runtimePressStyle = !disabled && noClassNames && pseudos?.pressStyle\n const attachPress = Boolean(\n runtimePressStyle || onPress || onPressOut || onPressIn || onClick\n )\n const runtimeHoverStyle = !disabled && noClassNames && pseudos?.hoverStyle\n const isHoverable =\n isWeb &&\n !!(runtimeHoverStyle || onHoverIn || onHoverOut || onMouseEnter || onMouseLeave)\n\n const handlesPressEvents = !(isWeb || asChild)\n\n // check presence rather than value to prevent reparenting bugs\n // allows for onPress={x ? function : undefined} without re-ordering dom\n const shouldAttach = Boolean(\n attachPress ||\n isHoverable ||\n (noClassNames && 'pressStyle' in props) ||\n (isWeb && noClassNames && 'hoverStyle' in props)\n )\n\n const events: TamaguiComponentEvents | null =\n shouldAttach && !isRSC && !isDisabled && !asChild\n ? {\n onPressOut: attachPress\n ? (e) => {\n unPress()\n onPressOut?.(e)\n onMouseUp?.(e)\n }\n : undefined,\n ...(isHoverable && {\n onMouseEnter: isHoverable\n ? (e) => {\n const next: Partial<typeof state> = {}\n if (isHoverable) {\n next.hover = true\n }\n if (state.pressIn) {\n next.press = true\n }\n if (isHoverable || state.pressIn) {\n setStateShallow(next)\n }\n onHoverIn?.(e)\n onMouseEnter?.(e)\n }\n : undefined,\n onMouseLeave: isHoverable\n ? (e) => {\n const next: Partial<typeof state> = {}\n mouseUps.add(unPress)\n if (isHoverable) {\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 onPressIn: attachPress\n ? (e) => {\n setStateShallow({\n press: true,\n pressIn: true,\n hover: false,\n })\n onPressIn?.(e)\n onMouseDown?.(e)\n if (isWeb) {\n mouseUps.add(unPress)\n }\n }\n : undefined,\n onPress: attachPress\n ? (e) => {\n unPress()\n // @ts-ignore\n onClick?.(e)\n onPress?.(e)\n }\n : undefined,\n\n // replicating TouchableWithoutFeedback\n ...(!isWeb && {\n cancelable: !props.rejectResponderTermination,\n disabled: isDisabled,\n hitSlop: props.hitSlop,\n delayLongPress: props.delayLongPress,\n delayPressIn: props.delayPressIn,\n delayPressOut: props.delayPressOut,\n focusable: viewProps.focusable ?? true,\n minPressDuration: 0,\n }),\n }\n : null\n\n // EVENTS native\n hooks.useEvents?.(viewProps, events, splitStyles, setStateShallow)\n\n const shouldReset = !!(themeShallow && themeState.isNewTheme)\n if (shouldReset) {\n stateRef.current.themeShallow = true\n }\n\n let content =\n !children || asChild\n ? children\n : spacedChildren({\n separator,\n children,\n space,\n direction: props.spaceDirection || 'both',\n isZStack,\n debug: debugProp,\n })\n\n if (asChild) {\n elementType = Slot\n viewProps = {\n ...viewProps,\n onPress,\n onPressIn,\n onPressOut,\n }\n }\n\n content = createElement(elementType, viewProps, content)\n\n content = useThemedChildren(themeState, content, {\n shallow: stateRef.current.themeShallow,\n })\n\n if (process.env.TAMAGUI_TARGET === 'web') {\n if (events || isAnimatedReactNativeWeb) {\n content = (\n <span\n className={`${isAnimatedReactNativeWeb ? className : ''} _dsp_contents`}\n {...(events && {\n onMouseEnter: events.onMouseEnter,\n onMouseLeave: events.onMouseLeave,\n onClick: events.onPress,\n onMouseDown: events.onPressIn,\n onMouseUp: events.onPressOut,\n onTouchStart: events.onPressIn,\n onTouchEnd: events.onPressOut,\n })}\n >\n {content}\n </span>\n )\n }\n }\n\n if (process.env.NODE_ENV === 'development' && process.env.DEBUG !== 'tamagui') {\n if (debugProp) {\n const element = typeof elementType === 'string' ? elementType : 'Component'\n console.groupCollapsed(`render <${element} /> with props`, viewProps)\n for (const key in viewProps) {\n console.log(key, viewProps[key])\n }\n console.log('children', content)\n console.groupEnd()\n if (typeof window !== 'undefined') {\n // prettier-ignore\n console.log({ state, themeState, isAnimated, isAnimatedReactNativeWeb, tamaguiDefaultProps, viewProps, splitStyles, animationStyles, handlesPressEvents, isStringElement, classNamesIn: props.className?.split(' '), classNamesOut: viewProps.className?.split(' '), events, shouldAttach, styles, pseudos, content, shouldAvoidClasses, avoidClasses: avoidClassesWhileAnimating, animation: props.animation, style: splitStylesStyle, staticConfig, tamaguiConfig, shouldForcePseudo, classNamesFull: Object.fromEntries(Object.entries(classNames).map(([k, v]) => [v, getAllSelectors()[v]])) })\n }\n console.groupEnd()\n }\n }\n\n return content\n })\n\n if (staticConfig.componentName) {\n component.displayName = staticConfig.componentName\n }\n\n onConfiguredOnce((conf) => {\n // one time only setup\n if (!tamaguiConfig) {\n tamaguiConfig = conf\n\n if (tamaguiConfig.animations) {\n AnimatedText = tamaguiConfig.animations.Text\n AnimatedView = tamaguiConfig.animations.View\n }\n\n if (!initialTheme) {\n const next = conf.themes[Object.keys(conf.themes)[0]]\n initialTheme = proxyThemeVariables(next)\n if (process.env.NODE_ENV === 'development') {\n if (!initialTheme) {\n console.log('Warning: Missing theme')\n }\n }\n }\n }\n\n // per-component setup\n // do this to make sure shorthands don't duplicate with.. longhands\n mergeShorthands(staticConfig, tamaguiConfig)\n\n let defaultPropsIn = staticConfig.defaultProps || {}\n\n // because we run createTamagui after styled() defs, have to do some work here\n // gather defaults props one time and merge downwards\n // find last unprocessed and process\n const parentNames = [...(staticConfig.parentNames || []), staticConfig.componentName]\n\n if (tamaguiConfig.defaultProps && parentNames && staticConfig.componentName) {\n defaultPropsIn = mergeConfigDefaultProps(\n staticConfig.componentName,\n defaultPropsIn,\n tamaguiConfig.defaultProps,\n parentNames,\n tamaguiConfig\n )\n }\n\n const debug = defaultPropsIn['debug']\n\n // remove all classNames\n const [ourProps, ourClassNames] = mergeProps(defaultPropsIn, {})\n\n if (ourProps.tag) {\n defaultTag = ourProps.tag\n }\n\n const noClassNames = !staticConfig.acceptsClassName\n const { name, variants, defaultVariants, ...restProps } = ourProps\n\n // must preserve prop order\n // leave out className because we handle that already with initialSplitStyles.classNames\n // otherwise it confuses variant functions getting className props\n const [defaults, defaultsClassnames] = mergeProps(component.defaultProps as any, {\n ...defaultVariants,\n ...restProps,\n })\n\n // split - keep variables on props to be processed using theme values at runtime (native)\n if (!isWeb) {\n for (const key in staticConfig.defaultProps) {\n const val = staticConfig.defaultProps[key]\n if (validPseudoKeys[key]) continue\n defaults[key] = val\n }\n }\n\n // set to global\n tamaguiDefaultProps = defaults\n\n // add debug logs\n if (process.env.NODE_ENV === 'development' && debug) {\n if (process.env.IS_STATIC !== 'is_static') {\n console.log(`\uD83D\uDC1B [${staticConfig.componentName || 'Component'}]`, {\n staticConfig,\n tamaguiDefaultProps,\n defaults,\n defaultPropsIn,\n defaultPropsKeyOrder: Object.keys(staticConfig.defaultProps),\n defaultPropsInKeyOrder: Object.keys(defaultPropsIn).map((k) => [\n k,\n defaultPropsIn[k],\n ]),\n ourProps,\n ourClassNames,\n defaultsClassnames,\n defaultTag,\n noClassNames,\n })\n }\n }\n })\n\n let res: TamaguiComponent<ComponentPropTypes, Ref, BaseProps> = component as any\n\n if (configIn.memo) {\n res = memo(res) as any\n }\n\n res.staticConfig = {\n validStyles: staticConfig.validStyles || stylePropsView,\n ...staticConfig,\n }\n\n // res.extractable HoC\n res.extractable = (Component: any, conf?: Partial<StaticConfig>) => {\n Component.staticConfig = extendStaticConfig(\n {\n Component,\n ...conf,\n neverFlatten: true,\n isHOC: true,\n defaultProps: {\n ...Component.defaultProps,\n ...conf?.defaultProps,\n },\n },\n res\n )\n return Component\n }\n\n return res\n}\n\n// for elements to avoid spacing\nexport const Unspaced = (props: { children?: any }) => {\n return props.children\n}\nUnspaced['isUnspaced'] = true\n\n// dont used styled() here to avoid circular deps\n// keep inline to avoid circular deps\n\nexport const Spacer = createComponent<SpacerProps>({\n acceptsClassName: true,\n memo: true,\n componentName: 'Spacer',\n validStyles,\n\n defaultProps: {\n ...stackDefaultStyles,\n // avoid nesting issues\n tag: 'span',\n size: true,\n pointerEvents: 'none',\n },\n\n variants: {\n size: {\n '...size': (size, { tokens }) => {\n size = size === true ? '$true' : size\n const sizePx = tokens.space[size] ?? size\n return {\n width: sizePx,\n height: sizePx,\n minWidth: sizePx,\n minHeight: sizePx,\n }\n },\n },\n\n flex: {\n true: {\n flexGrow: 1,\n },\n },\n\n direction: {\n horizontal: {\n height: 0,\n minHeight: 0,\n },\n vertical: {\n width: 0,\n minWidth: 0,\n },\n both: {},\n },\n } as const,\n})\n\nexport type SpacedChildrenProps = {\n isZStack?: boolean\n children?: React.ReactNode\n space?: SpaceTokens | number | null\n spaceFlex?: boolean | number\n direction?: SpaceDirection\n separator?: React.ReactNode\n debug?: DebugProp\n}\n\nexport function spacedChildren(props: SpacedChildrenProps) {\n const { isZStack, children, space, direction, spaceFlex, separator } = props\n const hasSpace = !!(space || spaceFlex)\n const hasSeparator = !(separator === undefined || separator === null)\n if (!(hasSpace || hasSeparator || isZStack)) {\n return children\n }\n\n const childrenList = Children.toArray(children)\n\n const len = childrenList.length\n if (len <= 1 && !isZStack && !childrenList[0]?.['type']?.['shouldForwardSpace']) {\n return childrenList\n }\n\n const final: React.ReactNode[] = []\n for (let [index, child] of childrenList.entries()) {\n const isEmpty =\n child === null ||\n child === undefined ||\n (Array.isArray(child) && child.length === 0)\n\n // forward space\n if (!isEmpty && React.isValidElement(child) && child.type?.['shouldForwardSpace']) {\n child = React.cloneElement(child, {\n space,\n spaceFlex,\n separator,\n key: child.key,\n } as any)\n }\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}>\n {isZStack ? <AbsoluteFill>{child}</AbsoluteFill> : child}\n </Fragment>\n )\n }\n\n // first child unspaced avoid insert space\n if (isUnspaced(child) && index === 0) continue\n // no spacing on ZStack\n if (isZStack) continue\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}_00tmgui`,\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}01tmgui`,\n direction,\n space,\n spaceFlex,\n })\n )\n }\n } else {\n final.push(\n createSpacer({\n key: `_${index}02tmgui`,\n direction,\n space,\n spaceFlex,\n })\n )\n }\n }\n }\n\n if (process.env.NODE_ENV === 'development') {\n if (props.debug) {\n console.log(` Spaced children`, final, props)\n }\n }\n\n return final\n}\n\ntype CreateSpacerProps = SpacedChildrenProps & { key: string }\n\nfunction createSpacer({ key, direction, space, spaceFlex }: CreateSpacerProps) {\n return (\n // @ts-ignore this one blew up but the types seem better\n <Spacer\n key={key}\n size={space}\n direction={direction}\n {...(typeof spaceFlex !== 'undefined' && {\n flex: spaceFlex === true ? 1 : spaceFlex === false ? 0 : spaceFlex,\n })}\n />\n )\n}\n\nfunction isUnspaced(child: React.ReactNode) {\n // console.log('unspaced?', child, getMedia())\n return child?.['type']?.['isVisuallyHidden'] || child?.['type']?.['isUnspaced']\n}\n\nconst DefaultProps = new Map()\n\nfunction mergeConfigDefaultProps(\n name: string,\n props: Record<string, any>,\n configDefaults: Record<string, Object>,\n parentNames: (string | undefined)[],\n conf: TamaguiInternalConfig\n) {\n const len = parentNames.length\n let prev\n\n for (let i = 0; i < len; i++) {\n const n = parentNames[i]\n if (!n) continue\n if (DefaultProps.has(n)) {\n prev = DefaultProps.get(n)\n continue\n }\n const props = configDefaults[n]\n if (!props) {\n if (prev) {\n DefaultProps.set(n, prev)\n }\n continue\n }\n prev = mergeProps(prev || {}, props, false, conf.inverseShorthands)[0]\n DefaultProps.set(n, prev)\n }\n\n // overwrite the user defined defaults on top of internal defined defaults\n const ourDefaultsMerged = DefaultProps.get(name)\n if (ourDefaultsMerged) {\n return mergeProps(props, ourDefaultsMerged, false, conf.inverseShorthands)[0]\n }\n return props\n}\n\nconst AbsoluteFill: any = createComponent({\n componentName: 'AbsoluteFill',\n defaultProps: {\n ...stackDefaultStyles,\n flexDirection: 'column',\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n pointerEvents: 'box-none',\n },\n})\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import { useComposedRefs } from '@tamagui/compose-refs'\nimport { isClient, isRSC, isServer, isWeb } from '@tamagui/constants'\nimport {\n composeEventHandlers,\n stylePropsView,\n validPseudoKeys,\n validStyles,\n} from '@tamagui/helpers'\nimport React, {\n Children,\n Fragment,\n createElement,\n forwardRef,\n memo,\n useCallback,\n useContext,\n useEffect,\n useRef,\n} from 'react'\n\nimport { onConfiguredOnce } from './config'\nimport { stackDefaultStyles } from './constants/constants'\nimport { FontLanguageContext } from './contexts/FontLanguageContext'\nimport { TextAncestorContext } from './contexts/TextAncestorContext'\nimport { didGetVariableValue, setDidGetVariableValue } from './createVariable'\nimport { extendStaticConfig, parseStaticConfig } from './helpers/extendStaticConfig'\nimport { useSplitStyles } from './helpers/getSplitStyles'\nimport { getAllSelectors } from './helpers/insertStyleRule'\nimport { mergeProps } from './helpers/mergeProps'\nimport { proxyThemeVariables } from './helpers/proxyThemeVariables'\nimport { useShallowSetState } from './helpers/useShallowSetState'\nimport { setMediaShouldUpdate, useMedia } from './hooks/useMedia'\nimport { useServerRef, useServerState } from './hooks/useServerHooks'\nimport { useThemeWithState } from './hooks/useTheme'\nimport { hooks } from './setupHooks'\nimport {\n DebugProp,\n SpaceDirection,\n SpaceTokens,\n SpacerProps,\n StaticConfig,\n StaticConfigParsed,\n StylableComponent,\n TamaguiComponent,\n TamaguiComponentEvents,\n TamaguiComponentState,\n TamaguiConfig,\n TamaguiElement,\n TamaguiInternalConfig,\n UseAnimationHook,\n UseAnimationProps,\n} from './types'\nimport { Slot, mergeEvent } from './views/Slot'\nimport { useThemedChildren } from './views/Theme'\n\n// let t\n// import { timer } from '@tamagui/timer'\n// if (true || process.env.ANALYZE) {\n// t = require().timer()\n// setTimeout(() => {\n// const out = t.print()\n// if (isClient) {\n// alert(out)\n// }\n// }, 2000)\n// }\n\n// this appears to fix expo / babel not picking this up sometimes? really odd\nprocess.env.TAMAGUI_TARGET\n\nexport const defaultComponentState: TamaguiComponentState = {\n hover: false,\n press: false,\n pressIn: false,\n focus: false,\n unmounted: true,\n}\n\nconst defaultComponentStateMounted: TamaguiComponentState = {\n ...defaultComponentState,\n unmounted: false,\n}\n\n/**\n * All things that need one-time setup after createTamagui is called\n */\nlet tamaguiConfig: TamaguiInternalConfig\nlet AnimatedText: any\nlet AnimatedView: any\nlet initialTheme: any\n\nexport const mouseUps = new Set<Function>()\nif (typeof document !== 'undefined') {\n const cancelTouches = () => {\n mouseUps.forEach((x) => x())\n mouseUps.clear()\n }\n addEventListener('mouseup', cancelTouches)\n addEventListener('touchend', cancelTouches)\n addEventListener('touchcancel', cancelTouches)\n}\n\n// mutates\nfunction mergeShorthands(\n { defaultProps }: StaticConfigParsed,\n { shorthands }: TamaguiConfig\n) {\n // they are defined in correct order already { ...parent, ...child }\n for (const key of Object.keys(defaultProps)) {\n defaultProps[shorthands[key] || key] = defaultProps[key]\n }\n}\n\n/**\n * Only on native do we need the actual underlying View/Text\n * On the web we avoid react-native dep altogether.\n */\nlet BaseText: any\nlet BaseView: any\nlet hasSetupBaseViews = false\n\nexport function createComponent<\n ComponentPropTypes extends Object = {},\n Ref = TamaguiElement,\n BaseProps = never\n>(\n configIn: Partial<StaticConfig> | StaticConfigParsed,\n ParentComponent?: StylableComponent\n) {\n const staticConfig = (() => {\n const next = extendStaticConfig(configIn, ParentComponent)\n if ('parsed' in next) {\n return next\n } else {\n return parseStaticConfig(next)\n }\n })()\n\n const defaultComponentClassName = `is_${staticConfig.componentName}`\n let tamaguiDefaultProps: any\n let defaultTag: string | undefined\n\n // see onConfiguredOnce below which attaches a name then to this component\n const component = forwardRef<Ref, ComponentPropTypes>((propsIn: any, forwardedRef) => {\n if (process.env.TAMAGUI_TARGET === 'native') {\n // todo this could be moved to a cleaner location\n if (!hasSetupBaseViews) {\n hasSetupBaseViews = true\n const baseViews = hooks.getBaseViews?.()\n if (baseViews) {\n BaseText = baseViews.Text\n BaseView = baseViews.View\n }\n }\n }\n\n // test only\n if (process.env.NODE_ENV === 'test') {\n if (propsIn['data-test-renders']) {\n propsIn['data-test-renders']['current'] ??= 0\n propsIn['data-test-renders']['current'] += 1\n }\n }\n // const time = t.start({ quiet: true })\n\n // React inserts default props after your props for some reason...\n // order important so we do loops, you can't just spread because JS does weird things\n let props: any\n if (tamaguiDefaultProps && !propsIn.asChild) {\n props = mergeProps(tamaguiDefaultProps, propsIn)[0]\n } else {\n props = propsIn\n }\n\n const debugProp = props['debug'] as DebugProp\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 /**\n * Component state for tracking animations, pseudos\n */\n const animationsConfig = tamaguiConfig.animations\n const useAnimations = animationsConfig?.useAnimations as UseAnimationHook | undefined\n const avoidClassesWhileAnimating = animationsConfig.isReactNative\n const hasEnterStyle = !!props.enterStyle\n const needsMount = Boolean(\n (isWeb ? isClient : true) && (hasEnterStyle || props.animation)\n )\n const states = useServerState<TamaguiComponentState>(\n needsMount ? defaultComponentState! : defaultComponentStateMounted!\n )\n\n const state = propsIn.forceStyle\n ? { ...states[0], [propsIn.forceStyle]: true }\n : states[0]\n const setState = states[1]\n const setStateShallow = useShallowSetState(setState, debugProp, componentName)\n\n // conditional but if ever true stays true\n // [animated, inversed]\n const stateRef = useRef(\n undefined as any as {\n hasAnimated?: boolean\n themeShallow?: boolean\n didAccessThemeVariableValue?: boolean\n }\n )\n stateRef.current ??= {}\n\n const isAnimated = (() => {\n const next = !!(useAnimations && props.animation)\n if (next && !stateRef.current.hasAnimated) {\n stateRef.current.hasAnimated = true\n }\n return next || stateRef.current.hasAnimated\n })()\n\n const usePresence = tamaguiConfig.animations?.usePresence\n const presence = !isRSC && isAnimated ? usePresence() : null\n\n // set enter/exit variants onto our new props object\n if (isAnimated && presence) {\n const presenceState = presence[2]\n if (presenceState) {\n if (state.unmounted && presenceState.enterVariant) {\n props[presenceState.enterVariant] = true\n }\n if (!presenceState.isPresent && presenceState.exitVariant) {\n props[presenceState.exitVariant] = true\n }\n }\n }\n\n const isReactNative = Boolean(\n staticConfig.isReactNative || (isAnimated && tamaguiConfig.animations.isReactNative)\n )\n\n if (process.env.NODE_ENV === 'development') {\n if (debugProp) {\n // prettier-ignore\n const name = `${componentName || Component?.displayName || Component?.name || '[Unnamed Component]'}`\n const type = isReactNative ? '(rnw)' : ''\n const dataIs = propsIn['data-is'] || ''\n const banner = `${name}${dataIs ? ` ${dataIs}` : ''} ${type}`\n console.group(`%c ${banner}`, 'background: yellow;')\n if (!isServer) {\n console.log('state', state)\n }\n }\n }\n\n const shouldAvoidClasses =\n !isWeb ||\n !!(props.animation && avoidClassesWhileAnimating) ||\n !staticConfig.acceptsClassName\n const shouldForcePseudo = !!propsIn.forceStyle\n const noClassNames = shouldAvoidClasses || shouldForcePseudo\n\n const themeState = useThemeWithState({\n name: props.theme,\n componentName,\n reset: props.reset,\n inverse: props.themeInverse,\n // @ts-expect-error\n disable: props['data-themeable'],\n debug: props.debug,\n shouldUpdate: () => !!stateRef.current.didAccessThemeVariableValue,\n })!\n\n const hasTextAncestor = !!(isWeb && isText ? useContext(TextAncestorContext) : false)\n const languageContext = isRSC ? null : useContext(FontLanguageContext)\n const isDisabled = props.disabled ?? props.accessibilityState?.disabled\n\n const isTaggable = !Component || typeof Component === 'string'\n // default to tag, fallback to component (when both strings)\n const element = isWeb\n ? isTaggable\n ? props.tag || defaultTag || Component\n : Component\n : Component\n\n const BaseTextComponent = BaseText || element || 'span'\n const BaseViewComponent = BaseView || element || (hasTextAncestor ? 'span' : 'div')\n let elementType = isText\n ? (isAnimated ? AnimatedText : null) || BaseTextComponent\n : (isAnimated ? AnimatedView : null) || BaseViewComponent\n\n elementType = Component || elementType\n const isStringElement = typeof elementType === 'string'\n\n const isExiting = presence?.[0] === false\n\n const mediaState = useMedia(\n // @ts-ignore, we just pass a stable object so we can get it later with\n // should match to the one used in `setMediaShouldUpdate` below\n stateRef,\n debugProp ? { props, staticConfig } : null\n )\n\n setDidGetVariableValue(false)\n\n const splitStyles = useSplitStyles(\n props,\n staticConfig,\n themeState.theme,\n {\n ...state,\n mediaState,\n noClassNames,\n dynamicStylesInline: noClassNames,\n hasTextAncestor,\n resolveVariablesAs: 'auto',\n isExiting,\n },\n null,\n languageContext || undefined,\n elementType,\n debugProp\n )\n\n // only listen for changes if we are using raw theme values or media space, or dynamic media (native)\n // array = space media breakpoints\n const isMediaSpaced = Array.isArray(splitStyles.hasMedia)\n const shouldListenForMedia =\n didGetVariableValue() ||\n isMediaSpaced ||\n (noClassNames && splitStyles.hasMedia === true)\n\n setMediaShouldUpdate(stateRef, {\n enabled: shouldListenForMedia,\n keys: noClassNames && isMediaSpaced ? (splitStyles.hasMedia as any) : null,\n })\n\n const hostRef = useServerRef<TamaguiElement>(null)\n\n // animation setup\n const isAnimatedReactNativeWeb = isAnimated && avoidClassesWhileAnimating\n\n if (process.env.NODE_ENV === 'development') {\n if (!process.env.TAMAGUI_TARGET) {\n console.error(\n `No process.env.TAMAGUI_TARGET set, please set it to \"native\" or \"web\".`\n )\n }\n\n if (debugProp) {\n console.groupCollapsed('props')\n // prettier-ignore\n console.log('props in', propsIn, 'mapped to', props, 'in order', Object.keys(props))\n console.log('splitStyles', splitStyles)\n // eslint-disable-next-line no-console\n console.log('shouldListenForMedia', shouldListenForMedia)\n // eslint-disable-next-line no-console\n console.log('className', Object.values(splitStyles.classNames))\n if (isClient) {\n console.log('ref', hostRef, '(click to view)')\n }\n console.groupEnd()\n if (debugProp === 'break') {\n // rome-ignore lint/suspicious/noDebugger: ok\n debugger\n }\n }\n }\n\n const {\n viewProps: viewPropsIn,\n pseudos,\n style: splitStylesStyle,\n classNames,\n space,\n } = splitStyles\n\n const propsWithAnimation = props as UseAnimationProps\n\n // once you set animation prop don't remove it, you can set to undefined/false\n // reason is animations are heavy - no way around it, and must be run inline here (\uD83D\uDE45 loading as a sub-component)\n let animationStyles: any\n if (!isRSC && isAnimated && useAnimations) {\n const animations = useAnimations({\n props: propsWithAnimation,\n style: splitStylesStyle,\n presence,\n state,\n pseudos: pseudos || null,\n onDidAnimate: props.onDidAnimate,\n hostRef,\n staticConfig,\n })\n if (animations) {\n animationStyles = animations.style\n }\n }\n\n const {\n hitSlop,\n asChild,\n children,\n onPress,\n onPressIn,\n onPressOut,\n onHoverIn,\n onHoverOut,\n themeShallow,\n spaceDirection: _spaceDirection,\n disabled: disabledProp,\n onMouseUp,\n onMouseDown,\n onMouseEnter,\n onMouseLeave,\n separator,\n // ignore from here on out\n forceStyle: _forceStyle,\n // @ts-ignore for next/link compat etc\n onClick,\n theme: _themeProp,\n // @ts-ignore\n defaultVariants,\n\n ...nonTamaguiProps\n } = viewPropsIn\n\n const disabled = props.accessibilityState?.disabled || 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 (process.env.TAMAGUI_TARGET === 'web' && !isReactNative && !asChild) {\n viewProps = hooks.usePropsTransform?.(elementType, viewPropsIn, hostRef)\n } else {\n viewProps = nonTamaguiProps\n }\n\n viewProps.ref = useComposedRefs(hostRef as any, forwardedRef)\n\n if (process.env.NODE_ENV === 'development') {\n if (!isText && isWeb && !staticConfig.isHOC) {\n Children.toArray(props.children).forEach((item) => {\n // allow newlines because why not its annoying with mdx\n if (typeof item === 'string' && item !== '\\n') {\n console.error(\n `Unexpected text node: ${item}. A text node cannot be a child of a <View>.`\n )\n }\n })\n }\n }\n\n const unPress = useCallback(() => {\n setStateShallow({\n press: false,\n pressIn: false,\n })\n }, [setStateShallow])\n\n if (isWeb) {\n useEffect(() => {\n return () => {\n mouseUps.delete(unPress)\n }\n }, [])\n }\n\n const shouldSetMounted = needsMount && state.unmounted\n useEffect(() => {\n if (!shouldSetMounted) return\n if (state.unmounted === true && needsMount) {\n setStateShallow({\n unmounted: false,\n })\n return\n }\n\n setStateShallow({\n unmounted: false,\n })\n }, [shouldSetMounted, state.unmounted])\n\n let styles: Record<string, any>[]\n\n if (isStringElement && shouldAvoidClasses && !shouldForcePseudo) {\n styles = {\n ...(animationStyles ?? splitStylesStyle),\n }\n } else {\n styles = [animationStyles ?? splitStylesStyle]\n\n // ugly but for now...\n if (shouldForcePseudo) {\n const next = {}\n styles.forEach((style) => Object.assign(next, style))\n // @ts-ignore\n Object.assign(splitStyles.style, next)\n }\n }\n\n let fontFamily = isText\n ? splitStyles.fontFamily || staticConfig.defaultProps.fontFamily\n : null\n if (fontFamily && fontFamily[0] === '$') {\n fontFamily = fontFamily.slice(1)\n }\n const fontFamilyClassName = fontFamily ? `font_${fontFamily}` : ''\n\n const classList = [\n hasEnterStyle && ((state.unmounted && needsMount) || !isClient)\n ? 't_will-mount'\n : '',\n componentName ? componentClassName : '',\n fontFamilyClassName,\n classNames ? Object.values(classNames).join(' ') : '',\n ]\n\n const className = classList.join(' ')\n\n if (process.env.TAMAGUI_TARGET === 'web') {\n const style = animationStyles ?? splitStyles.style\n\n if (isAnimatedReactNativeWeb) {\n viewProps.style = style\n } else if (isReactNative) {\n const rnwStyle = { $$css: true }\n for (const name of className.split(' ')) {\n rnwStyle[name] = name\n }\n viewProps.style = [rnwStyle, ...(Array.isArray(style) ? style : [style])]\n\n if (process.env.NODE_ENV === 'development') {\n // turn debug data- props into dataSet in dev mode\n Object.keys(viewProps).forEach((key) => {\n if (key.startsWith('data-')) {\n viewProps.dataSet ??= {}\n viewProps.dataSet[key.replace('data-', '')] = viewProps[key]\n delete viewProps[key]\n }\n })\n }\n } else {\n viewProps.className = className\n viewProps.style = style\n }\n }\n\n // TODO MOVE INTO HOOK\n if (process.env.TAMAGUI_TARGET === 'native') {\n // swap out the right family based on weight/style\n if (splitStyles.fontFamily) {\n const faceInfo = tamaguiConfig.fontsParsed[splitStyles.fontFamily]?.face\n if (faceInfo) {\n const [weight, style] = (() => {\n let weight: string | undefined\n let style: string | undefined\n for (let i = styles.length; i >= 0; i--) {\n weight ??= styles[i]?.fontWeight\n style ??= styles[i]?.fontStyle\n }\n return [weight || '400', style || 'normal'] as const\n })()\n const overrideFace = faceInfo[weight]?.[style]?.val\n if (overrideFace) {\n for (const style of styles) {\n if (style?.fontFamily) {\n style.fontFamily = overrideFace\n style.fontWeight = undefined\n style.fontStyle = undefined\n }\n }\n }\n }\n }\n\n // assign styles\n viewProps.style = styles\n }\n\n const runtimePressStyle = !disabled && noClassNames && pseudos?.pressStyle\n const attachPress = Boolean(\n runtimePressStyle || onPress || onPressOut || onPressIn || onClick\n )\n const runtimeHoverStyle = !disabled && noClassNames && pseudos?.hoverStyle\n const isHoverable =\n isWeb &&\n !!(runtimeHoverStyle || onHoverIn || onHoverOut || onMouseEnter || onMouseLeave)\n\n const handlesPressEvents = !(isWeb || asChild)\n\n // check presence rather than value to prevent reparenting bugs\n // allows for onPress={x ? function : undefined} without re-ordering dom\n const shouldAttach = Boolean(\n attachPress ||\n isHoverable ||\n (noClassNames && 'pressStyle' in props) ||\n (isWeb && noClassNames && 'hoverStyle' in props)\n )\n\n const events: TamaguiComponentEvents | null =\n shouldAttach && !isRSC && !isDisabled && !asChild\n ? {\n onPressOut: attachPress\n ? (e) => {\n unPress()\n onPressOut?.(e)\n onMouseUp?.(e)\n }\n : undefined,\n ...(isHoverable && {\n onMouseEnter: isHoverable\n ? (e) => {\n const next: Partial<typeof state> = {}\n if (isHoverable) {\n next.hover = true\n }\n if (state.pressIn) {\n next.press = true\n }\n if (isHoverable || state.pressIn) {\n setStateShallow(next)\n }\n onHoverIn?.(e)\n onMouseEnter?.(e)\n }\n : undefined,\n onMouseLeave: isHoverable\n ? (e) => {\n const next: Partial<typeof state> = {}\n mouseUps.add(unPress)\n if (isHoverable) {\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 onPressIn: attachPress\n ? (e) => {\n setStateShallow({\n press: true,\n pressIn: true,\n hover: false,\n })\n onPressIn?.(e)\n onMouseDown?.(e)\n if (isWeb) {\n mouseUps.add(unPress)\n }\n }\n : undefined,\n onPress: attachPress\n ? (e) => {\n unPress()\n // @ts-ignore\n isWeb && onClick?.(e)\n onPress?.(e)\n }\n : undefined,\n }\n : null\n\n if (process.env.TAMAGUI_TARGET === 'native') {\n if (events) {\n // replicating TouchableWithoutFeedback\n Object.assign(events, {\n cancelable: !props.rejectResponderTermination,\n disabled: isDisabled,\n hitSlop: props.hitSlop,\n delayLongPress: props.delayLongPress,\n delayPressIn: props.delayPressIn,\n delayPressOut: props.delayPressOut,\n focusable: viewProps.focusable ?? true,\n minPressDuration: 0,\n })\n }\n }\n\n // EVENTS native\n hooks.useEvents?.(viewProps, events, splitStyles, setStateShallow)\n\n const shouldReset = !!(themeShallow && themeState.isNewTheme)\n if (shouldReset) {\n stateRef.current.themeShallow = true\n }\n\n let content =\n !children || asChild\n ? children\n : spacedChildren({\n separator,\n children,\n space,\n direction: props.spaceDirection || 'both',\n isZStack,\n debug: debugProp,\n })\n\n if (asChild) {\n elementType = Slot\n viewProps = {\n ...viewProps,\n onPress,\n onPressIn,\n onPressOut,\n }\n }\n\n content = createElement(elementType, viewProps, content)\n\n content = useThemedChildren(themeState, content, {\n shallow: stateRef.current.themeShallow,\n })\n\n if (process.env.TAMAGUI_TARGET === 'web') {\n if (events || isAnimatedReactNativeWeb) {\n content = (\n <span\n className={`${isAnimatedReactNativeWeb ? className : ''} _dsp_contents`}\n {...(events && {\n onMouseEnter: events.onMouseEnter,\n onMouseLeave: events.onMouseLeave,\n onClick: events.onPress,\n onMouseDown: events.onPressIn,\n onMouseUp: events.onPressOut,\n onTouchStart: events.onPressIn,\n onTouchEnd: events.onPressOut,\n })}\n >\n {content}\n </span>\n )\n }\n }\n\n if (process.env.NODE_ENV === 'development' && process.env.DEBUG !== 'tamagui') {\n if (debugProp) {\n const element = typeof elementType === 'string' ? elementType : 'Component'\n console.groupCollapsed(`render <${element} /> with props`, viewProps)\n for (const key in viewProps) {\n console.log(key, viewProps[key])\n }\n console.log('children', content)\n console.groupEnd()\n if (typeof window !== 'undefined') {\n // prettier-ignore\n console.log({ state, themeState, isAnimated, isAnimatedReactNativeWeb, tamaguiDefaultProps, viewProps, splitStyles, animationStyles, handlesPressEvents, isStringElement, classNamesIn: props.className?.split(' '), classNamesOut: viewProps.className?.split(' '), events, shouldAttach, styles, pseudos, content, shouldAvoidClasses, avoidClasses: avoidClassesWhileAnimating, animation: props.animation, style: splitStylesStyle, staticConfig, tamaguiConfig, shouldForcePseudo, classNamesFull: Object.fromEntries(Object.entries(classNames).map(([k, v]) => [v, getAllSelectors()[v]])) })\n }\n console.groupEnd()\n }\n }\n\n return content\n })\n\n if (staticConfig.componentName) {\n component.displayName = staticConfig.componentName\n }\n\n onConfiguredOnce((conf) => {\n // one time only setup\n if (!tamaguiConfig) {\n tamaguiConfig = conf\n\n if (tamaguiConfig.animations) {\n AnimatedText = tamaguiConfig.animations.Text\n AnimatedView = tamaguiConfig.animations.View\n }\n\n if (!initialTheme) {\n const next = conf.themes[Object.keys(conf.themes)[0]]\n initialTheme = proxyThemeVariables(next)\n if (process.env.NODE_ENV === 'development') {\n if (!initialTheme) {\n console.log('Warning: Missing theme')\n }\n }\n }\n }\n\n // per-component setup\n // do this to make sure shorthands don't duplicate with.. longhands\n mergeShorthands(staticConfig, tamaguiConfig)\n\n let defaultPropsIn = staticConfig.defaultProps || {}\n\n // because we run createTamagui after styled() defs, have to do some work here\n // gather defaults props one time and merge downwards\n // find last unprocessed and process\n const parentNames = [...(staticConfig.parentNames || []), staticConfig.componentName]\n\n if (tamaguiConfig.defaultProps && parentNames && staticConfig.componentName) {\n defaultPropsIn = mergeConfigDefaultProps(\n staticConfig.componentName,\n defaultPropsIn,\n tamaguiConfig.defaultProps,\n parentNames,\n tamaguiConfig\n )\n }\n\n const debug = defaultPropsIn['debug']\n\n // remove all classNames\n const [ourProps, ourClassNames] = mergeProps(defaultPropsIn, {})\n\n if (ourProps.tag) {\n defaultTag = ourProps.tag\n }\n\n const noClassNames = !staticConfig.acceptsClassName\n const { name, variants, defaultVariants, ...restProps } = ourProps\n\n // must preserve prop order\n // leave out className because we handle that already with initialSplitStyles.classNames\n // otherwise it confuses variant functions getting className props\n const [defaults, defaultsClassnames] = mergeProps(component.defaultProps as any, {\n ...defaultVariants,\n ...restProps,\n })\n\n // split - keep variables on props to be processed using theme values at runtime (native)\n if (!isWeb) {\n for (const key in staticConfig.defaultProps) {\n const val = staticConfig.defaultProps[key]\n if (validPseudoKeys[key]) continue\n defaults[key] = val\n }\n }\n\n // set to global\n tamaguiDefaultProps = defaults\n\n // add debug logs\n if (process.env.NODE_ENV === 'development' && debug) {\n if (process.env.IS_STATIC !== 'is_static') {\n console.log(`\uD83D\uDC1B [${staticConfig.componentName || 'Component'}]`, {\n staticConfig,\n tamaguiDefaultProps,\n defaults,\n defaultPropsIn,\n defaultPropsKeyOrder: Object.keys(staticConfig.defaultProps),\n defaultPropsInKeyOrder: Object.keys(defaultPropsIn).map((k) => [\n k,\n defaultPropsIn[k],\n ]),\n ourProps,\n ourClassNames,\n defaultsClassnames,\n defaultTag,\n noClassNames,\n })\n }\n }\n })\n\n let res: TamaguiComponent<ComponentPropTypes, Ref, BaseProps> = component as any\n\n if (configIn.memo) {\n res = memo(res) as any\n }\n\n res.staticConfig = {\n validStyles: staticConfig.validStyles || stylePropsView,\n ...staticConfig,\n }\n\n // res.extractable HoC\n res.extractable = (Component: any, conf?: Partial<StaticConfig>) => {\n Component.staticConfig = extendStaticConfig(\n {\n Component,\n ...conf,\n neverFlatten: true,\n isHOC: true,\n defaultProps: {\n ...Component.defaultProps,\n ...conf?.defaultProps,\n },\n },\n res\n )\n return Component\n }\n\n return res\n}\n\n// for elements to avoid spacing\nexport const Unspaced = (props: { children?: any }) => {\n return props.children\n}\nUnspaced['isUnspaced'] = true\n\n// dont used styled() here to avoid circular deps\n// keep inline to avoid circular deps\n\nexport const Spacer = createComponent<SpacerProps>({\n acceptsClassName: true,\n memo: true,\n componentName: 'Spacer',\n validStyles,\n\n defaultProps: {\n ...stackDefaultStyles,\n // avoid nesting issues\n tag: 'span',\n size: true,\n pointerEvents: 'none',\n },\n\n variants: {\n size: {\n '...size': (size, { tokens }) => {\n size = size === true ? '$true' : size\n const sizePx = tokens.space[size] ?? size\n return {\n width: sizePx,\n height: sizePx,\n minWidth: sizePx,\n minHeight: sizePx,\n }\n },\n },\n\n flex: {\n true: {\n flexGrow: 1,\n },\n },\n\n direction: {\n horizontal: {\n height: 0,\n minHeight: 0,\n },\n vertical: {\n width: 0,\n minWidth: 0,\n },\n both: {},\n },\n } as const,\n})\n\nexport type SpacedChildrenProps = {\n isZStack?: boolean\n children?: React.ReactNode\n space?: SpaceTokens | number | null\n spaceFlex?: boolean | number\n direction?: SpaceDirection\n separator?: React.ReactNode\n debug?: DebugProp\n}\n\nexport function spacedChildren(props: SpacedChildrenProps) {\n const { isZStack, children, space, direction, spaceFlex, separator } = props\n const hasSpace = !!(space || spaceFlex)\n const hasSeparator = !(separator === undefined || separator === null)\n if (!(hasSpace || hasSeparator || isZStack)) {\n return children\n }\n\n const childrenList = Children.toArray(children)\n\n const len = childrenList.length\n if (len <= 1 && !isZStack && !childrenList[0]?.['type']?.['shouldForwardSpace']) {\n return childrenList\n }\n\n const final: React.ReactNode[] = []\n for (let [index, child] of childrenList.entries()) {\n const isEmpty =\n child === null ||\n child === undefined ||\n (Array.isArray(child) && child.length === 0)\n\n // forward space\n if (!isEmpty && React.isValidElement(child) && child.type?.['shouldForwardSpace']) {\n child = React.cloneElement(child, {\n space,\n spaceFlex,\n separator,\n key: child.key,\n } as any)\n }\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}>\n {isZStack ? <AbsoluteFill>{child}</AbsoluteFill> : child}\n </Fragment>\n )\n }\n\n // first child unspaced avoid insert space\n if (isUnspaced(child) && index === 0) continue\n // no spacing on ZStack\n if (isZStack) continue\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}_00tmgui`,\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}01tmgui`,\n direction,\n space,\n spaceFlex,\n })\n )\n }\n } else {\n final.push(\n createSpacer({\n key: `_${index}02tmgui`,\n direction,\n space,\n spaceFlex,\n })\n )\n }\n }\n }\n\n if (process.env.NODE_ENV === 'development') {\n if (props.debug) {\n console.log(` Spaced children`, final, props)\n }\n }\n\n return final\n}\n\ntype CreateSpacerProps = SpacedChildrenProps & { key: string }\n\nfunction createSpacer({ key, direction, space, spaceFlex }: CreateSpacerProps) {\n return (\n // @ts-ignore this one blew up but the types seem better\n <Spacer\n key={key}\n size={space}\n direction={direction}\n {...(typeof spaceFlex !== 'undefined' && {\n flex: spaceFlex === true ? 1 : spaceFlex === false ? 0 : spaceFlex,\n })}\n />\n )\n}\n\nfunction isUnspaced(child: React.ReactNode) {\n // console.log('unspaced?', child, getMedia())\n return child?.['type']?.['isVisuallyHidden'] || child?.['type']?.['isUnspaced']\n}\n\nconst DefaultProps = new Map()\n\nfunction mergeConfigDefaultProps(\n name: string,\n props: Record<string, any>,\n configDefaults: Record<string, Object>,\n parentNames: (string | undefined)[],\n conf: TamaguiInternalConfig\n) {\n const len = parentNames.length\n let prev\n\n for (let i = 0; i < len; i++) {\n const n = parentNames[i]\n if (!n) continue\n if (DefaultProps.has(n)) {\n prev = DefaultProps.get(n)\n continue\n }\n const props = configDefaults[n]\n if (!props) {\n if (prev) {\n DefaultProps.set(n, prev)\n }\n continue\n }\n prev = mergeProps(prev || {}, props, false, conf.inverseShorthands)[0]\n DefaultProps.set(n, prev)\n }\n\n // overwrite the user defined defaults on top of internal defined defaults\n const ourDefaultsMerged = DefaultProps.get(name)\n if (ourDefaultsMerged) {\n return mergeProps(props, ourDefaultsMerged, false, conf.inverseShorthands)[0]\n }\n return props\n}\n\nconst AbsoluteFill: any = createComponent({\n componentName: 'AbsoluteFill',\n defaultProps: {\n ...stackDefaultStyles,\n flexDirection: 'column',\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n pointerEvents: 'box-none',\n },\n})\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["_a", "_b", "weight", "style", "element", "props"]
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/web",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.7",
|
|
4
4
|
"source": "src/index.ts",
|
|
5
5
|
"main": "dist/cjs",
|
|
6
6
|
"module": "dist/esm",
|
|
@@ -27,20 +27,20 @@
|
|
|
27
27
|
"reset.css"
|
|
28
28
|
],
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@tamagui/compose-refs": "^1.2.
|
|
31
|
-
"@tamagui/constants": "^1.2.
|
|
32
|
-
"@tamagui/helpers": "^1.2.
|
|
33
|
-
"@tamagui/normalize-css-color": "^1.2.
|
|
34
|
-
"@tamagui/use-did-finish-ssr": "^1.2.
|
|
35
|
-
"@tamagui/use-event": "^1.2.
|
|
36
|
-
"@tamagui/use-force-update": "^1.2.
|
|
30
|
+
"@tamagui/compose-refs": "^1.2.7",
|
|
31
|
+
"@tamagui/constants": "^1.2.7",
|
|
32
|
+
"@tamagui/helpers": "^1.2.7",
|
|
33
|
+
"@tamagui/normalize-css-color": "^1.2.7",
|
|
34
|
+
"@tamagui/use-did-finish-ssr": "^1.2.7",
|
|
35
|
+
"@tamagui/use-event": "^1.2.7",
|
|
36
|
+
"@tamagui/use-force-update": "^1.2.7"
|
|
37
37
|
},
|
|
38
38
|
"peerDependencies": {
|
|
39
39
|
"react": "*",
|
|
40
40
|
"react-dom": "*"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
|
-
"@tamagui/build": "^1.2.
|
|
43
|
+
"@tamagui/build": "^1.2.7",
|
|
44
44
|
"@testing-library/react": "^13.4.0",
|
|
45
45
|
"csstype": "^3.0.10",
|
|
46
46
|
"react": "^18.2.0",
|
package/src/config.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ConfigListener, TamaguiInternalConfig,
|
|
1
|
+
import { ConfigListener, TamaguiInternalConfig, TokensMerged } from './types'
|
|
2
2
|
|
|
3
3
|
let conf: TamaguiInternalConfig | null
|
|
4
4
|
|
|
@@ -26,8 +26,38 @@ export const getConfig = () => {
|
|
|
26
26
|
return conf
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
let cached: TokensMerged
|
|
30
|
+
export const getTokens = ({
|
|
31
|
+
prefixed,
|
|
32
|
+
}: {
|
|
33
|
+
/**
|
|
34
|
+
* @deprecated prefixed true and false are merged together, no longer need this property
|
|
35
|
+
*/
|
|
36
|
+
prefixed?: boolean
|
|
37
|
+
} = {}): TokensMerged => {
|
|
38
|
+
return (cached ??= {
|
|
39
|
+
size: {
|
|
40
|
+
...conf!.tokens['size'],
|
|
41
|
+
...conf!.tokensParsed['size'],
|
|
42
|
+
},
|
|
43
|
+
space: {
|
|
44
|
+
...conf!.tokens['space'],
|
|
45
|
+
...conf!.tokensParsed['space'],
|
|
46
|
+
},
|
|
47
|
+
radius: {
|
|
48
|
+
...conf!.tokens['radius'],
|
|
49
|
+
...conf!.tokensParsed['radius'],
|
|
50
|
+
},
|
|
51
|
+
zIndex: {
|
|
52
|
+
...conf!.tokens['zIndex'],
|
|
53
|
+
...conf!.tokensParsed['zIndex'],
|
|
54
|
+
},
|
|
55
|
+
color: {
|
|
56
|
+
...conf!.tokens['color'],
|
|
57
|
+
...conf!.tokensParsed['color'],
|
|
58
|
+
},
|
|
59
|
+
} as any)
|
|
60
|
+
}
|
|
31
61
|
|
|
32
62
|
/**
|
|
33
63
|
* Note: this is the same as `getTokens`
|
package/src/createComponent.tsx
CHANGED
|
@@ -664,25 +664,29 @@ export function createComponent<
|
|
|
664
664
|
? (e) => {
|
|
665
665
|
unPress()
|
|
666
666
|
// @ts-ignore
|
|
667
|
-
onClick?.(e)
|
|
667
|
+
isWeb && onClick?.(e)
|
|
668
668
|
onPress?.(e)
|
|
669
669
|
}
|
|
670
670
|
: undefined,
|
|
671
|
-
|
|
672
|
-
// replicating TouchableWithoutFeedback
|
|
673
|
-
...(!isWeb && {
|
|
674
|
-
cancelable: !props.rejectResponderTermination,
|
|
675
|
-
disabled: isDisabled,
|
|
676
|
-
hitSlop: props.hitSlop,
|
|
677
|
-
delayLongPress: props.delayLongPress,
|
|
678
|
-
delayPressIn: props.delayPressIn,
|
|
679
|
-
delayPressOut: props.delayPressOut,
|
|
680
|
-
focusable: viewProps.focusable ?? true,
|
|
681
|
-
minPressDuration: 0,
|
|
682
|
-
}),
|
|
683
671
|
}
|
|
684
672
|
: null
|
|
685
673
|
|
|
674
|
+
if (process.env.TAMAGUI_TARGET === 'native') {
|
|
675
|
+
if (events) {
|
|
676
|
+
// replicating TouchableWithoutFeedback
|
|
677
|
+
Object.assign(events, {
|
|
678
|
+
cancelable: !props.rejectResponderTermination,
|
|
679
|
+
disabled: isDisabled,
|
|
680
|
+
hitSlop: props.hitSlop,
|
|
681
|
+
delayLongPress: props.delayLongPress,
|
|
682
|
+
delayPressIn: props.delayPressIn,
|
|
683
|
+
delayPressOut: props.delayPressOut,
|
|
684
|
+
focusable: viewProps.focusable ?? true,
|
|
685
|
+
minPressDuration: 0,
|
|
686
|
+
})
|
|
687
|
+
}
|
|
688
|
+
}
|
|
689
|
+
|
|
686
690
|
// EVENTS native
|
|
687
691
|
hooks.useEvents?.(viewProps, events, splitStyles, setStateShallow)
|
|
688
692
|
|
package/src/types.tsx
CHANGED
|
@@ -93,7 +93,7 @@ export type ConfigListener = (conf: TamaguiInternalConfig) => void
|
|
|
93
93
|
export type VariableVal = number | string | Variable
|
|
94
94
|
export type VariableColorVal = string | Variable
|
|
95
95
|
|
|
96
|
-
type GenericKey = string
|
|
96
|
+
type GenericKey = string
|
|
97
97
|
|
|
98
98
|
export interface CreateTokens<Val extends VariableVal = VariableVal> {
|
|
99
99
|
color: { [key: GenericKey]: Val }
|
|
@@ -278,7 +278,35 @@ export type ThemeKeys = keyof ThemeDefinition
|
|
|
278
278
|
export type ThemeParsed = {
|
|
279
279
|
[key in ThemeKeys]: Variable<any>
|
|
280
280
|
}
|
|
281
|
+
|
|
281
282
|
export type Tokens = TamaguiConfig['tokens']
|
|
283
|
+
|
|
284
|
+
export type TokensParsed = {
|
|
285
|
+
size: TokenPrefixed<Tokens['size']>
|
|
286
|
+
color: TokenPrefixed<Tokens['color']>
|
|
287
|
+
radius: TokenPrefixed<Tokens['radius']>
|
|
288
|
+
zIndex: TokenPrefixed<Tokens['zIndex']>
|
|
289
|
+
space: TokenPrefixed<Tokens['space']>
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
type TokenPrefixed<A extends { [key: string]: any }> = {
|
|
293
|
+
[key in Ensure$Prefix<keyof A>]: A[keyof A]
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
type Ensure$Prefix<A extends string | number | symbol> = A extends string
|
|
297
|
+
? A extends `$${string}`
|
|
298
|
+
? A
|
|
299
|
+
: `$${A}`
|
|
300
|
+
: never
|
|
301
|
+
|
|
302
|
+
export type TokensMerged = {
|
|
303
|
+
size: TokensParsed['size'] & Tokens['size']
|
|
304
|
+
color: TokensParsed['color'] & Tokens['color']
|
|
305
|
+
radius: TokensParsed['radius'] & Tokens['radius']
|
|
306
|
+
zIndex: TokensParsed['zIndex'] & Tokens['zIndex']
|
|
307
|
+
space: TokensParsed['space'] & Tokens['space']
|
|
308
|
+
}
|
|
309
|
+
|
|
282
310
|
export type Shorthands = TamaguiConfig['shorthands']
|
|
283
311
|
export type Media = TamaguiConfig['media']
|
|
284
312
|
export type Themes = TamaguiConfig['themes']
|
|
@@ -297,7 +325,7 @@ export interface ThemeProps {
|
|
|
297
325
|
componentName?: string
|
|
298
326
|
children?: any
|
|
299
327
|
reset?: boolean
|
|
300
|
-
debug?:
|
|
328
|
+
debug?: DebugProp
|
|
301
329
|
inverse?: boolean
|
|
302
330
|
// on the web, for portals we need to re-insert className
|
|
303
331
|
forceClassName?: boolean
|
package/types/config.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ConfigListener, TamaguiInternalConfig,
|
|
1
|
+
import { ConfigListener, TamaguiInternalConfig, TokensMerged } from './types';
|
|
2
2
|
export declare const setConfig: (next: TamaguiInternalConfig) => void;
|
|
3
3
|
export declare const setConfigFont: (name: string, font: any, fontParsed: any) => void;
|
|
4
4
|
export declare const getConfig: () => TamaguiInternalConfig<import("./types").CreateTokens<import("./types").VariableVal>, {
|
|
@@ -14,13 +14,16 @@ export declare const getConfig: () => TamaguiInternalConfig<import("./types").Cr
|
|
|
14
14
|
[key: string]: any;
|
|
15
15
|
};
|
|
16
16
|
}, import("./types").GenericFonts>;
|
|
17
|
-
export declare const getTokens: ({ prefixed }?: {
|
|
17
|
+
export declare const getTokens: ({ prefixed, }?: {
|
|
18
|
+
/**
|
|
19
|
+
* @deprecated prefixed true and false are merged together, no longer need this property
|
|
20
|
+
*/
|
|
18
21
|
prefixed?: boolean | undefined;
|
|
19
|
-
}) =>
|
|
22
|
+
}) => TokensMerged;
|
|
20
23
|
/**
|
|
21
24
|
* Note: this is the same as `getTokens`
|
|
22
25
|
*/
|
|
23
|
-
export declare const useTokens: () =>
|
|
26
|
+
export declare const useTokens: () => TokensMerged;
|
|
24
27
|
export declare const getThemes: () => {
|
|
25
28
|
[x: string]: {
|
|
26
29
|
[x: string]: import("./createVariable").Variable<any>;
|
package/types/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAI7E,eAAO,MAAM,SAAS,SAAU,qBAAqB,SAGpD,CAAA;AAED,eAAO,MAAM,aAAa,SAAU,MAAM,QAAQ,GAAG,cAAc,GAAG,SAMrE,CAAA;AAED,eAAO,MAAM,SAAS;;;;;;;;;;;;kCASrB,CAAA;AAGD,eAAO,MAAM,SAAS;IAGpB;;OAEG;;MAEI,YAuBR,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,oBAAoB,CAAA;AAE1C,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;CAAqB,CAAA;AAE3C,eAAO,MAAM,eAAe,qBAA4B,CAAA;AAExD,eAAO,MAAM,gBAAgB,OAAQ,cAAc,SAMlD,CAAA;AAED,eAAO,MAAM,YAAY,QAAS,MAAM,SAAS,GAAG,SAEnD,CAAA;AAGD,eAAO,MAAM,OAAO,SAAU,MAAM,mDAQnC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createComponent.d.ts","sourceRoot":"","sources":["../src/createComponent.tsx"],"names":[],"mappings":"AAQA,OAAO,KAUN,MAAM,OAAO,CAAA;AAiBd,OAAO,EACL,SAAS,EACT,cAAc,EACd,WAAW,EACX,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAEhB,qBAAqB,EAErB,cAAc,EAIf,MAAM,SAAS,CAAA;AAmBhB,eAAO,MAAM,qBAAqB,EAAE,qBAMnC,CAAA;AAeD,eAAO,MAAM,QAAQ,eAAsB,CAAA;AA8B3C,wBAAgB,eAAe,CAC7B,kBAAkB,SAAS,MAAM,GAAG,EAAE,EACtC,GAAG,GAAG,cAAc,EACpB,SAAS,GAAG,KAAK,EAEjB,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,kBAAkB,EACpD,eAAe,CAAC,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"createComponent.d.ts","sourceRoot":"","sources":["../src/createComponent.tsx"],"names":[],"mappings":"AAQA,OAAO,KAUN,MAAM,OAAO,CAAA;AAiBd,OAAO,EACL,SAAS,EACT,cAAc,EACd,WAAW,EACX,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAEhB,qBAAqB,EAErB,cAAc,EAIf,MAAM,SAAS,CAAA;AAmBhB,eAAO,MAAM,qBAAqB,EAAE,qBAMnC,CAAA;AAeD,eAAO,MAAM,QAAQ,eAAsB,CAAA;AA8B3C,wBAAgB,eAAe,CAC7B,kBAAkB,SAAS,MAAM,GAAG,EAAE,EACtC,GAAG,GAAG,cAAc,EACpB,SAAS,GAAG,KAAK,EAEjB,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,kBAAkB,EACpD,eAAe,CAAC,EAAE,iBAAiB,4DAkwBpC;AAGD,eAAO,MAAM,QAAQ;YAAW;QAAE,QAAQ,CAAC,EAAE,GAAG,CAAA;KAAE;;CAEjD,CAAA;AAMD,eAAO,MAAM,MAAM,0DA8CjB,CAAA;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,KAAK,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAAA;IACnC,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IAC5B,SAAS,CAAC,EAAE,cAAc,CAAA;IAC1B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC3B,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB,CAAA;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,mBAiGxD"}
|
package/types/types.d.ts
CHANGED
|
@@ -54,7 +54,7 @@ export type ReactComponentWithRef<Props, Ref> = ForwardRefExoticComponent<Props
|
|
|
54
54
|
export type ConfigListener = (conf: TamaguiInternalConfig) => void;
|
|
55
55
|
export type VariableVal = number | string | Variable;
|
|
56
56
|
export type VariableColorVal = string | Variable;
|
|
57
|
-
type GenericKey = string
|
|
57
|
+
type GenericKey = string;
|
|
58
58
|
export interface CreateTokens<Val extends VariableVal = VariableVal> {
|
|
59
59
|
color: {
|
|
60
60
|
[key: GenericKey]: Val;
|
|
@@ -161,6 +161,26 @@ export type ThemeParsed = {
|
|
|
161
161
|
[key in ThemeKeys]: Variable<any>;
|
|
162
162
|
};
|
|
163
163
|
export type Tokens = TamaguiConfig['tokens'];
|
|
164
|
+
export type TokensParsed = {
|
|
165
|
+
size: TokenPrefixed<Tokens['size']>;
|
|
166
|
+
color: TokenPrefixed<Tokens['color']>;
|
|
167
|
+
radius: TokenPrefixed<Tokens['radius']>;
|
|
168
|
+
zIndex: TokenPrefixed<Tokens['zIndex']>;
|
|
169
|
+
space: TokenPrefixed<Tokens['space']>;
|
|
170
|
+
};
|
|
171
|
+
type TokenPrefixed<A extends {
|
|
172
|
+
[key: string]: any;
|
|
173
|
+
}> = {
|
|
174
|
+
[key in Ensure$Prefix<keyof A>]: A[keyof A];
|
|
175
|
+
};
|
|
176
|
+
type Ensure$Prefix<A extends string | number | symbol> = A extends string ? A extends `$${string}` ? A : `$${A}` : never;
|
|
177
|
+
export type TokensMerged = {
|
|
178
|
+
size: TokensParsed['size'] & Tokens['size'];
|
|
179
|
+
color: TokensParsed['color'] & Tokens['color'];
|
|
180
|
+
radius: TokensParsed['radius'] & Tokens['radius'];
|
|
181
|
+
zIndex: TokensParsed['zIndex'] & Tokens['zIndex'];
|
|
182
|
+
space: TokensParsed['space'] & Tokens['space'];
|
|
183
|
+
};
|
|
164
184
|
export type Shorthands = TamaguiConfig['shorthands'];
|
|
165
185
|
export type Media = TamaguiConfig['media'];
|
|
166
186
|
export type Themes = TamaguiConfig['themes'];
|
|
@@ -174,7 +194,7 @@ export interface ThemeProps {
|
|
|
174
194
|
componentName?: string;
|
|
175
195
|
children?: any;
|
|
176
196
|
reset?: boolean;
|
|
177
|
-
debug?:
|
|
197
|
+
debug?: DebugProp;
|
|
178
198
|
inverse?: boolean;
|
|
179
199
|
forceClassName?: boolean;
|
|
180
200
|
shouldUpdate?: () => boolean;
|