react-native-better-html 1.0.4 → 1.0.6

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 CHANGED
@@ -314,6 +314,7 @@ type InputFieldProps = {
314
314
  prefix?: string;
315
315
  suffix?: string;
316
316
  defaultValue?: string;
317
+ value?: string | number;
317
318
  /** @default true */
318
319
  editable?: boolean;
319
320
  /** @default false */
@@ -328,6 +329,7 @@ type InputFieldProps = {
328
329
  secureTextEntry?: boolean;
329
330
  onFocus?: (event: FocusEvent) => void;
330
331
  onBlur?: (event: FocusEvent) => void;
332
+ onChange?: (text: string) => void;
331
333
  };
332
334
  type InputFieldRef = {};
333
335
  type InputFieldComponentType = {
package/dist/index.d.ts CHANGED
@@ -314,6 +314,7 @@ type InputFieldProps = {
314
314
  prefix?: string;
315
315
  suffix?: string;
316
316
  defaultValue?: string;
317
+ value?: string | number;
317
318
  /** @default true */
318
319
  editable?: boolean;
319
320
  /** @default false */
@@ -328,6 +329,7 @@ type InputFieldProps = {
328
329
  secureTextEntry?: boolean;
329
330
  onFocus?: (event: FocusEvent) => void;
330
331
  onBlur?: (event: FocusEvent) => void;
332
+ onChange?: (text: string) => void;
331
333
  };
332
334
  type InputFieldRef = {};
333
335
  type InputFieldComponentType = {
package/dist/index.js CHANGED
@@ -1174,6 +1174,7 @@ var InputFieldComponent = (0, import_react10.forwardRef)(
1174
1174
  prefix,
1175
1175
  suffix,
1176
1176
  defaultValue,
1177
+ value,
1177
1178
  editable = true,
1178
1179
  autoFocus,
1179
1180
  autoCapitalize,
@@ -1183,13 +1184,18 @@ var InputFieldComponent = (0, import_react10.forwardRef)(
1183
1184
  keyboardType,
1184
1185
  secureTextEntry,
1185
1186
  onFocus,
1186
- onBlur
1187
+ onBlur,
1188
+ onChange
1187
1189
  }, ref) => {
1188
1190
  const theme2 = (0, import_react_better_core9.useTheme)();
1189
1191
  const { colorTheme } = (0, import_react_better_core9.useBetterCoreContext)();
1192
+ const [internalValue, setInternalValue] = (0, import_react10.useState)(value?.toString() || defaultValue || "");
1190
1193
  const [isFocused, setIsFocused] = (0, import_react_better_core9.useBooleanState)();
1194
+ const borderWidth = 1;
1195
+ const lineHeight = 20;
1191
1196
  const paddingHorizontal = theme2.styles.space;
1192
1197
  const paddingVertical = (theme2.styles.space + theme2.styles.gap) / 2;
1198
+ const height = borderWidth + paddingVertical + lineHeight + paddingVertical + borderWidth;
1193
1199
  const onFocusElement = (0, import_react10.useCallback)((event) => {
1194
1200
  setIsFocused.setTrue();
1195
1201
  onFocus?.(event);
@@ -1198,17 +1204,28 @@ var InputFieldComponent = (0, import_react10.forwardRef)(
1198
1204
  setIsFocused.setFalse();
1199
1205
  onBlur?.(event);
1200
1206
  }, []);
1207
+ const onChangeText = (0, import_react10.useCallback)(
1208
+ (text) => {
1209
+ setInternalValue(text);
1210
+ onChange?.(text);
1211
+ },
1212
+ [onChange]
1213
+ );
1201
1214
  const textInputStyle = (0, import_react10.useMemo)(
1202
1215
  () => ({
1203
1216
  flex: 1,
1204
1217
  fontSize: 16,
1205
- lineHeight: 20,
1218
+ lineHeight,
1206
1219
  color: theme2.colors.textPrimary,
1207
1220
  paddingHorizontal,
1208
1221
  paddingVertical
1209
1222
  }),
1210
- [theme2.colors, paddingHorizontal, paddingVertical]
1223
+ [theme2.colors, lineHeight, paddingHorizontal, paddingVertical]
1211
1224
  );
1225
+ (0, import_react10.useEffect)(() => {
1226
+ if (value === void 0) return;
1227
+ setInternalValue(value.toString());
1228
+ }, [value]);
1212
1229
  (0, import_react10.useImperativeHandle)(
1213
1230
  ref,
1214
1231
  () => {
@@ -1217,7 +1234,7 @@ var InputFieldComponent = (0, import_react10.forwardRef)(
1217
1234
  []
1218
1235
  );
1219
1236
  const prefixSuffixBackgroundColor = colorTheme === "light" ? (0, import_react_better_core9.darkenColor)(theme2.colors.backgroundContent, 0.03) : (0, import_react_better_core9.lightenColor)(theme2.colors.backgroundContent, 0.1);
1220
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(View_default, { isRow: true, position: "relative", alignItems: "center", children: [
1237
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(View_default, { isRow: true, position: "relative", alignItems: "center", height, children: [
1221
1238
  prefix && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1222
1239
  View_default,
1223
1240
  {
@@ -1225,7 +1242,7 @@ var InputFieldComponent = (0, import_react10.forwardRef)(
1225
1242
  height: "100%",
1226
1243
  backgroundColor: prefixSuffixBackgroundColor,
1227
1244
  alignItems: "center",
1228
- borderWidth: 1,
1245
+ borderWidth,
1229
1246
  borderRightWidth: 0,
1230
1247
  borderTopLeftRadius: theme2.styles.borderRadius,
1231
1248
  borderBottomLeftRadius: theme2.styles.borderRadius,
@@ -1243,7 +1260,7 @@ var InputFieldComponent = (0, import_react10.forwardRef)(
1243
1260
  borderBottomLeftRadius: prefix ? 0 : theme2.styles.borderRadius,
1244
1261
  borderTopRightRadius: suffix ? 0 : theme2.styles.borderRadius,
1245
1262
  borderBottomRightRadius: suffix ? 0 : theme2.styles.borderRadius,
1246
- borderWidth: 1,
1263
+ borderWidth,
1247
1264
  initialBorderColor: theme2.colors.border,
1248
1265
  animateBorderColor: isFocused ? theme2.colors.primary : theme2.colors.border,
1249
1266
  overflow: "hidden",
@@ -1251,6 +1268,7 @@ var InputFieldComponent = (0, import_react10.forwardRef)(
1251
1268
  import_react_native8.TextInput,
1252
1269
  {
1253
1270
  style: textInputStyle,
1271
+ value: internalValue,
1254
1272
  defaultValue,
1255
1273
  autoCapitalize,
1256
1274
  autoComplete,
@@ -1265,7 +1283,8 @@ var InputFieldComponent = (0, import_react10.forwardRef)(
1265
1283
  selectionColor: theme2.colors.primary,
1266
1284
  secureTextEntry,
1267
1285
  onFocus: onFocusElement,
1268
- onBlur: onBlurElement
1286
+ onBlur: onBlurElement,
1287
+ onChangeText
1269
1288
  }
1270
1289
  )
1271
1290
  }
@@ -1277,7 +1296,7 @@ var InputFieldComponent = (0, import_react10.forwardRef)(
1277
1296
  height: "100%",
1278
1297
  backgroundColor: prefixSuffixBackgroundColor,
1279
1298
  alignItems: "center",
1280
- borderWidth: 1,
1299
+ borderWidth,
1281
1300
  borderLeftWidth: 0,
1282
1301
  borderTopRightRadius: theme2.styles.borderRadius,
1283
1302
  borderBottomRightRadius: theme2.styles.borderRadius,
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 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 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 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, useImperativeHandle, useMemo } 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 /** @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};\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 editable = true,\n autoFocus,\n autoCapitalize,\n autoComplete,\n autoCorrect,\n keyboardAppearance = \"default\",\n keyboardType,\n secureTextEntry,\n onFocus,\n onBlur,\n },\n ref,\n ) => {\n const theme = useTheme();\n const { colorTheme } = useBetterCoreContext();\n\n const [isFocused, setIsFocused] = useBooleanState();\n\n const paddingHorizontal = theme.styles.space;\n const paddingVertical = (theme.styles.space + theme.styles.gap) / 2;\n\n const onFocusElement = useCallback((event: FocusEvent) => {\n setIsFocused.setTrue();\n onFocus?.(event);\n }, []);\n\n const onBlurElement = useCallback((event: FocusEvent) => {\n setIsFocused.setFalse();\n onBlur?.(event);\n }, []);\n\n const textInputStyle = useMemo<TextStyle>(\n () => ({\n flex: 1,\n fontSize: 16,\n lineHeight: 20,\n color: theme.colors.textPrimary,\n paddingHorizontal,\n paddingVertical,\n }),\n [theme.colors, paddingHorizontal, paddingVertical],\n );\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\">\n {prefix && (\n <View\n isRow\n height=\"100%\"\n backgroundColor={prefixSuffixBackgroundColor}\n alignItems=\"center\"\n borderWidth={1}\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={1}\n initialBorderColor={theme.colors.border}\n animateBorderColor={isFocused ? theme.colors.primary : theme.colors.border}\n overflow=\"hidden\"\n >\n <TextInput\n style={textInputStyle}\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 />\n </Animate.View>\n\n {suffix && (\n <View\n isRow\n height=\"100%\"\n backgroundColor={prefixSuffixBackgroundColor}\n alignItems=\"center\"\n borderWidth={1}\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 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 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 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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAA,6BAwCO;;;ACxCP,mBAAoE;AACpE,+BAOO;;;ACNA,IAAM,YAAuB,CAAC;;;ACA9B,IAAM,QAAwC,CAAC;;;ACA/C,IAAM,QAA8B,CAAC;;;ACArC,IAAM,SAAgC,CAAC;;;AJ2EpC;AAtDV,IAAM,8BAA0B,4BAA0D,MAAS;AAC5F,IAAI;AACJ,IAAI;AAEJ,IAAM,6BAA6B,MAAiD;AACxF,QAAM,kBAAc,+CAAqB;AACzC,QAAM,cAAU,yBAAW,uBAAuB;AAElD,MAAI,YAAY;AACb,UAAM,IAAI;AAAA,MACP;AAAA,IACH;AAEH,QAAM,EAAE,SAAS,iBAAiB,GAAG,KAAK,IAAI;AAE9C,SAAO;AAAA,IACJ,GAAG;AAAA,IACH,GAAG;AAAA,EACN;AACH;AAkCA,SAAS,wCAAwC,EAAE,SAAS,GAAiD;AAC1G,SAAO,2EAAG,UAAS;AACtB;AAaA,SAAS,iCAAiC;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AACH,GAA0C;AACvC,QAAM,wBAAoB,+CAAqB;AAE/C,QAAM,CAAC,qBAAqB,sBAAsB,QAAI,0CAAgB;AACtE,QAAM,CAAC,sBAAsB,uBAAuB,QAAI,0CAAgB;AAExE,QAAM,kBAAc;AAAA,IACjB,OAAO;AAAA,MACJ,KAAK;AAAA,QACF,GAAG;AAAA,QACH,GAAG,QAAQ;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAS,WAAW,CAAC;AAAA,MACrB,iBAAiB,CAAC;AAAA,IACrB;AAAA,IACA,CAAC,QAAQ,qBAAqB,sBAAsB,OAAO;AAAA,EAC9D;AAEA,8BAAU,MAAM;AACb,QAAI,CAAC,QAAS;AAEd,YAAQ,QAAQ,CAAC,WAAW;AACzB,aAAO,aAAa;AAAA,IACvB,CAAC;AAAA,EACJ,GAAG,CAAC,CAAC;AAEL,mCAAiC;AACjC,yCAAuC;AAEvC,SACG,4CAAC,wBAAwB,UAAxB,EAAiC,OAAO,aACtC,sDAAC,2CAAyC,UAAS,GACtD;AAEN;AASA,SAAS,yBAAyB,EAAE,QAAQ,GAAG,MAAM,GAAkC;AACpF,QAAM,iBAAa;AAAA,IAChB,OAAO;AAAA,MACJ,OAAO;AAAA,QACJ,GAAG;AAAA,QACH,GAAG,QAAQ;AAAA,MACd;AAAA;AAAA,MAEA,YAAY,QAAQ,cAAc;AAAA,MAClC,OAAO;AAAA,QACJ,GAAG;AAAA,QACH,GAAG,QAAQ;AAAA,MACd;AAAA,MACA,QAAQ;AAAA,QACL,GAAG;AAAA,QACH,GAAG,QAAQ;AAAA,MACd;AAAA,MACA,SAAS,QAAQ;AAAA,IACpB;AAAA,IACA,CAAC,MAAM;AAAA,EACV;AAEA,QAAM,uBAAmB;AAAA,IACtB,OAAO;AAAA,MACJ,KAAK,QAAQ;AAAA,IAChB;AAAA,IACA,CAAC,MAAM;AAAA,EACV;AAEA,SACG,4CAAC,+CAAmB,QAAQ,YACzB,sDAAC,oCAAiC,QAAQ,kBAAmB,GAAG,OAAO,GAC1E;AAEN;AAEA,IAAO,uCAAQ,mBAAK,wBAAwB;;;AK3KrC,IAAM,8BAA8B,CACxC,OACA,kBAC6B;AAC7B,MAAI,UAAU,QAAW;AACtB,UAAM,IAAI;AAAA,MACP,KAAK,aAAa;AAAA,IACrB;AAAA,EACH;AAEA,SAAO,UAAU;AACpB;AAcO,IAAM,gBAAgB,MAAkD;AAC5E,MAAI,CAAC,4BAA4B,gCAAgC,eAAe,EAAG,QAAO;AAE1F,SAAO;AAAA,IACJ,KAAK,+BAA+B,eAAe,SAAS,OAAO;AAAA,IACnE,IAAI,+BAA+B,eAAe,SAAS,MAAM;AAAA,IACjE,IAAI,+BAA+B,eAAe,SAAS,MAAM;AAAA,IACjE,IAAI,+BAA+B,eAAe,SAAS,MAAM;AAAA,EACpE;AACH;;;ACzCA,IAAAC,gBAA6C;AAC7C,0BAAoD;AACpD,4CAAkC;AAClC,IAAAC,4BAA0C;;;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;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
@@ -1128,7 +1128,7 @@ Image2.profileImage = ImageComponent.profileImage;
1128
1128
  var Image_default = Image2;
1129
1129
 
1130
1130
  // src/components/InputField.tsx
1131
- import { forwardRef, memo as memo9, useCallback as useCallback2, useImperativeHandle, useMemo as useMemo8 } from "react";
1131
+ import { forwardRef, memo as memo9, useCallback as useCallback2, useEffect as useEffect4, useImperativeHandle, useMemo as useMemo8, useState as useState2 } from "react";
1132
1132
  import { TextInput } from "react-native";
1133
1133
  import {
1134
1134
  darkenColor,
@@ -1144,6 +1144,7 @@ var InputFieldComponent = forwardRef(
1144
1144
  prefix,
1145
1145
  suffix,
1146
1146
  defaultValue,
1147
+ value,
1147
1148
  editable = true,
1148
1149
  autoFocus,
1149
1150
  autoCapitalize,
@@ -1153,13 +1154,18 @@ var InputFieldComponent = forwardRef(
1153
1154
  keyboardType,
1154
1155
  secureTextEntry,
1155
1156
  onFocus,
1156
- onBlur
1157
+ onBlur,
1158
+ onChange
1157
1159
  }, ref) => {
1158
1160
  const theme2 = useTheme8();
1159
1161
  const { colorTheme } = useBetterCoreContext3();
1162
+ const [internalValue, setInternalValue] = useState2(value?.toString() || defaultValue || "");
1160
1163
  const [isFocused, setIsFocused] = useBooleanState4();
1164
+ const borderWidth = 1;
1165
+ const lineHeight = 20;
1161
1166
  const paddingHorizontal = theme2.styles.space;
1162
1167
  const paddingVertical = (theme2.styles.space + theme2.styles.gap) / 2;
1168
+ const height = borderWidth + paddingVertical + lineHeight + paddingVertical + borderWidth;
1163
1169
  const onFocusElement = useCallback2((event) => {
1164
1170
  setIsFocused.setTrue();
1165
1171
  onFocus?.(event);
@@ -1168,17 +1174,28 @@ var InputFieldComponent = forwardRef(
1168
1174
  setIsFocused.setFalse();
1169
1175
  onBlur?.(event);
1170
1176
  }, []);
1177
+ const onChangeText = useCallback2(
1178
+ (text) => {
1179
+ setInternalValue(text);
1180
+ onChange?.(text);
1181
+ },
1182
+ [onChange]
1183
+ );
1171
1184
  const textInputStyle = useMemo8(
1172
1185
  () => ({
1173
1186
  flex: 1,
1174
1187
  fontSize: 16,
1175
- lineHeight: 20,
1188
+ lineHeight,
1176
1189
  color: theme2.colors.textPrimary,
1177
1190
  paddingHorizontal,
1178
1191
  paddingVertical
1179
1192
  }),
1180
- [theme2.colors, paddingHorizontal, paddingVertical]
1193
+ [theme2.colors, lineHeight, paddingHorizontal, paddingVertical]
1181
1194
  );
1195
+ useEffect4(() => {
1196
+ if (value === void 0) return;
1197
+ setInternalValue(value.toString());
1198
+ }, [value]);
1182
1199
  useImperativeHandle(
1183
1200
  ref,
1184
1201
  () => {
@@ -1187,7 +1204,7 @@ var InputFieldComponent = forwardRef(
1187
1204
  []
1188
1205
  );
1189
1206
  const prefixSuffixBackgroundColor = colorTheme === "light" ? darkenColor(theme2.colors.backgroundContent, 0.03) : lightenColor(theme2.colors.backgroundContent, 0.1);
1190
- return /* @__PURE__ */ jsxs4(View_default, { isRow: true, position: "relative", alignItems: "center", children: [
1207
+ return /* @__PURE__ */ jsxs4(View_default, { isRow: true, position: "relative", alignItems: "center", height, children: [
1191
1208
  prefix && /* @__PURE__ */ jsx9(
1192
1209
  View_default,
1193
1210
  {
@@ -1195,7 +1212,7 @@ var InputFieldComponent = forwardRef(
1195
1212
  height: "100%",
1196
1213
  backgroundColor: prefixSuffixBackgroundColor,
1197
1214
  alignItems: "center",
1198
- borderWidth: 1,
1215
+ borderWidth,
1199
1216
  borderRightWidth: 0,
1200
1217
  borderTopLeftRadius: theme2.styles.borderRadius,
1201
1218
  borderBottomLeftRadius: theme2.styles.borderRadius,
@@ -1213,7 +1230,7 @@ var InputFieldComponent = forwardRef(
1213
1230
  borderBottomLeftRadius: prefix ? 0 : theme2.styles.borderRadius,
1214
1231
  borderTopRightRadius: suffix ? 0 : theme2.styles.borderRadius,
1215
1232
  borderBottomRightRadius: suffix ? 0 : theme2.styles.borderRadius,
1216
- borderWidth: 1,
1233
+ borderWidth,
1217
1234
  initialBorderColor: theme2.colors.border,
1218
1235
  animateBorderColor: isFocused ? theme2.colors.primary : theme2.colors.border,
1219
1236
  overflow: "hidden",
@@ -1221,6 +1238,7 @@ var InputFieldComponent = forwardRef(
1221
1238
  TextInput,
1222
1239
  {
1223
1240
  style: textInputStyle,
1241
+ value: internalValue,
1224
1242
  defaultValue,
1225
1243
  autoCapitalize,
1226
1244
  autoComplete,
@@ -1235,7 +1253,8 @@ var InputFieldComponent = forwardRef(
1235
1253
  selectionColor: theme2.colors.primary,
1236
1254
  secureTextEntry,
1237
1255
  onFocus: onFocusElement,
1238
- onBlur: onBlurElement
1256
+ onBlur: onBlurElement,
1257
+ onChangeText
1239
1258
  }
1240
1259
  )
1241
1260
  }
@@ -1247,7 +1266,7 @@ var InputFieldComponent = forwardRef(
1247
1266
  height: "100%",
1248
1267
  backgroundColor: prefixSuffixBackgroundColor,
1249
1268
  alignItems: "center",
1250
- borderWidth: 1,
1269
+ borderWidth,
1251
1270
  borderLeftWidth: 0,
1252
1271
  borderTopRightRadius: theme2.styles.borderRadius,
1253
1272
  borderBottomRightRadius: theme2.styles.borderRadius,
@@ -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 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 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 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, useImperativeHandle, useMemo } 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 /** @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};\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 editable = true,\n autoFocus,\n autoCapitalize,\n autoComplete,\n autoCorrect,\n keyboardAppearance = \"default\",\n keyboardType,\n secureTextEntry,\n onFocus,\n onBlur,\n },\n ref,\n ) => {\n const theme = useTheme();\n const { colorTheme } = useBetterCoreContext();\n\n const [isFocused, setIsFocused] = useBooleanState();\n\n const paddingHorizontal = theme.styles.space;\n const paddingVertical = (theme.styles.space + theme.styles.gap) / 2;\n\n const onFocusElement = useCallback((event: FocusEvent) => {\n setIsFocused.setTrue();\n onFocus?.(event);\n }, []);\n\n const onBlurElement = useCallback((event: FocusEvent) => {\n setIsFocused.setFalse();\n onBlur?.(event);\n }, []);\n\n const textInputStyle = useMemo<TextStyle>(\n () => ({\n flex: 1,\n fontSize: 16,\n lineHeight: 20,\n color: theme.colors.textPrimary,\n paddingHorizontal,\n paddingVertical,\n }),\n [theme.colors, paddingHorizontal, paddingVertical],\n );\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\">\n {prefix && (\n <View\n isRow\n height=\"100%\"\n backgroundColor={prefixSuffixBackgroundColor}\n alignItems=\"center\"\n borderWidth={1}\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={1}\n initialBorderColor={theme.colors.border}\n animateBorderColor={isFocused ? theme.colors.primary : theme.colors.border}\n overflow=\"hidden\"\n >\n <TextInput\n style={textInputStyle}\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 />\n </Animate.View>\n\n {suffix && (\n <View\n isRow\n height=\"100%\"\n backgroundColor={prefixSuffixBackgroundColor}\n alignItems=\"center\"\n borderWidth={1}\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","useMemo","useBetterCoreContext","useBooleanState","useTheme","jsx","jsxs","theme","useTheme","useBetterCoreContext","useBooleanState","useCallback","useMemo","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 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 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 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;AAwEpC,gBAAAC,MAkBG,QAAAC,aAlBH;AAtCN,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;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,6BACKK,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;;;ACvKf,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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-better-html",
3
- "version": "1.0.4",
3
+ "version": "1.0.6",
4
4
  "description": "A component library for react native that is as close to plane react-native as possible",
5
5
  "main": "dist/index.js",
6
6
  "files": [