@tamagui/core 1.0.1-beta.149 → 1.0.1-beta.150
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/constants/platform.js.map +2 -2
- package/dist/cjs/createComponent.js +133 -48
- package/dist/cjs/createComponent.js.map +2 -2
- package/dist/cjs/helpers/getSplitStyles.js +57 -50
- package/dist/cjs/helpers/getSplitStyles.js.map +2 -2
- package/dist/cjs/helpers/mergeTransform.js.map +2 -2
- package/dist/cjs/hooks/useFeatures.js +0 -120
- package/dist/cjs/hooks/useFeatures.js.map +2 -2
- package/dist/cjs/types.js.map +1 -1
- package/dist/esm/constants/platform.js.map +2 -2
- package/dist/esm/createComponent.js +141 -51
- package/dist/esm/createComponent.js.map +2 -2
- package/dist/esm/helpers/getSplitStyles.js +57 -50
- package/dist/esm/helpers/getSplitStyles.js.map +2 -2
- package/dist/esm/helpers/mergeTransform.js.map +2 -2
- package/dist/esm/hooks/useFeatures.js +0 -120
- package/dist/esm/hooks/useFeatures.js.map +2 -2
- package/package.json +10 -10
- package/src/constants/platform.ts +1 -0
- package/src/createComponent.tsx +218 -56
- package/src/helpers/getSplitStyles.tsx +70 -65
- package/src/helpers/mergeTransform.ts +2 -0
- package/src/types.tsx +3 -2
- package/types/helpers/getSplitStyles.d.ts +1 -0
- package/types/hooks/useFeatures.d.ts +0 -1
- package/types/types.d.ts +3 -2
- package/src/hooks/useFeatures.tsx +0 -289
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/constants/platform.ts"],
|
|
4
|
-
"sourcesContent": ["import { useEffect, useLayoutEffect } from 'react'\nimport { Platform } from 'react-native'\n\nexport const isAndroid = Platform?.OS === 'android'\nexport const isIOS = Platform?.OS === 'ios'\nexport const isWeb = process.env.TAMAGUI_TARGET === 'web'\nexport const isWindowDefined = typeof window !== 'undefined'\nexport const isSSR = isWeb && !isWindowDefined\nexport const isClient = isWeb && isWindowDefined\n\nexport const isRSC = process.env.ENABLE_RSC\n ? // note this is statically analyzed so no funny business, just access it without optional chaining\n // @ts-ignore\n import.meta.env\n ? // @ts-ignore\n import.meta.env.SSR\n : false\n : false\n\nconst idFn = () => {}\nexport const useIsomorphicLayoutEffect = isRSC ? idFn : isSSR ? useEffect : useLayoutEffect\nexport const isChrome = typeof navigator !== 'undefined' && /Chrome/.test(navigator.userAgent || '')\nexport const isWebTouchable = isClient && 'ontouchstart' in window\nexport const isTouchable = !isWeb || isWebTouchable\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA2C;AAC3C,0BAAyB;AADzB;AAAA;AAGO,MAAM,YAAY,2DAAU,QAAO;AACnC,MAAM,QAAQ,2DAAU,QAAO;AAC/B,MAAM,QAAQ,QAAQ,IAAI,mBAAmB;AAC7C,MAAM,kBAAkB,OAAO,WAAW;AAC1C,MAAM,QAAQ,SAAS,CAAC;AACxB,MAAM,WAAW,SAAS;
|
|
4
|
+
"sourcesContent": ["import { useEffect, useLayoutEffect } from 'react'\nimport { Platform } from 'react-native'\n\nexport const isAndroid = Platform?.OS === 'android'\nexport const isIOS = Platform?.OS === 'ios'\nexport const isWeb = process.env.TAMAGUI_TARGET === 'web'\nexport const isWindowDefined = typeof window !== 'undefined'\nexport const isSSR = isWeb && !isWindowDefined\nexport const isClient = isWeb && isWindowDefined\n\n// may want to move to VITE_RSC_BUILD\nexport const isRSC = process.env.ENABLE_RSC\n ? // note this is statically analyzed so no funny business, just access it without optional chaining\n // @ts-ignore\n import.meta.env\n ? // @ts-ignore\n import.meta.env.SSR\n : false\n : false\n\nconst idFn = () => {}\nexport const useIsomorphicLayoutEffect = isRSC ? idFn : isSSR ? useEffect : useLayoutEffect\nexport const isChrome = typeof navigator !== 'undefined' && /Chrome/.test(navigator.userAgent || '')\nexport const isWebTouchable = isClient && 'ontouchstart' in window\nexport const isTouchable = !isWeb || isWebTouchable\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA2C;AAC3C,0BAAyB;AADzB;AAAA;AAGO,MAAM,YAAY,2DAAU,QAAO;AACnC,MAAM,QAAQ,2DAAU,QAAO;AAC/B,MAAM,QAAQ,QAAQ,IAAI,mBAAmB;AAC7C,MAAM,kBAAkB,OAAO,WAAW;AAC1C,MAAM,QAAQ,SAAS,CAAC;AACxB,MAAM,WAAW,SAAS;AAG1B,MAAM,QAAQ,QAAQ,IAAI,aAG7B,YAAY,MAEV,YAAY,IAAI,MAChB,QACF;AAEJ,MAAM,OAAO,MAAM;AAAC;AACb,MAAM,4BAA4B,QAAQ,OAAO,QAAQ,yBAAY;AACrE,MAAM,WAAW,OAAO,cAAc,eAAe,SAAS,KAAK,UAAU,aAAa,EAAE;AAC5F,MAAM,iBAAiB,YAAY,kBAAkB;AACrD,MAAM,cAAc,CAAC,SAAS;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -48,7 +48,6 @@ var import_getSplitStyles = require("./helpers/getSplitStyles");
|
|
|
48
48
|
var import_insertStyleRule = require("./helpers/insertStyleRule");
|
|
49
49
|
var import_mergeProps = require("./helpers/mergeProps");
|
|
50
50
|
var import_proxyThemeVariables = require("./helpers/proxyThemeVariables");
|
|
51
|
-
var import_useFeatures = require("./hooks/useFeatures");
|
|
52
51
|
var import_useMedia = require("./hooks/useMedia");
|
|
53
52
|
var import_usePressable = require("./hooks/usePressable");
|
|
54
53
|
var import_useServerHooks = require("./hooks/useServerHooks");
|
|
@@ -82,6 +81,7 @@ function mergeShorthands({ defaultProps }, { shorthands }) {
|
|
|
82
81
|
}
|
|
83
82
|
let initialTheme;
|
|
84
83
|
let config;
|
|
84
|
+
let mediaPropNames = [];
|
|
85
85
|
function createComponent(configIn, ParentComponent) {
|
|
86
86
|
const staticConfig = (() => {
|
|
87
87
|
const next = (0, import_extendStaticConfig.extendStaticConfig)(configIn, ParentComponent);
|
|
@@ -150,23 +150,54 @@ function createComponent(configIn, ParentComponent) {
|
|
|
150
150
|
}
|
|
151
151
|
}
|
|
152
152
|
}
|
|
153
|
-
const { viewProps: viewPropsIn, pseudos, medias, style, classNames } = splitStyles;
|
|
153
|
+
const { viewProps: viewPropsIn, pseudos, medias, style, classNames, mediaKeys } = splitStyles;
|
|
154
|
+
(0, import_platform.useIsomorphicLayoutEffect)(() => {
|
|
155
|
+
for (const key of mediaKeys) {
|
|
156
|
+
(0, import_useMedia.addMediaQueryListener)(key, forceUpdate);
|
|
157
|
+
}
|
|
158
|
+
return () => {
|
|
159
|
+
for (const key of mediaKeys) {
|
|
160
|
+
(0, import_useMedia.removeMediaQueryListener)(key, forceUpdate);
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
}, [mediaKeys.join(",")]);
|
|
154
164
|
const useAnimations = (_a = tamaguiConfig == null ? void 0 : tamaguiConfig.animations) == null ? void 0 : _a.useAnimations;
|
|
155
165
|
const isAnimated = !!(useAnimations && props.animation);
|
|
156
166
|
const hasEnterStyle = !!props.enterStyle;
|
|
157
167
|
const animationFeatureStylesIn = props.animation ? { ...defaultNativeStyle, ...style } : null;
|
|
158
|
-
const
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
168
|
+
const propsWithAnimation = props;
|
|
169
|
+
if (!import_platform.isRSC && isAnimated) {
|
|
170
|
+
const animationState = useAnimations(propsWithAnimation, {
|
|
171
|
+
state,
|
|
172
|
+
pseudos,
|
|
173
|
+
onDidAnimate: props.onDidAnimate,
|
|
174
|
+
hostRef,
|
|
175
|
+
staticConfig,
|
|
176
|
+
getStyle({ isExiting, isEntering, exitVariant, enterVariant } = {}) {
|
|
177
|
+
var _a2, _b2, _c2, _d2;
|
|
178
|
+
const style2 = animationFeatureStylesIn;
|
|
179
|
+
const enterStyle = isEntering ? enterVariant && ((_a2 = staticConfig.variants) == null ? void 0 : _a2[enterVariant]["true"]) ? (0, import_getSplitStyles.getSubStyle)("", (_b2 = staticConfig.variants) == null ? void 0 : _b2[enterVariant]["true"], staticConfig, theme, props, state, tamaguiConfig) || pseudos.enterStyle : pseudos.enterStyle : null;
|
|
180
|
+
const exitStyle = isExiting ? exitVariant && ((_c2 = staticConfig.variants) == null ? void 0 : _c2[exitVariant]["true"]) ? (0, import_getSplitStyles.getSubStyle)("", (_d2 = staticConfig.variants) == null ? void 0 : _d2[exitVariant]["true"], staticConfig, theme, props, state, tamaguiConfig) || pseudos.exitStyle : pseudos.exitStyle : null;
|
|
181
|
+
ensureBaseHasDefaults(style2, pseudos.hoverStyle, pseudos.focusStyle, pseudos.pressStyle, pseudos.pressStyle);
|
|
182
|
+
enterStyle && isEntering && merge(style2, enterStyle);
|
|
183
|
+
state.hover && pseudos.hoverStyle && merge(style2, pseudos.hoverStyle);
|
|
184
|
+
state.focus && pseudos.focusStyle && merge(style2, pseudos.focusStyle);
|
|
185
|
+
state.press && pseudos.pressStyle && merge(style2, pseudos.pressStyle);
|
|
186
|
+
exitStyle && isExiting && merge(style2, exitStyle);
|
|
187
|
+
if (process.env.NODE_ENV === "development") {
|
|
188
|
+
if (props["debug"]) {
|
|
189
|
+
console.log("animation style", style2);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return style2;
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
if (animationState !== state.animation) {
|
|
196
|
+
setStateShallow({
|
|
197
|
+
animation: animationState
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
}
|
|
170
201
|
const {
|
|
171
202
|
tag,
|
|
172
203
|
hitSlop,
|
|
@@ -298,7 +329,14 @@ function createComponent(configIn, ParentComponent) {
|
|
|
298
329
|
onStartShouldSetResponderCapture
|
|
299
330
|
});
|
|
300
331
|
const platformMethodsRef = (0, import_rnw.usePlatformMethods)(viewProps);
|
|
301
|
-
const
|
|
332
|
+
const shouldSetMounted = Boolean(import_platform.isClient && (hasEnterStyle || props.animation) && !state.mounted);
|
|
333
|
+
const setRef = (0, import_rnw.useMergeRefs)(hostRef, platformMethodsRef, forwardedRef, shouldSetMounted ? () => {
|
|
334
|
+
setTimeout(() => {
|
|
335
|
+
setStateShallow({
|
|
336
|
+
mounted: true
|
|
337
|
+
});
|
|
338
|
+
}, 10);
|
|
339
|
+
} : void 0);
|
|
302
340
|
viewProps.ref = setRef;
|
|
303
341
|
}
|
|
304
342
|
if (props.href != void 0 && hrefAttrs != void 0) {
|
|
@@ -343,26 +381,13 @@ function createComponent(configIn, ParentComponent) {
|
|
|
343
381
|
}
|
|
344
382
|
});
|
|
345
383
|
}
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
384
|
+
if (!import_platform.isRSC) {
|
|
385
|
+
(0, import_react.useEffect)(() => {
|
|
386
|
+
return () => {
|
|
387
|
+
mouseUps.delete(unPress);
|
|
388
|
+
};
|
|
389
|
+
}, []);
|
|
351
390
|
}
|
|
352
|
-
(0, import_platform.useIsomorphicLayoutEffect)(() => {
|
|
353
|
-
if (import_platform.isClient && (hasEnterStyle || props.animation) && !state.mounted) {
|
|
354
|
-
setStateShallow({
|
|
355
|
-
mounted: true
|
|
356
|
-
});
|
|
357
|
-
}
|
|
358
|
-
internal.current.isMounted = true;
|
|
359
|
-
return () => {
|
|
360
|
-
var _a2;
|
|
361
|
-
mouseUps.delete(unPress);
|
|
362
|
-
internal.current.isMounted = false;
|
|
363
|
-
(_a2 = internal.current.unmountEffects) == null ? void 0 : _a2.forEach((cb) => cb());
|
|
364
|
-
};
|
|
365
|
-
}, [hasEnterStyle, props.animation]);
|
|
366
391
|
let styles;
|
|
367
392
|
const animationStyles = state.animation ? state.animation.style : null;
|
|
368
393
|
if (isStringElement && shouldAvoidClasses && !shouldForcePseudo) {
|
|
@@ -379,11 +404,10 @@ function createComponent(configIn, ParentComponent) {
|
|
|
379
404
|
];
|
|
380
405
|
if (!animationStyles && initialSplitStyles) {
|
|
381
406
|
const initPseudos = initialSplitStyles.pseudos;
|
|
382
|
-
const force = shouldForcePseudo;
|
|
383
407
|
!state.mounted && addPseudoToStyles(styles, initPseudos, pseudos, "enterStyle");
|
|
384
|
-
state.hover && addPseudoToStyles(styles, initPseudos, pseudos, "hoverStyle",
|
|
385
|
-
state.focus && addPseudoToStyles(styles, initPseudos, pseudos, "focusStyle",
|
|
386
|
-
state.press && addPseudoToStyles(styles, initPseudos, pseudos, "pressStyle",
|
|
408
|
+
state.hover && addPseudoToStyles(styles, initPseudos, pseudos, "hoverStyle", shouldForcePseudo);
|
|
409
|
+
state.focus && addPseudoToStyles(styles, initPseudos, pseudos, "focusStyle", shouldForcePseudo);
|
|
410
|
+
state.press && addPseudoToStyles(styles, initPseudos, pseudos, "pressStyle", shouldForcePseudo);
|
|
387
411
|
}
|
|
388
412
|
if (shouldForcePseudo) {
|
|
389
413
|
const next = {};
|
|
@@ -440,8 +464,6 @@ function createComponent(configIn, ParentComponent) {
|
|
|
440
464
|
const pressOutKey = handlesPressEvents ? "onPressOut" : "onMouseUp";
|
|
441
465
|
const shouldAttach = !asChild && (attachPress || attachHover || "pressStyle" in props || "onPress" in props || "onPressIn" in props || "onPressOut" in props || import_platform.isWeb && ("hoverStyle" in props || "onHoverIn" in props || "onHoverOut" in props || "onMouseEnter" in props || "onMouseLeave" in props));
|
|
442
466
|
const unPress = (0, import_react.useCallback)(() => {
|
|
443
|
-
if (!internal.current.isMounted)
|
|
444
|
-
return;
|
|
445
467
|
setStateShallow({
|
|
446
468
|
press: false,
|
|
447
469
|
pressIn: false
|
|
@@ -514,7 +536,7 @@ function createComponent(configIn, ParentComponent) {
|
|
|
514
536
|
}
|
|
515
537
|
} : null;
|
|
516
538
|
let space = spaceProp;
|
|
517
|
-
if (
|
|
539
|
+
if (mediaKeys.length) {
|
|
518
540
|
for (const key in import_useMedia.mediaState) {
|
|
519
541
|
if (!import_useMedia.mediaState[key])
|
|
520
542
|
continue;
|
|
@@ -591,7 +613,7 @@ function createComponent(configIn, ParentComponent) {
|
|
|
591
613
|
content = (0, import_react.createElement)(elementType, viewProps, childEls);
|
|
592
614
|
if (process.env.TAMAGUI_TARGET === "web") {
|
|
593
615
|
const isAnimatedRNWView = isAnimated && typeof elementType !== "string";
|
|
594
|
-
const shouldWrapWithComponentTheme = isAnimatedRNWView && (0, import_createPropMapper.getReturnVariablesAs)(props, splitStyleState) === "non-color-value";
|
|
616
|
+
const shouldWrapWithComponentTheme = !!theme.className && isAnimatedRNWView && (0, import_createPropMapper.getReturnVariablesAs)(props, splitStyleState) === "non-color-value";
|
|
595
617
|
const shouldWrapWithHover = Boolean(events || import_platform.isRSC) && attachHover;
|
|
596
618
|
if (shouldWrapWithHover || shouldWrapWithComponentTheme) {
|
|
597
619
|
const themeClassName = shouldWrapWithComponentTheme ? `${theme.className}` : "";
|
|
@@ -623,7 +645,7 @@ function createComponent(configIn, ParentComponent) {
|
|
|
623
645
|
console.groupEnd();
|
|
624
646
|
}
|
|
625
647
|
}
|
|
626
|
-
return
|
|
648
|
+
return content;
|
|
627
649
|
});
|
|
628
650
|
if (staticConfig.componentName) {
|
|
629
651
|
component.displayName = staticConfig.componentName;
|
|
@@ -659,7 +681,7 @@ function createComponent(configIn, ParentComponent) {
|
|
|
659
681
|
resolveVariablesAs: "both",
|
|
660
682
|
keepVariantsAsProps: true
|
|
661
683
|
}, void 0, void 0, debug);
|
|
662
|
-
const [
|
|
684
|
+
const [defaults2, defaultsClassnames] = (0, import_mergeProps.mergeProps)(component.defaultProps, initialSplitStyles.viewProps, true);
|
|
663
685
|
initialSplitStyles.classNames = {
|
|
664
686
|
...parentClassNames,
|
|
665
687
|
...defaultsClassnames,
|
|
@@ -673,7 +695,7 @@ function createComponent(configIn, ParentComponent) {
|
|
|
673
695
|
if (import_helpers.validPseudoKeys[key])
|
|
674
696
|
continue;
|
|
675
697
|
if (typeof val === "string" && val[0] === "$" || !validStyles2[key]) {
|
|
676
|
-
|
|
698
|
+
defaults2[key] = val;
|
|
677
699
|
} else {
|
|
678
700
|
defaultNativeStyle[key] = val;
|
|
679
701
|
}
|
|
@@ -682,8 +704,8 @@ function createComponent(configIn, ParentComponent) {
|
|
|
682
704
|
defaultNativeStyleSheet = import_react_native.StyleSheet.create({
|
|
683
705
|
base: defaultNativeStyle
|
|
684
706
|
});
|
|
685
|
-
if (Object.keys(
|
|
686
|
-
tamaguiDefaultProps =
|
|
707
|
+
if (Object.keys(defaults2).length) {
|
|
708
|
+
tamaguiDefaultProps = defaults2;
|
|
687
709
|
}
|
|
688
710
|
if (process.env.NODE_ENV === "development" && debug) {
|
|
689
711
|
if (process.env.IS_STATIC !== "is_static") {
|
|
@@ -692,7 +714,7 @@ function createComponent(configIn, ParentComponent) {
|
|
|
692
714
|
initialSplitStyles,
|
|
693
715
|
tamaguiDefaultProps,
|
|
694
716
|
defaultNativeStyle,
|
|
695
|
-
defaults,
|
|
717
|
+
defaults: defaults2,
|
|
696
718
|
defaultPropsIn
|
|
697
719
|
});
|
|
698
720
|
}
|
|
@@ -907,6 +929,69 @@ function mergeConfigDefaultProps(name, props, configDefaults, parentNames, conf)
|
|
|
907
929
|
}
|
|
908
930
|
return props;
|
|
909
931
|
}
|
|
932
|
+
const defaults = {
|
|
933
|
+
left: 0,
|
|
934
|
+
right: 0,
|
|
935
|
+
top: 0,
|
|
936
|
+
bottom: 0,
|
|
937
|
+
opacity: 1,
|
|
938
|
+
translateX: 0,
|
|
939
|
+
translateY: 0,
|
|
940
|
+
skew: 0,
|
|
941
|
+
skewX: 0,
|
|
942
|
+
skewY: 0,
|
|
943
|
+
scale: 1,
|
|
944
|
+
rotate: "0deg",
|
|
945
|
+
rotateY: "0deg",
|
|
946
|
+
rotateX: "0deg"
|
|
947
|
+
};
|
|
948
|
+
function ensureBaseHasDefaults(base, ...pseudos) {
|
|
949
|
+
for (const pseudo of pseudos) {
|
|
950
|
+
if (!pseudo)
|
|
951
|
+
continue;
|
|
952
|
+
for (const key in pseudo) {
|
|
953
|
+
const val = pseudo[key];
|
|
954
|
+
if (key === "transform") {
|
|
955
|
+
if (typeof val === "string") {
|
|
956
|
+
continue;
|
|
957
|
+
}
|
|
958
|
+
for (const t of val) {
|
|
959
|
+
const tkey = Object.keys(t)[0];
|
|
960
|
+
const defaultVal = defaults[tkey];
|
|
961
|
+
const tDefaultVal = { [tkey]: defaultVal };
|
|
962
|
+
if (!base.transform) {
|
|
963
|
+
base.transform = [tDefaultVal];
|
|
964
|
+
} else {
|
|
965
|
+
if (!base.transform.find((x) => x[tkey])) {
|
|
966
|
+
base.transform.push(tDefaultVal);
|
|
967
|
+
}
|
|
968
|
+
}
|
|
969
|
+
}
|
|
970
|
+
} else {
|
|
971
|
+
if (!(key in base)) {
|
|
972
|
+
base[key] = defaults[key];
|
|
973
|
+
}
|
|
974
|
+
}
|
|
975
|
+
}
|
|
976
|
+
}
|
|
977
|
+
}
|
|
978
|
+
function merge(base, next) {
|
|
979
|
+
if (!next.transform || !base.transform) {
|
|
980
|
+
Object.assign(base, next);
|
|
981
|
+
return;
|
|
982
|
+
}
|
|
983
|
+
const { transform, ...rest } = next;
|
|
984
|
+
Object.assign(base, rest);
|
|
985
|
+
for (const t of transform) {
|
|
986
|
+
const key = Object.keys(t)[0];
|
|
987
|
+
const existing = base.transform.find((x) => key in x);
|
|
988
|
+
if (existing) {
|
|
989
|
+
existing[key] = t[key];
|
|
990
|
+
} else {
|
|
991
|
+
base.transform.push(t);
|
|
992
|
+
}
|
|
993
|
+
}
|
|
994
|
+
}
|
|
910
995
|
// Annotate the CommonJS export names for ESM import in node:
|
|
911
996
|
0 && (module.exports = {
|
|
912
997
|
Spacer,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/createComponent.tsx"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable react-hooks/rules-of-hooks */\nimport {\n composeEventHandlers,\n stylePropsView,\n validPseudoKeys,\n validStyles,\n} from '@tamagui/helpers'\nimport {\n useElementLayout,\n useMergeRefs,\n usePlatformMethods,\n useResponderEvents,\n} from '@tamagui/rnw'\nimport { useForceUpdate } from '@tamagui/use-force-update'\nimport React, {\n Children,\n Fragment,\n createElement,\n forwardRef,\n memo,\n useCallback,\n useContext,\n} from 'react'\nimport { StyleSheet, Text, View, ViewStyle } from 'react-native'\n\nimport { getConfig, onConfiguredOnce } from './config'\nimport { stackDefaultStyles } from './constants/constants'\nimport { isClient, isRSC, isWeb, useIsomorphicLayoutEffect } from './constants/platform'\nimport { FontLanguageContext } from './contexts/FontLanguageContext'\nimport { TextAncestorContext } from './contexts/TextAncestorContext'\nimport { assignNativePropsToWeb } from './helpers/assignNativePropsToWeb'\nimport { getReturnVariablesAs } from './helpers/createPropMapper'\nimport { createShallowUpdate } from './helpers/createShallowUpdate'\nimport { extendStaticConfig, parseStaticConfig } from './helpers/extendStaticConfig'\nimport { SplitStyleResult, insertSplitStyles, useSplitStyles } from './helpers/getSplitStyles'\nimport { getAllSelectors } from './helpers/insertStyleRule'\nimport { mergeProps } from './helpers/mergeProps'\nimport { proxyThemeVariables } from './helpers/proxyThemeVariables'\nimport { useFeatures } from './hooks/useFeatures'\nimport { mediaState } from './hooks/useMedia'\nimport { usePressable } from './hooks/usePressable'\nimport { useServerRef, useServerState } from './hooks/useServerHooks'\nimport { getThemeManager, useTheme } from './hooks/useTheme'\nimport {\n SpaceDirection,\n SpaceTokens,\n SpacerProps,\n StaticConfig,\n StaticConfigParsed,\n StylableComponent,\n TamaguiComponent,\n TamaguiComponentState,\n TamaguiConfig,\n TamaguiElement,\n TamaguiInternalConfig,\n UseAnimationHook,\n} from './types'\nimport { usePressability } from './vendor/Pressability'\nimport { Slot, mergeEvent } from './views/Slot'\nimport { wrapThemeManagerContext } from './views/Theme'\n\nReact['keep']\n\nconst defaultComponentState: TamaguiComponentState = Object.freeze({\n hover: false,\n press: false,\n pressIn: false,\n focus: false,\n // only used by enterStyle\n mounted: false,\n animation: null,\n})\n\nexport const mouseUps = new Set<Function>()\nif (typeof document !== 'undefined') {\n const cancelTouches = () => {\n mouseUps.forEach((x) => x())\n mouseUps.clear()\n }\n document.addEventListener('mouseup', cancelTouches)\n document.addEventListener('touchend', cancelTouches)\n document.addEventListener('touchcancel', cancelTouches)\n}\n\n// mutates\nfunction mergeShorthands({ defaultProps }: StaticConfigParsed, { shorthands }: TamaguiConfig) {\n // they are defined in correct order already { ...parent, ...child }\n for (const key of Object.keys(defaultProps)) {\n defaultProps[shorthands[key] || key] = defaultProps[key]\n }\n}\n\nlet initialTheme: any\nlet config: TamaguiInternalConfig\n\nexport function createComponent<\n ComponentPropTypes extends Object = {},\n Ref = TamaguiElement,\n BaseProps = never\n>(configIn: Partial<StaticConfig> | StaticConfigParsed, ParentComponent?: StylableComponent) {\n const staticConfig = (() => {\n const next = extendStaticConfig(configIn, ParentComponent)\n if ('parsed' in next) {\n return next\n } else {\n return parseStaticConfig(next)\n }\n })()\n\n const defaultComponentClassName = `is_${staticConfig.componentName}`\n let tamaguiConfig: TamaguiInternalConfig\n let AnimatedText: any\n let AnimatedView: any\n let avoidClasses = true\n let defaultNativeStyle: any\n let defaultNativeStyleSheet: StyleSheet.NamedStyles<{ base: {} }>\n let tamaguiDefaultProps: any\n let initialSplitStyles: SplitStyleResult\n\n // see onConfiguredOnce below which attaches a name then to this component\n const component = forwardRef<Ref, ComponentPropTypes>((propsIn: any, forwardedRef) => {\n // React inserts default props after your props for some reason...\n // order important so we do loops, you can't just spread because JS does weird things\n let props: any\n if (tamaguiDefaultProps && !propsIn.asChild) {\n props = mergeProps(tamaguiDefaultProps, propsIn)[0]\n } else {\n props = propsIn\n }\n\n const { Component, isText, isZStack } = staticConfig\n const componentName = props.componentName || staticConfig.componentName\n const componentClassName = props.asChild\n ? ''\n : props.componentName\n ? `is_${props.componentName}`\n : defaultComponentClassName\n\n const forceUpdate = useForceUpdate()\n config = config || getConfig()\n const theme = useTheme(props.theme, componentName, props, forceUpdate)\n\n const states = useServerState<TamaguiComponentState>(defaultComponentState)\n const state = propsIn.forceStyle ? { ...states[0], [propsIn.forceStyle]: true } : states[0]\n\n const shouldAvoidClasses = !!(props.animation && avoidClasses)\n const shouldForcePseudo = !!propsIn.forceStyle\n const hasTextAncestor = !!(isWeb && isText ? useContext(TextAncestorContext) : false)\n const splitStyleState =\n !shouldAvoidClasses && !shouldForcePseudo\n ? {\n ...state,\n hasTextAncestor,\n dynamicStylesInline: true,\n }\n : ({\n ...state,\n noClassNames: true,\n dynamicStylesInline: true,\n hasTextAncestor,\n resolveVariablesAs: 'value',\n } as const)\n\n const languageContext = isRSC ? null : useContext(FontLanguageContext)\n\n const splitStyles = useSplitStyles(\n props,\n staticConfig,\n theme,\n splitStyleState,\n props.asChild ? null : initialSplitStyles?.classNames,\n languageContext || undefined,\n props['debug']\n )\n\n const hostRef = useServerRef<HTMLElement | View>(null)\n const setState = states[1]\n const setStateShallow = createShallowUpdate(setState)\n\n if (process.env.NODE_ENV === 'development') {\n if (props['debug']) {\n const name = `${\n componentName || Component?.displayName || Component?.name || '[Unnamed Component]'\n }`\n const type = staticConfig.isReactNativeWeb ? 'rnw' : 'tamagui'\n const banner = `${name} ${propsIn['data-is'] || ''} ${type}`\n // eslint-disable-next-line no-console\n console.group(`%c \uD83D\uDC1B ${banner}`, 'background: yellow;')\n // eslint-disable-next-line no-console\n console.log('props in', propsIn)\n if (typeof window !== 'undefined') {\n // eslint-disable-next-line no-console\n console.log('ref', hostRef, '(click to view)')\n }\n if (props['debug'] === 'break') {\n // eslint-disable-next-line no-debugger\n debugger\n }\n }\n }\n\n const { viewProps: viewPropsIn, pseudos, medias, style, classNames } = splitStyles\n const useAnimations = tamaguiConfig?.animations?.useAnimations as UseAnimationHook | undefined\n const isAnimated = !!(useAnimations && props.animation)\n const hasEnterStyle = !!props.enterStyle\n\n const animationFeatureStylesIn = props.animation ? { ...defaultNativeStyle, ...style } : null\n\n const features = useFeatures(props, {\n forceUpdate,\n setStateShallow,\n useAnimations,\n state,\n style: animationFeatureStylesIn,\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 themeShallow,\n space: spaceProp,\n spaceDirection: _spaceDirection,\n disabled: disabledProp,\n onMouseUp,\n onMouseDown,\n onMouseEnter,\n onMouseLeave,\n hrefAttrs,\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 // get the right component\n const isTaggable = !Component || typeof Component === 'string'\n\n // default to tag, fallback to component (when both strings)\n const element = isWeb ? (isTaggable ? tag || Component : Component) : Component\n const BaseTextComponent = !isWeb ? Text : element || 'span'\n const BaseViewComponent = !isWeb ? View : element || (hasTextAncestor ? 'span' : 'div')\n let 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 (process.env.TAMAGUI_TARGET === 'web' && !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 assignNativePropsToWeb(elementType, viewProps, nonTamaguiProps)\n\n if (!isRSC) {\n useElementLayout(hostRef, onLayout)\n\n // from react-native-web\n 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 // from react-native-web\n const platformMethodsRef = usePlatformMethods(viewProps)\n const setRef = useMergeRefs(hostRef, platformMethodsRef, forwardedRef as any)\n viewProps.ref = setRef\n }\n\n if (props.href != undefined && hrefAttrs != undefined) {\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 != undefined ? focusable : accessible\n const role = viewProps.role\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 }\n // Everything else must explicitly set the prop\n if (_focusable === true) {\n viewProps.tabIndex = '0'\n }\n } else {\n viewProps = nonTamaguiProps\n if (forwardedRef) {\n // @ts-ignore\n viewProps.ref = forwardedRef\n }\n }\n\n if (process.env.NODE_ENV === 'development' && !isText && isWeb) {\n Children.toArray(props.children).forEach((item) => {\n if (typeof item === 'string') {\n // eslint-disable-next-line no-console\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 = useServerRef<{ isMounted: boolean; unmountEffects?: Function[] }>()\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 (isClient && (hasEnterStyle || props.animation) && !state.mounted) {\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 internal.current!.unmountEffects?.forEach((cb) => cb())\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 && !shouldForcePseudo) {\n styles = {\n ...defaultNativeStyle,\n ...(animationStyles ?? style),\n ...medias,\n }\n } else {\n styles = [\n isWeb ? null : defaultNativeStyleSheet ? (defaultNativeStyleSheet.base as ViewStyle) : null,\n animationStyles ?? style,\n medias,\n ]\n if (!animationStyles && initialSplitStyles) {\n const initPseudos = initialSplitStyles.pseudos\n const force = shouldForcePseudo\n !state.mounted && addPseudoToStyles(styles, initPseudos, pseudos, 'enterStyle')\n state.hover && addPseudoToStyles(styles, initPseudos, pseudos, 'hoverStyle', force)\n state.focus && addPseudoToStyles(styles, initPseudos, pseudos, 'focusStyle', force)\n state.press && addPseudoToStyles(styles, initPseudos, pseudos, 'pressStyle', force)\n }\n // ugly but for now...\n if (shouldForcePseudo) {\n const next = {}\n for (const style of styles) {\n if (style) {\n Object.assign(next, style)\n }\n }\n // @ts-ignore\n Object.assign(splitStyles.style, next)\n }\n }\n\n if (process.env.TAMAGUI_TARGET === 'web') {\n let fontFamily = isText\n ? splitStyles.fontFamily || staticConfig.defaultProps.fontFamily\n : null\n if (fontFamily && fontFamily[0] === '$') {\n fontFamily = fontFamily.slice(1)\n }\n\n const classList = [\n componentName ? componentClassName : '',\n fontFamily ? `font_${fontFamily}` : '',\n theme.className,\n classNames ? Object.values(classNames).join(' ') : '',\n ]\n\n const className = classList.join(' ')\n const style = animationStyles ?? splitStyles.style\n\n // TODO this is specific to reanimated rn\n const isAnimatedReactNativeWeb = props.animation && avoidClasses\n\n if (staticConfig.isReactNativeWeb || isAnimatedReactNativeWeb) {\n viewProps.dataSet = {\n ...viewProps.dataSet,\n className,\n id: props.id,\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[key.replace('data-', '')] = viewProps[key]\n delete viewProps[key]\n }\n })\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?.pressStyle ||\n initialPseudos?.pressStyle ||\n onPress ||\n onPressOut ||\n onPressIn ||\n onClick\n )\n\n const isHoverable = isWeb\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 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 =\n shouldAttach && !isRSC\n ? {\n [pressOutKey]: attachPress\n ? (e) => {\n unPress()\n onPressOut?.(e)\n onMouseUp?.(e)\n }\n : undefined,\n ...(isHoverable && {\n onMouseEnter: attachHover\n ? (e) => {\n const 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 const 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 hover: false,\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 // replicating TouchableWithoutFeedback\n ...(!isWeb && {\n cancelable: !props.rejectResponderTermination,\n disabled:\n props.disabled !== null ? props.disabled : props.accessibilityState?.disabled,\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 let space = spaceProp\n // find space by media query\n if (features.enabled.mediaQuery) {\n for (const key in mediaState) {\n if (!mediaState[key]) continue\n if (props[key] && props[key].space !== undefined) {\n space = props[key].space\n }\n }\n }\n\n const themeManager = getThemeManager(theme)\n\n const shouldSetChildrenThemeToParent = Boolean(\n themeShallow && themeManager && themeManager.didChangeTheme\n )\n\n const shouldProvideThemeManager =\n shouldSetChildrenThemeToParent || (themeManager && themeManager.didChangeTheme)\n\n const 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 // only set context if changed theme\n shouldProvideThemeManager ? themeManager : undefined,\n shouldSetChildrenThemeToParent\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 // EVENTS: web\n if (!isRSC && isWeb) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\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 // EVENTS native\n if (process.env.TAMAGUI_TARGET === 'native') {\n // add focus events\n const attachFocus = !!(\n (pseudos && pseudos.focusStyle) ||\n (initialPseudos && initialPseudos.focusStyle)\n )\n if (attachFocus) {\n viewProps.onFocus = mergeEvent(viewProps.onFocus, () => {\n setStateShallow({ focus: true })\n })\n viewProps.onBlur = mergeEvent(viewProps.onBlur, () => {\n setStateShallow({ focus: false })\n })\n }\n\n // use Pressability to get smooth unPress when you press + hold + move out\n // only ever create once, use .configure() to update later\n const pressability = usePressability(events)\n if (attachPress && events) {\n const dontComposePressabilityKeys = {\n onClick: true,\n }\n if (hitSlop) {\n viewProps.hitSlop = hitSlop\n }\n for (const key in pressability) {\n const og = props[key]\n const val = pressability[key]\n viewProps[key] =\n og && !dontComposePressabilityKeys[key] ? composeEventHandlers(og, val) : val\n }\n }\n }\n\n content = createElement(elementType, viewProps, childEls)\n\n if (process.env.TAMAGUI_TARGET === 'web') {\n // only necessary when animating because some AnimatedView which wraps RNW View doesn't forward dataSet className\n const isAnimatedRNWView = isAnimated && typeof elementType !== 'string' // assuming for now as reanimated is only driver\n const shouldWrapWithComponentTheme =\n isAnimatedRNWView && getReturnVariablesAs(props, splitStyleState) === 'non-color-value'\n const shouldWrapWithHover = Boolean(events || isRSC) && attachHover\n\n if (shouldWrapWithHover || shouldWrapWithComponentTheme) {\n const themeClassName = shouldWrapWithComponentTheme ? `${theme.className}` : ''\n const hoverClassName = shouldWrapWithHover ? 't_Hoverable' : ''\n content = (\n <span\n className={`${hoverClassName} ${themeClassName}`}\n style={{\n display: 'contents',\n }}\n {...(events &&\n shouldWrapWithHover && {\n onMouseEnter: events.onMouseEnter,\n onMouseLeave: events.onMouseLeave,\n })}\n >\n {content}\n </span>\n )\n }\n }\n\n if (process.env.NODE_ENV === 'development') {\n if (props['debug']) {\n const element = typeof elementType === 'string' ? elementType : 'Component'\n // eslint-disable-next-line no-console\n console.groupCollapsed(`render <${element} /> with props`, viewProps)\n for (const key in viewProps) {\n // eslint-disable-next-line no-console\n console.log(key, viewProps[key])\n }\n // eslint-disable-next-line no-console\n console.log('children', content)\n // eslint-disable-next-line no-console\n console.groupEnd()\n if (typeof window !== 'undefined') {\n // prettier-ignore\n // eslint-disable-next-line no-console\n console.log({ state, shouldProvideThemeManager, tamaguiDefaultProps, viewProps, splitStyles, animationStyles, handlesPressEvents, isStringElement, classNamesIn: props.className?.split(' '), classNamesOut: viewProps.className?.split(' '), events, shouldAttach, styles, pseudos, content, childEls, shouldAvoidClasses, avoidClasses, animation: props.animation, style, defaultNativeStyle, initialSplitStyles, ...(typeof window !== 'undefined' ? { theme, themeClassName: theme.className, staticConfig, tamaguiConfig, events, shouldAvoidClasses, shouldForcePseudo, classNames: Object.fromEntries(Object.entries(classNames).map(([k, v]) => [v, getAllSelectors()[v]])) } : null) })\n }\n // eslint-disable-next-line no-console\n console.groupEnd()\n }\n }\n\n return !isRSC && features.elements.length ? (\n <>\n {features.elements}\n {content}\n </>\n ) : (\n content\n )\n })\n\n if (staticConfig.componentName) {\n component.displayName = staticConfig.componentName\n }\n\n // Once configuration is run and all components are registered\n // get default props + className and analyze styles\n onConfiguredOnce((conf) => {\n // in static mode we just use these to lookup configuration\n // ... we likely want this? need to test\n if (process.env.IS_STATIC === 'is_static') return\n\n tamaguiConfig = conf\n\n // do this to make sure shorthands don't duplicate with.. longhands\n mergeShorthands(staticConfig, tamaguiConfig)\n\n if (tamaguiConfig.animations) {\n avoidClasses = !!tamaguiConfig.animations.avoidClasses\n AnimatedText = tamaguiConfig.animations.Text\n AnimatedView = tamaguiConfig.animations.View\n }\n\n initialTheme =\n initialTheme ||\n proxyThemeVariables(conf.themes[conf.defaultTheme || Object.keys(conf.themes)[0]])\n\n // adds in user defined default props\n config = getConfig()\n\n let defaultPropsIn = staticConfig.defaultProps || {}\n\n // because we run createTamagui after styled() defs, have to do some work here\n // gather defaults props one time and merge downwards\n // find last unprocessed and process\n const parentNames = [...(staticConfig.parentNames || []), staticConfig.componentName]\n\n if (config.defaultProps && parentNames && staticConfig.componentName) {\n defaultPropsIn = mergeConfigDefaultProps(\n staticConfig.componentName,\n defaultPropsIn,\n config.defaultProps,\n parentNames,\n conf\n )\n }\n\n const debug = true ? defaultPropsIn['debug'] : false\n\n if (process.env.NODE_ENV === 'development' && debug === 'break') {\n // eslint-disable-next-line no-debugger\n debugger\n }\n\n // remove all classNames\n const [parentProps, parentClassNames] = mergeProps(defaultPropsIn, {}, true)\n\n initialSplitStyles = insertSplitStyles(\n parentProps,\n staticConfig,\n initialTheme,\n {\n mounted: true,\n hover: false,\n press: false,\n pressIn: false,\n focus: false,\n resolveVariablesAs: 'both',\n keepVariantsAsProps: true,\n },\n undefined,\n undefined,\n debug\n )\n\n // must preserve prop order\n // leave out className because we handle that already with initialSplitStyles.classNames\n // otherwise it confuses variant functions getting className props\n const [defaults, defaultsClassnames] = mergeProps(\n component.defaultProps as any,\n initialSplitStyles.viewProps,\n true\n // conf.inverseShorthands\n )\n\n // avoid passing className props to variants\n initialSplitStyles.classNames = {\n ...parentClassNames,\n ...defaultsClassnames,\n ...initialSplitStyles.classNames,\n }\n\n defaultNativeStyle = {}\n\n const validStyles = staticConfig.validStyles || stylePropsView\n\n // split - keep variables on props to be processed using theme values at runtime (native)\n if (!isWeb) {\n for (const key in staticConfig.defaultProps) {\n const val = staticConfig.defaultProps[key]\n if (validPseudoKeys[key]) continue\n if ((typeof val === 'string' && val[0] === '$') || !validStyles[key]) {\n defaults[key] = val\n } else {\n defaultNativeStyle[key] = val\n }\n }\n }\n\n defaultNativeStyleSheet = StyleSheet.create({\n base: defaultNativeStyle,\n })\n\n if (Object.keys(defaults).length) {\n tamaguiDefaultProps = defaults\n }\n\n // add debug logs\n if (process.env.NODE_ENV === 'development' && debug) {\n if (process.env.IS_STATIC !== 'is_static') {\n // eslint-disable-next-line no-console\n console.log(`\uD83D\uDC1B [${staticConfig.componentName || 'Component'}]`, {\n staticConfig,\n initialSplitStyles,\n tamaguiDefaultProps,\n defaultNativeStyle,\n defaults,\n defaultPropsIn,\n })\n }\n }\n })\n\n let res: TamaguiComponent<ComponentPropTypes, Ref, BaseProps> = component as any\n\n if (configIn.memo) {\n res = memo(res) as any\n }\n\n res.staticConfig = {\n validStyles: staticConfig.validStyles || stylePropsView,\n ...staticConfig,\n }\n\n // res.extractable HoC\n res.extractable = (Component: any, conf?: Partial<StaticConfig>) => {\n Component.staticConfig = extendStaticConfig(\n {\n Component,\n ...conf,\n neverFlatten: true,\n isExtractable: true,\n defaultProps: {\n ...Component.defaultProps,\n ...conf?.defaultProps,\n },\n },\n res\n )\n return Component\n }\n\n return res\n}\n\n// for elements to avoid spacing\nexport const Unspaced = (props: { children?: any }) => {\n return props.children\n}\nUnspaced['isUnspaced'] = true\n\n// dont used styled() here to avoid circular deps\n// keep inline to avoid circular deps\n\nexport const Spacer = createComponent<SpacerProps>({\n memo: true,\n componentName: 'Spacer',\n validStyles,\n defaultProps: {\n ...stackDefaultStyles,\n // avoid nesting issues\n tag: 'span',\n size: true,\n },\n variants: {\n size: {\n '...size': (size, { tokens }) => {\n size = size == true ? '$true' : size\n const sizePx = tokens.space[size] ?? size\n return {\n width: sizePx,\n height: sizePx,\n minWidth: sizePx,\n minHeight: sizePx,\n }\n },\n },\n\n flex: {\n true: {\n flexGrow: 1,\n },\n },\n\n direction: {\n horizontal: {\n height: 0,\n minHeight: 0,\n },\n vertical: {\n width: 0,\n minWidth: 0,\n },\n both: {},\n },\n },\n\n defaultVariants: {\n direction: 'both',\n },\n})\n\nexport type SpacedChildrenProps = {\n isZStack?: boolean\n children?: React.ReactNode\n space?: SpaceTokens | number | null\n spaceFlex?: boolean | number\n direction?: SpaceDirection\n separator?: React.ReactNode\n}\n\nexport function spacedChildren({\n isZStack,\n children,\n space,\n direction,\n spaceFlex,\n separator,\n}: SpacedChildrenProps) {\n const hasSpace = !!(space || spaceFlex)\n const hasSeparator = !(separator === undefined || separator === null)\n if (!hasSpace && !hasSeparator && !isZStack) {\n return children\n }\n const childrenList = Children.toArray(children)\n if (childrenList.length <= 1 && !isZStack) {\n return childrenList\n }\n const final: React.ReactNode[] = []\n for (const [index, child] of childrenList.entries()) {\n const isEmpty =\n child === null || child === undefined || (Array.isArray(child) && child.length === 0)\n\n // push them all, but wrap some in Fragment\n if (isEmpty || !child || (child['key'] && !isZStack)) {\n final.push(child)\n } else {\n final.push(\n <Fragment key={index}>{isZStack ? <AbsoluteFill>{child}</AbsoluteFill> : child}</Fragment>\n )\n }\n\n // first child unspaced avoid insert space\n if (isUnspaced(child) && index === 0) {\n continue\n }\n\n // no spacing on ZStack\n if (isZStack) {\n continue\n }\n\n const next = childrenList[index + 1]\n\n if (next && !isUnspaced(next)) {\n if (separator) {\n if (hasSpace) {\n final.push(\n createSpacer({\n key: `_${index}_before_sep_spacer`,\n direction,\n space,\n spaceFlex,\n })\n )\n }\n final.push(\n React.isValidElement(separator)\n ? React.cloneElement(separator, { key: `sep_${index}` })\n : separator\n )\n if (hasSpace) {\n final.push(\n createSpacer({\n key: `_${index}_after_sep_spacer`,\n direction,\n space,\n spaceFlex,\n })\n )\n }\n } else {\n final.push(\n createSpacer({\n key: `_${index}_spacer`,\n direction,\n space,\n spaceFlex,\n })\n )\n }\n }\n }\n\n return final\n}\n\ntype CreateSpacerProps = SpacedChildrenProps & { key: string }\n\nfunction createSpacer({ key, direction, space, spaceFlex }: CreateSpacerProps) {\n return (\n <Spacer\n key={key}\n size={space}\n direction={direction}\n {...(spaceFlex && {\n flex: spaceFlex,\n })}\n />\n )\n}\n\nfunction isUnspaced(child: React.ReactNode) {\n // console.log('unspaced?', child, getMedia())\n return child?.['type']?.['isVisuallyHidden'] || child?.['type']?.['isUnspaced']\n}\n\nfunction AbsoluteFill(props: { children?: any }) {\n return (\n <View pointerEvents=\"box-none\" style={StyleSheet.absoluteFill}>\n {props.children}\n </View>\n )\n}\n\n// this can be done with CSS entirely right?\n// const shouldWrapTextAncestor = isWeb && isText && !hasTextAncestor\n// if (shouldWrapTextAncestor) {\n// // from react-native-web\n// content = createElement(TextAncestorContext.Provider, { value: true }, content)\n// }\n\nexport function processIDRefList(idRefList: string | Array<string>): string {\n return Array.isArray(idRefList) ? idRefList.join(' ') : idRefList\n}\n\nexport const accessibilityRoleToWebRole = {\n adjustable: 'slider',\n button: 'button',\n header: 'heading',\n image: 'img',\n imagebutton: null,\n keyboardkey: null,\n label: null,\n link: 'link',\n none: 'presentation',\n search: 'search',\n summary: 'region',\n text: null,\n}\n\nfunction addPseudoToStyles(\n styles: any[],\n initialPseudos: SplitStyleResult['pseudos'],\n pseudos: any,\n name: string,\n force = false\n) {\n // on web use pseudo object { hoverStyle } to keep specificity with concatClassName\n const pseudoStyle = pseudos[name]\n const shouldNestObject = isWeb && name !== 'enterStyle' && name !== 'exitStyle'\n const defaultPseudoStyle = initialPseudos[name]\n const style = defaultPseudoStyle ? { ...defaultPseudoStyle, ...pseudoStyle } : pseudoStyle\n if (style) {\n styles.push(shouldNestObject && !force ? { [name]: style } : style)\n }\n}\n\nconst DefaultProps = new Map()\n\nfunction mergeConfigDefaultProps(\n name: string,\n props: Record<string, any>,\n configDefaults: Record<string, Object>,\n parentNames: (string | undefined)[],\n conf: TamaguiInternalConfig\n) {\n const len = parentNames.length\n let prev\n\n for (let i = 0; i < len; i++) {\n const n = parentNames[i]\n if (!n) continue\n if (DefaultProps.has(n)) {\n prev = DefaultProps.get(n)\n continue\n }\n const props = configDefaults[n]\n if (!props) {\n if (prev) {\n DefaultProps.set(n, prev)\n }\n continue\n }\n prev = mergeProps(prev || {}, props, false, conf.inverseShorthands)[0]\n DefaultProps.set(n, prev)\n }\n\n // overwrite the user defined defaults on top of internal defined defaults\n const ourDefaultsMerged = DefaultProps.get(name)\n if (ourDefaultsMerged) {\n return mergeProps(props, ourDefaultsMerged, false, conf.inverseShorthands)[0]\n }\n return props\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["/* eslint-disable react-hooks/rules-of-hooks */\nimport {\n composeEventHandlers,\n stylePropsView,\n validPseudoKeys,\n validStyles,\n} from '@tamagui/helpers'\nimport {\n useElementLayout,\n useMergeRefs,\n usePlatformMethods,\n useResponderEvents,\n} from '@tamagui/rnw'\nimport { useForceUpdate } from '@tamagui/use-force-update'\nimport React, {\n Children,\n Fragment,\n createElement,\n forwardRef,\n memo,\n useCallback,\n useContext,\n useEffect,\n} from 'react'\nimport { StyleSheet, Text, View, ViewStyle } from 'react-native'\n\nimport { getConfig, onConfiguredOnce } from './config'\nimport { stackDefaultStyles } from './constants/constants'\nimport { isClient, isRSC, isWeb, useIsomorphicLayoutEffect } from './constants/platform'\nimport { FontLanguageContext } from './contexts/FontLanguageContext'\nimport { TextAncestorContext } from './contexts/TextAncestorContext'\nimport { assignNativePropsToWeb } from './helpers/assignNativePropsToWeb'\nimport { getReturnVariablesAs } from './helpers/createPropMapper'\nimport { createShallowUpdate } from './helpers/createShallowUpdate'\nimport { extendStaticConfig, parseStaticConfig } from './helpers/extendStaticConfig'\nimport {\n SplitStyleResult,\n getSubStyle,\n insertSplitStyles,\n useSplitStyles,\n} from './helpers/getSplitStyles'\nimport { getAllSelectors } from './helpers/insertStyleRule'\nimport { mergeProps } from './helpers/mergeProps'\nimport { proxyThemeVariables } from './helpers/proxyThemeVariables'\nimport { addMediaQueryListener, mediaState, removeMediaQueryListener } from './hooks/useMedia'\nimport { usePressable } from './hooks/usePressable'\nimport { useServerRef, useServerState } from './hooks/useServerHooks'\nimport { getThemeManager, useTheme } from './hooks/useTheme'\nimport {\n SpaceDirection,\n SpaceTokens,\n SpacerProps,\n StaticConfig,\n StaticConfigParsed,\n StylableComponent,\n TamaguiComponent,\n TamaguiComponentState,\n TamaguiConfig,\n TamaguiElement,\n TamaguiInternalConfig,\n UseAnimationHook,\n UseAnimationProps,\n} from './types'\nimport { usePressability } from './vendor/Pressability'\nimport { Slot, mergeEvent } from './views/Slot'\nimport { wrapThemeManagerContext } from './views/Theme'\n\nReact['keep']\n\nconst defaultComponentState: TamaguiComponentState = Object.freeze({\n hover: false,\n press: false,\n pressIn: false,\n focus: false,\n // only used by enterStyle\n mounted: false,\n animation: null,\n})\n\nexport const mouseUps = new Set<Function>()\nif (typeof document !== 'undefined') {\n const cancelTouches = () => {\n mouseUps.forEach((x) => x())\n mouseUps.clear()\n }\n document.addEventListener('mouseup', cancelTouches)\n document.addEventListener('touchend', cancelTouches)\n document.addEventListener('touchcancel', cancelTouches)\n}\n\n// mutates\nfunction mergeShorthands({ defaultProps }: StaticConfigParsed, { shorthands }: TamaguiConfig) {\n // they are defined in correct order already { ...parent, ...child }\n for (const key of Object.keys(defaultProps)) {\n defaultProps[shorthands[key] || key] = defaultProps[key]\n }\n}\n\nlet initialTheme: any\nlet config: TamaguiInternalConfig\nlet mediaPropNames: string[] = []\n\nexport function createComponent<\n ComponentPropTypes extends Object = {},\n Ref = TamaguiElement,\n BaseProps = never\n>(configIn: Partial<StaticConfig> | StaticConfigParsed, ParentComponent?: StylableComponent) {\n const staticConfig = (() => {\n const next = extendStaticConfig(configIn, ParentComponent)\n if ('parsed' in next) {\n return next\n } else {\n return parseStaticConfig(next)\n }\n })()\n\n const defaultComponentClassName = `is_${staticConfig.componentName}`\n let tamaguiConfig: TamaguiInternalConfig\n let AnimatedText: any\n let AnimatedView: any\n let avoidClasses = true\n let defaultNativeStyle: any\n let defaultNativeStyleSheet: StyleSheet.NamedStyles<{ base: {} }>\n let tamaguiDefaultProps: any\n let initialSplitStyles: SplitStyleResult\n\n // see onConfiguredOnce below which attaches a name then to this component\n const component = forwardRef<Ref, ComponentPropTypes>((propsIn: any, forwardedRef) => {\n // React inserts default props after your props for some reason...\n // order important so we do loops, you can't just spread because JS does weird things\n let props: any\n if (tamaguiDefaultProps && !propsIn.asChild) {\n props = mergeProps(tamaguiDefaultProps, propsIn)[0]\n } else {\n props = propsIn\n }\n\n const { Component, isText, isZStack } = staticConfig\n const componentName = props.componentName || staticConfig.componentName\n const componentClassName = props.asChild\n ? ''\n : props.componentName\n ? `is_${props.componentName}`\n : defaultComponentClassName\n\n const forceUpdate = useForceUpdate()\n config = config || getConfig()\n const theme = useTheme(props.theme, componentName, props, forceUpdate)\n\n const states = useServerState<TamaguiComponentState>(defaultComponentState)\n const state = propsIn.forceStyle ? { ...states[0], [propsIn.forceStyle]: true } : states[0]\n\n const shouldAvoidClasses = !!(props.animation && avoidClasses)\n const shouldForcePseudo = !!propsIn.forceStyle\n const hasTextAncestor = !!(isWeb && isText ? useContext(TextAncestorContext) : false)\n const splitStyleState =\n !shouldAvoidClasses && !shouldForcePseudo\n ? {\n ...state,\n hasTextAncestor,\n dynamicStylesInline: true,\n }\n : ({\n ...state,\n noClassNames: true,\n dynamicStylesInline: true,\n hasTextAncestor,\n resolveVariablesAs: 'value',\n } as const)\n\n const languageContext = isRSC ? null : useContext(FontLanguageContext)\n\n const splitStyles = useSplitStyles(\n props,\n staticConfig,\n theme,\n splitStyleState,\n props.asChild ? null : initialSplitStyles?.classNames,\n languageContext || undefined,\n props['debug']\n )\n\n const hostRef = useServerRef<HTMLElement | View>(null)\n const setState = states[1]\n const setStateShallow = createShallowUpdate(setState)\n\n if (process.env.NODE_ENV === 'development') {\n if (props['debug']) {\n const name = `${\n componentName || Component?.displayName || Component?.name || '[Unnamed Component]'\n }`\n const type = staticConfig.isReactNativeWeb ? 'rnw' : 'tamagui'\n const banner = `${name} ${propsIn['data-is'] || ''} ${type}`\n // eslint-disable-next-line no-console\n console.group(`%c \uD83D\uDC1B ${banner}`, 'background: yellow;')\n // eslint-disable-next-line no-console\n console.log('props in', propsIn)\n if (typeof window !== 'undefined') {\n // eslint-disable-next-line no-console\n console.log('ref', hostRef, '(click to view)')\n }\n if (props['debug'] === 'break') {\n // eslint-disable-next-line no-debugger\n debugger\n }\n }\n }\n\n const { viewProps: viewPropsIn, pseudos, medias, style, classNames, mediaKeys } = splitStyles\n\n // media queries\n useIsomorphicLayoutEffect(() => {\n for (const key of mediaKeys) {\n addMediaQueryListener(key, forceUpdate)\n }\n return () => {\n for (const key of mediaKeys) {\n removeMediaQueryListener(key, forceUpdate)\n }\n }\n }, [mediaKeys.join(',')])\n\n // animations\n const useAnimations = tamaguiConfig?.animations?.useAnimations as UseAnimationHook | undefined\n const isAnimated = !!(useAnimations && props.animation)\n const hasEnterStyle = !!props.enterStyle\n const animationFeatureStylesIn = props.animation ? { ...defaultNativeStyle, ...style } : null\n const propsWithAnimation = props as UseAnimationProps\n\n // lets make changing the key mandatory for adding/removing animations\n // reason is animations are heavy no way around it, and must be run inline here (\uD83D\uDE45 loading as a sub-component)\n // because they need to sync update on first render. it's pretty rare too going to/from no animation => animation\n // so requiring key change on animation change is least-bad option.\n // plus, React use() may let us get away with conditional hooks soon :)\n if (!isRSC && isAnimated) {\n const animationState = useAnimations(propsWithAnimation, {\n state,\n pseudos,\n onDidAnimate: props.onDidAnimate,\n hostRef,\n staticConfig,\n getStyle({ isExiting, isEntering, exitVariant, enterVariant } = {}) {\n // we have to merge such that transforms keys all exist\n const style = animationFeatureStylesIn\n\n const enterStyle = isEntering\n ? enterVariant && staticConfig.variants?.[enterVariant]['true']\n ? getSubStyle(\n '',\n staticConfig.variants?.[enterVariant]['true'],\n staticConfig,\n theme,\n props,\n state,\n tamaguiConfig\n ) || pseudos.enterStyle\n : null || pseudos.enterStyle\n : null\n\n const exitStyle = isExiting\n ? exitVariant && staticConfig.variants?.[exitVariant]['true']\n ? getSubStyle(\n '',\n staticConfig.variants?.[exitVariant]['true'],\n staticConfig,\n theme,\n props,\n state,\n tamaguiConfig\n ) || pseudos.exitStyle\n : null || pseudos.exitStyle\n : null\n\n // if you have hoverStyle={{ scale: 1.1 }} and don't have scale set on the base style\n // no animation will run! this is really confusing. this will look at all variants,\n // and fill in base styles if they don't exist. eg:\n // input:\n // base: {}\n // hoverStyle: { scale: 2 }\n // enterStyle: { x: 100 }\n // output:\n // base: { x: 0, scale: 1 }\n ensureBaseHasDefaults(\n style,\n // enterStyle,\n pseudos.hoverStyle,\n pseudos.focusStyle,\n pseudos.pressStyle,\n pseudos.pressStyle\n )\n\n enterStyle && isEntering && merge(style, enterStyle)\n state.hover && pseudos.hoverStyle && merge(style, pseudos.hoverStyle)\n state.focus && pseudos.focusStyle && merge(style, pseudos.focusStyle)\n state.press && pseudos.pressStyle && merge(style, pseudos.pressStyle)\n exitStyle && isExiting && merge(style, exitStyle)\n\n if (process.env.NODE_ENV === 'development') {\n if (props['debug']) {\n // eslint-disable-next-line no-console\n console.log('animation style', style)\n }\n }\n\n return style\n },\n //, delay\n })\n\n // must be properly memoized\n if (animationState !== state.animation) {\n setStateShallow({\n animation: animationState,\n })\n }\n }\n\n const {\n tag,\n hitSlop,\n asChild,\n children,\n onPress,\n onPressIn,\n onPressOut,\n onHoverIn,\n onHoverOut,\n themeShallow,\n space: spaceProp,\n spaceDirection: _spaceDirection,\n disabled: disabledProp,\n onMouseUp,\n onMouseDown,\n onMouseEnter,\n onMouseLeave,\n hrefAttrs,\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 // get the right component\n const isTaggable = !Component || typeof Component === 'string'\n\n // default to tag, fallback to component (when both strings)\n const element = isWeb ? (isTaggable ? tag || Component : Component) : Component\n const BaseTextComponent = !isWeb ? Text : element || 'span'\n const BaseViewComponent = !isWeb ? View : element || (hasTextAncestor ? 'span' : 'div')\n let 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 (process.env.TAMAGUI_TARGET === 'web' && !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 assignNativePropsToWeb(elementType, viewProps, nonTamaguiProps)\n\n if (!isRSC) {\n useElementLayout(hostRef, onLayout)\n\n // from react-native-web\n 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 // from react-native-web\n const platformMethodsRef = usePlatformMethods(viewProps)\n\n const shouldSetMounted = Boolean(\n isClient && (hasEnterStyle || props.animation) && !state.mounted\n )\n\n const setRef = useMergeRefs(\n hostRef,\n platformMethodsRef,\n forwardedRef as any,\n shouldSetMounted\n ? () => {\n // for some reason without some small delay it doesn't animate css\n setTimeout(() => {\n setStateShallow({\n mounted: true,\n })\n }, 10)\n }\n : undefined\n )\n\n viewProps.ref = setRef\n }\n\n if (props.href != undefined && hrefAttrs != undefined) {\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 != undefined ? focusable : accessible\n const role = viewProps.role\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 }\n // Everything else must explicitly set the prop\n if (_focusable === true) {\n viewProps.tabIndex = '0'\n }\n } else {\n viewProps = nonTamaguiProps\n if (forwardedRef) {\n // @ts-ignore\n viewProps.ref = forwardedRef\n }\n }\n\n if (process.env.NODE_ENV === 'development' && !isText && isWeb) {\n Children.toArray(props.children).forEach((item) => {\n if (typeof item === 'string') {\n // eslint-disable-next-line no-console\n console.error(`Unexpected text node: ${item}. A text node cannot be a child of a <View>.`)\n }\n })\n }\n\n if (!isRSC) {\n useEffect(() => {\n return () => {\n mouseUps.delete(unPress)\n }\n }, [])\n }\n\n let styles: any[]\n\n const animationStyles = state.animation ? state.animation.style : null\n\n if (isStringElement && shouldAvoidClasses && !shouldForcePseudo) {\n styles = {\n ...defaultNativeStyle,\n ...(animationStyles ?? style),\n ...medias,\n }\n } else {\n styles = [\n isWeb ? null : defaultNativeStyleSheet ? (defaultNativeStyleSheet.base as ViewStyle) : null,\n animationStyles ?? style,\n medias,\n ]\n if (!animationStyles && initialSplitStyles) {\n const initPseudos = initialSplitStyles.pseudos\n !state.mounted && addPseudoToStyles(styles, initPseudos, pseudos, 'enterStyle')\n state.hover &&\n addPseudoToStyles(styles, initPseudos, pseudos, 'hoverStyle', shouldForcePseudo)\n state.focus &&\n addPseudoToStyles(styles, initPseudos, pseudos, 'focusStyle', shouldForcePseudo)\n state.press &&\n addPseudoToStyles(styles, initPseudos, pseudos, 'pressStyle', shouldForcePseudo)\n }\n // ugly but for now...\n if (shouldForcePseudo) {\n const next = {}\n for (const style of styles) {\n if (style) {\n Object.assign(next, style)\n }\n }\n // @ts-ignore\n Object.assign(splitStyles.style, next)\n }\n }\n\n if (process.env.TAMAGUI_TARGET === 'web') {\n let fontFamily = isText\n ? splitStyles.fontFamily || staticConfig.defaultProps.fontFamily\n : null\n if (fontFamily && fontFamily[0] === '$') {\n fontFamily = fontFamily.slice(1)\n }\n\n const classList = [\n componentName ? componentClassName : '',\n fontFamily ? `font_${fontFamily}` : '',\n theme.className,\n classNames ? Object.values(classNames).join(' ') : '',\n ]\n\n const className = classList.join(' ')\n const style = animationStyles ?? splitStyles.style\n\n // TODO this is specific to reanimated rn\n const isAnimatedReactNativeWeb = props.animation && avoidClasses\n\n if (staticConfig.isReactNativeWeb || isAnimatedReactNativeWeb) {\n viewProps.dataSet = {\n ...viewProps.dataSet,\n className,\n id: props.id,\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[key.replace('data-', '')] = viewProps[key]\n delete viewProps[key]\n }\n })\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?.pressStyle ||\n initialPseudos?.pressStyle ||\n onPress ||\n onPressOut ||\n onPressIn ||\n onClick\n )\n\n const isHoverable = isWeb\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 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 setStateShallow({\n press: false,\n pressIn: false,\n })\n }, [])\n\n const events =\n shouldAttach && !isRSC\n ? {\n [pressOutKey]: attachPress\n ? (e) => {\n unPress()\n onPressOut?.(e)\n onMouseUp?.(e)\n }\n : undefined,\n ...(isHoverable && {\n onMouseEnter: attachHover\n ? (e) => {\n const 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 const 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 hover: false,\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 // replicating TouchableWithoutFeedback\n ...(!isWeb && {\n cancelable: !props.rejectResponderTermination,\n disabled:\n props.disabled !== null ? props.disabled : props.accessibilityState?.disabled,\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 let space = spaceProp\n\n // find space by media query\n if (mediaKeys.length) {\n for (const key in mediaState) {\n if (!mediaState[key]) continue\n if (props[key] && props[key].space !== undefined) {\n space = props[key].space\n }\n }\n }\n\n const themeManager = getThemeManager(theme)\n\n const shouldSetChildrenThemeToParent = Boolean(\n themeShallow && themeManager && themeManager.didChangeTheme\n )\n\n const shouldProvideThemeManager =\n shouldSetChildrenThemeToParent || (themeManager && themeManager.didChangeTheme)\n\n const 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 // only set context if changed theme\n shouldProvideThemeManager ? themeManager : undefined,\n shouldSetChildrenThemeToParent\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 // EVENTS: web\n if (!isRSC && isWeb) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\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 // EVENTS native\n if (process.env.TAMAGUI_TARGET === 'native') {\n // add focus events\n const attachFocus = !!(\n (pseudos && pseudos.focusStyle) ||\n (initialPseudos && initialPseudos.focusStyle)\n )\n if (attachFocus) {\n viewProps.onFocus = mergeEvent(viewProps.onFocus, () => {\n setStateShallow({ focus: true })\n })\n viewProps.onBlur = mergeEvent(viewProps.onBlur, () => {\n setStateShallow({ focus: false })\n })\n }\n\n // use Pressability to get smooth unPress when you press + hold + move out\n // only ever create once, use .configure() to update later\n const pressability = usePressability(events)\n if (attachPress && events) {\n const dontComposePressabilityKeys = {\n onClick: true,\n }\n if (hitSlop) {\n viewProps.hitSlop = hitSlop\n }\n for (const key in pressability) {\n const og = props[key]\n const val = pressability[key]\n viewProps[key] =\n og && !dontComposePressabilityKeys[key] ? composeEventHandlers(og, val) : val\n }\n }\n }\n\n content = createElement(elementType, viewProps, childEls)\n\n if (process.env.TAMAGUI_TARGET === 'web') {\n // only necessary when animating because some AnimatedView which wraps RNW View doesn't forward dataSet className\n const isAnimatedRNWView = isAnimated && typeof elementType !== 'string' // assuming for now as reanimated is only driver\n const shouldWrapWithComponentTheme =\n !!theme.className &&\n isAnimatedRNWView &&\n getReturnVariablesAs(props, splitStyleState) === 'non-color-value'\n const shouldWrapWithHover = Boolean(events || isRSC) && attachHover\n\n if (shouldWrapWithHover || shouldWrapWithComponentTheme) {\n const themeClassName = shouldWrapWithComponentTheme ? `${theme.className}` : ''\n const hoverClassName = shouldWrapWithHover ? 't_Hoverable' : ''\n content = (\n <span\n className={`${hoverClassName} ${themeClassName}`}\n style={{\n display: 'contents',\n }}\n {...(events &&\n shouldWrapWithHover && {\n onMouseEnter: events.onMouseEnter,\n onMouseLeave: events.onMouseLeave,\n })}\n >\n {content}\n </span>\n )\n }\n }\n\n if (process.env.NODE_ENV === 'development') {\n if (props['debug']) {\n const element = typeof elementType === 'string' ? elementType : 'Component'\n // eslint-disable-next-line no-console\n console.groupCollapsed(`render <${element} /> with props`, viewProps)\n for (const key in viewProps) {\n // eslint-disable-next-line no-console\n console.log(key, viewProps[key])\n }\n // eslint-disable-next-line no-console\n console.log('children', content)\n // eslint-disable-next-line no-console\n console.groupEnd()\n if (typeof window !== 'undefined') {\n // prettier-ignore\n // eslint-disable-next-line no-console\n console.log({ state, shouldProvideThemeManager, tamaguiDefaultProps, viewProps, splitStyles, animationStyles, handlesPressEvents, isStringElement, classNamesIn: props.className?.split(' '), classNamesOut: viewProps.className?.split(' '), events, shouldAttach, styles, pseudos, content, childEls, shouldAvoidClasses, avoidClasses, animation: props.animation, style, defaultNativeStyle, initialSplitStyles, ...(typeof window !== 'undefined' ? { theme, themeClassName: theme.className, staticConfig, tamaguiConfig, events, shouldAvoidClasses, shouldForcePseudo, classNames: Object.fromEntries(Object.entries(classNames).map(([k, v]) => [v, getAllSelectors()[v]])) } : null) })\n }\n // eslint-disable-next-line no-console\n console.groupEnd()\n }\n }\n\n return content\n })\n\n if (staticConfig.componentName) {\n component.displayName = staticConfig.componentName\n }\n\n // Once configuration is run and all components are registered\n // get default props + className and analyze styles\n onConfiguredOnce((conf) => {\n // in static mode we just use these to lookup configuration\n // ... we likely want this? need to test\n if (process.env.IS_STATIC === 'is_static') return\n\n tamaguiConfig = conf\n\n // do this to make sure shorthands don't duplicate with.. longhands\n mergeShorthands(staticConfig, tamaguiConfig)\n\n if (tamaguiConfig.animations) {\n avoidClasses = !!tamaguiConfig.animations.avoidClasses\n AnimatedText = tamaguiConfig.animations.Text\n AnimatedView = tamaguiConfig.animations.View\n }\n\n initialTheme =\n initialTheme ||\n proxyThemeVariables(conf.themes[conf.defaultTheme || Object.keys(conf.themes)[0]])\n\n // adds in user defined default props\n config = getConfig()\n\n let defaultPropsIn = staticConfig.defaultProps || {}\n\n // because we run createTamagui after styled() defs, have to do some work here\n // gather defaults props one time and merge downwards\n // find last unprocessed and process\n const parentNames = [...(staticConfig.parentNames || []), staticConfig.componentName]\n\n if (config.defaultProps && parentNames && staticConfig.componentName) {\n defaultPropsIn = mergeConfigDefaultProps(\n staticConfig.componentName,\n defaultPropsIn,\n config.defaultProps,\n parentNames,\n conf\n )\n }\n\n const debug = true ? defaultPropsIn['debug'] : false\n\n if (process.env.NODE_ENV === 'development' && debug === 'break') {\n // eslint-disable-next-line no-debugger\n debugger\n }\n\n // remove all classNames\n const [parentProps, parentClassNames] = mergeProps(defaultPropsIn, {}, true)\n\n initialSplitStyles = insertSplitStyles(\n parentProps,\n staticConfig,\n initialTheme,\n {\n mounted: true,\n hover: false,\n press: false,\n pressIn: false,\n focus: false,\n resolveVariablesAs: 'both',\n keepVariantsAsProps: true,\n },\n undefined,\n undefined,\n debug\n )\n\n // must preserve prop order\n // leave out className because we handle that already with initialSplitStyles.classNames\n // otherwise it confuses variant functions getting className props\n const [defaults, defaultsClassnames] = mergeProps(\n component.defaultProps as any,\n initialSplitStyles.viewProps,\n true\n // conf.inverseShorthands\n )\n\n // avoid passing className props to variants\n initialSplitStyles.classNames = {\n ...parentClassNames,\n ...defaultsClassnames,\n ...initialSplitStyles.classNames,\n }\n\n defaultNativeStyle = {}\n\n const validStyles = staticConfig.validStyles || stylePropsView\n\n // split - keep variables on props to be processed using theme values at runtime (native)\n if (!isWeb) {\n for (const key in staticConfig.defaultProps) {\n const val = staticConfig.defaultProps[key]\n if (validPseudoKeys[key]) continue\n if ((typeof val === 'string' && val[0] === '$') || !validStyles[key]) {\n defaults[key] = val\n } else {\n defaultNativeStyle[key] = val\n }\n }\n }\n\n defaultNativeStyleSheet = StyleSheet.create({\n base: defaultNativeStyle,\n })\n\n if (Object.keys(defaults).length) {\n tamaguiDefaultProps = defaults\n }\n\n // add debug logs\n if (process.env.NODE_ENV === 'development' && debug) {\n if (process.env.IS_STATIC !== 'is_static') {\n // eslint-disable-next-line no-console\n console.log(`\uD83D\uDC1B [${staticConfig.componentName || 'Component'}]`, {\n staticConfig,\n initialSplitStyles,\n tamaguiDefaultProps,\n defaultNativeStyle,\n defaults,\n defaultPropsIn,\n })\n }\n }\n })\n\n let res: TamaguiComponent<ComponentPropTypes, Ref, BaseProps> = component as any\n\n if (configIn.memo) {\n res = memo(res) as any\n }\n\n res.staticConfig = {\n validStyles: staticConfig.validStyles || stylePropsView,\n ...staticConfig,\n }\n\n // res.extractable HoC\n res.extractable = (Component: any, conf?: Partial<StaticConfig>) => {\n Component.staticConfig = extendStaticConfig(\n {\n Component,\n ...conf,\n neverFlatten: true,\n isExtractable: true,\n defaultProps: {\n ...Component.defaultProps,\n ...conf?.defaultProps,\n },\n },\n res\n )\n return Component\n }\n\n return res\n}\n\n// for elements to avoid spacing\nexport const Unspaced = (props: { children?: any }) => {\n return props.children\n}\nUnspaced['isUnspaced'] = true\n\n// dont used styled() here to avoid circular deps\n// keep inline to avoid circular deps\n\nexport const Spacer = createComponent<SpacerProps>({\n memo: true,\n componentName: 'Spacer',\n validStyles,\n defaultProps: {\n ...stackDefaultStyles,\n // avoid nesting issues\n tag: 'span',\n size: true,\n },\n variants: {\n size: {\n '...size': (size, { tokens }) => {\n size = size == true ? '$true' : size\n const sizePx = tokens.space[size] ?? size\n return {\n width: sizePx,\n height: sizePx,\n minWidth: sizePx,\n minHeight: sizePx,\n }\n },\n },\n\n flex: {\n true: {\n flexGrow: 1,\n },\n },\n\n direction: {\n horizontal: {\n height: 0,\n minHeight: 0,\n },\n vertical: {\n width: 0,\n minWidth: 0,\n },\n both: {},\n },\n },\n\n defaultVariants: {\n direction: 'both',\n },\n})\n\nexport type SpacedChildrenProps = {\n isZStack?: boolean\n children?: React.ReactNode\n space?: SpaceTokens | number | null\n spaceFlex?: boolean | number\n direction?: SpaceDirection\n separator?: React.ReactNode\n}\n\nexport function spacedChildren({\n isZStack,\n children,\n space,\n direction,\n spaceFlex,\n separator,\n}: SpacedChildrenProps) {\n const hasSpace = !!(space || spaceFlex)\n const hasSeparator = !(separator === undefined || separator === null)\n if (!hasSpace && !hasSeparator && !isZStack) {\n return children\n }\n const childrenList = Children.toArray(children)\n if (childrenList.length <= 1 && !isZStack) {\n return childrenList\n }\n const final: React.ReactNode[] = []\n for (const [index, child] of childrenList.entries()) {\n const isEmpty =\n child === null || child === undefined || (Array.isArray(child) && child.length === 0)\n\n // push them all, but wrap some in Fragment\n if (isEmpty || !child || (child['key'] && !isZStack)) {\n final.push(child)\n } else {\n final.push(\n <Fragment key={index}>{isZStack ? <AbsoluteFill>{child}</AbsoluteFill> : child}</Fragment>\n )\n }\n\n // first child unspaced avoid insert space\n if (isUnspaced(child) && index === 0) {\n continue\n }\n\n // no spacing on ZStack\n if (isZStack) {\n continue\n }\n\n const next = childrenList[index + 1]\n\n if (next && !isUnspaced(next)) {\n if (separator) {\n if (hasSpace) {\n final.push(\n createSpacer({\n key: `_${index}_before_sep_spacer`,\n direction,\n space,\n spaceFlex,\n })\n )\n }\n final.push(\n React.isValidElement(separator)\n ? React.cloneElement(separator, { key: `sep_${index}` })\n : separator\n )\n if (hasSpace) {\n final.push(\n createSpacer({\n key: `_${index}_after_sep_spacer`,\n direction,\n space,\n spaceFlex,\n })\n )\n }\n } else {\n final.push(\n createSpacer({\n key: `_${index}_spacer`,\n direction,\n space,\n spaceFlex,\n })\n )\n }\n }\n }\n\n return final\n}\n\ntype CreateSpacerProps = SpacedChildrenProps & { key: string }\n\nfunction createSpacer({ key, direction, space, spaceFlex }: CreateSpacerProps) {\n return (\n <Spacer\n key={key}\n size={space}\n direction={direction}\n {...(spaceFlex && {\n flex: spaceFlex,\n })}\n />\n )\n}\n\nfunction isUnspaced(child: React.ReactNode) {\n // console.log('unspaced?', child, getMedia())\n return child?.['type']?.['isVisuallyHidden'] || child?.['type']?.['isUnspaced']\n}\n\nfunction AbsoluteFill(props: { children?: any }) {\n return (\n <View pointerEvents=\"box-none\" style={StyleSheet.absoluteFill}>\n {props.children}\n </View>\n )\n}\n\n// this can be done with CSS entirely right?\n// const shouldWrapTextAncestor = isWeb && isText && !hasTextAncestor\n// if (shouldWrapTextAncestor) {\n// // from react-native-web\n// content = createElement(TextAncestorContext.Provider, { value: true }, content)\n// }\n\nexport function processIDRefList(idRefList: string | Array<string>): string {\n return Array.isArray(idRefList) ? idRefList.join(' ') : idRefList\n}\n\nexport const accessibilityRoleToWebRole = {\n adjustable: 'slider',\n button: 'button',\n header: 'heading',\n image: 'img',\n imagebutton: null,\n keyboardkey: null,\n label: null,\n link: 'link',\n none: 'presentation',\n search: 'search',\n summary: 'region',\n text: null,\n}\n\nfunction addPseudoToStyles(\n styles: any[],\n initialPseudos: SplitStyleResult['pseudos'],\n pseudos: any,\n name: string,\n force = false\n) {\n // on web use pseudo object { hoverStyle } to keep specificity with concatClassName\n const pseudoStyle = pseudos[name]\n const shouldNestObject = isWeb && name !== 'enterStyle' && name !== 'exitStyle'\n const defaultPseudoStyle = initialPseudos[name]\n const style = defaultPseudoStyle ? { ...defaultPseudoStyle, ...pseudoStyle } : pseudoStyle\n if (style) {\n styles.push(shouldNestObject && !force ? { [name]: style } : style)\n }\n}\n\nconst DefaultProps = new Map()\n\nfunction mergeConfigDefaultProps(\n name: string,\n props: Record<string, any>,\n configDefaults: Record<string, Object>,\n parentNames: (string | undefined)[],\n conf: TamaguiInternalConfig\n) {\n const len = parentNames.length\n let prev\n\n for (let i = 0; i < len; i++) {\n const n = parentNames[i]\n if (!n) continue\n if (DefaultProps.has(n)) {\n prev = DefaultProps.get(n)\n continue\n }\n const props = configDefaults[n]\n if (!props) {\n if (prev) {\n DefaultProps.set(n, prev)\n }\n continue\n }\n prev = mergeProps(prev || {}, props, false, conf.inverseShorthands)[0]\n DefaultProps.set(n, prev)\n }\n\n // overwrite the user defined defaults on top of internal defined defaults\n const ourDefaultsMerged = DefaultProps.get(name)\n if (ourDefaultsMerged) {\n return mergeProps(props, ourDefaultsMerged, false, conf.inverseShorthands)[0]\n }\n return props\n}\n\nconst defaults = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n opacity: 1,\n translateX: 0,\n translateY: 0,\n skew: 0,\n skewX: 0,\n skewY: 0,\n scale: 1,\n rotate: '0deg',\n rotateY: '0deg',\n rotateX: '0deg',\n}\n\nfunction ensureBaseHasDefaults(base: ViewStyle, ...pseudos: (ViewStyle | null | undefined)[]) {\n for (const pseudo of pseudos) {\n if (!pseudo) continue\n for (const key in pseudo) {\n const val = pseudo[key]\n // can we just use merge() here?\n if (key === 'transform') {\n if (typeof val === 'string') {\n continue\n }\n for (const t of val) {\n const tkey = Object.keys(t)[0]\n const defaultVal = defaults[tkey]\n const tDefaultVal = { [tkey]: defaultVal } as any\n if (!base.transform) {\n base.transform = [tDefaultVal]\n } else {\n if (!base.transform.find((x) => x[tkey])) {\n base.transform.push(tDefaultVal)\n }\n }\n }\n } else {\n if (!(key in base)) {\n base[key] = defaults[key]\n }\n }\n }\n }\n}\n\nfunction merge(base: ViewStyle, next: ViewStyle) {\n if (!next.transform || !base.transform) {\n Object.assign(base, next)\n return\n }\n const { transform, ...rest } = next\n Object.assign(base, rest)\n for (const t of transform) {\n const key = Object.keys(t)[0]\n const existing = base.transform.find((x) => key in x)\n if (existing) {\n existing[key] = t[key]\n } else {\n base.transform.push(t)\n }\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qBAKO;AACP,iBAKO;AACP,8BAA+B;AAC/B,mBASO;AACP,0BAAkD;AAElD,oBAA4C;AAC5C,uBAAmC;AACnC,sBAAkE;AAClE,iCAAoC;AACpC,iCAAoC;AACpC,oCAAuC;AACvC,8BAAqC;AACrC,iCAAoC;AACpC,gCAAsD;AACtD,4BAKO;AACP,6BAAgC;AAChC,wBAA2B;AAC3B,iCAAoC;AACpC,sBAA4E;AAC5E,0BAA6B;AAC7B,4BAA6C;AAC7C,sBAA0C;AAgB1C,0BAAgC;AAChC,kBAAiC;AACjC,mBAAwC;AAExC,qBAAM;AAEN,MAAM,wBAA+C,OAAO,OAAO;AAAA,EACjE,OAAO;AAAA,EACP,OAAO;AAAA,EACP,SAAS;AAAA,EACT,OAAO;AAAA,EAEP,SAAS;AAAA,EACT,WAAW;AACb,CAAC;AAEM,MAAM,WAAW,oBAAI,IAAc;AAC1C,IAAI,OAAO,aAAa,aAAa;AACnC,QAAM,gBAAgB,MAAM;AAC1B,aAAS,QAAQ,CAAC,MAAM,EAAE,CAAC;AAC3B,aAAS,MAAM;AAAA,EACjB;AACA,WAAS,iBAAiB,WAAW,aAAa;AAClD,WAAS,iBAAiB,YAAY,aAAa;AACnD,WAAS,iBAAiB,eAAe,aAAa;AACxD;AAGA,yBAAyB,EAAE,gBAAoC,EAAE,cAA6B;AAE5F,aAAW,OAAO,OAAO,KAAK,YAAY,GAAG;AAC3C,iBAAa,WAAW,QAAQ,OAAO,aAAa;AAAA,EACtD;AACF;AAEA,IAAI;AACJ,IAAI;AACJ,IAAI,iBAA2B,CAAC;AAEzB,yBAIL,UAAsD,iBAAqC;AAC3F,QAAM,eAAgB,OAAM;AAC1B,UAAM,OAAO,kDAAmB,UAAU,eAAe;AACzD,QAAI,YAAY,MAAM;AACpB,aAAO;AAAA,IACT,OAAO;AACL,aAAO,iDAAkB,IAAI;AAAA,IAC/B;AAAA,EACF,GAAG;AAEH,QAAM,4BAA4B,MAAM,aAAa;AACrD,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI,eAAe;AACnB,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AAGJ,QAAM,YAAY,6BAAoC,CAAC,SAAc,iBAAiB;AA/HxF;AAkII,QAAI;AACJ,QAAI,uBAAuB,CAAC,QAAQ,SAAS;AAC3C,cAAQ,kCAAW,qBAAqB,OAAO,EAAE;AAAA,IACnD,OAAO;AACL,cAAQ;AAAA,IACV;AAEA,UAAM,EAAE,WAAW,QAAQ,aAAa;AACxC,UAAM,gBAAgB,MAAM,iBAAiB,aAAa;AAC1D,UAAM,qBAAqB,MAAM,UAC7B,KACA,MAAM,gBACN,MAAM,MAAM,kBACZ;AAEJ,UAAM,cAAc,4CAAe;AACnC,aAAS,UAAU,6BAAU;AAC7B,UAAM,QAAQ,8BAAS,MAAM,OAAO,eAAe,OAAO,WAAW;AAErE,UAAM,SAAS,0CAAsC,qBAAqB;AAC1E,UAAM,QAAQ,QAAQ,aAAa,EAAE,GAAG,OAAO,IAAI,CAAC,QAAQ,aAAa,KAAK,IAAI,OAAO;AAEzF,UAAM,qBAAqB,CAAC,CAAE,OAAM,aAAa;AACjD,UAAM,oBAAoB,CAAC,CAAC,QAAQ;AACpC,UAAM,kBAAkB,CAAC,CAAE,0BAAS,SAAS,6BAAW,8CAAmB,IAAI;AAC/E,UAAM,kBACJ,CAAC,sBAAsB,CAAC,oBACpB;AAAA,MACE,GAAG;AAAA,MACH;AAAA,MACA,qBAAqB;AAAA,IACvB,IACC;AAAA,MACC,GAAG;AAAA,MACH,cAAc;AAAA,MACd,qBAAqB;AAAA,MACrB;AAAA,MACA,oBAAoB;AAAA,IACtB;AAEN,UAAM,kBAAkB,wBAAQ,OAAO,6BAAW,8CAAmB;AAErE,UAAM,cAAc,0CAClB,OACA,cACA,OACA,iBACA,MAAM,UAAU,OAAO,yDAAoB,YAC3C,mBAAmB,QACnB,MAAM,QACR;AAEA,UAAM,UAAU,wCAAiC,IAAI;AACrD,UAAM,WAAW,OAAO;AACxB,UAAM,kBAAkB,oDAAoB,QAAQ;AAEpD,QAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,UAAI,MAAM,UAAU;AAClB,cAAM,OAAO,GACX,iBAAiB,wCAAW,gBAAe,wCAAW,SAAQ;AAEhE,cAAM,OAAO,aAAa,mBAAmB,QAAQ;AACrD,cAAM,SAAS,GAAG,QAAQ,QAAQ,cAAc,MAAM;AAEtD,gBAAQ,MAAM,gBAAS,UAAU,qBAAqB;AAEtD,gBAAQ,IAAI,YAAY,OAAO;AAC/B,YAAI,OAAO,WAAW,aAAa;AAEjC,kBAAQ,IAAI,OAAO,SAAS,iBAAiB;AAAA,QAC/C;AACA,YAAI,MAAM,aAAa,SAAS;AAE9B;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,UAAM,EAAE,WAAW,aAAa,SAAS,QAAQ,OAAO,YAAY,cAAc;AAGlF,mDAA0B,MAAM;AAC9B,iBAAW,OAAO,WAAW;AAC3B,mDAAsB,KAAK,WAAW;AAAA,MACxC;AACA,aAAO,MAAM;AACX,mBAAW,OAAO,WAAW;AAC3B,wDAAyB,KAAK,WAAW;AAAA,QAC3C;AAAA,MACF;AAAA,IACF,GAAG,CAAC,UAAU,KAAK,GAAG,CAAC,CAAC;AAGxB,UAAM,gBAAgB,qDAAe,eAAf,mBAA2B;AACjD,UAAM,aAAa,CAAC,CAAE,kBAAiB,MAAM;AAC7C,UAAM,gBAAgB,CAAC,CAAC,MAAM;AAC9B,UAAM,2BAA2B,MAAM,YAAY,EAAE,GAAG,oBAAoB,GAAG,MAAM,IAAI;AACzF,UAAM,qBAAqB;AAO3B,QAAI,CAAC,yBAAS,YAAY;AACxB,YAAM,iBAAiB,cAAc,oBAAoB;AAAA,QACvD;AAAA,QACA;AAAA,QACA,cAAc,MAAM;AAAA,QACpB;AAAA,QACA;AAAA,QACA,SAAS,EAAE,WAAW,YAAY,aAAa,iBAAiB,CAAC,GAAG;AAjP5E;AAmPU,gBAAM,SAAQ;AAEd,gBAAM,aAAa,aACf,gBAAgB,qBAAa,aAAb,oBAAwB,cAAc,WACpD,uCACE,IACA,oBAAa,aAAb,oBAAwB,cAAc,SACtC,cACA,OACA,OACA,OACA,aACF,KAAK,QAAQ,aACL,QAAQ,aAClB;AAEJ,gBAAM,YAAY,YACd,eAAe,qBAAa,aAAb,oBAAwB,aAAa,WAClD,uCACE,IACA,oBAAa,aAAb,oBAAwB,aAAa,SACrC,cACA,OACA,OACA,OACA,aACF,KAAK,QAAQ,YACL,QAAQ,YAClB;AAWJ,gCACE,QAEA,QAAQ,YACR,QAAQ,YACR,QAAQ,YACR,QAAQ,UACV;AAEA,wBAAc,cAAc,MAAM,QAAO,UAAU;AACnD,gBAAM,SAAS,QAAQ,cAAc,MAAM,QAAO,QAAQ,UAAU;AACpE,gBAAM,SAAS,QAAQ,cAAc,MAAM,QAAO,QAAQ,UAAU;AACpE,gBAAM,SAAS,QAAQ,cAAc,MAAM,QAAO,QAAQ,UAAU;AACpE,uBAAa,aAAa,MAAM,QAAO,SAAS;AAEhD,cAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,gBAAI,MAAM,UAAU;AAElB,sBAAQ,IAAI,mBAAmB,MAAK;AAAA,YACtC;AAAA,UACF;AAEA,iBAAO;AAAA,QACT;AAAA,MAEF,CAAC;AAGD,UAAI,mBAAmB,MAAM,WAAW;AACtC,wBAAgB;AAAA,UACd,WAAW;AAAA,QACb,CAAC;AAAA,MACH;AAAA,IACF;AAEA,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAO;AAAA,MACP,gBAAgB;AAAA,MAChB,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEA,YAAY;AAAA,MAEZ;AAAA,MACA,OAAO;AAAA,MAEP;AAAA,SAEG;AAAA,QACD;AAGJ,UAAM,aAAa,CAAC,aAAa,OAAO,cAAc;AAGtD,UAAM,UAAU,wBAAS,aAAa,OAAO,YAAY,YAAa;AACtE,UAAM,oBAAoB,CAAC,wBAAQ,2BAAO,WAAW;AACrD,UAAM,oBAAoB,CAAC,wBAAQ,2BAAO,WAAY,mBAAkB,SAAS;AACjF,QAAI,cAAc,SACb,cAAa,gBAAgB,2BAAO,SAAS,oBAC7C,cAAa,gBAAgB,2BAAO,SAAS;AAElD,kBAAc,aAAa;AAC3B,UAAM,kBAAkB,OAAO,gBAAgB;AAE/C,UAAM,WACH,MAAM,sBAAsB,QAAQ,MAAM,mBAAmB,aAAa,QAC3E,MAAM;AAIR,QAAI;AAGJ,QAAI,QAAQ,IAAI,mBAAmB,SAAS,CAAC,aAAa,kBAAkB;AAE1E,YAAM;AAAA,QAEJ;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;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,WAEG;AAAA,UACD;AAEJ,kBAAY;AAEZ,gEAAuB,aAAa,WAAW,eAAe;AAE9D,UAAI,CAAC,uBAAO;AACV,yCAAiB,SAAS,QAAQ;AAGlC,2CAAmB,SAAS;AAAA,UAC1B;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF,CAAC;AAGD,cAAM,qBAAqB,mCAAmB,SAAS;AAEvD,cAAM,mBAAmB,QACvB,4BAAa,kBAAiB,MAAM,cAAc,CAAC,MAAM,OAC3D;AAEA,cAAM,SAAS,6BACb,SACA,oBACA,cACA,mBACI,MAAM;AAEJ,qBAAW,MAAM;AACf,4BAAgB;AAAA,cACd,SAAS;AAAA,YACX,CAAC;AAAA,UACH,GAAG,EAAE;AAAA,QACP,IACA,MACN;AAEA,kBAAU,MAAM;AAAA,MAClB;AAEA,UAAI,MAAM,QAAQ,UAAa,aAAa,QAAW;AACrD,cAAM,EAAE,UAAU,KAAK,WAAW;AAClC,YAAI,YAAY,MAAM;AACpB,oBAAU,WAAW;AAAA,QACvB;AACA,YAAI,OAAO,MAAM;AACf,oBAAU,MAAM;AAAA,QAClB;AACA,YAAI,OAAO,WAAW,UAAU;AAC9B,oBAAU,SAAS,OAAO,OAAO,CAAC,MAAM,MAAM,MAAM,SAAS;AAAA,QAC/D;AAAA,MACF;AAIA,YAAM,aAAa,aAAa,SAAY,YAAY;AACxD,YAAM,OAAO,UAAU;AACvB,UAAI,eAAe,OAAO;AACxB,kBAAU,WAAW;AAAA,MACvB;AACA,UAEE,gBAAgB,OAChB,gBAAgB,YAChB,gBAAgB,WAChB,gBAAgB,YAChB,gBAAgB,YAChB;AACA,YAAI,eAAe,SAAS,0BAA0B,MAAM;AAC1D,oBAAU,WAAW;AAAA,QACvB;AAAA,MACF,WAEE,SAAS,YACT,SAAS,cACT,SAAS,UACT,SAAS,WACT,SAAS,aACT,SAAS,UACT;AACA,YAAI,eAAe,OAAO;AACxB,oBAAU,WAAW;AAAA,QACvB;AAAA,MACF;AAEA,UAAI,eAAe,MAAM;AACvB,kBAAU,WAAW;AAAA,MACvB;AAAA,IACF,OAAO;AACL,kBAAY;AACZ,UAAI,cAAc;AAEhB,kBAAU,MAAM;AAAA,MAClB;AAAA,IACF;AAEA,QAAI,QAAQ,IAAI,aAAa,iBAAiB,CAAC,UAAU,uBAAO;AAC9D,4BAAS,QAAQ,MAAM,QAAQ,EAAE,QAAQ,CAAC,SAAS;AACjD,YAAI,OAAO,SAAS,UAAU;AAE5B,kBAAQ,MAAM,yBAAyB,kDAAkD;AAAA,QAC3F;AAAA,MACF,CAAC;AAAA,IACH;AAEA,QAAI,CAAC,uBAAO;AACV,kCAAU,MAAM;AACd,eAAO,MAAM;AACX,mBAAS,OAAO,OAAO;AAAA,QACzB;AAAA,MACF,GAAG,CAAC,CAAC;AAAA,IACP;AAEA,QAAI;AAEJ,UAAM,kBAAkB,MAAM,YAAY,MAAM,UAAU,QAAQ;AAElE,QAAI,mBAAmB,sBAAsB,CAAC,mBAAmB;AAC/D,eAAS;AAAA,QACP,GAAG;AAAA,QACH,GAAI,mBAAmB;AAAA,QACvB,GAAG;AAAA,MACL;AAAA,IACF,OAAO;AACL,eAAS;AAAA,QACP,wBAAQ,OAAO,0BAA2B,wBAAwB,OAAqB;AAAA,QACvF,mBAAmB;AAAA,QACnB;AAAA,MACF;AACA,UAAI,CAAC,mBAAmB,oBAAoB;AAC1C,cAAM,cAAc,mBAAmB;AACvC,SAAC,MAAM,WAAW,kBAAkB,QAAQ,aAAa,SAAS,YAAY;AAC9E,cAAM,SACJ,kBAAkB,QAAQ,aAAa,SAAS,cAAc,iBAAiB;AACjF,cAAM,SACJ,kBAAkB,QAAQ,aAAa,SAAS,cAAc,iBAAiB;AACjF,cAAM,SACJ,kBAAkB,QAAQ,aAAa,SAAS,cAAc,iBAAiB;AAAA,MACnF;AAEA,UAAI,mBAAmB;AACrB,cAAM,OAAO,CAAC;AACd,mBAAW,UAAS,QAAQ;AAC1B,cAAI,QAAO;AACT,mBAAO,OAAO,MAAM,MAAK;AAAA,UAC3B;AAAA,QACF;AAEA,eAAO,OAAO,YAAY,OAAO,IAAI;AAAA,MACvC;AAAA,IACF;AAEA,QAAI,QAAQ,IAAI,mBAAmB,OAAO;AACxC,UAAI,aAAa,SACb,YAAY,cAAc,aAAa,aAAa,aACpD;AACJ,UAAI,cAAc,WAAW,OAAO,KAAK;AACvC,qBAAa,WAAW,MAAM,CAAC;AAAA,MACjC;AAEA,YAAM,YAAY;AAAA,QAChB,gBAAgB,qBAAqB;AAAA,QACrC,aAAa,QAAQ,eAAe;AAAA,QACpC,MAAM;AAAA,QACN,aAAa,OAAO,OAAO,UAAU,EAAE,KAAK,GAAG,IAAI;AAAA,MACrD;AAEA,YAAM,YAAY,UAAU,KAAK,GAAG;AACpC,YAAM,SAAQ,mBAAmB,YAAY;AAG7C,YAAM,2BAA2B,MAAM,aAAa;AAEpD,UAAI,aAAa,oBAAoB,0BAA0B;AAC7D,kBAAU,UAAU;AAAA,UAClB,GAAG,UAAU;AAAA,UACb;AAAA,UACA,IAAI,MAAM;AAAA,QACZ;AACA,YAAI,QAAQ,IAAI,aAAa,eAAe;AAE1C,iBAAO,KAAK,SAAS,EAAE,QAAQ,CAAC,QAAQ;AACtC,gBAAI,IAAI,WAAW,OAAO,GAAG;AAC3B,wBAAU,QAAQ,IAAI,QAAQ,SAAS,EAAE,KAAK,UAAU;AACxD,qBAAO,UAAU;AAAA,YACnB;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF,OAAO;AACL,kBAAU,YAAY;AAAA,MACxB;AAEA,gBAAU,QAAQ;AAAA,IACpB,OAAO;AACL,gBAAU,QAAQ;AAAA,IACpB;AAGA,UAAM,iBAAiB,yDAAoB;AAC3C,UAAM,cAAc,CAAC,CACnB,qCAAS,eACT,kDAAgB,eAChB,WACA,cACA,aACA;AAGF,UAAM,cAAc;AACpB,UAAM,cACJ,eACA,CAAC,CAAG,YAAW,QAAQ,cAAe,aAAa,cAAc,gBAAgB;AAEnF,UAAM,qBAAqB,CAAC,mBAAmB,CAAC;AAChD,UAAM,WAAW,qBAAqB,YAAY;AAClD,UAAM,aAAa,qBAAqB,cAAc;AACtD,UAAM,cAAc,qBAAqB,eAAe;AAGxD,UAAM,eACJ,CAAC,WACA,gBACC,eACA,gBAAgB,SAChB,aAAa,SACb,eAAe,SACf,gBAAgB,SACf,yBACE,iBAAgB,SACf,eAAe,SACf,gBAAgB,SAChB,kBAAkB,SAClB,kBAAkB;AAE1B,UAAM,UAAU,8BAAY,MAAM;AAChC,sBAAgB;AAAA,QACd,OAAO;AAAA,QACP,SAAS;AAAA,MACX,CAAC;AAAA,IACH,GAAG,CAAC,CAAC;AAEL,UAAM,SACJ,gBAAgB,CAAC,wBACb;AAAA,MACE,CAAC,cAAc,cACX,CAAC,MAAM;AACL,gBAAQ;AACR,iDAAa;AACb,+CAAY;AAAA,MACd,IACA;AAAA,MACJ,GAAI,eAAe;AAAA,QACjB,cAAc,cACV,CAAC,MAAM;AACL,gBAAM,OAA8B,CAAC;AACrC,cAAI,aAAa;AACf,iBAAK,QAAQ;AAAA,UACf;AACA,cAAI,MAAM,SAAS;AACjB,iBAAK,QAAQ;AAAA,UACf;AACA,cAAI,OAAO,KAAK,IAAI,EAAE,QAAQ;AAC5B,4BAAgB,IAAI;AAAA,UACtB;AACA,iDAAY;AACZ,uDAAe;AAAA,QACjB,IACA;AAAA,QACJ,cAAc,cACV,CAAC,MAAM;AACL,gBAAM,OAA8B,CAAC;AACrC,mBAAS,IAAI,OAAO;AACpB,cAAI,aAAa;AACf,iBAAK,QAAQ;AAAA,UACf;AACA,cAAI,MAAM,SAAS;AACjB,iBAAK,QAAQ;AACb,iBAAK,UAAU;AAAA,UACjB;AACA,cAAI,OAAO,KAAK,IAAI,EAAE,QAAQ;AAC5B,4BAAgB,IAAI;AAAA,UACtB;AACA,mDAAa;AACb,uDAAe;AAAA,QACjB,IACA;AAAA,MACN;AAAA,MACA,CAAC,aAAa,cACV,CAAC,MAAM;AACL,wBAAgB;AAAA,UACd,OAAO;AAAA,UACP,SAAS;AAAA,UACT,OAAO;AAAA,QACT,CAAC;AACD,+CAAY;AACZ,mDAAc;AACd,YAAI,uBAAO;AACT,mBAAS,IAAI,OAAO;AAAA,QACtB;AAAA,MACF,IACA;AAAA,MACJ,CAAC,WAAW,cACR,CAAC,MAAM;AACL,gBAAQ;AACR,2CAAU;AACV,2CAAU;AAAA,MACZ,IACA;AAAA,MAGJ,GAAI,CAAC,yBAAS;AAAA,QACZ,YAAY,CAAC,MAAM;AAAA,QACnB,UACE,MAAM,aAAa,OAAO,MAAM,WAAW,YAAM,uBAAN,mBAA0B;AAAA,QACvE,SAAS,MAAM;AAAA,QACf,gBAAgB,MAAM;AAAA,QACtB,cAAc,MAAM;AAAA,QACpB,eAAe,MAAM;AAAA,QACrB,WAAW,UAAU,aAAa;AAAA,QAClC,kBAAkB;AAAA,MACpB;AAAA,IACF,IACA;AAEN,QAAI,QAAQ;AAGZ,QAAI,UAAU,QAAQ;AACpB,iBAAW,OAAO,4BAAY;AAC5B,YAAI,CAAC,2BAAW;AAAM;AACtB,YAAI,MAAM,QAAQ,MAAM,KAAK,UAAU,QAAW;AAChD,kBAAQ,MAAM,KAAK;AAAA,QACrB;AAAA,MACF;AAAA,IACF;AAEA,UAAM,eAAe,qCAAgB,KAAK;AAE1C,UAAM,iCAAiC,QACrC,gBAAgB,gBAAgB,aAAa,cAC/C;AAEA,UAAM,4BACJ,kCAAmC,gBAAgB,aAAa;AAElE,UAAM,WACJ,CAAC,YAAY,UACT,WACA,0CACE,eAAe;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW,MAAM,kBAAkB;AAAA,MACnC;AAAA,IACF,CAAC,GAED,4BAA4B,eAAe,QAC3C,8BACF;AAEN,QAAI;AAEJ,QAAI,SAAS;AACX,oBAAc;AACd,kBAAY;AAAA,QACV,GAAG;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAGA,QAAI,CAAC,yBAAS,uBAAO;AAEnB,YAAM,CAAC,kBAAkB,sCACvB,SACI;AAAA,QACE;AAAA,QACA,GAAI,WAAW;AAAA,UACb;AAAA,QACF;AAAA,QACA,YAAY,OAAO;AAAA,QACnB,WAAW,OAAO;AAAA,QAClB,SAAS,OAAO;AAAA,MAClB,IACA;AAAA,QACE,UAAU;AAAA,MACZ,CACN;AACA,UAAI,QAAQ;AACV,YAAI,oBAAoB;AACtB,iBAAO,OAAO,WAAW,cAAc;AAAA,QACzC,OAAO;AACL,iBAAO,OAAO,WAAW,MAAM;AAAA,QACjC;AAAA,MACF;AAAA,IACF;AAGA,QAAI,QAAQ,IAAI,mBAAmB,UAAU;AAE3C,YAAM,cAAc,CAAC,CAClB,YAAW,QAAQ,cACnB,kBAAkB,eAAe;AAEpC,UAAI,aAAa;AACf,kBAAU,UAAU,4BAAW,UAAU,SAAS,MAAM;AACtD,0BAAgB,EAAE,OAAO,KAAK,CAAC;AAAA,QACjC,CAAC;AACD,kBAAU,SAAS,4BAAW,UAAU,QAAQ,MAAM;AACpD,0BAAgB,EAAE,OAAO,MAAM,CAAC;AAAA,QAClC,CAAC;AAAA,MACH;AAIA,YAAM,eAAe,yCAAgB,MAAM;AAC3C,UAAI,eAAe,QAAQ;AACzB,cAAM,8BAA8B;AAAA,UAClC,SAAS;AAAA,QACX;AACA,YAAI,SAAS;AACX,oBAAU,UAAU;AAAA,QACtB;AACA,mBAAW,OAAO,cAAc;AAC9B,gBAAM,KAAK,MAAM;AACjB,gBAAM,MAAM,aAAa;AACzB,oBAAU,OACR,MAAM,CAAC,4BAA4B,OAAO,yCAAqB,IAAI,GAAG,IAAI;AAAA,QAC9E;AAAA,MACF;AAAA,IACF;AAEA,cAAU,gCAAc,aAAa,WAAW,QAAQ;AAExD,QAAI,QAAQ,IAAI,mBAAmB,OAAO;AAExC,YAAM,oBAAoB,cAAc,OAAO,gBAAgB;AAC/D,YAAM,+BACJ,CAAC,CAAC,MAAM,aACR,qBACA,kDAAqB,OAAO,eAAe,MAAM;AACnD,YAAM,sBAAsB,QAAQ,UAAU,qBAAK,KAAK;AAExD,UAAI,uBAAuB,8BAA8B;AACvD,cAAM,iBAAiB,+BAA+B,GAAG,MAAM,cAAc;AAC7E,cAAM,iBAAiB,sBAAsB,gBAAgB;AAC7D,kBACE,mDAAC;AAAA,UACC,WAAW,GAAG,kBAAkB;AAAA,UAChC,OAAO;AAAA,YACL,SAAS;AAAA,UACX;AAAA,UACC,GAAI,UACH,uBAAuB;AAAA,YACrB,cAAc,OAAO;AAAA,YACrB,cAAc,OAAO;AAAA,UACvB;AAAA,WAED,OACH;AAAA,MAEJ;AAAA,IACF;AAEA,QAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,UAAI,MAAM,UAAU;AAClB,cAAM,WAAU,OAAO,gBAAgB,WAAW,cAAc;AAEhE,gBAAQ,eAAe,WAAW,0BAAyB,SAAS;AACpE,mBAAW,OAAO,WAAW;AAE3B,kBAAQ,IAAI,KAAK,UAAU,IAAI;AAAA,QACjC;AAEA,gBAAQ,IAAI,YAAY,OAAO;AAE/B,gBAAQ,SAAS;AACjB,YAAI,OAAO,WAAW,aAAa;AAGjC,kBAAQ,IAAI,EAAE,OAAO,2BAA2B,qBAAqB,WAAW,aAAa,iBAAiB,oBAAoB,iBAAiB,cAAc,YAAM,cAAN,mBAAiB,MAAM,MAAM,eAAe,gBAAU,cAAV,mBAAqB,MAAM,MAAM,QAAQ,cAAc,QAAQ,SAAS,SAAS,UAAU,oBAAoB,cAAc,WAAW,MAAM,WAAW,OAAO,oBAAoB,oBAAoB,GAAI,OAAO,WAAW,cAAc,EAAE,OAAO,gBAAiB,MAAM,WAAW,cAAc,eAAe,QAAQ,oBAAoB,mBAAmB,YAAY,OAAO,YAAY,OAAO,QAAQ,UAAU,EAAE,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,4CAAgB,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,KAAM,CAAC;AAAA,QACnqB;AAEA,gBAAQ,SAAS;AAAA,MACnB;AAAA,IACF;AAEA,WAAO;AAAA,EACT,CAAC;AAED,MAAI,aAAa,eAAe;AAC9B,cAAU,cAAc,aAAa;AAAA,EACvC;AAIA,sCAAiB,CAAC,SAAS;AAGzB,QAAI,QAAQ,IAAI,cAAc;AAAa;AAE3C,oBAAgB;AAGhB,oBAAgB,cAAc,aAAa;AAE3C,QAAI,cAAc,YAAY;AAC5B,qBAAe,CAAC,CAAC,cAAc,WAAW;AAC1C,qBAAe,cAAc,WAAW;AACxC,qBAAe,cAAc,WAAW;AAAA,IAC1C;AAEA,mBACE,gBACA,oDAAoB,KAAK,OAAO,KAAK,gBAAgB,OAAO,KAAK,KAAK,MAAM,EAAE,GAAG;AAGnF,aAAS,6BAAU;AAEnB,QAAI,iBAAiB,aAAa,gBAAgB,CAAC;AAKnD,UAAM,cAAc,CAAC,GAAI,aAAa,eAAe,CAAC,GAAI,aAAa,aAAa;AAEpF,QAAI,OAAO,gBAAgB,eAAe,aAAa,eAAe;AACpE,uBAAiB,wBACf,aAAa,eACb,gBACA,OAAO,cACP,aACA,IACF;AAAA,IACF;AAEA,UAAM,QAAQ,OAAO,eAAe,WAAW;AAE/C,QAAI,QAAQ,IAAI,aAAa,iBAAiB,UAAU,SAAS;AAE/D;AAAA,IACF;AAGA,UAAM,CAAC,aAAa,oBAAoB,kCAAW,gBAAgB,CAAC,GAAG,IAAI;AAE3E,yBAAqB,6CACnB,aACA,cACA,cACA;AAAA,MACE,SAAS;AAAA,MACT,OAAO;AAAA,MACP,OAAO;AAAA,MACP,SAAS;AAAA,MACT,OAAO;AAAA,MACP,oBAAoB;AAAA,MACpB,qBAAqB;AAAA,IACvB,GACA,QACA,QACA,KACF;AAKA,UAAM,CAAC,WAAU,sBAAsB,kCACrC,UAAU,cACV,mBAAmB,WACnB,IAEF;AAGA,uBAAmB,aAAa;AAAA,MAC9B,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG,mBAAmB;AAAA,IACxB;AAEA,yBAAqB,CAAC;AAEtB,UAAM,eAAc,aAAa,eAAe;AAGhD,QAAI,CAAC,uBAAO;AACV,iBAAW,OAAO,aAAa,cAAc;AAC3C,cAAM,MAAM,aAAa,aAAa;AACtC,YAAI,+BAAgB;AAAM;AAC1B,YAAK,OAAO,QAAQ,YAAY,IAAI,OAAO,OAAQ,CAAC,aAAY,MAAM;AACpE,oBAAS,OAAO;AAAA,QAClB,OAAO;AACL,6BAAmB,OAAO;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AAEA,8BAA0B,+BAAW,OAAO;AAAA,MAC1C,MAAM;AAAA,IACR,CAAC;AAED,QAAI,OAAO,KAAK,SAAQ,EAAE,QAAQ;AAChC,4BAAsB;AAAA,IACxB;AAGA,QAAI,QAAQ,IAAI,aAAa,iBAAiB,OAAO;AACnD,UAAI,QAAQ,IAAI,cAAc,aAAa;AAEzC,gBAAQ,IAAI,cAAO,aAAa,iBAAiB,gBAAgB;AAAA,UAC/D;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF,CAAC;AAED,MAAI,MAA4D;AAEhE,MAAI,SAAS,MAAM;AACjB,UAAM,uBAAK,GAAG;AAAA,EAChB;AAEA,MAAI,eAAe;AAAA,IACjB,aAAa,aAAa,eAAe;AAAA,IACzC,GAAG;AAAA,EACL;AAGA,MAAI,cAAc,CAAC,WAAgB,SAAiC;AAClE,cAAU,eAAe,kDACvB;AAAA,MACE;AAAA,MACA,GAAG;AAAA,MACH,cAAc;AAAA,MACd,eAAe;AAAA,MACf,cAAc;AAAA,QACZ,GAAG,UAAU;AAAA,QACb,GAAG,6BAAM;AAAA,MACX;AAAA,IACF,GACA,GACF;AACA,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAGO,MAAM,WAAW,CAAC,UAA8B;AACrD,SAAO,MAAM;AACf;AACA,SAAS,gBAAgB;AAKlB,MAAM,SAAS,gBAA6B;AAAA,EACjD,MAAM;AAAA,EACN,eAAe;AAAA,EACf;AAAA,EACA,cAAc;AAAA,IACZ,GAAG;AAAA,IAEH,KAAK;AAAA,IACL,MAAM;AAAA,EACR;AAAA,EACA,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,WAAW,CAAC,MAAM,EAAE,aAAa;AAC/B,eAAO,QAAQ,OAAO,UAAU;AAChC,cAAM,SAAS,OAAO,MAAM,SAAS;AACrC,eAAO;AAAA,UACL,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,UAAU;AAAA,UACV,WAAW;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,IAEA,MAAM;AAAA,MACJ,MAAM;AAAA,QACJ,UAAU;AAAA,MACZ;AAAA,IACF;AAAA,IAEA,WAAW;AAAA,MACT,YAAY;AAAA,QACV,QAAQ;AAAA,QACR,WAAW;AAAA,MACb;AAAA,MACA,UAAU;AAAA,QACR,OAAO;AAAA,QACP,UAAU;AAAA,MACZ;AAAA,MACA,MAAM,CAAC;AAAA,IACT;AAAA,EACF;AAAA,EAEA,iBAAiB;AAAA,IACf,WAAW;AAAA,EACb;AACF,CAAC;AAWM,wBAAwB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,GACsB;AACtB,QAAM,WAAW,CAAC,CAAE,UAAS;AAC7B,QAAM,eAAe,CAAE,eAAc,UAAa,cAAc;AAChE,MAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,UAAU;AAC3C,WAAO;AAAA,EACT;AACA,QAAM,eAAe,sBAAS,QAAQ,QAAQ;AAC9C,MAAI,aAAa,UAAU,KAAK,CAAC,UAAU;AACzC,WAAO;AAAA,EACT;AACA,QAAM,QAA2B,CAAC;AAClC,aAAW,CAAC,OAAO,UAAU,aAAa,QAAQ,GAAG;AACnD,UAAM,UACJ,UAAU,QAAQ,UAAU,UAAc,MAAM,QAAQ,KAAK,KAAK,MAAM,WAAW;AAGrF,QAAI,WAAW,CAAC,SAAU,MAAM,UAAU,CAAC,UAAW;AACpD,YAAM,KAAK,KAAK;AAAA,IAClB,OAAO;AACL,YAAM,KACJ,mDAAC;AAAA,QAAS,KAAK;AAAA,SAAQ,WAAW,mDAAC,oBAAc,KAAM,IAAkB,KAAM,CACjF;AAAA,IACF;AAGA,QAAI,WAAW,KAAK,KAAK,UAAU,GAAG;AACpC;AAAA,IACF;AAGA,QAAI,UAAU;AACZ;AAAA,IACF;AAEA,UAAM,OAAO,aAAa,QAAQ;AAElC,QAAI,QAAQ,CAAC,WAAW,IAAI,GAAG;AAC7B,UAAI,WAAW;AACb,YAAI,UAAU;AACZ,gBAAM,KACJ,aAAa;AAAA,YACX,KAAK,IAAI;AAAA,YACT;AAAA,YACA;AAAA,YACA;AAAA,UACF,CAAC,CACH;AAAA,QACF;AACA,cAAM,KACJ,qBAAM,eAAe,SAAS,IAC1B,qBAAM,aAAa,WAAW,EAAE,KAAK,OAAO,QAAQ,CAAC,IACrD,SACN;AACA,YAAI,UAAU;AACZ,gBAAM,KACJ,aAAa;AAAA,YACX,KAAK,IAAI;AAAA,YACT;AAAA,YACA;AAAA,YACA;AAAA,UACF,CAAC,CACH;AAAA,QACF;AAAA,MACF,OAAO;AACL,cAAM,KACJ,aAAa;AAAA,UACX,KAAK,IAAI;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,QACF,CAAC,CACH;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAIA,sBAAsB,EAAE,KAAK,WAAW,OAAO,aAAgC;AAC7E,SACE,mDAAC;AAAA,IACC;AAAA,IACA,MAAM;AAAA,IACN;AAAA,IACC,GAAI,aAAa;AAAA,MAChB,MAAM;AAAA,IACR;AAAA,GACF;AAEJ;AAEA,oBAAoB,OAAwB;AA5zC5C;AA8zCE,SAAO,sCAAQ,YAAR,mBAAkB,wBAAuB,sCAAQ,YAAR,mBAAkB;AACpE;AAEA,sBAAsB,OAA2B;AAC/C,SACE,mDAAC;AAAA,IAAK,eAAc;AAAA,IAAW,OAAO,+BAAW;AAAA,KAC9C,MAAM,QACT;AAEJ;AASO,0BAA0B,WAA2C;AAC1E,SAAO,MAAM,QAAQ,SAAS,IAAI,UAAU,KAAK,GAAG,IAAI;AAC1D;AAEO,MAAM,6BAA6B;AAAA,EACxC,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,aAAa;AAAA,EACb,aAAa;AAAA,EACb,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,MAAM;AACR;AAEA,2BACE,QACA,gBACA,SACA,MACA,QAAQ,OACR;AAEA,QAAM,cAAc,QAAQ;AAC5B,QAAM,mBAAmB,yBAAS,SAAS,gBAAgB,SAAS;AACpE,QAAM,qBAAqB,eAAe;AAC1C,QAAM,QAAQ,qBAAqB,EAAE,GAAG,oBAAoB,GAAG,YAAY,IAAI;AAC/E,MAAI,OAAO;AACT,WAAO,KAAK,oBAAoB,CAAC,QAAQ,EAAE,CAAC,OAAO,MAAM,IAAI,KAAK;AAAA,EACpE;AACF;AAEA,MAAM,eAAe,oBAAI,IAAI;AAE7B,iCACE,MACA,OACA,gBACA,aACA,MACA;AACA,QAAM,MAAM,YAAY;AACxB,MAAI;AAEJ,WAAS,IAAI,GAAG,IAAI,KAAK,KAAK;AAC5B,UAAM,IAAI,YAAY;AACtB,QAAI,CAAC;AAAG;AACR,QAAI,aAAa,IAAI,CAAC,GAAG;AACvB,aAAO,aAAa,IAAI,CAAC;AACzB;AAAA,IACF;AACA,UAAM,SAAQ,eAAe;AAC7B,QAAI,CAAC,QAAO;AACV,UAAI,MAAM;AACR,qBAAa,IAAI,GAAG,IAAI;AAAA,MAC1B;AACA;AAAA,IACF;AACA,WAAO,kCAAW,QAAQ,CAAC,GAAG,QAAO,OAAO,KAAK,iBAAiB,EAAE;AACpE,iBAAa,IAAI,GAAG,IAAI;AAAA,EAC1B;AAGA,QAAM,oBAAoB,aAAa,IAAI,IAAI;AAC/C,MAAI,mBAAmB;AACrB,WAAO,kCAAW,OAAO,mBAAmB,OAAO,KAAK,iBAAiB,EAAE;AAAA,EAC7E;AACA,SAAO;AACT;AAEA,MAAM,WAAW;AAAA,EACf,MAAM;AAAA,EACN,OAAO;AAAA,EACP,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,MAAM;AAAA,EACN,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,SAAS;AACX;AAEA,+BAA+B,SAAoB,SAA2C;AAC5F,aAAW,UAAU,SAAS;AAC5B,QAAI,CAAC;AAAQ;AACb,eAAW,OAAO,QAAQ;AACxB,YAAM,MAAM,OAAO;AAEnB,UAAI,QAAQ,aAAa;AACvB,YAAI,OAAO,QAAQ,UAAU;AAC3B;AAAA,QACF;AACA,mBAAW,KAAK,KAAK;AACnB,gBAAM,OAAO,OAAO,KAAK,CAAC,EAAE;AAC5B,gBAAM,aAAa,SAAS;AAC5B,gBAAM,cAAc,EAAE,CAAC,OAAO,WAAW;AACzC,cAAI,CAAC,KAAK,WAAW;AACnB,iBAAK,YAAY,CAAC,WAAW;AAAA,UAC/B,OAAO;AACL,gBAAI,CAAC,KAAK,UAAU,KAAK,CAAC,MAAM,EAAE,KAAK,GAAG;AACxC,mBAAK,UAAU,KAAK,WAAW;AAAA,YACjC;AAAA,UACF;AAAA,QACF;AAAA,MACF,OAAO;AACL,YAAI,CAAE,QAAO,OAAO;AAClB,eAAK,OAAO,SAAS;AAAA,QACvB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,eAAe,MAAiB,MAAiB;AAC/C,MAAI,CAAC,KAAK,aAAa,CAAC,KAAK,WAAW;AACtC,WAAO,OAAO,MAAM,IAAI;AACxB;AAAA,EACF;AACA,QAAM,EAAE,cAAc,SAAS;AAC/B,SAAO,OAAO,MAAM,IAAI;AACxB,aAAW,KAAK,WAAW;AACzB,UAAM,MAAM,OAAO,KAAK,CAAC,EAAE;AAC3B,UAAM,WAAW,KAAK,UAAU,KAAK,CAAC,MAAM,OAAO,CAAC;AACpD,QAAI,UAAU;AACZ,eAAS,OAAO,EAAE;AAAA,IACpB,OAAO;AACL,WAAK,UAAU,KAAK,CAAC;AAAA,IACvB;AAAA,EACF;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|