react-native-better-html 1.0.7 → 1.0.8
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/index.d.mts +4 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +12 -3
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +12 -3
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -269,6 +269,8 @@ type ScreenHolderProps = {
|
|
|
269
269
|
/** @default false */
|
|
270
270
|
keepFooterOnKeyboardOpened?: boolean;
|
|
271
271
|
keyboardVerticalOffset?: number;
|
|
272
|
+
/** @default false */
|
|
273
|
+
withNoHeader?: boolean;
|
|
272
274
|
children?: React.ReactNode;
|
|
273
275
|
};
|
|
274
276
|
type ScreenHolderComponentType = {
|
|
@@ -283,6 +285,8 @@ type FooterProps = {
|
|
|
283
285
|
backgroundColor?: ViewProps["backgroundColor"];
|
|
284
286
|
/** @default false */
|
|
285
287
|
insideBottomSafeArea?: boolean;
|
|
288
|
+
/** @default false */
|
|
289
|
+
withNoHeader?: boolean;
|
|
286
290
|
children?: React.ReactNode;
|
|
287
291
|
};
|
|
288
292
|
declare const ScreenHolder: typeof ScreenHolderComponent & {
|
package/dist/index.d.ts
CHANGED
|
@@ -269,6 +269,8 @@ type ScreenHolderProps = {
|
|
|
269
269
|
/** @default false */
|
|
270
270
|
keepFooterOnKeyboardOpened?: boolean;
|
|
271
271
|
keyboardVerticalOffset?: number;
|
|
272
|
+
/** @default false */
|
|
273
|
+
withNoHeader?: boolean;
|
|
272
274
|
children?: React.ReactNode;
|
|
273
275
|
};
|
|
274
276
|
type ScreenHolderComponentType = {
|
|
@@ -283,6 +285,8 @@ type FooterProps = {
|
|
|
283
285
|
backgroundColor?: ViewProps["backgroundColor"];
|
|
284
286
|
/** @default false */
|
|
285
287
|
insideBottomSafeArea?: boolean;
|
|
288
|
+
/** @default false */
|
|
289
|
+
withNoHeader?: boolean;
|
|
286
290
|
children?: React.ReactNode;
|
|
287
291
|
};
|
|
288
292
|
declare const ScreenHolder: typeof ScreenHolderComponent & {
|
package/dist/index.js
CHANGED
|
@@ -1030,6 +1030,7 @@ var ScreenHolderComponent = ({
|
|
|
1030
1030
|
footer,
|
|
1031
1031
|
keepFooterOnKeyboardOpened,
|
|
1032
1032
|
keyboardVerticalOffset,
|
|
1033
|
+
withNoHeader,
|
|
1033
1034
|
children
|
|
1034
1035
|
}) => {
|
|
1035
1036
|
const theme2 = (0, import_react_better_core7.useTheme)();
|
|
@@ -1065,7 +1066,7 @@ var ScreenHolderComponent = ({
|
|
|
1065
1066
|
import_react_native6.KeyboardAvoidingView,
|
|
1066
1067
|
{
|
|
1067
1068
|
style: keyboardAvoidingViewStyle,
|
|
1068
|
-
keyboardVerticalOffset: keyboardVerticalOffset ?? (keepFooterOnKeyboardOpened ? import_react_native6.Platform.OS === "ios" ? device.safeArea.afterCalculations.bottom : theme2.styles.gap : void 0),
|
|
1069
|
+
keyboardVerticalOffset: keyboardVerticalOffset ?? (withNoHeader ? import_react_native6.Platform.OS === "ios" ? 0 : theme2.styles.gap : keepFooterOnKeyboardOpened ? import_react_native6.Platform.OS === "ios" ? device.safeArea.afterCalculations.bottom : theme2.styles.gap : void 0),
|
|
1069
1070
|
behavior: import_react_native6.Platform.OS === "ios" ? "padding" : "height",
|
|
1070
1071
|
children: [
|
|
1071
1072
|
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(View_default, { flex: 1, children: noScroll ? content : /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
@@ -1075,7 +1076,13 @@ var ScreenHolderComponent = ({
|
|
|
1075
1076
|
children: content
|
|
1076
1077
|
}
|
|
1077
1078
|
) }),
|
|
1078
|
-
keepFooterOnKeyboardOpened || (import_react_native6.Platform.OS === "ios" ? !keyboard.willOpen : !keyboard.isOpened) ? footer && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(View_default, { children: footer }) : /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
1079
|
+
keepFooterOnKeyboardOpened || (import_react_native6.Platform.OS === "ios" ? !keyboard.willOpen : !keyboard.isOpened) ? footer && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(View_default, { children: footer }) : !withNoHeader && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
1080
|
+
View_default,
|
|
1081
|
+
{
|
|
1082
|
+
width: "100%",
|
|
1083
|
+
height: device.safeArea.afterCalculations.bottom + (import_react_native6.Platform.OS === "android" ? theme2.styles.gap : 0)
|
|
1084
|
+
}
|
|
1085
|
+
)
|
|
1079
1086
|
]
|
|
1080
1087
|
}
|
|
1081
1088
|
) });
|
|
@@ -1084,17 +1091,19 @@ ScreenHolderComponent.footer = function Footer({
|
|
|
1084
1091
|
noSideSpace,
|
|
1085
1092
|
backgroundColor,
|
|
1086
1093
|
insideBottomSafeArea,
|
|
1094
|
+
withNoHeader,
|
|
1087
1095
|
children
|
|
1088
1096
|
}) {
|
|
1089
1097
|
const theme2 = (0, import_react_better_core7.useTheme)();
|
|
1090
1098
|
const device = useDevice();
|
|
1099
|
+
const keyboard = useKeyboard();
|
|
1091
1100
|
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
1092
1101
|
View_default,
|
|
1093
1102
|
{
|
|
1094
1103
|
backgroundColor: backgroundColor ?? theme2.colors.backgroundBase,
|
|
1095
1104
|
paddingHorizontal: !noSideSpace ? theme2.styles.space : void 0,
|
|
1096
1105
|
paddingTop: theme2.styles.gap,
|
|
1097
|
-
paddingBottom: insideBottomSafeArea ? device.safeArea.afterCalculations.bottom : void 0,
|
|
1106
|
+
paddingBottom: (import_react_native6.Platform.OS === "ios" ? keyboard.willOpen : keyboard.isOpened) && withNoHeader ? theme2.styles.gap : insideBottomSafeArea ? device.safeArea.afterCalculations.bottom : void 0,
|
|
1098
1107
|
children
|
|
1099
1108
|
}
|
|
1100
1109
|
);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/components/BetterComponentsProvider.tsx","../src/constants/app.ts","../src/constants/theme.ts","../src/constants/icons.ts","../src/constants/assets.ts","../src/utils/variableFunctions.ts","../src/utils/hooks.ts","../src/constants/css.ts","../src/utils/asyncStorage.ts","../src/components/View.tsx","../src/components/Text.tsx","../src/components/Button.tsx","../src/components/Animate.tsx","../src/components/Loader.tsx","../src/components/ScreenHolder.tsx","../src/components/Image.tsx","../src/components/InputField.tsx","../src/plugins/asyncStorage.ts"],"sourcesContent":["export {\n useTheme,\n useLoader,\n useLoaderControls,\n countries,\n type OmitProps,\n type ExcludeOptions,\n type PickValue,\n type PartialRecord,\n type DeepPartialRecord,\n type PickAllRequired,\n type AnyOtherString,\n type AssetName,\n type AssetsConfig,\n type Country,\n type IconName,\n type IconsConfig,\n type LoaderName,\n type LoaderConfig,\n type Color,\n type ColorName,\n type ColorTheme,\n type Colors,\n type Styles,\n type Theme,\n type ThemeConfig,\n lightenColor,\n darkenColor,\n saturateColor,\n desaturateColor,\n generateRandomString,\n formatPhoneNumber,\n eventPreventDefault,\n eventStopPropagation,\n eventPreventStop,\n getPluralWord,\n useBooleanState,\n useDebounceState,\n loaderControls,\n colorThemeControls,\n} from \"react-better-core\";\n\nimport BetterComponentsProvider, {\n useBetterComponentsContext,\n type BetterComponentsProviderConfig,\n} from \"./components/BetterComponentsProvider\";\n\nimport { type AppConfig, type BetterComponentsConfig } from \"./types/config\";\nimport { type ComponentMarginProps, type ComponentPaddingProps } from \"./types/components\";\nimport { type PluginName, type BetterComponentsPlugin } from \"./types/plugin\";\n\nimport { pressStrength } from \"./utils/variableFunctions\";\n\nimport { useDevice, useKeyboard } from \"./utils/hooks\";\nimport { generateAsyncStorage } from \"./utils/asyncStorage\";\n\nimport View, { type ViewProps } from \"./components/View\";\nimport Text, { type TextProps } from \"./components/Text\";\nimport Button, { type ButtonProps } from \"./components/Button\";\nimport Loader, { type LoaderProps, type LoaderSize } from \"./components/Loader\";\nimport Animate, { type AnimateViewProps, type AnimateTextProps } from \"./components/Animate\";\nimport ScreenHolder, { type ScreenHolderProps, type FooterProps } from \"./components/ScreenHolder\";\nimport Image, { type ImageProps } from \"./components/Image\";\nimport InputField, { type InputFieldProps } from \"./components/InputField\";\n\nexport * from \"./plugins\";\n\nexport {\n BetterComponentsProvider,\n useBetterComponentsContext as useBetterComponentsContext,\n BetterComponentsProviderConfig,\n\n // Constants\n\n // Types\n AppConfig,\n BetterComponentsConfig as BetterComponentsConfig,\n ComponentMarginProps,\n ComponentPaddingProps,\n PluginName,\n BetterComponentsPlugin,\n\n // Hooks\n useDevice,\n useKeyboard,\n\n // Functions\n\n // Variable Functions\n pressStrength,\n\n // AsyncStorage\n generateAsyncStorage,\n\n // Components\n View,\n ViewProps,\n Text,\n TextProps,\n Button,\n ButtonProps,\n Loader,\n LoaderProps,\n LoaderSize,\n Animate,\n AnimateViewProps,\n AnimateTextProps,\n ScreenHolder,\n ScreenHolderProps,\n FooterProps,\n Image,\n ImageProps,\n InputField,\n InputFieldProps,\n};\n","import { createContext, memo, useContext, useEffect, useMemo } from \"react\";\nimport {\n useBooleanState,\n DeepPartialRecord,\n BetterCoreProvider,\n BetterCoreProviderConfig,\n BetterCoreConfig,\n useBetterCoreContext,\n} from \"react-better-core\";\n\nimport { appConfig } from \"../constants/app\";\nimport { theme } from \"../constants/theme\";\nimport { icons } from \"../constants/icons\";\nimport { assets } from \"../constants/assets\";\n\nimport { BetterComponentsConfig } from \"../types/config\";\nimport { BetterComponentsPlugin, PluginName } from \"../types/plugin\";\n\nexport type BetterComponentsInternalConfig = BetterComponentsConfig & {\n plugins: BetterComponentsPlugin[];\n componentsState: {};\n};\n\nconst betterComponentsContext = createContext<BetterComponentsInternalConfig | undefined>(undefined);\nexport let externalBetterCoreContextValue: BetterCoreConfig | undefined;\nexport let externalBetterComponentsContextValue: BetterComponentsInternalConfig | undefined;\n\nexport const useBetterComponentsContext = (): BetterComponentsConfig & BetterCoreConfig => {\n const coreContext = useBetterCoreContext();\n const context = useContext(betterComponentsContext);\n\n if (context === undefined)\n throw new Error(\n \"`useBetterComponentsContext()` must be used within a `<BetterComponentsProvider>`. Make sure to add one at the root of your component tree.\",\n );\n\n const { plugins, componentsState, ...rest } = context;\n\n return {\n ...coreContext,\n ...rest,\n };\n};\n\nexport const useBetterComponentsContextInternal = (): BetterComponentsInternalConfig => {\n const context = useContext(betterComponentsContext);\n\n if (context === undefined)\n throw new Error(\n \"`useBetterComponentsContextInternal()` must be used within a `<BetterComponentsProvider>`. Make sure to add one at the root of your component tree.\",\n );\n\n return context;\n};\n\nexport const usePlugin = <T extends object>(\n pluginName: PluginName,\n): BetterComponentsPlugin<T> | undefined => {\n const context = useContext(betterComponentsContext);\n\n if (context === undefined) {\n throw new Error(\n \"`usePlugin()` must be used within a `<BetterComponentsProvider>`. Make sure to add one at the root of your component tree.\",\n );\n }\n\n return useMemo(\n () => context.plugins.find((plugin: BetterComponentsPlugin) => plugin.name === pluginName),\n [context.plugins, pluginName],\n ) as any;\n};\n\ntype BetterComponentsProviderInternalContentProps = {\n children?: React.ReactNode;\n};\n\nfunction BetterComponentsProviderInternalContent({ children }: BetterComponentsProviderInternalContentProps) {\n return <>{children}</>;\n}\n\ntype BetterComponentsProviderInternalConfig = DeepPartialRecord<BetterComponentsConfig>;\n\ntype BetterProviderCommonProps = {\n plugins?: BetterComponentsPlugin[];\n children?: React.ReactNode;\n};\n\ntype BetterComponentsProviderInternalProps = BetterProviderCommonProps & {\n config?: BetterComponentsProviderInternalConfig;\n};\n\nfunction BetterComponentsProviderInternal({\n config,\n plugins,\n children,\n}: BetterComponentsProviderInternalProps) {\n const betterCoreContext = useBetterCoreContext();\n\n const [sideMenuIsCollapsed, setSideMenuIsCollapsed] = useBooleanState();\n const [sideMenuIsOpenMobile, setSideMenuIsOpenMobile] = useBooleanState();\n\n const readyConfig = useMemo<BetterComponentsInternalConfig>(\n () => ({\n app: {\n ...appConfig,\n ...config?.app,\n },\n sideMenuIsCollapsed,\n setSideMenuIsCollapsed,\n sideMenuIsOpenMobile,\n setSideMenuIsOpenMobile,\n plugins: plugins ?? [],\n componentsState: {},\n }),\n [config, sideMenuIsCollapsed, sideMenuIsOpenMobile, plugins],\n );\n\n useEffect(() => {\n if (!plugins) return;\n\n plugins.forEach((plugin) => {\n plugin.initialize?.();\n });\n }, []);\n\n externalBetterCoreContextValue = betterCoreContext;\n externalBetterComponentsContextValue = readyConfig;\n\n return (\n <betterComponentsContext.Provider value={readyConfig}>\n <BetterComponentsProviderInternalContent>{children}</BetterComponentsProviderInternalContent>\n </betterComponentsContext.Provider>\n );\n}\n\nexport type BetterComponentsProviderConfig = BetterCoreProviderConfig &\n BetterComponentsProviderInternalConfig;\n\ntype BetterComponentsProviderProps = BetterProviderCommonProps & {\n config?: BetterComponentsProviderConfig;\n};\n\nfunction BetterComponentsProvider({ config, ...props }: BetterComponentsProviderProps) {\n const coreConfig = useMemo<BetterCoreProviderConfig>(\n () => ({\n theme: {\n ...theme,\n ...config?.theme,\n },\n // colorTheme: config?.colorTheme ?? (localStorage.getItem(\"theme\") === \"dark\" ? \"dark\" : \"light\"),\n colorTheme: config?.colorTheme ?? \"light\",\n icons: {\n ...icons,\n ...config?.icons,\n },\n assets: {\n ...assets,\n ...config?.assets,\n },\n loaders: config?.loaders,\n }),\n [config],\n );\n\n const componentsConfig = useMemo<BetterComponentsProviderInternalConfig>(\n () => ({\n app: config?.app,\n }),\n [config],\n );\n\n return (\n <BetterCoreProvider config={coreConfig}>\n <BetterComponentsProviderInternal config={componentsConfig} {...props} />\n </BetterCoreProvider>\n );\n}\n\nexport default memo(BetterComponentsProvider);\n","import { AppConfig } from \"../types/config\";\n\nexport const appConfig: AppConfig = {};\n","import { DeepPartialRecord, ThemeConfig } from \"react-better-core\";\n\nexport const theme: DeepPartialRecord<ThemeConfig> = {};\n","import { IconsConfig } from \"react-better-core\";\n\nexport const icons: Partial<IconsConfig> = {};\n","import { AssetsConfig } from \"react-better-core\";\n\nexport const assets: Partial<AssetsConfig> = {};\n","import { BetterCoreConfig } from \"react-better-core\";\n\nimport {\n BetterComponentsInternalConfig,\n externalBetterCoreContextValue,\n} from \"../components/BetterComponentsProvider\";\n\nexport const checkBetterCoreContextValue = (\n value: BetterCoreConfig | undefined,\n functionsName: string,\n): value is BetterCoreConfig => {\n if (value === undefined) {\n throw new Error(\n `\\`${functionsName}()\\` must be used within a \\`<BetterCoreProvider>\\`. Make sure to add one at the root of your component tree.`,\n );\n }\n\n return value !== undefined;\n};\nexport const checkBetterComponentsContextValue = (\n value: BetterComponentsInternalConfig | undefined,\n functionsName: string,\n): value is BetterComponentsInternalConfig => {\n if (value === undefined) {\n throw new Error(\n `\\`${functionsName}()\\` must be used within a \\`<BetterComponentsProvider>\\`. Make sure to add one at the root of your component tree.`,\n );\n }\n\n return value !== undefined;\n};\n\nexport const pressStrength = (): Record<\"z05\" | \"z1\" | \"z2\" | \"z3\", number> => {\n if (!checkBetterCoreContextValue(externalBetterCoreContextValue, \"pressStrength\")) return undefined as any;\n\n return {\n z05: externalBetterCoreContextValue.colorTheme === \"dark\" ? 0.85 : 0.95,\n z1: externalBetterCoreContextValue.colorTheme === \"dark\" ? 0.6 : 0.8,\n z2: externalBetterCoreContextValue.colorTheme === \"dark\" ? 0.5 : 0.7,\n z3: externalBetterCoreContextValue.colorTheme === \"dark\" ? 0.4 : 0.6,\n };\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport { Dimensions, Keyboard, KeyboardEvent } from \"react-native\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\nimport { useBooleanState, useTheme } from \"react-better-core\";\n\nimport { animateProps, animateTransitionProps, cssProps } from \"../constants/css\";\n\nimport { ComponentStyle } from \"../types/components\";\n\nexport function useDevice() {\n const theme = useTheme();\n const safeAreaInsets = useSafeAreaInsets();\n\n const screenDimensions = Dimensions.get(\"screen\");\n const windowDimensions = Dimensions.get(\"window\");\n const isSmallDevice = windowDimensions.height <= 700;\n\n return {\n safeArea: {\n ...safeAreaInsets,\n /** @description The safe area insets after calculations. Recommended to use this instead of the raw insets. */\n afterCalculations: {\n top: safeAreaInsets.top < 25 ? 32 : safeAreaInsets.top < 40 ? 40 : safeAreaInsets.top,\n bottom:\n (safeAreaInsets.bottom === 0 ? theme.styles.space : safeAreaInsets.bottom) +\n (isSmallDevice ? 0 : theme.styles.space * 2),\n left: safeAreaInsets.left,\n right: safeAreaInsets.right,\n },\n },\n /** @description The dimensions of the device screen. */\n screenDimensions,\n /** @description The dimensions of the app window. */\n windowDimensions,\n /** @description Whether the device is small. */\n isSmallDevice,\n };\n}\n\nexport function useKeyboard() {\n const [keyboardOpened, setKeyboardOpened] = useBooleanState();\n const [keyboardWillOpen, setKeyboardWillOpen] = useBooleanState();\n\n const [keyboardHeight, setKeyboardHeight] = useState<number>(0);\n\n useEffect(() => {\n const keyboardDidShow = (event: KeyboardEvent) => {\n setKeyboardOpened.setTrue();\n setKeyboardHeight(event.endCoordinates.height);\n };\n const keyboardDidHide = () => {\n setKeyboardOpened.setFalse();\n setKeyboardHeight(0);\n };\n\n const willShowSubscription = Keyboard.addListener(\"keyboardWillShow\", setKeyboardWillOpen.setTrue);\n const willHideSubscription = Keyboard.addListener(\"keyboardWillHide\", setKeyboardWillOpen.setFalse);\n const didShowSubscription = Keyboard.addListener(\"keyboardDidShow\", keyboardDidShow);\n const didHideSubscription = Keyboard.addListener(\"keyboardDidHide\", keyboardDidHide);\n\n return () => {\n willShowSubscription.remove();\n willHideSubscription.remove();\n didShowSubscription.remove();\n didHideSubscription.remove();\n };\n }, []);\n\n return {\n isOpened: keyboardOpened,\n willOpen: keyboardWillOpen,\n height: keyboardHeight,\n };\n}\n\nexport function useComponentPropsGrouper<Props extends object = {}>(\n props: ComponentStyle,\n prefix: string,\n): {\n style: ComponentStyle;\n withPrefixStyle: ComponentStyle;\n restProps: Props;\n} {\n return useMemo(() => {\n const style: ComponentStyle = {};\n const withPrefixStyle: ComponentStyle = {};\n const restProps = {} as Props;\n\n for (const key in props) {\n const keyName = key as keyof ComponentStyle;\n\n if (cssProps.has(keyName.toLowerCase())) {\n (style[keyName] as any) = props[keyName];\n } else if (\n keyName.startsWith(prefix) &&\n (cssProps.has(keyName.slice(prefix.length).toLowerCase()) ||\n animateProps.has(keyName.slice(prefix.length).toLowerCase()) ||\n animateTransitionProps.has(keyName.slice(prefix.length).toLowerCase()))\n ) {\n const realKey = `${keyName.slice(prefix.length, prefix.length + 1).toLowerCase()}${keyName.slice(\n prefix.length + 1,\n )}`;\n\n (withPrefixStyle[realKey as keyof ComponentStyle] as any) = props[keyName];\n } else {\n (restProps[keyName as keyof Props] as any) = props[keyName];\n }\n }\n\n return {\n style,\n withPrefixStyle,\n restProps,\n };\n }, [props, prefix]);\n}\n","export const cssProps: Set<string> = new Set([\n \"aligncontent\",\n \"alignitems\",\n \"alignself\",\n \"aspectratio\",\n \"borderbottomwidth\",\n \"borderendwidth\",\n \"borderleftwidth\",\n \"borderrightwidth\",\n \"borderstartwidth\",\n \"bordertopwidth\",\n \"borderwidth\",\n \"bottom\",\n \"boxsizing\",\n \"display\",\n \"end\",\n \"flex\",\n \"flexbasis\",\n \"flexdirection\",\n \"rowgap\",\n \"gap\",\n \"columngap\",\n \"flexgrow\",\n \"flexshrink\",\n \"flexwrap\",\n \"height\",\n \"justifycontent\",\n \"left\",\n \"margin\",\n \"marginbottom\",\n \"marginend\",\n \"marginhorizontal\",\n \"marginleft\",\n \"marginright\",\n \"marginstart\",\n \"margintop\",\n \"marginvertical\",\n \"maxheight\",\n \"maxwidth\",\n \"minheight\",\n \"minwidth\",\n \"overflow\",\n \"padding\",\n \"paddingbottom\",\n \"paddingend\",\n \"paddinghorizontal\",\n \"paddingleft\",\n \"paddingright\",\n \"paddingstart\",\n \"paddingtop\",\n \"paddingvertical\",\n \"position\",\n \"right\",\n \"start\",\n \"top\",\n \"width\",\n \"zindex\",\n \"direction\",\n \"inset\",\n \"insetblock\",\n \"insetblockend\",\n \"insetblockstart\",\n \"insetinline\",\n \"insetinlineend\",\n \"insetinlinestart\",\n \"marginblock\",\n \"marginblockend\",\n \"marginblockstart\",\n \"margininline\",\n \"margininlineend\",\n \"margininlinestart\",\n \"paddingblock\",\n \"paddingblockend\",\n \"paddingblockstart\",\n \"paddinginline\",\n \"paddinginlineend\",\n \"paddinginlinestart\",\n \"shadowcolor\",\n \"shadowoffset\",\n \"shadowopacity\",\n \"shadowradius\",\n \"transform\",\n \"transformorigin\",\n \"transformmatrix\",\n \"rotation\",\n \"scalex\",\n \"scaley\",\n \"translatex\",\n \"translatey\",\n \"backfacevisibility\",\n \"backgroundcolor\",\n \"borderblockcolor\",\n \"borderblockendcolor\",\n \"borderblockstartcolor\",\n \"borderbottomcolor\",\n \"borderbottomendradius\",\n \"borderbottomleftradius\",\n \"borderbottomrightradius\",\n \"borderbottomstartradius\",\n \"bordercolor\",\n \"bordercurve\",\n \"borderendcolor\",\n \"borderendendradius\",\n \"borderendstartradius\",\n \"borderleftcolor\",\n \"borderradius\",\n \"borderrightcolor\",\n \"borderstartcolor\",\n \"borderstartendradius\",\n \"borderstartstartradius\",\n \"borderstyle\",\n \"bordertopcolor\",\n \"bordertopendradius\",\n \"bordertopleftradius\",\n \"bordertoprightradius\",\n \"bordertopstartradius\",\n \"outlinecolor\",\n \"outlineoffset\",\n \"outlinestyle\",\n \"outlinewidth\",\n \"opacity\",\n \"elevation\",\n \"pointerevents\",\n \"isolation\",\n \"cursor\",\n \"boxshadow\",\n \"filter\",\n \"mixblendmode\",\n \"fontvariant\",\n \"textdecorationcolor\",\n \"textdecorationstyle\",\n \"writingdirection\",\n \"textalignvertical\",\n \"verticalalign\",\n \"includefontpadding\",\n \"color\",\n \"fontfamily\",\n \"fontsize\",\n \"fontstyle\",\n \"fontweight\",\n \"letterspacing\",\n \"lineheight\",\n \"textalign\",\n \"textdecorationline\",\n \"textdecorationstyle\",\n \"textdecorationcolor\",\n \"textshadowcolor\",\n \"textshadowoffset\",\n \"textshadowradius\",\n \"texttransform\",\n \"userselect\",\n]);\n\nexport const animateProps: Set<string> = new Set([\n \"x\",\n \"y\",\n \"scale\",\n \"scaleX\",\n \"scaleY\",\n \"skewX\",\n \"skewY\",\n \"perspective\",\n \"rotate\",\n \"rotateX\",\n \"rotateY\",\n \"rotateZ\",\n \"matrix\",\n]);\n\nexport const animateTransitionProps: Set<string> = new Set([\n \"type\",\n \"ease\",\n \"easing\",\n \"duration\",\n \"delay\",\n \"type\",\n \"friction\",\n \"tension\",\n \"speed\",\n \"bounciness\",\n \"stiffness\",\n \"damping\",\n \"mass\",\n \"overshootClamping\",\n \"restDisplacementThreshold\",\n \"restSpeedThreshold\",\n \"velocity\",\n \"loop\",\n]);\n","import NativeAsyncStorage from \"@react-native-async-storage/async-storage\";\n\nexport function generateAsyncStorage<AsyncStorage extends object>(): {\n setItem: <StorageName extends keyof AsyncStorage>(name: StorageName, value: AsyncStorage[StorageName]) => void;\n getItem: <StorageName extends keyof AsyncStorage>(\n name: StorageName,\n ) => Promise<AsyncStorage[StorageName] | undefined>;\n removeItem: (name: keyof AsyncStorage) => void;\n removeAllItems: () => void;\n} {\n return {\n setItem: async (name, value) => {\n if (value) await NativeAsyncStorage.setItem(name.toString(), JSON.stringify(value));\n else await NativeAsyncStorage.removeItem(name.toString());\n },\n getItem: async (name) => {\n const item = await NativeAsyncStorage.getItem(name.toString());\n\n if (item === null) return undefined;\n\n try {\n return JSON.parse(item);\n } catch (error) {\n return undefined;\n }\n },\n removeItem: async (name) => {\n await NativeAsyncStorage.removeItem(name.toString());\n },\n removeAllItems: () => {\n NativeAsyncStorage.clear();\n },\n };\n}\n","import { memo, useMemo } from \"react\";\nimport {\n GestureResponderEvent,\n View as NativeView,\n ViewProps as NativeViewProps,\n ViewStyle as NativeViewStyle,\n Platform,\n TouchableHighlight,\n TouchableNativeFeedback,\n TouchableOpacity,\n} from \"react-native\";\nimport { OmitProps, useTheme } from \"react-better-core\";\n\nimport { ComponentStyle } from \"../types/components\";\n\nconst touchableHighlightStyleMoveToContent: (keyof ComponentStyle)[] = [\n \"backgroundColor\",\n \"padding\",\n \"paddingTop\",\n \"paddingBottom\",\n \"paddingLeft\",\n \"paddingRight\",\n \"paddingHorizontal\",\n \"paddingVertical\",\n \"borderWidth\",\n \"borderTopWidth\",\n \"borderBottomWidth\",\n \"borderLeftWidth\",\n \"borderRightWidth\",\n \"borderColor\",\n \"borderTopColor\",\n \"borderBottomColor\",\n \"borderLeftColor\",\n \"borderRightColor\",\n];\n\nconst touchableNativeFeedbackStyleMoveToHolder: (keyof ComponentStyle)[] = [\n \"width\",\n \"height\",\n \"margin\",\n \"marginTop\",\n \"marginBottom\",\n \"marginLeft\",\n \"marginRight\",\n \"marginHorizontal\",\n \"marginVertical\",\n];\n\nfunction alphaToHex(alpha: number): string {\n const clamped = Math.min(1, Math.max(0, alpha));\n const value = Math.round(clamped * 255);\n\n return value.toString(16).padStart(2, \"0\");\n}\n\nexport type ViewProps<Value = unknown> = {\n /** @default false */\n isRow?: boolean;\n value?: Value;\n /** @default false */\n disabled?: boolean;\n /** @default \"highlight\" */\n pressType?: \"opacity\" | \"highlight\";\n /** @default 0.8 */\n pressStrength?: number;\n onPress?: (event: GestureResponderEvent) => void;\n onPressIn?: (event: GestureResponderEvent) => void;\n onPressOut?: (event: GestureResponderEvent) => void;\n onLongPress?: (event: GestureResponderEvent) => void;\n onPressWithValue?: (value: Value) => void;\n} & OmitProps<NativeViewProps, \"style\" | \"onBlur\" | \"onFocus\"> &\n ComponentStyle;\n\ntype ViewComponentType = {\n <Value>(props: ViewProps<Value>): React.ReactElement;\n box: <Value>(\n props: ViewProps<Value> & {\n /** @default false */\n withShadow?: boolean;\n },\n ) => React.ReactElement;\n};\n\nconst ViewComponent: ViewComponentType = function View<Value>({\n isRow,\n value,\n disabled,\n pressType = \"highlight\",\n pressStrength = 0.8,\n onPress,\n onPressIn,\n onPressOut,\n onLongPress,\n onPressWithValue,\n children,\n ...props\n}: ViewProps<Value>) {\n const theme = useTheme();\n\n const style = useMemo<NativeViewStyle>(\n () => ({\n flexDirection: isRow ? \"row\" : \"column\",\n ...props,\n ...(props.shadowOffsetWidth !== undefined || props.shadowOffsetHeight !== undefined\n ? {\n shadowOffset: {\n width: props.shadowOffsetWidth ?? 0,\n height: props.shadowOffsetHeight ?? 0,\n },\n }\n : {}),\n }),\n [isRow, props],\n );\n const touchableHighlightStyle = useMemo<NativeViewStyle>(\n () => ({\n ...style,\n ...touchableHighlightStyleMoveToContent.reduce<NativeViewStyle>((previousValue, currentValue) => {\n if (currentValue === \"shadowOffsetWidth\" || currentValue === \"shadowOffsetHeight\")\n previousValue.shadowOffset = undefined;\n else previousValue[currentValue] = undefined;\n\n return previousValue;\n }, {}),\n }),\n [style],\n );\n const touchableHighlightContentProps = useMemo<ViewProps>(\n () =>\n touchableHighlightStyleMoveToContent.reduce<ViewProps>((previousValue, currentValue) => {\n (previousValue[currentValue] as any) = props[currentValue];\n\n return previousValue;\n }, {}),\n [props],\n );\n const touchableNativeFeedbackHolderStyle = useMemo<NativeViewStyle>(\n () =>\n touchableNativeFeedbackStyleMoveToHolder.reduce<ViewProps>((previousValue, currentValue) => {\n (previousValue[currentValue] as any) = props[currentValue];\n\n return previousValue;\n }, {}),\n [props],\n );\n const touchableNativeFeedbackContentStyle = useMemo<ViewProps>(\n () => ({\n ...style,\n ...touchableNativeFeedbackStyleMoveToHolder.reduce<NativeViewStyle>(\n (previousValue, currentValue) => {\n if (currentValue === \"shadowOffsetWidth\" || currentValue === \"shadowOffsetHeight\")\n previousValue.shadowOffset = undefined;\n else previousValue[currentValue] = undefined;\n\n return previousValue;\n },\n {},\n ),\n }),\n [style],\n );\n\n const pressEvents = useMemo(\n () =>\n !disabled\n ? {\n onPress: (event: GestureResponderEvent) => {\n onPress?.(event);\n\n if (value !== undefined) onPressWithValue?.(value);\n },\n onPressIn,\n onPressOut,\n onLongPress,\n }\n : {},\n [disabled, onPress, onPressIn, onPressOut, onLongPress, onPressWithValue, value],\n );\n\n const androidBoxShadow =\n Platform.OS === \"android\"\n ? props.shadowOffsetWidth !== undefined || props.shadowOffsetHeight !== undefined\n ? `${props.shadowOffsetWidth ?? 0}px ${props.shadowOffsetHeight ?? 0}px ${props.shadowRadius}px ${\n props.shadowColor?.toString() ?? \"#000000\"\n }`\n : undefined\n : undefined;\n\n const isPressable = onPress || onPressIn || onPressOut || onLongPress || onPressWithValue;\n\n return isPressable ? (\n pressType === \"opacity\" ? (\n <TouchableOpacity\n style={style}\n activeOpacity={pressStrength}\n boxShadow={androidBoxShadow}\n {...pressEvents}\n {...props}\n >\n {children}\n </TouchableOpacity>\n ) : pressType === \"highlight\" ? (\n Platform.OS === \"ios\" ? (\n <TouchableHighlight\n activeOpacity={pressStrength}\n underlayColor={theme.colors.textPrimary}\n style={touchableHighlightStyle}\n {...pressEvents}\n {...props}\n >\n <ViewComponent\n width=\"100%\"\n borderRadius={props.borderRadius}\n borderTopLeftRadius={props.borderTopLeftRadius}\n borderTopRightRadius={props.borderTopRightRadius}\n borderBottomLeftRadius={props.borderBottomLeftRadius}\n borderBottomRightRadius={props.borderBottomRightRadius}\n {...touchableHighlightContentProps}\n >\n {children}\n </ViewComponent>\n </TouchableHighlight>\n ) : Platform.OS === \"android\" ? (\n <ViewComponent\n {...touchableNativeFeedbackHolderStyle}\n borderRadius={props.borderRadius}\n borderTopLeftRadius={props.borderTopLeftRadius}\n borderTopRightRadius={props.borderTopRightRadius}\n borderBottomLeftRadius={props.borderBottomLeftRadius}\n borderBottomRightRadius={props.borderBottomRightRadius}\n boxShadow={androidBoxShadow}\n overflow=\"hidden\"\n pointerEvents=\"box-none\"\n >\n <TouchableNativeFeedback\n {...pressEvents}\n {...props}\n background={TouchableNativeFeedback.Ripple(\n `${theme.colors.textPrimary}${alphaToHex(1 - pressStrength)}`,\n false,\n )}\n useForeground\n touchSoundDisabled\n >\n <ViewComponent flex={1} {...touchableNativeFeedbackContentStyle}>\n {children}\n </ViewComponent>\n </TouchableNativeFeedback>\n </ViewComponent>\n ) : (\n <></>\n )\n ) : (\n <></>\n )\n ) : (\n <NativeView boxShadow={androidBoxShadow} style={style} {...props}>\n {children}\n </NativeView>\n );\n};\n\nViewComponent.box = function Box({ withShadow, ...props }) {\n const theme = useTheme();\n\n const shadowProps = useMemo<ViewProps>(\n () =>\n withShadow\n ? {\n shadowOpacity: 0.2,\n shadowOffsetHeight: 10,\n shadowRadius: 10,\n shadowColor: Platform.OS === \"android\" ? \"#00000020\" : undefined,\n }\n : {},\n [],\n );\n\n return (\n <ViewComponent\n width=\"100%\"\n backgroundColor={theme.colors.backgroundContent}\n borderWidth={1}\n borderColor={theme.colors.border}\n borderRadius={theme.styles.borderRadius}\n paddingHorizontal={theme.styles.space}\n paddingVertical={theme.styles.gap}\n {...(shadowProps as any)}\n {...props}\n />\n );\n} as ViewComponentType[\"box\"];\n\nconst View = memo(ViewComponent) as any as typeof ViewComponent & {\n box: typeof ViewComponent.box;\n};\n\nView.box = ViewComponent.box;\n\nexport default View;\n","import { memo, useMemo } from \"react\";\nimport { Text as NativeText, TextProps as NativeTextProps, TextStyle as NativeTextStyle } from \"react-native\";\nimport { OmitProps, useTheme } from \"react-better-core\";\n\nimport { ComponentStyle } from \"../types/components\";\n\nexport type TextProps = {} & OmitProps<NativeTextProps, \"style\"> & ComponentStyle<NativeTextStyle>;\n\ntype TextComponentType = {\n (props: TextProps): React.ReactElement;\n title: (props: TextProps) => React.ReactElement;\n subtitle: (props: TextProps) => React.ReactElement;\n body: (props: TextProps) => React.ReactElement;\n caption: (props: TextProps) => React.ReactElement;\n unknown: (props: TextProps) => React.ReactElement;\n};\n\nconst TextComponent: TextComponentType = function Text({ selectionColor, children, ...props }) {\n const theme = useTheme();\n\n const style = useMemo<NativeTextStyle>(\n () => ({\n fontSize: 16,\n color: theme.colors.textPrimary,\n ...props,\n }),\n [theme, props],\n );\n\n return (\n <NativeText selectionColor={selectionColor ?? theme.colors.primary} style={style} {...props}>\n {children}\n </NativeText>\n );\n};\n\nTextComponent.title = function Title(props) {\n return <TextComponent fontSize={32} fontWeight={700} {...props} />;\n} as TextComponentType[`title`];\n\nTextComponent.subtitle = function Subtitle(props) {\n return <TextComponent fontSize={24} fontWeight={700} {...props} />;\n} as TextComponentType[`subtitle`];\n\nTextComponent.body = function Body(props) {\n const theme = useTheme();\n\n return <TextComponent color={theme.colors.textSecondary} {...props} />;\n} as TextComponentType[`body`];\n\nTextComponent.caption = function Caption(props) {\n const theme = useTheme();\n\n return <TextComponent fontSize={14} color={theme.colors.textSecondary} {...props} />;\n} as TextComponentType[`caption`];\n\nTextComponent.unknown = function Unknown(props) {\n const theme = useTheme();\n\n return (\n <TextComponent fontStyle=\"italic\" textAlign=\"center\" color={theme.colors.textSecondary} {...props} />\n );\n} as TextComponentType[`unknown`];\n\nconst Text = memo(TextComponent) as any as typeof TextComponent & {\n title: typeof TextComponent.title;\n subtitle: typeof TextComponent.subtitle;\n body: typeof TextComponent.body;\n caption: typeof TextComponent.caption;\n unknown: typeof TextComponent.unknown;\n};\n\nText.title = TextComponent.title;\nText.subtitle = TextComponent.subtitle;\nText.body = TextComponent.body;\nText.caption = TextComponent.caption;\nText.unknown = TextComponent.unknown;\n\nexport default Text;\n","import { memo } from \"react\";\nimport { ColorValue, Platform } from \"react-native\";\nimport { AnyOtherString, AssetName, IconName, LoaderName, useLoader, useTheme } from \"react-better-core\";\n\nimport { pressStrength } from \"../utils/variableFunctions\";\n\nimport View, { ViewProps } from \"./View\";\nimport Text, { TextProps } from \"./Text\";\nimport Animate from \"./Animate\";\nimport Loader from \"./Loader\";\n\nexport type ButtonProps<Value> = {\n text?: string;\n /** @default 16 */\n textFontSize?: TextProps[\"fontSize\"];\n /** @default 700 */\n textFontWeight?: TextProps[\"fontWeight\"];\n textDecorationLine?: TextProps[\"textDecorationLine\"];\n /** @default \"base\" */\n textColor?: ColorValue;\n\n icon?: IconName | AnyOtherString;\n /** @default \"left\" */\n iconPosition?: \"left\" | \"right\";\n /** @default Same as text color */\n iconColor?: string;\n /** @default 16 */\n iconSize?: number;\n\n image?: AssetName | AnyOtherString;\n /** @default \"left\" */\n imagePosition?: \"left\" | \"right\";\n /** @default 16 */\n imageWidth?: number;\n /** @default undefined */\n imageHeight?: number;\n\n loaderName?: LoaderName | AnyOtherString;\n /** @default false */\n isLoading?: boolean;\n\n isSmall?: true | \"left\" | \"center\" | \"right\";\n} & ViewProps<Value>;\n\ntype InternalButtonProps<Value> = ButtonProps<Value> & {\n animateOpacity?: number;\n};\n\nexport type ButtonRef = {};\n\ntype ButtonComponentType = {\n <Value>(props: ButtonProps<Value>): React.ReactElement;\n secondary: <Value>(props: ButtonProps<Value>) => React.ReactElement;\n destructive: <Value>(props: ButtonProps<Value>) => React.ReactElement;\n text: <Value>(props: ButtonProps<Value>) => React.ReactElement;\n};\n\nconst ButtonComponent = function Button<Value>({\n text,\n textFontSize = 16,\n textFontWeight = 700,\n textDecorationLine,\n textColor,\n\n icon,\n iconPosition = \"left\",\n iconColor,\n iconSize,\n\n image,\n imagePosition = \"left\",\n imageWidth,\n imageHeight,\n\n loaderName,\n isLoading,\n\n isSmall,\n\n animateOpacity,\n\n flex,\n alignSelf,\n disabled,\n ...props\n}: InternalButtonProps<Value>) {\n const theme = useTheme();\n const isLoadingLoader = useLoader(loaderName);\n\n const isLoadingElement = isLoading || isLoadingLoader;\n const isDisabled = disabled || isLoadingElement;\n\n const lineHeight = 20;\n const color = textColor ?? theme.colors.base;\n const paddingVertical = props.paddingVertical\n ? parseFloat(props.paddingVertical.toString())\n : theme.styles.space;\n const paddingHorizontal = props.paddingHorizontal\n ? parseFloat(props.paddingHorizontal.toString())\n : theme.styles.space + theme.styles.gap;\n\n const buttonHeight = paddingVertical + lineHeight + paddingVertical;\n\n return (\n <Animate.View\n position=\"relative\"\n flex={flex}\n alignSelf={\n alignSelf ??\n (isSmall === \"left\"\n ? \"flex-start\"\n : isSmall === \"right\"\n ? \"flex-end\"\n : isSmall === \"center\"\n ? \"center\"\n : isSmall\n ? \"baseline\"\n : undefined)\n }\n initialOpacity={1}\n animateOpacity={animateOpacity ?? (disabled ? 0.6 : 1)}\n >\n <View\n position=\"relative\"\n width={!isSmall ? \"100%\" : undefined}\n height={Platform.OS === \"android\" ? buttonHeight : undefined}\n alignItems=\"center\"\n justifyContent=\"center\"\n backgroundColor={theme.colors.primary}\n borderRadius={theme.styles.borderRadius}\n paddingVertical={paddingVertical}\n paddingHorizontal={paddingHorizontal}\n disabled={isDisabled}\n {...props}\n >\n <Animate.View initialOpacity={1} animateOpacity={isLoadingElement ? 0 : 1}>\n {text && (\n <Text\n fontSize={textFontSize}\n fontWeight={textFontWeight}\n textDecorationLine={textDecorationLine}\n textDecorationColor={color}\n textAlign=\"center\"\n lineHeight={lineHeight}\n color={color}\n >\n {text}\n </Text>\n )}\n </Animate.View>\n\n <Animate.View\n position=\"absolute\"\n width=\"100%\"\n height={buttonHeight}\n left={paddingHorizontal}\n alignItems=\"center\"\n justifyContent=\"center\"\n initialOpacity={0}\n animateOpacity={isLoadingElement ? 1 : 0}\n >\n <Loader color={color} />\n </Animate.View>\n </View>\n </Animate.View>\n );\n};\n\nButtonComponent.secondary = function Secondary(props) {\n const theme = useTheme();\n\n return (\n <ButtonComponent\n backgroundColor={theme.colors.backgroundContent}\n borderWidth={1}\n borderColor={theme.colors.border}\n textColor={theme.colors.textPrimary}\n pressStrength={pressStrength().z05}\n animateOpacity={props.disabled ? 0.4 : 1}\n {...props}\n />\n );\n} as ButtonComponentType[`secondary`];\n\nButtonComponent.destructive = function Destructive(props) {\n const theme = useTheme();\n\n return <ButtonComponent backgroundColor={theme.colors.error} {...props} />;\n} as ButtonComponentType[`destructive`];\n\nButtonComponent.text = function ButtonText(props) {\n const theme = useTheme();\n\n return (\n <ButtonComponent\n width=\"auto\"\n textColor={theme.colors.textPrimary}\n textDecorationLine=\"underline\"\n backgroundColor=\"transparent\"\n paddingHorizontal={theme.styles.space}\n paddingVertical={theme.styles.gap}\n isSmall\n pressType=\"opacity\"\n {...props}\n />\n );\n} as ButtonComponentType[`text`];\n\nconst Button = memo(ButtonComponent) as any as ButtonComponentType & {\n secondary: typeof ButtonComponent.secondary;\n destructive: typeof ButtonComponent.destructive;\n text: typeof ButtonComponent.text;\n};\n\nButton.secondary = ButtonComponent.secondary;\nButton.destructive = ButtonComponent.destructive;\nButton.text = ButtonComponent.text;\n\nexport default Button;\n","import { memo, useMemo } from \"react\";\nimport { TextStyle, ViewStyle } from \"react-native\";\nimport { Motion, PropsTransforms, EaseFunction, MotionTransition } from \"@legendapp/motion\";\n\nimport { ComponentStyle } from \"../types/components\";\n\nimport { useComponentPropsGrouper } from \"../utils/hooks\";\n\nconst defaultTransitionDuration = 0.15 * 1000;\n\ntype ComponentStyleProps<Style extends ViewStyle = ViewStyle> = Omit<\n ComponentStyle<Style>,\n \"transformOrigin\"\n>;\ntype AnimationStyleProps<Style extends ViewStyle = ViewStyle> = ComponentStyle<Style> & PropsTransforms;\n\ntype InitialComponentStyle<Style extends ViewStyle = ViewStyle> = {\n [CSSProperty in keyof AnimationStyleProps<Style> as `initial${Capitalize<\n CSSProperty & string\n >}`]: AnimationStyleProps<Style>[CSSProperty];\n};\ntype animateComponentStyle<Style extends ViewStyle = ViewStyle> = {\n [CSSProperty in keyof AnimationStyleProps<Style> as `animate${Capitalize<\n CSSProperty & string\n >}`]: AnimationStyleProps<Style>[CSSProperty];\n};\ntype whileTapComponentStyle<Style extends ViewStyle = ViewStyle> = {\n [CSSProperty in keyof AnimationStyleProps<Style> as `whileTap${Capitalize<\n CSSProperty & string\n >}`]: AnimationStyleProps<Style>[CSSProperty];\n};\n\ntype TransitionProps = {\n transitionLoop?: number;\n} & (\n | {\n transitionType?: \"tween\" | \"timing\" | undefined;\n transitionEase?: EaseFunction | ((value: number) => number) | undefined;\n transitionEasing?: EaseFunction | ((value: number) => number) | undefined;\n transitionDuration?: number | undefined;\n transitionDelay?: number | undefined;\n }\n | {\n transitionType: \"spring\";\n transitionFriction?: number;\n transitionTension?: number;\n transitionSpeed?: number;\n transitionBounciness?: number;\n transitionStiffness?: number;\n transitionDamping?: number;\n transitionMass?: number;\n transitionOvershootClamping?: boolean | undefined;\n transitionRestDisplacementThreshold?: number | undefined;\n transitionRestSpeedThreshold?: number | undefined;\n transitionVelocity?:\n | number\n | {\n x: number;\n y: number;\n }\n | undefined;\n }\n);\n\ntype AnimateCommonProps = {\n transformOriginX?: number;\n transformOriginY?: number;\n children?: React.ReactNode;\n} & TransitionProps;\n\nexport type AnimateViewProps = {} & AnimateCommonProps &\n ComponentStyleProps &\n InitialComponentStyle &\n animateComponentStyle &\n whileTapComponentStyle;\n\nexport type AnimateTextProps = {} & AnimateCommonProps &\n ComponentStyleProps<TextStyle> &\n InitialComponentStyle<TextStyle> &\n animateComponentStyle<TextStyle> &\n whileTapComponentStyle<TextStyle>;\n\nconst Animate = {\n View: memo(function View({ transformOriginX, transformOriginY, children, ...props }: AnimateViewProps) {\n const initialProps = useComponentPropsGrouper(props, \"initial\");\n const animateProps = useComponentPropsGrouper(props, \"animate\");\n const whileTapProps = useComponentPropsGrouper(props, \"whileTap\");\n const transitionProps = useComponentPropsGrouper(props, \"transition\");\n\n const transition = useMemo<MotionTransition>(\n () => ({\n type: \"timing\",\n duration: defaultTransitionDuration,\n ...(transitionProps.withPrefixStyle as any),\n }),\n [transitionProps.withPrefixStyle],\n );\n const transformOrigin = useMemo(\n () =>\n transformOriginX !== undefined || transformOriginY !== undefined\n ? {\n x: transformOriginX ?? 0,\n y: transformOriginY ?? 0,\n }\n : undefined,\n [transformOriginX, transformOriginY],\n );\n\n const content = (\n <Motion.View\n style={initialProps.style}\n initial={initialProps.withPrefixStyle}\n animate={animateProps.withPrefixStyle}\n transition={transition}\n whileTap={whileTapProps.withPrefixStyle}\n transformOrigin={transformOrigin}\n >\n {children}\n </Motion.View>\n );\n\n return Object.keys(whileTapProps.withPrefixStyle).length > 0 ? (\n <Motion.Pressable>{content}</Motion.Pressable>\n ) : (\n content\n );\n }),\n Text: memo(function Text({ transformOriginX, transformOriginY, children, ...props }: AnimateTextProps) {\n const initialProps = useComponentPropsGrouper(props, \"initial\");\n const animateProps = useComponentPropsGrouper(props, \"animate\");\n const whileTapProps = useComponentPropsGrouper(props, \"whileTap\");\n const transitionProps = useComponentPropsGrouper(props, \"transition\");\n\n const transition = useMemo<MotionTransition>(\n () => ({\n type: \"timing\",\n duration: defaultTransitionDuration,\n ...(transitionProps.withPrefixStyle as any),\n }),\n [transitionProps.withPrefixStyle],\n );\n const transformOrigin = useMemo(\n () =>\n transformOriginX !== undefined || transformOriginY !== undefined\n ? {\n x: transformOriginX ?? 0,\n y: transformOriginY ?? 0,\n }\n : undefined,\n [transformOriginX, transformOriginY],\n );\n\n const content = (\n <Motion.Text\n style={initialProps.style}\n initial={initialProps.withPrefixStyle}\n animate={animateProps.withPrefixStyle}\n transition={transition}\n whileTap={whileTapProps.withPrefixStyle}\n transformOrigin={transformOrigin}\n >\n {children}\n </Motion.Text>\n );\n\n return Object.keys(whileTapProps.withPrefixStyle).length > 0 ? (\n <Motion.Pressable>{content}</Motion.Pressable>\n ) : (\n content\n );\n }),\n};\n\nexport default Animate;\n","import { memo } from \"react\";\nimport { ActivityIndicator, ColorValue } from \"react-native\";\nimport { OmitProps, useTheme } from \"react-better-core\";\n\nimport { ComponentMarginProps } from \"../types/components\";\n\nimport View from \"./View\";\nimport Text from \"./Text\";\n\nexport type LoaderSize = \"small\" | \"large\";\n\nexport type LoaderProps = {\n /** @default \"small\" */\n size?: LoaderSize;\n color?: ColorValue;\n} & ComponentMarginProps;\n\ntype LoaderComponentType = {\n (props: LoaderProps): React.ReactElement;\n box: (\n props: OmitProps<LoaderProps, \"size\"> & {\n /** @default \"Loading...\" */\n text?: string;\n /** @default \"large\" */\n size?: LoaderSize;\n },\n ) => React.ReactElement;\n text: (\n props: LoaderProps & {\n /** @default \"Loading...\" */\n text?: string;\n },\n ) => React.ReactElement;\n};\n\nconst LoaderComponent: LoaderComponentType = function Loader({ size = \"small\", color, ...props }) {\n const theme = useTheme();\n\n return (\n <View {...props}>\n <ActivityIndicator size={size} color={color ?? theme.colors.textPrimary} />\n </View>\n );\n};\n\nLoaderComponent.box = function Box({ text = \"Loading...\", size = \"large\", color, ...props }) {\n const theme = useTheme();\n\n return (\n <View\n width=\"100%\"\n alignItems=\"center\"\n gap={theme.styles.gap}\n marginVertical={theme.styles.space}\n {...props}\n >\n <Loader size={size} color={color} />\n\n {text && (\n <Text textAlign=\"center\" color={color ?? theme.colors.textSecondary}>\n {text}\n </Text>\n )}\n </View>\n );\n} as LoaderComponentType[`box`];\n\nLoaderComponent.text = function LoaderText({ text = \"Loading...\", size, color, ...props }) {\n const theme = useTheme();\n\n return (\n <View\n isRow\n alignItems=\"center\"\n justifyContent=\"center\"\n gap={theme.styles.gap}\n marginVertical={theme.styles.space}\n {...props}\n >\n <Loader size={size} color={color} />\n\n {text && (\n <Text textAlign=\"center\" color={color ?? theme.colors.textSecondary}>\n {text}\n </Text>\n )}\n </View>\n );\n} as LoaderComponentType[\"text\"];\n\nconst Loader = memo(LoaderComponent) as any as typeof LoaderComponent & {\n box: typeof LoaderComponent.box;\n text: typeof LoaderComponent.text;\n};\n\nLoader.box = LoaderComponent.box;\nLoader.text = LoaderComponent.text;\n\nexport default Loader;\n","import { memo, useCallback, useMemo } from \"react\";\nimport { KeyboardAvoidingView, Platform, RefreshControl, ScrollView, ViewStyle } from \"react-native\";\nimport { useBooleanState, useTheme } from \"react-better-core\";\n\nimport { useDevice, useKeyboard } from \"../utils/hooks\";\n\nimport View, { ViewProps } from \"./View\";\n\nexport type ScreenHolderProps = {\n /** @default false */\n noScroll?: boolean;\n /** @default false */\n noSideSpace?: boolean;\n /** @default 1 (second) */\n refreshTimeout?: number;\n onRefresh?: () => void;\n onRefreshEnd?: () => void;\n /** @default \"backgroundBase\" */\n backgroundColor?: ViewProps[\"backgroundColor\"];\n /** @default false */\n insideTopSafeArea?: boolean;\n /** @default false */\n insideBottomSafeArea?: boolean;\n /** @default 0 */\n bottomSpace?: number;\n footer?: React.ReactNode;\n /** @default false */\n keepFooterOnKeyboardOpened?: boolean;\n keyboardVerticalOffset?: number;\n children?: React.ReactNode;\n};\n\ntype ScreenHolderComponentType = {\n (props: ScreenHolderProps): React.ReactElement;\n footer: (props: FooterProps) => React.ReactElement;\n};\n\nconst ScreenHolderComponent: ScreenHolderComponentType = ({\n noScroll,\n noSideSpace,\n refreshTimeout = 1,\n onRefresh,\n onRefreshEnd,\n backgroundColor,\n insideTopSafeArea,\n insideBottomSafeArea,\n bottomSpace = 0,\n footer,\n keepFooterOnKeyboardOpened,\n keyboardVerticalOffset,\n children,\n}) => {\n const theme = useTheme();\n const device = useDevice();\n const keyboard = useKeyboard();\n\n const [isRefreshing, setIsRefreshing] = useBooleanState();\n\n const keyboardAvoidingViewStyle = useMemo<ViewStyle>(\n () => ({\n flex: 1,\n }),\n [],\n );\n\n const onRefreshElement = useCallback(() => {\n setIsRefreshing.setTrue();\n onRefresh?.();\n\n setTimeout(() => {\n setIsRefreshing.setFalse();\n onRefreshEnd?.();\n }, refreshTimeout * 1000);\n }, [onRefresh, onRefreshEnd, refreshTimeout]);\n\n const content = (\n <View\n flex={1}\n paddingHorizontal={!noSideSpace ? theme.styles.space : undefined}\n paddingTop={theme.styles.gap + (insideTopSafeArea ? device.safeArea.afterCalculations.top : 0)}\n paddingBottom={\n Platform.OS === \"ios\" && keyboard.isOpened\n ? device.safeArea.afterCalculations.top\n : bottomSpace + (insideBottomSafeArea ? device.safeArea.afterCalculations.bottom : 0)\n }\n >\n {children}\n </View>\n );\n\n const withRefresh = onRefresh || onRefreshEnd;\n\n return (\n <View flex={1} backgroundColor={backgroundColor ?? theme.colors.backgroundBase}>\n <KeyboardAvoidingView\n style={keyboardAvoidingViewStyle}\n keyboardVerticalOffset={\n keyboardVerticalOffset ??\n (keepFooterOnKeyboardOpened\n ? Platform.OS === \"ios\"\n ? device.safeArea.afterCalculations.bottom\n : theme.styles.gap\n : undefined)\n }\n behavior={Platform.OS === \"ios\" ? \"padding\" : \"height\"}\n >\n <View flex={1}>\n {noScroll ? (\n content\n ) : (\n <ScrollView\n refreshControl={\n withRefresh ? (\n <RefreshControl refreshing={isRefreshing} onRefresh={onRefreshElement} />\n ) : undefined\n }\n >\n {content}\n </ScrollView>\n )}\n </View>\n\n {keepFooterOnKeyboardOpened ||\n (Platform.OS === \"ios\" ? !keyboard.willOpen : !keyboard.isOpened) ? (\n footer && <View>{footer}</View>\n ) : (\n <View width=\"100%\" height={device.safeArea.afterCalculations.bottom}></View>\n )}\n </KeyboardAvoidingView>\n </View>\n );\n};\n\nexport type FooterProps = {\n /** @default false */\n noSideSpace?: boolean;\n /** @default \"backgroundBase\" */\n backgroundColor?: ViewProps[\"backgroundColor\"];\n /** @default false */\n insideBottomSafeArea?: boolean;\n children?: React.ReactNode;\n};\n\nScreenHolderComponent.footer = function Footer({\n noSideSpace,\n backgroundColor,\n insideBottomSafeArea,\n children,\n}) {\n const theme = useTheme();\n const device = useDevice();\n\n return (\n <View\n backgroundColor={backgroundColor ?? theme.colors.backgroundBase}\n paddingHorizontal={!noSideSpace ? theme.styles.space : undefined}\n paddingTop={theme.styles.gap}\n paddingBottom={insideBottomSafeArea ? device.safeArea.afterCalculations.bottom : undefined}\n >\n {children}\n </View>\n );\n} as ScreenHolderComponentType[`footer`];\n\nconst ScreenHolder = memo(ScreenHolderComponent) as any as typeof ScreenHolderComponent & {\n footer: typeof ScreenHolderComponent.footer;\n};\n\nScreenHolder.footer = ScreenHolderComponent.footer;\n\nexport default ScreenHolder;\n","import { memo, useEffect, useMemo } from \"react\";\nimport { AnyOtherString, AssetName, OmitProps, useBetterCoreContext, useTheme } from \"react-better-core\";\nimport {\n ImageSourcePropType,\n Image as NativeImage,\n ImageProps as NativeImageProps,\n ImageStyle as NativeImageStyle,\n} from \"react-native\";\n\nimport { ComponentStyle } from \"../types/components\";\nimport View from \"./View\";\nimport Text from \"./Text\";\n\nexport type ImageProps = {\n name?: AssetName | AnyOtherString;\n source?: ImageSourcePropType;\n /** @default false */\n withDevFittingMode?: boolean;\n} & OmitProps<NativeImageProps, \"source\"> &\n ComponentStyle<NativeImageStyle>;\n\ntype ImageComponentType = {\n (props: ImageProps): React.ReactElement;\n profileImage: (\n props: OmitProps<ImageProps, \"width\" | \"height\"> & {\n /** @default 50 */\n size?: number;\n letters?: string;\n backgroundColor?: string;\n },\n ) => React.ReactElement;\n};\n\nconst ImageComponent: ImageComponentType = function Image({ name, source, withDevFittingMode, ...props }) {\n const { assets } = useBetterCoreContext();\n\n const style = useMemo<NativeImageStyle>(\n () => ({\n width: 100,\n height: 100,\n ...(withDevFittingMode\n ? {\n borderWidth: 1,\n borderColor: \"#eb39f7\",\n }\n : {}),\n ...props,\n }),\n [withDevFittingMode, props],\n );\n\n useEffect(() => {\n if (!name) return;\n\n if (!assets[name.toString()])\n console.warn(\n `The asset \\`${name}\\` you are trying to use does not exist. Make sure to add it to the \\`assets\\` object in \\`<BetterComponentsProvider>\\` config value prop.`,\n );\n }, [assets, name]);\n\n return <NativeImage source={name ? (assets[name.toString()] as any) : source} style={style} {...props} />;\n};\n\nImageComponent.profileImage = function ProfileImage({ size = 50, letters, backgroundColor, ...props }) {\n const theme = useTheme();\n\n return letters ? (\n <View\n width={size}\n height={size}\n backgroundColor={backgroundColor ?? theme.colors.backgroundSecondary}\n borderWidth={1}\n borderColor={theme.colors.border}\n borderRadius={999}\n alignItems=\"center\"\n justifyContent=\"center\"\n {...props}\n >\n <Text fontSize={size / 2.5} fontWeight={700} marginTop={1}>\n {letters.toUpperCase().slice(0, 2)}\n </Text>\n </View>\n ) : (\n <ImageComponent\n width={size}\n height={size}\n borderWidth={1}\n borderColor={theme.colors.border}\n borderRadius={999}\n objectFit=\"cover\"\n {...props}\n />\n );\n} as ImageComponentType[`profileImage`];\n\n/** @description size is set to 100x100 by default */\nconst Image = memo(ImageComponent) as any as typeof ImageComponent & {\n profileImage: typeof ImageComponent.profileImage;\n};\n\nImage.profileImage = ImageComponent.profileImage;\n\nexport default Image;\n","import { forwardRef, memo, useCallback, useEffect, useImperativeHandle, useMemo, useState } from \"react\";\nimport { FocusEvent, TextInput, TextStyle } from \"react-native\";\nimport {\n darkenColor,\n lightenColor,\n useBetterCoreContext,\n useBooleanState,\n useTheme,\n} from \"react-better-core\";\n\nimport { ComponentPropWithRef } from \"../types/components\";\n\nimport View from \"./View\";\nimport Text from \"./Text\";\nimport Animate from \"./Animate\";\n\nexport type InputFieldProps = {\n placeholder?: string;\n prefix?: string;\n suffix?: string;\n defaultValue?: string;\n value?: string | number;\n /** @default true */\n editable?: boolean;\n /** @default false */\n autoFocus?: boolean;\n autoCapitalize?: React.ComponentProps<typeof TextInput>[\"autoCapitalize\"];\n autoComplete?: React.ComponentProps<typeof TextInput>[\"autoComplete\"];\n autoCorrect?: React.ComponentProps<typeof TextInput>[\"autoCorrect\"];\n /** @default \"default\" */\n keyboardAppearance?: React.ComponentProps<typeof TextInput>[\"keyboardAppearance\"];\n keyboardType?: React.ComponentProps<typeof TextInput>[\"keyboardType\"];\n /** @default false */\n secureTextEntry?: boolean;\n onFocus?: (event: FocusEvent) => void;\n onBlur?: (event: FocusEvent) => void;\n onChange?: (text: string) => void;\n};\n\nexport type InputFieldRef = {};\n\ntype InputFieldComponentType = {\n (props: ComponentPropWithRef<InputFieldRef, InputFieldProps>): React.ReactElement;\n email: (props: ComponentPropWithRef<InputFieldRef, InputFieldProps>) => React.ReactElement;\n password: (props: ComponentPropWithRef<InputFieldRef, InputFieldProps>) => React.ReactElement;\n};\n\nconst InputFieldComponent: InputFieldComponentType = forwardRef<InputFieldRef, InputFieldProps>(\n (\n {\n placeholder,\n prefix,\n suffix,\n defaultValue,\n value,\n editable = true,\n autoFocus,\n autoCapitalize,\n autoComplete,\n autoCorrect,\n keyboardAppearance = \"default\",\n keyboardType,\n secureTextEntry,\n onFocus,\n onBlur,\n onChange,\n },\n ref,\n ) => {\n const theme = useTheme();\n const { colorTheme } = useBetterCoreContext();\n\n const [internalValue, setInternalValue] = useState(value?.toString() || defaultValue || \"\");\n const [isFocused, setIsFocused] = useBooleanState();\n\n const borderWidth = 1;\n const lineHeight = 20;\n const paddingHorizontal = theme.styles.space;\n const paddingVertical = (theme.styles.space + theme.styles.gap) / 2;\n const height = borderWidth + paddingVertical + lineHeight + paddingVertical + borderWidth;\n\n const onFocusElement = useCallback((event: FocusEvent) => {\n setIsFocused.setTrue();\n onFocus?.(event);\n }, []);\n const onBlurElement = useCallback((event: FocusEvent) => {\n setIsFocused.setFalse();\n onBlur?.(event);\n }, []);\n const onChangeText = useCallback(\n (text: string) => {\n setInternalValue(text);\n onChange?.(text);\n },\n [onChange],\n );\n\n const textInputStyle = useMemo<TextStyle>(\n () => ({\n flex: 1,\n fontSize: 16,\n lineHeight,\n color: theme.colors.textPrimary,\n paddingHorizontal,\n paddingVertical,\n }),\n [theme.colors, lineHeight, paddingHorizontal, paddingVertical],\n );\n\n useEffect(() => {\n if (value === undefined) return;\n\n setInternalValue(value.toString());\n }, [value]);\n\n useImperativeHandle(\n ref,\n (): InputFieldRef => {\n return {};\n },\n [],\n );\n\n const prefixSuffixBackgroundColor =\n colorTheme === \"light\"\n ? darkenColor(theme.colors.backgroundContent, 0.03)\n : lightenColor(theme.colors.backgroundContent, 0.1);\n\n return (\n <View isRow position=\"relative\" alignItems=\"center\" height={height}>\n {prefix && (\n <View\n isRow\n height=\"100%\"\n backgroundColor={prefixSuffixBackgroundColor}\n alignItems=\"center\"\n borderWidth={borderWidth}\n borderRightWidth={0}\n borderTopLeftRadius={theme.styles.borderRadius}\n borderBottomLeftRadius={theme.styles.borderRadius}\n borderColor={theme.colors.border}\n paddingHorizontal={paddingHorizontal}\n >\n <Text fontWeight={700}>{prefix}</Text>\n </View>\n )}\n\n <Animate.View\n flex={1}\n backgroundColor={theme.colors.backgroundContent}\n borderTopLeftRadius={prefix ? 0 : theme.styles.borderRadius}\n borderBottomLeftRadius={prefix ? 0 : theme.styles.borderRadius}\n borderTopRightRadius={suffix ? 0 : theme.styles.borderRadius}\n borderBottomRightRadius={suffix ? 0 : theme.styles.borderRadius}\n borderWidth={borderWidth}\n initialBorderColor={theme.colors.border}\n animateBorderColor={isFocused ? theme.colors.primary : theme.colors.border}\n overflow=\"hidden\"\n >\n <TextInput\n style={textInputStyle}\n value={internalValue}\n defaultValue={defaultValue}\n autoCapitalize={autoCapitalize}\n autoComplete={autoComplete}\n autoCorrect={autoCorrect}\n autoFocus={autoFocus}\n placeholder={placeholder}\n placeholderTextColor={theme.colors.textSecondary + \"80\"}\n readOnly={!editable}\n keyboardAppearance={keyboardAppearance}\n keyboardType={keyboardType}\n cursorColor={theme.colors.primary}\n selectionColor={theme.colors.primary}\n secureTextEntry={secureTextEntry}\n onFocus={onFocusElement}\n onBlur={onBlurElement}\n onChangeText={onChangeText}\n />\n </Animate.View>\n\n {suffix && (\n <View\n isRow\n height=\"100%\"\n backgroundColor={prefixSuffixBackgroundColor}\n alignItems=\"center\"\n borderWidth={borderWidth}\n borderLeftWidth={0}\n borderTopRightRadius={theme.styles.borderRadius}\n borderBottomRightRadius={theme.styles.borderRadius}\n borderColor={theme.colors.border}\n paddingHorizontal={paddingHorizontal}\n >\n <Text fontWeight={700}>{suffix}</Text>\n </View>\n )}\n </View>\n );\n },\n) as any;\n\nInputFieldComponent.email = forwardRef(function Email(props, ref) {\n return (\n <InputFieldComponent\n placeholder=\"your@email.here\"\n autoComplete=\"email\"\n keyboardType=\"email-address\"\n autoCapitalize=\"none\"\n autoCorrect={false}\n {...props}\n ref={ref}\n />\n );\n}) as InputFieldComponentType[`email`];\n\nInputFieldComponent.password = forwardRef(function Password(props, ref) {\n return (\n <InputFieldComponent\n secureTextEntry\n placeholder=\"******\"\n autoCapitalize=\"none\"\n autoComplete=\"password\"\n autoCorrect={false}\n {...props}\n ref={ref}\n />\n );\n}) as InputFieldComponentType[`password`];\n\nconst InputField = memo(InputFieldComponent) as any as typeof InputFieldComponent & {\n email: typeof InputFieldComponent.email;\n password: typeof InputFieldComponent.password;\n};\n\nInputField.email = InputFieldComponent.email;\nInputField.password = InputFieldComponent.password;\n\nexport default InputField;\n","import { BetterComponentsPluginConstructor } from \"../types/plugin\";\n\nexport type AsyncStoragePluginOptions = {};\n\nexport const defaultAsyncStoragePluginOptions: Required<AsyncStoragePluginOptions> = {};\n\nexport const asyncStoragePlugin: BetterComponentsPluginConstructor<AsyncStoragePluginOptions> = (options) => ({\n name: \"asyncStorage\",\n initialize: () => {\n console.log(\"asyncStorage plugin initialized\");\n },\n getConfig: () => ({\n ...defaultAsyncStoragePluginOptions,\n ...options,\n }),\n});\n"],"mappings":"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AA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AA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","names":["import_react_better_core","import_react","import_react_better_core","theme","NativeAsyncStorage","import_react","import_react_native","import_react_better_core","import_jsx_runtime","pressStrength","theme","NativeView","View","import_react","import_react_native","import_react_better_core","import_jsx_runtime","theme","NativeText","Text","import_react","import_react_native","import_react_better_core","import_react","import_jsx_runtime","View","animateProps","Text","import_react","import_react_native","import_react_better_core","import_jsx_runtime","theme","Box","Loader","import_jsx_runtime","theme","Button","import_react","import_react_native","import_react_better_core","import_jsx_runtime","theme","import_react","import_react_better_core","import_react_native","import_jsx_runtime","assets","NativeImage","theme","Image","import_react","import_react_native","import_react_better_core","import_jsx_runtime","theme"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/components/BetterComponentsProvider.tsx","../src/constants/app.ts","../src/constants/theme.ts","../src/constants/icons.ts","../src/constants/assets.ts","../src/utils/variableFunctions.ts","../src/utils/hooks.ts","../src/constants/css.ts","../src/utils/asyncStorage.ts","../src/components/View.tsx","../src/components/Text.tsx","../src/components/Button.tsx","../src/components/Animate.tsx","../src/components/Loader.tsx","../src/components/ScreenHolder.tsx","../src/components/Image.tsx","../src/components/InputField.tsx","../src/plugins/asyncStorage.ts"],"sourcesContent":["export {\n useTheme,\n useLoader,\n useLoaderControls,\n countries,\n type OmitProps,\n type ExcludeOptions,\n type PickValue,\n type PartialRecord,\n type DeepPartialRecord,\n type PickAllRequired,\n type AnyOtherString,\n type AssetName,\n type AssetsConfig,\n type Country,\n type IconName,\n type IconsConfig,\n type LoaderName,\n type LoaderConfig,\n type Color,\n type ColorName,\n type ColorTheme,\n type Colors,\n type Styles,\n type Theme,\n type ThemeConfig,\n lightenColor,\n darkenColor,\n saturateColor,\n desaturateColor,\n generateRandomString,\n formatPhoneNumber,\n eventPreventDefault,\n eventStopPropagation,\n eventPreventStop,\n getPluralWord,\n useBooleanState,\n useDebounceState,\n loaderControls,\n colorThemeControls,\n} from \"react-better-core\";\n\nimport BetterComponentsProvider, {\n useBetterComponentsContext,\n type BetterComponentsProviderConfig,\n} from \"./components/BetterComponentsProvider\";\n\nimport { type AppConfig, type BetterComponentsConfig } from \"./types/config\";\nimport { type ComponentMarginProps, type ComponentPaddingProps } from \"./types/components\";\nimport { type PluginName, type BetterComponentsPlugin } from \"./types/plugin\";\n\nimport { pressStrength } from \"./utils/variableFunctions\";\n\nimport { useDevice, useKeyboard } from \"./utils/hooks\";\nimport { generateAsyncStorage } from \"./utils/asyncStorage\";\n\nimport View, { type ViewProps } from \"./components/View\";\nimport Text, { type TextProps } from \"./components/Text\";\nimport Button, { type ButtonProps } from \"./components/Button\";\nimport Loader, { type LoaderProps, type LoaderSize } from \"./components/Loader\";\nimport Animate, { type AnimateViewProps, type AnimateTextProps } from \"./components/Animate\";\nimport ScreenHolder, { type ScreenHolderProps, type FooterProps } from \"./components/ScreenHolder\";\nimport Image, { type ImageProps } from \"./components/Image\";\nimport InputField, { type InputFieldProps } from \"./components/InputField\";\n\nexport * from \"./plugins\";\n\nexport {\n BetterComponentsProvider,\n useBetterComponentsContext as useBetterComponentsContext,\n BetterComponentsProviderConfig,\n\n // Constants\n\n // Types\n AppConfig,\n BetterComponentsConfig as BetterComponentsConfig,\n ComponentMarginProps,\n ComponentPaddingProps,\n PluginName,\n BetterComponentsPlugin,\n\n // Hooks\n useDevice,\n useKeyboard,\n\n // Functions\n\n // Variable Functions\n pressStrength,\n\n // AsyncStorage\n generateAsyncStorage,\n\n // Components\n View,\n ViewProps,\n Text,\n TextProps,\n Button,\n ButtonProps,\n Loader,\n LoaderProps,\n LoaderSize,\n Animate,\n AnimateViewProps,\n AnimateTextProps,\n ScreenHolder,\n ScreenHolderProps,\n FooterProps,\n Image,\n ImageProps,\n InputField,\n InputFieldProps,\n};\n","import { createContext, memo, useContext, useEffect, useMemo } from \"react\";\nimport {\n useBooleanState,\n DeepPartialRecord,\n BetterCoreProvider,\n BetterCoreProviderConfig,\n BetterCoreConfig,\n useBetterCoreContext,\n} from \"react-better-core\";\n\nimport { appConfig } from \"../constants/app\";\nimport { theme } from \"../constants/theme\";\nimport { icons } from \"../constants/icons\";\nimport { assets } from \"../constants/assets\";\n\nimport { BetterComponentsConfig } from \"../types/config\";\nimport { BetterComponentsPlugin, PluginName } from \"../types/plugin\";\n\nexport type BetterComponentsInternalConfig = BetterComponentsConfig & {\n plugins: BetterComponentsPlugin[];\n componentsState: {};\n};\n\nconst betterComponentsContext = createContext<BetterComponentsInternalConfig | undefined>(undefined);\nexport let externalBetterCoreContextValue: BetterCoreConfig | undefined;\nexport let externalBetterComponentsContextValue: BetterComponentsInternalConfig | undefined;\n\nexport const useBetterComponentsContext = (): BetterComponentsConfig & BetterCoreConfig => {\n const coreContext = useBetterCoreContext();\n const context = useContext(betterComponentsContext);\n\n if (context === undefined)\n throw new Error(\n \"`useBetterComponentsContext()` must be used within a `<BetterComponentsProvider>`. Make sure to add one at the root of your component tree.\",\n );\n\n const { plugins, componentsState, ...rest } = context;\n\n return {\n ...coreContext,\n ...rest,\n };\n};\n\nexport const useBetterComponentsContextInternal = (): BetterComponentsInternalConfig => {\n const context = useContext(betterComponentsContext);\n\n if (context === undefined)\n throw new Error(\n \"`useBetterComponentsContextInternal()` must be used within a `<BetterComponentsProvider>`. Make sure to add one at the root of your component tree.\",\n );\n\n return context;\n};\n\nexport const usePlugin = <T extends object>(\n pluginName: PluginName,\n): BetterComponentsPlugin<T> | undefined => {\n const context = useContext(betterComponentsContext);\n\n if (context === undefined) {\n throw new Error(\n \"`usePlugin()` must be used within a `<BetterComponentsProvider>`. Make sure to add one at the root of your component tree.\",\n );\n }\n\n return useMemo(\n () => context.plugins.find((plugin: BetterComponentsPlugin) => plugin.name === pluginName),\n [context.plugins, pluginName],\n ) as any;\n};\n\ntype BetterComponentsProviderInternalContentProps = {\n children?: React.ReactNode;\n};\n\nfunction BetterComponentsProviderInternalContent({ children }: BetterComponentsProviderInternalContentProps) {\n return <>{children}</>;\n}\n\ntype BetterComponentsProviderInternalConfig = DeepPartialRecord<BetterComponentsConfig>;\n\ntype BetterProviderCommonProps = {\n plugins?: BetterComponentsPlugin[];\n children?: React.ReactNode;\n};\n\ntype BetterComponentsProviderInternalProps = BetterProviderCommonProps & {\n config?: BetterComponentsProviderInternalConfig;\n};\n\nfunction BetterComponentsProviderInternal({\n config,\n plugins,\n children,\n}: BetterComponentsProviderInternalProps) {\n const betterCoreContext = useBetterCoreContext();\n\n const [sideMenuIsCollapsed, setSideMenuIsCollapsed] = useBooleanState();\n const [sideMenuIsOpenMobile, setSideMenuIsOpenMobile] = useBooleanState();\n\n const readyConfig = useMemo<BetterComponentsInternalConfig>(\n () => ({\n app: {\n ...appConfig,\n ...config?.app,\n },\n sideMenuIsCollapsed,\n setSideMenuIsCollapsed,\n sideMenuIsOpenMobile,\n setSideMenuIsOpenMobile,\n plugins: plugins ?? [],\n componentsState: {},\n }),\n [config, sideMenuIsCollapsed, sideMenuIsOpenMobile, plugins],\n );\n\n useEffect(() => {\n if (!plugins) return;\n\n plugins.forEach((plugin) => {\n plugin.initialize?.();\n });\n }, []);\n\n externalBetterCoreContextValue = betterCoreContext;\n externalBetterComponentsContextValue = readyConfig;\n\n return (\n <betterComponentsContext.Provider value={readyConfig}>\n <BetterComponentsProviderInternalContent>{children}</BetterComponentsProviderInternalContent>\n </betterComponentsContext.Provider>\n );\n}\n\nexport type BetterComponentsProviderConfig = BetterCoreProviderConfig &\n BetterComponentsProviderInternalConfig;\n\ntype BetterComponentsProviderProps = BetterProviderCommonProps & {\n config?: BetterComponentsProviderConfig;\n};\n\nfunction BetterComponentsProvider({ config, ...props }: BetterComponentsProviderProps) {\n const coreConfig = useMemo<BetterCoreProviderConfig>(\n () => ({\n theme: {\n ...theme,\n ...config?.theme,\n },\n // colorTheme: config?.colorTheme ?? (localStorage.getItem(\"theme\") === \"dark\" ? \"dark\" : \"light\"),\n colorTheme: config?.colorTheme ?? \"light\",\n icons: {\n ...icons,\n ...config?.icons,\n },\n assets: {\n ...assets,\n ...config?.assets,\n },\n loaders: config?.loaders,\n }),\n [config],\n );\n\n const componentsConfig = useMemo<BetterComponentsProviderInternalConfig>(\n () => ({\n app: config?.app,\n }),\n [config],\n );\n\n return (\n <BetterCoreProvider config={coreConfig}>\n <BetterComponentsProviderInternal config={componentsConfig} {...props} />\n </BetterCoreProvider>\n );\n}\n\nexport default memo(BetterComponentsProvider);\n","import { AppConfig } from \"../types/config\";\n\nexport const appConfig: AppConfig = {};\n","import { DeepPartialRecord, ThemeConfig } from \"react-better-core\";\n\nexport const theme: DeepPartialRecord<ThemeConfig> = {};\n","import { IconsConfig } from \"react-better-core\";\n\nexport const icons: Partial<IconsConfig> = {};\n","import { AssetsConfig } from \"react-better-core\";\n\nexport const assets: Partial<AssetsConfig> = {};\n","import { BetterCoreConfig } from \"react-better-core\";\n\nimport {\n BetterComponentsInternalConfig,\n externalBetterCoreContextValue,\n} from \"../components/BetterComponentsProvider\";\n\nexport const checkBetterCoreContextValue = (\n value: BetterCoreConfig | undefined,\n functionsName: string,\n): value is BetterCoreConfig => {\n if (value === undefined) {\n throw new Error(\n `\\`${functionsName}()\\` must be used within a \\`<BetterCoreProvider>\\`. Make sure to add one at the root of your component tree.`,\n );\n }\n\n return value !== undefined;\n};\nexport const checkBetterComponentsContextValue = (\n value: BetterComponentsInternalConfig | undefined,\n functionsName: string,\n): value is BetterComponentsInternalConfig => {\n if (value === undefined) {\n throw new Error(\n `\\`${functionsName}()\\` must be used within a \\`<BetterComponentsProvider>\\`. Make sure to add one at the root of your component tree.`,\n );\n }\n\n return value !== undefined;\n};\n\nexport const pressStrength = (): Record<\"z05\" | \"z1\" | \"z2\" | \"z3\", number> => {\n if (!checkBetterCoreContextValue(externalBetterCoreContextValue, \"pressStrength\")) return undefined as any;\n\n return {\n z05: externalBetterCoreContextValue.colorTheme === \"dark\" ? 0.85 : 0.95,\n z1: externalBetterCoreContextValue.colorTheme === \"dark\" ? 0.6 : 0.8,\n z2: externalBetterCoreContextValue.colorTheme === \"dark\" ? 0.5 : 0.7,\n z3: externalBetterCoreContextValue.colorTheme === \"dark\" ? 0.4 : 0.6,\n };\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport { Dimensions, Keyboard, KeyboardEvent } from \"react-native\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\nimport { useBooleanState, useTheme } from \"react-better-core\";\n\nimport { animateProps, animateTransitionProps, cssProps } from \"../constants/css\";\n\nimport { ComponentStyle } from \"../types/components\";\n\nexport function useDevice() {\n const theme = useTheme();\n const safeAreaInsets = useSafeAreaInsets();\n\n const screenDimensions = Dimensions.get(\"screen\");\n const windowDimensions = Dimensions.get(\"window\");\n const isSmallDevice = windowDimensions.height <= 700;\n\n return {\n safeArea: {\n ...safeAreaInsets,\n /** @description The safe area insets after calculations. Recommended to use this instead of the raw insets. */\n afterCalculations: {\n top: safeAreaInsets.top < 25 ? 32 : safeAreaInsets.top < 40 ? 40 : safeAreaInsets.top,\n bottom:\n (safeAreaInsets.bottom === 0 ? theme.styles.space : safeAreaInsets.bottom) +\n (isSmallDevice ? 0 : theme.styles.space * 2),\n left: safeAreaInsets.left,\n right: safeAreaInsets.right,\n },\n },\n /** @description The dimensions of the device screen. */\n screenDimensions,\n /** @description The dimensions of the app window. */\n windowDimensions,\n /** @description Whether the device is small. */\n isSmallDevice,\n };\n}\n\nexport function useKeyboard() {\n const [keyboardOpened, setKeyboardOpened] = useBooleanState();\n const [keyboardWillOpen, setKeyboardWillOpen] = useBooleanState();\n\n const [keyboardHeight, setKeyboardHeight] = useState<number>(0);\n\n useEffect(() => {\n const keyboardDidShow = (event: KeyboardEvent) => {\n setKeyboardOpened.setTrue();\n setKeyboardHeight(event.endCoordinates.height);\n };\n const keyboardDidHide = () => {\n setKeyboardOpened.setFalse();\n setKeyboardHeight(0);\n };\n\n const willShowSubscription = Keyboard.addListener(\"keyboardWillShow\", setKeyboardWillOpen.setTrue);\n const willHideSubscription = Keyboard.addListener(\"keyboardWillHide\", setKeyboardWillOpen.setFalse);\n const didShowSubscription = Keyboard.addListener(\"keyboardDidShow\", keyboardDidShow);\n const didHideSubscription = Keyboard.addListener(\"keyboardDidHide\", keyboardDidHide);\n\n return () => {\n willShowSubscription.remove();\n willHideSubscription.remove();\n didShowSubscription.remove();\n didHideSubscription.remove();\n };\n }, []);\n\n return {\n isOpened: keyboardOpened,\n willOpen: keyboardWillOpen,\n height: keyboardHeight,\n };\n}\n\nexport function useComponentPropsGrouper<Props extends object = {}>(\n props: ComponentStyle,\n prefix: string,\n): {\n style: ComponentStyle;\n withPrefixStyle: ComponentStyle;\n restProps: Props;\n} {\n return useMemo(() => {\n const style: ComponentStyle = {};\n const withPrefixStyle: ComponentStyle = {};\n const restProps = {} as Props;\n\n for (const key in props) {\n const keyName = key as keyof ComponentStyle;\n\n if (cssProps.has(keyName.toLowerCase())) {\n (style[keyName] as any) = props[keyName];\n } else if (\n keyName.startsWith(prefix) &&\n (cssProps.has(keyName.slice(prefix.length).toLowerCase()) ||\n animateProps.has(keyName.slice(prefix.length).toLowerCase()) ||\n animateTransitionProps.has(keyName.slice(prefix.length).toLowerCase()))\n ) {\n const realKey = `${keyName.slice(prefix.length, prefix.length + 1).toLowerCase()}${keyName.slice(\n prefix.length + 1,\n )}`;\n\n (withPrefixStyle[realKey as keyof ComponentStyle] as any) = props[keyName];\n } else {\n (restProps[keyName as keyof Props] as any) = props[keyName];\n }\n }\n\n return {\n style,\n withPrefixStyle,\n restProps,\n };\n }, [props, prefix]);\n}\n","export const cssProps: Set<string> = new Set([\n \"aligncontent\",\n \"alignitems\",\n \"alignself\",\n \"aspectratio\",\n \"borderbottomwidth\",\n \"borderendwidth\",\n \"borderleftwidth\",\n \"borderrightwidth\",\n \"borderstartwidth\",\n \"bordertopwidth\",\n \"borderwidth\",\n \"bottom\",\n \"boxsizing\",\n \"display\",\n \"end\",\n \"flex\",\n \"flexbasis\",\n \"flexdirection\",\n \"rowgap\",\n \"gap\",\n \"columngap\",\n \"flexgrow\",\n \"flexshrink\",\n \"flexwrap\",\n \"height\",\n \"justifycontent\",\n \"left\",\n \"margin\",\n \"marginbottom\",\n \"marginend\",\n \"marginhorizontal\",\n \"marginleft\",\n \"marginright\",\n \"marginstart\",\n \"margintop\",\n \"marginvertical\",\n \"maxheight\",\n \"maxwidth\",\n \"minheight\",\n \"minwidth\",\n \"overflow\",\n \"padding\",\n \"paddingbottom\",\n \"paddingend\",\n \"paddinghorizontal\",\n \"paddingleft\",\n \"paddingright\",\n \"paddingstart\",\n \"paddingtop\",\n \"paddingvertical\",\n \"position\",\n \"right\",\n \"start\",\n \"top\",\n \"width\",\n \"zindex\",\n \"direction\",\n \"inset\",\n \"insetblock\",\n \"insetblockend\",\n \"insetblockstart\",\n \"insetinline\",\n \"insetinlineend\",\n \"insetinlinestart\",\n \"marginblock\",\n \"marginblockend\",\n \"marginblockstart\",\n \"margininline\",\n \"margininlineend\",\n \"margininlinestart\",\n \"paddingblock\",\n \"paddingblockend\",\n \"paddingblockstart\",\n \"paddinginline\",\n \"paddinginlineend\",\n \"paddinginlinestart\",\n \"shadowcolor\",\n \"shadowoffset\",\n \"shadowopacity\",\n \"shadowradius\",\n \"transform\",\n \"transformorigin\",\n \"transformmatrix\",\n \"rotation\",\n \"scalex\",\n \"scaley\",\n \"translatex\",\n \"translatey\",\n \"backfacevisibility\",\n \"backgroundcolor\",\n \"borderblockcolor\",\n \"borderblockendcolor\",\n \"borderblockstartcolor\",\n \"borderbottomcolor\",\n \"borderbottomendradius\",\n \"borderbottomleftradius\",\n \"borderbottomrightradius\",\n \"borderbottomstartradius\",\n \"bordercolor\",\n \"bordercurve\",\n \"borderendcolor\",\n \"borderendendradius\",\n \"borderendstartradius\",\n \"borderleftcolor\",\n \"borderradius\",\n \"borderrightcolor\",\n \"borderstartcolor\",\n \"borderstartendradius\",\n \"borderstartstartradius\",\n \"borderstyle\",\n \"bordertopcolor\",\n \"bordertopendradius\",\n \"bordertopleftradius\",\n \"bordertoprightradius\",\n \"bordertopstartradius\",\n \"outlinecolor\",\n \"outlineoffset\",\n \"outlinestyle\",\n \"outlinewidth\",\n \"opacity\",\n \"elevation\",\n \"pointerevents\",\n \"isolation\",\n \"cursor\",\n \"boxshadow\",\n \"filter\",\n \"mixblendmode\",\n \"fontvariant\",\n \"textdecorationcolor\",\n \"textdecorationstyle\",\n \"writingdirection\",\n \"textalignvertical\",\n \"verticalalign\",\n \"includefontpadding\",\n \"color\",\n \"fontfamily\",\n \"fontsize\",\n \"fontstyle\",\n \"fontweight\",\n \"letterspacing\",\n \"lineheight\",\n \"textalign\",\n \"textdecorationline\",\n \"textdecorationstyle\",\n \"textdecorationcolor\",\n \"textshadowcolor\",\n \"textshadowoffset\",\n \"textshadowradius\",\n \"texttransform\",\n \"userselect\",\n]);\n\nexport const animateProps: Set<string> = new Set([\n \"x\",\n \"y\",\n \"scale\",\n \"scaleX\",\n \"scaleY\",\n \"skewX\",\n \"skewY\",\n \"perspective\",\n \"rotate\",\n \"rotateX\",\n \"rotateY\",\n \"rotateZ\",\n \"matrix\",\n]);\n\nexport const animateTransitionProps: Set<string> = new Set([\n \"type\",\n \"ease\",\n \"easing\",\n \"duration\",\n \"delay\",\n \"type\",\n \"friction\",\n \"tension\",\n \"speed\",\n \"bounciness\",\n \"stiffness\",\n \"damping\",\n \"mass\",\n \"overshootClamping\",\n \"restDisplacementThreshold\",\n \"restSpeedThreshold\",\n \"velocity\",\n \"loop\",\n]);\n","import NativeAsyncStorage from \"@react-native-async-storage/async-storage\";\n\nexport function generateAsyncStorage<AsyncStorage extends object>(): {\n setItem: <StorageName extends keyof AsyncStorage>(name: StorageName, value: AsyncStorage[StorageName]) => void;\n getItem: <StorageName extends keyof AsyncStorage>(\n name: StorageName,\n ) => Promise<AsyncStorage[StorageName] | undefined>;\n removeItem: (name: keyof AsyncStorage) => void;\n removeAllItems: () => void;\n} {\n return {\n setItem: async (name, value) => {\n if (value) await NativeAsyncStorage.setItem(name.toString(), JSON.stringify(value));\n else await NativeAsyncStorage.removeItem(name.toString());\n },\n getItem: async (name) => {\n const item = await NativeAsyncStorage.getItem(name.toString());\n\n if (item === null) return undefined;\n\n try {\n return JSON.parse(item);\n } catch (error) {\n return undefined;\n }\n },\n removeItem: async (name) => {\n await NativeAsyncStorage.removeItem(name.toString());\n },\n removeAllItems: () => {\n NativeAsyncStorage.clear();\n },\n };\n}\n","import { memo, useMemo } from \"react\";\nimport {\n GestureResponderEvent,\n View as NativeView,\n ViewProps as NativeViewProps,\n ViewStyle as NativeViewStyle,\n Platform,\n TouchableHighlight,\n TouchableNativeFeedback,\n TouchableOpacity,\n} from \"react-native\";\nimport { OmitProps, useTheme } from \"react-better-core\";\n\nimport { ComponentStyle } from \"../types/components\";\n\nconst touchableHighlightStyleMoveToContent: (keyof ComponentStyle)[] = [\n \"backgroundColor\",\n \"padding\",\n \"paddingTop\",\n \"paddingBottom\",\n \"paddingLeft\",\n \"paddingRight\",\n \"paddingHorizontal\",\n \"paddingVertical\",\n \"borderWidth\",\n \"borderTopWidth\",\n \"borderBottomWidth\",\n \"borderLeftWidth\",\n \"borderRightWidth\",\n \"borderColor\",\n \"borderTopColor\",\n \"borderBottomColor\",\n \"borderLeftColor\",\n \"borderRightColor\",\n];\n\nconst touchableNativeFeedbackStyleMoveToHolder: (keyof ComponentStyle)[] = [\n \"width\",\n \"height\",\n \"margin\",\n \"marginTop\",\n \"marginBottom\",\n \"marginLeft\",\n \"marginRight\",\n \"marginHorizontal\",\n \"marginVertical\",\n];\n\nfunction alphaToHex(alpha: number): string {\n const clamped = Math.min(1, Math.max(0, alpha));\n const value = Math.round(clamped * 255);\n\n return value.toString(16).padStart(2, \"0\");\n}\n\nexport type ViewProps<Value = unknown> = {\n /** @default false */\n isRow?: boolean;\n value?: Value;\n /** @default false */\n disabled?: boolean;\n /** @default \"highlight\" */\n pressType?: \"opacity\" | \"highlight\";\n /** @default 0.8 */\n pressStrength?: number;\n onPress?: (event: GestureResponderEvent) => void;\n onPressIn?: (event: GestureResponderEvent) => void;\n onPressOut?: (event: GestureResponderEvent) => void;\n onLongPress?: (event: GestureResponderEvent) => void;\n onPressWithValue?: (value: Value) => void;\n} & OmitProps<NativeViewProps, \"style\" | \"onBlur\" | \"onFocus\"> &\n ComponentStyle;\n\ntype ViewComponentType = {\n <Value>(props: ViewProps<Value>): React.ReactElement;\n box: <Value>(\n props: ViewProps<Value> & {\n /** @default false */\n withShadow?: boolean;\n },\n ) => React.ReactElement;\n};\n\nconst ViewComponent: ViewComponentType = function View<Value>({\n isRow,\n value,\n disabled,\n pressType = \"highlight\",\n pressStrength = 0.8,\n onPress,\n onPressIn,\n onPressOut,\n onLongPress,\n onPressWithValue,\n children,\n ...props\n}: ViewProps<Value>) {\n const theme = useTheme();\n\n const style = useMemo<NativeViewStyle>(\n () => ({\n flexDirection: isRow ? \"row\" : \"column\",\n ...props,\n ...(props.shadowOffsetWidth !== undefined || props.shadowOffsetHeight !== undefined\n ? {\n shadowOffset: {\n width: props.shadowOffsetWidth ?? 0,\n height: props.shadowOffsetHeight ?? 0,\n },\n }\n : {}),\n }),\n [isRow, props],\n );\n const touchableHighlightStyle = useMemo<NativeViewStyle>(\n () => ({\n ...style,\n ...touchableHighlightStyleMoveToContent.reduce<NativeViewStyle>((previousValue, currentValue) => {\n if (currentValue === \"shadowOffsetWidth\" || currentValue === \"shadowOffsetHeight\")\n previousValue.shadowOffset = undefined;\n else previousValue[currentValue] = undefined;\n\n return previousValue;\n }, {}),\n }),\n [style],\n );\n const touchableHighlightContentProps = useMemo<ViewProps>(\n () =>\n touchableHighlightStyleMoveToContent.reduce<ViewProps>((previousValue, currentValue) => {\n (previousValue[currentValue] as any) = props[currentValue];\n\n return previousValue;\n }, {}),\n [props],\n );\n const touchableNativeFeedbackHolderStyle = useMemo<NativeViewStyle>(\n () =>\n touchableNativeFeedbackStyleMoveToHolder.reduce<ViewProps>((previousValue, currentValue) => {\n (previousValue[currentValue] as any) = props[currentValue];\n\n return previousValue;\n }, {}),\n [props],\n );\n const touchableNativeFeedbackContentStyle = useMemo<ViewProps>(\n () => ({\n ...style,\n ...touchableNativeFeedbackStyleMoveToHolder.reduce<NativeViewStyle>(\n (previousValue, currentValue) => {\n if (currentValue === \"shadowOffsetWidth\" || currentValue === \"shadowOffsetHeight\")\n previousValue.shadowOffset = undefined;\n else previousValue[currentValue] = undefined;\n\n return previousValue;\n },\n {},\n ),\n }),\n [style],\n );\n\n const pressEvents = useMemo(\n () =>\n !disabled\n ? {\n onPress: (event: GestureResponderEvent) => {\n onPress?.(event);\n\n if (value !== undefined) onPressWithValue?.(value);\n },\n onPressIn,\n onPressOut,\n onLongPress,\n }\n : {},\n [disabled, onPress, onPressIn, onPressOut, onLongPress, onPressWithValue, value],\n );\n\n const androidBoxShadow =\n Platform.OS === \"android\"\n ? props.shadowOffsetWidth !== undefined || props.shadowOffsetHeight !== undefined\n ? `${props.shadowOffsetWidth ?? 0}px ${props.shadowOffsetHeight ?? 0}px ${props.shadowRadius}px ${\n props.shadowColor?.toString() ?? \"#000000\"\n }`\n : undefined\n : undefined;\n\n const isPressable = onPress || onPressIn || onPressOut || onLongPress || onPressWithValue;\n\n return isPressable ? (\n pressType === \"opacity\" ? (\n <TouchableOpacity\n style={style}\n activeOpacity={pressStrength}\n boxShadow={androidBoxShadow}\n {...pressEvents}\n {...props}\n >\n {children}\n </TouchableOpacity>\n ) : pressType === \"highlight\" ? (\n Platform.OS === \"ios\" ? (\n <TouchableHighlight\n activeOpacity={pressStrength}\n underlayColor={theme.colors.textPrimary}\n style={touchableHighlightStyle}\n {...pressEvents}\n {...props}\n >\n <ViewComponent\n width=\"100%\"\n borderRadius={props.borderRadius}\n borderTopLeftRadius={props.borderTopLeftRadius}\n borderTopRightRadius={props.borderTopRightRadius}\n borderBottomLeftRadius={props.borderBottomLeftRadius}\n borderBottomRightRadius={props.borderBottomRightRadius}\n {...touchableHighlightContentProps}\n >\n {children}\n </ViewComponent>\n </TouchableHighlight>\n ) : Platform.OS === \"android\" ? (\n <ViewComponent\n {...touchableNativeFeedbackHolderStyle}\n borderRadius={props.borderRadius}\n borderTopLeftRadius={props.borderTopLeftRadius}\n borderTopRightRadius={props.borderTopRightRadius}\n borderBottomLeftRadius={props.borderBottomLeftRadius}\n borderBottomRightRadius={props.borderBottomRightRadius}\n boxShadow={androidBoxShadow}\n overflow=\"hidden\"\n pointerEvents=\"box-none\"\n >\n <TouchableNativeFeedback\n {...pressEvents}\n {...props}\n background={TouchableNativeFeedback.Ripple(\n `${theme.colors.textPrimary}${alphaToHex(1 - pressStrength)}`,\n false,\n )}\n useForeground\n touchSoundDisabled\n >\n <ViewComponent flex={1} {...touchableNativeFeedbackContentStyle}>\n {children}\n </ViewComponent>\n </TouchableNativeFeedback>\n </ViewComponent>\n ) : (\n <></>\n )\n ) : (\n <></>\n )\n ) : (\n <NativeView boxShadow={androidBoxShadow} style={style} {...props}>\n {children}\n </NativeView>\n );\n};\n\nViewComponent.box = function Box({ withShadow, ...props }) {\n const theme = useTheme();\n\n const shadowProps = useMemo<ViewProps>(\n () =>\n withShadow\n ? {\n shadowOpacity: 0.2,\n shadowOffsetHeight: 10,\n shadowRadius: 10,\n shadowColor: Platform.OS === \"android\" ? \"#00000020\" : undefined,\n }\n : {},\n [],\n );\n\n return (\n <ViewComponent\n width=\"100%\"\n backgroundColor={theme.colors.backgroundContent}\n borderWidth={1}\n borderColor={theme.colors.border}\n borderRadius={theme.styles.borderRadius}\n paddingHorizontal={theme.styles.space}\n paddingVertical={theme.styles.gap}\n {...(shadowProps as any)}\n {...props}\n />\n );\n} as ViewComponentType[\"box\"];\n\nconst View = memo(ViewComponent) as any as typeof ViewComponent & {\n box: typeof ViewComponent.box;\n};\n\nView.box = ViewComponent.box;\n\nexport default View;\n","import { memo, useMemo } from \"react\";\nimport { Text as NativeText, TextProps as NativeTextProps, TextStyle as NativeTextStyle } from \"react-native\";\nimport { OmitProps, useTheme } from \"react-better-core\";\n\nimport { ComponentStyle } from \"../types/components\";\n\nexport type TextProps = {} & OmitProps<NativeTextProps, \"style\"> & ComponentStyle<NativeTextStyle>;\n\ntype TextComponentType = {\n (props: TextProps): React.ReactElement;\n title: (props: TextProps) => React.ReactElement;\n subtitle: (props: TextProps) => React.ReactElement;\n body: (props: TextProps) => React.ReactElement;\n caption: (props: TextProps) => React.ReactElement;\n unknown: (props: TextProps) => React.ReactElement;\n};\n\nconst TextComponent: TextComponentType = function Text({ selectionColor, children, ...props }) {\n const theme = useTheme();\n\n const style = useMemo<NativeTextStyle>(\n () => ({\n fontSize: 16,\n color: theme.colors.textPrimary,\n ...props,\n }),\n [theme, props],\n );\n\n return (\n <NativeText selectionColor={selectionColor ?? theme.colors.primary} style={style} {...props}>\n {children}\n </NativeText>\n );\n};\n\nTextComponent.title = function Title(props) {\n return <TextComponent fontSize={32} fontWeight={700} {...props} />;\n} as TextComponentType[`title`];\n\nTextComponent.subtitle = function Subtitle(props) {\n return <TextComponent fontSize={24} fontWeight={700} {...props} />;\n} as TextComponentType[`subtitle`];\n\nTextComponent.body = function Body(props) {\n const theme = useTheme();\n\n return <TextComponent color={theme.colors.textSecondary} {...props} />;\n} as TextComponentType[`body`];\n\nTextComponent.caption = function Caption(props) {\n const theme = useTheme();\n\n return <TextComponent fontSize={14} color={theme.colors.textSecondary} {...props} />;\n} as TextComponentType[`caption`];\n\nTextComponent.unknown = function Unknown(props) {\n const theme = useTheme();\n\n return (\n <TextComponent fontStyle=\"italic\" textAlign=\"center\" color={theme.colors.textSecondary} {...props} />\n );\n} as TextComponentType[`unknown`];\n\nconst Text = memo(TextComponent) as any as typeof TextComponent & {\n title: typeof TextComponent.title;\n subtitle: typeof TextComponent.subtitle;\n body: typeof TextComponent.body;\n caption: typeof TextComponent.caption;\n unknown: typeof TextComponent.unknown;\n};\n\nText.title = TextComponent.title;\nText.subtitle = TextComponent.subtitle;\nText.body = TextComponent.body;\nText.caption = TextComponent.caption;\nText.unknown = TextComponent.unknown;\n\nexport default Text;\n","import { memo } from \"react\";\nimport { ColorValue, Platform } from \"react-native\";\nimport { AnyOtherString, AssetName, IconName, LoaderName, useLoader, useTheme } from \"react-better-core\";\n\nimport { pressStrength } from \"../utils/variableFunctions\";\n\nimport View, { ViewProps } from \"./View\";\nimport Text, { TextProps } from \"./Text\";\nimport Animate from \"./Animate\";\nimport Loader from \"./Loader\";\n\nexport type ButtonProps<Value> = {\n text?: string;\n /** @default 16 */\n textFontSize?: TextProps[\"fontSize\"];\n /** @default 700 */\n textFontWeight?: TextProps[\"fontWeight\"];\n textDecorationLine?: TextProps[\"textDecorationLine\"];\n /** @default \"base\" */\n textColor?: ColorValue;\n\n icon?: IconName | AnyOtherString;\n /** @default \"left\" */\n iconPosition?: \"left\" | \"right\";\n /** @default Same as text color */\n iconColor?: string;\n /** @default 16 */\n iconSize?: number;\n\n image?: AssetName | AnyOtherString;\n /** @default \"left\" */\n imagePosition?: \"left\" | \"right\";\n /** @default 16 */\n imageWidth?: number;\n /** @default undefined */\n imageHeight?: number;\n\n loaderName?: LoaderName | AnyOtherString;\n /** @default false */\n isLoading?: boolean;\n\n isSmall?: true | \"left\" | \"center\" | \"right\";\n} & ViewProps<Value>;\n\ntype InternalButtonProps<Value> = ButtonProps<Value> & {\n animateOpacity?: number;\n};\n\nexport type ButtonRef = {};\n\ntype ButtonComponentType = {\n <Value>(props: ButtonProps<Value>): React.ReactElement;\n secondary: <Value>(props: ButtonProps<Value>) => React.ReactElement;\n destructive: <Value>(props: ButtonProps<Value>) => React.ReactElement;\n text: <Value>(props: ButtonProps<Value>) => React.ReactElement;\n};\n\nconst ButtonComponent = function Button<Value>({\n text,\n textFontSize = 16,\n textFontWeight = 700,\n textDecorationLine,\n textColor,\n\n icon,\n iconPosition = \"left\",\n iconColor,\n iconSize,\n\n image,\n imagePosition = \"left\",\n imageWidth,\n imageHeight,\n\n loaderName,\n isLoading,\n\n isSmall,\n\n animateOpacity,\n\n flex,\n alignSelf,\n disabled,\n ...props\n}: InternalButtonProps<Value>) {\n const theme = useTheme();\n const isLoadingLoader = useLoader(loaderName);\n\n const isLoadingElement = isLoading || isLoadingLoader;\n const isDisabled = disabled || isLoadingElement;\n\n const lineHeight = 20;\n const color = textColor ?? theme.colors.base;\n const paddingVertical = props.paddingVertical\n ? parseFloat(props.paddingVertical.toString())\n : theme.styles.space;\n const paddingHorizontal = props.paddingHorizontal\n ? parseFloat(props.paddingHorizontal.toString())\n : theme.styles.space + theme.styles.gap;\n\n const buttonHeight = paddingVertical + lineHeight + paddingVertical;\n\n return (\n <Animate.View\n position=\"relative\"\n flex={flex}\n alignSelf={\n alignSelf ??\n (isSmall === \"left\"\n ? \"flex-start\"\n : isSmall === \"right\"\n ? \"flex-end\"\n : isSmall === \"center\"\n ? \"center\"\n : isSmall\n ? \"baseline\"\n : undefined)\n }\n initialOpacity={1}\n animateOpacity={animateOpacity ?? (disabled ? 0.6 : 1)}\n >\n <View\n position=\"relative\"\n width={!isSmall ? \"100%\" : undefined}\n height={Platform.OS === \"android\" ? buttonHeight : undefined}\n alignItems=\"center\"\n justifyContent=\"center\"\n backgroundColor={theme.colors.primary}\n borderRadius={theme.styles.borderRadius}\n paddingVertical={paddingVertical}\n paddingHorizontal={paddingHorizontal}\n disabled={isDisabled}\n {...props}\n >\n <Animate.View initialOpacity={1} animateOpacity={isLoadingElement ? 0 : 1}>\n {text && (\n <Text\n fontSize={textFontSize}\n fontWeight={textFontWeight}\n textDecorationLine={textDecorationLine}\n textDecorationColor={color}\n textAlign=\"center\"\n lineHeight={lineHeight}\n color={color}\n >\n {text}\n </Text>\n )}\n </Animate.View>\n\n <Animate.View\n position=\"absolute\"\n width=\"100%\"\n height={buttonHeight}\n left={paddingHorizontal}\n alignItems=\"center\"\n justifyContent=\"center\"\n initialOpacity={0}\n animateOpacity={isLoadingElement ? 1 : 0}\n >\n <Loader color={color} />\n </Animate.View>\n </View>\n </Animate.View>\n );\n};\n\nButtonComponent.secondary = function Secondary(props) {\n const theme = useTheme();\n\n return (\n <ButtonComponent\n backgroundColor={theme.colors.backgroundContent}\n borderWidth={1}\n borderColor={theme.colors.border}\n textColor={theme.colors.textPrimary}\n pressStrength={pressStrength().z05}\n animateOpacity={props.disabled ? 0.4 : 1}\n {...props}\n />\n );\n} as ButtonComponentType[`secondary`];\n\nButtonComponent.destructive = function Destructive(props) {\n const theme = useTheme();\n\n return <ButtonComponent backgroundColor={theme.colors.error} {...props} />;\n} as ButtonComponentType[`destructive`];\n\nButtonComponent.text = function ButtonText(props) {\n const theme = useTheme();\n\n return (\n <ButtonComponent\n width=\"auto\"\n textColor={theme.colors.textPrimary}\n textDecorationLine=\"underline\"\n backgroundColor=\"transparent\"\n paddingHorizontal={theme.styles.space}\n paddingVertical={theme.styles.gap}\n isSmall\n pressType=\"opacity\"\n {...props}\n />\n );\n} as ButtonComponentType[`text`];\n\nconst Button = memo(ButtonComponent) as any as ButtonComponentType & {\n secondary: typeof ButtonComponent.secondary;\n destructive: typeof ButtonComponent.destructive;\n text: typeof ButtonComponent.text;\n};\n\nButton.secondary = ButtonComponent.secondary;\nButton.destructive = ButtonComponent.destructive;\nButton.text = ButtonComponent.text;\n\nexport default Button;\n","import { memo, useMemo } from \"react\";\nimport { TextStyle, ViewStyle } from \"react-native\";\nimport { Motion, PropsTransforms, EaseFunction, MotionTransition } from \"@legendapp/motion\";\n\nimport { ComponentStyle } from \"../types/components\";\n\nimport { useComponentPropsGrouper } from \"../utils/hooks\";\n\nconst defaultTransitionDuration = 0.15 * 1000;\n\ntype ComponentStyleProps<Style extends ViewStyle = ViewStyle> = Omit<\n ComponentStyle<Style>,\n \"transformOrigin\"\n>;\ntype AnimationStyleProps<Style extends ViewStyle = ViewStyle> = ComponentStyle<Style> & PropsTransforms;\n\ntype InitialComponentStyle<Style extends ViewStyle = ViewStyle> = {\n [CSSProperty in keyof AnimationStyleProps<Style> as `initial${Capitalize<\n CSSProperty & string\n >}`]: AnimationStyleProps<Style>[CSSProperty];\n};\ntype animateComponentStyle<Style extends ViewStyle = ViewStyle> = {\n [CSSProperty in keyof AnimationStyleProps<Style> as `animate${Capitalize<\n CSSProperty & string\n >}`]: AnimationStyleProps<Style>[CSSProperty];\n};\ntype whileTapComponentStyle<Style extends ViewStyle = ViewStyle> = {\n [CSSProperty in keyof AnimationStyleProps<Style> as `whileTap${Capitalize<\n CSSProperty & string\n >}`]: AnimationStyleProps<Style>[CSSProperty];\n};\n\ntype TransitionProps = {\n transitionLoop?: number;\n} & (\n | {\n transitionType?: \"tween\" | \"timing\" | undefined;\n transitionEase?: EaseFunction | ((value: number) => number) | undefined;\n transitionEasing?: EaseFunction | ((value: number) => number) | undefined;\n transitionDuration?: number | undefined;\n transitionDelay?: number | undefined;\n }\n | {\n transitionType: \"spring\";\n transitionFriction?: number;\n transitionTension?: number;\n transitionSpeed?: number;\n transitionBounciness?: number;\n transitionStiffness?: number;\n transitionDamping?: number;\n transitionMass?: number;\n transitionOvershootClamping?: boolean | undefined;\n transitionRestDisplacementThreshold?: number | undefined;\n transitionRestSpeedThreshold?: number | undefined;\n transitionVelocity?:\n | number\n | {\n x: number;\n y: number;\n }\n | undefined;\n }\n);\n\ntype AnimateCommonProps = {\n transformOriginX?: number;\n transformOriginY?: number;\n children?: React.ReactNode;\n} & TransitionProps;\n\nexport type AnimateViewProps = {} & AnimateCommonProps &\n ComponentStyleProps &\n InitialComponentStyle &\n animateComponentStyle &\n whileTapComponentStyle;\n\nexport type AnimateTextProps = {} & AnimateCommonProps &\n ComponentStyleProps<TextStyle> &\n InitialComponentStyle<TextStyle> &\n animateComponentStyle<TextStyle> &\n whileTapComponentStyle<TextStyle>;\n\nconst Animate = {\n View: memo(function View({ transformOriginX, transformOriginY, children, ...props }: AnimateViewProps) {\n const initialProps = useComponentPropsGrouper(props, \"initial\");\n const animateProps = useComponentPropsGrouper(props, \"animate\");\n const whileTapProps = useComponentPropsGrouper(props, \"whileTap\");\n const transitionProps = useComponentPropsGrouper(props, \"transition\");\n\n const transition = useMemo<MotionTransition>(\n () => ({\n type: \"timing\",\n duration: defaultTransitionDuration,\n ...(transitionProps.withPrefixStyle as any),\n }),\n [transitionProps.withPrefixStyle],\n );\n const transformOrigin = useMemo(\n () =>\n transformOriginX !== undefined || transformOriginY !== undefined\n ? {\n x: transformOriginX ?? 0,\n y: transformOriginY ?? 0,\n }\n : undefined,\n [transformOriginX, transformOriginY],\n );\n\n const content = (\n <Motion.View\n style={initialProps.style}\n initial={initialProps.withPrefixStyle}\n animate={animateProps.withPrefixStyle}\n transition={transition}\n whileTap={whileTapProps.withPrefixStyle}\n transformOrigin={transformOrigin}\n >\n {children}\n </Motion.View>\n );\n\n return Object.keys(whileTapProps.withPrefixStyle).length > 0 ? (\n <Motion.Pressable>{content}</Motion.Pressable>\n ) : (\n content\n );\n }),\n Text: memo(function Text({ transformOriginX, transformOriginY, children, ...props }: AnimateTextProps) {\n const initialProps = useComponentPropsGrouper(props, \"initial\");\n const animateProps = useComponentPropsGrouper(props, \"animate\");\n const whileTapProps = useComponentPropsGrouper(props, \"whileTap\");\n const transitionProps = useComponentPropsGrouper(props, \"transition\");\n\n const transition = useMemo<MotionTransition>(\n () => ({\n type: \"timing\",\n duration: defaultTransitionDuration,\n ...(transitionProps.withPrefixStyle as any),\n }),\n [transitionProps.withPrefixStyle],\n );\n const transformOrigin = useMemo(\n () =>\n transformOriginX !== undefined || transformOriginY !== undefined\n ? {\n x: transformOriginX ?? 0,\n y: transformOriginY ?? 0,\n }\n : undefined,\n [transformOriginX, transformOriginY],\n );\n\n const content = (\n <Motion.Text\n style={initialProps.style}\n initial={initialProps.withPrefixStyle}\n animate={animateProps.withPrefixStyle}\n transition={transition}\n whileTap={whileTapProps.withPrefixStyle}\n transformOrigin={transformOrigin}\n >\n {children}\n </Motion.Text>\n );\n\n return Object.keys(whileTapProps.withPrefixStyle).length > 0 ? (\n <Motion.Pressable>{content}</Motion.Pressable>\n ) : (\n content\n );\n }),\n};\n\nexport default Animate;\n","import { memo } from \"react\";\nimport { ActivityIndicator, ColorValue } from \"react-native\";\nimport { OmitProps, useTheme } from \"react-better-core\";\n\nimport { ComponentMarginProps } from \"../types/components\";\n\nimport View from \"./View\";\nimport Text from \"./Text\";\n\nexport type LoaderSize = \"small\" | \"large\";\n\nexport type LoaderProps = {\n /** @default \"small\" */\n size?: LoaderSize;\n color?: ColorValue;\n} & ComponentMarginProps;\n\ntype LoaderComponentType = {\n (props: LoaderProps): React.ReactElement;\n box: (\n props: OmitProps<LoaderProps, \"size\"> & {\n /** @default \"Loading...\" */\n text?: string;\n /** @default \"large\" */\n size?: LoaderSize;\n },\n ) => React.ReactElement;\n text: (\n props: LoaderProps & {\n /** @default \"Loading...\" */\n text?: string;\n },\n ) => React.ReactElement;\n};\n\nconst LoaderComponent: LoaderComponentType = function Loader({ size = \"small\", color, ...props }) {\n const theme = useTheme();\n\n return (\n <View {...props}>\n <ActivityIndicator size={size} color={color ?? theme.colors.textPrimary} />\n </View>\n );\n};\n\nLoaderComponent.box = function Box({ text = \"Loading...\", size = \"large\", color, ...props }) {\n const theme = useTheme();\n\n return (\n <View\n width=\"100%\"\n alignItems=\"center\"\n gap={theme.styles.gap}\n marginVertical={theme.styles.space}\n {...props}\n >\n <Loader size={size} color={color} />\n\n {text && (\n <Text textAlign=\"center\" color={color ?? theme.colors.textSecondary}>\n {text}\n </Text>\n )}\n </View>\n );\n} as LoaderComponentType[`box`];\n\nLoaderComponent.text = function LoaderText({ text = \"Loading...\", size, color, ...props }) {\n const theme = useTheme();\n\n return (\n <View\n isRow\n alignItems=\"center\"\n justifyContent=\"center\"\n gap={theme.styles.gap}\n marginVertical={theme.styles.space}\n {...props}\n >\n <Loader size={size} color={color} />\n\n {text && (\n <Text textAlign=\"center\" color={color ?? theme.colors.textSecondary}>\n {text}\n </Text>\n )}\n </View>\n );\n} as LoaderComponentType[\"text\"];\n\nconst Loader = memo(LoaderComponent) as any as typeof LoaderComponent & {\n box: typeof LoaderComponent.box;\n text: typeof LoaderComponent.text;\n};\n\nLoader.box = LoaderComponent.box;\nLoader.text = LoaderComponent.text;\n\nexport default Loader;\n","import { memo, useCallback, useMemo } from \"react\";\nimport { KeyboardAvoidingView, Platform, RefreshControl, ScrollView, ViewStyle } from \"react-native\";\nimport { useBooleanState, useTheme } from \"react-better-core\";\n\nimport { useDevice, useKeyboard } from \"../utils/hooks\";\n\nimport View, { ViewProps } from \"./View\";\n\nexport type ScreenHolderProps = {\n /** @default false */\n noScroll?: boolean;\n /** @default false */\n noSideSpace?: boolean;\n /** @default 1 (second) */\n refreshTimeout?: number;\n onRefresh?: () => void;\n onRefreshEnd?: () => void;\n /** @default \"backgroundBase\" */\n backgroundColor?: ViewProps[\"backgroundColor\"];\n /** @default false */\n insideTopSafeArea?: boolean;\n /** @default false */\n insideBottomSafeArea?: boolean;\n /** @default 0 */\n bottomSpace?: number;\n footer?: React.ReactNode;\n /** @default false */\n keepFooterOnKeyboardOpened?: boolean;\n keyboardVerticalOffset?: number;\n /** @default false */\n withNoHeader?: boolean;\n children?: React.ReactNode;\n};\n\ntype ScreenHolderComponentType = {\n (props: ScreenHolderProps): React.ReactElement;\n footer: (props: FooterProps) => React.ReactElement;\n};\n\nconst ScreenHolderComponent: ScreenHolderComponentType = ({\n noScroll,\n noSideSpace,\n refreshTimeout = 1,\n onRefresh,\n onRefreshEnd,\n backgroundColor,\n insideTopSafeArea,\n insideBottomSafeArea,\n bottomSpace = 0,\n footer,\n keepFooterOnKeyboardOpened,\n keyboardVerticalOffset,\n withNoHeader,\n children,\n}) => {\n const theme = useTheme();\n const device = useDevice();\n const keyboard = useKeyboard();\n\n const [isRefreshing, setIsRefreshing] = useBooleanState();\n\n const keyboardAvoidingViewStyle = useMemo<ViewStyle>(\n () => ({\n flex: 1,\n }),\n [],\n );\n\n const onRefreshElement = useCallback(() => {\n setIsRefreshing.setTrue();\n onRefresh?.();\n\n setTimeout(() => {\n setIsRefreshing.setFalse();\n onRefreshEnd?.();\n }, refreshTimeout * 1000);\n }, [onRefresh, onRefreshEnd, refreshTimeout]);\n\n const content = (\n <View\n flex={1}\n paddingHorizontal={!noSideSpace ? theme.styles.space : undefined}\n paddingTop={theme.styles.gap + (insideTopSafeArea ? device.safeArea.afterCalculations.top : 0)}\n paddingBottom={\n Platform.OS === \"ios\" && keyboard.isOpened\n ? device.safeArea.afterCalculations.top\n : bottomSpace + (insideBottomSafeArea ? device.safeArea.afterCalculations.bottom : 0)\n }\n >\n {children}\n </View>\n );\n\n const withRefresh = onRefresh || onRefreshEnd;\n\n return (\n <View flex={1} backgroundColor={backgroundColor ?? theme.colors.backgroundBase}>\n <KeyboardAvoidingView\n style={keyboardAvoidingViewStyle}\n keyboardVerticalOffset={\n keyboardVerticalOffset ??\n (withNoHeader\n ? Platform.OS === \"ios\"\n ? 0\n : theme.styles.gap\n : keepFooterOnKeyboardOpened\n ? Platform.OS === \"ios\"\n ? device.safeArea.afterCalculations.bottom\n : theme.styles.gap\n : undefined)\n }\n behavior={Platform.OS === \"ios\" ? \"padding\" : \"height\"}\n >\n <View flex={1}>\n {noScroll ? (\n content\n ) : (\n <ScrollView\n refreshControl={\n withRefresh ? (\n <RefreshControl refreshing={isRefreshing} onRefresh={onRefreshElement} />\n ) : undefined\n }\n >\n {content}\n </ScrollView>\n )}\n </View>\n\n {keepFooterOnKeyboardOpened || (Platform.OS === \"ios\" ? !keyboard.willOpen : !keyboard.isOpened)\n ? footer && <View>{footer}</View>\n : !withNoHeader && (\n <View\n width=\"100%\"\n height={\n device.safeArea.afterCalculations.bottom +\n (Platform.OS === \"android\" ? theme.styles.gap : 0)\n }\n />\n )}\n </KeyboardAvoidingView>\n </View>\n );\n};\n\nexport type FooterProps = {\n /** @default false */\n noSideSpace?: boolean;\n /** @default \"backgroundBase\" */\n backgroundColor?: ViewProps[\"backgroundColor\"];\n /** @default false */\n insideBottomSafeArea?: boolean;\n /** @default false */\n withNoHeader?: boolean;\n children?: React.ReactNode;\n};\n\nScreenHolderComponent.footer = function Footer({\n noSideSpace,\n backgroundColor,\n insideBottomSafeArea,\n withNoHeader,\n children,\n}) {\n const theme = useTheme();\n const device = useDevice();\n const keyboard = useKeyboard();\n\n return (\n <View\n backgroundColor={backgroundColor ?? theme.colors.backgroundBase}\n paddingHorizontal={!noSideSpace ? theme.styles.space : undefined}\n paddingTop={theme.styles.gap}\n paddingBottom={\n (Platform.OS === \"ios\" ? keyboard.willOpen : keyboard.isOpened) && withNoHeader\n ? theme.styles.gap\n : insideBottomSafeArea\n ? device.safeArea.afterCalculations.bottom\n : undefined\n }\n >\n {children}\n </View>\n );\n} as ScreenHolderComponentType[`footer`];\n\nconst ScreenHolder = memo(ScreenHolderComponent) as any as typeof ScreenHolderComponent & {\n footer: typeof ScreenHolderComponent.footer;\n};\n\nScreenHolder.footer = ScreenHolderComponent.footer;\n\nexport default ScreenHolder;\n","import { memo, useEffect, useMemo } from \"react\";\nimport { AnyOtherString, AssetName, OmitProps, useBetterCoreContext, useTheme } from \"react-better-core\";\nimport {\n ImageSourcePropType,\n Image as NativeImage,\n ImageProps as NativeImageProps,\n ImageStyle as NativeImageStyle,\n} from \"react-native\";\n\nimport { ComponentStyle } from \"../types/components\";\nimport View from \"./View\";\nimport Text from \"./Text\";\n\nexport type ImageProps = {\n name?: AssetName | AnyOtherString;\n source?: ImageSourcePropType;\n /** @default false */\n withDevFittingMode?: boolean;\n} & OmitProps<NativeImageProps, \"source\"> &\n ComponentStyle<NativeImageStyle>;\n\ntype ImageComponentType = {\n (props: ImageProps): React.ReactElement;\n profileImage: (\n props: OmitProps<ImageProps, \"width\" | \"height\"> & {\n /** @default 50 */\n size?: number;\n letters?: string;\n backgroundColor?: string;\n },\n ) => React.ReactElement;\n};\n\nconst ImageComponent: ImageComponentType = function Image({ name, source, withDevFittingMode, ...props }) {\n const { assets } = useBetterCoreContext();\n\n const style = useMemo<NativeImageStyle>(\n () => ({\n width: 100,\n height: 100,\n ...(withDevFittingMode\n ? {\n borderWidth: 1,\n borderColor: \"#eb39f7\",\n }\n : {}),\n ...props,\n }),\n [withDevFittingMode, props],\n );\n\n useEffect(() => {\n if (!name) return;\n\n if (!assets[name.toString()])\n console.warn(\n `The asset \\`${name}\\` you are trying to use does not exist. Make sure to add it to the \\`assets\\` object in \\`<BetterComponentsProvider>\\` config value prop.`,\n );\n }, [assets, name]);\n\n return <NativeImage source={name ? (assets[name.toString()] as any) : source} style={style} {...props} />;\n};\n\nImageComponent.profileImage = function ProfileImage({ size = 50, letters, backgroundColor, ...props }) {\n const theme = useTheme();\n\n return letters ? (\n <View\n width={size}\n height={size}\n backgroundColor={backgroundColor ?? theme.colors.backgroundSecondary}\n borderWidth={1}\n borderColor={theme.colors.border}\n borderRadius={999}\n alignItems=\"center\"\n justifyContent=\"center\"\n {...props}\n >\n <Text fontSize={size / 2.5} fontWeight={700} marginTop={1}>\n {letters.toUpperCase().slice(0, 2)}\n </Text>\n </View>\n ) : (\n <ImageComponent\n width={size}\n height={size}\n borderWidth={1}\n borderColor={theme.colors.border}\n borderRadius={999}\n objectFit=\"cover\"\n {...props}\n />\n );\n} as ImageComponentType[`profileImage`];\n\n/** @description size is set to 100x100 by default */\nconst Image = memo(ImageComponent) as any as typeof ImageComponent & {\n profileImage: typeof ImageComponent.profileImage;\n};\n\nImage.profileImage = ImageComponent.profileImage;\n\nexport default Image;\n","import { forwardRef, memo, useCallback, useEffect, useImperativeHandle, useMemo, useState } from \"react\";\nimport { FocusEvent, TextInput, TextStyle } from \"react-native\";\nimport {\n darkenColor,\n lightenColor,\n useBetterCoreContext,\n useBooleanState,\n useTheme,\n} from \"react-better-core\";\n\nimport { ComponentPropWithRef } from \"../types/components\";\n\nimport View from \"./View\";\nimport Text from \"./Text\";\nimport Animate from \"./Animate\";\n\nexport type InputFieldProps = {\n placeholder?: string;\n prefix?: string;\n suffix?: string;\n defaultValue?: string;\n value?: string | number;\n /** @default true */\n editable?: boolean;\n /** @default false */\n autoFocus?: boolean;\n autoCapitalize?: React.ComponentProps<typeof TextInput>[\"autoCapitalize\"];\n autoComplete?: React.ComponentProps<typeof TextInput>[\"autoComplete\"];\n autoCorrect?: React.ComponentProps<typeof TextInput>[\"autoCorrect\"];\n /** @default \"default\" */\n keyboardAppearance?: React.ComponentProps<typeof TextInput>[\"keyboardAppearance\"];\n keyboardType?: React.ComponentProps<typeof TextInput>[\"keyboardType\"];\n /** @default false */\n secureTextEntry?: boolean;\n onFocus?: (event: FocusEvent) => void;\n onBlur?: (event: FocusEvent) => void;\n onChange?: (text: string) => void;\n};\n\nexport type InputFieldRef = {};\n\ntype InputFieldComponentType = {\n (props: ComponentPropWithRef<InputFieldRef, InputFieldProps>): React.ReactElement;\n email: (props: ComponentPropWithRef<InputFieldRef, InputFieldProps>) => React.ReactElement;\n password: (props: ComponentPropWithRef<InputFieldRef, InputFieldProps>) => React.ReactElement;\n};\n\nconst InputFieldComponent: InputFieldComponentType = forwardRef<InputFieldRef, InputFieldProps>(\n (\n {\n placeholder,\n prefix,\n suffix,\n defaultValue,\n value,\n editable = true,\n autoFocus,\n autoCapitalize,\n autoComplete,\n autoCorrect,\n keyboardAppearance = \"default\",\n keyboardType,\n secureTextEntry,\n onFocus,\n onBlur,\n onChange,\n },\n ref,\n ) => {\n const theme = useTheme();\n const { colorTheme } = useBetterCoreContext();\n\n const [internalValue, setInternalValue] = useState(value?.toString() || defaultValue || \"\");\n const [isFocused, setIsFocused] = useBooleanState();\n\n const borderWidth = 1;\n const lineHeight = 20;\n const paddingHorizontal = theme.styles.space;\n const paddingVertical = (theme.styles.space + theme.styles.gap) / 2;\n const height = borderWidth + paddingVertical + lineHeight + paddingVertical + borderWidth;\n\n const onFocusElement = useCallback((event: FocusEvent) => {\n setIsFocused.setTrue();\n onFocus?.(event);\n }, []);\n const onBlurElement = useCallback((event: FocusEvent) => {\n setIsFocused.setFalse();\n onBlur?.(event);\n }, []);\n const onChangeText = useCallback(\n (text: string) => {\n setInternalValue(text);\n onChange?.(text);\n },\n [onChange],\n );\n\n const textInputStyle = useMemo<TextStyle>(\n () => ({\n flex: 1,\n fontSize: 16,\n lineHeight,\n color: theme.colors.textPrimary,\n paddingHorizontal,\n paddingVertical,\n }),\n [theme.colors, lineHeight, paddingHorizontal, paddingVertical],\n );\n\n useEffect(() => {\n if (value === undefined) return;\n\n setInternalValue(value.toString());\n }, [value]);\n\n useImperativeHandle(\n ref,\n (): InputFieldRef => {\n return {};\n },\n [],\n );\n\n const prefixSuffixBackgroundColor =\n colorTheme === \"light\"\n ? darkenColor(theme.colors.backgroundContent, 0.03)\n : lightenColor(theme.colors.backgroundContent, 0.1);\n\n return (\n <View isRow position=\"relative\" alignItems=\"center\" height={height}>\n {prefix && (\n <View\n isRow\n height=\"100%\"\n backgroundColor={prefixSuffixBackgroundColor}\n alignItems=\"center\"\n borderWidth={borderWidth}\n borderRightWidth={0}\n borderTopLeftRadius={theme.styles.borderRadius}\n borderBottomLeftRadius={theme.styles.borderRadius}\n borderColor={theme.colors.border}\n paddingHorizontal={paddingHorizontal}\n >\n <Text fontWeight={700}>{prefix}</Text>\n </View>\n )}\n\n <Animate.View\n flex={1}\n backgroundColor={theme.colors.backgroundContent}\n borderTopLeftRadius={prefix ? 0 : theme.styles.borderRadius}\n borderBottomLeftRadius={prefix ? 0 : theme.styles.borderRadius}\n borderTopRightRadius={suffix ? 0 : theme.styles.borderRadius}\n borderBottomRightRadius={suffix ? 0 : theme.styles.borderRadius}\n borderWidth={borderWidth}\n initialBorderColor={theme.colors.border}\n animateBorderColor={isFocused ? theme.colors.primary : theme.colors.border}\n overflow=\"hidden\"\n >\n <TextInput\n style={textInputStyle}\n value={internalValue}\n defaultValue={defaultValue}\n autoCapitalize={autoCapitalize}\n autoComplete={autoComplete}\n autoCorrect={autoCorrect}\n autoFocus={autoFocus}\n placeholder={placeholder}\n placeholderTextColor={theme.colors.textSecondary + \"80\"}\n readOnly={!editable}\n keyboardAppearance={keyboardAppearance}\n keyboardType={keyboardType}\n cursorColor={theme.colors.primary}\n selectionColor={theme.colors.primary}\n secureTextEntry={secureTextEntry}\n onFocus={onFocusElement}\n onBlur={onBlurElement}\n onChangeText={onChangeText}\n />\n </Animate.View>\n\n {suffix && (\n <View\n isRow\n height=\"100%\"\n backgroundColor={prefixSuffixBackgroundColor}\n alignItems=\"center\"\n borderWidth={borderWidth}\n borderLeftWidth={0}\n borderTopRightRadius={theme.styles.borderRadius}\n borderBottomRightRadius={theme.styles.borderRadius}\n borderColor={theme.colors.border}\n paddingHorizontal={paddingHorizontal}\n >\n <Text fontWeight={700}>{suffix}</Text>\n </View>\n )}\n </View>\n );\n },\n) as any;\n\nInputFieldComponent.email = forwardRef(function Email(props, ref) {\n return (\n <InputFieldComponent\n placeholder=\"your@email.here\"\n autoComplete=\"email\"\n keyboardType=\"email-address\"\n autoCapitalize=\"none\"\n autoCorrect={false}\n {...props}\n ref={ref}\n />\n );\n}) as InputFieldComponentType[`email`];\n\nInputFieldComponent.password = forwardRef(function Password(props, ref) {\n return (\n <InputFieldComponent\n secureTextEntry\n placeholder=\"******\"\n autoCapitalize=\"none\"\n autoComplete=\"password\"\n autoCorrect={false}\n {...props}\n ref={ref}\n />\n );\n}) as InputFieldComponentType[`password`];\n\nconst InputField = memo(InputFieldComponent) as any as typeof InputFieldComponent & {\n email: typeof InputFieldComponent.email;\n password: typeof InputFieldComponent.password;\n};\n\nInputField.email = InputFieldComponent.email;\nInputField.password = InputFieldComponent.password;\n\nexport default InputField;\n","import { BetterComponentsPluginConstructor } from \"../types/plugin\";\n\nexport type AsyncStoragePluginOptions = {};\n\nexport const defaultAsyncStoragePluginOptions: Required<AsyncStoragePluginOptions> = {};\n\nexport const asyncStoragePlugin: BetterComponentsPluginConstructor<AsyncStoragePluginOptions> = (options) => ({\n name: \"asyncStorage\",\n initialize: () => {\n console.log(\"asyncStorage plugin initialized\");\n },\n getConfig: () => ({\n ...defaultAsyncStoragePluginOptions,\n ...options,\n }),\n});\n"],"mappings":"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AA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AA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","names":["import_react_better_core","import_react","import_react_better_core","theme","NativeAsyncStorage","import_react","import_react_native","import_react_better_core","import_jsx_runtime","pressStrength","theme","NativeView","View","import_react","import_react_native","import_react_better_core","import_jsx_runtime","theme","NativeText","Text","import_react","import_react_native","import_react_better_core","import_react","import_jsx_runtime","View","animateProps","Text","import_react","import_react_native","import_react_better_core","import_jsx_runtime","theme","Box","Loader","import_jsx_runtime","theme","Button","import_react","import_react_native","import_react_better_core","import_jsx_runtime","theme","import_react","import_react_better_core","import_react_native","import_jsx_runtime","assets","NativeImage","theme","Image","import_react","import_react_native","import_react_better_core","import_jsx_runtime","theme"]}
|
package/dist/index.mjs
CHANGED
|
@@ -992,6 +992,7 @@ var ScreenHolderComponent = ({
|
|
|
992
992
|
footer,
|
|
993
993
|
keepFooterOnKeyboardOpened,
|
|
994
994
|
keyboardVerticalOffset,
|
|
995
|
+
withNoHeader,
|
|
995
996
|
children
|
|
996
997
|
}) => {
|
|
997
998
|
const theme2 = useTheme6();
|
|
@@ -1027,7 +1028,7 @@ var ScreenHolderComponent = ({
|
|
|
1027
1028
|
KeyboardAvoidingView,
|
|
1028
1029
|
{
|
|
1029
1030
|
style: keyboardAvoidingViewStyle,
|
|
1030
|
-
keyboardVerticalOffset: keyboardVerticalOffset ?? (keepFooterOnKeyboardOpened ? Platform3.OS === "ios" ? device.safeArea.afterCalculations.bottom : theme2.styles.gap : void 0),
|
|
1031
|
+
keyboardVerticalOffset: keyboardVerticalOffset ?? (withNoHeader ? Platform3.OS === "ios" ? 0 : theme2.styles.gap : keepFooterOnKeyboardOpened ? Platform3.OS === "ios" ? device.safeArea.afterCalculations.bottom : theme2.styles.gap : void 0),
|
|
1031
1032
|
behavior: Platform3.OS === "ios" ? "padding" : "height",
|
|
1032
1033
|
children: [
|
|
1033
1034
|
/* @__PURE__ */ jsx7(View_default, { flex: 1, children: noScroll ? content : /* @__PURE__ */ jsx7(
|
|
@@ -1037,7 +1038,13 @@ var ScreenHolderComponent = ({
|
|
|
1037
1038
|
children: content
|
|
1038
1039
|
}
|
|
1039
1040
|
) }),
|
|
1040
|
-
keepFooterOnKeyboardOpened || (Platform3.OS === "ios" ? !keyboard.willOpen : !keyboard.isOpened) ? footer && /* @__PURE__ */ jsx7(View_default, { children: footer }) : /* @__PURE__ */ jsx7(
|
|
1041
|
+
keepFooterOnKeyboardOpened || (Platform3.OS === "ios" ? !keyboard.willOpen : !keyboard.isOpened) ? footer && /* @__PURE__ */ jsx7(View_default, { children: footer }) : !withNoHeader && /* @__PURE__ */ jsx7(
|
|
1042
|
+
View_default,
|
|
1043
|
+
{
|
|
1044
|
+
width: "100%",
|
|
1045
|
+
height: device.safeArea.afterCalculations.bottom + (Platform3.OS === "android" ? theme2.styles.gap : 0)
|
|
1046
|
+
}
|
|
1047
|
+
)
|
|
1041
1048
|
]
|
|
1042
1049
|
}
|
|
1043
1050
|
) });
|
|
@@ -1046,17 +1053,19 @@ ScreenHolderComponent.footer = function Footer({
|
|
|
1046
1053
|
noSideSpace,
|
|
1047
1054
|
backgroundColor,
|
|
1048
1055
|
insideBottomSafeArea,
|
|
1056
|
+
withNoHeader,
|
|
1049
1057
|
children
|
|
1050
1058
|
}) {
|
|
1051
1059
|
const theme2 = useTheme6();
|
|
1052
1060
|
const device = useDevice();
|
|
1061
|
+
const keyboard = useKeyboard();
|
|
1053
1062
|
return /* @__PURE__ */ jsx7(
|
|
1054
1063
|
View_default,
|
|
1055
1064
|
{
|
|
1056
1065
|
backgroundColor: backgroundColor ?? theme2.colors.backgroundBase,
|
|
1057
1066
|
paddingHorizontal: !noSideSpace ? theme2.styles.space : void 0,
|
|
1058
1067
|
paddingTop: theme2.styles.gap,
|
|
1059
|
-
paddingBottom: insideBottomSafeArea ? device.safeArea.afterCalculations.bottom : void 0,
|
|
1068
|
+
paddingBottom: (Platform3.OS === "ios" ? keyboard.willOpen : keyboard.isOpened) && withNoHeader ? theme2.styles.gap : insideBottomSafeArea ? device.safeArea.afterCalculations.bottom : void 0,
|
|
1060
1069
|
children
|
|
1061
1070
|
}
|
|
1062
1071
|
);
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/components/BetterComponentsProvider.tsx","../src/constants/app.ts","../src/constants/theme.ts","../src/constants/icons.ts","../src/constants/assets.ts","../src/utils/variableFunctions.ts","../src/utils/hooks.ts","../src/constants/css.ts","../src/utils/asyncStorage.ts","../src/components/View.tsx","../src/components/Text.tsx","../src/components/Button.tsx","../src/components/Animate.tsx","../src/components/Loader.tsx","../src/components/ScreenHolder.tsx","../src/components/Image.tsx","../src/components/InputField.tsx","../src/plugins/asyncStorage.ts"],"sourcesContent":["export {\n useTheme,\n useLoader,\n useLoaderControls,\n countries,\n type OmitProps,\n type ExcludeOptions,\n type PickValue,\n type PartialRecord,\n type DeepPartialRecord,\n type PickAllRequired,\n type AnyOtherString,\n type AssetName,\n type AssetsConfig,\n type Country,\n type IconName,\n type IconsConfig,\n type LoaderName,\n type LoaderConfig,\n type Color,\n type ColorName,\n type ColorTheme,\n type Colors,\n type Styles,\n type Theme,\n type ThemeConfig,\n lightenColor,\n darkenColor,\n saturateColor,\n desaturateColor,\n generateRandomString,\n formatPhoneNumber,\n eventPreventDefault,\n eventStopPropagation,\n eventPreventStop,\n getPluralWord,\n useBooleanState,\n useDebounceState,\n loaderControls,\n colorThemeControls,\n} from \"react-better-core\";\n\nimport BetterComponentsProvider, {\n useBetterComponentsContext,\n type BetterComponentsProviderConfig,\n} from \"./components/BetterComponentsProvider\";\n\nimport { type AppConfig, type BetterComponentsConfig } from \"./types/config\";\nimport { type ComponentMarginProps, type ComponentPaddingProps } from \"./types/components\";\nimport { type PluginName, type BetterComponentsPlugin } from \"./types/plugin\";\n\nimport { pressStrength } from \"./utils/variableFunctions\";\n\nimport { useDevice, useKeyboard } from \"./utils/hooks\";\nimport { generateAsyncStorage } from \"./utils/asyncStorage\";\n\nimport View, { type ViewProps } from \"./components/View\";\nimport Text, { type TextProps } from \"./components/Text\";\nimport Button, { type ButtonProps } from \"./components/Button\";\nimport Loader, { type LoaderProps, type LoaderSize } from \"./components/Loader\";\nimport Animate, { type AnimateViewProps, type AnimateTextProps } from \"./components/Animate\";\nimport ScreenHolder, { type ScreenHolderProps, type FooterProps } from \"./components/ScreenHolder\";\nimport Image, { type ImageProps } from \"./components/Image\";\nimport InputField, { type InputFieldProps } from \"./components/InputField\";\n\nexport * from \"./plugins\";\n\nexport {\n BetterComponentsProvider,\n useBetterComponentsContext as useBetterComponentsContext,\n BetterComponentsProviderConfig,\n\n // Constants\n\n // Types\n AppConfig,\n BetterComponentsConfig as BetterComponentsConfig,\n ComponentMarginProps,\n ComponentPaddingProps,\n PluginName,\n BetterComponentsPlugin,\n\n // Hooks\n useDevice,\n useKeyboard,\n\n // Functions\n\n // Variable Functions\n pressStrength,\n\n // AsyncStorage\n generateAsyncStorage,\n\n // Components\n View,\n ViewProps,\n Text,\n TextProps,\n Button,\n ButtonProps,\n Loader,\n LoaderProps,\n LoaderSize,\n Animate,\n AnimateViewProps,\n AnimateTextProps,\n ScreenHolder,\n ScreenHolderProps,\n FooterProps,\n Image,\n ImageProps,\n InputField,\n InputFieldProps,\n};\n","import { createContext, memo, useContext, useEffect, useMemo } from \"react\";\nimport {\n useBooleanState,\n DeepPartialRecord,\n BetterCoreProvider,\n BetterCoreProviderConfig,\n BetterCoreConfig,\n useBetterCoreContext,\n} from \"react-better-core\";\n\nimport { appConfig } from \"../constants/app\";\nimport { theme } from \"../constants/theme\";\nimport { icons } from \"../constants/icons\";\nimport { assets } from \"../constants/assets\";\n\nimport { BetterComponentsConfig } from \"../types/config\";\nimport { BetterComponentsPlugin, PluginName } from \"../types/plugin\";\n\nexport type BetterComponentsInternalConfig = BetterComponentsConfig & {\n plugins: BetterComponentsPlugin[];\n componentsState: {};\n};\n\nconst betterComponentsContext = createContext<BetterComponentsInternalConfig | undefined>(undefined);\nexport let externalBetterCoreContextValue: BetterCoreConfig | undefined;\nexport let externalBetterComponentsContextValue: BetterComponentsInternalConfig | undefined;\n\nexport const useBetterComponentsContext = (): BetterComponentsConfig & BetterCoreConfig => {\n const coreContext = useBetterCoreContext();\n const context = useContext(betterComponentsContext);\n\n if (context === undefined)\n throw new Error(\n \"`useBetterComponentsContext()` must be used within a `<BetterComponentsProvider>`. Make sure to add one at the root of your component tree.\",\n );\n\n const { plugins, componentsState, ...rest } = context;\n\n return {\n ...coreContext,\n ...rest,\n };\n};\n\nexport const useBetterComponentsContextInternal = (): BetterComponentsInternalConfig => {\n const context = useContext(betterComponentsContext);\n\n if (context === undefined)\n throw new Error(\n \"`useBetterComponentsContextInternal()` must be used within a `<BetterComponentsProvider>`. Make sure to add one at the root of your component tree.\",\n );\n\n return context;\n};\n\nexport const usePlugin = <T extends object>(\n pluginName: PluginName,\n): BetterComponentsPlugin<T> | undefined => {\n const context = useContext(betterComponentsContext);\n\n if (context === undefined) {\n throw new Error(\n \"`usePlugin()` must be used within a `<BetterComponentsProvider>`. Make sure to add one at the root of your component tree.\",\n );\n }\n\n return useMemo(\n () => context.plugins.find((plugin: BetterComponentsPlugin) => plugin.name === pluginName),\n [context.plugins, pluginName],\n ) as any;\n};\n\ntype BetterComponentsProviderInternalContentProps = {\n children?: React.ReactNode;\n};\n\nfunction BetterComponentsProviderInternalContent({ children }: BetterComponentsProviderInternalContentProps) {\n return <>{children}</>;\n}\n\ntype BetterComponentsProviderInternalConfig = DeepPartialRecord<BetterComponentsConfig>;\n\ntype BetterProviderCommonProps = {\n plugins?: BetterComponentsPlugin[];\n children?: React.ReactNode;\n};\n\ntype BetterComponentsProviderInternalProps = BetterProviderCommonProps & {\n config?: BetterComponentsProviderInternalConfig;\n};\n\nfunction BetterComponentsProviderInternal({\n config,\n plugins,\n children,\n}: BetterComponentsProviderInternalProps) {\n const betterCoreContext = useBetterCoreContext();\n\n const [sideMenuIsCollapsed, setSideMenuIsCollapsed] = useBooleanState();\n const [sideMenuIsOpenMobile, setSideMenuIsOpenMobile] = useBooleanState();\n\n const readyConfig = useMemo<BetterComponentsInternalConfig>(\n () => ({\n app: {\n ...appConfig,\n ...config?.app,\n },\n sideMenuIsCollapsed,\n setSideMenuIsCollapsed,\n sideMenuIsOpenMobile,\n setSideMenuIsOpenMobile,\n plugins: plugins ?? [],\n componentsState: {},\n }),\n [config, sideMenuIsCollapsed, sideMenuIsOpenMobile, plugins],\n );\n\n useEffect(() => {\n if (!plugins) return;\n\n plugins.forEach((plugin) => {\n plugin.initialize?.();\n });\n }, []);\n\n externalBetterCoreContextValue = betterCoreContext;\n externalBetterComponentsContextValue = readyConfig;\n\n return (\n <betterComponentsContext.Provider value={readyConfig}>\n <BetterComponentsProviderInternalContent>{children}</BetterComponentsProviderInternalContent>\n </betterComponentsContext.Provider>\n );\n}\n\nexport type BetterComponentsProviderConfig = BetterCoreProviderConfig &\n BetterComponentsProviderInternalConfig;\n\ntype BetterComponentsProviderProps = BetterProviderCommonProps & {\n config?: BetterComponentsProviderConfig;\n};\n\nfunction BetterComponentsProvider({ config, ...props }: BetterComponentsProviderProps) {\n const coreConfig = useMemo<BetterCoreProviderConfig>(\n () => ({\n theme: {\n ...theme,\n ...config?.theme,\n },\n // colorTheme: config?.colorTheme ?? (localStorage.getItem(\"theme\") === \"dark\" ? \"dark\" : \"light\"),\n colorTheme: config?.colorTheme ?? \"light\",\n icons: {\n ...icons,\n ...config?.icons,\n },\n assets: {\n ...assets,\n ...config?.assets,\n },\n loaders: config?.loaders,\n }),\n [config],\n );\n\n const componentsConfig = useMemo<BetterComponentsProviderInternalConfig>(\n () => ({\n app: config?.app,\n }),\n [config],\n );\n\n return (\n <BetterCoreProvider config={coreConfig}>\n <BetterComponentsProviderInternal config={componentsConfig} {...props} />\n </BetterCoreProvider>\n );\n}\n\nexport default memo(BetterComponentsProvider);\n","import { AppConfig } from \"../types/config\";\n\nexport const appConfig: AppConfig = {};\n","import { DeepPartialRecord, ThemeConfig } from \"react-better-core\";\n\nexport const theme: DeepPartialRecord<ThemeConfig> = {};\n","import { IconsConfig } from \"react-better-core\";\n\nexport const icons: Partial<IconsConfig> = {};\n","import { AssetsConfig } from \"react-better-core\";\n\nexport const assets: Partial<AssetsConfig> = {};\n","import { BetterCoreConfig } from \"react-better-core\";\n\nimport {\n BetterComponentsInternalConfig,\n externalBetterCoreContextValue,\n} from \"../components/BetterComponentsProvider\";\n\nexport const checkBetterCoreContextValue = (\n value: BetterCoreConfig | undefined,\n functionsName: string,\n): value is BetterCoreConfig => {\n if (value === undefined) {\n throw new Error(\n `\\`${functionsName}()\\` must be used within a \\`<BetterCoreProvider>\\`. Make sure to add one at the root of your component tree.`,\n );\n }\n\n return value !== undefined;\n};\nexport const checkBetterComponentsContextValue = (\n value: BetterComponentsInternalConfig | undefined,\n functionsName: string,\n): value is BetterComponentsInternalConfig => {\n if (value === undefined) {\n throw new Error(\n `\\`${functionsName}()\\` must be used within a \\`<BetterComponentsProvider>\\`. Make sure to add one at the root of your component tree.`,\n );\n }\n\n return value !== undefined;\n};\n\nexport const pressStrength = (): Record<\"z05\" | \"z1\" | \"z2\" | \"z3\", number> => {\n if (!checkBetterCoreContextValue(externalBetterCoreContextValue, \"pressStrength\")) return undefined as any;\n\n return {\n z05: externalBetterCoreContextValue.colorTheme === \"dark\" ? 0.85 : 0.95,\n z1: externalBetterCoreContextValue.colorTheme === \"dark\" ? 0.6 : 0.8,\n z2: externalBetterCoreContextValue.colorTheme === \"dark\" ? 0.5 : 0.7,\n z3: externalBetterCoreContextValue.colorTheme === \"dark\" ? 0.4 : 0.6,\n };\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport { Dimensions, Keyboard, KeyboardEvent } from \"react-native\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\nimport { useBooleanState, useTheme } from \"react-better-core\";\n\nimport { animateProps, animateTransitionProps, cssProps } from \"../constants/css\";\n\nimport { ComponentStyle } from \"../types/components\";\n\nexport function useDevice() {\n const theme = useTheme();\n const safeAreaInsets = useSafeAreaInsets();\n\n const screenDimensions = Dimensions.get(\"screen\");\n const windowDimensions = Dimensions.get(\"window\");\n const isSmallDevice = windowDimensions.height <= 700;\n\n return {\n safeArea: {\n ...safeAreaInsets,\n /** @description The safe area insets after calculations. Recommended to use this instead of the raw insets. */\n afterCalculations: {\n top: safeAreaInsets.top < 25 ? 32 : safeAreaInsets.top < 40 ? 40 : safeAreaInsets.top,\n bottom:\n (safeAreaInsets.bottom === 0 ? theme.styles.space : safeAreaInsets.bottom) +\n (isSmallDevice ? 0 : theme.styles.space * 2),\n left: safeAreaInsets.left,\n right: safeAreaInsets.right,\n },\n },\n /** @description The dimensions of the device screen. */\n screenDimensions,\n /** @description The dimensions of the app window. */\n windowDimensions,\n /** @description Whether the device is small. */\n isSmallDevice,\n };\n}\n\nexport function useKeyboard() {\n const [keyboardOpened, setKeyboardOpened] = useBooleanState();\n const [keyboardWillOpen, setKeyboardWillOpen] = useBooleanState();\n\n const [keyboardHeight, setKeyboardHeight] = useState<number>(0);\n\n useEffect(() => {\n const keyboardDidShow = (event: KeyboardEvent) => {\n setKeyboardOpened.setTrue();\n setKeyboardHeight(event.endCoordinates.height);\n };\n const keyboardDidHide = () => {\n setKeyboardOpened.setFalse();\n setKeyboardHeight(0);\n };\n\n const willShowSubscription = Keyboard.addListener(\"keyboardWillShow\", setKeyboardWillOpen.setTrue);\n const willHideSubscription = Keyboard.addListener(\"keyboardWillHide\", setKeyboardWillOpen.setFalse);\n const didShowSubscription = Keyboard.addListener(\"keyboardDidShow\", keyboardDidShow);\n const didHideSubscription = Keyboard.addListener(\"keyboardDidHide\", keyboardDidHide);\n\n return () => {\n willShowSubscription.remove();\n willHideSubscription.remove();\n didShowSubscription.remove();\n didHideSubscription.remove();\n };\n }, []);\n\n return {\n isOpened: keyboardOpened,\n willOpen: keyboardWillOpen,\n height: keyboardHeight,\n };\n}\n\nexport function useComponentPropsGrouper<Props extends object = {}>(\n props: ComponentStyle,\n prefix: string,\n): {\n style: ComponentStyle;\n withPrefixStyle: ComponentStyle;\n restProps: Props;\n} {\n return useMemo(() => {\n const style: ComponentStyle = {};\n const withPrefixStyle: ComponentStyle = {};\n const restProps = {} as Props;\n\n for (const key in props) {\n const keyName = key as keyof ComponentStyle;\n\n if (cssProps.has(keyName.toLowerCase())) {\n (style[keyName] as any) = props[keyName];\n } else if (\n keyName.startsWith(prefix) &&\n (cssProps.has(keyName.slice(prefix.length).toLowerCase()) ||\n animateProps.has(keyName.slice(prefix.length).toLowerCase()) ||\n animateTransitionProps.has(keyName.slice(prefix.length).toLowerCase()))\n ) {\n const realKey = `${keyName.slice(prefix.length, prefix.length + 1).toLowerCase()}${keyName.slice(\n prefix.length + 1,\n )}`;\n\n (withPrefixStyle[realKey as keyof ComponentStyle] as any) = props[keyName];\n } else {\n (restProps[keyName as keyof Props] as any) = props[keyName];\n }\n }\n\n return {\n style,\n withPrefixStyle,\n restProps,\n };\n }, [props, prefix]);\n}\n","export const cssProps: Set<string> = new Set([\n \"aligncontent\",\n \"alignitems\",\n \"alignself\",\n \"aspectratio\",\n \"borderbottomwidth\",\n \"borderendwidth\",\n \"borderleftwidth\",\n \"borderrightwidth\",\n \"borderstartwidth\",\n \"bordertopwidth\",\n \"borderwidth\",\n \"bottom\",\n \"boxsizing\",\n \"display\",\n \"end\",\n \"flex\",\n \"flexbasis\",\n \"flexdirection\",\n \"rowgap\",\n \"gap\",\n \"columngap\",\n \"flexgrow\",\n \"flexshrink\",\n \"flexwrap\",\n \"height\",\n \"justifycontent\",\n \"left\",\n \"margin\",\n \"marginbottom\",\n \"marginend\",\n \"marginhorizontal\",\n \"marginleft\",\n \"marginright\",\n \"marginstart\",\n \"margintop\",\n \"marginvertical\",\n \"maxheight\",\n \"maxwidth\",\n \"minheight\",\n \"minwidth\",\n \"overflow\",\n \"padding\",\n \"paddingbottom\",\n \"paddingend\",\n \"paddinghorizontal\",\n \"paddingleft\",\n \"paddingright\",\n \"paddingstart\",\n \"paddingtop\",\n \"paddingvertical\",\n \"position\",\n \"right\",\n \"start\",\n \"top\",\n \"width\",\n \"zindex\",\n \"direction\",\n \"inset\",\n \"insetblock\",\n \"insetblockend\",\n \"insetblockstart\",\n \"insetinline\",\n \"insetinlineend\",\n \"insetinlinestart\",\n \"marginblock\",\n \"marginblockend\",\n \"marginblockstart\",\n \"margininline\",\n \"margininlineend\",\n \"margininlinestart\",\n \"paddingblock\",\n \"paddingblockend\",\n \"paddingblockstart\",\n \"paddinginline\",\n \"paddinginlineend\",\n \"paddinginlinestart\",\n \"shadowcolor\",\n \"shadowoffset\",\n \"shadowopacity\",\n \"shadowradius\",\n \"transform\",\n \"transformorigin\",\n \"transformmatrix\",\n \"rotation\",\n \"scalex\",\n \"scaley\",\n \"translatex\",\n \"translatey\",\n \"backfacevisibility\",\n \"backgroundcolor\",\n \"borderblockcolor\",\n \"borderblockendcolor\",\n \"borderblockstartcolor\",\n \"borderbottomcolor\",\n \"borderbottomendradius\",\n \"borderbottomleftradius\",\n \"borderbottomrightradius\",\n \"borderbottomstartradius\",\n \"bordercolor\",\n \"bordercurve\",\n \"borderendcolor\",\n \"borderendendradius\",\n \"borderendstartradius\",\n \"borderleftcolor\",\n \"borderradius\",\n \"borderrightcolor\",\n \"borderstartcolor\",\n \"borderstartendradius\",\n \"borderstartstartradius\",\n \"borderstyle\",\n \"bordertopcolor\",\n \"bordertopendradius\",\n \"bordertopleftradius\",\n \"bordertoprightradius\",\n \"bordertopstartradius\",\n \"outlinecolor\",\n \"outlineoffset\",\n \"outlinestyle\",\n \"outlinewidth\",\n \"opacity\",\n \"elevation\",\n \"pointerevents\",\n \"isolation\",\n \"cursor\",\n \"boxshadow\",\n \"filter\",\n \"mixblendmode\",\n \"fontvariant\",\n \"textdecorationcolor\",\n \"textdecorationstyle\",\n \"writingdirection\",\n \"textalignvertical\",\n \"verticalalign\",\n \"includefontpadding\",\n \"color\",\n \"fontfamily\",\n \"fontsize\",\n \"fontstyle\",\n \"fontweight\",\n \"letterspacing\",\n \"lineheight\",\n \"textalign\",\n \"textdecorationline\",\n \"textdecorationstyle\",\n \"textdecorationcolor\",\n \"textshadowcolor\",\n \"textshadowoffset\",\n \"textshadowradius\",\n \"texttransform\",\n \"userselect\",\n]);\n\nexport const animateProps: Set<string> = new Set([\n \"x\",\n \"y\",\n \"scale\",\n \"scaleX\",\n \"scaleY\",\n \"skewX\",\n \"skewY\",\n \"perspective\",\n \"rotate\",\n \"rotateX\",\n \"rotateY\",\n \"rotateZ\",\n \"matrix\",\n]);\n\nexport const animateTransitionProps: Set<string> = new Set([\n \"type\",\n \"ease\",\n \"easing\",\n \"duration\",\n \"delay\",\n \"type\",\n \"friction\",\n \"tension\",\n \"speed\",\n \"bounciness\",\n \"stiffness\",\n \"damping\",\n \"mass\",\n \"overshootClamping\",\n \"restDisplacementThreshold\",\n \"restSpeedThreshold\",\n \"velocity\",\n \"loop\",\n]);\n","import NativeAsyncStorage from \"@react-native-async-storage/async-storage\";\n\nexport function generateAsyncStorage<AsyncStorage extends object>(): {\n setItem: <StorageName extends keyof AsyncStorage>(name: StorageName, value: AsyncStorage[StorageName]) => void;\n getItem: <StorageName extends keyof AsyncStorage>(\n name: StorageName,\n ) => Promise<AsyncStorage[StorageName] | undefined>;\n removeItem: (name: keyof AsyncStorage) => void;\n removeAllItems: () => void;\n} {\n return {\n setItem: async (name, value) => {\n if (value) await NativeAsyncStorage.setItem(name.toString(), JSON.stringify(value));\n else await NativeAsyncStorage.removeItem(name.toString());\n },\n getItem: async (name) => {\n const item = await NativeAsyncStorage.getItem(name.toString());\n\n if (item === null) return undefined;\n\n try {\n return JSON.parse(item);\n } catch (error) {\n return undefined;\n }\n },\n removeItem: async (name) => {\n await NativeAsyncStorage.removeItem(name.toString());\n },\n removeAllItems: () => {\n NativeAsyncStorage.clear();\n },\n };\n}\n","import { memo, useMemo } from \"react\";\nimport {\n GestureResponderEvent,\n View as NativeView,\n ViewProps as NativeViewProps,\n ViewStyle as NativeViewStyle,\n Platform,\n TouchableHighlight,\n TouchableNativeFeedback,\n TouchableOpacity,\n} from \"react-native\";\nimport { OmitProps, useTheme } from \"react-better-core\";\n\nimport { ComponentStyle } from \"../types/components\";\n\nconst touchableHighlightStyleMoveToContent: (keyof ComponentStyle)[] = [\n \"backgroundColor\",\n \"padding\",\n \"paddingTop\",\n \"paddingBottom\",\n \"paddingLeft\",\n \"paddingRight\",\n \"paddingHorizontal\",\n \"paddingVertical\",\n \"borderWidth\",\n \"borderTopWidth\",\n \"borderBottomWidth\",\n \"borderLeftWidth\",\n \"borderRightWidth\",\n \"borderColor\",\n \"borderTopColor\",\n \"borderBottomColor\",\n \"borderLeftColor\",\n \"borderRightColor\",\n];\n\nconst touchableNativeFeedbackStyleMoveToHolder: (keyof ComponentStyle)[] = [\n \"width\",\n \"height\",\n \"margin\",\n \"marginTop\",\n \"marginBottom\",\n \"marginLeft\",\n \"marginRight\",\n \"marginHorizontal\",\n \"marginVertical\",\n];\n\nfunction alphaToHex(alpha: number): string {\n const clamped = Math.min(1, Math.max(0, alpha));\n const value = Math.round(clamped * 255);\n\n return value.toString(16).padStart(2, \"0\");\n}\n\nexport type ViewProps<Value = unknown> = {\n /** @default false */\n isRow?: boolean;\n value?: Value;\n /** @default false */\n disabled?: boolean;\n /** @default \"highlight\" */\n pressType?: \"opacity\" | \"highlight\";\n /** @default 0.8 */\n pressStrength?: number;\n onPress?: (event: GestureResponderEvent) => void;\n onPressIn?: (event: GestureResponderEvent) => void;\n onPressOut?: (event: GestureResponderEvent) => void;\n onLongPress?: (event: GestureResponderEvent) => void;\n onPressWithValue?: (value: Value) => void;\n} & OmitProps<NativeViewProps, \"style\" | \"onBlur\" | \"onFocus\"> &\n ComponentStyle;\n\ntype ViewComponentType = {\n <Value>(props: ViewProps<Value>): React.ReactElement;\n box: <Value>(\n props: ViewProps<Value> & {\n /** @default false */\n withShadow?: boolean;\n },\n ) => React.ReactElement;\n};\n\nconst ViewComponent: ViewComponentType = function View<Value>({\n isRow,\n value,\n disabled,\n pressType = \"highlight\",\n pressStrength = 0.8,\n onPress,\n onPressIn,\n onPressOut,\n onLongPress,\n onPressWithValue,\n children,\n ...props\n}: ViewProps<Value>) {\n const theme = useTheme();\n\n const style = useMemo<NativeViewStyle>(\n () => ({\n flexDirection: isRow ? \"row\" : \"column\",\n ...props,\n ...(props.shadowOffsetWidth !== undefined || props.shadowOffsetHeight !== undefined\n ? {\n shadowOffset: {\n width: props.shadowOffsetWidth ?? 0,\n height: props.shadowOffsetHeight ?? 0,\n },\n }\n : {}),\n }),\n [isRow, props],\n );\n const touchableHighlightStyle = useMemo<NativeViewStyle>(\n () => ({\n ...style,\n ...touchableHighlightStyleMoveToContent.reduce<NativeViewStyle>((previousValue, currentValue) => {\n if (currentValue === \"shadowOffsetWidth\" || currentValue === \"shadowOffsetHeight\")\n previousValue.shadowOffset = undefined;\n else previousValue[currentValue] = undefined;\n\n return previousValue;\n }, {}),\n }),\n [style],\n );\n const touchableHighlightContentProps = useMemo<ViewProps>(\n () =>\n touchableHighlightStyleMoveToContent.reduce<ViewProps>((previousValue, currentValue) => {\n (previousValue[currentValue] as any) = props[currentValue];\n\n return previousValue;\n }, {}),\n [props],\n );\n const touchableNativeFeedbackHolderStyle = useMemo<NativeViewStyle>(\n () =>\n touchableNativeFeedbackStyleMoveToHolder.reduce<ViewProps>((previousValue, currentValue) => {\n (previousValue[currentValue] as any) = props[currentValue];\n\n return previousValue;\n }, {}),\n [props],\n );\n const touchableNativeFeedbackContentStyle = useMemo<ViewProps>(\n () => ({\n ...style,\n ...touchableNativeFeedbackStyleMoveToHolder.reduce<NativeViewStyle>(\n (previousValue, currentValue) => {\n if (currentValue === \"shadowOffsetWidth\" || currentValue === \"shadowOffsetHeight\")\n previousValue.shadowOffset = undefined;\n else previousValue[currentValue] = undefined;\n\n return previousValue;\n },\n {},\n ),\n }),\n [style],\n );\n\n const pressEvents = useMemo(\n () =>\n !disabled\n ? {\n onPress: (event: GestureResponderEvent) => {\n onPress?.(event);\n\n if (value !== undefined) onPressWithValue?.(value);\n },\n onPressIn,\n onPressOut,\n onLongPress,\n }\n : {},\n [disabled, onPress, onPressIn, onPressOut, onLongPress, onPressWithValue, value],\n );\n\n const androidBoxShadow =\n Platform.OS === \"android\"\n ? props.shadowOffsetWidth !== undefined || props.shadowOffsetHeight !== undefined\n ? `${props.shadowOffsetWidth ?? 0}px ${props.shadowOffsetHeight ?? 0}px ${props.shadowRadius}px ${\n props.shadowColor?.toString() ?? \"#000000\"\n }`\n : undefined\n : undefined;\n\n const isPressable = onPress || onPressIn || onPressOut || onLongPress || onPressWithValue;\n\n return isPressable ? (\n pressType === \"opacity\" ? (\n <TouchableOpacity\n style={style}\n activeOpacity={pressStrength}\n boxShadow={androidBoxShadow}\n {...pressEvents}\n {...props}\n >\n {children}\n </TouchableOpacity>\n ) : pressType === \"highlight\" ? (\n Platform.OS === \"ios\" ? (\n <TouchableHighlight\n activeOpacity={pressStrength}\n underlayColor={theme.colors.textPrimary}\n style={touchableHighlightStyle}\n {...pressEvents}\n {...props}\n >\n <ViewComponent\n width=\"100%\"\n borderRadius={props.borderRadius}\n borderTopLeftRadius={props.borderTopLeftRadius}\n borderTopRightRadius={props.borderTopRightRadius}\n borderBottomLeftRadius={props.borderBottomLeftRadius}\n borderBottomRightRadius={props.borderBottomRightRadius}\n {...touchableHighlightContentProps}\n >\n {children}\n </ViewComponent>\n </TouchableHighlight>\n ) : Platform.OS === \"android\" ? (\n <ViewComponent\n {...touchableNativeFeedbackHolderStyle}\n borderRadius={props.borderRadius}\n borderTopLeftRadius={props.borderTopLeftRadius}\n borderTopRightRadius={props.borderTopRightRadius}\n borderBottomLeftRadius={props.borderBottomLeftRadius}\n borderBottomRightRadius={props.borderBottomRightRadius}\n boxShadow={androidBoxShadow}\n overflow=\"hidden\"\n pointerEvents=\"box-none\"\n >\n <TouchableNativeFeedback\n {...pressEvents}\n {...props}\n background={TouchableNativeFeedback.Ripple(\n `${theme.colors.textPrimary}${alphaToHex(1 - pressStrength)}`,\n false,\n )}\n useForeground\n touchSoundDisabled\n >\n <ViewComponent flex={1} {...touchableNativeFeedbackContentStyle}>\n {children}\n </ViewComponent>\n </TouchableNativeFeedback>\n </ViewComponent>\n ) : (\n <></>\n )\n ) : (\n <></>\n )\n ) : (\n <NativeView boxShadow={androidBoxShadow} style={style} {...props}>\n {children}\n </NativeView>\n );\n};\n\nViewComponent.box = function Box({ withShadow, ...props }) {\n const theme = useTheme();\n\n const shadowProps = useMemo<ViewProps>(\n () =>\n withShadow\n ? {\n shadowOpacity: 0.2,\n shadowOffsetHeight: 10,\n shadowRadius: 10,\n shadowColor: Platform.OS === \"android\" ? \"#00000020\" : undefined,\n }\n : {},\n [],\n );\n\n return (\n <ViewComponent\n width=\"100%\"\n backgroundColor={theme.colors.backgroundContent}\n borderWidth={1}\n borderColor={theme.colors.border}\n borderRadius={theme.styles.borderRadius}\n paddingHorizontal={theme.styles.space}\n paddingVertical={theme.styles.gap}\n {...(shadowProps as any)}\n {...props}\n />\n );\n} as ViewComponentType[\"box\"];\n\nconst View = memo(ViewComponent) as any as typeof ViewComponent & {\n box: typeof ViewComponent.box;\n};\n\nView.box = ViewComponent.box;\n\nexport default View;\n","import { memo, useMemo } from \"react\";\nimport { Text as NativeText, TextProps as NativeTextProps, TextStyle as NativeTextStyle } from \"react-native\";\nimport { OmitProps, useTheme } from \"react-better-core\";\n\nimport { ComponentStyle } from \"../types/components\";\n\nexport type TextProps = {} & OmitProps<NativeTextProps, \"style\"> & ComponentStyle<NativeTextStyle>;\n\ntype TextComponentType = {\n (props: TextProps): React.ReactElement;\n title: (props: TextProps) => React.ReactElement;\n subtitle: (props: TextProps) => React.ReactElement;\n body: (props: TextProps) => React.ReactElement;\n caption: (props: TextProps) => React.ReactElement;\n unknown: (props: TextProps) => React.ReactElement;\n};\n\nconst TextComponent: TextComponentType = function Text({ selectionColor, children, ...props }) {\n const theme = useTheme();\n\n const style = useMemo<NativeTextStyle>(\n () => ({\n fontSize: 16,\n color: theme.colors.textPrimary,\n ...props,\n }),\n [theme, props],\n );\n\n return (\n <NativeText selectionColor={selectionColor ?? theme.colors.primary} style={style} {...props}>\n {children}\n </NativeText>\n );\n};\n\nTextComponent.title = function Title(props) {\n return <TextComponent fontSize={32} fontWeight={700} {...props} />;\n} as TextComponentType[`title`];\n\nTextComponent.subtitle = function Subtitle(props) {\n return <TextComponent fontSize={24} fontWeight={700} {...props} />;\n} as TextComponentType[`subtitle`];\n\nTextComponent.body = function Body(props) {\n const theme = useTheme();\n\n return <TextComponent color={theme.colors.textSecondary} {...props} />;\n} as TextComponentType[`body`];\n\nTextComponent.caption = function Caption(props) {\n const theme = useTheme();\n\n return <TextComponent fontSize={14} color={theme.colors.textSecondary} {...props} />;\n} as TextComponentType[`caption`];\n\nTextComponent.unknown = function Unknown(props) {\n const theme = useTheme();\n\n return (\n <TextComponent fontStyle=\"italic\" textAlign=\"center\" color={theme.colors.textSecondary} {...props} />\n );\n} as TextComponentType[`unknown`];\n\nconst Text = memo(TextComponent) as any as typeof TextComponent & {\n title: typeof TextComponent.title;\n subtitle: typeof TextComponent.subtitle;\n body: typeof TextComponent.body;\n caption: typeof TextComponent.caption;\n unknown: typeof TextComponent.unknown;\n};\n\nText.title = TextComponent.title;\nText.subtitle = TextComponent.subtitle;\nText.body = TextComponent.body;\nText.caption = TextComponent.caption;\nText.unknown = TextComponent.unknown;\n\nexport default Text;\n","import { memo } from \"react\";\nimport { ColorValue, Platform } from \"react-native\";\nimport { AnyOtherString, AssetName, IconName, LoaderName, useLoader, useTheme } from \"react-better-core\";\n\nimport { pressStrength } from \"../utils/variableFunctions\";\n\nimport View, { ViewProps } from \"./View\";\nimport Text, { TextProps } from \"./Text\";\nimport Animate from \"./Animate\";\nimport Loader from \"./Loader\";\n\nexport type ButtonProps<Value> = {\n text?: string;\n /** @default 16 */\n textFontSize?: TextProps[\"fontSize\"];\n /** @default 700 */\n textFontWeight?: TextProps[\"fontWeight\"];\n textDecorationLine?: TextProps[\"textDecorationLine\"];\n /** @default \"base\" */\n textColor?: ColorValue;\n\n icon?: IconName | AnyOtherString;\n /** @default \"left\" */\n iconPosition?: \"left\" | \"right\";\n /** @default Same as text color */\n iconColor?: string;\n /** @default 16 */\n iconSize?: number;\n\n image?: AssetName | AnyOtherString;\n /** @default \"left\" */\n imagePosition?: \"left\" | \"right\";\n /** @default 16 */\n imageWidth?: number;\n /** @default undefined */\n imageHeight?: number;\n\n loaderName?: LoaderName | AnyOtherString;\n /** @default false */\n isLoading?: boolean;\n\n isSmall?: true | \"left\" | \"center\" | \"right\";\n} & ViewProps<Value>;\n\ntype InternalButtonProps<Value> = ButtonProps<Value> & {\n animateOpacity?: number;\n};\n\nexport type ButtonRef = {};\n\ntype ButtonComponentType = {\n <Value>(props: ButtonProps<Value>): React.ReactElement;\n secondary: <Value>(props: ButtonProps<Value>) => React.ReactElement;\n destructive: <Value>(props: ButtonProps<Value>) => React.ReactElement;\n text: <Value>(props: ButtonProps<Value>) => React.ReactElement;\n};\n\nconst ButtonComponent = function Button<Value>({\n text,\n textFontSize = 16,\n textFontWeight = 700,\n textDecorationLine,\n textColor,\n\n icon,\n iconPosition = \"left\",\n iconColor,\n iconSize,\n\n image,\n imagePosition = \"left\",\n imageWidth,\n imageHeight,\n\n loaderName,\n isLoading,\n\n isSmall,\n\n animateOpacity,\n\n flex,\n alignSelf,\n disabled,\n ...props\n}: InternalButtonProps<Value>) {\n const theme = useTheme();\n const isLoadingLoader = useLoader(loaderName);\n\n const isLoadingElement = isLoading || isLoadingLoader;\n const isDisabled = disabled || isLoadingElement;\n\n const lineHeight = 20;\n const color = textColor ?? theme.colors.base;\n const paddingVertical = props.paddingVertical\n ? parseFloat(props.paddingVertical.toString())\n : theme.styles.space;\n const paddingHorizontal = props.paddingHorizontal\n ? parseFloat(props.paddingHorizontal.toString())\n : theme.styles.space + theme.styles.gap;\n\n const buttonHeight = paddingVertical + lineHeight + paddingVertical;\n\n return (\n <Animate.View\n position=\"relative\"\n flex={flex}\n alignSelf={\n alignSelf ??\n (isSmall === \"left\"\n ? \"flex-start\"\n : isSmall === \"right\"\n ? \"flex-end\"\n : isSmall === \"center\"\n ? \"center\"\n : isSmall\n ? \"baseline\"\n : undefined)\n }\n initialOpacity={1}\n animateOpacity={animateOpacity ?? (disabled ? 0.6 : 1)}\n >\n <View\n position=\"relative\"\n width={!isSmall ? \"100%\" : undefined}\n height={Platform.OS === \"android\" ? buttonHeight : undefined}\n alignItems=\"center\"\n justifyContent=\"center\"\n backgroundColor={theme.colors.primary}\n borderRadius={theme.styles.borderRadius}\n paddingVertical={paddingVertical}\n paddingHorizontal={paddingHorizontal}\n disabled={isDisabled}\n {...props}\n >\n <Animate.View initialOpacity={1} animateOpacity={isLoadingElement ? 0 : 1}>\n {text && (\n <Text\n fontSize={textFontSize}\n fontWeight={textFontWeight}\n textDecorationLine={textDecorationLine}\n textDecorationColor={color}\n textAlign=\"center\"\n lineHeight={lineHeight}\n color={color}\n >\n {text}\n </Text>\n )}\n </Animate.View>\n\n <Animate.View\n position=\"absolute\"\n width=\"100%\"\n height={buttonHeight}\n left={paddingHorizontal}\n alignItems=\"center\"\n justifyContent=\"center\"\n initialOpacity={0}\n animateOpacity={isLoadingElement ? 1 : 0}\n >\n <Loader color={color} />\n </Animate.View>\n </View>\n </Animate.View>\n );\n};\n\nButtonComponent.secondary = function Secondary(props) {\n const theme = useTheme();\n\n return (\n <ButtonComponent\n backgroundColor={theme.colors.backgroundContent}\n borderWidth={1}\n borderColor={theme.colors.border}\n textColor={theme.colors.textPrimary}\n pressStrength={pressStrength().z05}\n animateOpacity={props.disabled ? 0.4 : 1}\n {...props}\n />\n );\n} as ButtonComponentType[`secondary`];\n\nButtonComponent.destructive = function Destructive(props) {\n const theme = useTheme();\n\n return <ButtonComponent backgroundColor={theme.colors.error} {...props} />;\n} as ButtonComponentType[`destructive`];\n\nButtonComponent.text = function ButtonText(props) {\n const theme = useTheme();\n\n return (\n <ButtonComponent\n width=\"auto\"\n textColor={theme.colors.textPrimary}\n textDecorationLine=\"underline\"\n backgroundColor=\"transparent\"\n paddingHorizontal={theme.styles.space}\n paddingVertical={theme.styles.gap}\n isSmall\n pressType=\"opacity\"\n {...props}\n />\n );\n} as ButtonComponentType[`text`];\n\nconst Button = memo(ButtonComponent) as any as ButtonComponentType & {\n secondary: typeof ButtonComponent.secondary;\n destructive: typeof ButtonComponent.destructive;\n text: typeof ButtonComponent.text;\n};\n\nButton.secondary = ButtonComponent.secondary;\nButton.destructive = ButtonComponent.destructive;\nButton.text = ButtonComponent.text;\n\nexport default Button;\n","import { memo, useMemo } from \"react\";\nimport { TextStyle, ViewStyle } from \"react-native\";\nimport { Motion, PropsTransforms, EaseFunction, MotionTransition } from \"@legendapp/motion\";\n\nimport { ComponentStyle } from \"../types/components\";\n\nimport { useComponentPropsGrouper } from \"../utils/hooks\";\n\nconst defaultTransitionDuration = 0.15 * 1000;\n\ntype ComponentStyleProps<Style extends ViewStyle = ViewStyle> = Omit<\n ComponentStyle<Style>,\n \"transformOrigin\"\n>;\ntype AnimationStyleProps<Style extends ViewStyle = ViewStyle> = ComponentStyle<Style> & PropsTransforms;\n\ntype InitialComponentStyle<Style extends ViewStyle = ViewStyle> = {\n [CSSProperty in keyof AnimationStyleProps<Style> as `initial${Capitalize<\n CSSProperty & string\n >}`]: AnimationStyleProps<Style>[CSSProperty];\n};\ntype animateComponentStyle<Style extends ViewStyle = ViewStyle> = {\n [CSSProperty in keyof AnimationStyleProps<Style> as `animate${Capitalize<\n CSSProperty & string\n >}`]: AnimationStyleProps<Style>[CSSProperty];\n};\ntype whileTapComponentStyle<Style extends ViewStyle = ViewStyle> = {\n [CSSProperty in keyof AnimationStyleProps<Style> as `whileTap${Capitalize<\n CSSProperty & string\n >}`]: AnimationStyleProps<Style>[CSSProperty];\n};\n\ntype TransitionProps = {\n transitionLoop?: number;\n} & (\n | {\n transitionType?: \"tween\" | \"timing\" | undefined;\n transitionEase?: EaseFunction | ((value: number) => number) | undefined;\n transitionEasing?: EaseFunction | ((value: number) => number) | undefined;\n transitionDuration?: number | undefined;\n transitionDelay?: number | undefined;\n }\n | {\n transitionType: \"spring\";\n transitionFriction?: number;\n transitionTension?: number;\n transitionSpeed?: number;\n transitionBounciness?: number;\n transitionStiffness?: number;\n transitionDamping?: number;\n transitionMass?: number;\n transitionOvershootClamping?: boolean | undefined;\n transitionRestDisplacementThreshold?: number | undefined;\n transitionRestSpeedThreshold?: number | undefined;\n transitionVelocity?:\n | number\n | {\n x: number;\n y: number;\n }\n | undefined;\n }\n);\n\ntype AnimateCommonProps = {\n transformOriginX?: number;\n transformOriginY?: number;\n children?: React.ReactNode;\n} & TransitionProps;\n\nexport type AnimateViewProps = {} & AnimateCommonProps &\n ComponentStyleProps &\n InitialComponentStyle &\n animateComponentStyle &\n whileTapComponentStyle;\n\nexport type AnimateTextProps = {} & AnimateCommonProps &\n ComponentStyleProps<TextStyle> &\n InitialComponentStyle<TextStyle> &\n animateComponentStyle<TextStyle> &\n whileTapComponentStyle<TextStyle>;\n\nconst Animate = {\n View: memo(function View({ transformOriginX, transformOriginY, children, ...props }: AnimateViewProps) {\n const initialProps = useComponentPropsGrouper(props, \"initial\");\n const animateProps = useComponentPropsGrouper(props, \"animate\");\n const whileTapProps = useComponentPropsGrouper(props, \"whileTap\");\n const transitionProps = useComponentPropsGrouper(props, \"transition\");\n\n const transition = useMemo<MotionTransition>(\n () => ({\n type: \"timing\",\n duration: defaultTransitionDuration,\n ...(transitionProps.withPrefixStyle as any),\n }),\n [transitionProps.withPrefixStyle],\n );\n const transformOrigin = useMemo(\n () =>\n transformOriginX !== undefined || transformOriginY !== undefined\n ? {\n x: transformOriginX ?? 0,\n y: transformOriginY ?? 0,\n }\n : undefined,\n [transformOriginX, transformOriginY],\n );\n\n const content = (\n <Motion.View\n style={initialProps.style}\n initial={initialProps.withPrefixStyle}\n animate={animateProps.withPrefixStyle}\n transition={transition}\n whileTap={whileTapProps.withPrefixStyle}\n transformOrigin={transformOrigin}\n >\n {children}\n </Motion.View>\n );\n\n return Object.keys(whileTapProps.withPrefixStyle).length > 0 ? (\n <Motion.Pressable>{content}</Motion.Pressable>\n ) : (\n content\n );\n }),\n Text: memo(function Text({ transformOriginX, transformOriginY, children, ...props }: AnimateTextProps) {\n const initialProps = useComponentPropsGrouper(props, \"initial\");\n const animateProps = useComponentPropsGrouper(props, \"animate\");\n const whileTapProps = useComponentPropsGrouper(props, \"whileTap\");\n const transitionProps = useComponentPropsGrouper(props, \"transition\");\n\n const transition = useMemo<MotionTransition>(\n () => ({\n type: \"timing\",\n duration: defaultTransitionDuration,\n ...(transitionProps.withPrefixStyle as any),\n }),\n [transitionProps.withPrefixStyle],\n );\n const transformOrigin = useMemo(\n () =>\n transformOriginX !== undefined || transformOriginY !== undefined\n ? {\n x: transformOriginX ?? 0,\n y: transformOriginY ?? 0,\n }\n : undefined,\n [transformOriginX, transformOriginY],\n );\n\n const content = (\n <Motion.Text\n style={initialProps.style}\n initial={initialProps.withPrefixStyle}\n animate={animateProps.withPrefixStyle}\n transition={transition}\n whileTap={whileTapProps.withPrefixStyle}\n transformOrigin={transformOrigin}\n >\n {children}\n </Motion.Text>\n );\n\n return Object.keys(whileTapProps.withPrefixStyle).length > 0 ? (\n <Motion.Pressable>{content}</Motion.Pressable>\n ) : (\n content\n );\n }),\n};\n\nexport default Animate;\n","import { memo } from \"react\";\nimport { ActivityIndicator, ColorValue } from \"react-native\";\nimport { OmitProps, useTheme } from \"react-better-core\";\n\nimport { ComponentMarginProps } from \"../types/components\";\n\nimport View from \"./View\";\nimport Text from \"./Text\";\n\nexport type LoaderSize = \"small\" | \"large\";\n\nexport type LoaderProps = {\n /** @default \"small\" */\n size?: LoaderSize;\n color?: ColorValue;\n} & ComponentMarginProps;\n\ntype LoaderComponentType = {\n (props: LoaderProps): React.ReactElement;\n box: (\n props: OmitProps<LoaderProps, \"size\"> & {\n /** @default \"Loading...\" */\n text?: string;\n /** @default \"large\" */\n size?: LoaderSize;\n },\n ) => React.ReactElement;\n text: (\n props: LoaderProps & {\n /** @default \"Loading...\" */\n text?: string;\n },\n ) => React.ReactElement;\n};\n\nconst LoaderComponent: LoaderComponentType = function Loader({ size = \"small\", color, ...props }) {\n const theme = useTheme();\n\n return (\n <View {...props}>\n <ActivityIndicator size={size} color={color ?? theme.colors.textPrimary} />\n </View>\n );\n};\n\nLoaderComponent.box = function Box({ text = \"Loading...\", size = \"large\", color, ...props }) {\n const theme = useTheme();\n\n return (\n <View\n width=\"100%\"\n alignItems=\"center\"\n gap={theme.styles.gap}\n marginVertical={theme.styles.space}\n {...props}\n >\n <Loader size={size} color={color} />\n\n {text && (\n <Text textAlign=\"center\" color={color ?? theme.colors.textSecondary}>\n {text}\n </Text>\n )}\n </View>\n );\n} as LoaderComponentType[`box`];\n\nLoaderComponent.text = function LoaderText({ text = \"Loading...\", size, color, ...props }) {\n const theme = useTheme();\n\n return (\n <View\n isRow\n alignItems=\"center\"\n justifyContent=\"center\"\n gap={theme.styles.gap}\n marginVertical={theme.styles.space}\n {...props}\n >\n <Loader size={size} color={color} />\n\n {text && (\n <Text textAlign=\"center\" color={color ?? theme.colors.textSecondary}>\n {text}\n </Text>\n )}\n </View>\n );\n} as LoaderComponentType[\"text\"];\n\nconst Loader = memo(LoaderComponent) as any as typeof LoaderComponent & {\n box: typeof LoaderComponent.box;\n text: typeof LoaderComponent.text;\n};\n\nLoader.box = LoaderComponent.box;\nLoader.text = LoaderComponent.text;\n\nexport default Loader;\n","import { memo, useCallback, useMemo } from \"react\";\nimport { KeyboardAvoidingView, Platform, RefreshControl, ScrollView, ViewStyle } from \"react-native\";\nimport { useBooleanState, useTheme } from \"react-better-core\";\n\nimport { useDevice, useKeyboard } from \"../utils/hooks\";\n\nimport View, { ViewProps } from \"./View\";\n\nexport type ScreenHolderProps = {\n /** @default false */\n noScroll?: boolean;\n /** @default false */\n noSideSpace?: boolean;\n /** @default 1 (second) */\n refreshTimeout?: number;\n onRefresh?: () => void;\n onRefreshEnd?: () => void;\n /** @default \"backgroundBase\" */\n backgroundColor?: ViewProps[\"backgroundColor\"];\n /** @default false */\n insideTopSafeArea?: boolean;\n /** @default false */\n insideBottomSafeArea?: boolean;\n /** @default 0 */\n bottomSpace?: number;\n footer?: React.ReactNode;\n /** @default false */\n keepFooterOnKeyboardOpened?: boolean;\n keyboardVerticalOffset?: number;\n children?: React.ReactNode;\n};\n\ntype ScreenHolderComponentType = {\n (props: ScreenHolderProps): React.ReactElement;\n footer: (props: FooterProps) => React.ReactElement;\n};\n\nconst ScreenHolderComponent: ScreenHolderComponentType = ({\n noScroll,\n noSideSpace,\n refreshTimeout = 1,\n onRefresh,\n onRefreshEnd,\n backgroundColor,\n insideTopSafeArea,\n insideBottomSafeArea,\n bottomSpace = 0,\n footer,\n keepFooterOnKeyboardOpened,\n keyboardVerticalOffset,\n children,\n}) => {\n const theme = useTheme();\n const device = useDevice();\n const keyboard = useKeyboard();\n\n const [isRefreshing, setIsRefreshing] = useBooleanState();\n\n const keyboardAvoidingViewStyle = useMemo<ViewStyle>(\n () => ({\n flex: 1,\n }),\n [],\n );\n\n const onRefreshElement = useCallback(() => {\n setIsRefreshing.setTrue();\n onRefresh?.();\n\n setTimeout(() => {\n setIsRefreshing.setFalse();\n onRefreshEnd?.();\n }, refreshTimeout * 1000);\n }, [onRefresh, onRefreshEnd, refreshTimeout]);\n\n const content = (\n <View\n flex={1}\n paddingHorizontal={!noSideSpace ? theme.styles.space : undefined}\n paddingTop={theme.styles.gap + (insideTopSafeArea ? device.safeArea.afterCalculations.top : 0)}\n paddingBottom={\n Platform.OS === \"ios\" && keyboard.isOpened\n ? device.safeArea.afterCalculations.top\n : bottomSpace + (insideBottomSafeArea ? device.safeArea.afterCalculations.bottom : 0)\n }\n >\n {children}\n </View>\n );\n\n const withRefresh = onRefresh || onRefreshEnd;\n\n return (\n <View flex={1} backgroundColor={backgroundColor ?? theme.colors.backgroundBase}>\n <KeyboardAvoidingView\n style={keyboardAvoidingViewStyle}\n keyboardVerticalOffset={\n keyboardVerticalOffset ??\n (keepFooterOnKeyboardOpened\n ? Platform.OS === \"ios\"\n ? device.safeArea.afterCalculations.bottom\n : theme.styles.gap\n : undefined)\n }\n behavior={Platform.OS === \"ios\" ? \"padding\" : \"height\"}\n >\n <View flex={1}>\n {noScroll ? (\n content\n ) : (\n <ScrollView\n refreshControl={\n withRefresh ? (\n <RefreshControl refreshing={isRefreshing} onRefresh={onRefreshElement} />\n ) : undefined\n }\n >\n {content}\n </ScrollView>\n )}\n </View>\n\n {keepFooterOnKeyboardOpened ||\n (Platform.OS === \"ios\" ? !keyboard.willOpen : !keyboard.isOpened) ? (\n footer && <View>{footer}</View>\n ) : (\n <View width=\"100%\" height={device.safeArea.afterCalculations.bottom}></View>\n )}\n </KeyboardAvoidingView>\n </View>\n );\n};\n\nexport type FooterProps = {\n /** @default false */\n noSideSpace?: boolean;\n /** @default \"backgroundBase\" */\n backgroundColor?: ViewProps[\"backgroundColor\"];\n /** @default false */\n insideBottomSafeArea?: boolean;\n children?: React.ReactNode;\n};\n\nScreenHolderComponent.footer = function Footer({\n noSideSpace,\n backgroundColor,\n insideBottomSafeArea,\n children,\n}) {\n const theme = useTheme();\n const device = useDevice();\n\n return (\n <View\n backgroundColor={backgroundColor ?? theme.colors.backgroundBase}\n paddingHorizontal={!noSideSpace ? theme.styles.space : undefined}\n paddingTop={theme.styles.gap}\n paddingBottom={insideBottomSafeArea ? device.safeArea.afterCalculations.bottom : undefined}\n >\n {children}\n </View>\n );\n} as ScreenHolderComponentType[`footer`];\n\nconst ScreenHolder = memo(ScreenHolderComponent) as any as typeof ScreenHolderComponent & {\n footer: typeof ScreenHolderComponent.footer;\n};\n\nScreenHolder.footer = ScreenHolderComponent.footer;\n\nexport default ScreenHolder;\n","import { memo, useEffect, useMemo } from \"react\";\nimport { AnyOtherString, AssetName, OmitProps, useBetterCoreContext, useTheme } from \"react-better-core\";\nimport {\n ImageSourcePropType,\n Image as NativeImage,\n ImageProps as NativeImageProps,\n ImageStyle as NativeImageStyle,\n} from \"react-native\";\n\nimport { ComponentStyle } from \"../types/components\";\nimport View from \"./View\";\nimport Text from \"./Text\";\n\nexport type ImageProps = {\n name?: AssetName | AnyOtherString;\n source?: ImageSourcePropType;\n /** @default false */\n withDevFittingMode?: boolean;\n} & OmitProps<NativeImageProps, \"source\"> &\n ComponentStyle<NativeImageStyle>;\n\ntype ImageComponentType = {\n (props: ImageProps): React.ReactElement;\n profileImage: (\n props: OmitProps<ImageProps, \"width\" | \"height\"> & {\n /** @default 50 */\n size?: number;\n letters?: string;\n backgroundColor?: string;\n },\n ) => React.ReactElement;\n};\n\nconst ImageComponent: ImageComponentType = function Image({ name, source, withDevFittingMode, ...props }) {\n const { assets } = useBetterCoreContext();\n\n const style = useMemo<NativeImageStyle>(\n () => ({\n width: 100,\n height: 100,\n ...(withDevFittingMode\n ? {\n borderWidth: 1,\n borderColor: \"#eb39f7\",\n }\n : {}),\n ...props,\n }),\n [withDevFittingMode, props],\n );\n\n useEffect(() => {\n if (!name) return;\n\n if (!assets[name.toString()])\n console.warn(\n `The asset \\`${name}\\` you are trying to use does not exist. Make sure to add it to the \\`assets\\` object in \\`<BetterComponentsProvider>\\` config value prop.`,\n );\n }, [assets, name]);\n\n return <NativeImage source={name ? (assets[name.toString()] as any) : source} style={style} {...props} />;\n};\n\nImageComponent.profileImage = function ProfileImage({ size = 50, letters, backgroundColor, ...props }) {\n const theme = useTheme();\n\n return letters ? (\n <View\n width={size}\n height={size}\n backgroundColor={backgroundColor ?? theme.colors.backgroundSecondary}\n borderWidth={1}\n borderColor={theme.colors.border}\n borderRadius={999}\n alignItems=\"center\"\n justifyContent=\"center\"\n {...props}\n >\n <Text fontSize={size / 2.5} fontWeight={700} marginTop={1}>\n {letters.toUpperCase().slice(0, 2)}\n </Text>\n </View>\n ) : (\n <ImageComponent\n width={size}\n height={size}\n borderWidth={1}\n borderColor={theme.colors.border}\n borderRadius={999}\n objectFit=\"cover\"\n {...props}\n />\n );\n} as ImageComponentType[`profileImage`];\n\n/** @description size is set to 100x100 by default */\nconst Image = memo(ImageComponent) as any as typeof ImageComponent & {\n profileImage: typeof ImageComponent.profileImage;\n};\n\nImage.profileImage = ImageComponent.profileImage;\n\nexport default Image;\n","import { forwardRef, memo, useCallback, useEffect, useImperativeHandle, useMemo, useState } from \"react\";\nimport { FocusEvent, TextInput, TextStyle } from \"react-native\";\nimport {\n darkenColor,\n lightenColor,\n useBetterCoreContext,\n useBooleanState,\n useTheme,\n} from \"react-better-core\";\n\nimport { ComponentPropWithRef } from \"../types/components\";\n\nimport View from \"./View\";\nimport Text from \"./Text\";\nimport Animate from \"./Animate\";\n\nexport type InputFieldProps = {\n placeholder?: string;\n prefix?: string;\n suffix?: string;\n defaultValue?: string;\n value?: string | number;\n /** @default true */\n editable?: boolean;\n /** @default false */\n autoFocus?: boolean;\n autoCapitalize?: React.ComponentProps<typeof TextInput>[\"autoCapitalize\"];\n autoComplete?: React.ComponentProps<typeof TextInput>[\"autoComplete\"];\n autoCorrect?: React.ComponentProps<typeof TextInput>[\"autoCorrect\"];\n /** @default \"default\" */\n keyboardAppearance?: React.ComponentProps<typeof TextInput>[\"keyboardAppearance\"];\n keyboardType?: React.ComponentProps<typeof TextInput>[\"keyboardType\"];\n /** @default false */\n secureTextEntry?: boolean;\n onFocus?: (event: FocusEvent) => void;\n onBlur?: (event: FocusEvent) => void;\n onChange?: (text: string) => void;\n};\n\nexport type InputFieldRef = {};\n\ntype InputFieldComponentType = {\n (props: ComponentPropWithRef<InputFieldRef, InputFieldProps>): React.ReactElement;\n email: (props: ComponentPropWithRef<InputFieldRef, InputFieldProps>) => React.ReactElement;\n password: (props: ComponentPropWithRef<InputFieldRef, InputFieldProps>) => React.ReactElement;\n};\n\nconst InputFieldComponent: InputFieldComponentType = forwardRef<InputFieldRef, InputFieldProps>(\n (\n {\n placeholder,\n prefix,\n suffix,\n defaultValue,\n value,\n editable = true,\n autoFocus,\n autoCapitalize,\n autoComplete,\n autoCorrect,\n keyboardAppearance = \"default\",\n keyboardType,\n secureTextEntry,\n onFocus,\n onBlur,\n onChange,\n },\n ref,\n ) => {\n const theme = useTheme();\n const { colorTheme } = useBetterCoreContext();\n\n const [internalValue, setInternalValue] = useState(value?.toString() || defaultValue || \"\");\n const [isFocused, setIsFocused] = useBooleanState();\n\n const borderWidth = 1;\n const lineHeight = 20;\n const paddingHorizontal = theme.styles.space;\n const paddingVertical = (theme.styles.space + theme.styles.gap) / 2;\n const height = borderWidth + paddingVertical + lineHeight + paddingVertical + borderWidth;\n\n const onFocusElement = useCallback((event: FocusEvent) => {\n setIsFocused.setTrue();\n onFocus?.(event);\n }, []);\n const onBlurElement = useCallback((event: FocusEvent) => {\n setIsFocused.setFalse();\n onBlur?.(event);\n }, []);\n const onChangeText = useCallback(\n (text: string) => {\n setInternalValue(text);\n onChange?.(text);\n },\n [onChange],\n );\n\n const textInputStyle = useMemo<TextStyle>(\n () => ({\n flex: 1,\n fontSize: 16,\n lineHeight,\n color: theme.colors.textPrimary,\n paddingHorizontal,\n paddingVertical,\n }),\n [theme.colors, lineHeight, paddingHorizontal, paddingVertical],\n );\n\n useEffect(() => {\n if (value === undefined) return;\n\n setInternalValue(value.toString());\n }, [value]);\n\n useImperativeHandle(\n ref,\n (): InputFieldRef => {\n return {};\n },\n [],\n );\n\n const prefixSuffixBackgroundColor =\n colorTheme === \"light\"\n ? darkenColor(theme.colors.backgroundContent, 0.03)\n : lightenColor(theme.colors.backgroundContent, 0.1);\n\n return (\n <View isRow position=\"relative\" alignItems=\"center\" height={height}>\n {prefix && (\n <View\n isRow\n height=\"100%\"\n backgroundColor={prefixSuffixBackgroundColor}\n alignItems=\"center\"\n borderWidth={borderWidth}\n borderRightWidth={0}\n borderTopLeftRadius={theme.styles.borderRadius}\n borderBottomLeftRadius={theme.styles.borderRadius}\n borderColor={theme.colors.border}\n paddingHorizontal={paddingHorizontal}\n >\n <Text fontWeight={700}>{prefix}</Text>\n </View>\n )}\n\n <Animate.View\n flex={1}\n backgroundColor={theme.colors.backgroundContent}\n borderTopLeftRadius={prefix ? 0 : theme.styles.borderRadius}\n borderBottomLeftRadius={prefix ? 0 : theme.styles.borderRadius}\n borderTopRightRadius={suffix ? 0 : theme.styles.borderRadius}\n borderBottomRightRadius={suffix ? 0 : theme.styles.borderRadius}\n borderWidth={borderWidth}\n initialBorderColor={theme.colors.border}\n animateBorderColor={isFocused ? theme.colors.primary : theme.colors.border}\n overflow=\"hidden\"\n >\n <TextInput\n style={textInputStyle}\n value={internalValue}\n defaultValue={defaultValue}\n autoCapitalize={autoCapitalize}\n autoComplete={autoComplete}\n autoCorrect={autoCorrect}\n autoFocus={autoFocus}\n placeholder={placeholder}\n placeholderTextColor={theme.colors.textSecondary + \"80\"}\n readOnly={!editable}\n keyboardAppearance={keyboardAppearance}\n keyboardType={keyboardType}\n cursorColor={theme.colors.primary}\n selectionColor={theme.colors.primary}\n secureTextEntry={secureTextEntry}\n onFocus={onFocusElement}\n onBlur={onBlurElement}\n onChangeText={onChangeText}\n />\n </Animate.View>\n\n {suffix && (\n <View\n isRow\n height=\"100%\"\n backgroundColor={prefixSuffixBackgroundColor}\n alignItems=\"center\"\n borderWidth={borderWidth}\n borderLeftWidth={0}\n borderTopRightRadius={theme.styles.borderRadius}\n borderBottomRightRadius={theme.styles.borderRadius}\n borderColor={theme.colors.border}\n paddingHorizontal={paddingHorizontal}\n >\n <Text fontWeight={700}>{suffix}</Text>\n </View>\n )}\n </View>\n );\n },\n) as any;\n\nInputFieldComponent.email = forwardRef(function Email(props, ref) {\n return (\n <InputFieldComponent\n placeholder=\"your@email.here\"\n autoComplete=\"email\"\n keyboardType=\"email-address\"\n autoCapitalize=\"none\"\n autoCorrect={false}\n {...props}\n ref={ref}\n />\n );\n}) as InputFieldComponentType[`email`];\n\nInputFieldComponent.password = forwardRef(function Password(props, ref) {\n return (\n <InputFieldComponent\n secureTextEntry\n placeholder=\"******\"\n autoCapitalize=\"none\"\n autoComplete=\"password\"\n autoCorrect={false}\n {...props}\n ref={ref}\n />\n );\n}) as InputFieldComponentType[`password`];\n\nconst InputField = memo(InputFieldComponent) as any as typeof InputFieldComponent & {\n email: typeof InputFieldComponent.email;\n password: typeof InputFieldComponent.password;\n};\n\nInputField.email = InputFieldComponent.email;\nInputField.password = InputFieldComponent.password;\n\nexport default InputField;\n","import { BetterComponentsPluginConstructor } from \"../types/plugin\";\n\nexport type AsyncStoragePluginOptions = {};\n\nexport const defaultAsyncStoragePluginOptions: Required<AsyncStoragePluginOptions> = {};\n\nexport const asyncStoragePlugin: BetterComponentsPluginConstructor<AsyncStoragePluginOptions> = (options) => ({\n name: \"asyncStorage\",\n initialize: () => {\n console.log(\"asyncStorage plugin initialized\");\n },\n getConfig: () => ({\n ...defaultAsyncStoragePluginOptions,\n ...options,\n }),\n});\n"],"mappings":"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,SAAS,mBAAAC,kBAAiB,gBAAgB;;;ACHnC,IAAM,WAAwB,oBAAI,IAAI;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACH,CAAC;AAEM,IAAM,eAA4B,oBAAI,IAAI;AAAA,EAC9C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACH,CAAC;AAEM,IAAM,yBAAsC,oBAAI,IAAI;AAAA,EACxD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACH,CAAC;;;ADnLM,SAAS,YAAY;AACzB,QAAMC,SAAQ,SAAS;AACvB,QAAM,iBAAiB,kBAAkB;AAEzC,QAAM,mBAAmB,WAAW,IAAI,QAAQ;AAChD,QAAM,mBAAmB,WAAW,IAAI,QAAQ;AAChD,QAAM,gBAAgB,iBAAiB,UAAU;AAEjD,SAAO;AAAA,IACJ,UAAU;AAAA,MACP,GAAG;AAAA;AAAA,MAEH,mBAAmB;AAAA,QAChB,KAAK,eAAe,MAAM,KAAK,KAAK,eAAe,MAAM,KAAK,KAAK,eAAe;AAAA,QAClF,SACI,eAAe,WAAW,IAAIA,OAAM,OAAO,QAAQ,eAAe,WAClE,gBAAgB,IAAIA,OAAM,OAAO,QAAQ;AAAA,QAC7C,MAAM,eAAe;AAAA,QACrB,OAAO,eAAe;AAAA,MACzB;AAAA,IACH;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA,EACH;AACH;AAEO,SAAS,cAAc;AAC3B,QAAM,CAAC,gBAAgB,iBAAiB,IAAIC,iBAAgB;AAC5D,QAAM,CAAC,kBAAkB,mBAAmB,IAAIA,iBAAgB;AAEhE,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAiB,CAAC;AAE9D,EAAAC,WAAU,MAAM;AACb,UAAM,kBAAkB,CAAC,UAAyB;AAC/C,wBAAkB,QAAQ;AAC1B,wBAAkB,MAAM,eAAe,MAAM;AAAA,IAChD;AACA,UAAM,kBAAkB,MAAM;AAC3B,wBAAkB,SAAS;AAC3B,wBAAkB,CAAC;AAAA,IACtB;AAEA,UAAM,uBAAuB,SAAS,YAAY,oBAAoB,oBAAoB,OAAO;AACjG,UAAM,uBAAuB,SAAS,YAAY,oBAAoB,oBAAoB,QAAQ;AAClG,UAAM,sBAAsB,SAAS,YAAY,mBAAmB,eAAe;AACnF,UAAM,sBAAsB,SAAS,YAAY,mBAAmB,eAAe;AAEnF,WAAO,MAAM;AACV,2BAAqB,OAAO;AAC5B,2BAAqB,OAAO;AAC5B,0BAAoB,OAAO;AAC3B,0BAAoB,OAAO;AAAA,IAC9B;AAAA,EACH,GAAG,CAAC,CAAC;AAEL,SAAO;AAAA,IACJ,UAAU;AAAA,IACV,UAAU;AAAA,IACV,QAAQ;AAAA,EACX;AACH;AAEO,SAAS,yBACb,OACA,QAKD;AACC,SAAOC,SAAQ,MAAM;AAClB,UAAM,QAAwB,CAAC;AAC/B,UAAM,kBAAkC,CAAC;AACzC,UAAM,YAAY,CAAC;AAEnB,eAAW,OAAO,OAAO;AACtB,YAAM,UAAU;AAEhB,UAAI,SAAS,IAAI,QAAQ,YAAY,CAAC,GAAG;AACtC,QAAC,MAAM,OAAO,IAAY,MAAM,OAAO;AAAA,MAC1C,WACG,QAAQ,WAAW,MAAM,MACxB,SAAS,IAAI,QAAQ,MAAM,OAAO,MAAM,EAAE,YAAY,CAAC,KACrD,aAAa,IAAI,QAAQ,MAAM,OAAO,MAAM,EAAE,YAAY,CAAC,KAC3D,uBAAuB,IAAI,QAAQ,MAAM,OAAO,MAAM,EAAE,YAAY,CAAC,IACzE;AACC,cAAM,UAAU,GAAG,QAAQ,MAAM,OAAO,QAAQ,OAAO,SAAS,CAAC,EAAE,YAAY,CAAC,GAAG,QAAQ;AAAA,UACxF,OAAO,SAAS;AAAA,QACnB,CAAC;AAED,QAAC,gBAAgB,OAA+B,IAAY,MAAM,OAAO;AAAA,MAC5E,OAAO;AACJ,QAAC,UAAU,OAAsB,IAAY,MAAM,OAAO;AAAA,MAC7D;AAAA,IACH;AAEA,WAAO;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACH;AAAA,EACH,GAAG,CAAC,OAAO,MAAM,CAAC;AACrB;;;AEnHA,OAAO,wBAAwB;AAExB,SAAS,uBAOd;AACC,SAAO;AAAA,IACJ,SAAS,OAAO,MAAM,UAAU;AAC7B,UAAI,MAAO,OAAM,mBAAmB,QAAQ,KAAK,SAAS,GAAG,KAAK,UAAU,KAAK,CAAC;AAAA,UAC7E,OAAM,mBAAmB,WAAW,KAAK,SAAS,CAAC;AAAA,IAC3D;AAAA,IACA,SAAS,OAAO,SAAS;AACtB,YAAM,OAAO,MAAM,mBAAmB,QAAQ,KAAK,SAAS,CAAC;AAE7D,UAAI,SAAS,KAAM,QAAO;AAE1B,UAAI;AACD,eAAO,KAAK,MAAM,IAAI;AAAA,MACzB,SAAS,OAAO;AACb,eAAO;AAAA,MACV;AAAA,IACH;AAAA,IACA,YAAY,OAAO,SAAS;AACzB,YAAM,mBAAmB,WAAW,KAAK,SAAS,CAAC;AAAA,IACtD;AAAA,IACA,gBAAgB,MAAM;AACnB,yBAAmB,MAAM;AAAA,IAC5B;AAAA,EACH;AACH;;;ACjCA,SAAS,QAAAC,OAAM,WAAAC,gBAAe;AAC9B;AAAA,EAEG,QAAQ;AAAA,EAGR;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACI;AACP,SAAoB,YAAAC,iBAAgB;AAqL3B,SA0DG,YAAAC,WA1DH,OAAAC,YAAA;AAjLT,IAAM,uCAAiE;AAAA,EACpE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACH;AAEA,IAAM,2CAAqE;AAAA,EACxE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACH;AAEA,SAAS,WAAW,OAAuB;AACxC,QAAM,UAAU,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,KAAK,CAAC;AAC9C,QAAM,QAAQ,KAAK,MAAM,UAAU,GAAG;AAEtC,SAAO,MAAM,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AAC5C;AA8BA,IAAM,gBAAmC,SAAS,KAAY;AAAA,EAC3D;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,eAAAC,iBAAgB;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACN,GAAqB;AAClB,QAAMC,SAAQJ,UAAS;AAEvB,QAAM,QAAQD;AAAA,IACX,OAAO;AAAA,MACJ,eAAe,QAAQ,QAAQ;AAAA,MAC/B,GAAG;AAAA,MACH,GAAI,MAAM,sBAAsB,UAAa,MAAM,uBAAuB,SACrE;AAAA,QACG,cAAc;AAAA,UACX,OAAO,MAAM,qBAAqB;AAAA,UAClC,QAAQ,MAAM,sBAAsB;AAAA,QACvC;AAAA,MACH,IACA,CAAC;AAAA,IACT;AAAA,IACA,CAAC,OAAO,KAAK;AAAA,EAChB;AACA,QAAM,0BAA0BA;AAAA,IAC7B,OAAO;AAAA,MACJ,GAAG;AAAA,MACH,GAAG,qCAAqC,OAAwB,CAAC,eAAe,iBAAiB;AAC9F,YAAI,iBAAiB,uBAAuB,iBAAiB;AAC1D,wBAAc,eAAe;AAAA,YAC3B,eAAc,YAAY,IAAI;AAEnC,eAAO;AAAA,MACV,GAAG,CAAC,CAAC;AAAA,IACR;AAAA,IACA,CAAC,KAAK;AAAA,EACT;AACA,QAAM,iCAAiCA;AAAA,IACpC,MACG,qCAAqC,OAAkB,CAAC,eAAe,iBAAiB;AACrF,MAAC,cAAc,YAAY,IAAY,MAAM,YAAY;AAEzD,aAAO;AAAA,IACV,GAAG,CAAC,CAAC;AAAA,IACR,CAAC,KAAK;AAAA,EACT;AACA,QAAM,qCAAqCA;AAAA,IACxC,MACG,yCAAyC,OAAkB,CAAC,eAAe,iBAAiB;AACzF,MAAC,cAAc,YAAY,IAAY,MAAM,YAAY;AAEzD,aAAO;AAAA,IACV,GAAG,CAAC,CAAC;AAAA,IACR,CAAC,KAAK;AAAA,EACT;AACA,QAAM,sCAAsCA;AAAA,IACzC,OAAO;AAAA,MACJ,GAAG;AAAA,MACH,GAAG,yCAAyC;AAAA,QACzC,CAAC,eAAe,iBAAiB;AAC9B,cAAI,iBAAiB,uBAAuB,iBAAiB;AAC1D,0BAAc,eAAe;AAAA,cAC3B,eAAc,YAAY,IAAI;AAEnC,iBAAO;AAAA,QACV;AAAA,QACA,CAAC;AAAA,MACJ;AAAA,IACH;AAAA,IACA,CAAC,KAAK;AAAA,EACT;AAEA,QAAM,cAAcA;AAAA,IACjB,MACG,CAAC,WACI;AAAA,MACG,SAAS,CAAC,UAAiC;AACxC,kBAAU,KAAK;AAEf,YAAI,UAAU,OAAW,oBAAmB,KAAK;AAAA,MACpD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACH,IACA,CAAC;AAAA,IACT,CAAC,UAAU,SAAS,WAAW,YAAY,aAAa,kBAAkB,KAAK;AAAA,EAClF;AAEA,QAAM,mBACH,SAAS,OAAO,YACX,MAAM,sBAAsB,UAAa,MAAM,uBAAuB,SACnE,GAAG,MAAM,qBAAqB,CAAC,MAAM,MAAM,sBAAsB,CAAC,MAAM,MAAM,YAAY,MACvF,MAAM,aAAa,SAAS,KAAK,SACpC,KACA,SACH;AAER,QAAM,cAAc,WAAW,aAAa,cAAc,eAAe;AAEzE,SAAO,cACJ,cAAc,YACX,gBAAAG;AAAA,IAAC;AAAA;AAAA,MACE;AAAA,MACA,eAAeC;AAAA,MACf,WAAW;AAAA,MACV,GAAG;AAAA,MACH,GAAG;AAAA,MAEH;AAAA;AAAA,EACJ,IACC,cAAc,cACf,SAAS,OAAO,QACb,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACE,eAAeC;AAAA,MACf,eAAeC,OAAM,OAAO;AAAA,MAC5B,OAAO;AAAA,MACN,GAAG;AAAA,MACH,GAAG;AAAA,MAEJ,0BAAAF;AAAA,QAAC;AAAA;AAAA,UACE,OAAM;AAAA,UACN,cAAc,MAAM;AAAA,UACpB,qBAAqB,MAAM;AAAA,UAC3B,sBAAsB,MAAM;AAAA,UAC5B,wBAAwB,MAAM;AAAA,UAC9B,yBAAyB,MAAM;AAAA,UAC9B,GAAG;AAAA,UAEH;AAAA;AAAA,MACJ;AAAA;AAAA,EACH,IACC,SAAS,OAAO,YACjB,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACG,GAAG;AAAA,MACJ,cAAc,MAAM;AAAA,MACpB,qBAAqB,MAAM;AAAA,MAC3B,sBAAsB,MAAM;AAAA,MAC5B,wBAAwB,MAAM;AAAA,MAC9B,yBAAyB,MAAM;AAAA,MAC/B,WAAW;AAAA,MACX,UAAS;AAAA,MACT,eAAc;AAAA,MAEd,0BAAAA;AAAA,QAAC;AAAA;AAAA,UACG,GAAG;AAAA,UACH,GAAG;AAAA,UACJ,YAAY,wBAAwB;AAAA,YACjC,GAAGE,OAAM,OAAO,WAAW,GAAG,WAAW,IAAID,cAAa,CAAC;AAAA,YAC3D;AAAA,UACH;AAAA,UACA,eAAa;AAAA,UACb,oBAAkB;AAAA,UAElB,0BAAAD,KAAC,iBAAc,MAAM,GAAI,GAAG,qCACxB,UACJ;AAAA;AAAA,MACH;AAAA;AAAA,EACH,IAEA,gBAAAA,KAAAD,WAAA,EAAE,IAGL,gBAAAC,KAAAD,WAAA,EAAE,IAGL,gBAAAC,KAAC,cAAW,WAAW,kBAAkB,OAAe,GAAG,OACvD,UACJ;AAEN;AAEA,cAAc,MAAM,SAAS,IAAI,EAAE,YAAY,GAAG,MAAM,GAAG;AACxD,QAAME,SAAQJ,UAAS;AAEvB,QAAM,cAAcD;AAAA,IACjB,MACG,aACK;AAAA,MACG,eAAe;AAAA,MACf,oBAAoB;AAAA,MACpB,cAAc;AAAA,MACd,aAAa,SAAS,OAAO,YAAY,cAAc;AAAA,IAC1D,IACA,CAAC;AAAA,IACT,CAAC;AAAA,EACJ;AAEA,SACG,gBAAAG;AAAA,IAAC;AAAA;AAAA,MACE,OAAM;AAAA,MACN,iBAAiBE,OAAM,OAAO;AAAA,MAC9B,aAAa;AAAA,MACb,aAAaA,OAAM,OAAO;AAAA,MAC1B,cAAcA,OAAM,OAAO;AAAA,MAC3B,mBAAmBA,OAAM,OAAO;AAAA,MAChC,iBAAiBA,OAAM,OAAO;AAAA,MAC7B,GAAI;AAAA,MACJ,GAAG;AAAA;AAAA,EACP;AAEN;AAEA,IAAMC,QAAOP,MAAK,aAAa;AAI/BO,MAAK,MAAM,cAAc;AAEzB,IAAO,eAAQA;;;AC3Sf,SAAS,QAAAC,OAAM,WAAAC,gBAAe;AAC9B,SAAS,QAAQ,kBAA8E;AAC/F,SAAoB,YAAAC,iBAAgB;AA4B9B,gBAAAC,YAAA;AAbN,IAAM,gBAAmC,SAAS,KAAK,EAAE,gBAAgB,UAAU,GAAG,MAAM,GAAG;AAC5F,QAAMC,SAAQF,UAAS;AAEvB,QAAM,QAAQD;AAAA,IACX,OAAO;AAAA,MACJ,UAAU;AAAA,MACV,OAAOG,OAAM,OAAO;AAAA,MACpB,GAAG;AAAA,IACN;AAAA,IACA,CAACA,QAAO,KAAK;AAAA,EAChB;AAEA,SACG,gBAAAD,KAAC,cAAW,gBAAgB,kBAAkBC,OAAM,OAAO,SAAS,OAAe,GAAG,OAClF,UACJ;AAEN;AAEA,cAAc,QAAQ,SAAS,MAAM,OAAO;AACzC,SAAO,gBAAAD,KAAC,iBAAc,UAAU,IAAI,YAAY,KAAM,GAAG,OAAO;AACnE;AAEA,cAAc,WAAW,SAAS,SAAS,OAAO;AAC/C,SAAO,gBAAAA,KAAC,iBAAc,UAAU,IAAI,YAAY,KAAM,GAAG,OAAO;AACnE;AAEA,cAAc,OAAO,SAAS,KAAK,OAAO;AACvC,QAAMC,SAAQF,UAAS;AAEvB,SAAO,gBAAAC,KAAC,iBAAc,OAAOC,OAAM,OAAO,eAAgB,GAAG,OAAO;AACvE;AAEA,cAAc,UAAU,SAAS,QAAQ,OAAO;AAC7C,QAAMA,SAAQF,UAAS;AAEvB,SAAO,gBAAAC,KAAC,iBAAc,UAAU,IAAI,OAAOC,OAAM,OAAO,eAAgB,GAAG,OAAO;AACrF;AAEA,cAAc,UAAU,SAAS,QAAQ,OAAO;AAC7C,QAAMA,SAAQF,UAAS;AAEvB,SACG,gBAAAC,KAAC,iBAAc,WAAU,UAAS,WAAU,UAAS,OAAOC,OAAM,OAAO,eAAgB,GAAG,OAAO;AAEzG;AAEA,IAAMC,QAAOL,MAAK,aAAa;AAQ/BK,MAAK,QAAQ,cAAc;AAC3BA,MAAK,WAAW,cAAc;AAC9BA,MAAK,OAAO,cAAc;AAC1BA,MAAK,UAAU,cAAc;AAC7BA,MAAK,UAAU,cAAc;AAE7B,IAAO,eAAQA;;;AC9Ef,SAAS,QAAAC,aAAY;AACrB,SAAqB,YAAAC,iBAAgB;AACrC,SAA0D,WAAW,YAAAC,iBAAgB;;;ACFrF,SAAS,QAAAC,OAAM,WAAAC,gBAAe;AAE9B,SAAS,cAA+D;AA2G/D,gBAAAC,YAAA;AArGT,IAAM,4BAA4B,OAAO;AA0EzC,IAAM,UAAU;AAAA,EACb,MAAMC,MAAK,SAASC,MAAK,EAAE,kBAAkB,kBAAkB,UAAU,GAAG,MAAM,GAAqB;AACpG,UAAM,eAAe,yBAAyB,OAAO,SAAS;AAC9D,UAAMC,gBAAe,yBAAyB,OAAO,SAAS;AAC9D,UAAM,gBAAgB,yBAAyB,OAAO,UAAU;AAChE,UAAM,kBAAkB,yBAAyB,OAAO,YAAY;AAEpE,UAAM,aAAaC;AAAA,MAChB,OAAO;AAAA,QACJ,MAAM;AAAA,QACN,UAAU;AAAA,QACV,GAAI,gBAAgB;AAAA,MACvB;AAAA,MACA,CAAC,gBAAgB,eAAe;AAAA,IACnC;AACA,UAAM,kBAAkBA;AAAA,MACrB,MACG,qBAAqB,UAAa,qBAAqB,SAClD;AAAA,QACG,GAAG,oBAAoB;AAAA,QACvB,GAAG,oBAAoB;AAAA,MAC1B,IACA;AAAA,MACR,CAAC,kBAAkB,gBAAgB;AAAA,IACtC;AAEA,UAAM,UACH,gBAAAJ;AAAA,MAAC,OAAO;AAAA,MAAP;AAAA,QACE,OAAO,aAAa;AAAA,QACpB,SAAS,aAAa;AAAA,QACtB,SAASG,cAAa;AAAA,QACtB;AAAA,QACA,UAAU,cAAc;AAAA,QACxB;AAAA,QAEC;AAAA;AAAA,IACJ;AAGH,WAAO,OAAO,KAAK,cAAc,eAAe,EAAE,SAAS,IACxD,gBAAAH,KAAC,OAAO,WAAP,EAAkB,mBAAQ,IAE3B;AAAA,EAEN,CAAC;AAAA,EACD,MAAMC,MAAK,SAASI,MAAK,EAAE,kBAAkB,kBAAkB,UAAU,GAAG,MAAM,GAAqB;AACpG,UAAM,eAAe,yBAAyB,OAAO,SAAS;AAC9D,UAAMF,gBAAe,yBAAyB,OAAO,SAAS;AAC9D,UAAM,gBAAgB,yBAAyB,OAAO,UAAU;AAChE,UAAM,kBAAkB,yBAAyB,OAAO,YAAY;AAEpE,UAAM,aAAaC;AAAA,MAChB,OAAO;AAAA,QACJ,MAAM;AAAA,QACN,UAAU;AAAA,QACV,GAAI,gBAAgB;AAAA,MACvB;AAAA,MACA,CAAC,gBAAgB,eAAe;AAAA,IACnC;AACA,UAAM,kBAAkBA;AAAA,MACrB,MACG,qBAAqB,UAAa,qBAAqB,SAClD;AAAA,QACG,GAAG,oBAAoB;AAAA,QACvB,GAAG,oBAAoB;AAAA,MAC1B,IACA;AAAA,MACR,CAAC,kBAAkB,gBAAgB;AAAA,IACtC;AAEA,UAAM,UACH,gBAAAJ;AAAA,MAAC,OAAO;AAAA,MAAP;AAAA,QACE,OAAO,aAAa;AAAA,QACpB,SAAS,aAAa;AAAA,QACtB,SAASG,cAAa;AAAA,QACtB;AAAA,QACA,UAAU,cAAc;AAAA,QACxB;AAAA,QAEC;AAAA;AAAA,IACJ;AAGH,WAAO,OAAO,KAAK,cAAc,eAAe,EAAE,SAAS,IACxD,gBAAAH,KAAC,OAAO,WAAP,EAAkB,mBAAQ,IAE3B;AAAA,EAEN,CAAC;AACJ;AAEA,IAAO,kBAAQ;;;AC7Kf,SAAS,QAAAM,aAAY;AACrB,SAAS,yBAAqC;AAC9C,SAAoB,YAAAC,iBAAgB;AAsC3B,gBAAAC,MASH,YATG;AALT,IAAM,kBAAuC,SAAS,OAAO,EAAE,OAAO,SAAS,OAAO,GAAG,MAAM,GAAG;AAC/F,QAAMC,SAAQC,UAAS;AAEvB,SACG,gBAAAF,KAAC,gBAAM,GAAG,OACP,0BAAAA,KAAC,qBAAkB,MAAY,OAAO,SAASC,OAAM,OAAO,aAAa,GAC5E;AAEN;AAEA,gBAAgB,MAAM,SAASE,KAAI,EAAE,OAAO,cAAc,OAAO,SAAS,OAAO,GAAG,MAAM,GAAG;AAC1F,QAAMF,SAAQC,UAAS;AAEvB,SACG;AAAA,IAAC;AAAA;AAAA,MACE,OAAM;AAAA,MACN,YAAW;AAAA,MACX,KAAKD,OAAM,OAAO;AAAA,MAClB,gBAAgBA,OAAM,OAAO;AAAA,MAC5B,GAAG;AAAA,MAEJ;AAAA,wBAAAD,KAACI,SAAA,EAAO,MAAY,OAAc;AAAA,QAEjC,QACE,gBAAAJ,KAAC,gBAAK,WAAU,UAAS,OAAO,SAASC,OAAM,OAAO,eAClD,gBACJ;AAAA;AAAA;AAAA,EAEN;AAEN;AAEA,gBAAgB,OAAO,SAAS,WAAW,EAAE,OAAO,cAAc,MAAM,OAAO,GAAG,MAAM,GAAG;AACxF,QAAMA,SAAQC,UAAS;AAEvB,SACG;AAAA,IAAC;AAAA;AAAA,MACE,OAAK;AAAA,MACL,YAAW;AAAA,MACX,gBAAe;AAAA,MACf,KAAKD,OAAM,OAAO;AAAA,MAClB,gBAAgBA,OAAM,OAAO;AAAA,MAC5B,GAAG;AAAA,MAEJ;AAAA,wBAAAD,KAACI,SAAA,EAAO,MAAY,OAAc;AAAA,QAEjC,QACE,gBAAAJ,KAAC,gBAAK,WAAU,UAAS,OAAO,SAASC,OAAM,OAAO,eAClD,gBACJ;AAAA;AAAA;AAAA,EAEN;AAEN;AAEA,IAAMG,UAASC,MAAK,eAAe;AAKnCD,QAAO,MAAM,gBAAgB;AAC7BA,QAAO,OAAO,gBAAgB;AAE9B,IAAO,iBAAQA;;;AFwBN,SAeS,OAAAE,MAfT,QAAAC,aAAA;AAjET,IAAM,kBAAkB,SAAS,OAAc;AAAA,EAC5C;AAAA,EACA,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB;AAAA,EACA;AAAA,EAEA;AAAA,EACA,eAAe;AAAA,EACf;AAAA,EACA;AAAA,EAEA;AAAA,EACA,gBAAgB;AAAA,EAChB;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACN,GAA+B;AAC5B,QAAMC,SAAQC,UAAS;AACvB,QAAM,kBAAkB,UAAU,UAAU;AAE5C,QAAM,mBAAmB,aAAa;AACtC,QAAM,aAAa,YAAY;AAE/B,QAAM,aAAa;AACnB,QAAM,QAAQ,aAAaD,OAAM,OAAO;AACxC,QAAM,kBAAkB,MAAM,kBACzB,WAAW,MAAM,gBAAgB,SAAS,CAAC,IAC3CA,OAAM,OAAO;AAClB,QAAM,oBAAoB,MAAM,oBAC3B,WAAW,MAAM,kBAAkB,SAAS,CAAC,IAC7CA,OAAM,OAAO,QAAQA,OAAM,OAAO;AAEvC,QAAM,eAAe,kBAAkB,aAAa;AAEpD,SACG,gBAAAF;AAAA,IAAC,gBAAQ;AAAA,IAAR;AAAA,MACE,UAAS;AAAA,MACT;AAAA,MACA,WACG,cACC,YAAY,SACR,eACA,YAAY,UACZ,aACA,YAAY,WACZ,WACA,UACA,aACA;AAAA,MAER,gBAAgB;AAAA,MAChB,gBAAgB,mBAAmB,WAAW,MAAM;AAAA,MAEpD,0BAAAC;AAAA,QAAC;AAAA;AAAA,UACE,UAAS;AAAA,UACT,OAAO,CAAC,UAAU,SAAS;AAAA,UAC3B,QAAQG,UAAS,OAAO,YAAY,eAAe;AAAA,UACnD,YAAW;AAAA,UACX,gBAAe;AAAA,UACf,iBAAiBF,OAAM,OAAO;AAAA,UAC9B,cAAcA,OAAM,OAAO;AAAA,UAC3B;AAAA,UACA;AAAA,UACA,UAAU;AAAA,UACT,GAAG;AAAA,UAEJ;AAAA,4BAAAF,KAAC,gBAAQ,MAAR,EAAa,gBAAgB,GAAG,gBAAgB,mBAAmB,IAAI,GACpE,kBACE,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACE,UAAU;AAAA,gBACV,YAAY;AAAA,gBACZ;AAAA,gBACA,qBAAqB;AAAA,gBACrB,WAAU;AAAA,gBACV;AAAA,gBACA;AAAA,gBAEC;AAAA;AAAA,YACJ,GAEN;AAAA,YAEA,gBAAAA;AAAA,cAAC,gBAAQ;AAAA,cAAR;AAAA,gBACE,UAAS;AAAA,gBACT,OAAM;AAAA,gBACN,QAAQ;AAAA,gBACR,MAAM;AAAA,gBACN,YAAW;AAAA,gBACX,gBAAe;AAAA,gBACf,gBAAgB;AAAA,gBAChB,gBAAgB,mBAAmB,IAAI;AAAA,gBAEvC,0BAAAA,KAAC,kBAAO,OAAc;AAAA;AAAA,YACzB;AAAA;AAAA;AAAA,MACH;AAAA;AAAA,EACH;AAEN;AAEA,gBAAgB,YAAY,SAAS,UAAU,OAAO;AACnD,QAAME,SAAQC,UAAS;AAEvB,SACG,gBAAAH;AAAA,IAAC;AAAA;AAAA,MACE,iBAAiBE,OAAM,OAAO;AAAA,MAC9B,aAAa;AAAA,MACb,aAAaA,OAAM,OAAO;AAAA,MAC1B,WAAWA,OAAM,OAAO;AAAA,MACxB,eAAe,cAAc,EAAE;AAAA,MAC/B,gBAAgB,MAAM,WAAW,MAAM;AAAA,MACtC,GAAG;AAAA;AAAA,EACP;AAEN;AAEA,gBAAgB,cAAc,SAAS,YAAY,OAAO;AACvD,QAAMA,SAAQC,UAAS;AAEvB,SAAO,gBAAAH,KAAC,mBAAgB,iBAAiBE,OAAM,OAAO,OAAQ,GAAG,OAAO;AAC3E;AAEA,gBAAgB,OAAO,SAAS,WAAW,OAAO;AAC/C,QAAMA,SAAQC,UAAS;AAEvB,SACG,gBAAAH;AAAA,IAAC;AAAA;AAAA,MACE,OAAM;AAAA,MACN,WAAWE,OAAM,OAAO;AAAA,MACxB,oBAAmB;AAAA,MACnB,iBAAgB;AAAA,MAChB,mBAAmBA,OAAM,OAAO;AAAA,MAChC,iBAAiBA,OAAM,OAAO;AAAA,MAC9B,SAAO;AAAA,MACP,WAAU;AAAA,MACT,GAAG;AAAA;AAAA,EACP;AAEN;AAEA,IAAMG,UAASC,MAAK,eAAe;AAMnCD,QAAO,YAAY,gBAAgB;AACnCA,QAAO,cAAc,gBAAgB;AACrCA,QAAO,OAAO,gBAAgB;AAE9B,IAAO,iBAAQA;;;AG1Nf,SAAS,QAAAE,OAAM,aAAa,WAAAC,gBAAe;AAC3C,SAAS,sBAAsB,YAAAC,WAAU,gBAAgB,kBAA6B;AACtF,SAAS,mBAAAC,kBAAiB,YAAAC,iBAAgB;AA0EpC,gBAAAC,MAkBG,QAAAC,aAlBH;AAvCN,IAAM,wBAAmD,CAAC;AAAA,EACvD;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACH,MAAM;AACH,QAAMC,SAAQC,UAAS;AACvB,QAAM,SAAS,UAAU;AACzB,QAAM,WAAW,YAAY;AAE7B,QAAM,CAAC,cAAc,eAAe,IAAIC,iBAAgB;AAExD,QAAM,4BAA4BC;AAAA,IAC/B,OAAO;AAAA,MACJ,MAAM;AAAA,IACT;AAAA,IACA,CAAC;AAAA,EACJ;AAEA,QAAM,mBAAmB,YAAY,MAAM;AACxC,oBAAgB,QAAQ;AACxB,gBAAY;AAEZ,eAAW,MAAM;AACd,sBAAgB,SAAS;AACzB,qBAAe;AAAA,IAClB,GAAG,iBAAiB,GAAI;AAAA,EAC3B,GAAG,CAAC,WAAW,cAAc,cAAc,CAAC;AAE5C,QAAM,UACH,gBAAAL;AAAA,IAAC;AAAA;AAAA,MACE,MAAM;AAAA,MACN,mBAAmB,CAAC,cAAcE,OAAM,OAAO,QAAQ;AAAA,MACvD,YAAYA,OAAM,OAAO,OAAO,oBAAoB,OAAO,SAAS,kBAAkB,MAAM;AAAA,MAC5F,eACGI,UAAS,OAAO,SAAS,SAAS,WAC7B,OAAO,SAAS,kBAAkB,MAClC,eAAe,uBAAuB,OAAO,SAAS,kBAAkB,SAAS;AAAA,MAGxF;AAAA;AAAA,EACJ;AAGH,QAAM,cAAc,aAAa;AAEjC,SACG,gBAAAN,KAAC,gBAAK,MAAM,GAAG,iBAAiB,mBAAmBE,OAAM,OAAO,gBAC7D,0BAAAD;AAAA,IAAC;AAAA;AAAA,MACE,OAAO;AAAA,MACP,wBACG,2BACC,6BACIK,UAAS,OAAO,QACb,OAAO,SAAS,kBAAkB,SAClCJ,OAAM,OAAO,MAChB;AAAA,MAER,UAAUI,UAAS,OAAO,QAAQ,YAAY;AAAA,MAE9C;AAAA,wBAAAN,KAAC,gBAAK,MAAM,GACR,qBACE,UAEA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACE,gBACG,cACG,gBAAAA,KAAC,kBAAe,YAAY,cAAc,WAAW,kBAAkB,IACtE;AAAA,YAGN;AAAA;AAAA,QACJ,GAEN;AAAA,QAEC,+BACAM,UAAS,OAAO,QAAQ,CAAC,SAAS,WAAW,CAAC,SAAS,YACrD,UAAU,gBAAAN,KAAC,gBAAM,kBAAO,IAExB,gBAAAA,KAAC,gBAAK,OAAM,QAAO,QAAQ,OAAO,SAAS,kBAAkB,QAAQ;AAAA;AAAA;AAAA,EAE3E,GACH;AAEN;AAYA,sBAAsB,SAAS,SAAS,OAAO;AAAA,EAC5C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACH,GAAG;AACA,QAAME,SAAQC,UAAS;AACvB,QAAM,SAAS,UAAU;AAEzB,SACG,gBAAAH;AAAA,IAAC;AAAA;AAAA,MACE,iBAAiB,mBAAmBE,OAAM,OAAO;AAAA,MACjD,mBAAmB,CAAC,cAAcA,OAAM,OAAO,QAAQ;AAAA,MACvD,YAAYA,OAAM,OAAO;AAAA,MACzB,eAAe,uBAAuB,OAAO,SAAS,kBAAkB,SAAS;AAAA,MAEhF;AAAA;AAAA,EACJ;AAEN;AAEA,IAAM,eAAeK,MAAK,qBAAqB;AAI/C,aAAa,SAAS,sBAAsB;AAE5C,IAAO,uBAAQ;;;AC1Kf,SAAS,QAAAC,OAAM,aAAAC,YAAW,WAAAC,gBAAe;AACzC,SAA+C,wBAAAC,uBAAsB,YAAAC,iBAAgB;AACrF;AAAA,EAEG,SAAS;AAAA,OAGL;AAqDG,gBAAAC,YAAA;AA3BV,IAAM,iBAAqC,SAAS,MAAM,EAAE,MAAM,QAAQ,oBAAoB,GAAG,MAAM,GAAG;AACvG,QAAM,EAAE,QAAAC,QAAO,IAAIC,sBAAqB;AAExC,QAAM,QAAQC;AAAA,IACX,OAAO;AAAA,MACJ,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,GAAI,qBACC;AAAA,QACG,aAAa;AAAA,QACb,aAAa;AAAA,MAChB,IACA,CAAC;AAAA,MACN,GAAG;AAAA,IACN;AAAA,IACA,CAAC,oBAAoB,KAAK;AAAA,EAC7B;AAEA,EAAAC,WAAU,MAAM;AACb,QAAI,CAAC,KAAM;AAEX,QAAI,CAACH,QAAO,KAAK,SAAS,CAAC;AACxB,cAAQ;AAAA,QACL,eAAe,IAAI;AAAA,MACtB;AAAA,EACN,GAAG,CAACA,SAAQ,IAAI,CAAC;AAEjB,SAAO,gBAAAD,KAAC,eAAY,QAAQ,OAAQC,QAAO,KAAK,SAAS,CAAC,IAAY,QAAQ,OAAe,GAAG,OAAO;AAC1G;AAEA,eAAe,eAAe,SAAS,aAAa,EAAE,OAAO,IAAI,SAAS,iBAAiB,GAAG,MAAM,GAAG;AACpG,QAAMI,SAAQC,UAAS;AAEvB,SAAO,UACJ,gBAAAN;AAAA,IAAC;AAAA;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,iBAAiB,mBAAmBK,OAAM,OAAO;AAAA,MACjD,aAAa;AAAA,MACb,aAAaA,OAAM,OAAO;AAAA,MAC1B,cAAc;AAAA,MACd,YAAW;AAAA,MACX,gBAAe;AAAA,MACd,GAAG;AAAA,MAEJ,0BAAAL,KAAC,gBAAK,UAAU,OAAO,KAAK,YAAY,KAAK,WAAW,GACpD,kBAAQ,YAAY,EAAE,MAAM,GAAG,CAAC,GACpC;AAAA;AAAA,EACH,IAEA,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,aAAaK,OAAM,OAAO;AAAA,MAC1B,cAAc;AAAA,MACd,WAAU;AAAA,MACT,GAAG;AAAA;AAAA,EACP;AAEN;AAGA,IAAME,SAAQC,MAAK,cAAc;AAIjCD,OAAM,eAAe,eAAe;AAEpC,IAAO,gBAAQA;;;ACtGf,SAAS,YAAY,QAAAE,OAAM,eAAAC,cAAa,aAAAC,YAAW,qBAAqB,WAAAC,UAAS,YAAAC,iBAAgB;AACjG,SAAqB,iBAA4B;AACjD;AAAA,EACG;AAAA,EACA;AAAA,EACA,wBAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,YAAAC;AAAA,OACI;AAyHE,SAcS,OAAAC,MAdT,QAAAC,aAAA;AAlFT,IAAM,sBAA+C;AAAA,EAClD,CACG;AAAA,IACG;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,qBAAqB;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACH,GACA,QACE;AACF,UAAMC,SAAQC,UAAS;AACvB,UAAM,EAAE,WAAW,IAAIC,sBAAqB;AAE5C,UAAM,CAAC,eAAe,gBAAgB,IAAIC,UAAS,OAAO,SAAS,KAAK,gBAAgB,EAAE;AAC1F,UAAM,CAAC,WAAW,YAAY,IAAIC,iBAAgB;AAElD,UAAM,cAAc;AACpB,UAAM,aAAa;AACnB,UAAM,oBAAoBJ,OAAM,OAAO;AACvC,UAAM,mBAAmBA,OAAM,OAAO,QAAQA,OAAM,OAAO,OAAO;AAClE,UAAM,SAAS,cAAc,kBAAkB,aAAa,kBAAkB;AAE9E,UAAM,iBAAiBK,aAAY,CAAC,UAAsB;AACvD,mBAAa,QAAQ;AACrB,gBAAU,KAAK;AAAA,IAClB,GAAG,CAAC,CAAC;AACL,UAAM,gBAAgBA,aAAY,CAAC,UAAsB;AACtD,mBAAa,SAAS;AACtB,eAAS,KAAK;AAAA,IACjB,GAAG,CAAC,CAAC;AACL,UAAM,eAAeA;AAAA,MAClB,CAAC,SAAiB;AACf,yBAAiB,IAAI;AACrB,mBAAW,IAAI;AAAA,MAClB;AAAA,MACA,CAAC,QAAQ;AAAA,IACZ;AAEA,UAAM,iBAAiBC;AAAA,MACpB,OAAO;AAAA,QACJ,MAAM;AAAA,QACN,UAAU;AAAA,QACV;AAAA,QACA,OAAON,OAAM,OAAO;AAAA,QACpB;AAAA,QACA;AAAA,MACH;AAAA,MACA,CAACA,OAAM,QAAQ,YAAY,mBAAmB,eAAe;AAAA,IAChE;AAEA,IAAAO,WAAU,MAAM;AACb,UAAI,UAAU,OAAW;AAEzB,uBAAiB,MAAM,SAAS,CAAC;AAAA,IACpC,GAAG,CAAC,KAAK,CAAC;AAEV;AAAA,MACG;AAAA,MACA,MAAqB;AAClB,eAAO,CAAC;AAAA,MACX;AAAA,MACA,CAAC;AAAA,IACJ;AAEA,UAAM,8BACH,eAAe,UACV,YAAYP,OAAM,OAAO,mBAAmB,IAAI,IAChD,aAAaA,OAAM,OAAO,mBAAmB,GAAG;AAExD,WACG,gBAAAD,MAAC,gBAAK,OAAK,MAAC,UAAS,YAAW,YAAW,UAAS,QAChD;AAAA,gBACE,gBAAAD;AAAA,QAAC;AAAA;AAAA,UACE,OAAK;AAAA,UACL,QAAO;AAAA,UACP,iBAAiB;AAAA,UACjB,YAAW;AAAA,UACX;AAAA,UACA,kBAAkB;AAAA,UAClB,qBAAqBE,OAAM,OAAO;AAAA,UAClC,wBAAwBA,OAAM,OAAO;AAAA,UACrC,aAAaA,OAAM,OAAO;AAAA,UAC1B;AAAA,UAEA,0BAAAF,KAAC,gBAAK,YAAY,KAAM,kBAAO;AAAA;AAAA,MAClC;AAAA,MAGH,gBAAAA;AAAA,QAAC,gBAAQ;AAAA,QAAR;AAAA,UACE,MAAM;AAAA,UACN,iBAAiBE,OAAM,OAAO;AAAA,UAC9B,qBAAqB,SAAS,IAAIA,OAAM,OAAO;AAAA,UAC/C,wBAAwB,SAAS,IAAIA,OAAM,OAAO;AAAA,UAClD,sBAAsB,SAAS,IAAIA,OAAM,OAAO;AAAA,UAChD,yBAAyB,SAAS,IAAIA,OAAM,OAAO;AAAA,UACnD;AAAA,UACA,oBAAoBA,OAAM,OAAO;AAAA,UACjC,oBAAoB,YAAYA,OAAM,OAAO,UAAUA,OAAM,OAAO;AAAA,UACpE,UAAS;AAAA,UAET,0BAAAF;AAAA,YAAC;AAAA;AAAA,cACE,OAAO;AAAA,cACP,OAAO;AAAA,cACP;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA,sBAAsBE,OAAM,OAAO,gBAAgB;AAAA,cACnD,UAAU,CAAC;AAAA,cACX;AAAA,cACA;AAAA,cACA,aAAaA,OAAM,OAAO;AAAA,cAC1B,gBAAgBA,OAAM,OAAO;AAAA,cAC7B;AAAA,cACA,SAAS;AAAA,cACT,QAAQ;AAAA,cACR;AAAA;AAAA,UACH;AAAA;AAAA,MACH;AAAA,MAEC,UACE,gBAAAF;AAAA,QAAC;AAAA;AAAA,UACE,OAAK;AAAA,UACL,QAAO;AAAA,UACP,iBAAiB;AAAA,UACjB,YAAW;AAAA,UACX;AAAA,UACA,iBAAiB;AAAA,UACjB,sBAAsBE,OAAM,OAAO;AAAA,UACnC,yBAAyBA,OAAM,OAAO;AAAA,UACtC,aAAaA,OAAM,OAAO;AAAA,UAC1B;AAAA,UAEA,0BAAAF,KAAC,gBAAK,YAAY,KAAM,kBAAO;AAAA;AAAA,MAClC;AAAA,OAEN;AAAA,EAEN;AACH;AAEA,oBAAoB,QAAQ,WAAW,SAAS,MAAM,OAAO,KAAK;AAC/D,SACG,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACE,aAAY;AAAA,MACZ,cAAa;AAAA,MACb,cAAa;AAAA,MACb,gBAAe;AAAA,MACf,aAAa;AAAA,MACZ,GAAG;AAAA,MACJ;AAAA;AAAA,EACH;AAEN,CAAC;AAED,oBAAoB,WAAW,WAAW,SAAS,SAAS,OAAO,KAAK;AACrE,SACG,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACE,iBAAe;AAAA,MACf,aAAY;AAAA,MACZ,gBAAe;AAAA,MACf,cAAa;AAAA,MACb,aAAa;AAAA,MACZ,GAAG;AAAA,MACJ;AAAA;AAAA,EACH;AAEN,CAAC;AAED,IAAM,aAAaU,MAAK,mBAAmB;AAK3C,WAAW,QAAQ,oBAAoB;AACvC,WAAW,WAAW,oBAAoB;AAE1C,IAAO,qBAAQ;;;AC1OR,IAAM,mCAAwE,CAAC;AAE/E,IAAM,qBAAmF,CAAC,aAAa;AAAA,EAC3G,MAAM;AAAA,EACN,YAAY,MAAM;AACf,YAAQ,IAAI,iCAAiC;AAAA,EAChD;AAAA,EACA,WAAW,OAAO;AAAA,IACf,GAAG;AAAA,IACH,GAAG;AAAA,EACN;AACH;","names":["useTheme","useLoader","lightenColor","darkenColor","useBooleanState","useEffect","useMemo","useBooleanState","theme","useBooleanState","useEffect","useMemo","memo","useMemo","useTheme","Fragment","jsx","pressStrength","theme","View","memo","useMemo","useTheme","jsx","theme","Text","memo","Platform","useTheme","memo","useMemo","jsx","memo","View","animateProps","useMemo","Text","memo","useTheme","jsx","theme","useTheme","Box","Loader","memo","jsx","jsxs","theme","useTheme","Platform","Button","memo","memo","useMemo","Platform","useBooleanState","useTheme","jsx","jsxs","theme","useTheme","useBooleanState","useMemo","Platform","memo","memo","useEffect","useMemo","useBetterCoreContext","useTheme","jsx","assets","useBetterCoreContext","useMemo","useEffect","theme","useTheme","Image","memo","memo","useCallback","useEffect","useMemo","useState","useBetterCoreContext","useBooleanState","useTheme","jsx","jsxs","theme","useTheme","useBetterCoreContext","useState","useBooleanState","useCallback","useMemo","useEffect","memo"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/components/BetterComponentsProvider.tsx","../src/constants/app.ts","../src/constants/theme.ts","../src/constants/icons.ts","../src/constants/assets.ts","../src/utils/variableFunctions.ts","../src/utils/hooks.ts","../src/constants/css.ts","../src/utils/asyncStorage.ts","../src/components/View.tsx","../src/components/Text.tsx","../src/components/Button.tsx","../src/components/Animate.tsx","../src/components/Loader.tsx","../src/components/ScreenHolder.tsx","../src/components/Image.tsx","../src/components/InputField.tsx","../src/plugins/asyncStorage.ts"],"sourcesContent":["export {\n useTheme,\n useLoader,\n useLoaderControls,\n countries,\n type OmitProps,\n type ExcludeOptions,\n type PickValue,\n type PartialRecord,\n type DeepPartialRecord,\n type PickAllRequired,\n type AnyOtherString,\n type AssetName,\n type AssetsConfig,\n type Country,\n type IconName,\n type IconsConfig,\n type LoaderName,\n type LoaderConfig,\n type Color,\n type ColorName,\n type ColorTheme,\n type Colors,\n type Styles,\n type Theme,\n type ThemeConfig,\n lightenColor,\n darkenColor,\n saturateColor,\n desaturateColor,\n generateRandomString,\n formatPhoneNumber,\n eventPreventDefault,\n eventStopPropagation,\n eventPreventStop,\n getPluralWord,\n useBooleanState,\n useDebounceState,\n loaderControls,\n colorThemeControls,\n} from \"react-better-core\";\n\nimport BetterComponentsProvider, {\n useBetterComponentsContext,\n type BetterComponentsProviderConfig,\n} from \"./components/BetterComponentsProvider\";\n\nimport { type AppConfig, type BetterComponentsConfig } from \"./types/config\";\nimport { type ComponentMarginProps, type ComponentPaddingProps } from \"./types/components\";\nimport { type PluginName, type BetterComponentsPlugin } from \"./types/plugin\";\n\nimport { pressStrength } from \"./utils/variableFunctions\";\n\nimport { useDevice, useKeyboard } from \"./utils/hooks\";\nimport { generateAsyncStorage } from \"./utils/asyncStorage\";\n\nimport View, { type ViewProps } from \"./components/View\";\nimport Text, { type TextProps } from \"./components/Text\";\nimport Button, { type ButtonProps } from \"./components/Button\";\nimport Loader, { type LoaderProps, type LoaderSize } from \"./components/Loader\";\nimport Animate, { type AnimateViewProps, type AnimateTextProps } from \"./components/Animate\";\nimport ScreenHolder, { type ScreenHolderProps, type FooterProps } from \"./components/ScreenHolder\";\nimport Image, { type ImageProps } from \"./components/Image\";\nimport InputField, { type InputFieldProps } from \"./components/InputField\";\n\nexport * from \"./plugins\";\n\nexport {\n BetterComponentsProvider,\n useBetterComponentsContext as useBetterComponentsContext,\n BetterComponentsProviderConfig,\n\n // Constants\n\n // Types\n AppConfig,\n BetterComponentsConfig as BetterComponentsConfig,\n ComponentMarginProps,\n ComponentPaddingProps,\n PluginName,\n BetterComponentsPlugin,\n\n // Hooks\n useDevice,\n useKeyboard,\n\n // Functions\n\n // Variable Functions\n pressStrength,\n\n // AsyncStorage\n generateAsyncStorage,\n\n // Components\n View,\n ViewProps,\n Text,\n TextProps,\n Button,\n ButtonProps,\n Loader,\n LoaderProps,\n LoaderSize,\n Animate,\n AnimateViewProps,\n AnimateTextProps,\n ScreenHolder,\n ScreenHolderProps,\n FooterProps,\n Image,\n ImageProps,\n InputField,\n InputFieldProps,\n};\n","import { createContext, memo, useContext, useEffect, useMemo } from \"react\";\nimport {\n useBooleanState,\n DeepPartialRecord,\n BetterCoreProvider,\n BetterCoreProviderConfig,\n BetterCoreConfig,\n useBetterCoreContext,\n} from \"react-better-core\";\n\nimport { appConfig } from \"../constants/app\";\nimport { theme } from \"../constants/theme\";\nimport { icons } from \"../constants/icons\";\nimport { assets } from \"../constants/assets\";\n\nimport { BetterComponentsConfig } from \"../types/config\";\nimport { BetterComponentsPlugin, PluginName } from \"../types/plugin\";\n\nexport type BetterComponentsInternalConfig = BetterComponentsConfig & {\n plugins: BetterComponentsPlugin[];\n componentsState: {};\n};\n\nconst betterComponentsContext = createContext<BetterComponentsInternalConfig | undefined>(undefined);\nexport let externalBetterCoreContextValue: BetterCoreConfig | undefined;\nexport let externalBetterComponentsContextValue: BetterComponentsInternalConfig | undefined;\n\nexport const useBetterComponentsContext = (): BetterComponentsConfig & BetterCoreConfig => {\n const coreContext = useBetterCoreContext();\n const context = useContext(betterComponentsContext);\n\n if (context === undefined)\n throw new Error(\n \"`useBetterComponentsContext()` must be used within a `<BetterComponentsProvider>`. Make sure to add one at the root of your component tree.\",\n );\n\n const { plugins, componentsState, ...rest } = context;\n\n return {\n ...coreContext,\n ...rest,\n };\n};\n\nexport const useBetterComponentsContextInternal = (): BetterComponentsInternalConfig => {\n const context = useContext(betterComponentsContext);\n\n if (context === undefined)\n throw new Error(\n \"`useBetterComponentsContextInternal()` must be used within a `<BetterComponentsProvider>`. Make sure to add one at the root of your component tree.\",\n );\n\n return context;\n};\n\nexport const usePlugin = <T extends object>(\n pluginName: PluginName,\n): BetterComponentsPlugin<T> | undefined => {\n const context = useContext(betterComponentsContext);\n\n if (context === undefined) {\n throw new Error(\n \"`usePlugin()` must be used within a `<BetterComponentsProvider>`. Make sure to add one at the root of your component tree.\",\n );\n }\n\n return useMemo(\n () => context.plugins.find((plugin: BetterComponentsPlugin) => plugin.name === pluginName),\n [context.plugins, pluginName],\n ) as any;\n};\n\ntype BetterComponentsProviderInternalContentProps = {\n children?: React.ReactNode;\n};\n\nfunction BetterComponentsProviderInternalContent({ children }: BetterComponentsProviderInternalContentProps) {\n return <>{children}</>;\n}\n\ntype BetterComponentsProviderInternalConfig = DeepPartialRecord<BetterComponentsConfig>;\n\ntype BetterProviderCommonProps = {\n plugins?: BetterComponentsPlugin[];\n children?: React.ReactNode;\n};\n\ntype BetterComponentsProviderInternalProps = BetterProviderCommonProps & {\n config?: BetterComponentsProviderInternalConfig;\n};\n\nfunction BetterComponentsProviderInternal({\n config,\n plugins,\n children,\n}: BetterComponentsProviderInternalProps) {\n const betterCoreContext = useBetterCoreContext();\n\n const [sideMenuIsCollapsed, setSideMenuIsCollapsed] = useBooleanState();\n const [sideMenuIsOpenMobile, setSideMenuIsOpenMobile] = useBooleanState();\n\n const readyConfig = useMemo<BetterComponentsInternalConfig>(\n () => ({\n app: {\n ...appConfig,\n ...config?.app,\n },\n sideMenuIsCollapsed,\n setSideMenuIsCollapsed,\n sideMenuIsOpenMobile,\n setSideMenuIsOpenMobile,\n plugins: plugins ?? [],\n componentsState: {},\n }),\n [config, sideMenuIsCollapsed, sideMenuIsOpenMobile, plugins],\n );\n\n useEffect(() => {\n if (!plugins) return;\n\n plugins.forEach((plugin) => {\n plugin.initialize?.();\n });\n }, []);\n\n externalBetterCoreContextValue = betterCoreContext;\n externalBetterComponentsContextValue = readyConfig;\n\n return (\n <betterComponentsContext.Provider value={readyConfig}>\n <BetterComponentsProviderInternalContent>{children}</BetterComponentsProviderInternalContent>\n </betterComponentsContext.Provider>\n );\n}\n\nexport type BetterComponentsProviderConfig = BetterCoreProviderConfig &\n BetterComponentsProviderInternalConfig;\n\ntype BetterComponentsProviderProps = BetterProviderCommonProps & {\n config?: BetterComponentsProviderConfig;\n};\n\nfunction BetterComponentsProvider({ config, ...props }: BetterComponentsProviderProps) {\n const coreConfig = useMemo<BetterCoreProviderConfig>(\n () => ({\n theme: {\n ...theme,\n ...config?.theme,\n },\n // colorTheme: config?.colorTheme ?? (localStorage.getItem(\"theme\") === \"dark\" ? \"dark\" : \"light\"),\n colorTheme: config?.colorTheme ?? \"light\",\n icons: {\n ...icons,\n ...config?.icons,\n },\n assets: {\n ...assets,\n ...config?.assets,\n },\n loaders: config?.loaders,\n }),\n [config],\n );\n\n const componentsConfig = useMemo<BetterComponentsProviderInternalConfig>(\n () => ({\n app: config?.app,\n }),\n [config],\n );\n\n return (\n <BetterCoreProvider config={coreConfig}>\n <BetterComponentsProviderInternal config={componentsConfig} {...props} />\n </BetterCoreProvider>\n );\n}\n\nexport default memo(BetterComponentsProvider);\n","import { AppConfig } from \"../types/config\";\n\nexport const appConfig: AppConfig = {};\n","import { DeepPartialRecord, ThemeConfig } from \"react-better-core\";\n\nexport const theme: DeepPartialRecord<ThemeConfig> = {};\n","import { IconsConfig } from \"react-better-core\";\n\nexport const icons: Partial<IconsConfig> = {};\n","import { AssetsConfig } from \"react-better-core\";\n\nexport const assets: Partial<AssetsConfig> = {};\n","import { BetterCoreConfig } from \"react-better-core\";\n\nimport {\n BetterComponentsInternalConfig,\n externalBetterCoreContextValue,\n} from \"../components/BetterComponentsProvider\";\n\nexport const checkBetterCoreContextValue = (\n value: BetterCoreConfig | undefined,\n functionsName: string,\n): value is BetterCoreConfig => {\n if (value === undefined) {\n throw new Error(\n `\\`${functionsName}()\\` must be used within a \\`<BetterCoreProvider>\\`. Make sure to add one at the root of your component tree.`,\n );\n }\n\n return value !== undefined;\n};\nexport const checkBetterComponentsContextValue = (\n value: BetterComponentsInternalConfig | undefined,\n functionsName: string,\n): value is BetterComponentsInternalConfig => {\n if (value === undefined) {\n throw new Error(\n `\\`${functionsName}()\\` must be used within a \\`<BetterComponentsProvider>\\`. Make sure to add one at the root of your component tree.`,\n );\n }\n\n return value !== undefined;\n};\n\nexport const pressStrength = (): Record<\"z05\" | \"z1\" | \"z2\" | \"z3\", number> => {\n if (!checkBetterCoreContextValue(externalBetterCoreContextValue, \"pressStrength\")) return undefined as any;\n\n return {\n z05: externalBetterCoreContextValue.colorTheme === \"dark\" ? 0.85 : 0.95,\n z1: externalBetterCoreContextValue.colorTheme === \"dark\" ? 0.6 : 0.8,\n z2: externalBetterCoreContextValue.colorTheme === \"dark\" ? 0.5 : 0.7,\n z3: externalBetterCoreContextValue.colorTheme === \"dark\" ? 0.4 : 0.6,\n };\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport { Dimensions, Keyboard, KeyboardEvent } from \"react-native\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\nimport { useBooleanState, useTheme } from \"react-better-core\";\n\nimport { animateProps, animateTransitionProps, cssProps } from \"../constants/css\";\n\nimport { ComponentStyle } from \"../types/components\";\n\nexport function useDevice() {\n const theme = useTheme();\n const safeAreaInsets = useSafeAreaInsets();\n\n const screenDimensions = Dimensions.get(\"screen\");\n const windowDimensions = Dimensions.get(\"window\");\n const isSmallDevice = windowDimensions.height <= 700;\n\n return {\n safeArea: {\n ...safeAreaInsets,\n /** @description The safe area insets after calculations. Recommended to use this instead of the raw insets. */\n afterCalculations: {\n top: safeAreaInsets.top < 25 ? 32 : safeAreaInsets.top < 40 ? 40 : safeAreaInsets.top,\n bottom:\n (safeAreaInsets.bottom === 0 ? theme.styles.space : safeAreaInsets.bottom) +\n (isSmallDevice ? 0 : theme.styles.space * 2),\n left: safeAreaInsets.left,\n right: safeAreaInsets.right,\n },\n },\n /** @description The dimensions of the device screen. */\n screenDimensions,\n /** @description The dimensions of the app window. */\n windowDimensions,\n /** @description Whether the device is small. */\n isSmallDevice,\n };\n}\n\nexport function useKeyboard() {\n const [keyboardOpened, setKeyboardOpened] = useBooleanState();\n const [keyboardWillOpen, setKeyboardWillOpen] = useBooleanState();\n\n const [keyboardHeight, setKeyboardHeight] = useState<number>(0);\n\n useEffect(() => {\n const keyboardDidShow = (event: KeyboardEvent) => {\n setKeyboardOpened.setTrue();\n setKeyboardHeight(event.endCoordinates.height);\n };\n const keyboardDidHide = () => {\n setKeyboardOpened.setFalse();\n setKeyboardHeight(0);\n };\n\n const willShowSubscription = Keyboard.addListener(\"keyboardWillShow\", setKeyboardWillOpen.setTrue);\n const willHideSubscription = Keyboard.addListener(\"keyboardWillHide\", setKeyboardWillOpen.setFalse);\n const didShowSubscription = Keyboard.addListener(\"keyboardDidShow\", keyboardDidShow);\n const didHideSubscription = Keyboard.addListener(\"keyboardDidHide\", keyboardDidHide);\n\n return () => {\n willShowSubscription.remove();\n willHideSubscription.remove();\n didShowSubscription.remove();\n didHideSubscription.remove();\n };\n }, []);\n\n return {\n isOpened: keyboardOpened,\n willOpen: keyboardWillOpen,\n height: keyboardHeight,\n };\n}\n\nexport function useComponentPropsGrouper<Props extends object = {}>(\n props: ComponentStyle,\n prefix: string,\n): {\n style: ComponentStyle;\n withPrefixStyle: ComponentStyle;\n restProps: Props;\n} {\n return useMemo(() => {\n const style: ComponentStyle = {};\n const withPrefixStyle: ComponentStyle = {};\n const restProps = {} as Props;\n\n for (const key in props) {\n const keyName = key as keyof ComponentStyle;\n\n if (cssProps.has(keyName.toLowerCase())) {\n (style[keyName] as any) = props[keyName];\n } else if (\n keyName.startsWith(prefix) &&\n (cssProps.has(keyName.slice(prefix.length).toLowerCase()) ||\n animateProps.has(keyName.slice(prefix.length).toLowerCase()) ||\n animateTransitionProps.has(keyName.slice(prefix.length).toLowerCase()))\n ) {\n const realKey = `${keyName.slice(prefix.length, prefix.length + 1).toLowerCase()}${keyName.slice(\n prefix.length + 1,\n )}`;\n\n (withPrefixStyle[realKey as keyof ComponentStyle] as any) = props[keyName];\n } else {\n (restProps[keyName as keyof Props] as any) = props[keyName];\n }\n }\n\n return {\n style,\n withPrefixStyle,\n restProps,\n };\n }, [props, prefix]);\n}\n","export const cssProps: Set<string> = new Set([\n \"aligncontent\",\n \"alignitems\",\n \"alignself\",\n \"aspectratio\",\n \"borderbottomwidth\",\n \"borderendwidth\",\n \"borderleftwidth\",\n \"borderrightwidth\",\n \"borderstartwidth\",\n \"bordertopwidth\",\n \"borderwidth\",\n \"bottom\",\n \"boxsizing\",\n \"display\",\n \"end\",\n \"flex\",\n \"flexbasis\",\n \"flexdirection\",\n \"rowgap\",\n \"gap\",\n \"columngap\",\n \"flexgrow\",\n \"flexshrink\",\n \"flexwrap\",\n \"height\",\n \"justifycontent\",\n \"left\",\n \"margin\",\n \"marginbottom\",\n \"marginend\",\n \"marginhorizontal\",\n \"marginleft\",\n \"marginright\",\n \"marginstart\",\n \"margintop\",\n \"marginvertical\",\n \"maxheight\",\n \"maxwidth\",\n \"minheight\",\n \"minwidth\",\n \"overflow\",\n \"padding\",\n \"paddingbottom\",\n \"paddingend\",\n \"paddinghorizontal\",\n \"paddingleft\",\n \"paddingright\",\n \"paddingstart\",\n \"paddingtop\",\n \"paddingvertical\",\n \"position\",\n \"right\",\n \"start\",\n \"top\",\n \"width\",\n \"zindex\",\n \"direction\",\n \"inset\",\n \"insetblock\",\n \"insetblockend\",\n \"insetblockstart\",\n \"insetinline\",\n \"insetinlineend\",\n \"insetinlinestart\",\n \"marginblock\",\n \"marginblockend\",\n \"marginblockstart\",\n \"margininline\",\n \"margininlineend\",\n \"margininlinestart\",\n \"paddingblock\",\n \"paddingblockend\",\n \"paddingblockstart\",\n \"paddinginline\",\n \"paddinginlineend\",\n \"paddinginlinestart\",\n \"shadowcolor\",\n \"shadowoffset\",\n \"shadowopacity\",\n \"shadowradius\",\n \"transform\",\n \"transformorigin\",\n \"transformmatrix\",\n \"rotation\",\n \"scalex\",\n \"scaley\",\n \"translatex\",\n \"translatey\",\n \"backfacevisibility\",\n \"backgroundcolor\",\n \"borderblockcolor\",\n \"borderblockendcolor\",\n \"borderblockstartcolor\",\n \"borderbottomcolor\",\n \"borderbottomendradius\",\n \"borderbottomleftradius\",\n \"borderbottomrightradius\",\n \"borderbottomstartradius\",\n \"bordercolor\",\n \"bordercurve\",\n \"borderendcolor\",\n \"borderendendradius\",\n \"borderendstartradius\",\n \"borderleftcolor\",\n \"borderradius\",\n \"borderrightcolor\",\n \"borderstartcolor\",\n \"borderstartendradius\",\n \"borderstartstartradius\",\n \"borderstyle\",\n \"bordertopcolor\",\n \"bordertopendradius\",\n \"bordertopleftradius\",\n \"bordertoprightradius\",\n \"bordertopstartradius\",\n \"outlinecolor\",\n \"outlineoffset\",\n \"outlinestyle\",\n \"outlinewidth\",\n \"opacity\",\n \"elevation\",\n \"pointerevents\",\n \"isolation\",\n \"cursor\",\n \"boxshadow\",\n \"filter\",\n \"mixblendmode\",\n \"fontvariant\",\n \"textdecorationcolor\",\n \"textdecorationstyle\",\n \"writingdirection\",\n \"textalignvertical\",\n \"verticalalign\",\n \"includefontpadding\",\n \"color\",\n \"fontfamily\",\n \"fontsize\",\n \"fontstyle\",\n \"fontweight\",\n \"letterspacing\",\n \"lineheight\",\n \"textalign\",\n \"textdecorationline\",\n \"textdecorationstyle\",\n \"textdecorationcolor\",\n \"textshadowcolor\",\n \"textshadowoffset\",\n \"textshadowradius\",\n \"texttransform\",\n \"userselect\",\n]);\n\nexport const animateProps: Set<string> = new Set([\n \"x\",\n \"y\",\n \"scale\",\n \"scaleX\",\n \"scaleY\",\n \"skewX\",\n \"skewY\",\n \"perspective\",\n \"rotate\",\n \"rotateX\",\n \"rotateY\",\n \"rotateZ\",\n \"matrix\",\n]);\n\nexport const animateTransitionProps: Set<string> = new Set([\n \"type\",\n \"ease\",\n \"easing\",\n \"duration\",\n \"delay\",\n \"type\",\n \"friction\",\n \"tension\",\n \"speed\",\n \"bounciness\",\n \"stiffness\",\n \"damping\",\n \"mass\",\n \"overshootClamping\",\n \"restDisplacementThreshold\",\n \"restSpeedThreshold\",\n \"velocity\",\n \"loop\",\n]);\n","import NativeAsyncStorage from \"@react-native-async-storage/async-storage\";\n\nexport function generateAsyncStorage<AsyncStorage extends object>(): {\n setItem: <StorageName extends keyof AsyncStorage>(name: StorageName, value: AsyncStorage[StorageName]) => void;\n getItem: <StorageName extends keyof AsyncStorage>(\n name: StorageName,\n ) => Promise<AsyncStorage[StorageName] | undefined>;\n removeItem: (name: keyof AsyncStorage) => void;\n removeAllItems: () => void;\n} {\n return {\n setItem: async (name, value) => {\n if (value) await NativeAsyncStorage.setItem(name.toString(), JSON.stringify(value));\n else await NativeAsyncStorage.removeItem(name.toString());\n },\n getItem: async (name) => {\n const item = await NativeAsyncStorage.getItem(name.toString());\n\n if (item === null) return undefined;\n\n try {\n return JSON.parse(item);\n } catch (error) {\n return undefined;\n }\n },\n removeItem: async (name) => {\n await NativeAsyncStorage.removeItem(name.toString());\n },\n removeAllItems: () => {\n NativeAsyncStorage.clear();\n },\n };\n}\n","import { memo, useMemo } from \"react\";\nimport {\n GestureResponderEvent,\n View as NativeView,\n ViewProps as NativeViewProps,\n ViewStyle as NativeViewStyle,\n Platform,\n TouchableHighlight,\n TouchableNativeFeedback,\n TouchableOpacity,\n} from \"react-native\";\nimport { OmitProps, useTheme } from \"react-better-core\";\n\nimport { ComponentStyle } from \"../types/components\";\n\nconst touchableHighlightStyleMoveToContent: (keyof ComponentStyle)[] = [\n \"backgroundColor\",\n \"padding\",\n \"paddingTop\",\n \"paddingBottom\",\n \"paddingLeft\",\n \"paddingRight\",\n \"paddingHorizontal\",\n \"paddingVertical\",\n \"borderWidth\",\n \"borderTopWidth\",\n \"borderBottomWidth\",\n \"borderLeftWidth\",\n \"borderRightWidth\",\n \"borderColor\",\n \"borderTopColor\",\n \"borderBottomColor\",\n \"borderLeftColor\",\n \"borderRightColor\",\n];\n\nconst touchableNativeFeedbackStyleMoveToHolder: (keyof ComponentStyle)[] = [\n \"width\",\n \"height\",\n \"margin\",\n \"marginTop\",\n \"marginBottom\",\n \"marginLeft\",\n \"marginRight\",\n \"marginHorizontal\",\n \"marginVertical\",\n];\n\nfunction alphaToHex(alpha: number): string {\n const clamped = Math.min(1, Math.max(0, alpha));\n const value = Math.round(clamped * 255);\n\n return value.toString(16).padStart(2, \"0\");\n}\n\nexport type ViewProps<Value = unknown> = {\n /** @default false */\n isRow?: boolean;\n value?: Value;\n /** @default false */\n disabled?: boolean;\n /** @default \"highlight\" */\n pressType?: \"opacity\" | \"highlight\";\n /** @default 0.8 */\n pressStrength?: number;\n onPress?: (event: GestureResponderEvent) => void;\n onPressIn?: (event: GestureResponderEvent) => void;\n onPressOut?: (event: GestureResponderEvent) => void;\n onLongPress?: (event: GestureResponderEvent) => void;\n onPressWithValue?: (value: Value) => void;\n} & OmitProps<NativeViewProps, \"style\" | \"onBlur\" | \"onFocus\"> &\n ComponentStyle;\n\ntype ViewComponentType = {\n <Value>(props: ViewProps<Value>): React.ReactElement;\n box: <Value>(\n props: ViewProps<Value> & {\n /** @default false */\n withShadow?: boolean;\n },\n ) => React.ReactElement;\n};\n\nconst ViewComponent: ViewComponentType = function View<Value>({\n isRow,\n value,\n disabled,\n pressType = \"highlight\",\n pressStrength = 0.8,\n onPress,\n onPressIn,\n onPressOut,\n onLongPress,\n onPressWithValue,\n children,\n ...props\n}: ViewProps<Value>) {\n const theme = useTheme();\n\n const style = useMemo<NativeViewStyle>(\n () => ({\n flexDirection: isRow ? \"row\" : \"column\",\n ...props,\n ...(props.shadowOffsetWidth !== undefined || props.shadowOffsetHeight !== undefined\n ? {\n shadowOffset: {\n width: props.shadowOffsetWidth ?? 0,\n height: props.shadowOffsetHeight ?? 0,\n },\n }\n : {}),\n }),\n [isRow, props],\n );\n const touchableHighlightStyle = useMemo<NativeViewStyle>(\n () => ({\n ...style,\n ...touchableHighlightStyleMoveToContent.reduce<NativeViewStyle>((previousValue, currentValue) => {\n if (currentValue === \"shadowOffsetWidth\" || currentValue === \"shadowOffsetHeight\")\n previousValue.shadowOffset = undefined;\n else previousValue[currentValue] = undefined;\n\n return previousValue;\n }, {}),\n }),\n [style],\n );\n const touchableHighlightContentProps = useMemo<ViewProps>(\n () =>\n touchableHighlightStyleMoveToContent.reduce<ViewProps>((previousValue, currentValue) => {\n (previousValue[currentValue] as any) = props[currentValue];\n\n return previousValue;\n }, {}),\n [props],\n );\n const touchableNativeFeedbackHolderStyle = useMemo<NativeViewStyle>(\n () =>\n touchableNativeFeedbackStyleMoveToHolder.reduce<ViewProps>((previousValue, currentValue) => {\n (previousValue[currentValue] as any) = props[currentValue];\n\n return previousValue;\n }, {}),\n [props],\n );\n const touchableNativeFeedbackContentStyle = useMemo<ViewProps>(\n () => ({\n ...style,\n ...touchableNativeFeedbackStyleMoveToHolder.reduce<NativeViewStyle>(\n (previousValue, currentValue) => {\n if (currentValue === \"shadowOffsetWidth\" || currentValue === \"shadowOffsetHeight\")\n previousValue.shadowOffset = undefined;\n else previousValue[currentValue] = undefined;\n\n return previousValue;\n },\n {},\n ),\n }),\n [style],\n );\n\n const pressEvents = useMemo(\n () =>\n !disabled\n ? {\n onPress: (event: GestureResponderEvent) => {\n onPress?.(event);\n\n if (value !== undefined) onPressWithValue?.(value);\n },\n onPressIn,\n onPressOut,\n onLongPress,\n }\n : {},\n [disabled, onPress, onPressIn, onPressOut, onLongPress, onPressWithValue, value],\n );\n\n const androidBoxShadow =\n Platform.OS === \"android\"\n ? props.shadowOffsetWidth !== undefined || props.shadowOffsetHeight !== undefined\n ? `${props.shadowOffsetWidth ?? 0}px ${props.shadowOffsetHeight ?? 0}px ${props.shadowRadius}px ${\n props.shadowColor?.toString() ?? \"#000000\"\n }`\n : undefined\n : undefined;\n\n const isPressable = onPress || onPressIn || onPressOut || onLongPress || onPressWithValue;\n\n return isPressable ? (\n pressType === \"opacity\" ? (\n <TouchableOpacity\n style={style}\n activeOpacity={pressStrength}\n boxShadow={androidBoxShadow}\n {...pressEvents}\n {...props}\n >\n {children}\n </TouchableOpacity>\n ) : pressType === \"highlight\" ? (\n Platform.OS === \"ios\" ? (\n <TouchableHighlight\n activeOpacity={pressStrength}\n underlayColor={theme.colors.textPrimary}\n style={touchableHighlightStyle}\n {...pressEvents}\n {...props}\n >\n <ViewComponent\n width=\"100%\"\n borderRadius={props.borderRadius}\n borderTopLeftRadius={props.borderTopLeftRadius}\n borderTopRightRadius={props.borderTopRightRadius}\n borderBottomLeftRadius={props.borderBottomLeftRadius}\n borderBottomRightRadius={props.borderBottomRightRadius}\n {...touchableHighlightContentProps}\n >\n {children}\n </ViewComponent>\n </TouchableHighlight>\n ) : Platform.OS === \"android\" ? (\n <ViewComponent\n {...touchableNativeFeedbackHolderStyle}\n borderRadius={props.borderRadius}\n borderTopLeftRadius={props.borderTopLeftRadius}\n borderTopRightRadius={props.borderTopRightRadius}\n borderBottomLeftRadius={props.borderBottomLeftRadius}\n borderBottomRightRadius={props.borderBottomRightRadius}\n boxShadow={androidBoxShadow}\n overflow=\"hidden\"\n pointerEvents=\"box-none\"\n >\n <TouchableNativeFeedback\n {...pressEvents}\n {...props}\n background={TouchableNativeFeedback.Ripple(\n `${theme.colors.textPrimary}${alphaToHex(1 - pressStrength)}`,\n false,\n )}\n useForeground\n touchSoundDisabled\n >\n <ViewComponent flex={1} {...touchableNativeFeedbackContentStyle}>\n {children}\n </ViewComponent>\n </TouchableNativeFeedback>\n </ViewComponent>\n ) : (\n <></>\n )\n ) : (\n <></>\n )\n ) : (\n <NativeView boxShadow={androidBoxShadow} style={style} {...props}>\n {children}\n </NativeView>\n );\n};\n\nViewComponent.box = function Box({ withShadow, ...props }) {\n const theme = useTheme();\n\n const shadowProps = useMemo<ViewProps>(\n () =>\n withShadow\n ? {\n shadowOpacity: 0.2,\n shadowOffsetHeight: 10,\n shadowRadius: 10,\n shadowColor: Platform.OS === \"android\" ? \"#00000020\" : undefined,\n }\n : {},\n [],\n );\n\n return (\n <ViewComponent\n width=\"100%\"\n backgroundColor={theme.colors.backgroundContent}\n borderWidth={1}\n borderColor={theme.colors.border}\n borderRadius={theme.styles.borderRadius}\n paddingHorizontal={theme.styles.space}\n paddingVertical={theme.styles.gap}\n {...(shadowProps as any)}\n {...props}\n />\n );\n} as ViewComponentType[\"box\"];\n\nconst View = memo(ViewComponent) as any as typeof ViewComponent & {\n box: typeof ViewComponent.box;\n};\n\nView.box = ViewComponent.box;\n\nexport default View;\n","import { memo, useMemo } from \"react\";\nimport { Text as NativeText, TextProps as NativeTextProps, TextStyle as NativeTextStyle } from \"react-native\";\nimport { OmitProps, useTheme } from \"react-better-core\";\n\nimport { ComponentStyle } from \"../types/components\";\n\nexport type TextProps = {} & OmitProps<NativeTextProps, \"style\"> & ComponentStyle<NativeTextStyle>;\n\ntype TextComponentType = {\n (props: TextProps): React.ReactElement;\n title: (props: TextProps) => React.ReactElement;\n subtitle: (props: TextProps) => React.ReactElement;\n body: (props: TextProps) => React.ReactElement;\n caption: (props: TextProps) => React.ReactElement;\n unknown: (props: TextProps) => React.ReactElement;\n};\n\nconst TextComponent: TextComponentType = function Text({ selectionColor, children, ...props }) {\n const theme = useTheme();\n\n const style = useMemo<NativeTextStyle>(\n () => ({\n fontSize: 16,\n color: theme.colors.textPrimary,\n ...props,\n }),\n [theme, props],\n );\n\n return (\n <NativeText selectionColor={selectionColor ?? theme.colors.primary} style={style} {...props}>\n {children}\n </NativeText>\n );\n};\n\nTextComponent.title = function Title(props) {\n return <TextComponent fontSize={32} fontWeight={700} {...props} />;\n} as TextComponentType[`title`];\n\nTextComponent.subtitle = function Subtitle(props) {\n return <TextComponent fontSize={24} fontWeight={700} {...props} />;\n} as TextComponentType[`subtitle`];\n\nTextComponent.body = function Body(props) {\n const theme = useTheme();\n\n return <TextComponent color={theme.colors.textSecondary} {...props} />;\n} as TextComponentType[`body`];\n\nTextComponent.caption = function Caption(props) {\n const theme = useTheme();\n\n return <TextComponent fontSize={14} color={theme.colors.textSecondary} {...props} />;\n} as TextComponentType[`caption`];\n\nTextComponent.unknown = function Unknown(props) {\n const theme = useTheme();\n\n return (\n <TextComponent fontStyle=\"italic\" textAlign=\"center\" color={theme.colors.textSecondary} {...props} />\n );\n} as TextComponentType[`unknown`];\n\nconst Text = memo(TextComponent) as any as typeof TextComponent & {\n title: typeof TextComponent.title;\n subtitle: typeof TextComponent.subtitle;\n body: typeof TextComponent.body;\n caption: typeof TextComponent.caption;\n unknown: typeof TextComponent.unknown;\n};\n\nText.title = TextComponent.title;\nText.subtitle = TextComponent.subtitle;\nText.body = TextComponent.body;\nText.caption = TextComponent.caption;\nText.unknown = TextComponent.unknown;\n\nexport default Text;\n","import { memo } from \"react\";\nimport { ColorValue, Platform } from \"react-native\";\nimport { AnyOtherString, AssetName, IconName, LoaderName, useLoader, useTheme } from \"react-better-core\";\n\nimport { pressStrength } from \"../utils/variableFunctions\";\n\nimport View, { ViewProps } from \"./View\";\nimport Text, { TextProps } from \"./Text\";\nimport Animate from \"./Animate\";\nimport Loader from \"./Loader\";\n\nexport type ButtonProps<Value> = {\n text?: string;\n /** @default 16 */\n textFontSize?: TextProps[\"fontSize\"];\n /** @default 700 */\n textFontWeight?: TextProps[\"fontWeight\"];\n textDecorationLine?: TextProps[\"textDecorationLine\"];\n /** @default \"base\" */\n textColor?: ColorValue;\n\n icon?: IconName | AnyOtherString;\n /** @default \"left\" */\n iconPosition?: \"left\" | \"right\";\n /** @default Same as text color */\n iconColor?: string;\n /** @default 16 */\n iconSize?: number;\n\n image?: AssetName | AnyOtherString;\n /** @default \"left\" */\n imagePosition?: \"left\" | \"right\";\n /** @default 16 */\n imageWidth?: number;\n /** @default undefined */\n imageHeight?: number;\n\n loaderName?: LoaderName | AnyOtherString;\n /** @default false */\n isLoading?: boolean;\n\n isSmall?: true | \"left\" | \"center\" | \"right\";\n} & ViewProps<Value>;\n\ntype InternalButtonProps<Value> = ButtonProps<Value> & {\n animateOpacity?: number;\n};\n\nexport type ButtonRef = {};\n\ntype ButtonComponentType = {\n <Value>(props: ButtonProps<Value>): React.ReactElement;\n secondary: <Value>(props: ButtonProps<Value>) => React.ReactElement;\n destructive: <Value>(props: ButtonProps<Value>) => React.ReactElement;\n text: <Value>(props: ButtonProps<Value>) => React.ReactElement;\n};\n\nconst ButtonComponent = function Button<Value>({\n text,\n textFontSize = 16,\n textFontWeight = 700,\n textDecorationLine,\n textColor,\n\n icon,\n iconPosition = \"left\",\n iconColor,\n iconSize,\n\n image,\n imagePosition = \"left\",\n imageWidth,\n imageHeight,\n\n loaderName,\n isLoading,\n\n isSmall,\n\n animateOpacity,\n\n flex,\n alignSelf,\n disabled,\n ...props\n}: InternalButtonProps<Value>) {\n const theme = useTheme();\n const isLoadingLoader = useLoader(loaderName);\n\n const isLoadingElement = isLoading || isLoadingLoader;\n const isDisabled = disabled || isLoadingElement;\n\n const lineHeight = 20;\n const color = textColor ?? theme.colors.base;\n const paddingVertical = props.paddingVertical\n ? parseFloat(props.paddingVertical.toString())\n : theme.styles.space;\n const paddingHorizontal = props.paddingHorizontal\n ? parseFloat(props.paddingHorizontal.toString())\n : theme.styles.space + theme.styles.gap;\n\n const buttonHeight = paddingVertical + lineHeight + paddingVertical;\n\n return (\n <Animate.View\n position=\"relative\"\n flex={flex}\n alignSelf={\n alignSelf ??\n (isSmall === \"left\"\n ? \"flex-start\"\n : isSmall === \"right\"\n ? \"flex-end\"\n : isSmall === \"center\"\n ? \"center\"\n : isSmall\n ? \"baseline\"\n : undefined)\n }\n initialOpacity={1}\n animateOpacity={animateOpacity ?? (disabled ? 0.6 : 1)}\n >\n <View\n position=\"relative\"\n width={!isSmall ? \"100%\" : undefined}\n height={Platform.OS === \"android\" ? buttonHeight : undefined}\n alignItems=\"center\"\n justifyContent=\"center\"\n backgroundColor={theme.colors.primary}\n borderRadius={theme.styles.borderRadius}\n paddingVertical={paddingVertical}\n paddingHorizontal={paddingHorizontal}\n disabled={isDisabled}\n {...props}\n >\n <Animate.View initialOpacity={1} animateOpacity={isLoadingElement ? 0 : 1}>\n {text && (\n <Text\n fontSize={textFontSize}\n fontWeight={textFontWeight}\n textDecorationLine={textDecorationLine}\n textDecorationColor={color}\n textAlign=\"center\"\n lineHeight={lineHeight}\n color={color}\n >\n {text}\n </Text>\n )}\n </Animate.View>\n\n <Animate.View\n position=\"absolute\"\n width=\"100%\"\n height={buttonHeight}\n left={paddingHorizontal}\n alignItems=\"center\"\n justifyContent=\"center\"\n initialOpacity={0}\n animateOpacity={isLoadingElement ? 1 : 0}\n >\n <Loader color={color} />\n </Animate.View>\n </View>\n </Animate.View>\n );\n};\n\nButtonComponent.secondary = function Secondary(props) {\n const theme = useTheme();\n\n return (\n <ButtonComponent\n backgroundColor={theme.colors.backgroundContent}\n borderWidth={1}\n borderColor={theme.colors.border}\n textColor={theme.colors.textPrimary}\n pressStrength={pressStrength().z05}\n animateOpacity={props.disabled ? 0.4 : 1}\n {...props}\n />\n );\n} as ButtonComponentType[`secondary`];\n\nButtonComponent.destructive = function Destructive(props) {\n const theme = useTheme();\n\n return <ButtonComponent backgroundColor={theme.colors.error} {...props} />;\n} as ButtonComponentType[`destructive`];\n\nButtonComponent.text = function ButtonText(props) {\n const theme = useTheme();\n\n return (\n <ButtonComponent\n width=\"auto\"\n textColor={theme.colors.textPrimary}\n textDecorationLine=\"underline\"\n backgroundColor=\"transparent\"\n paddingHorizontal={theme.styles.space}\n paddingVertical={theme.styles.gap}\n isSmall\n pressType=\"opacity\"\n {...props}\n />\n );\n} as ButtonComponentType[`text`];\n\nconst Button = memo(ButtonComponent) as any as ButtonComponentType & {\n secondary: typeof ButtonComponent.secondary;\n destructive: typeof ButtonComponent.destructive;\n text: typeof ButtonComponent.text;\n};\n\nButton.secondary = ButtonComponent.secondary;\nButton.destructive = ButtonComponent.destructive;\nButton.text = ButtonComponent.text;\n\nexport default Button;\n","import { memo, useMemo } from \"react\";\nimport { TextStyle, ViewStyle } from \"react-native\";\nimport { Motion, PropsTransforms, EaseFunction, MotionTransition } from \"@legendapp/motion\";\n\nimport { ComponentStyle } from \"../types/components\";\n\nimport { useComponentPropsGrouper } from \"../utils/hooks\";\n\nconst defaultTransitionDuration = 0.15 * 1000;\n\ntype ComponentStyleProps<Style extends ViewStyle = ViewStyle> = Omit<\n ComponentStyle<Style>,\n \"transformOrigin\"\n>;\ntype AnimationStyleProps<Style extends ViewStyle = ViewStyle> = ComponentStyle<Style> & PropsTransforms;\n\ntype InitialComponentStyle<Style extends ViewStyle = ViewStyle> = {\n [CSSProperty in keyof AnimationStyleProps<Style> as `initial${Capitalize<\n CSSProperty & string\n >}`]: AnimationStyleProps<Style>[CSSProperty];\n};\ntype animateComponentStyle<Style extends ViewStyle = ViewStyle> = {\n [CSSProperty in keyof AnimationStyleProps<Style> as `animate${Capitalize<\n CSSProperty & string\n >}`]: AnimationStyleProps<Style>[CSSProperty];\n};\ntype whileTapComponentStyle<Style extends ViewStyle = ViewStyle> = {\n [CSSProperty in keyof AnimationStyleProps<Style> as `whileTap${Capitalize<\n CSSProperty & string\n >}`]: AnimationStyleProps<Style>[CSSProperty];\n};\n\ntype TransitionProps = {\n transitionLoop?: number;\n} & (\n | {\n transitionType?: \"tween\" | \"timing\" | undefined;\n transitionEase?: EaseFunction | ((value: number) => number) | undefined;\n transitionEasing?: EaseFunction | ((value: number) => number) | undefined;\n transitionDuration?: number | undefined;\n transitionDelay?: number | undefined;\n }\n | {\n transitionType: \"spring\";\n transitionFriction?: number;\n transitionTension?: number;\n transitionSpeed?: number;\n transitionBounciness?: number;\n transitionStiffness?: number;\n transitionDamping?: number;\n transitionMass?: number;\n transitionOvershootClamping?: boolean | undefined;\n transitionRestDisplacementThreshold?: number | undefined;\n transitionRestSpeedThreshold?: number | undefined;\n transitionVelocity?:\n | number\n | {\n x: number;\n y: number;\n }\n | undefined;\n }\n);\n\ntype AnimateCommonProps = {\n transformOriginX?: number;\n transformOriginY?: number;\n children?: React.ReactNode;\n} & TransitionProps;\n\nexport type AnimateViewProps = {} & AnimateCommonProps &\n ComponentStyleProps &\n InitialComponentStyle &\n animateComponentStyle &\n whileTapComponentStyle;\n\nexport type AnimateTextProps = {} & AnimateCommonProps &\n ComponentStyleProps<TextStyle> &\n InitialComponentStyle<TextStyle> &\n animateComponentStyle<TextStyle> &\n whileTapComponentStyle<TextStyle>;\n\nconst Animate = {\n View: memo(function View({ transformOriginX, transformOriginY, children, ...props }: AnimateViewProps) {\n const initialProps = useComponentPropsGrouper(props, \"initial\");\n const animateProps = useComponentPropsGrouper(props, \"animate\");\n const whileTapProps = useComponentPropsGrouper(props, \"whileTap\");\n const transitionProps = useComponentPropsGrouper(props, \"transition\");\n\n const transition = useMemo<MotionTransition>(\n () => ({\n type: \"timing\",\n duration: defaultTransitionDuration,\n ...(transitionProps.withPrefixStyle as any),\n }),\n [transitionProps.withPrefixStyle],\n );\n const transformOrigin = useMemo(\n () =>\n transformOriginX !== undefined || transformOriginY !== undefined\n ? {\n x: transformOriginX ?? 0,\n y: transformOriginY ?? 0,\n }\n : undefined,\n [transformOriginX, transformOriginY],\n );\n\n const content = (\n <Motion.View\n style={initialProps.style}\n initial={initialProps.withPrefixStyle}\n animate={animateProps.withPrefixStyle}\n transition={transition}\n whileTap={whileTapProps.withPrefixStyle}\n transformOrigin={transformOrigin}\n >\n {children}\n </Motion.View>\n );\n\n return Object.keys(whileTapProps.withPrefixStyle).length > 0 ? (\n <Motion.Pressable>{content}</Motion.Pressable>\n ) : (\n content\n );\n }),\n Text: memo(function Text({ transformOriginX, transformOriginY, children, ...props }: AnimateTextProps) {\n const initialProps = useComponentPropsGrouper(props, \"initial\");\n const animateProps = useComponentPropsGrouper(props, \"animate\");\n const whileTapProps = useComponentPropsGrouper(props, \"whileTap\");\n const transitionProps = useComponentPropsGrouper(props, \"transition\");\n\n const transition = useMemo<MotionTransition>(\n () => ({\n type: \"timing\",\n duration: defaultTransitionDuration,\n ...(transitionProps.withPrefixStyle as any),\n }),\n [transitionProps.withPrefixStyle],\n );\n const transformOrigin = useMemo(\n () =>\n transformOriginX !== undefined || transformOriginY !== undefined\n ? {\n x: transformOriginX ?? 0,\n y: transformOriginY ?? 0,\n }\n : undefined,\n [transformOriginX, transformOriginY],\n );\n\n const content = (\n <Motion.Text\n style={initialProps.style}\n initial={initialProps.withPrefixStyle}\n animate={animateProps.withPrefixStyle}\n transition={transition}\n whileTap={whileTapProps.withPrefixStyle}\n transformOrigin={transformOrigin}\n >\n {children}\n </Motion.Text>\n );\n\n return Object.keys(whileTapProps.withPrefixStyle).length > 0 ? (\n <Motion.Pressable>{content}</Motion.Pressable>\n ) : (\n content\n );\n }),\n};\n\nexport default Animate;\n","import { memo } from \"react\";\nimport { ActivityIndicator, ColorValue } from \"react-native\";\nimport { OmitProps, useTheme } from \"react-better-core\";\n\nimport { ComponentMarginProps } from \"../types/components\";\n\nimport View from \"./View\";\nimport Text from \"./Text\";\n\nexport type LoaderSize = \"small\" | \"large\";\n\nexport type LoaderProps = {\n /** @default \"small\" */\n size?: LoaderSize;\n color?: ColorValue;\n} & ComponentMarginProps;\n\ntype LoaderComponentType = {\n (props: LoaderProps): React.ReactElement;\n box: (\n props: OmitProps<LoaderProps, \"size\"> & {\n /** @default \"Loading...\" */\n text?: string;\n /** @default \"large\" */\n size?: LoaderSize;\n },\n ) => React.ReactElement;\n text: (\n props: LoaderProps & {\n /** @default \"Loading...\" */\n text?: string;\n },\n ) => React.ReactElement;\n};\n\nconst LoaderComponent: LoaderComponentType = function Loader({ size = \"small\", color, ...props }) {\n const theme = useTheme();\n\n return (\n <View {...props}>\n <ActivityIndicator size={size} color={color ?? theme.colors.textPrimary} />\n </View>\n );\n};\n\nLoaderComponent.box = function Box({ text = \"Loading...\", size = \"large\", color, ...props }) {\n const theme = useTheme();\n\n return (\n <View\n width=\"100%\"\n alignItems=\"center\"\n gap={theme.styles.gap}\n marginVertical={theme.styles.space}\n {...props}\n >\n <Loader size={size} color={color} />\n\n {text && (\n <Text textAlign=\"center\" color={color ?? theme.colors.textSecondary}>\n {text}\n </Text>\n )}\n </View>\n );\n} as LoaderComponentType[`box`];\n\nLoaderComponent.text = function LoaderText({ text = \"Loading...\", size, color, ...props }) {\n const theme = useTheme();\n\n return (\n <View\n isRow\n alignItems=\"center\"\n justifyContent=\"center\"\n gap={theme.styles.gap}\n marginVertical={theme.styles.space}\n {...props}\n >\n <Loader size={size} color={color} />\n\n {text && (\n <Text textAlign=\"center\" color={color ?? theme.colors.textSecondary}>\n {text}\n </Text>\n )}\n </View>\n );\n} as LoaderComponentType[\"text\"];\n\nconst Loader = memo(LoaderComponent) as any as typeof LoaderComponent & {\n box: typeof LoaderComponent.box;\n text: typeof LoaderComponent.text;\n};\n\nLoader.box = LoaderComponent.box;\nLoader.text = LoaderComponent.text;\n\nexport default Loader;\n","import { memo, useCallback, useMemo } from \"react\";\nimport { KeyboardAvoidingView, Platform, RefreshControl, ScrollView, ViewStyle } from \"react-native\";\nimport { useBooleanState, useTheme } from \"react-better-core\";\n\nimport { useDevice, useKeyboard } from \"../utils/hooks\";\n\nimport View, { ViewProps } from \"./View\";\n\nexport type ScreenHolderProps = {\n /** @default false */\n noScroll?: boolean;\n /** @default false */\n noSideSpace?: boolean;\n /** @default 1 (second) */\n refreshTimeout?: number;\n onRefresh?: () => void;\n onRefreshEnd?: () => void;\n /** @default \"backgroundBase\" */\n backgroundColor?: ViewProps[\"backgroundColor\"];\n /** @default false */\n insideTopSafeArea?: boolean;\n /** @default false */\n insideBottomSafeArea?: boolean;\n /** @default 0 */\n bottomSpace?: number;\n footer?: React.ReactNode;\n /** @default false */\n keepFooterOnKeyboardOpened?: boolean;\n keyboardVerticalOffset?: number;\n /** @default false */\n withNoHeader?: boolean;\n children?: React.ReactNode;\n};\n\ntype ScreenHolderComponentType = {\n (props: ScreenHolderProps): React.ReactElement;\n footer: (props: FooterProps) => React.ReactElement;\n};\n\nconst ScreenHolderComponent: ScreenHolderComponentType = ({\n noScroll,\n noSideSpace,\n refreshTimeout = 1,\n onRefresh,\n onRefreshEnd,\n backgroundColor,\n insideTopSafeArea,\n insideBottomSafeArea,\n bottomSpace = 0,\n footer,\n keepFooterOnKeyboardOpened,\n keyboardVerticalOffset,\n withNoHeader,\n children,\n}) => {\n const theme = useTheme();\n const device = useDevice();\n const keyboard = useKeyboard();\n\n const [isRefreshing, setIsRefreshing] = useBooleanState();\n\n const keyboardAvoidingViewStyle = useMemo<ViewStyle>(\n () => ({\n flex: 1,\n }),\n [],\n );\n\n const onRefreshElement = useCallback(() => {\n setIsRefreshing.setTrue();\n onRefresh?.();\n\n setTimeout(() => {\n setIsRefreshing.setFalse();\n onRefreshEnd?.();\n }, refreshTimeout * 1000);\n }, [onRefresh, onRefreshEnd, refreshTimeout]);\n\n const content = (\n <View\n flex={1}\n paddingHorizontal={!noSideSpace ? theme.styles.space : undefined}\n paddingTop={theme.styles.gap + (insideTopSafeArea ? device.safeArea.afterCalculations.top : 0)}\n paddingBottom={\n Platform.OS === \"ios\" && keyboard.isOpened\n ? device.safeArea.afterCalculations.top\n : bottomSpace + (insideBottomSafeArea ? device.safeArea.afterCalculations.bottom : 0)\n }\n >\n {children}\n </View>\n );\n\n const withRefresh = onRefresh || onRefreshEnd;\n\n return (\n <View flex={1} backgroundColor={backgroundColor ?? theme.colors.backgroundBase}>\n <KeyboardAvoidingView\n style={keyboardAvoidingViewStyle}\n keyboardVerticalOffset={\n keyboardVerticalOffset ??\n (withNoHeader\n ? Platform.OS === \"ios\"\n ? 0\n : theme.styles.gap\n : keepFooterOnKeyboardOpened\n ? Platform.OS === \"ios\"\n ? device.safeArea.afterCalculations.bottom\n : theme.styles.gap\n : undefined)\n }\n behavior={Platform.OS === \"ios\" ? \"padding\" : \"height\"}\n >\n <View flex={1}>\n {noScroll ? (\n content\n ) : (\n <ScrollView\n refreshControl={\n withRefresh ? (\n <RefreshControl refreshing={isRefreshing} onRefresh={onRefreshElement} />\n ) : undefined\n }\n >\n {content}\n </ScrollView>\n )}\n </View>\n\n {keepFooterOnKeyboardOpened || (Platform.OS === \"ios\" ? !keyboard.willOpen : !keyboard.isOpened)\n ? footer && <View>{footer}</View>\n : !withNoHeader && (\n <View\n width=\"100%\"\n height={\n device.safeArea.afterCalculations.bottom +\n (Platform.OS === \"android\" ? theme.styles.gap : 0)\n }\n />\n )}\n </KeyboardAvoidingView>\n </View>\n );\n};\n\nexport type FooterProps = {\n /** @default false */\n noSideSpace?: boolean;\n /** @default \"backgroundBase\" */\n backgroundColor?: ViewProps[\"backgroundColor\"];\n /** @default false */\n insideBottomSafeArea?: boolean;\n /** @default false */\n withNoHeader?: boolean;\n children?: React.ReactNode;\n};\n\nScreenHolderComponent.footer = function Footer({\n noSideSpace,\n backgroundColor,\n insideBottomSafeArea,\n withNoHeader,\n children,\n}) {\n const theme = useTheme();\n const device = useDevice();\n const keyboard = useKeyboard();\n\n return (\n <View\n backgroundColor={backgroundColor ?? theme.colors.backgroundBase}\n paddingHorizontal={!noSideSpace ? theme.styles.space : undefined}\n paddingTop={theme.styles.gap}\n paddingBottom={\n (Platform.OS === \"ios\" ? keyboard.willOpen : keyboard.isOpened) && withNoHeader\n ? theme.styles.gap\n : insideBottomSafeArea\n ? device.safeArea.afterCalculations.bottom\n : undefined\n }\n >\n {children}\n </View>\n );\n} as ScreenHolderComponentType[`footer`];\n\nconst ScreenHolder = memo(ScreenHolderComponent) as any as typeof ScreenHolderComponent & {\n footer: typeof ScreenHolderComponent.footer;\n};\n\nScreenHolder.footer = ScreenHolderComponent.footer;\n\nexport default ScreenHolder;\n","import { memo, useEffect, useMemo } from \"react\";\nimport { AnyOtherString, AssetName, OmitProps, useBetterCoreContext, useTheme } from \"react-better-core\";\nimport {\n ImageSourcePropType,\n Image as NativeImage,\n ImageProps as NativeImageProps,\n ImageStyle as NativeImageStyle,\n} from \"react-native\";\n\nimport { ComponentStyle } from \"../types/components\";\nimport View from \"./View\";\nimport Text from \"./Text\";\n\nexport type ImageProps = {\n name?: AssetName | AnyOtherString;\n source?: ImageSourcePropType;\n /** @default false */\n withDevFittingMode?: boolean;\n} & OmitProps<NativeImageProps, \"source\"> &\n ComponentStyle<NativeImageStyle>;\n\ntype ImageComponentType = {\n (props: ImageProps): React.ReactElement;\n profileImage: (\n props: OmitProps<ImageProps, \"width\" | \"height\"> & {\n /** @default 50 */\n size?: number;\n letters?: string;\n backgroundColor?: string;\n },\n ) => React.ReactElement;\n};\n\nconst ImageComponent: ImageComponentType = function Image({ name, source, withDevFittingMode, ...props }) {\n const { assets } = useBetterCoreContext();\n\n const style = useMemo<NativeImageStyle>(\n () => ({\n width: 100,\n height: 100,\n ...(withDevFittingMode\n ? {\n borderWidth: 1,\n borderColor: \"#eb39f7\",\n }\n : {}),\n ...props,\n }),\n [withDevFittingMode, props],\n );\n\n useEffect(() => {\n if (!name) return;\n\n if (!assets[name.toString()])\n console.warn(\n `The asset \\`${name}\\` you are trying to use does not exist. Make sure to add it to the \\`assets\\` object in \\`<BetterComponentsProvider>\\` config value prop.`,\n );\n }, [assets, name]);\n\n return <NativeImage source={name ? (assets[name.toString()] as any) : source} style={style} {...props} />;\n};\n\nImageComponent.profileImage = function ProfileImage({ size = 50, letters, backgroundColor, ...props }) {\n const theme = useTheme();\n\n return letters ? (\n <View\n width={size}\n height={size}\n backgroundColor={backgroundColor ?? theme.colors.backgroundSecondary}\n borderWidth={1}\n borderColor={theme.colors.border}\n borderRadius={999}\n alignItems=\"center\"\n justifyContent=\"center\"\n {...props}\n >\n <Text fontSize={size / 2.5} fontWeight={700} marginTop={1}>\n {letters.toUpperCase().slice(0, 2)}\n </Text>\n </View>\n ) : (\n <ImageComponent\n width={size}\n height={size}\n borderWidth={1}\n borderColor={theme.colors.border}\n borderRadius={999}\n objectFit=\"cover\"\n {...props}\n />\n );\n} as ImageComponentType[`profileImage`];\n\n/** @description size is set to 100x100 by default */\nconst Image = memo(ImageComponent) as any as typeof ImageComponent & {\n profileImage: typeof ImageComponent.profileImage;\n};\n\nImage.profileImage = ImageComponent.profileImage;\n\nexport default Image;\n","import { forwardRef, memo, useCallback, useEffect, useImperativeHandle, useMemo, useState } from \"react\";\nimport { FocusEvent, TextInput, TextStyle } from \"react-native\";\nimport {\n darkenColor,\n lightenColor,\n useBetterCoreContext,\n useBooleanState,\n useTheme,\n} from \"react-better-core\";\n\nimport { ComponentPropWithRef } from \"../types/components\";\n\nimport View from \"./View\";\nimport Text from \"./Text\";\nimport Animate from \"./Animate\";\n\nexport type InputFieldProps = {\n placeholder?: string;\n prefix?: string;\n suffix?: string;\n defaultValue?: string;\n value?: string | number;\n /** @default true */\n editable?: boolean;\n /** @default false */\n autoFocus?: boolean;\n autoCapitalize?: React.ComponentProps<typeof TextInput>[\"autoCapitalize\"];\n autoComplete?: React.ComponentProps<typeof TextInput>[\"autoComplete\"];\n autoCorrect?: React.ComponentProps<typeof TextInput>[\"autoCorrect\"];\n /** @default \"default\" */\n keyboardAppearance?: React.ComponentProps<typeof TextInput>[\"keyboardAppearance\"];\n keyboardType?: React.ComponentProps<typeof TextInput>[\"keyboardType\"];\n /** @default false */\n secureTextEntry?: boolean;\n onFocus?: (event: FocusEvent) => void;\n onBlur?: (event: FocusEvent) => void;\n onChange?: (text: string) => void;\n};\n\nexport type InputFieldRef = {};\n\ntype InputFieldComponentType = {\n (props: ComponentPropWithRef<InputFieldRef, InputFieldProps>): React.ReactElement;\n email: (props: ComponentPropWithRef<InputFieldRef, InputFieldProps>) => React.ReactElement;\n password: (props: ComponentPropWithRef<InputFieldRef, InputFieldProps>) => React.ReactElement;\n};\n\nconst InputFieldComponent: InputFieldComponentType = forwardRef<InputFieldRef, InputFieldProps>(\n (\n {\n placeholder,\n prefix,\n suffix,\n defaultValue,\n value,\n editable = true,\n autoFocus,\n autoCapitalize,\n autoComplete,\n autoCorrect,\n keyboardAppearance = \"default\",\n keyboardType,\n secureTextEntry,\n onFocus,\n onBlur,\n onChange,\n },\n ref,\n ) => {\n const theme = useTheme();\n const { colorTheme } = useBetterCoreContext();\n\n const [internalValue, setInternalValue] = useState(value?.toString() || defaultValue || \"\");\n const [isFocused, setIsFocused] = useBooleanState();\n\n const borderWidth = 1;\n const lineHeight = 20;\n const paddingHorizontal = theme.styles.space;\n const paddingVertical = (theme.styles.space + theme.styles.gap) / 2;\n const height = borderWidth + paddingVertical + lineHeight + paddingVertical + borderWidth;\n\n const onFocusElement = useCallback((event: FocusEvent) => {\n setIsFocused.setTrue();\n onFocus?.(event);\n }, []);\n const onBlurElement = useCallback((event: FocusEvent) => {\n setIsFocused.setFalse();\n onBlur?.(event);\n }, []);\n const onChangeText = useCallback(\n (text: string) => {\n setInternalValue(text);\n onChange?.(text);\n },\n [onChange],\n );\n\n const textInputStyle = useMemo<TextStyle>(\n () => ({\n flex: 1,\n fontSize: 16,\n lineHeight,\n color: theme.colors.textPrimary,\n paddingHorizontal,\n paddingVertical,\n }),\n [theme.colors, lineHeight, paddingHorizontal, paddingVertical],\n );\n\n useEffect(() => {\n if (value === undefined) return;\n\n setInternalValue(value.toString());\n }, [value]);\n\n useImperativeHandle(\n ref,\n (): InputFieldRef => {\n return {};\n },\n [],\n );\n\n const prefixSuffixBackgroundColor =\n colorTheme === \"light\"\n ? darkenColor(theme.colors.backgroundContent, 0.03)\n : lightenColor(theme.colors.backgroundContent, 0.1);\n\n return (\n <View isRow position=\"relative\" alignItems=\"center\" height={height}>\n {prefix && (\n <View\n isRow\n height=\"100%\"\n backgroundColor={prefixSuffixBackgroundColor}\n alignItems=\"center\"\n borderWidth={borderWidth}\n borderRightWidth={0}\n borderTopLeftRadius={theme.styles.borderRadius}\n borderBottomLeftRadius={theme.styles.borderRadius}\n borderColor={theme.colors.border}\n paddingHorizontal={paddingHorizontal}\n >\n <Text fontWeight={700}>{prefix}</Text>\n </View>\n )}\n\n <Animate.View\n flex={1}\n backgroundColor={theme.colors.backgroundContent}\n borderTopLeftRadius={prefix ? 0 : theme.styles.borderRadius}\n borderBottomLeftRadius={prefix ? 0 : theme.styles.borderRadius}\n borderTopRightRadius={suffix ? 0 : theme.styles.borderRadius}\n borderBottomRightRadius={suffix ? 0 : theme.styles.borderRadius}\n borderWidth={borderWidth}\n initialBorderColor={theme.colors.border}\n animateBorderColor={isFocused ? theme.colors.primary : theme.colors.border}\n overflow=\"hidden\"\n >\n <TextInput\n style={textInputStyle}\n value={internalValue}\n defaultValue={defaultValue}\n autoCapitalize={autoCapitalize}\n autoComplete={autoComplete}\n autoCorrect={autoCorrect}\n autoFocus={autoFocus}\n placeholder={placeholder}\n placeholderTextColor={theme.colors.textSecondary + \"80\"}\n readOnly={!editable}\n keyboardAppearance={keyboardAppearance}\n keyboardType={keyboardType}\n cursorColor={theme.colors.primary}\n selectionColor={theme.colors.primary}\n secureTextEntry={secureTextEntry}\n onFocus={onFocusElement}\n onBlur={onBlurElement}\n onChangeText={onChangeText}\n />\n </Animate.View>\n\n {suffix && (\n <View\n isRow\n height=\"100%\"\n backgroundColor={prefixSuffixBackgroundColor}\n alignItems=\"center\"\n borderWidth={borderWidth}\n borderLeftWidth={0}\n borderTopRightRadius={theme.styles.borderRadius}\n borderBottomRightRadius={theme.styles.borderRadius}\n borderColor={theme.colors.border}\n paddingHorizontal={paddingHorizontal}\n >\n <Text fontWeight={700}>{suffix}</Text>\n </View>\n )}\n </View>\n );\n },\n) as any;\n\nInputFieldComponent.email = forwardRef(function Email(props, ref) {\n return (\n <InputFieldComponent\n placeholder=\"your@email.here\"\n autoComplete=\"email\"\n keyboardType=\"email-address\"\n autoCapitalize=\"none\"\n autoCorrect={false}\n {...props}\n ref={ref}\n />\n );\n}) as InputFieldComponentType[`email`];\n\nInputFieldComponent.password = forwardRef(function Password(props, ref) {\n return (\n <InputFieldComponent\n secureTextEntry\n placeholder=\"******\"\n autoCapitalize=\"none\"\n autoComplete=\"password\"\n autoCorrect={false}\n {...props}\n ref={ref}\n />\n );\n}) as InputFieldComponentType[`password`];\n\nconst InputField = memo(InputFieldComponent) as any as typeof InputFieldComponent & {\n email: typeof InputFieldComponent.email;\n password: typeof InputFieldComponent.password;\n};\n\nInputField.email = InputFieldComponent.email;\nInputField.password = InputFieldComponent.password;\n\nexport default InputField;\n","import { BetterComponentsPluginConstructor } from \"../types/plugin\";\n\nexport type AsyncStoragePluginOptions = {};\n\nexport const defaultAsyncStoragePluginOptions: Required<AsyncStoragePluginOptions> = {};\n\nexport const asyncStoragePlugin: BetterComponentsPluginConstructor<AsyncStoragePluginOptions> = (options) => ({\n name: \"asyncStorage\",\n initialize: () => {\n console.log(\"asyncStorage plugin initialized\");\n },\n getConfig: () => ({\n ...defaultAsyncStoragePluginOptions,\n ...options,\n }),\n});\n"],"mappings":"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,SAAS,mBAAAC,kBAAiB,gBAAgB;;;ACHnC,IAAM,WAAwB,oBAAI,IAAI;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AA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","names":["useTheme","useLoader","lightenColor","darkenColor","useBooleanState","useEffect","useMemo","useBooleanState","theme","useBooleanState","useEffect","useMemo","memo","useMemo","useTheme","Fragment","jsx","pressStrength","theme","View","memo","useMemo","useTheme","jsx","theme","Text","memo","Platform","useTheme","memo","useMemo","jsx","memo","View","animateProps","useMemo","Text","memo","useTheme","jsx","theme","useTheme","Box","Loader","memo","jsx","jsxs","theme","useTheme","Platform","Button","memo","memo","useMemo","Platform","useBooleanState","useTheme","jsx","jsxs","theme","useTheme","useBooleanState","useMemo","Platform","memo","memo","useEffect","useMemo","useBetterCoreContext","useTheme","jsx","assets","useBetterCoreContext","useMemo","useEffect","theme","useTheme","Image","memo","memo","useCallback","useEffect","useMemo","useState","useBetterCoreContext","useBooleanState","useTheme","jsx","jsxs","theme","useTheme","useBetterCoreContext","useState","useBooleanState","useCallback","useMemo","useEffect","memo"]}
|