@lichens-innovation/react-native-common 3.11.4 → 3.11.5
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/rjsf.js +1 -1
- package/dist/rjsf.js.map +1 -1
- package/package.json +2 -2
package/dist/rjsf.js
CHANGED
|
@@ -1446,7 +1446,7 @@ var RjsfPaperRenderer = ({
|
|
|
1446
1446
|
onChange: handleChange,
|
|
1447
1447
|
templates: PAPER_TEMPLATES,
|
|
1448
1448
|
validator: customValidator,
|
|
1449
|
-
translateString: (stringToTranslate, params) => rjsf.translateRjsfString({ stringToTranslate, params }),
|
|
1449
|
+
translateString: (stringToTranslate, params) => rjsf.translateRjsfString({ stringToTranslate, params, i18n }),
|
|
1450
1450
|
uiSchema
|
|
1451
1451
|
}
|
|
1452
1452
|
);
|
package/dist/rjsf.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/rjsf/form-submit-context.tsx","../src/theme/dark-colors-scheme.ts","../src/theme/light-colors-scheme.ts","../src/theme/theme.ts","../src/components/rjsf/rjsf-paper-buttons.tsx","../src/components/rjsf/rjsf-paper-templates.tsx","../src/components/rjsf/widgets/display-label.tsx","../src/components/rjsf/widgets/checkbox-widget.tsx","../src/components/rjsf/widgets/checkboxes-widget.tsx","../src/components/rjsf/widgets/date-widget.tsx","../src/components/rjsf/widgets/datetime-widget.tsx","../src/components/rjsf/widgets/hidden-widget.tsx","../src/utils/storage.ts","../src/config/env.config.ts","../src/store/common-logs.store.ts","../src/utils/device.utils.ts","../src/utils/env.utils.ts","../src/logger/logger.types.ts","../src/logger/logger.ts","../src/components/rjsf/widgets/number-widget.tsx","../src/components/password-input/password-input.tsx","../src/components/rjsf/widgets/password-widget.tsx","../src/components/rjsf/widgets/radio-widget.tsx","../src/components/rjsf/widgets/range-widget.tsx","../src/components/drop-down-selector/drop-down-selector.utils.ts","../src/components/drop-down-selector/drop-down-selector-left-icon.tsx","../src/components/drop-down-selector/drop-down-selector-item.tsx","../src/components/drop-down-selector/drop-down-selector.tsx","../src/components/rjsf/widgets/select-widget.tsx","../src/components/rjsf/widgets/text-widget.tsx","../src/components/rjsf/widgets/textarea-widget.tsx","../src/components/rjsf/rjsf-paper-theme.ts","../src/components/rjsf/rjsf-paper-renderer.tsx"],"names":["createContext","NO_OP","useRef","useCallback","jsx","View","MD3DarkTheme","MD3LightTheme","adaptNavigationTheme","LightNavigationTheme","DarkNavigationTheme","useTheme","TranslatableString","IconButton","getUiOptions","useContext","getSubmitButtonOptions","styles","Button","StyleSheet","getDefaultRegistry","useStyles","jsxs","Text","getTemplate","isBlank","getRjsfDisplayLabel","Switch","Pressable","mapEnumOptions","isNullish","Checkbox","useToggle","hasRjsfErrors","parseDateOnlyToLocalDate","formatDateOnlyForDisplay","Platform","TextInput","dateToDateOnlyString","DateTimePicker","parseDateOrNull","formatDateTimeForDisplay","MMKV","makeAutoObservable","Constants","Updates","LogBox","Paths","RNLogger","fileAsyncTransport","Sentry","sentryTransport","mapConsoleTransport","InteractionManager","FileSystemLegacy","toStringOrEmpty","useTranslation","getRjsfTextChangeValue","RadioButton","Slider","Icon","useState","Dropdown","value","toStringOrUndefined","withTheme","useRjsfValidator","useEffect","createElement","translateRjsfString"],"mappings":"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","file":"rjsf.js","sourcesContent":["import { NO_OP } from '@lichens-innovation/ts-common';\nimport type { PropsWithChildren } from 'react';\nimport { createContext, useCallback, useRef } from 'react';\nimport { View, type ViewProps } from 'react-native';\n\n/**\n * Form submit context for RJSF on React Native.\n *\n * On the web, a form submit is handled by the DOM: a <form> wraps inputs and a button with\n * type=\"submit\" triggers the form's onSubmit. RJSF does not need to pass the submit handler\n * to the theme's submit button because the browser wires it automatically.\n *\n * On React Native there is no native form element or submit semantics. The theme's SubmitButton\n * is just a Pressable; it has no way to receive the Form's onSubmit from RJSF (the theme API\n * does not pass it). This context bridges that gap: the wrapper that receives onSubmit from\n * RJSF provides it via context, and the SubmitButton consumes it to trigger submission on press.\n */\n\nexport type SubmitHandler = (event?: unknown) => void;\n\nexport const FormSubmitContext = createContext<SubmitHandler>(NO_OP);\n\ninterface FormWrapperProps extends ViewProps {\n onSubmit?: SubmitHandler;\n}\n\n/** Wraps RJSF form content in a View and provides submit handler via context for Paper SubmitButton. */\nexport const RjsfPaperFormWrapper: React.ComponentType<PropsWithChildren<FormWrapperProps>> = ({\n onSubmit,\n children,\n ...viewProps\n}) => {\n const submitRef = useRef(onSubmit);\n submitRef.current = onSubmit;\n\n const handleSubmit = useCallback<SubmitHandler>((event) => {\n submitRef.current?.(event);\n }, []);\n\n return (\n <FormSubmitContext.Provider value={handleSubmit}>\n <View {...viewProps}>{children}</View>\n </FormSubmitContext.Provider>\n );\n};\n","// Generated colors from https://callstack.github.io/react-native-paper/docs/guides/theming\nexport const DARK_COLORS_SCHEME = {\n primary: 'rgb(170, 212, 114)',\n onPrimary: 'rgb(32, 54, 0)',\n primaryContainer: 'rgb(49, 79, 0)',\n onPrimaryContainer: 'rgb(197, 240, 139)',\n secondary: 'rgb(185, 209, 101)',\n onSecondary: 'rgb(42, 53, 0)',\n secondaryContainer: 'rgb(62, 76, 0)',\n onSecondaryContainer: 'rgb(212, 237, 126)',\n tertiary: 'rgb(167, 212, 116)',\n onTertiary: 'rgb(30, 55, 0)',\n tertiaryContainer: 'rgb(45, 80, 0)',\n onTertiaryContainer: 'rgb(194, 241, 141)',\n error: 'rgb(255, 180, 171)',\n onError: 'rgb(105, 0, 5)',\n errorContainer: 'rgb(147, 0, 10)',\n onErrorContainer: 'rgb(255, 180, 171)',\n background: 'rgb(27, 28, 24)',\n onBackground: 'rgb(227, 227, 219)',\n surface: 'rgb(27, 28, 24)',\n onSurface: 'rgb(227, 227, 219)',\n surfaceVariant: 'rgb(68, 72, 61)',\n onSurfaceVariant: 'rgb(197, 200, 185)',\n outline: 'rgb(143, 146, 133)',\n outlineVariant: 'rgb(68, 72, 61)',\n shadow: 'rgb(0, 0, 0)',\n scrim: 'rgb(0, 0, 0)',\n inverseSurface: 'rgb(227, 227, 219)',\n inverseOnSurface: 'rgb(48, 49, 44)',\n inversePrimary: 'rgb(69, 104, 18)',\n elevation: {\n level0: 'transparent',\n level1: 'rgb(34, 37, 29)',\n level2: 'rgb(38, 43, 31)',\n level3: 'rgb(43, 48, 34)',\n level4: 'rgb(44, 50, 35)',\n level5: 'rgb(47, 54, 37)',\n },\n surfaceDisabled: 'rgba(227, 227, 219, 0.12)',\n onSurfaceDisabled: 'rgba(227, 227, 219, 0.38)',\n backdrop: 'rgba(46, 50, 40, 0.4)',\n};\n","// Generated colors from https://callstack.github.io/react-native-paper/docs/guides/theming\nexport const LIGHT_COLORS_SCHEME = {\n primary: 'rgb(69, 104, 18)',\n onPrimary: 'rgb(255, 255, 255)',\n primaryContainer: 'rgb(197, 240, 139)',\n onPrimaryContainer: 'rgb(17, 32, 0)',\n secondary: 'rgb(83, 102, 0)',\n onSecondary: 'rgb(255, 255, 255)',\n secondaryContainer: 'rgb(212, 237, 126)',\n onSecondaryContainer: 'rgb(23, 30, 0)',\n tertiary: 'rgb(67, 105, 21)',\n onTertiary: 'rgb(255, 255, 255)',\n tertiaryContainer: 'rgb(194, 241, 141)',\n onTertiaryContainer: 'rgb(15, 32, 0)',\n error: 'rgb(186, 26, 26)',\n onError: 'rgb(255, 255, 255)',\n errorContainer: 'rgb(255, 218, 214)',\n onErrorContainer: 'rgb(65, 0, 2)',\n background: 'rgb(253, 252, 245)',\n onBackground: 'rgb(27, 28, 24)',\n surface: 'rgb(253, 252, 245)',\n onSurface: 'rgb(27, 28, 24)',\n surfaceVariant: 'rgb(225, 228, 213)',\n onSurfaceVariant: 'rgb(68, 72, 61)',\n outline: 'rgb(117, 121, 108)',\n outlineVariant: 'rgb(197, 200, 185)',\n shadow: 'rgb(0, 0, 0)',\n scrim: 'rgb(0, 0, 0)',\n inverseSurface: 'rgb(48, 49, 44)',\n inverseOnSurface: 'rgb(242, 241, 233)',\n inversePrimary: 'rgb(170, 212, 114)',\n elevation: {\n level0: 'transparent',\n level1: 'rgb(244, 245, 234)',\n level2: 'rgb(238, 240, 227)',\n level3: 'rgb(233, 236, 220)',\n level4: 'rgb(231, 234, 218)',\n level5: 'rgb(227, 231, 213)',\n },\n surfaceDisabled: 'rgba(27, 28, 24, 0.12)',\n onSurfaceDisabled: 'rgba(27, 28, 24, 0.38)',\n backdrop: 'rgba(46, 50, 40, 0.4)',\n};\n","import { DarkTheme as DarkNavigationTheme, DefaultTheme as LightNavigationTheme } from '@react-navigation/native';\nimport { MD3DarkTheme, MD3LightTheme, adaptNavigationTheme, useTheme } from 'react-native-paper';\nimport { DARK_COLORS_SCHEME } from './dark-colors-scheme';\nimport { LIGHT_COLORS_SCHEME } from './light-colors-scheme';\n\nconst DEFAULT_SPACING: number = 8;\nconst spacing = (units: number = 1): number => units * DEFAULT_SPACING;\n\nconst roundness = 2;\n\nexport const DARK_THEME = {\n ...MD3DarkTheme,\n colors: {\n ...MD3DarkTheme.colors,\n ...DARK_COLORS_SCHEME,\n },\n spacing,\n roundness,\n};\n\nexport const LIGHT_THEME = {\n ...MD3LightTheme,\n colors: {\n ...MD3LightTheme.colors,\n ...LIGHT_COLORS_SCHEME,\n },\n spacing,\n roundness,\n};\n\nexport type AppTheme = typeof DARK_THEME;\n\n// React Navigation themes\nconst navigationAdaptedThemes = adaptNavigationTheme({\n reactNavigationLight: LightNavigationTheme,\n reactNavigationDark: DarkNavigationTheme,\n materialLight: LIGHT_THEME,\n materialDark: DARK_THEME,\n});\n\nconst { DarkTheme, LightTheme } = navigationAdaptedThemes;\nexport const NAVIGATION_DARK = { ...DarkTheme, fonts: { ...DarkNavigationTheme.fonts } };\nexport const NAVIGATION_LIGHT = { ...LightTheme, fonts: { ...LightNavigationTheme.fonts } };\n\nexport const useAppTheme = () => useTheme() as AppTheme;\n\nexport const useIsDarkMode = (): boolean => {\n const theme = useAppTheme();\n return theme.dark;\n};\n","import type { RjsfRegistryWithTranslate } from '@lichens-innovation/ts-common/rjsf';\nimport { getSubmitButtonOptions, getUiOptions, TranslatableString } from '@rjsf/utils';\nimport type { FunctionComponent } from 'react';\nimport { useContext } from 'react';\nimport { StyleSheet, View } from 'react-native';\nimport { Button, IconButton } from 'react-native-paper';\nimport { useAppTheme } from '~/theme';\nimport { FormSubmitContext } from './form-submit-context';\n\nexport interface IconButtonProps {\n id?: string;\n onClick?: () => void;\n disabled?: boolean;\n readonly?: boolean;\n registry: RjsfRegistryWithTranslate;\n uiSchema?: Record<string, unknown>;\n title?: string;\n}\n\nexport const AddButton: FunctionComponent<IconButtonProps> = ({ registry, onClick, disabled, title }) => {\n const label = registry.translateString(TranslatableString.AddItemButton);\n return <IconButton icon=\"plus\" onPress={onClick} disabled={disabled} accessibilityLabel={title ?? label} />;\n};\n\nexport const CopyButton: FunctionComponent<IconButtonProps> = ({ registry, onClick, disabled, title }) => {\n const label = registry.translateString(TranslatableString.CopyButton);\n return <IconButton icon=\"content-copy\" onPress={onClick} disabled={disabled} accessibilityLabel={title ?? label} />;\n};\n\nexport const MoveDownButton: FunctionComponent<IconButtonProps> = ({ registry, onClick, disabled, title }) => {\n const label = registry.translateString(TranslatableString.MoveDownButton);\n return <IconButton icon=\"arrow-down\" onPress={onClick} disabled={disabled} accessibilityLabel={title ?? label} />;\n};\n\nexport const MoveUpButton: FunctionComponent<IconButtonProps> = ({ registry, onClick, disabled, title }) => {\n const label = registry.translateString(TranslatableString.MoveUpButton);\n return <IconButton icon=\"arrow-up\" onPress={onClick} disabled={disabled} accessibilityLabel={title ?? label} />;\n};\n\nexport const RemoveButton: FunctionComponent<IconButtonProps> = ({ uiSchema, registry, onClick, disabled, title }) => {\n const options = getUiOptions(uiSchema);\n const label = registry.translateString(TranslatableString.RemoveButton);\n return (\n <IconButton\n icon=\"delete\"\n onPress={onClick}\n disabled={disabled}\n iconColor={options?.block ? undefined : undefined}\n accessibilityLabel={title ?? label}\n />\n );\n};\n\nexport const ClearButton: FunctionComponent<IconButtonProps> = ({ registry, onClick, disabled, title }) => {\n const label = registry.translateString(TranslatableString.ClearButton);\n return <IconButton icon=\"close\" onPress={onClick} disabled={disabled} accessibilityLabel={title ?? label} />;\n};\n\nexport interface SubmitButtonProps {\n uiSchema?: Record<string, unknown>;\n registry?: RjsfRegistryWithTranslate;\n}\n\n/**\n * RJSF form submit button.\n * Uses FormSubmitContext to get the submit handler (RJSF does not pass onSubmit to the theme button).\n * The fake event provides preventDefault() and persist() as no-ops to satisfy the web form submit\n * event contract, so an onSubmit that calls event.preventDefault() or event.persist() does not\n * crash on React Native, where onPress does not provide a form event.\n */\nexport const SubmitButton: FunctionComponent<SubmitButtonProps> = ({ uiSchema }) => {\n const submit = useContext(FormSubmitContext);\n const { submitText, norender, props: buttonProps } = getSubmitButtonOptions(uiSchema);\n const styles = useStyles();\n\n if (norender) return null;\n\n const fakeEvent = {\n preventDefault: () => {},\n persist: () => {},\n };\n\n return (\n <View style={styles.submitRow}>\n <Button mode=\"contained\" onPress={() => submit?.(fakeEvent)} {...buttonProps}>\n {submitText}\n </Button>\n </View>\n );\n};\n\nconst useStyles = () => {\n const theme = useAppTheme();\n\n return StyleSheet.create({\n submitRow: {\n marginTop: theme.spacing(2),\n alignItems: 'center',\n },\n });\n};\n","import { getDefaultRegistry } from '@rjsf/core';\nimport type {\n ArrayFieldItemTemplateProps,\n ArrayFieldTemplateProps,\n ErrorListProps,\n FieldErrorProps,\n FieldHelpProps,\n FieldTemplateProps,\n ObjectFieldTemplateProps,\n} from '@rjsf/utils';\nimport { getTemplate, getUiOptions } from '@rjsf/utils';\nimport type { ComponentType } from 'react';\nimport { StyleSheet, View } from 'react-native';\nimport { Text } from 'react-native-paper';\nimport { useAppTheme } from '~/theme';\nimport {\n AddButton,\n ClearButton,\n CopyButton,\n MoveDownButton,\n MoveUpButton,\n RemoveButton,\n SubmitButton,\n} from './rjsf-paper-buttons';\n\nconst defaultTemplates = getDefaultRegistry().templates;\n\n/** No-op error list: we omit the top \"Erreurs\" block; field-level errors still show per field. */\nconst NoopErrorList = () => null;\n\nconst PaperObjectFieldTemplate = ({ title, description, properties }: ObjectFieldTemplateProps) => {\n const styles = useStyles();\n\n return (\n <View style={styles.fieldSet}>\n {title ? (\n <Text variant=\"titleMedium\" style={styles.title}>\n {title}\n </Text>\n ) : null}\n\n {description ? (\n <Text variant=\"bodySmall\" style={styles.description}>\n {typeof description === 'string' ? description : null}\n </Text>\n ) : null}\n\n {properties.map((prop) => {\n if (prop.hidden) return null;\n return <View key={prop.name}>{prop.content}</View>;\n })}\n </View>\n );\n};\n\nconst PaperFieldTemplate = ({ children, errors }: FieldTemplateProps) => {\n const styles = useStyles();\n\n return (\n <View style={styles.field}>\n {children}\n\n {errors}\n </View>\n );\n};\n\nconst PaperFieldErrorTemplate = ({ errors }: FieldErrorProps) => {\n const styles = useStyles();\n\n if (!errors || errors.length === 0) return null;\n\n return (\n <View style={styles.errorList}>\n {(errors as string[]).map((msg, index) => (\n <Text key={`error-${index}-${msg}`} variant=\"bodySmall\" style={styles.fieldError}>\n {msg}\n </Text>\n ))}\n </View>\n );\n};\n\nconst PaperFieldHelpTemplate = ({ help }: FieldHelpProps) => {\n const styles = useStyles();\n\n if (!help) return null;\n\n return (\n <Text variant=\"bodySmall\" style={styles.help}>\n {typeof help === 'string' ? help : null}\n </Text>\n );\n};\n\n/** Renders a single array item using View (React Native). Default RJSF template uses div and breaks on RN. */\nconst PaperArrayFieldItemTemplate = ({\n children,\n buttonsProps,\n hasToolbar,\n registry,\n uiSchema,\n}: ArrayFieldItemTemplateProps) => {\n const styles = useStyles();\n const uiOptions = getUiOptions(uiSchema);\n const ArrayFieldItemButtonsTemplate = getTemplate('ArrayFieldItemButtonsTemplate', registry, uiOptions);\n\n return (\n <View style={styles.arrayItemRow}>\n <View style={styles.arrayItemContent}>{children}</View>\n {hasToolbar ? (\n <View style={styles.arrayItemToolbar}>\n <ArrayFieldItemButtonsTemplate {...buttonsProps} />\n </View>\n ) : null}\n </View>\n );\n};\n\nconst PaperArrayFieldTemplate = ({ title, items, canAdd, onAddClick, registry, uiSchema }: ArrayFieldTemplateProps) => {\n const styles = useStyles();\n\n return (\n <View style={styles.fieldSet}>\n {title ? (\n <Text variant=\"titleMedium\" style={styles.title}>\n {title}\n </Text>\n ) : null}\n\n {items.map((item, index) => (\n <View key={'key' in item ? String(item.key) : index} style={styles.arrayItem}>\n {item}\n </View>\n ))}\n\n {canAdd ? (\n <AddButton onClick={onAddClick} registry={registry} uiSchema={uiSchema as Record<string, unknown>} />\n ) : null}\n </View>\n );\n};\n\nexport const PAPER_TEMPLATES = {\n ...defaultTemplates,\n ObjectFieldTemplate: PaperObjectFieldTemplate as ComponentType<ObjectFieldTemplateProps>,\n FieldTemplate: PaperFieldTemplate as ComponentType<FieldTemplateProps>,\n FieldErrorTemplate: PaperFieldErrorTemplate as ComponentType<FieldErrorProps>,\n FieldHelpTemplate: PaperFieldHelpTemplate as ComponentType<FieldHelpProps>,\n ArrayFieldTemplate: PaperArrayFieldTemplate as ComponentType<ArrayFieldTemplateProps>,\n ArrayFieldItemTemplate: PaperArrayFieldItemTemplate as ComponentType<ArrayFieldItemTemplateProps>,\n ErrorListTemplate: NoopErrorList as ComponentType<ErrorListProps>,\n ButtonTemplates: {\n ...defaultTemplates.ButtonTemplates,\n AddButton,\n ClearButton,\n CopyButton,\n MoveDownButton,\n MoveUpButton,\n RemoveButton,\n SubmitButton,\n },\n};\n\nconst useStyles = () => {\n const theme = useAppTheme();\n\n return StyleSheet.create({\n fieldSet: {\n marginVertical: theme.spacing(2),\n },\n title: {\n marginBottom: theme.spacing(1),\n },\n description: {\n marginBottom: theme.spacing(2),\n opacity: 0.8,\n },\n field: {\n marginVertical: theme.spacing(0.5),\n },\n errorList: {\n marginTop: theme.spacing(1),\n gap: theme.spacing(0.5),\n },\n fieldError: {\n color: theme.colors.error,\n },\n help: {\n marginTop: theme.spacing(1),\n opacity: 0.8,\n },\n arrayItem: {\n marginVertical: theme.spacing(1),\n },\n arrayItemRow: {\n flexDirection: 'row',\n alignItems: 'center',\n marginVertical: theme.spacing(1),\n },\n arrayItemContent: {\n flex: 1,\n },\n arrayItemToolbar: {\n flexDirection: 'row',\n alignItems: 'center',\n marginLeft: theme.spacing(1),\n },\n });\n};\n","import { isBlank } from '@lichens-innovation/ts-common';\nimport type { StyleProp, TextStyle } from 'react-native';\nimport { Text } from 'react-native-paper';\n\nexport interface RjsfDisplayLabelProps {\n label?: string;\n style?: StyleProp<TextStyle>;\n}\n\nexport const RjsfDisplayLabel = ({ label, style }: RjsfDisplayLabelProps) => {\n if (isBlank(label)) return null;\n\n return (\n <Text variant=\"bodyLarge\" style={style}>\n {label}\n </Text>\n );\n};\n","import { isBlank } from '@lichens-innovation/ts-common';\nimport { getRjsfDisplayLabel } from '@lichens-innovation/ts-common/rjsf';\nimport type { WidgetProps } from '@rjsf/utils';\nimport type { FunctionComponent } from 'react';\nimport { Pressable, StyleSheet, View } from 'react-native';\nimport { Switch } from 'react-native-paper';\nimport { useAppTheme } from '~/theme';\nimport { RjsfDisplayLabel } from './display-label';\n\nexport const CheckboxWidget: FunctionComponent<WidgetProps> = ({\n id,\n value,\n disabled,\n readonly,\n onChange,\n onBlur,\n label,\n hideLabel,\n required,\n}) => {\n const styles = useStyles();\n const displayLabel = getRjsfDisplayLabel({ label, required, hideLabel });\n const checked = value === true;\n\n const handleValueChange = (newValue: boolean) => {\n onChange(newValue);\n onBlur(id, newValue);\n };\n\n const handleLabelPress = () => {\n if (disabled || readonly) return;\n handleValueChange(!checked);\n };\n\n return (\n <View style={styles.checkboxRow}>\n <Switch value={checked} onValueChange={handleValueChange} disabled={disabled} />\n\n {!isBlank(displayLabel) ? (\n <Pressable onPress={handleLabelPress} style={styles.checkboxLabel}>\n <RjsfDisplayLabel label={displayLabel} />\n </Pressable>\n ) : null}\n </View>\n );\n};\n\nconst useStyles = () => {\n const theme = useAppTheme();\n\n return StyleSheet.create({\n checkboxRow: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: theme.spacing(1),\n marginVertical: theme.spacing(0.5),\n },\n checkboxLabel: {\n flex: 1,\n },\n });\n};\n","import { isNullish } from '@lichens-innovation/ts-common';\nimport type { EnumOptionDisplay } from '@lichens-innovation/ts-common/rjsf';\nimport { getRjsfDisplayLabel, mapEnumOptions } from '@lichens-innovation/ts-common/rjsf';\nimport type { WidgetProps } from '@rjsf/utils';\nimport type { FunctionComponent } from 'react';\nimport { Pressable, StyleSheet, View } from 'react-native';\nimport { Checkbox, Text } from 'react-native-paper';\nimport { useAppTheme } from '~/theme';\nimport { RjsfDisplayLabel } from './display-label';\n\nexport const CheckboxesWidget: FunctionComponent<WidgetProps> = ({\n id,\n value,\n disabled,\n readonly,\n onChange,\n onBlur,\n label,\n hideLabel,\n required,\n options,\n schema,\n}) => {\n const styles = useStyles();\n const displayLabel = getRjsfDisplayLabel({ label, required, hideLabel });\n const enumOptions = mapEnumOptions(options);\n const isArrayValue = Array.isArray(value);\n const currentSet = isArrayValue ? value : [];\n const hasMaxItems = typeof schema?.maxItems === 'number';\n const maxItems = hasMaxItems ? schema.maxItems : undefined;\n\n const toggle = (optValue: string) => {\n if (disabled || readonly) return;\n\n const isChecked = currentSet.includes(optValue);\n const next = isChecked ? currentSet.filter((v) => v !== optValue) : [...currentSet, optValue];\n if (!isNullish(maxItems) && next.length > maxItems) return;\n\n const unique = Array.from(new Set(next));\n onChange(unique);\n onBlur(id, unique);\n };\n\n return (\n <View style={styles.widgetBlock}>\n <RjsfDisplayLabel label={displayLabel} style={styles.checkboxesTitle} />\n\n {enumOptions.map((opt: EnumOptionDisplay) => {\n const isOptionChecked = currentSet.includes(opt.value);\n const checkboxStatus = isOptionChecked ? 'checked' : 'unchecked';\n return (\n <View key={opt.value} style={styles.checkboxRow}>\n <Checkbox status={checkboxStatus} onPress={() => toggle(opt.value)} disabled={disabled || readonly} />\n <Pressable onPress={() => toggle(opt.value)} style={styles.checkboxLabel}>\n <Text variant=\"bodyLarge\">{opt.label}</Text>\n </Pressable>\n </View>\n );\n })}\n </View>\n );\n};\n\nconst useStyles = () => {\n const theme = useAppTheme();\n return StyleSheet.create({\n widgetBlock: {\n marginVertical: theme.spacing(0.5),\n },\n checkboxesTitle: {\n marginBottom: theme.spacing(1),\n },\n checkboxRow: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: theme.spacing(1),\n marginVertical: theme.spacing(0.5),\n },\n checkboxLabel: {\n flex: 1,\n },\n });\n};\n","import { isNullish } from '@lichens-innovation/ts-common';\nimport DateTimePicker from '@react-native-community/datetimepicker';\nimport type { WidgetProps } from '@rjsf/utils';\nimport { useToggle } from '@uidotdev/usehooks';\nimport type { FunctionComponent } from 'react';\nimport { Platform, Pressable, StyleSheet, View } from 'react-native';\nimport { TextInput } from 'react-native-paper';\nimport { useAppTheme, useIsDarkMode } from '~/theme';\n\nimport {\n dateToDateOnlyString,\n formatDateOnlyForDisplay,\n getRjsfDisplayLabel,\n hasRjsfErrors,\n parseDateOnlyToLocalDate,\n} from '@lichens-innovation/ts-common/rjsf';\n\nexport const DateWidget: FunctionComponent<WidgetProps> = ({\n id,\n value,\n disabled,\n readonly,\n placeholder,\n onChange,\n onBlur,\n onFocus,\n label,\n hideLabel,\n required,\n rawErrors,\n}) => {\n const theme = useAppTheme();\n const isDarkMode = useIsDarkMode();\n const styles = useStyles();\n const [showPicker, togglePickerVisibility] = useToggle(false);\n const hasError = hasRjsfErrors(rawErrors);\n const displayLabel = getRjsfDisplayLabel({ label, required, hideLabel });\n const date = parseDateOnlyToLocalDate(value as string) ?? new Date();\n const strValue = formatDateOnlyForDisplay(value as string);\n const pickerDisplay = Platform.OS === 'ios' ? 'spinner' : 'default';\n const themeVariant = isDarkMode ? 'dark' : 'light';\n const isDisplayOnly = disabled || readonly;\n\n if (isDisplayOnly) {\n return (\n <View style={styles.widgetBlock}>\n <TextInput\n mode=\"outlined\"\n label={displayLabel}\n value={strValue}\n placeholder={placeholder}\n disabled={disabled}\n editable={false}\n error={hasError}\n style={styles.input}\n outlineColor={theme.colors.outline}\n onFocus={() => onFocus(id, value)}\n pointerEvents=\"auto\"\n />\n </View>\n );\n }\n\n const handlePick = (_: unknown, selectedDate?: Date) => {\n if (Platform.OS === 'android') togglePickerVisibility(false);\n if (!isNullish(selectedDate)) {\n const dateOnly = dateToDateOnlyString(selectedDate);\n onChange(dateOnly);\n onBlur(id, dateOnly);\n }\n };\n\n return (\n <View style={styles.widgetBlock}>\n <Pressable onPress={() => togglePickerVisibility()}>\n <TextInput\n mode=\"outlined\"\n label={displayLabel}\n value={strValue}\n placeholder={placeholder}\n disabled={disabled}\n editable={false}\n error={hasError}\n style={styles.input}\n outlineColor={theme.colors.outline}\n right={<TextInput.Icon icon=\"calendar\" onPress={() => togglePickerVisibility()} />}\n onFocus={() => onFocus(id, value)}\n pointerEvents=\"none\"\n />\n </Pressable>\n\n {showPicker && (\n <DateTimePicker\n value={date}\n mode=\"date\"\n display={pickerDisplay}\n onChange={handlePick}\n onTouchCancel={() => togglePickerVisibility(false)}\n themeVariant={themeVariant}\n {...(Platform.OS === 'ios' && { textColor: theme.colors.onSurface })}\n />\n )}\n </View>\n );\n};\n\nconst useStyles = () => {\n const theme = useAppTheme();\n return StyleSheet.create({\n widgetBlock: {\n marginVertical: theme.spacing(0.5),\n },\n input: {\n marginVertical: theme.spacing(0.5),\n },\n });\n};\n","import { isNullish } from '@lichens-innovation/ts-common';\nimport DateTimePicker from '@react-native-community/datetimepicker';\nimport type { WidgetProps } from '@rjsf/utils';\nimport { useToggle } from '@uidotdev/usehooks';\nimport type { FunctionComponent } from 'react';\nimport { Platform, Pressable, StyleSheet, View } from 'react-native';\nimport { TextInput } from 'react-native-paper';\nimport { useAppTheme, useIsDarkMode } from '~/theme';\n\nimport {\n formatDateTimeForDisplay,\n getRjsfDisplayLabel,\n hasRjsfErrors,\n parseDateOrNull,\n} from '@lichens-innovation/ts-common/rjsf';\n\nexport const DateTimeWidget: FunctionComponent<WidgetProps> = ({\n id,\n value,\n disabled,\n readonly,\n placeholder,\n onChange,\n onBlur,\n onFocus,\n label,\n hideLabel,\n required,\n rawErrors,\n}) => {\n const theme = useAppTheme();\n const isDarkMode = useIsDarkMode();\n const styles = useStyles();\n const [showPicker, togglePickerVisibility] = useToggle(false);\n const hasError = hasRjsfErrors(rawErrors);\n const displayLabel = getRjsfDisplayLabel({ label, required, hideLabel });\n const date = parseDateOrNull(value as string) ?? new Date();\n const strValue = formatDateTimeForDisplay(value as string);\n const pickerDisplay = Platform.OS === 'ios' ? 'spinner' : 'default';\n const themeVariant = isDarkMode ? 'dark' : 'light';\n const isDisplayOnly = disabled || readonly;\n\n if (isDisplayOnly) {\n return (\n <View style={styles.widgetBlock}>\n <TextInput\n mode=\"outlined\"\n label={displayLabel}\n value={strValue}\n placeholder={placeholder}\n disabled={disabled}\n editable={false}\n error={hasError}\n style={styles.input}\n outlineColor={theme.colors.outline}\n onFocus={() => onFocus(id, value)}\n pointerEvents=\"auto\"\n />\n </View>\n );\n }\n\n const handlePick = (_: unknown, selectedDate?: Date) => {\n if (Platform.OS === 'android') togglePickerVisibility(false);\n if (!isNullish(selectedDate)) {\n const iso = selectedDate.toISOString();\n onChange(iso);\n onBlur(id, iso);\n }\n };\n\n return (\n <View style={styles.widgetBlock}>\n <Pressable onPress={() => togglePickerVisibility()}>\n <TextInput\n mode=\"outlined\"\n label={displayLabel}\n value={strValue}\n placeholder={placeholder}\n disabled={disabled}\n editable={false}\n error={hasError}\n style={styles.input}\n outlineColor={theme.colors.outline}\n right={<TextInput.Icon icon=\"clock-outline\" onPress={() => togglePickerVisibility()} />}\n onFocus={() => onFocus(id, value)}\n pointerEvents=\"none\"\n />\n </Pressable>\n {showPicker && (\n <DateTimePicker\n value={date}\n mode=\"datetime\"\n display={pickerDisplay}\n onChange={handlePick}\n onTouchCancel={() => togglePickerVisibility(false)}\n themeVariant={themeVariant}\n {...(Platform.OS === 'ios' && { textColor: theme.colors.onSurface })}\n />\n )}\n </View>\n );\n};\n\nconst useStyles = () => {\n const theme = useAppTheme();\n return StyleSheet.create({\n widgetBlock: {\n marginVertical: theme.spacing(0.5),\n },\n input: {\n marginVertical: theme.spacing(0.5),\n },\n });\n};\n","import type { WidgetProps } from '@rjsf/utils';\nimport type { FunctionComponent } from 'react';\nimport { StyleSheet, View } from 'react-native';\n\nconst styles = StyleSheet.create({\n hidden: {\n display: 'none',\n height: 0,\n overflow: 'hidden',\n },\n});\n\nexport const HiddenWidget: FunctionComponent<WidgetProps> = () => {\n return <View style={styles.hidden} />;\n};\n","import { MMKV } from 'react-native-mmkv';\n\nconst mmkvStorage = new MMKV();\n\nconst setItem = <T>(key: string, data: T) => {\n if (data instanceof ArrayBuffer) {\n mmkvStorage.set(key, data);\n } else if (typeof data === 'boolean' || typeof data === 'number' || typeof data === 'string') {\n mmkvStorage.set(key, data);\n } else {\n mmkvStorage.set(key, JSON.stringify(data));\n }\n};\n\nconst getItem = <T>(key: string, defaultValue: T): T => {\n if (defaultValue instanceof Uint8Array) {\n return (mmkvStorage.getBuffer(key) as T) ?? defaultValue;\n }\n if (typeof defaultValue === 'boolean') {\n return (mmkvStorage.getBoolean(key) as T) ?? defaultValue;\n }\n if (typeof defaultValue === 'number') {\n return (mmkvStorage.getNumber(key) as T) ?? defaultValue;\n }\n\n const stringValue = mmkvStorage.getString(key);\n if (stringValue === undefined || stringValue === null) return defaultValue;\n\n if (typeof defaultValue === 'string') {\n return stringValue as T;\n }\n\n try {\n return JSON.parse(stringValue) as T;\n } catch {\n return stringValue as T;\n }\n};\n\nconst removeItem = (key: string) => {\n mmkvStorage.delete(key);\n};\n\nexport const storage = {\n setItem,\n getItem,\n removeItem,\n};\n\nexport const mmkvStorageForMobxPersist = {\n setItem: (key: string, value: string): Promise<void> => {\n mmkvStorage.set(key, value);\n return Promise.resolve();\n },\n\n getItem: (key: string): Promise<string | null> => {\n const value = mmkvStorage.getString(key);\n return Promise.resolve(value ?? null);\n },\n\n removeItem: (key: string): Promise<void> => {\n mmkvStorage.delete(key);\n return Promise.resolve();\n },\n};\n","import { storage } from '../utils/storage';\n\nexport const isSentryActivated = (): boolean => storage.getItem<string>('SENTRY_ACTIVATED', '') === 'true';\nexport const getSentryDns = (): string => storage.getItem('SENTRY_DNS', '') ?? '';\n","import { makeAutoObservable } from 'mobx';\nimport { transportFunctionType } from 'react-native-logs';\nimport { LogEntry } from '../logger/logger.types';\n\nconst MAX_LOG_ENTRIES = 10 * 1000;\n\nclass CommonLogsStore {\n logEntries: LogEntry[] = [];\n\n constructor() {\n makeAutoObservable(this);\n }\n\n get allLogsAsText(): string {\n return this.logEntries\n .map((log) => log.msg)\n .filter((log) => !!log)\n .join('\\n');\n }\n\n addLog(logEntry: LogEntry): void {\n this.logEntries.push(logEntry);\n\n if (this.logEntries.length > MAX_LOG_ENTRIES) {\n this.logEntries.shift(); // remove the oldest log\n }\n }\n\n clearLogs(): void {\n this.logEntries = [];\n }\n\n filterLogs(filterText: string): LogEntry[] {\n const lowerCaseFilterText = filterText.toLowerCase();\n return this.logEntries.filter((log) => log.msg.toLowerCase().includes(lowerCaseFilterText));\n }\n}\n\nexport const commonLogsStore = new CommonLogsStore();\n\nexport const commonLogsStoreTransport: transportFunctionType<object> = (props: LogEntry) => {\n commonLogsStore.addLog(props);\n};\n","import Constants from 'expo-constants';\nimport * as Device from 'expo-device';\nimport { Platform } from 'react-native';\n\nexport const isRealDevice = (): boolean => {\n return Device.isDevice;\n};\n\nexport const isEmulator = (): boolean => {\n return !Device.isDevice;\n};\n\nexport const getDeviceType = (): string => {\n const isReal = isRealDevice();\n return Platform.select({\n ios: isReal ? 'iOS Device' : 'iOS Simulator',\n android: isReal ? 'Android Device' : 'Android Emulator',\n default: isReal ? `${Platform.OS} Real Device` : `${Platform.OS} Emulator`,\n });\n};\n\nexport const getAppIdentifier = (): string => {\n const bundleId = Platform.select({\n ios: Constants.expoConfig?.ios?.bundleIdentifier,\n android: Constants.expoConfig?.android?.package,\n default: 'Unknown',\n });\n\n const id = bundleId?.split('.').pop();\n return id ?? '';\n};\n","import Constants from 'expo-constants';\nimport * as Updates from 'expo-updates';\nimport { logger } from '../logger/logger';\n\nexport const isProduction = (): boolean => {\n return Updates.channel === 'production';\n};\n\nexport const isPreview = (): boolean => {\n return Updates.channel === 'preview';\n};\n\nexport const isDevelopment = (): boolean => {\n return __DEV__ || !Updates.channel;\n};\n\nexport const getEnvVarsSource = (): string => {\n if (Constants.executionEnvironment === 'storeClient') {\n return 'EAS (Production)';\n }\n\n return 'Local Development';\n};\n\nexport const validateGetRandomValues = (): boolean => {\n if (!crypto?.getRandomValues) {\n logger.error('[validateGetRandomValues] crypto.getRandomValues is not available as a global environment function');\n return false;\n }\n\n const typeOfGetRandomValues = typeof crypto.getRandomValues;\n if (typeOfGetRandomValues !== 'function') {\n logger.error(`[validateGetRandomValues] crypto.getRandomValues is not a function: ${typeOfGetRandomValues}`);\n return false;\n }\n\n logger.debug('[validateGetRandomValues] global crypto getRandomValues is available as a global environment function');\n return true;\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nexport interface SimpleLogger {\n debug(message: string, ...args: any[]): void;\n log(message: string, ...args: any[]): void;\n info(message: string, ...args: any[]): void;\n warn(message: string, ...args: any[]): void;\n error(message: string, ...args: any[]): void;\n}\n\n// extract names of logger methods as a type\nexport type LoggerMethods = keyof SimpleLogger;\n\nexport const LOG_LEVELS = {\n debug: 0,\n log: 1,\n info: 2,\n warn: 3,\n error: 4,\n} as const;\n\nexport type LogLevelKey = keyof typeof LOG_LEVELS;\n\nexport interface LogLevel {\n severity: number;\n text: string;\n}\n\nexport interface LogEntry {\n msg: string;\n rawMsg: unknown;\n level: LogLevel;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport * as Sentry from '@sentry/react-native';\nimport { InteractionManager, LogBox } from 'react-native';\nimport {\n fileAsyncTransport,\n mapConsoleTransport,\n logger as RNLogger,\n sentryTransport,\n transportFunctionType,\n} from 'react-native-logs';\n\nimport { Directory, File, Paths } from 'expo-file-system';\nimport * as FileSystemLegacy from 'expo-file-system/legacy';\nimport { getSentryDns, isSentryActivated } from '../config/env.config';\nimport { FileInfo } from '../services/files/native-file-system.types';\nimport { commonLogsStoreTransport } from '../store/common-logs.store';\nimport { getAppIdentifier } from '../utils/device.utils';\nimport { isDevelopment } from '../utils/env.utils';\nimport { LOG_LEVELS, SimpleLogger } from './logger.types';\n\nLogBox.ignoreLogs([/^ErrorBoundary /, /Support for defaultProps will be removed from function components/]);\n\nconst appName = getAppIdentifier();\nconst logFilenamePrefix = `app-logs-${appName}`;\nconst logFilenamePattern = `${logFilenamePrefix}-{date-today}.txt`;\nconst filePath: string = Paths.document.uri;\nif (!filePath) {\n throw new Error('Failed to initialize logger: document directory path is unavailable');\n}\n\nclass LoggerWrapper implements SimpleLogger {\n private _logger: ReturnType<typeof RNLogger.createLogger>;\n\n constructor(config: Parameters<typeof RNLogger.createLogger>[0]) {\n this._logger = RNLogger.createLogger(config);\n }\n\n debug(message: string, ...args: any[]): void {\n this._logger.debug(message, ...args);\n }\n\n log(message: string, ...args: any[]): void {\n this._logger.log(message, ...args);\n }\n\n info(message: string, ...args: any[]): void {\n this._logger.info(message, ...args);\n }\n\n warn(message: string, ...args: any[]): void {\n this._logger.warn(message, ...args);\n }\n\n error(message: string, ...args: any[]): void {\n this._logger.error(message, ...args);\n }\n}\n\nconst getTransports = (): transportFunctionType<any>[] => {\n const transports: transportFunctionType<any>[] = [fileAsyncTransport, commonLogsStoreTransport];\n\n if (!isDevelopment() && isSentryActivated()) {\n Sentry.init({\n dsn: getSentryDns(),\n // We can add more context data to events (IP address, cookies, user, etc.)\n // @see https://docs.sentry.io/platforms/react-native/data-management/data-collected/\n sendDefaultPii: true,\n });\n transports.push(sentryTransport);\n }\n\n if (isDevelopment()) {\n transports.push(mapConsoleTransport);\n }\n\n return transports;\n};\n\nexport const logger = new LoggerWrapper({\n severity: 'debug',\n transport: getTransports(),\n levels: {\n debug: LOG_LEVELS.debug,\n log: LOG_LEVELS.log,\n info: LOG_LEVELS.info,\n warn: LOG_LEVELS.warn,\n error: LOG_LEVELS.error,\n },\n async: true,\n asyncFunc: InteractionManager.runAfterInteractions,\n dateFormat: (date: Date) => `${date.toISOString()} `,\n printLevel: true,\n fixedExtLvlLength: true,\n printDate: true,\n enabled: true,\n transportOptions: {\n // @see https://github.com/mowispace/react-native-logs?tab=readme-ov-file#sentrytransport\n SENTRY: Sentry,\n errorLevels: 'error',\n // @see https://github.com/mowispace/react-native-logs?tab=readme-ov-file#mapconsoletransport\n mapLevels: {\n debug: 'debug',\n log: 'log',\n info: 'info',\n warn: 'warn',\n error: 'error',\n },\n // @see https://github.com/mowispace/react-native-logs?tab=readme-ov-file#fileasynctransport\n FS: FileSystemLegacy,\n fileNameDateType: 'iso',\n fileName: logFilenamePattern,\n filePath,\n },\n});\n\nconst isLogFile = (fileName: string): boolean => {\n return fileName.startsWith(logFilenamePrefix);\n};\n\nconst isLogFileItem = (item: Directory | File): item is File => {\n return item instanceof File && isLogFile(item.name);\n};\n\nconst byMostRecentFirstComparator = (a: FileInfo, b: FileInfo): number => {\n return (b.modificationTime ?? 0) - (a.modificationTime ?? 0);\n};\n\nexport const loadAllLogFilesInfo = async (): Promise<FileInfo[]> => {\n try {\n const pathInfo = Paths.info(filePath);\n if (!pathInfo.exists) {\n return [];\n }\n\n const directory = new Directory(filePath);\n const items = directory.list();\n const logFiles = items.filter(isLogFileItem);\n\n const fileInfos: FileInfo[] = logFiles\n .map((file) => {\n const info = file.info();\n return {\n exists: info.exists,\n isDirectory: false,\n size: info.size ?? 0,\n modificationTime: info.modificationTime ?? 0,\n uri: file.uri,\n };\n })\n .filter((info) => info.exists);\n\n return fileInfos.sort(byMostRecentFirstComparator);\n } catch (e: unknown) {\n logger.error('Error loading files:', e);\n return [];\n }\n};\n\nexport const loadCurrentLogsFileUri = async (): Promise<string> => {\n const fileInfos = await loadAllLogFilesInfo();\n return fileInfos[0]?.uri ?? '';\n};\n\nexport const deleteAllLogFiles = async (): Promise<void> => {\n try {\n const pathInfo = Paths.info(filePath);\n if (!pathInfo.exists) {\n return;\n }\n\n const directory = new Directory(filePath);\n const items = directory.list();\n const logFiles: File[] = items.filter(isLogFileItem);\n\n const errors: Error[] = [];\n for (const file of logFiles) {\n try {\n file.delete();\n } catch (e: unknown) {\n errors.push(e instanceof Error ? e : new Error(String(e)));\n }\n }\n\n if (errors.length > 0) {\n throw new Error(`Failed to delete ${errors.length} log file(s): ${errors.map((e) => e.message).join('; ')}`);\n }\n } catch (e: unknown) {\n logger.error('Error deleting files:', e);\n throw e;\n }\n};\n","import { isBlank } from '@lichens-innovation/ts-common';\nimport { getRjsfDisplayLabel, hasRjsfErrors, toStringOrEmpty } from '@lichens-innovation/ts-common/rjsf';\nimport type { WidgetProps } from '@rjsf/utils';\nimport type { FunctionComponent } from 'react';\nimport { StyleSheet } from 'react-native';\nimport { TextInput } from 'react-native-paper';\nimport { logger } from '~/logger/logger';\nimport { useAppTheme } from '~/theme';\n\nexport const NumberWidget: FunctionComponent<WidgetProps> = ({\n id,\n value,\n disabled,\n readonly,\n placeholder,\n onChange,\n onBlur,\n onFocus,\n label,\n hideLabel,\n required,\n rawErrors,\n options,\n schema,\n}) => {\n const theme = useAppTheme();\n const styles = useStyles();\n const hasError = hasRjsfErrors(rawErrors);\n const displayLabel = getRjsfDisplayLabel({ label, required, hideLabel });\n const strValue = toStringOrEmpty(value);\n\n const isInteger = schema?.type === 'integer';\n\n const handleChangeText = (text: string) => {\n if (isBlank(text)) {\n onChange(options?.emptyValue);\n return;\n }\n\n const floatValue = parseFloat(text);\n if (Number.isNaN(floatValue)) {\n logger.error('[NumberWidget]: Invalid float value', { text });\n return;\n }\n onChange(isInteger ? Math.round(floatValue) : floatValue);\n };\n\n const keyboardType = isInteger ? 'number-pad' : 'decimal-pad';\n const inputMode = isInteger ? 'numeric' : 'decimal';\n\n return (\n <TextInput\n mode=\"outlined\"\n label={displayLabel}\n value={strValue}\n placeholder={placeholder}\n disabled={disabled}\n editable={!readonly}\n keyboardType={keyboardType}\n inputMode={inputMode}\n onChangeText={handleChangeText}\n onBlur={() => onBlur(id, value)}\n onFocus={() => onFocus(id, value)}\n error={hasError}\n style={styles.input}\n outlineColor={theme.colors.outline}\n />\n );\n};\n\nconst useStyles = () => {\n const theme = useAppTheme();\n return StyleSheet.create({\n input: {\n marginVertical: theme.spacing(0.5),\n },\n });\n};\n","import { useToggle } from '@uidotdev/usehooks';\nimport { FunctionComponent } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { TextInput, TextInputProps } from 'react-native-paper';\n\nexport type PasswordInputProps = Omit<TextInputProps, 'secureTextEntry'>;\n\nexport const PasswordInput: FunctionComponent<PasswordInputProps> = ({ label, ...rest }) => {\n const { t } = useTranslation();\n const [isPasswordVisible, toggleShowPassword] = useToggle();\n\n const displayLabel = label ?? t('common:password');\n const icon = isPasswordVisible ? 'eye-off' : 'eye';\n const showA11yLabel = isPasswordVisible\n ? t('common:passwordInput.hidePassword')\n : t('common:passwordInput.showPassword');\n\n return (\n <TextInput\n label={displayLabel}\n secureTextEntry={!isPasswordVisible}\n right={<TextInput.Icon icon={icon} onPress={() => toggleShowPassword()} accessibilityLabel={showA11yLabel} />}\n {...rest}\n />\n );\n};\n","import {\n getRjsfDisplayLabel,\n getRjsfTextChangeValue,\n hasRjsfErrors,\n toStringOrEmpty,\n} from '@lichens-innovation/ts-common/rjsf';\nimport type { WidgetProps } from '@rjsf/utils';\nimport type { FunctionComponent } from 'react';\nimport { StyleSheet } from 'react-native';\nimport { PasswordInput } from '~/components/password-input/password-input';\nimport { useAppTheme } from '~/theme';\n\nexport const PasswordWidget: FunctionComponent<WidgetProps> = ({\n id,\n value,\n disabled,\n readonly,\n placeholder,\n onChange,\n onBlur,\n onFocus,\n label,\n hideLabel,\n required,\n rawErrors,\n options,\n}) => {\n const theme = useAppTheme();\n const styles = useStyles();\n const hasError = hasRjsfErrors(rawErrors);\n const displayLabel = getRjsfDisplayLabel({ label, required, hideLabel });\n\n const handleChangeText = (text: string) => {\n onChange(getRjsfTextChangeValue({ text, emptyValue: options?.emptyValue }));\n };\n\n return (\n <PasswordInput\n mode=\"outlined\"\n label={displayLabel}\n value={toStringOrEmpty(value)}\n placeholder={placeholder}\n disabled={disabled}\n editable={!readonly}\n onChangeText={handleChangeText}\n onBlur={() => onBlur(id, value)}\n onFocus={() => onFocus(id, value)}\n error={hasError}\n style={styles.input}\n outlineColor={theme.colors.outline}\n />\n );\n};\n\nconst useStyles = () => {\n const theme = useAppTheme();\n return StyleSheet.create({\n input: {\n marginVertical: theme.spacing(0.5),\n },\n });\n};\n","import type { EnumOptionDisplay } from '@lichens-innovation/ts-common/rjsf';\nimport { getRjsfDisplayLabel, mapEnumOptions, toStringOrEmpty } from '@lichens-innovation/ts-common/rjsf';\nimport type { WidgetProps } from '@rjsf/utils';\nimport type { FunctionComponent } from 'react';\nimport { StyleSheet, View } from 'react-native';\nimport { RadioButton } from 'react-native-paper';\nimport { useAppTheme } from '~/theme';\nimport { RjsfDisplayLabel } from './display-label';\n\nexport const RadioWidget: FunctionComponent<WidgetProps> = ({\n id,\n value,\n disabled,\n readonly,\n onChange,\n onBlur,\n label,\n hideLabel,\n required,\n options,\n}) => {\n const styles = useStyles();\n const displayLabel = getRjsfDisplayLabel({ label, required, hideLabel });\n const enumOptions = mapEnumOptions(options);\n const strValue = toStringOrEmpty(value);\n\n return (\n <View style={styles.widgetBlock}>\n <RjsfDisplayLabel label={displayLabel} style={styles.radioTitle} />\n <RadioButton.Group\n onValueChange={(v) => {\n onChange(v);\n onBlur(id, v);\n }}\n value={strValue}\n >\n {enumOptions.map((opt: EnumOptionDisplay) => (\n <RadioButton.Item\n key={opt.value}\n label={opt.label}\n value={opt.value}\n disabled={disabled || readonly}\n style={styles.radioItem}\n />\n ))}\n </RadioButton.Group>\n </View>\n );\n};\n\nconst useStyles = () => {\n const theme = useAppTheme();\n return StyleSheet.create({\n widgetBlock: {\n marginVertical: theme.spacing(0.5),\n },\n radioTitle: {\n marginBottom: theme.spacing(1),\n },\n radioItem: {\n marginVertical: theme.spacing(0.25),\n },\n });\n};\n","import { getRjsfDisplayLabel } from '@lichens-innovation/ts-common/rjsf';\nimport Slider from '@react-native-community/slider';\nimport type { WidgetProps } from '@rjsf/utils';\nimport type { FunctionComponent } from 'react';\nimport { StyleSheet, View } from 'react-native';\nimport { Text } from 'react-native-paper';\nimport { useAppTheme } from '~/theme';\nimport { RjsfDisplayLabel } from './display-label';\n\nexport const RangeWidget: FunctionComponent<WidgetProps> = ({\n id,\n value,\n disabled,\n readonly,\n onChange,\n onBlur,\n label,\n hideLabel,\n required,\n rawErrors: _rawErrors,\n schema,\n}) => {\n const theme = useAppTheme();\n const styles = useStyles();\n const displayLabel = getRjsfDisplayLabel({ label, required, hideLabel });\n const hasSchemaMin = typeof schema?.minimum === 'number';\n const min = hasSchemaMin ? schema.minimum : 0;\n const hasSchemaMax = typeof schema?.maximum === 'number';\n const max = hasSchemaMax ? schema.maximum : 100;\n const hasValidValue = typeof value === 'number' && !Number.isNaN(value);\n const numValue = (hasValidValue ? value : min) as number;\n const displayValue = Math.round(numValue);\n\n const handleSlidingComplete = (v: number) => {\n const intValue = Math.round(v);\n onChange(intValue);\n onBlur(id, intValue);\n };\n\n return (\n <View style={styles.widgetBlock}>\n <RjsfDisplayLabel label={displayLabel} style={styles.rangeLabel} />\n\n <View style={styles.rangeRow}>\n <Slider\n style={styles.slider}\n minimumValue={min}\n maximumValue={max}\n value={numValue}\n onSlidingComplete={handleSlidingComplete}\n minimumTrackTintColor={theme.colors.primary}\n maximumTrackTintColor={theme.colors.outline}\n disabled={disabled || readonly}\n />\n <Text variant=\"bodyMedium\" style={styles.rangeValue}>\n {displayValue}\n </Text>\n </View>\n </View>\n );\n};\n\nconst useStyles = () => {\n const theme = useAppTheme();\n return StyleSheet.create({\n widgetBlock: {\n marginVertical: theme.spacing(0.5),\n },\n rangeLabel: {\n marginBottom: theme.spacing(0.5),\n },\n rangeRow: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: theme.spacing(2),\n },\n slider: {\n flex: 1,\n height: 40,\n },\n rangeValue: {\n minWidth: 36,\n },\n });\n};\n","import { AppTheme } from '~/theme';\n\ninterface GetTextColorArgs {\n theme: AppTheme;\n isFocused: boolean;\n isDisabled: boolean;\n}\nexport const getTextColor = ({ theme, isFocused, isDisabled }: GetTextColorArgs) => {\n const { onSurfaceDisabled, primary, secondary } = theme.colors;\n\n if (isDisabled) {\n return onSurfaceDisabled;\n }\n\n if (isFocused) {\n return primary;\n }\n\n return secondary;\n};\n\ninterface GetLabelColorArgs {\n theme: AppTheme;\n isError: boolean;\n isDisabled: boolean;\n isFocusedAndEnabled: boolean;\n}\nexport const getLabelColor = ({ theme, isError, isDisabled, isFocusedAndEnabled }: GetLabelColorArgs) => {\n const { error, onSurfaceDisabled, primary, onSurface } = theme.colors;\n\n if (isError) {\n return error;\n }\n\n if (isDisabled) {\n return onSurfaceDisabled;\n }\n\n if (isFocusedAndEnabled) {\n return primary;\n }\n\n return onSurface;\n};\n\ninterface GetBorderColorArgs {\n theme: AppTheme;\n isError: boolean;\n isDisabled: boolean;\n isFocused: boolean;\n}\nexport const getBorderColor = ({ theme, isError, isDisabled, isFocused }: GetBorderColorArgs) => {\n const { error, surfaceDisabled, primary, outline } = theme.colors;\n\n if (isError) {\n return error;\n }\n\n if (isDisabled) {\n return surfaceDisabled;\n }\n\n if (isFocused) {\n return primary;\n }\n\n return outline;\n};\n","import { FunctionComponent } from 'react';\nimport { Icon } from 'react-native-paper';\n\nexport type DropDownSelectorLeftIconProps = {\n icon?: string;\n color: string;\n size?: number;\n};\n\nexport const DropDownSelectorLeftIcon: FunctionComponent<DropDownSelectorLeftIconProps> = ({\n icon,\n color,\n size = 20,\n}) => {\n if (!icon) {\n return null;\n }\n\n return <Icon source={icon} size={size} color={color} />;\n};\n","import { FunctionComponent } from 'react';\nimport { StyleSheet, View } from 'react-native';\nimport { Text } from 'react-native-paper';\nimport { useAppTheme } from '../../theme/theme';\nimport { SelectOption } from './drop-down-selector';\nimport { DropDownSelectorLeftIcon } from './drop-down-selector-left-icon';\n\nexport type DropDownSelectorItemProps = {\n item: SelectOption;\n selected?: boolean;\n textColor: string;\n};\n\nexport const DropDownSelectorItem: FunctionComponent<DropDownSelectorItemProps> = ({ item, selected, textColor }) => {\n const isSelected = selected === true;\n const styles = useStyles({ isSelected });\n\n return (\n <View style={styles.itemContainer}>\n {item.icon && <DropDownSelectorLeftIcon icon={item.icon} color={textColor} />}\n <Text style={{ color: textColor }}>{item.label}</Text>\n </View>\n );\n};\n\ntype UseStylesProps = {\n isSelected: boolean;\n};\n\nconst useStyles = ({ isSelected }: UseStylesProps) => {\n const theme = useAppTheme();\n\n return StyleSheet.create({\n itemContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingVertical: theme.spacing(1),\n paddingHorizontal: theme.spacing(1),\n gap: theme.spacing(1),\n backgroundColor: isSelected ? theme.colors.surfaceVariant : theme.colors.surface,\n },\n });\n};\n","import { FunctionComponent, useState } from 'react';\nimport { StyleSheet, View } from 'react-native';\nimport { Dropdown } from 'react-native-element-dropdown';\nimport { Text } from 'react-native-paper';\nimport { useAppTheme } from '../../theme/theme';\nimport { getBorderColor, getLabelColor, getTextColor } from './drop-down-selector.utils';\nimport { DropDownSelectorItem } from './drop-down-selector-item';\nimport { DropDownSelectorLeftIcon } from './drop-down-selector-left-icon';\n\nexport interface SelectOption {\n label: string;\n value: string;\n icon?: string;\n}\n\nexport type DropDownSelectorProps = {\n label?: string;\n value?: string;\n onChange: (code: string) => void;\n isError?: boolean;\n options: SelectOption[];\n placeholder?: string;\n searchPlaceholder?: string;\n disabled?: boolean;\n};\n\nexport const DropDownSelector: FunctionComponent<DropDownSelectorProps> = ({\n label,\n value,\n onChange,\n isError,\n options,\n placeholder,\n searchPlaceholder,\n disabled,\n}) => {\n const [isFocused, setIsFocused] = useState(false);\n const hasLabel = !!label;\n const theme = useAppTheme();\n const isDisabled = disabled === true;\n const textColor = getTextColor({ theme, isFocused, isDisabled });\n const styles = useStyles({ isFocused, disabled, isError, textColor });\n\n const selectedItem = options.find((option) => option.value === value);\n\n return (\n <View>\n {hasLabel && (\n <Text variant=\"bodySmall\" style={styles.dropdownTitle}>\n {label}\n </Text>\n )}\n\n <Dropdown\n style={styles.dropdown}\n autoScroll={false} // @see https://github.com/hoaphantn7604/react-native-element-dropdown/issues/345\n placeholderStyle={styles.placeholderStyle}\n selectedTextStyle={styles.selectedTextStyle}\n data={options}\n search={false}\n searchPlaceholder={searchPlaceholder}\n maxHeight={300}\n labelField=\"label\"\n valueField=\"value\"\n placeholder={isFocused ? '' : placeholder}\n value={value}\n disable={disabled}\n onFocus={() => setIsFocused(true)}\n onBlur={() => setIsFocused(false)}\n onChange={({ value }) => {\n onChange(value);\n setIsFocused(false);\n }}\n renderItem={(item: SelectOption, selected?: boolean) => (\n <DropDownSelectorItem item={item} selected={selected} textColor={textColor} />\n )}\n renderLeftIcon={() => <DropDownSelectorLeftIcon icon={selectedItem?.icon} color={textColor} />}\n />\n </View>\n );\n};\n\ntype UseStylesProps = {\n isFocused: boolean;\n disabled?: boolean;\n isError?: boolean;\n textColor: string;\n};\n\nconst useStyles = ({ isFocused, disabled, isError, textColor }: UseStylesProps) => {\n const theme = useAppTheme();\n const { surface, surfaceDisabled } = theme.colors;\n\n const isDisabled = disabled === true;\n const isFocusedAndEnabled = isFocused && !isDisabled;\n\n // Priority: error > disabled > focus > normal\n const labelColor = getLabelColor({ theme, isError: !!isError, isDisabled, isFocusedAndEnabled });\n const borderColor = getBorderColor({ theme, isError: !!isError, isDisabled, isFocused });\n const borderWidth = isFocusedAndEnabled ? 2 : 1;\n\n const backgroundColor = isDisabled ? surfaceDisabled : 'transparent';\n\n return StyleSheet.create({\n dropdownTitle: {\n position: 'absolute',\n top: -theme.spacing(1),\n left: theme.spacing(1),\n backgroundColor: surface,\n paddingHorizontal: theme.spacing(0.75),\n color: labelColor,\n zIndex: 1,\n },\n dropdown: {\n height: 50,\n borderColor,\n borderWidth,\n borderRadius: theme.roundness,\n paddingHorizontal: theme.spacing(1),\n backgroundColor,\n },\n placeholderStyle: {\n color: textColor,\n },\n selectedTextStyle: {\n color: textColor,\n paddingLeft: theme.spacing(1),\n },\n });\n};\n","import {\n getRjsfDisplayLabel,\n hasRjsfErrors,\n mapEnumOptions,\n toStringOrUndefined,\n} from '@lichens-innovation/ts-common/rjsf';\nimport type { WidgetProps } from '@rjsf/utils';\nimport type { FunctionComponent } from 'react';\nimport { StyleSheet, View } from 'react-native';\nimport { DropDownSelector } from '~/components/drop-down-selector/drop-down-selector';\nimport { useAppTheme } from '~/theme';\n\nexport const SelectWidget: FunctionComponent<WidgetProps> = ({\n id,\n value,\n disabled,\n placeholder,\n onChange,\n onBlur,\n label,\n hideLabel,\n required,\n rawErrors,\n options,\n}) => {\n const styles = useStyles();\n const hasError = hasRjsfErrors(rawErrors);\n const displayLabel = getRjsfDisplayLabel({ label, required, hideLabel });\n const selectOptions = mapEnumOptions(options);\n const strValue = toStringOrUndefined(value);\n\n const handleChange = (code: string) => {\n onChange(code);\n onBlur(id, code);\n };\n\n return (\n <View style={styles.widgetBlock}>\n <DropDownSelector\n label={displayLabel}\n value={strValue}\n onChange={handleChange}\n options={selectOptions}\n placeholder={placeholder}\n disabled={disabled}\n isError={hasError}\n />\n </View>\n );\n};\n\nconst useStyles = () => {\n const theme = useAppTheme();\n return StyleSheet.create({\n widgetBlock: {\n marginVertical: theme.spacing(0.5),\n },\n });\n};\n","import {\n getRjsfDisplayLabel,\n getRjsfTextChangeValue,\n hasRjsfErrors,\n toStringOrEmpty,\n} from '@lichens-innovation/ts-common/rjsf';\nimport type { WidgetProps } from '@rjsf/utils';\nimport type { FunctionComponent } from 'react';\nimport { StyleSheet } from 'react-native';\nimport { TextInput } from 'react-native-paper';\nimport { useAppTheme } from '~/theme';\n\nexport const TextWidget: FunctionComponent<WidgetProps> = ({\n id,\n value,\n disabled,\n readonly,\n placeholder,\n onChange,\n onBlur,\n onFocus,\n label,\n hideLabel,\n required,\n rawErrors,\n options,\n}) => {\n const theme = useAppTheme();\n const styles = useStyles();\n const hasError = hasRjsfErrors(rawErrors);\n const displayLabel = getRjsfDisplayLabel({ label, required, hideLabel });\n\n const handleChangeText = (text: string) => {\n onChange(getRjsfTextChangeValue({ text, emptyValue: options?.emptyValue }));\n };\n\n return (\n <TextInput\n mode=\"outlined\"\n label={displayLabel}\n value={toStringOrEmpty(value)}\n placeholder={placeholder}\n disabled={disabled}\n editable={!readonly}\n onChangeText={handleChangeText}\n onBlur={() => onBlur(id, value)}\n onFocus={() => onFocus(id, value)}\n error={hasError}\n style={styles.input}\n outlineColor={theme.colors.outline}\n />\n );\n};\n\nconst useStyles = () => {\n const theme = useAppTheme();\n return StyleSheet.create({\n input: {\n marginVertical: theme.spacing(0.5),\n },\n });\n};\n","import {\n getRjsfDisplayLabel,\n getRjsfTextChangeValue,\n hasRjsfErrors,\n toStringOrEmpty,\n} from '@lichens-innovation/ts-common/rjsf';\nimport type { WidgetProps } from '@rjsf/utils';\nimport type { FunctionComponent } from 'react';\nimport { StyleSheet } from 'react-native';\nimport { TextInput } from 'react-native-paper';\nimport { useAppTheme } from '~/theme';\n\nexport const TextareaWidget: FunctionComponent<WidgetProps> = ({\n id,\n value,\n disabled,\n readonly,\n placeholder,\n onChange,\n onBlur,\n onFocus,\n label,\n hideLabel,\n required,\n rawErrors,\n options,\n}) => {\n const theme = useAppTheme();\n const styles = useStyles();\n const hasError = hasRjsfErrors(rawErrors);\n const displayLabel = getRjsfDisplayLabel({ label, required, hideLabel });\n const numberOfLines = options?.numberOfLines ?? 4;\n\n const handleChangeText = (text: string) => {\n onChange(getRjsfTextChangeValue({ text, emptyValue: options?.emptyValue }));\n };\n\n return (\n <TextInput\n mode=\"outlined\"\n label={displayLabel}\n value={toStringOrEmpty(value)}\n placeholder={placeholder}\n disabled={disabled}\n editable={!readonly}\n multiline\n numberOfLines={numberOfLines}\n onChangeText={handleChangeText}\n onBlur={() => onBlur(id, value)}\n onFocus={() => onFocus(id, value)}\n error={hasError}\n style={[styles.input, styles.textarea]}\n outlineColor={theme.colors.outline}\n />\n );\n};\n\nconst useStyles = () => {\n const theme = useAppTheme();\n return StyleSheet.create({\n input: {\n marginVertical: theme.spacing(0.5),\n },\n textarea: {\n minHeight: 100,\n },\n });\n};\n","import type { ThemeProps } from '@rjsf/core';\nimport { RjsfPaperFormWrapper } from './form-submit-context';\nimport {\n CheckboxWidget,\n CheckboxesWidget,\n DateTimeWidget,\n DateWidget,\n HiddenWidget,\n NumberWidget,\n PasswordWidget,\n RadioWidget,\n RangeWidget,\n SelectWidget,\n TextWidget,\n TextareaWidget,\n} from './widgets';\n\nexport const RJSF_PAPER_THEME: ThemeProps = {\n widgets: {\n TextWidget,\n TextareaWidget,\n HiddenWidget,\n password: PasswordWidget,\n PasswordWidget,\n date: DateWidget,\n DateWidget,\n datetime: DateTimeWidget,\n DateTimeWidget,\n select: SelectWidget,\n SelectWidget,\n radio: RadioWidget,\n RadioWidget,\n range: RangeWidget,\n RangeWidget,\n number: NumberWidget,\n updown: NumberWidget,\n NumberWidget,\n UpDownWidget: NumberWidget,\n checkbox: CheckboxWidget,\n CheckboxWidget,\n checkboxes: CheckboxesWidget,\n CheckboxesWidget,\n },\n // Form passes onSubmit, children, className, etc. Our wrapper accepts View props + onSubmit.\n _internalFormWrapper: RjsfPaperFormWrapper as ThemeProps['_internalFormWrapper'],\n};\n","import { translateRjsfString, useRjsfValidator } from '@lichens-innovation/ts-common/rjsf';\nimport type { FormProps, IChangeEvent } from '@rjsf/core';\nimport { withTheme } from '@rjsf/core';\nimport type { RJSFSchema } from '@rjsf/utils';\nimport type { FunctionComponent } from 'react';\nimport { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { PAPER_TEMPLATES } from './rjsf-paper-templates';\nimport { RJSF_PAPER_THEME } from './rjsf-paper-theme';\n\nconst ThemedForm = withTheme(RJSF_PAPER_THEME);\n\ntype FormTemplates = FormProps<FormData, RJSFSchema>['templates'];\n\nexport type FormData = Record<string, unknown>;\n\nexport type RjsfPaperRendererProps = Omit<FormProps<FormData, RJSFSchema>, 'validator'>;\n\nexport const RjsfPaperRenderer: FunctionComponent<RjsfPaperRendererProps> = ({\n formData: formDataProp,\n onChange: onChangeProp,\n uiSchema = {},\n ...rest\n}) => {\n const { i18n } = useTranslation();\n const customValidator = useRjsfValidator();\n const [localFormData, setLocalFormData] = useState<FormData | undefined>(formDataProp);\n\n useEffect(() => {\n setLocalFormData(formDataProp);\n }, [formDataProp]);\n\n const handleChange = (data: IChangeEvent<FormData, RJSFSchema>, id?: string) => {\n setLocalFormData(data.formData);\n onChangeProp?.(data, id);\n };\n\n return (\n <ThemedForm\n {...rest}\n key={i18n.language}\n formData={localFormData}\n onChange={handleChange}\n templates={PAPER_TEMPLATES as unknown as FormTemplates}\n validator={customValidator}\n translateString={(stringToTranslate, params) => translateRjsfString({ stringToTranslate, params })}\n uiSchema={uiSchema}\n />\n );\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/rjsf/form-submit-context.tsx","../src/theme/dark-colors-scheme.ts","../src/theme/light-colors-scheme.ts","../src/theme/theme.ts","../src/components/rjsf/rjsf-paper-buttons.tsx","../src/components/rjsf/rjsf-paper-templates.tsx","../src/components/rjsf/widgets/display-label.tsx","../src/components/rjsf/widgets/checkbox-widget.tsx","../src/components/rjsf/widgets/checkboxes-widget.tsx","../src/components/rjsf/widgets/date-widget.tsx","../src/components/rjsf/widgets/datetime-widget.tsx","../src/components/rjsf/widgets/hidden-widget.tsx","../src/utils/storage.ts","../src/config/env.config.ts","../src/store/common-logs.store.ts","../src/utils/device.utils.ts","../src/utils/env.utils.ts","../src/logger/logger.types.ts","../src/logger/logger.ts","../src/components/rjsf/widgets/number-widget.tsx","../src/components/password-input/password-input.tsx","../src/components/rjsf/widgets/password-widget.tsx","../src/components/rjsf/widgets/radio-widget.tsx","../src/components/rjsf/widgets/range-widget.tsx","../src/components/drop-down-selector/drop-down-selector.utils.ts","../src/components/drop-down-selector/drop-down-selector-left-icon.tsx","../src/components/drop-down-selector/drop-down-selector-item.tsx","../src/components/drop-down-selector/drop-down-selector.tsx","../src/components/rjsf/widgets/select-widget.tsx","../src/components/rjsf/widgets/text-widget.tsx","../src/components/rjsf/widgets/textarea-widget.tsx","../src/components/rjsf/rjsf-paper-theme.ts","../src/components/rjsf/rjsf-paper-renderer.tsx"],"names":["createContext","NO_OP","useRef","useCallback","jsx","View","MD3DarkTheme","MD3LightTheme","adaptNavigationTheme","LightNavigationTheme","DarkNavigationTheme","useTheme","TranslatableString","IconButton","getUiOptions","useContext","getSubmitButtonOptions","styles","Button","StyleSheet","getDefaultRegistry","useStyles","jsxs","Text","getTemplate","isBlank","getRjsfDisplayLabel","Switch","Pressable","mapEnumOptions","isNullish","Checkbox","useToggle","hasRjsfErrors","parseDateOnlyToLocalDate","formatDateOnlyForDisplay","Platform","TextInput","dateToDateOnlyString","DateTimePicker","parseDateOrNull","formatDateTimeForDisplay","MMKV","makeAutoObservable","Constants","Updates","LogBox","Paths","RNLogger","fileAsyncTransport","Sentry","sentryTransport","mapConsoleTransport","InteractionManager","FileSystemLegacy","toStringOrEmpty","useTranslation","getRjsfTextChangeValue","RadioButton","Slider","Icon","useState","Dropdown","value","toStringOrUndefined","withTheme","useRjsfValidator","useEffect","createElement","translateRjsfString"],"mappings":"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","file":"rjsf.js","sourcesContent":["import { NO_OP } from '@lichens-innovation/ts-common';\nimport type { PropsWithChildren } from 'react';\nimport { createContext, useCallback, useRef } from 'react';\nimport { View, type ViewProps } from 'react-native';\n\n/**\n * Form submit context for RJSF on React Native.\n *\n * On the web, a form submit is handled by the DOM: a <form> wraps inputs and a button with\n * type=\"submit\" triggers the form's onSubmit. RJSF does not need to pass the submit handler\n * to the theme's submit button because the browser wires it automatically.\n *\n * On React Native there is no native form element or submit semantics. The theme's SubmitButton\n * is just a Pressable; it has no way to receive the Form's onSubmit from RJSF (the theme API\n * does not pass it). This context bridges that gap: the wrapper that receives onSubmit from\n * RJSF provides it via context, and the SubmitButton consumes it to trigger submission on press.\n */\n\nexport type SubmitHandler = (event?: unknown) => void;\n\nexport const FormSubmitContext = createContext<SubmitHandler>(NO_OP);\n\ninterface FormWrapperProps extends ViewProps {\n onSubmit?: SubmitHandler;\n}\n\n/** Wraps RJSF form content in a View and provides submit handler via context for Paper SubmitButton. */\nexport const RjsfPaperFormWrapper: React.ComponentType<PropsWithChildren<FormWrapperProps>> = ({\n onSubmit,\n children,\n ...viewProps\n}) => {\n const submitRef = useRef(onSubmit);\n submitRef.current = onSubmit;\n\n const handleSubmit = useCallback<SubmitHandler>((event) => {\n submitRef.current?.(event);\n }, []);\n\n return (\n <FormSubmitContext.Provider value={handleSubmit}>\n <View {...viewProps}>{children}</View>\n </FormSubmitContext.Provider>\n );\n};\n","// Generated colors from https://callstack.github.io/react-native-paper/docs/guides/theming\nexport const DARK_COLORS_SCHEME = {\n primary: 'rgb(170, 212, 114)',\n onPrimary: 'rgb(32, 54, 0)',\n primaryContainer: 'rgb(49, 79, 0)',\n onPrimaryContainer: 'rgb(197, 240, 139)',\n secondary: 'rgb(185, 209, 101)',\n onSecondary: 'rgb(42, 53, 0)',\n secondaryContainer: 'rgb(62, 76, 0)',\n onSecondaryContainer: 'rgb(212, 237, 126)',\n tertiary: 'rgb(167, 212, 116)',\n onTertiary: 'rgb(30, 55, 0)',\n tertiaryContainer: 'rgb(45, 80, 0)',\n onTertiaryContainer: 'rgb(194, 241, 141)',\n error: 'rgb(255, 180, 171)',\n onError: 'rgb(105, 0, 5)',\n errorContainer: 'rgb(147, 0, 10)',\n onErrorContainer: 'rgb(255, 180, 171)',\n background: 'rgb(27, 28, 24)',\n onBackground: 'rgb(227, 227, 219)',\n surface: 'rgb(27, 28, 24)',\n onSurface: 'rgb(227, 227, 219)',\n surfaceVariant: 'rgb(68, 72, 61)',\n onSurfaceVariant: 'rgb(197, 200, 185)',\n outline: 'rgb(143, 146, 133)',\n outlineVariant: 'rgb(68, 72, 61)',\n shadow: 'rgb(0, 0, 0)',\n scrim: 'rgb(0, 0, 0)',\n inverseSurface: 'rgb(227, 227, 219)',\n inverseOnSurface: 'rgb(48, 49, 44)',\n inversePrimary: 'rgb(69, 104, 18)',\n elevation: {\n level0: 'transparent',\n level1: 'rgb(34, 37, 29)',\n level2: 'rgb(38, 43, 31)',\n level3: 'rgb(43, 48, 34)',\n level4: 'rgb(44, 50, 35)',\n level5: 'rgb(47, 54, 37)',\n },\n surfaceDisabled: 'rgba(227, 227, 219, 0.12)',\n onSurfaceDisabled: 'rgba(227, 227, 219, 0.38)',\n backdrop: 'rgba(46, 50, 40, 0.4)',\n};\n","// Generated colors from https://callstack.github.io/react-native-paper/docs/guides/theming\nexport const LIGHT_COLORS_SCHEME = {\n primary: 'rgb(69, 104, 18)',\n onPrimary: 'rgb(255, 255, 255)',\n primaryContainer: 'rgb(197, 240, 139)',\n onPrimaryContainer: 'rgb(17, 32, 0)',\n secondary: 'rgb(83, 102, 0)',\n onSecondary: 'rgb(255, 255, 255)',\n secondaryContainer: 'rgb(212, 237, 126)',\n onSecondaryContainer: 'rgb(23, 30, 0)',\n tertiary: 'rgb(67, 105, 21)',\n onTertiary: 'rgb(255, 255, 255)',\n tertiaryContainer: 'rgb(194, 241, 141)',\n onTertiaryContainer: 'rgb(15, 32, 0)',\n error: 'rgb(186, 26, 26)',\n onError: 'rgb(255, 255, 255)',\n errorContainer: 'rgb(255, 218, 214)',\n onErrorContainer: 'rgb(65, 0, 2)',\n background: 'rgb(253, 252, 245)',\n onBackground: 'rgb(27, 28, 24)',\n surface: 'rgb(253, 252, 245)',\n onSurface: 'rgb(27, 28, 24)',\n surfaceVariant: 'rgb(225, 228, 213)',\n onSurfaceVariant: 'rgb(68, 72, 61)',\n outline: 'rgb(117, 121, 108)',\n outlineVariant: 'rgb(197, 200, 185)',\n shadow: 'rgb(0, 0, 0)',\n scrim: 'rgb(0, 0, 0)',\n inverseSurface: 'rgb(48, 49, 44)',\n inverseOnSurface: 'rgb(242, 241, 233)',\n inversePrimary: 'rgb(170, 212, 114)',\n elevation: {\n level0: 'transparent',\n level1: 'rgb(244, 245, 234)',\n level2: 'rgb(238, 240, 227)',\n level3: 'rgb(233, 236, 220)',\n level4: 'rgb(231, 234, 218)',\n level5: 'rgb(227, 231, 213)',\n },\n surfaceDisabled: 'rgba(27, 28, 24, 0.12)',\n onSurfaceDisabled: 'rgba(27, 28, 24, 0.38)',\n backdrop: 'rgba(46, 50, 40, 0.4)',\n};\n","import { DarkTheme as DarkNavigationTheme, DefaultTheme as LightNavigationTheme } from '@react-navigation/native';\nimport { MD3DarkTheme, MD3LightTheme, adaptNavigationTheme, useTheme } from 'react-native-paper';\nimport { DARK_COLORS_SCHEME } from './dark-colors-scheme';\nimport { LIGHT_COLORS_SCHEME } from './light-colors-scheme';\n\nconst DEFAULT_SPACING: number = 8;\nconst spacing = (units: number = 1): number => units * DEFAULT_SPACING;\n\nconst roundness = 2;\n\nexport const DARK_THEME = {\n ...MD3DarkTheme,\n colors: {\n ...MD3DarkTheme.colors,\n ...DARK_COLORS_SCHEME,\n },\n spacing,\n roundness,\n};\n\nexport const LIGHT_THEME = {\n ...MD3LightTheme,\n colors: {\n ...MD3LightTheme.colors,\n ...LIGHT_COLORS_SCHEME,\n },\n spacing,\n roundness,\n};\n\nexport type AppTheme = typeof DARK_THEME;\n\n// React Navigation themes\nconst navigationAdaptedThemes = adaptNavigationTheme({\n reactNavigationLight: LightNavigationTheme,\n reactNavigationDark: DarkNavigationTheme,\n materialLight: LIGHT_THEME,\n materialDark: DARK_THEME,\n});\n\nconst { DarkTheme, LightTheme } = navigationAdaptedThemes;\nexport const NAVIGATION_DARK = { ...DarkTheme, fonts: { ...DarkNavigationTheme.fonts } };\nexport const NAVIGATION_LIGHT = { ...LightTheme, fonts: { ...LightNavigationTheme.fonts } };\n\nexport const useAppTheme = () => useTheme() as AppTheme;\n\nexport const useIsDarkMode = (): boolean => {\n const theme = useAppTheme();\n return theme.dark;\n};\n","import type { RjsfRegistryWithTranslate } from '@lichens-innovation/ts-common/rjsf';\nimport { getSubmitButtonOptions, getUiOptions, TranslatableString } from '@rjsf/utils';\nimport type { FunctionComponent } from 'react';\nimport { useContext } from 'react';\nimport { StyleSheet, View } from 'react-native';\nimport { Button, IconButton } from 'react-native-paper';\nimport { useAppTheme } from '~/theme';\nimport { FormSubmitContext } from './form-submit-context';\n\nexport interface IconButtonProps {\n id?: string;\n onClick?: () => void;\n disabled?: boolean;\n readonly?: boolean;\n registry: RjsfRegistryWithTranslate;\n uiSchema?: Record<string, unknown>;\n title?: string;\n}\n\nexport const AddButton: FunctionComponent<IconButtonProps> = ({ registry, onClick, disabled, title }) => {\n const label = registry.translateString(TranslatableString.AddItemButton);\n return <IconButton icon=\"plus\" onPress={onClick} disabled={disabled} accessibilityLabel={title ?? label} />;\n};\n\nexport const CopyButton: FunctionComponent<IconButtonProps> = ({ registry, onClick, disabled, title }) => {\n const label = registry.translateString(TranslatableString.CopyButton);\n return <IconButton icon=\"content-copy\" onPress={onClick} disabled={disabled} accessibilityLabel={title ?? label} />;\n};\n\nexport const MoveDownButton: FunctionComponent<IconButtonProps> = ({ registry, onClick, disabled, title }) => {\n const label = registry.translateString(TranslatableString.MoveDownButton);\n return <IconButton icon=\"arrow-down\" onPress={onClick} disabled={disabled} accessibilityLabel={title ?? label} />;\n};\n\nexport const MoveUpButton: FunctionComponent<IconButtonProps> = ({ registry, onClick, disabled, title }) => {\n const label = registry.translateString(TranslatableString.MoveUpButton);\n return <IconButton icon=\"arrow-up\" onPress={onClick} disabled={disabled} accessibilityLabel={title ?? label} />;\n};\n\nexport const RemoveButton: FunctionComponent<IconButtonProps> = ({ uiSchema, registry, onClick, disabled, title }) => {\n const options = getUiOptions(uiSchema);\n const label = registry.translateString(TranslatableString.RemoveButton);\n return (\n <IconButton\n icon=\"delete\"\n onPress={onClick}\n disabled={disabled}\n iconColor={options?.block ? undefined : undefined}\n accessibilityLabel={title ?? label}\n />\n );\n};\n\nexport const ClearButton: FunctionComponent<IconButtonProps> = ({ registry, onClick, disabled, title }) => {\n const label = registry.translateString(TranslatableString.ClearButton);\n return <IconButton icon=\"close\" onPress={onClick} disabled={disabled} accessibilityLabel={title ?? label} />;\n};\n\nexport interface SubmitButtonProps {\n uiSchema?: Record<string, unknown>;\n registry?: RjsfRegistryWithTranslate;\n}\n\n/**\n * RJSF form submit button.\n * Uses FormSubmitContext to get the submit handler (RJSF does not pass onSubmit to the theme button).\n * The fake event provides preventDefault() and persist() as no-ops to satisfy the web form submit\n * event contract, so an onSubmit that calls event.preventDefault() or event.persist() does not\n * crash on React Native, where onPress does not provide a form event.\n */\nexport const SubmitButton: FunctionComponent<SubmitButtonProps> = ({ uiSchema }) => {\n const submit = useContext(FormSubmitContext);\n const { submitText, norender, props: buttonProps } = getSubmitButtonOptions(uiSchema);\n const styles = useStyles();\n\n if (norender) return null;\n\n const fakeEvent = {\n preventDefault: () => {},\n persist: () => {},\n };\n\n return (\n <View style={styles.submitRow}>\n <Button mode=\"contained\" onPress={() => submit?.(fakeEvent)} {...buttonProps}>\n {submitText}\n </Button>\n </View>\n );\n};\n\nconst useStyles = () => {\n const theme = useAppTheme();\n\n return StyleSheet.create({\n submitRow: {\n marginTop: theme.spacing(2),\n alignItems: 'center',\n },\n });\n};\n","import { getDefaultRegistry } from '@rjsf/core';\nimport type {\n ArrayFieldItemTemplateProps,\n ArrayFieldTemplateProps,\n ErrorListProps,\n FieldErrorProps,\n FieldHelpProps,\n FieldTemplateProps,\n ObjectFieldTemplateProps,\n} from '@rjsf/utils';\nimport { getTemplate, getUiOptions } from '@rjsf/utils';\nimport type { ComponentType } from 'react';\nimport { StyleSheet, View } from 'react-native';\nimport { Text } from 'react-native-paper';\nimport { useAppTheme } from '~/theme';\nimport {\n AddButton,\n ClearButton,\n CopyButton,\n MoveDownButton,\n MoveUpButton,\n RemoveButton,\n SubmitButton,\n} from './rjsf-paper-buttons';\n\nconst defaultTemplates = getDefaultRegistry().templates;\n\n/** No-op error list: we omit the top \"Erreurs\" block; field-level errors still show per field. */\nconst NoopErrorList = () => null;\n\nconst PaperObjectFieldTemplate = ({ title, description, properties }: ObjectFieldTemplateProps) => {\n const styles = useStyles();\n\n return (\n <View style={styles.fieldSet}>\n {title ? (\n <Text variant=\"titleMedium\" style={styles.title}>\n {title}\n </Text>\n ) : null}\n\n {description ? (\n <Text variant=\"bodySmall\" style={styles.description}>\n {typeof description === 'string' ? description : null}\n </Text>\n ) : null}\n\n {properties.map((prop) => {\n if (prop.hidden) return null;\n return <View key={prop.name}>{prop.content}</View>;\n })}\n </View>\n );\n};\n\nconst PaperFieldTemplate = ({ children, errors }: FieldTemplateProps) => {\n const styles = useStyles();\n\n return (\n <View style={styles.field}>\n {children}\n\n {errors}\n </View>\n );\n};\n\nconst PaperFieldErrorTemplate = ({ errors }: FieldErrorProps) => {\n const styles = useStyles();\n\n if (!errors || errors.length === 0) return null;\n\n return (\n <View style={styles.errorList}>\n {(errors as string[]).map((msg, index) => (\n <Text key={`error-${index}-${msg}`} variant=\"bodySmall\" style={styles.fieldError}>\n {msg}\n </Text>\n ))}\n </View>\n );\n};\n\nconst PaperFieldHelpTemplate = ({ help }: FieldHelpProps) => {\n const styles = useStyles();\n\n if (!help) return null;\n\n return (\n <Text variant=\"bodySmall\" style={styles.help}>\n {typeof help === 'string' ? help : null}\n </Text>\n );\n};\n\n/** Renders a single array item using View (React Native). Default RJSF template uses div and breaks on RN. */\nconst PaperArrayFieldItemTemplate = ({\n children,\n buttonsProps,\n hasToolbar,\n registry,\n uiSchema,\n}: ArrayFieldItemTemplateProps) => {\n const styles = useStyles();\n const uiOptions = getUiOptions(uiSchema);\n const ArrayFieldItemButtonsTemplate = getTemplate('ArrayFieldItemButtonsTemplate', registry, uiOptions);\n\n return (\n <View style={styles.arrayItemRow}>\n <View style={styles.arrayItemContent}>{children}</View>\n {hasToolbar ? (\n <View style={styles.arrayItemToolbar}>\n <ArrayFieldItemButtonsTemplate {...buttonsProps} />\n </View>\n ) : null}\n </View>\n );\n};\n\nconst PaperArrayFieldTemplate = ({ title, items, canAdd, onAddClick, registry, uiSchema }: ArrayFieldTemplateProps) => {\n const styles = useStyles();\n\n return (\n <View style={styles.fieldSet}>\n {title ? (\n <Text variant=\"titleMedium\" style={styles.title}>\n {title}\n </Text>\n ) : null}\n\n {items.map((item, index) => (\n <View key={'key' in item ? String(item.key) : index} style={styles.arrayItem}>\n {item}\n </View>\n ))}\n\n {canAdd ? (\n <AddButton onClick={onAddClick} registry={registry} uiSchema={uiSchema as Record<string, unknown>} />\n ) : null}\n </View>\n );\n};\n\nexport const PAPER_TEMPLATES = {\n ...defaultTemplates,\n ObjectFieldTemplate: PaperObjectFieldTemplate as ComponentType<ObjectFieldTemplateProps>,\n FieldTemplate: PaperFieldTemplate as ComponentType<FieldTemplateProps>,\n FieldErrorTemplate: PaperFieldErrorTemplate as ComponentType<FieldErrorProps>,\n FieldHelpTemplate: PaperFieldHelpTemplate as ComponentType<FieldHelpProps>,\n ArrayFieldTemplate: PaperArrayFieldTemplate as ComponentType<ArrayFieldTemplateProps>,\n ArrayFieldItemTemplate: PaperArrayFieldItemTemplate as ComponentType<ArrayFieldItemTemplateProps>,\n ErrorListTemplate: NoopErrorList as ComponentType<ErrorListProps>,\n ButtonTemplates: {\n ...defaultTemplates.ButtonTemplates,\n AddButton,\n ClearButton,\n CopyButton,\n MoveDownButton,\n MoveUpButton,\n RemoveButton,\n SubmitButton,\n },\n};\n\nconst useStyles = () => {\n const theme = useAppTheme();\n\n return StyleSheet.create({\n fieldSet: {\n marginVertical: theme.spacing(2),\n },\n title: {\n marginBottom: theme.spacing(1),\n },\n description: {\n marginBottom: theme.spacing(2),\n opacity: 0.8,\n },\n field: {\n marginVertical: theme.spacing(0.5),\n },\n errorList: {\n marginTop: theme.spacing(1),\n gap: theme.spacing(0.5),\n },\n fieldError: {\n color: theme.colors.error,\n },\n help: {\n marginTop: theme.spacing(1),\n opacity: 0.8,\n },\n arrayItem: {\n marginVertical: theme.spacing(1),\n },\n arrayItemRow: {\n flexDirection: 'row',\n alignItems: 'center',\n marginVertical: theme.spacing(1),\n },\n arrayItemContent: {\n flex: 1,\n },\n arrayItemToolbar: {\n flexDirection: 'row',\n alignItems: 'center',\n marginLeft: theme.spacing(1),\n },\n });\n};\n","import { isBlank } from '@lichens-innovation/ts-common';\nimport type { StyleProp, TextStyle } from 'react-native';\nimport { Text } from 'react-native-paper';\n\nexport interface RjsfDisplayLabelProps {\n label?: string;\n style?: StyleProp<TextStyle>;\n}\n\nexport const RjsfDisplayLabel = ({ label, style }: RjsfDisplayLabelProps) => {\n if (isBlank(label)) return null;\n\n return (\n <Text variant=\"bodyLarge\" style={style}>\n {label}\n </Text>\n );\n};\n","import { isBlank } from '@lichens-innovation/ts-common';\nimport { getRjsfDisplayLabel } from '@lichens-innovation/ts-common/rjsf';\nimport type { WidgetProps } from '@rjsf/utils';\nimport type { FunctionComponent } from 'react';\nimport { Pressable, StyleSheet, View } from 'react-native';\nimport { Switch } from 'react-native-paper';\nimport { useAppTheme } from '~/theme';\nimport { RjsfDisplayLabel } from './display-label';\n\nexport const CheckboxWidget: FunctionComponent<WidgetProps> = ({\n id,\n value,\n disabled,\n readonly,\n onChange,\n onBlur,\n label,\n hideLabel,\n required,\n}) => {\n const styles = useStyles();\n const displayLabel = getRjsfDisplayLabel({ label, required, hideLabel });\n const checked = value === true;\n\n const handleValueChange = (newValue: boolean) => {\n onChange(newValue);\n onBlur(id, newValue);\n };\n\n const handleLabelPress = () => {\n if (disabled || readonly) return;\n handleValueChange(!checked);\n };\n\n return (\n <View style={styles.checkboxRow}>\n <Switch value={checked} onValueChange={handleValueChange} disabled={disabled} />\n\n {!isBlank(displayLabel) ? (\n <Pressable onPress={handleLabelPress} style={styles.checkboxLabel}>\n <RjsfDisplayLabel label={displayLabel} />\n </Pressable>\n ) : null}\n </View>\n );\n};\n\nconst useStyles = () => {\n const theme = useAppTheme();\n\n return StyleSheet.create({\n checkboxRow: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: theme.spacing(1),\n marginVertical: theme.spacing(0.5),\n },\n checkboxLabel: {\n flex: 1,\n },\n });\n};\n","import { isNullish } from '@lichens-innovation/ts-common';\nimport type { EnumOptionDisplay } from '@lichens-innovation/ts-common/rjsf';\nimport { getRjsfDisplayLabel, mapEnumOptions } from '@lichens-innovation/ts-common/rjsf';\nimport type { WidgetProps } from '@rjsf/utils';\nimport type { FunctionComponent } from 'react';\nimport { Pressable, StyleSheet, View } from 'react-native';\nimport { Checkbox, Text } from 'react-native-paper';\nimport { useAppTheme } from '~/theme';\nimport { RjsfDisplayLabel } from './display-label';\n\nexport const CheckboxesWidget: FunctionComponent<WidgetProps> = ({\n id,\n value,\n disabled,\n readonly,\n onChange,\n onBlur,\n label,\n hideLabel,\n required,\n options,\n schema,\n}) => {\n const styles = useStyles();\n const displayLabel = getRjsfDisplayLabel({ label, required, hideLabel });\n const enumOptions = mapEnumOptions(options);\n const isArrayValue = Array.isArray(value);\n const currentSet = isArrayValue ? value : [];\n const hasMaxItems = typeof schema?.maxItems === 'number';\n const maxItems = hasMaxItems ? schema.maxItems : undefined;\n\n const toggle = (optValue: string) => {\n if (disabled || readonly) return;\n\n const isChecked = currentSet.includes(optValue);\n const next = isChecked ? currentSet.filter((v) => v !== optValue) : [...currentSet, optValue];\n if (!isNullish(maxItems) && next.length > maxItems) return;\n\n const unique = Array.from(new Set(next));\n onChange(unique);\n onBlur(id, unique);\n };\n\n return (\n <View style={styles.widgetBlock}>\n <RjsfDisplayLabel label={displayLabel} style={styles.checkboxesTitle} />\n\n {enumOptions.map((opt: EnumOptionDisplay) => {\n const isOptionChecked = currentSet.includes(opt.value);\n const checkboxStatus = isOptionChecked ? 'checked' : 'unchecked';\n return (\n <View key={opt.value} style={styles.checkboxRow}>\n <Checkbox status={checkboxStatus} onPress={() => toggle(opt.value)} disabled={disabled || readonly} />\n <Pressable onPress={() => toggle(opt.value)} style={styles.checkboxLabel}>\n <Text variant=\"bodyLarge\">{opt.label}</Text>\n </Pressable>\n </View>\n );\n })}\n </View>\n );\n};\n\nconst useStyles = () => {\n const theme = useAppTheme();\n return StyleSheet.create({\n widgetBlock: {\n marginVertical: theme.spacing(0.5),\n },\n checkboxesTitle: {\n marginBottom: theme.spacing(1),\n },\n checkboxRow: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: theme.spacing(1),\n marginVertical: theme.spacing(0.5),\n },\n checkboxLabel: {\n flex: 1,\n },\n });\n};\n","import { isNullish } from '@lichens-innovation/ts-common';\nimport DateTimePicker from '@react-native-community/datetimepicker';\nimport type { WidgetProps } from '@rjsf/utils';\nimport { useToggle } from '@uidotdev/usehooks';\nimport type { FunctionComponent } from 'react';\nimport { Platform, Pressable, StyleSheet, View } from 'react-native';\nimport { TextInput } from 'react-native-paper';\nimport { useAppTheme, useIsDarkMode } from '~/theme';\n\nimport {\n dateToDateOnlyString,\n formatDateOnlyForDisplay,\n getRjsfDisplayLabel,\n hasRjsfErrors,\n parseDateOnlyToLocalDate,\n} from '@lichens-innovation/ts-common/rjsf';\n\nexport const DateWidget: FunctionComponent<WidgetProps> = ({\n id,\n value,\n disabled,\n readonly,\n placeholder,\n onChange,\n onBlur,\n onFocus,\n label,\n hideLabel,\n required,\n rawErrors,\n}) => {\n const theme = useAppTheme();\n const isDarkMode = useIsDarkMode();\n const styles = useStyles();\n const [showPicker, togglePickerVisibility] = useToggle(false);\n const hasError = hasRjsfErrors(rawErrors);\n const displayLabel = getRjsfDisplayLabel({ label, required, hideLabel });\n const date = parseDateOnlyToLocalDate(value as string) ?? new Date();\n const strValue = formatDateOnlyForDisplay(value as string);\n const pickerDisplay = Platform.OS === 'ios' ? 'spinner' : 'default';\n const themeVariant = isDarkMode ? 'dark' : 'light';\n const isDisplayOnly = disabled || readonly;\n\n if (isDisplayOnly) {\n return (\n <View style={styles.widgetBlock}>\n <TextInput\n mode=\"outlined\"\n label={displayLabel}\n value={strValue}\n placeholder={placeholder}\n disabled={disabled}\n editable={false}\n error={hasError}\n style={styles.input}\n outlineColor={theme.colors.outline}\n onFocus={() => onFocus(id, value)}\n pointerEvents=\"auto\"\n />\n </View>\n );\n }\n\n const handlePick = (_: unknown, selectedDate?: Date) => {\n if (Platform.OS === 'android') togglePickerVisibility(false);\n if (!isNullish(selectedDate)) {\n const dateOnly = dateToDateOnlyString(selectedDate);\n onChange(dateOnly);\n onBlur(id, dateOnly);\n }\n };\n\n return (\n <View style={styles.widgetBlock}>\n <Pressable onPress={() => togglePickerVisibility()}>\n <TextInput\n mode=\"outlined\"\n label={displayLabel}\n value={strValue}\n placeholder={placeholder}\n disabled={disabled}\n editable={false}\n error={hasError}\n style={styles.input}\n outlineColor={theme.colors.outline}\n right={<TextInput.Icon icon=\"calendar\" onPress={() => togglePickerVisibility()} />}\n onFocus={() => onFocus(id, value)}\n pointerEvents=\"none\"\n />\n </Pressable>\n\n {showPicker && (\n <DateTimePicker\n value={date}\n mode=\"date\"\n display={pickerDisplay}\n onChange={handlePick}\n onTouchCancel={() => togglePickerVisibility(false)}\n themeVariant={themeVariant}\n {...(Platform.OS === 'ios' && { textColor: theme.colors.onSurface })}\n />\n )}\n </View>\n );\n};\n\nconst useStyles = () => {\n const theme = useAppTheme();\n return StyleSheet.create({\n widgetBlock: {\n marginVertical: theme.spacing(0.5),\n },\n input: {\n marginVertical: theme.spacing(0.5),\n },\n });\n};\n","import { isNullish } from '@lichens-innovation/ts-common';\nimport DateTimePicker from '@react-native-community/datetimepicker';\nimport type { WidgetProps } from '@rjsf/utils';\nimport { useToggle } from '@uidotdev/usehooks';\nimport type { FunctionComponent } from 'react';\nimport { Platform, Pressable, StyleSheet, View } from 'react-native';\nimport { TextInput } from 'react-native-paper';\nimport { useAppTheme, useIsDarkMode } from '~/theme';\n\nimport {\n formatDateTimeForDisplay,\n getRjsfDisplayLabel,\n hasRjsfErrors,\n parseDateOrNull,\n} from '@lichens-innovation/ts-common/rjsf';\n\nexport const DateTimeWidget: FunctionComponent<WidgetProps> = ({\n id,\n value,\n disabled,\n readonly,\n placeholder,\n onChange,\n onBlur,\n onFocus,\n label,\n hideLabel,\n required,\n rawErrors,\n}) => {\n const theme = useAppTheme();\n const isDarkMode = useIsDarkMode();\n const styles = useStyles();\n const [showPicker, togglePickerVisibility] = useToggle(false);\n const hasError = hasRjsfErrors(rawErrors);\n const displayLabel = getRjsfDisplayLabel({ label, required, hideLabel });\n const date = parseDateOrNull(value as string) ?? new Date();\n const strValue = formatDateTimeForDisplay(value as string);\n const pickerDisplay = Platform.OS === 'ios' ? 'spinner' : 'default';\n const themeVariant = isDarkMode ? 'dark' : 'light';\n const isDisplayOnly = disabled || readonly;\n\n if (isDisplayOnly) {\n return (\n <View style={styles.widgetBlock}>\n <TextInput\n mode=\"outlined\"\n label={displayLabel}\n value={strValue}\n placeholder={placeholder}\n disabled={disabled}\n editable={false}\n error={hasError}\n style={styles.input}\n outlineColor={theme.colors.outline}\n onFocus={() => onFocus(id, value)}\n pointerEvents=\"auto\"\n />\n </View>\n );\n }\n\n const handlePick = (_: unknown, selectedDate?: Date) => {\n if (Platform.OS === 'android') togglePickerVisibility(false);\n if (!isNullish(selectedDate)) {\n const iso = selectedDate.toISOString();\n onChange(iso);\n onBlur(id, iso);\n }\n };\n\n return (\n <View style={styles.widgetBlock}>\n <Pressable onPress={() => togglePickerVisibility()}>\n <TextInput\n mode=\"outlined\"\n label={displayLabel}\n value={strValue}\n placeholder={placeholder}\n disabled={disabled}\n editable={false}\n error={hasError}\n style={styles.input}\n outlineColor={theme.colors.outline}\n right={<TextInput.Icon icon=\"clock-outline\" onPress={() => togglePickerVisibility()} />}\n onFocus={() => onFocus(id, value)}\n pointerEvents=\"none\"\n />\n </Pressable>\n {showPicker && (\n <DateTimePicker\n value={date}\n mode=\"datetime\"\n display={pickerDisplay}\n onChange={handlePick}\n onTouchCancel={() => togglePickerVisibility(false)}\n themeVariant={themeVariant}\n {...(Platform.OS === 'ios' && { textColor: theme.colors.onSurface })}\n />\n )}\n </View>\n );\n};\n\nconst useStyles = () => {\n const theme = useAppTheme();\n return StyleSheet.create({\n widgetBlock: {\n marginVertical: theme.spacing(0.5),\n },\n input: {\n marginVertical: theme.spacing(0.5),\n },\n });\n};\n","import type { WidgetProps } from '@rjsf/utils';\nimport type { FunctionComponent } from 'react';\nimport { StyleSheet, View } from 'react-native';\n\nconst styles = StyleSheet.create({\n hidden: {\n display: 'none',\n height: 0,\n overflow: 'hidden',\n },\n});\n\nexport const HiddenWidget: FunctionComponent<WidgetProps> = () => {\n return <View style={styles.hidden} />;\n};\n","import { MMKV } from 'react-native-mmkv';\n\nconst mmkvStorage = new MMKV();\n\nconst setItem = <T>(key: string, data: T) => {\n if (data instanceof ArrayBuffer) {\n mmkvStorage.set(key, data);\n } else if (typeof data === 'boolean' || typeof data === 'number' || typeof data === 'string') {\n mmkvStorage.set(key, data);\n } else {\n mmkvStorage.set(key, JSON.stringify(data));\n }\n};\n\nconst getItem = <T>(key: string, defaultValue: T): T => {\n if (defaultValue instanceof Uint8Array) {\n return (mmkvStorage.getBuffer(key) as T) ?? defaultValue;\n }\n if (typeof defaultValue === 'boolean') {\n return (mmkvStorage.getBoolean(key) as T) ?? defaultValue;\n }\n if (typeof defaultValue === 'number') {\n return (mmkvStorage.getNumber(key) as T) ?? defaultValue;\n }\n\n const stringValue = mmkvStorage.getString(key);\n if (stringValue === undefined || stringValue === null) return defaultValue;\n\n if (typeof defaultValue === 'string') {\n return stringValue as T;\n }\n\n try {\n return JSON.parse(stringValue) as T;\n } catch {\n return stringValue as T;\n }\n};\n\nconst removeItem = (key: string) => {\n mmkvStorage.delete(key);\n};\n\nexport const storage = {\n setItem,\n getItem,\n removeItem,\n};\n\nexport const mmkvStorageForMobxPersist = {\n setItem: (key: string, value: string): Promise<void> => {\n mmkvStorage.set(key, value);\n return Promise.resolve();\n },\n\n getItem: (key: string): Promise<string | null> => {\n const value = mmkvStorage.getString(key);\n return Promise.resolve(value ?? null);\n },\n\n removeItem: (key: string): Promise<void> => {\n mmkvStorage.delete(key);\n return Promise.resolve();\n },\n};\n","import { storage } from '../utils/storage';\n\nexport const isSentryActivated = (): boolean => storage.getItem<string>('SENTRY_ACTIVATED', '') === 'true';\nexport const getSentryDns = (): string => storage.getItem('SENTRY_DNS', '') ?? '';\n","import { makeAutoObservable } from 'mobx';\nimport { transportFunctionType } from 'react-native-logs';\nimport { LogEntry } from '../logger/logger.types';\n\nconst MAX_LOG_ENTRIES = 10 * 1000;\n\nclass CommonLogsStore {\n logEntries: LogEntry[] = [];\n\n constructor() {\n makeAutoObservable(this);\n }\n\n get allLogsAsText(): string {\n return this.logEntries\n .map((log) => log.msg)\n .filter((log) => !!log)\n .join('\\n');\n }\n\n addLog(logEntry: LogEntry): void {\n this.logEntries.push(logEntry);\n\n if (this.logEntries.length > MAX_LOG_ENTRIES) {\n this.logEntries.shift(); // remove the oldest log\n }\n }\n\n clearLogs(): void {\n this.logEntries = [];\n }\n\n filterLogs(filterText: string): LogEntry[] {\n const lowerCaseFilterText = filterText.toLowerCase();\n return this.logEntries.filter((log) => log.msg.toLowerCase().includes(lowerCaseFilterText));\n }\n}\n\nexport const commonLogsStore = new CommonLogsStore();\n\nexport const commonLogsStoreTransport: transportFunctionType<object> = (props: LogEntry) => {\n commonLogsStore.addLog(props);\n};\n","import Constants from 'expo-constants';\nimport * as Device from 'expo-device';\nimport { Platform } from 'react-native';\n\nexport const isRealDevice = (): boolean => {\n return Device.isDevice;\n};\n\nexport const isEmulator = (): boolean => {\n return !Device.isDevice;\n};\n\nexport const getDeviceType = (): string => {\n const isReal = isRealDevice();\n return Platform.select({\n ios: isReal ? 'iOS Device' : 'iOS Simulator',\n android: isReal ? 'Android Device' : 'Android Emulator',\n default: isReal ? `${Platform.OS} Real Device` : `${Platform.OS} Emulator`,\n });\n};\n\nexport const getAppIdentifier = (): string => {\n const bundleId = Platform.select({\n ios: Constants.expoConfig?.ios?.bundleIdentifier,\n android: Constants.expoConfig?.android?.package,\n default: 'Unknown',\n });\n\n const id = bundleId?.split('.').pop();\n return id ?? '';\n};\n","import Constants from 'expo-constants';\nimport * as Updates from 'expo-updates';\nimport { logger } from '../logger/logger';\n\nexport const isProduction = (): boolean => {\n return Updates.channel === 'production';\n};\n\nexport const isPreview = (): boolean => {\n return Updates.channel === 'preview';\n};\n\nexport const isDevelopment = (): boolean => {\n return __DEV__ || !Updates.channel;\n};\n\nexport const getEnvVarsSource = (): string => {\n if (Constants.executionEnvironment === 'storeClient') {\n return 'EAS (Production)';\n }\n\n return 'Local Development';\n};\n\nexport const validateGetRandomValues = (): boolean => {\n if (!crypto?.getRandomValues) {\n logger.error('[validateGetRandomValues] crypto.getRandomValues is not available as a global environment function');\n return false;\n }\n\n const typeOfGetRandomValues = typeof crypto.getRandomValues;\n if (typeOfGetRandomValues !== 'function') {\n logger.error(`[validateGetRandomValues] crypto.getRandomValues is not a function: ${typeOfGetRandomValues}`);\n return false;\n }\n\n logger.debug('[validateGetRandomValues] global crypto getRandomValues is available as a global environment function');\n return true;\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nexport interface SimpleLogger {\n debug(message: string, ...args: any[]): void;\n log(message: string, ...args: any[]): void;\n info(message: string, ...args: any[]): void;\n warn(message: string, ...args: any[]): void;\n error(message: string, ...args: any[]): void;\n}\n\n// extract names of logger methods as a type\nexport type LoggerMethods = keyof SimpleLogger;\n\nexport const LOG_LEVELS = {\n debug: 0,\n log: 1,\n info: 2,\n warn: 3,\n error: 4,\n} as const;\n\nexport type LogLevelKey = keyof typeof LOG_LEVELS;\n\nexport interface LogLevel {\n severity: number;\n text: string;\n}\n\nexport interface LogEntry {\n msg: string;\n rawMsg: unknown;\n level: LogLevel;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport * as Sentry from '@sentry/react-native';\nimport { InteractionManager, LogBox } from 'react-native';\nimport {\n fileAsyncTransport,\n mapConsoleTransport,\n logger as RNLogger,\n sentryTransport,\n transportFunctionType,\n} from 'react-native-logs';\n\nimport { Directory, File, Paths } from 'expo-file-system';\nimport * as FileSystemLegacy from 'expo-file-system/legacy';\nimport { getSentryDns, isSentryActivated } from '../config/env.config';\nimport { FileInfo } from '../services/files/native-file-system.types';\nimport { commonLogsStoreTransport } from '../store/common-logs.store';\nimport { getAppIdentifier } from '../utils/device.utils';\nimport { isDevelopment } from '../utils/env.utils';\nimport { LOG_LEVELS, SimpleLogger } from './logger.types';\n\nLogBox.ignoreLogs([/^ErrorBoundary /, /Support for defaultProps will be removed from function components/]);\n\nconst appName = getAppIdentifier();\nconst logFilenamePrefix = `app-logs-${appName}`;\nconst logFilenamePattern = `${logFilenamePrefix}-{date-today}.txt`;\nconst filePath: string = Paths.document.uri;\nif (!filePath) {\n throw new Error('Failed to initialize logger: document directory path is unavailable');\n}\n\nclass LoggerWrapper implements SimpleLogger {\n private _logger: ReturnType<typeof RNLogger.createLogger>;\n\n constructor(config: Parameters<typeof RNLogger.createLogger>[0]) {\n this._logger = RNLogger.createLogger(config);\n }\n\n debug(message: string, ...args: any[]): void {\n this._logger.debug(message, ...args);\n }\n\n log(message: string, ...args: any[]): void {\n this._logger.log(message, ...args);\n }\n\n info(message: string, ...args: any[]): void {\n this._logger.info(message, ...args);\n }\n\n warn(message: string, ...args: any[]): void {\n this._logger.warn(message, ...args);\n }\n\n error(message: string, ...args: any[]): void {\n this._logger.error(message, ...args);\n }\n}\n\nconst getTransports = (): transportFunctionType<any>[] => {\n const transports: transportFunctionType<any>[] = [fileAsyncTransport, commonLogsStoreTransport];\n\n if (!isDevelopment() && isSentryActivated()) {\n Sentry.init({\n dsn: getSentryDns(),\n // We can add more context data to events (IP address, cookies, user, etc.)\n // @see https://docs.sentry.io/platforms/react-native/data-management/data-collected/\n sendDefaultPii: true,\n });\n transports.push(sentryTransport);\n }\n\n if (isDevelopment()) {\n transports.push(mapConsoleTransport);\n }\n\n return transports;\n};\n\nexport const logger = new LoggerWrapper({\n severity: 'debug',\n transport: getTransports(),\n levels: {\n debug: LOG_LEVELS.debug,\n log: LOG_LEVELS.log,\n info: LOG_LEVELS.info,\n warn: LOG_LEVELS.warn,\n error: LOG_LEVELS.error,\n },\n async: true,\n asyncFunc: InteractionManager.runAfterInteractions,\n dateFormat: (date: Date) => `${date.toISOString()} `,\n printLevel: true,\n fixedExtLvlLength: true,\n printDate: true,\n enabled: true,\n transportOptions: {\n // @see https://github.com/mowispace/react-native-logs?tab=readme-ov-file#sentrytransport\n SENTRY: Sentry,\n errorLevels: 'error',\n // @see https://github.com/mowispace/react-native-logs?tab=readme-ov-file#mapconsoletransport\n mapLevels: {\n debug: 'debug',\n log: 'log',\n info: 'info',\n warn: 'warn',\n error: 'error',\n },\n // @see https://github.com/mowispace/react-native-logs?tab=readme-ov-file#fileasynctransport\n FS: FileSystemLegacy,\n fileNameDateType: 'iso',\n fileName: logFilenamePattern,\n filePath,\n },\n});\n\nconst isLogFile = (fileName: string): boolean => {\n return fileName.startsWith(logFilenamePrefix);\n};\n\nconst isLogFileItem = (item: Directory | File): item is File => {\n return item instanceof File && isLogFile(item.name);\n};\n\nconst byMostRecentFirstComparator = (a: FileInfo, b: FileInfo): number => {\n return (b.modificationTime ?? 0) - (a.modificationTime ?? 0);\n};\n\nexport const loadAllLogFilesInfo = async (): Promise<FileInfo[]> => {\n try {\n const pathInfo = Paths.info(filePath);\n if (!pathInfo.exists) {\n return [];\n }\n\n const directory = new Directory(filePath);\n const items = directory.list();\n const logFiles = items.filter(isLogFileItem);\n\n const fileInfos: FileInfo[] = logFiles\n .map((file) => {\n const info = file.info();\n return {\n exists: info.exists,\n isDirectory: false,\n size: info.size ?? 0,\n modificationTime: info.modificationTime ?? 0,\n uri: file.uri,\n };\n })\n .filter((info) => info.exists);\n\n return fileInfos.sort(byMostRecentFirstComparator);\n } catch (e: unknown) {\n logger.error('Error loading files:', e);\n return [];\n }\n};\n\nexport const loadCurrentLogsFileUri = async (): Promise<string> => {\n const fileInfos = await loadAllLogFilesInfo();\n return fileInfos[0]?.uri ?? '';\n};\n\nexport const deleteAllLogFiles = async (): Promise<void> => {\n try {\n const pathInfo = Paths.info(filePath);\n if (!pathInfo.exists) {\n return;\n }\n\n const directory = new Directory(filePath);\n const items = directory.list();\n const logFiles: File[] = items.filter(isLogFileItem);\n\n const errors: Error[] = [];\n for (const file of logFiles) {\n try {\n file.delete();\n } catch (e: unknown) {\n errors.push(e instanceof Error ? e : new Error(String(e)));\n }\n }\n\n if (errors.length > 0) {\n throw new Error(`Failed to delete ${errors.length} log file(s): ${errors.map((e) => e.message).join('; ')}`);\n }\n } catch (e: unknown) {\n logger.error('Error deleting files:', e);\n throw e;\n }\n};\n","import { isBlank } from '@lichens-innovation/ts-common';\nimport { getRjsfDisplayLabel, hasRjsfErrors, toStringOrEmpty } from '@lichens-innovation/ts-common/rjsf';\nimport type { WidgetProps } from '@rjsf/utils';\nimport type { FunctionComponent } from 'react';\nimport { StyleSheet } from 'react-native';\nimport { TextInput } from 'react-native-paper';\nimport { logger } from '~/logger/logger';\nimport { useAppTheme } from '~/theme';\n\nexport const NumberWidget: FunctionComponent<WidgetProps> = ({\n id,\n value,\n disabled,\n readonly,\n placeholder,\n onChange,\n onBlur,\n onFocus,\n label,\n hideLabel,\n required,\n rawErrors,\n options,\n schema,\n}) => {\n const theme = useAppTheme();\n const styles = useStyles();\n const hasError = hasRjsfErrors(rawErrors);\n const displayLabel = getRjsfDisplayLabel({ label, required, hideLabel });\n const strValue = toStringOrEmpty(value);\n\n const isInteger = schema?.type === 'integer';\n\n const handleChangeText = (text: string) => {\n if (isBlank(text)) {\n onChange(options?.emptyValue);\n return;\n }\n\n const floatValue = parseFloat(text);\n if (Number.isNaN(floatValue)) {\n logger.error('[NumberWidget]: Invalid float value', { text });\n return;\n }\n onChange(isInteger ? Math.round(floatValue) : floatValue);\n };\n\n const keyboardType = isInteger ? 'number-pad' : 'decimal-pad';\n const inputMode = isInteger ? 'numeric' : 'decimal';\n\n return (\n <TextInput\n mode=\"outlined\"\n label={displayLabel}\n value={strValue}\n placeholder={placeholder}\n disabled={disabled}\n editable={!readonly}\n keyboardType={keyboardType}\n inputMode={inputMode}\n onChangeText={handleChangeText}\n onBlur={() => onBlur(id, value)}\n onFocus={() => onFocus(id, value)}\n error={hasError}\n style={styles.input}\n outlineColor={theme.colors.outline}\n />\n );\n};\n\nconst useStyles = () => {\n const theme = useAppTheme();\n return StyleSheet.create({\n input: {\n marginVertical: theme.spacing(0.5),\n },\n });\n};\n","import { useToggle } from '@uidotdev/usehooks';\nimport { FunctionComponent } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { TextInput, TextInputProps } from 'react-native-paper';\n\nexport type PasswordInputProps = Omit<TextInputProps, 'secureTextEntry'>;\n\nexport const PasswordInput: FunctionComponent<PasswordInputProps> = ({ label, ...rest }) => {\n const { t } = useTranslation();\n const [isPasswordVisible, toggleShowPassword] = useToggle();\n\n const displayLabel = label ?? t('common:password');\n const icon = isPasswordVisible ? 'eye-off' : 'eye';\n const showA11yLabel = isPasswordVisible\n ? t('common:passwordInput.hidePassword')\n : t('common:passwordInput.showPassword');\n\n return (\n <TextInput\n label={displayLabel}\n secureTextEntry={!isPasswordVisible}\n right={<TextInput.Icon icon={icon} onPress={() => toggleShowPassword()} accessibilityLabel={showA11yLabel} />}\n {...rest}\n />\n );\n};\n","import {\n getRjsfDisplayLabel,\n getRjsfTextChangeValue,\n hasRjsfErrors,\n toStringOrEmpty,\n} from '@lichens-innovation/ts-common/rjsf';\nimport type { WidgetProps } from '@rjsf/utils';\nimport type { FunctionComponent } from 'react';\nimport { StyleSheet } from 'react-native';\nimport { PasswordInput } from '~/components/password-input/password-input';\nimport { useAppTheme } from '~/theme';\n\nexport const PasswordWidget: FunctionComponent<WidgetProps> = ({\n id,\n value,\n disabled,\n readonly,\n placeholder,\n onChange,\n onBlur,\n onFocus,\n label,\n hideLabel,\n required,\n rawErrors,\n options,\n}) => {\n const theme = useAppTheme();\n const styles = useStyles();\n const hasError = hasRjsfErrors(rawErrors);\n const displayLabel = getRjsfDisplayLabel({ label, required, hideLabel });\n\n const handleChangeText = (text: string) => {\n onChange(getRjsfTextChangeValue({ text, emptyValue: options?.emptyValue }));\n };\n\n return (\n <PasswordInput\n mode=\"outlined\"\n label={displayLabel}\n value={toStringOrEmpty(value)}\n placeholder={placeholder}\n disabled={disabled}\n editable={!readonly}\n onChangeText={handleChangeText}\n onBlur={() => onBlur(id, value)}\n onFocus={() => onFocus(id, value)}\n error={hasError}\n style={styles.input}\n outlineColor={theme.colors.outline}\n />\n );\n};\n\nconst useStyles = () => {\n const theme = useAppTheme();\n return StyleSheet.create({\n input: {\n marginVertical: theme.spacing(0.5),\n },\n });\n};\n","import type { EnumOptionDisplay } from '@lichens-innovation/ts-common/rjsf';\nimport { getRjsfDisplayLabel, mapEnumOptions, toStringOrEmpty } from '@lichens-innovation/ts-common/rjsf';\nimport type { WidgetProps } from '@rjsf/utils';\nimport type { FunctionComponent } from 'react';\nimport { StyleSheet, View } from 'react-native';\nimport { RadioButton } from 'react-native-paper';\nimport { useAppTheme } from '~/theme';\nimport { RjsfDisplayLabel } from './display-label';\n\nexport const RadioWidget: FunctionComponent<WidgetProps> = ({\n id,\n value,\n disabled,\n readonly,\n onChange,\n onBlur,\n label,\n hideLabel,\n required,\n options,\n}) => {\n const styles = useStyles();\n const displayLabel = getRjsfDisplayLabel({ label, required, hideLabel });\n const enumOptions = mapEnumOptions(options);\n const strValue = toStringOrEmpty(value);\n\n return (\n <View style={styles.widgetBlock}>\n <RjsfDisplayLabel label={displayLabel} style={styles.radioTitle} />\n <RadioButton.Group\n onValueChange={(v) => {\n onChange(v);\n onBlur(id, v);\n }}\n value={strValue}\n >\n {enumOptions.map((opt: EnumOptionDisplay) => (\n <RadioButton.Item\n key={opt.value}\n label={opt.label}\n value={opt.value}\n disabled={disabled || readonly}\n style={styles.radioItem}\n />\n ))}\n </RadioButton.Group>\n </View>\n );\n};\n\nconst useStyles = () => {\n const theme = useAppTheme();\n return StyleSheet.create({\n widgetBlock: {\n marginVertical: theme.spacing(0.5),\n },\n radioTitle: {\n marginBottom: theme.spacing(1),\n },\n radioItem: {\n marginVertical: theme.spacing(0.25),\n },\n });\n};\n","import { getRjsfDisplayLabel } from '@lichens-innovation/ts-common/rjsf';\nimport Slider from '@react-native-community/slider';\nimport type { WidgetProps } from '@rjsf/utils';\nimport type { FunctionComponent } from 'react';\nimport { StyleSheet, View } from 'react-native';\nimport { Text } from 'react-native-paper';\nimport { useAppTheme } from '~/theme';\nimport { RjsfDisplayLabel } from './display-label';\n\nexport const RangeWidget: FunctionComponent<WidgetProps> = ({\n id,\n value,\n disabled,\n readonly,\n onChange,\n onBlur,\n label,\n hideLabel,\n required,\n rawErrors: _rawErrors,\n schema,\n}) => {\n const theme = useAppTheme();\n const styles = useStyles();\n const displayLabel = getRjsfDisplayLabel({ label, required, hideLabel });\n const hasSchemaMin = typeof schema?.minimum === 'number';\n const min = hasSchemaMin ? schema.minimum : 0;\n const hasSchemaMax = typeof schema?.maximum === 'number';\n const max = hasSchemaMax ? schema.maximum : 100;\n const hasValidValue = typeof value === 'number' && !Number.isNaN(value);\n const numValue = (hasValidValue ? value : min) as number;\n const displayValue = Math.round(numValue);\n\n const handleSlidingComplete = (v: number) => {\n const intValue = Math.round(v);\n onChange(intValue);\n onBlur(id, intValue);\n };\n\n return (\n <View style={styles.widgetBlock}>\n <RjsfDisplayLabel label={displayLabel} style={styles.rangeLabel} />\n\n <View style={styles.rangeRow}>\n <Slider\n style={styles.slider}\n minimumValue={min}\n maximumValue={max}\n value={numValue}\n onSlidingComplete={handleSlidingComplete}\n minimumTrackTintColor={theme.colors.primary}\n maximumTrackTintColor={theme.colors.outline}\n disabled={disabled || readonly}\n />\n <Text variant=\"bodyMedium\" style={styles.rangeValue}>\n {displayValue}\n </Text>\n </View>\n </View>\n );\n};\n\nconst useStyles = () => {\n const theme = useAppTheme();\n return StyleSheet.create({\n widgetBlock: {\n marginVertical: theme.spacing(0.5),\n },\n rangeLabel: {\n marginBottom: theme.spacing(0.5),\n },\n rangeRow: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: theme.spacing(2),\n },\n slider: {\n flex: 1,\n height: 40,\n },\n rangeValue: {\n minWidth: 36,\n },\n });\n};\n","import { AppTheme } from '~/theme';\n\ninterface GetTextColorArgs {\n theme: AppTheme;\n isFocused: boolean;\n isDisabled: boolean;\n}\nexport const getTextColor = ({ theme, isFocused, isDisabled }: GetTextColorArgs) => {\n const { onSurfaceDisabled, primary, secondary } = theme.colors;\n\n if (isDisabled) {\n return onSurfaceDisabled;\n }\n\n if (isFocused) {\n return primary;\n }\n\n return secondary;\n};\n\ninterface GetLabelColorArgs {\n theme: AppTheme;\n isError: boolean;\n isDisabled: boolean;\n isFocusedAndEnabled: boolean;\n}\nexport const getLabelColor = ({ theme, isError, isDisabled, isFocusedAndEnabled }: GetLabelColorArgs) => {\n const { error, onSurfaceDisabled, primary, onSurface } = theme.colors;\n\n if (isError) {\n return error;\n }\n\n if (isDisabled) {\n return onSurfaceDisabled;\n }\n\n if (isFocusedAndEnabled) {\n return primary;\n }\n\n return onSurface;\n};\n\ninterface GetBorderColorArgs {\n theme: AppTheme;\n isError: boolean;\n isDisabled: boolean;\n isFocused: boolean;\n}\nexport const getBorderColor = ({ theme, isError, isDisabled, isFocused }: GetBorderColorArgs) => {\n const { error, surfaceDisabled, primary, outline } = theme.colors;\n\n if (isError) {\n return error;\n }\n\n if (isDisabled) {\n return surfaceDisabled;\n }\n\n if (isFocused) {\n return primary;\n }\n\n return outline;\n};\n","import { FunctionComponent } from 'react';\nimport { Icon } from 'react-native-paper';\n\nexport type DropDownSelectorLeftIconProps = {\n icon?: string;\n color: string;\n size?: number;\n};\n\nexport const DropDownSelectorLeftIcon: FunctionComponent<DropDownSelectorLeftIconProps> = ({\n icon,\n color,\n size = 20,\n}) => {\n if (!icon) {\n return null;\n }\n\n return <Icon source={icon} size={size} color={color} />;\n};\n","import { FunctionComponent } from 'react';\nimport { StyleSheet, View } from 'react-native';\nimport { Text } from 'react-native-paper';\nimport { useAppTheme } from '../../theme/theme';\nimport { SelectOption } from './drop-down-selector';\nimport { DropDownSelectorLeftIcon } from './drop-down-selector-left-icon';\n\nexport type DropDownSelectorItemProps = {\n item: SelectOption;\n selected?: boolean;\n textColor: string;\n};\n\nexport const DropDownSelectorItem: FunctionComponent<DropDownSelectorItemProps> = ({ item, selected, textColor }) => {\n const isSelected = selected === true;\n const styles = useStyles({ isSelected });\n\n return (\n <View style={styles.itemContainer}>\n {item.icon && <DropDownSelectorLeftIcon icon={item.icon} color={textColor} />}\n <Text style={{ color: textColor }}>{item.label}</Text>\n </View>\n );\n};\n\ntype UseStylesProps = {\n isSelected: boolean;\n};\n\nconst useStyles = ({ isSelected }: UseStylesProps) => {\n const theme = useAppTheme();\n\n return StyleSheet.create({\n itemContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingVertical: theme.spacing(1),\n paddingHorizontal: theme.spacing(1),\n gap: theme.spacing(1),\n backgroundColor: isSelected ? theme.colors.surfaceVariant : theme.colors.surface,\n },\n });\n};\n","import { FunctionComponent, useState } from 'react';\nimport { StyleSheet, View } from 'react-native';\nimport { Dropdown } from 'react-native-element-dropdown';\nimport { Text } from 'react-native-paper';\nimport { useAppTheme } from '../../theme/theme';\nimport { getBorderColor, getLabelColor, getTextColor } from './drop-down-selector.utils';\nimport { DropDownSelectorItem } from './drop-down-selector-item';\nimport { DropDownSelectorLeftIcon } from './drop-down-selector-left-icon';\n\nexport interface SelectOption {\n label: string;\n value: string;\n icon?: string;\n}\n\nexport type DropDownSelectorProps = {\n label?: string;\n value?: string;\n onChange: (code: string) => void;\n isError?: boolean;\n options: SelectOption[];\n placeholder?: string;\n searchPlaceholder?: string;\n disabled?: boolean;\n};\n\nexport const DropDownSelector: FunctionComponent<DropDownSelectorProps> = ({\n label,\n value,\n onChange,\n isError,\n options,\n placeholder,\n searchPlaceholder,\n disabled,\n}) => {\n const [isFocused, setIsFocused] = useState(false);\n const hasLabel = !!label;\n const theme = useAppTheme();\n const isDisabled = disabled === true;\n const textColor = getTextColor({ theme, isFocused, isDisabled });\n const styles = useStyles({ isFocused, disabled, isError, textColor });\n\n const selectedItem = options.find((option) => option.value === value);\n\n return (\n <View>\n {hasLabel && (\n <Text variant=\"bodySmall\" style={styles.dropdownTitle}>\n {label}\n </Text>\n )}\n\n <Dropdown\n style={styles.dropdown}\n autoScroll={false} // @see https://github.com/hoaphantn7604/react-native-element-dropdown/issues/345\n placeholderStyle={styles.placeholderStyle}\n selectedTextStyle={styles.selectedTextStyle}\n data={options}\n search={false}\n searchPlaceholder={searchPlaceholder}\n maxHeight={300}\n labelField=\"label\"\n valueField=\"value\"\n placeholder={isFocused ? '' : placeholder}\n value={value}\n disable={disabled}\n onFocus={() => setIsFocused(true)}\n onBlur={() => setIsFocused(false)}\n onChange={({ value }) => {\n onChange(value);\n setIsFocused(false);\n }}\n renderItem={(item: SelectOption, selected?: boolean) => (\n <DropDownSelectorItem item={item} selected={selected} textColor={textColor} />\n )}\n renderLeftIcon={() => <DropDownSelectorLeftIcon icon={selectedItem?.icon} color={textColor} />}\n />\n </View>\n );\n};\n\ntype UseStylesProps = {\n isFocused: boolean;\n disabled?: boolean;\n isError?: boolean;\n textColor: string;\n};\n\nconst useStyles = ({ isFocused, disabled, isError, textColor }: UseStylesProps) => {\n const theme = useAppTheme();\n const { surface, surfaceDisabled } = theme.colors;\n\n const isDisabled = disabled === true;\n const isFocusedAndEnabled = isFocused && !isDisabled;\n\n // Priority: error > disabled > focus > normal\n const labelColor = getLabelColor({ theme, isError: !!isError, isDisabled, isFocusedAndEnabled });\n const borderColor = getBorderColor({ theme, isError: !!isError, isDisabled, isFocused });\n const borderWidth = isFocusedAndEnabled ? 2 : 1;\n\n const backgroundColor = isDisabled ? surfaceDisabled : 'transparent';\n\n return StyleSheet.create({\n dropdownTitle: {\n position: 'absolute',\n top: -theme.spacing(1),\n left: theme.spacing(1),\n backgroundColor: surface,\n paddingHorizontal: theme.spacing(0.75),\n color: labelColor,\n zIndex: 1,\n },\n dropdown: {\n height: 50,\n borderColor,\n borderWidth,\n borderRadius: theme.roundness,\n paddingHorizontal: theme.spacing(1),\n backgroundColor,\n },\n placeholderStyle: {\n color: textColor,\n },\n selectedTextStyle: {\n color: textColor,\n paddingLeft: theme.spacing(1),\n },\n });\n};\n","import {\n getRjsfDisplayLabel,\n hasRjsfErrors,\n mapEnumOptions,\n toStringOrUndefined,\n} from '@lichens-innovation/ts-common/rjsf';\nimport type { WidgetProps } from '@rjsf/utils';\nimport type { FunctionComponent } from 'react';\nimport { StyleSheet, View } from 'react-native';\nimport { DropDownSelector } from '~/components/drop-down-selector/drop-down-selector';\nimport { useAppTheme } from '~/theme';\n\nexport const SelectWidget: FunctionComponent<WidgetProps> = ({\n id,\n value,\n disabled,\n placeholder,\n onChange,\n onBlur,\n label,\n hideLabel,\n required,\n rawErrors,\n options,\n}) => {\n const styles = useStyles();\n const hasError = hasRjsfErrors(rawErrors);\n const displayLabel = getRjsfDisplayLabel({ label, required, hideLabel });\n const selectOptions = mapEnumOptions(options);\n const strValue = toStringOrUndefined(value);\n\n const handleChange = (code: string) => {\n onChange(code);\n onBlur(id, code);\n };\n\n return (\n <View style={styles.widgetBlock}>\n <DropDownSelector\n label={displayLabel}\n value={strValue}\n onChange={handleChange}\n options={selectOptions}\n placeholder={placeholder}\n disabled={disabled}\n isError={hasError}\n />\n </View>\n );\n};\n\nconst useStyles = () => {\n const theme = useAppTheme();\n return StyleSheet.create({\n widgetBlock: {\n marginVertical: theme.spacing(0.5),\n },\n });\n};\n","import {\n getRjsfDisplayLabel,\n getRjsfTextChangeValue,\n hasRjsfErrors,\n toStringOrEmpty,\n} from '@lichens-innovation/ts-common/rjsf';\nimport type { WidgetProps } from '@rjsf/utils';\nimport type { FunctionComponent } from 'react';\nimport { StyleSheet } from 'react-native';\nimport { TextInput } from 'react-native-paper';\nimport { useAppTheme } from '~/theme';\n\nexport const TextWidget: FunctionComponent<WidgetProps> = ({\n id,\n value,\n disabled,\n readonly,\n placeholder,\n onChange,\n onBlur,\n onFocus,\n label,\n hideLabel,\n required,\n rawErrors,\n options,\n}) => {\n const theme = useAppTheme();\n const styles = useStyles();\n const hasError = hasRjsfErrors(rawErrors);\n const displayLabel = getRjsfDisplayLabel({ label, required, hideLabel });\n\n const handleChangeText = (text: string) => {\n onChange(getRjsfTextChangeValue({ text, emptyValue: options?.emptyValue }));\n };\n\n return (\n <TextInput\n mode=\"outlined\"\n label={displayLabel}\n value={toStringOrEmpty(value)}\n placeholder={placeholder}\n disabled={disabled}\n editable={!readonly}\n onChangeText={handleChangeText}\n onBlur={() => onBlur(id, value)}\n onFocus={() => onFocus(id, value)}\n error={hasError}\n style={styles.input}\n outlineColor={theme.colors.outline}\n />\n );\n};\n\nconst useStyles = () => {\n const theme = useAppTheme();\n return StyleSheet.create({\n input: {\n marginVertical: theme.spacing(0.5),\n },\n });\n};\n","import {\n getRjsfDisplayLabel,\n getRjsfTextChangeValue,\n hasRjsfErrors,\n toStringOrEmpty,\n} from '@lichens-innovation/ts-common/rjsf';\nimport type { WidgetProps } from '@rjsf/utils';\nimport type { FunctionComponent } from 'react';\nimport { StyleSheet } from 'react-native';\nimport { TextInput } from 'react-native-paper';\nimport { useAppTheme } from '~/theme';\n\nexport const TextareaWidget: FunctionComponent<WidgetProps> = ({\n id,\n value,\n disabled,\n readonly,\n placeholder,\n onChange,\n onBlur,\n onFocus,\n label,\n hideLabel,\n required,\n rawErrors,\n options,\n}) => {\n const theme = useAppTheme();\n const styles = useStyles();\n const hasError = hasRjsfErrors(rawErrors);\n const displayLabel = getRjsfDisplayLabel({ label, required, hideLabel });\n const numberOfLines = options?.numberOfLines ?? 4;\n\n const handleChangeText = (text: string) => {\n onChange(getRjsfTextChangeValue({ text, emptyValue: options?.emptyValue }));\n };\n\n return (\n <TextInput\n mode=\"outlined\"\n label={displayLabel}\n value={toStringOrEmpty(value)}\n placeholder={placeholder}\n disabled={disabled}\n editable={!readonly}\n multiline\n numberOfLines={numberOfLines}\n onChangeText={handleChangeText}\n onBlur={() => onBlur(id, value)}\n onFocus={() => onFocus(id, value)}\n error={hasError}\n style={[styles.input, styles.textarea]}\n outlineColor={theme.colors.outline}\n />\n );\n};\n\nconst useStyles = () => {\n const theme = useAppTheme();\n return StyleSheet.create({\n input: {\n marginVertical: theme.spacing(0.5),\n },\n textarea: {\n minHeight: 100,\n },\n });\n};\n","import type { ThemeProps } from '@rjsf/core';\nimport { RjsfPaperFormWrapper } from './form-submit-context';\nimport {\n CheckboxWidget,\n CheckboxesWidget,\n DateTimeWidget,\n DateWidget,\n HiddenWidget,\n NumberWidget,\n PasswordWidget,\n RadioWidget,\n RangeWidget,\n SelectWidget,\n TextWidget,\n TextareaWidget,\n} from './widgets';\n\nexport const RJSF_PAPER_THEME: ThemeProps = {\n widgets: {\n TextWidget,\n TextareaWidget,\n HiddenWidget,\n password: PasswordWidget,\n PasswordWidget,\n date: DateWidget,\n DateWidget,\n datetime: DateTimeWidget,\n DateTimeWidget,\n select: SelectWidget,\n SelectWidget,\n radio: RadioWidget,\n RadioWidget,\n range: RangeWidget,\n RangeWidget,\n number: NumberWidget,\n updown: NumberWidget,\n NumberWidget,\n UpDownWidget: NumberWidget,\n checkbox: CheckboxWidget,\n CheckboxWidget,\n checkboxes: CheckboxesWidget,\n CheckboxesWidget,\n },\n // Form passes onSubmit, children, className, etc. Our wrapper accepts View props + onSubmit.\n _internalFormWrapper: RjsfPaperFormWrapper as ThemeProps['_internalFormWrapper'],\n};\n","import { translateRjsfString, useRjsfValidator } from '@lichens-innovation/ts-common/rjsf';\nimport type { FormProps, IChangeEvent } from '@rjsf/core';\nimport { withTheme } from '@rjsf/core';\nimport type { RJSFSchema } from '@rjsf/utils';\nimport type { FunctionComponent } from 'react';\nimport { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { PAPER_TEMPLATES } from './rjsf-paper-templates';\nimport { RJSF_PAPER_THEME } from './rjsf-paper-theme';\n\nconst ThemedForm = withTheme(RJSF_PAPER_THEME);\n\ntype FormTemplates = FormProps<FormData, RJSFSchema>['templates'];\n\nexport type FormData = Record<string, unknown>;\n\nexport type RjsfPaperRendererProps = Omit<FormProps<FormData, RJSFSchema>, 'validator'>;\n\nexport const RjsfPaperRenderer: FunctionComponent<RjsfPaperRendererProps> = ({\n formData: formDataProp,\n onChange: onChangeProp,\n uiSchema = {},\n ...rest\n}) => {\n const { i18n } = useTranslation();\n const customValidator = useRjsfValidator();\n const [localFormData, setLocalFormData] = useState<FormData | undefined>(formDataProp);\n\n useEffect(() => {\n setLocalFormData(formDataProp);\n }, [formDataProp]);\n\n const handleChange = (data: IChangeEvent<FormData, RJSFSchema>, id?: string) => {\n setLocalFormData(data.formData);\n onChangeProp?.(data, id);\n };\n\n return (\n <ThemedForm\n {...rest}\n key={i18n.language}\n formData={localFormData}\n onChange={handleChange}\n templates={PAPER_TEMPLATES as unknown as FormTemplates}\n validator={customValidator}\n translateString={(stringToTranslate, params) => translateRjsfString({ stringToTranslate, params, i18n })}\n uiSchema={uiSchema}\n />\n );\n};\n"]}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"description": "Lichens Innovation React Native Expo shared components, utilities, hooks and services",
|
|
4
4
|
"repository": "https://github.com/Lichens-Innovation/react-native-common",
|
|
5
5
|
"author": "Lichens Innovation",
|
|
6
|
-
"version": "3.11.
|
|
6
|
+
"version": "3.11.5",
|
|
7
7
|
"private": false,
|
|
8
8
|
"main": "dist/index.js",
|
|
9
9
|
"types": "dist/index.d.ts",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
41
|
"@legendapp/list": "^2.0.9",
|
|
42
|
-
"@lichens-innovation/ts-common": "^1.15.
|
|
42
|
+
"@lichens-innovation/ts-common": "^1.15.3",
|
|
43
43
|
"@noble/hashes": "^2.0.1",
|
|
44
44
|
"@uidotdev/usehooks": "^2.4.1",
|
|
45
45
|
"buffer": "^6.0.3",
|