From 95d70c1adb3863f024c91310d704fe3e95796120 Mon Sep 17 00:00:00 2001 From: ujjjwal2608 Date: Mon, 30 Dec 2024 11:58:52 +0530 Subject: [PATCH 01/20] feat: basic component setup index file --- .../nativewind/time-input/index.tsx | 263 ++++++++++++++++++ 1 file changed, 263 insertions(+) create mode 100644 example/storybook-nativewind/src/core-components/nativewind/time-input/index.tsx diff --git a/example/storybook-nativewind/src/core-components/nativewind/time-input/index.tsx b/example/storybook-nativewind/src/core-components/nativewind/time-input/index.tsx new file mode 100644 index 0000000000..2ba7688eec --- /dev/null +++ b/example/storybook-nativewind/src/core-components/nativewind/time-input/index.tsx @@ -0,0 +1,263 @@ +'use client'; +import React from 'react'; +import { createTimeInput } from './creator'; +import { View, Pressable, TextInput, Text } from 'react-native'; +import { tva } from '@gluestack-ui/nativewind-utils/tva'; +import { cssInterop } from 'nativewind'; +import { + withStyleContext, + useStyleContext, +} from '@gluestack-ui/nativewind-utils/withStyleContext'; +import type { VariantProps } from '@gluestack-ui/nativewind-utils'; + +const SCOPE = 'TIMEINPUT'; + +const UITimeInput = createTimeInput({ + Root: withStyleContext(View, SCOPE), + TimeInputHr: TextInput, + TimeInputMin: TextInput, + TimeInputSec: TextInput, + TimeInputMeridiem: Pressable, + TimeInputMeridiemText: Text, +}); + +cssInterop(UITimeInput, { + className: { + target: 'style', // map className->style + }, +}); + +const timeInputStyle = tva({ + base: 'flex flex-row items-center justify-between', + variants: { + size: { + xl: 'h-12 gap-2', + lg: 'h-11 gap-2', + md: 'h-11 w-8 gap-2', + sm: 'h-9 w-6 gap-2', + }, + variant: { + underlined: '', + outlined: '', + rounded: '', + }, + }, +}); +const timeInputFieldStyle = tva({ + base: 'border-background-300 flex-row overflow-hidden data-[focus=true]:bg-red-400 content-center data-[hover=true]:border-outline-400 data-[focus=true]:border-primary-700 data-[focus=true]:data-[hover=true]:border-primary-700 data-[disabled=true]:opacity-40 data-[disabled=true]:data-[hover=true]:border-background-300 items-center w-12 text-center placeholder:text-typography-500', + + parentVariants: { + size: { + xl: 'text-xl h-12', + lg: 'text-lg h-11', + md: 'text-base h-10', + sm: 'text-sm h-9', + }, + + variant: { + underlined: + 'data-[hover=true]:border-red-400 rounded-none border-b data-[invalid=true]:border-b-2 data-[invalid=true]:border-error-700 data-[invalid=true]:data-[hover=true]:border-error-700 data-[invalid=true]:data-[focus=true]:border-error-700 data-[invalid=true]:data-[focus=true]:data-[hover=true]:border-error-700 data-[invalid=true]:data-[disabled=true]:hover:border-error-700', + + outline: + 'rounded border data-[invalid=true]:border-error-700 data-[invalid=true]:hover:border-error-700 data-[invalid=true]:data-[focus=true]:border-error-700 data-[invalid=true]:data-[focus=true]:hover:border-error-700 data-[invalid=true]:data-[disabled=true]:hover:border-error-700 data-[focus=true]:web:ring-1 data-[focus=true]:web:ring-inset data-[focus=true]:web:ring-indicator-primary data-[invalid=true]:web:ring-1 data-[invalid=true]:web:ring-inset data-[invalid=true]:web:ring-indicator-error data-[invalid=true]:data-[focus=true]:hover:web:ring-1 data-[invalid=true]:data-[focus=true]:hover:web:ring-inset data-[invalid=true]:data-[focus=true]:hover:web:ring-indicator-error data-[invalid=true]:data-[disabled=true]:hover:web:ring-1 data-[invalid=true]:data-[disabled=true]:hover:web:ring-inset data-[invalid=true]:data-[disabled=true]:hover:web:ring-indicator-error', + + rounded: + 'rounded-full border data-[invalid=true]:border-error-700 data-[invalid=true]:data-[hover=true]:border-error-700 data-[invalid=true]:data-[focus=true]:border-error-700 data-[invalid=true]:data-[focus=true]:data-[hover=true]:border-error-700 data-[invalid=true]:data-[disabled=true]:data-[hover=true]:border-error-700 data-[focus=true]:web:ring-1 data-[focus=true]:web:ring-inset data-[focus=true]:web:ring-indicator-primary data-[invalid=true]:web:ring-1 data-[invalid=true]:web:ring-inset data-[invalid=true]:web:ring-indicator-error data-[invalid=true]:data-[focus=true]:data-[hover=true]:web:ring-1 data-[invalid=true]:data-[focus=true]:data-[hover=true]:web:ring-inset data-[invalid=true]:data-[focus=true]:data-[hover=true]:web:ring-indicator-error data-[invalid=true]:data-[disabled=true]:data-[hover=true]:web:ring-1 data-[invalid=true]:data-[disabled=true]:data-[hover=true]:web:ring-inset data-[invalid=true]:data-[disabled=true]:data-[hover=true]:web:ring-indicator-error', + }, + }, +}); + +const timeInputMeridiemTextStyle = tva({ + base: 'text-typography-0 font-semibold web:select-none data-[active=true]:border data-[active=true]:border-red-500', + parentVariants: { + variant: { + underlined: '', + + outline: '', + + rounded: '', + }, + size: { + xs: 'text-xs', + sm: 'text-sm', + md: 'text-base', + lg: 'text-lg', + xl: 'text-xl', + }, + }, +}); + +const timeInputMeridiemStyle = tva({ + base: 'group/button rounded bg-primary-500 flex-row items-center justify-center data-[focus-visible=true]:web:outline-none data-[focus-visible=true]:web:ring-2 data-[disabled=true]:opacity-40 gap-2', + parentVariants: { + variant: { + underlined: '', + + outline: '', + + rounded: 'rounded-full', + }, + size: { + xl: 'h-12 w-12', + lg: 'h-11 w-11', + md: 'h-10 w-10', + sm: 'h-9 w-9', + }, + }, +}); + +type ITimeInputProps = React.ComponentProps & + VariantProps & { className?: string }; +const TimeInput = React.forwardRef< + React.ElementRef, + ITimeInputProps +>(({ className, variant = 'outlined', size = 'md', ...props }, ref) => { + return ( + + ); +}); + +type ITimeInputFieldHrProps = React.ComponentProps & + VariantProps & { className?: string }; + +const TimeInputHr = React.forwardRef< + React.ElementRef, + ITimeInputFieldHrProps +>(({ className, ...props }, ref) => { + const { variant: parentVariant, size: parentSize } = useStyleContext(SCOPE); + + return ( + + ); +}); + +type ITimeInputFieldMinProps = React.ComponentProps & + VariantProps & { className?: string }; + +const TimeInputMin = React.forwardRef< + React.ElementRef, + ITimeInputFieldMinProps +>(({ className, ...props }, ref) => { + const { variant: parentVariant, size: parentSize } = useStyleContext(SCOPE); + + return ( + + ); +}); + +type ITimeInputFieldSecProps = React.ComponentProps & + VariantProps & { className?: string }; + +const TimeInputSec = React.forwardRef< + React.ElementRef, + ITimeInputFieldSecProps +>(({ className, ...props }, ref) => { + const { variant: parentVariant, size: parentSize } = useStyleContext(SCOPE); + + return ( + + ); +}); + +type ITimeInputFieldMeridiemProps = React.ComponentProps< + typeof UITimeInput.Meridiem +> & + VariantProps & { className?: string }; + +const TimeInputMeridiem = React.forwardRef< + React.ElementRef, + ITimeInputFieldMeridiemProps +>(({ className, ...props }, ref) => { + const { variant: parentVariant, size: parentSize } = useStyleContext(SCOPE); + + return ( + + ); +}); + +type ITimeInputFieldMeridiemTextProps = React.ComponentProps< + typeof UITimeInput.MeridiemText +> & + VariantProps & { className?: string }; + +const TimeInputMeridiemText = React.forwardRef< + React.ElementRef, + ITimeInputFieldMeridiemTextProps +>(({ className, ...props }, ref) => { + const { variant: parentVariant, size: parentSize } = useStyleContext(SCOPE); + + return ( + + ); +}); + +TimeInput.displayName = 'TimeInput'; +TimeInputHr.displayName = 'TimeInputHr'; +TimeInputMin.displayName = 'TimeInputMin'; +TimeInputSec.displayName = 'TimeInputSec'; +TimeInputMeridiem.displayName = 'TimeInputMeridiem'; +TimeInputMeridiemText.displayName = 'TimeInputMeridiemText'; + +export { + TimeInput, + TimeInputHr, + TimeInputMin, + TimeInputSec, + TimeInputMeridiem, + TimeInputMeridiemText, +}; From 7db77049a7bd83d7cac6e088fbe1722ae43c8274 Mon Sep 17 00:00:00 2001 From: ujjjwal2608 Date: Mon, 30 Dec 2024 19:58:58 +0530 Subject: [PATCH 02/20] feat: basic input component setup --- example/storybook-nativewind/babel.config.js | 4 + .../TimeInput/TimeInput.stories.tsx | 18 ++ .../src/components/TimeInput/TimeInput.tsx | 40 ++++ .../nativewind/time-input/index.tsx | 22 +-- example/storybook-nativewind/tsconfig.json | 2 +- .../time-input/src/TimeInputContext.tsx | 29 +++ .../time-input/src/TimeInputGroup.tsx | 175 ++++++++++++++++++ .../unstyled/time-input/src/TimeInputHr.tsx | 129 +++++++++++++ .../time-input/src/TimeInputMeridiem.tsx | 104 +++++++++++ .../time-input/src/TimeInputMeridiemText.tsx | 40 ++++ .../unstyled/time-input/src/TimeInputMin.tsx | 121 ++++++++++++ .../unstyled/time-input/src/TimeInputSec.tsx | 123 ++++++++++++ packages/unstyled/time-input/src/index.tsx | 52 ++++++ packages/unstyled/time-input/src/types.ts | 76 ++++++++ 14 files changed, 921 insertions(+), 14 deletions(-) create mode 100644 example/storybook-nativewind/src/components/TimeInput/TimeInput.stories.tsx create mode 100644 example/storybook-nativewind/src/components/TimeInput/TimeInput.tsx create mode 100644 packages/unstyled/time-input/src/TimeInputContext.tsx create mode 100644 packages/unstyled/time-input/src/TimeInputGroup.tsx create mode 100644 packages/unstyled/time-input/src/TimeInputHr.tsx create mode 100644 packages/unstyled/time-input/src/TimeInputMeridiem.tsx create mode 100644 packages/unstyled/time-input/src/TimeInputMeridiemText.tsx create mode 100644 packages/unstyled/time-input/src/TimeInputMin.tsx create mode 100644 packages/unstyled/time-input/src/TimeInputSec.tsx create mode 100644 packages/unstyled/time-input/src/index.tsx create mode 100644 packages/unstyled/time-input/src/types.ts diff --git a/example/storybook-nativewind/babel.config.js b/example/storybook-nativewind/babel.config.js index f926844845..730c58e350 100644 --- a/example/storybook-nativewind/babel.config.js +++ b/example/storybook-nativewind/babel.config.js @@ -34,6 +34,10 @@ module.exports = function (api) { __dirname, '../../packages/unstyled/input/src' ), + '@gluestack-ui/time-input': path.resolve( + __dirname, + '../../packages/unstyled/time-input/src' + ), '@gluestack-ui/tooltip': path.resolve( __dirname, '../../packages/unstyled/tooltip/src' diff --git a/example/storybook-nativewind/src/components/TimeInput/TimeInput.stories.tsx b/example/storybook-nativewind/src/components/TimeInput/TimeInput.stories.tsx new file mode 100644 index 0000000000..3bac82c106 --- /dev/null +++ b/example/storybook-nativewind/src/components/TimeInput/TimeInput.stories.tsx @@ -0,0 +1,18 @@ +import type { ComponentMeta } from '@storybook/react-native'; +import TimeInput from './TimeInput'; + +const TimeInputMeta: ComponentMeta = { + title: 'stories/TimeInput', + component: TimeInput, + // metaInfo is required for figma generation + // @ts-ignore + metaInfo: { + componentDescription: `The TimeInput component is designed to accommodate larger amounts of text input. It allows multi-line input and can be easily customized to fit the user's needs.`, + }, + argTypes: {}, + args: {}, +}; + +export default TimeInputMeta; + +export { TimeInput }; diff --git a/example/storybook-nativewind/src/components/TimeInput/TimeInput.tsx b/example/storybook-nativewind/src/components/TimeInput/TimeInput.tsx new file mode 100644 index 0000000000..0d453de476 --- /dev/null +++ b/example/storybook-nativewind/src/components/TimeInput/TimeInput.tsx @@ -0,0 +1,40 @@ +import React, { useState } from 'react'; +import { + TimeInput, + TimeInputHr, + TimeInputMin, + TimeInputSec, + TimeInputMeridiem, + TimeInputMeridiemText, +} from '@/components/ui/time-input'; + +const TimeInputBasic = ({ ...props }: any) => { + const [timeValue, setTimeValue] = useState(null); + + return ( + <> + + + + + + + + + + + ); +}; + +TimeInputBasic.description = + 'This is a basic TimeInput component example. TimeInputs are used to get time input from the user.'; + +export default TimeInputBasic; +export { TimeInput }; diff --git a/example/storybook-nativewind/src/core-components/nativewind/time-input/index.tsx b/example/storybook-nativewind/src/core-components/nativewind/time-input/index.tsx index 2ba7688eec..e0620e4337 100644 --- a/example/storybook-nativewind/src/core-components/nativewind/time-input/index.tsx +++ b/example/storybook-nativewind/src/core-components/nativewind/time-input/index.tsx @@ -1,6 +1,6 @@ 'use client'; import React from 'react'; -import { createTimeInput } from './creator'; +import { createTimeInput } from '@gluestack-ui/time-input'; import { View, Pressable, TextInput, Text } from 'react-native'; import { tva } from '@gluestack-ui/nativewind-utils/tva'; import { cssInterop } from 'nativewind'; @@ -44,7 +44,7 @@ const timeInputStyle = tva({ }, }); const timeInputFieldStyle = tva({ - base: 'border-background-300 flex-row overflow-hidden data-[focus=true]:bg-red-400 content-center data-[hover=true]:border-outline-400 data-[focus=true]:border-primary-700 data-[focus=true]:data-[hover=true]:border-primary-700 data-[disabled=true]:opacity-40 data-[disabled=true]:data-[hover=true]:border-background-300 items-center w-12 text-center placeholder:text-typography-500', + base: 'border-background-300 flex-row overflow-hidden content-center data-[hover=true]:border-outline-400 data-[focus=true]:border-primary-700 data-[focus=true]:data-[hover=true]:border-primary-700 data-[disabled=true]:opacity-40 data-[disabled=true]:data-[hover=true]:border-background-300 items-center w-12 text-center placeholder:text-typography-500', parentVariants: { size: { @@ -56,10 +56,10 @@ const timeInputFieldStyle = tva({ variant: { underlined: - 'data-[hover=true]:border-red-400 rounded-none border-b data-[invalid=true]:border-b-2 data-[invalid=true]:border-error-700 data-[invalid=true]:data-[hover=true]:border-error-700 data-[invalid=true]:data-[focus=true]:border-error-700 data-[invalid=true]:data-[focus=true]:data-[hover=true]:border-error-700 data-[invalid=true]:data-[disabled=true]:hover:border-error-700', + 'rounded-none border-b data-[invalid=true]:border-b-2 data-[invalid=true]:border-error-700 data-[invalid=true]:data-[hover=true]:border-error-700 data-[invalid=true]:data-[focus=true]:border-error-700 data-[invalid=true]:data-[focus=true]:data-[hover=true]:border-error-700 data-[invalid=true]:data-[disabled=true]:data-[hover=true]:border-error-700', - outline: - 'rounded border data-[invalid=true]:border-error-700 data-[invalid=true]:hover:border-error-700 data-[invalid=true]:data-[focus=true]:border-error-700 data-[invalid=true]:data-[focus=true]:hover:border-error-700 data-[invalid=true]:data-[disabled=true]:hover:border-error-700 data-[focus=true]:web:ring-1 data-[focus=true]:web:ring-inset data-[focus=true]:web:ring-indicator-primary data-[invalid=true]:web:ring-1 data-[invalid=true]:web:ring-inset data-[invalid=true]:web:ring-indicator-error data-[invalid=true]:data-[focus=true]:hover:web:ring-1 data-[invalid=true]:data-[focus=true]:hover:web:ring-inset data-[invalid=true]:data-[focus=true]:hover:web:ring-indicator-error data-[invalid=true]:data-[disabled=true]:hover:web:ring-1 data-[invalid=true]:data-[disabled=true]:hover:web:ring-inset data-[invalid=true]:data-[disabled=true]:hover:web:ring-indicator-error', + outlined: + 'rounded border data-[invalid=true]:border-error-700 data-[invalid=true]:data-[hover=true]:border-error-700 data-[invalid=true]:data-[focus=true]:border-error-700 data-[invalid=true]:data-[focus=true]:data-[hover=true]:border-error-700 data-[invalid=true]:data-[disabled=true]:data-[hover=true]:border-error-700 data-[focus=true]:web:ring-1 data-[focus=true]:web:ring-inset data-[focus=true]:web:ring-indicator-primary data-[invalid=true]:web:ring-1 data-[invalid=true]:web:ring-inset data-[invalid=true]:web:ring-indicator-error data-[invalid=true]:data-[focus=true]:data-[hover=true]:web:ring-1 data-[invalid=true]:data-[focus=true]:data-[hover=true]:web:ring-inset data-[invalid=true]:data-[focus=true]:data-[hover=true]:web:ring-indicator-error data-[invalid=true]:data-[disabled=true]:data-[hover=true]:web:ring-1 data-[invalid=true]:data-[disabled=true]:data-[hover=true]:web:ring-inset data-[invalid=true]:data-[disabled=true]:data-[hover=true]:web:ring-indicator-error', rounded: 'rounded-full border data-[invalid=true]:border-error-700 data-[invalid=true]:data-[hover=true]:border-error-700 data-[invalid=true]:data-[focus=true]:border-error-700 data-[invalid=true]:data-[focus=true]:data-[hover=true]:border-error-700 data-[invalid=true]:data-[disabled=true]:data-[hover=true]:border-error-700 data-[focus=true]:web:ring-1 data-[focus=true]:web:ring-inset data-[focus=true]:web:ring-indicator-primary data-[invalid=true]:web:ring-1 data-[invalid=true]:web:ring-inset data-[invalid=true]:web:ring-indicator-error data-[invalid=true]:data-[focus=true]:data-[hover=true]:web:ring-1 data-[invalid=true]:data-[focus=true]:data-[hover=true]:web:ring-inset data-[invalid=true]:data-[focus=true]:data-[hover=true]:web:ring-indicator-error data-[invalid=true]:data-[disabled=true]:data-[hover=true]:web:ring-1 data-[invalid=true]:data-[disabled=true]:data-[hover=true]:web:ring-inset data-[invalid=true]:data-[disabled=true]:data-[hover=true]:web:ring-indicator-error', @@ -68,13 +68,11 @@ const timeInputFieldStyle = tva({ }); const timeInputMeridiemTextStyle = tva({ - base: 'text-typography-0 font-semibold web:select-none data-[active=true]:border data-[active=true]:border-red-500', + base: 'text-typography-0 font-semibold web:select-none data-[invalid=true]:text-error-400 data-[active=true]:text-error-500', parentVariants: { variant: { underlined: '', - - outline: '', - + outlined: '', rounded: '', }, size: { @@ -88,13 +86,11 @@ const timeInputMeridiemTextStyle = tva({ }); const timeInputMeridiemStyle = tva({ - base: 'group/button rounded bg-primary-500 flex-row items-center justify-center data-[focus-visible=true]:web:outline-none data-[focus-visible=true]:web:ring-2 data-[disabled=true]:opacity-40 gap-2', + base: 'rounded bg-primary-500 flex-row items-center justify-center data-[focus-visible=true]:web:outline-none data-[focus-visible=true]:web:ring-2 data-[disabled=true]:opacity-40 gap-2', parentVariants: { variant: { underlined: '', - - outline: '', - + outlined: '', rounded: 'rounded-full', }, size: { diff --git a/example/storybook-nativewind/tsconfig.json b/example/storybook-nativewind/tsconfig.json index 798a40bd4f..4e38a11e8c 100644 --- a/example/storybook-nativewind/tsconfig.json +++ b/example/storybook-nativewind/tsconfig.json @@ -12,12 +12,12 @@ "@gluestack-ui/button": ["../../packages/unstyled/button/src"], "@gluestack-ui/toast": ["../../packages/unstyled/toast/src"], "@gluestack-ui/alert": ["../../packages/unstyled/alert/src"], + "@gluestack-ui/time-input": ["../../packages/unstyled/time-input/src"], "@gluestack-ui/input": ["../../packages/unstyled/input/src"], "@gluestack-ui/checkbox": ["../../packages/unstyled/checkbox/src"], "@gluestack-ui/form-control": [ "../../packages/unstyled/form-control/src" ], - "@/components/ui/utils/*": ["src/core-components/hooks/*"], "@gluestack-ui/modal": ["../../packages/unstyled/modal/src"], "@gluestack-ui/radio": ["../../packages/unstyled/radio/src"], "@gluestack-ui/accordion": ["../../packages/unstyled/accordion/src"], diff --git a/packages/unstyled/time-input/src/TimeInputContext.tsx b/packages/unstyled/time-input/src/TimeInputContext.tsx new file mode 100644 index 0000000000..27ce05bf0a --- /dev/null +++ b/packages/unstyled/time-input/src/TimeInputContext.tsx @@ -0,0 +1,29 @@ +import { createContext } from '@gluestack-ui/utils'; + +interface TimeInputContext { + isDisabled?: boolean; + isInvalid?: boolean; + isFocused?: boolean; + isFocusVisible?: boolean; + isReadOnly?: boolean; + isRequired?: boolean; + timeInputRef?: any; + handleFocus?: (focusState: boolean, callback: any) => void; + setIsFocused?: React.Dispatch>; + timeInputFieldRef?: any; + timeValue: string; + setTimeValue: React.Dispatch>; + updateHours: (hours: string) => void; + updateMinutes: (minutes: string) => void; + updateSeconds: (seconds: string) => void; + updateMeridiem: (meridiem: string) => void; + format: number; + meridiemHovered: boolean; + setMeridiemHovered: (meridiemHovered: boolean) => void; + meridiemPressed: boolean; + setMeridiemPressed: (meridiemPressed: boolean) => void; + meridiemValue: string; +} + +export const [TimeInputProvider, useTimeInput] = + createContext('TimeInputContext'); diff --git a/packages/unstyled/time-input/src/TimeInputGroup.tsx b/packages/unstyled/time-input/src/TimeInputGroup.tsx new file mode 100644 index 0000000000..8c542f84ca --- /dev/null +++ b/packages/unstyled/time-input/src/TimeInputGroup.tsx @@ -0,0 +1,175 @@ +import React, { forwardRef, useState } from 'react'; +import { TimeInputProvider } from './TimeInputContext'; +import { useFormControlContext } from '@gluestack-ui/form-control'; +import { mergeRefs } from '@gluestack-ui/utils'; + +export const TimeInputGroup = (StyledTimeInputRoot: any) => + forwardRef( + ( + { + children, + isReadOnly, + isDisabled, + isInvalid, + isRequired, + isFocused: isFocusedProp, + isFocusVisible: isFocusVisibleProp, + timeValue: externalTimeValue, + defaultValue: externalDefaultValue, + onChange, + format = 24, + ...props + }: any, + ref?: any + ) => { + const timeInputRef = React.useRef(); + const timeInputFieldRef = React.useRef(null); + const [isFocused, setIsFocused] = React.useState(false); + const defaultMeridiem = externalDefaultValue?.split(':')[3] || 'AM'; + const [timeValue, setTimeValue] = useState( + externalTimeValue || externalDefaultValue || ':::' + ); + const [meridiemHovered, setMeridiemHovered] = useState(false); + const [meridiemValue, setMeridiemValue] = useState(defaultMeridiem); + const [meridiemPressed, setMeridiemPressed] = useState(false); + + const handleFocus = (focusState: boolean, callback: any) => { + setIsFocused(focusState); + callback(); + }; + const updateHours = (hours: string) => { + let hourValue = parseInt(hours, 10); + if (isNaN(hourValue)) { + hourValue = 0; // Default value if parsing fails + } + if (format === 12) { + if (hourValue > 12) { + hourValue = 12; + } + } else if (format === 24) { + if (hourValue > 23) { + hourValue = 23; + } + } + const formattedValue = + hourValue < 10 ? `0${hourValue}` : `${hourValue}`; + const [_, minutes, seconds] = timeValue.split(':'); + const newTimeValueFormat24 = `${formattedValue}:${minutes}:${seconds}`; + const newTimeValueFormat12 = `${formattedValue}:${minutes}:${seconds}:${meridiemValue}`; + if (format === 24) { + setTimeValue(newTimeValueFormat24); + onChange(newTimeValueFormat24); + } else { + setTimeValue(newTimeValueFormat12); + onChange(newTimeValueFormat12); + } + }; + + const updateMinutes = (minutes: string) => { + let minutesValue = parseInt(minutes, 10); + if (isNaN(minutesValue)) { + minutesValue = 0; // Default value if parsing fails + } + if (minutesValue > 59) { + minutesValue = 59; + } + const formattedValue = + minutesValue < 10 ? `0${minutesValue}` : `${minutesValue}`; + const [hours, _, seconds] = timeValue.split(':'); + const newTimeValueFormat24 = `${hours}:${formattedValue}:${seconds}`; + const newTimeValueFormat12 = `${hours}:${formattedValue}:${seconds}:${meridiemValue}`; + if (format === 24) { + setTimeValue(newTimeValueFormat24); + onChange(newTimeValueFormat24); + } else { + setTimeValue(newTimeValueFormat12); + onChange(newTimeValueFormat12); + } + }; + + const updateSeconds = (seconds: string) => { + let secondsValue = parseInt(seconds, 10); + if (isNaN(secondsValue)) { + secondsValue = 0; // Default value if parsing fails + } + if (secondsValue > 59) { + secondsValue = 59; + } + const formattedValue = + secondsValue < 10 ? `0${secondsValue}` : `${secondsValue}`; + const [hours, minutes, _] = timeValue.split(':'); + const newTimeValueFormat24 = `${hours}:${minutes}:${formattedValue}`; + const newTimeValueFormat12 = `${hours}:${minutes}:${formattedValue}:${meridiemValue}`; + if (format === 24) { + setTimeValue(newTimeValueFormat24); + onChange(newTimeValueFormat24); + } else { + setTimeValue(newTimeValueFormat12); + onChange(newTimeValueFormat12); + } + }; + + const updateMeridiem = () => { + const newMeridiemValue = meridiemValue === 'PM' ? 'AM' : 'PM'; + setMeridiemValue(newMeridiemValue); + if (format === 12) { + const [hours, minutes, seconds] = timeValue.split(':'); + const newTimeValueFormat12 = `${hours}:${minutes}:${seconds}:${newMeridiemValue}`; + setTimeValue(newTimeValueFormat12); + onChange(newTimeValueFormat12); + } + }; + + const timeInputProps = useFormControlContext(); + + return ( + + + {children} + + + ); + } + ); diff --git a/packages/unstyled/time-input/src/TimeInputHr.tsx b/packages/unstyled/time-input/src/TimeInputHr.tsx new file mode 100644 index 0000000000..3a4bac7de6 --- /dev/null +++ b/packages/unstyled/time-input/src/TimeInputHr.tsx @@ -0,0 +1,129 @@ +import React, { forwardRef, useMemo, useRef } from 'react'; +import { Platform } from 'react-native'; +import { useFormControl } from '@gluestack-ui/form-control'; +import { useTimeInput } from './TimeInputContext'; +import { mergeRefs } from '@gluestack-ui/utils'; +import { useHover } from '@react-native-aria/interactions'; + +export const TimeInputHr = (StyledTimeInputHr: any) => + forwardRef( + ( + { + children, + onKeyPress, + 'isHovered': isHoveredProp = true, + 'aria-label': ariaLabel = 'Hours', + editable, + // isFocused: isFocusedProp = false, + 'isDisabled': isDisabledProp = false, + ...props + }: any, + ref?: any + ) => { + const { + isDisabled, + isReadOnly, + isFocused, + isInvalid, + setIsFocused, + isFocusVisible, + isRequired, + updateHours, + timeValue, + } = useTimeInput('TimeInputContext'); + const inputProps = useFormControl({ + isDisabled: props.isDisabled, + isInvalid: props.isInvalid, + isReadOnly: props.isReadOnly, + isRequired: props.isRequired, + id: props.id, + }); + const inputRef = useRef(null); + const handleChange = (e: any) => { + const newHours = e.target.value; + updateHours(newHours); + }; + const { isHovered }: any = useHover({}, inputRef); + const handleFocus = (focusState: boolean, callback: any) => { + setIsFocused?.(focusState); + callback(); + }; + + const mergedRef = mergeRefs([ref, inputRef]); + + const editableProp = useMemo(() => { + if (editable !== undefined) { + return editable; + } else { + return isDisabled || + inputProps.isDisabled || + isReadOnly || + isDisabledProp + ? false + : true; + } + }, [ + isDisabled, + inputProps.isDisabled, + isReadOnly, + editable, + isDisabledProp, + ]); + + return ( + { + e.persist(); + onKeyPress && onKeyPress(e); + }} + onFocus={(e: any) => { + handleFocus( + true, + props?.onFocus ? () => props?.onFocus(e) : () => {} + ); + }} + onBlur={(e: any) => { + handleFocus( + false, + props?.onBlur ? () => props?.onBlur(e) : () => {} + ); + }} + value={timeValue.split(':')[0]} + onChange={handleChange} + ref={mergedRef} + keyboardType="number-pad" + > + {children} + + ); + } + ); diff --git a/packages/unstyled/time-input/src/TimeInputMeridiem.tsx b/packages/unstyled/time-input/src/TimeInputMeridiem.tsx new file mode 100644 index 0000000000..c4a035a8f1 --- /dev/null +++ b/packages/unstyled/time-input/src/TimeInputMeridiem.tsx @@ -0,0 +1,104 @@ +import React, { forwardRef, useRef } from 'react'; +import { useTimeInput } from './TimeInputContext'; +import { composeEventHandlers } from '@gluestack-ui/utils'; +import { mergeRefs } from '@gluestack-ui/utils'; +import { useHover, usePress } from '@react-native-aria/interactions'; + +export const TimeInputMeridiem = (StyledTimeInputMeridiem: any) => + forwardRef( + ( + { + children, + isHovered: isHoveredProp, + isFocused: isFocusedProp, + isPressed: isPressedProp, + isFocusVisible: isFocusVisibleProp, + // editable, + isDisabled: isDisabledProp, + ...props + }: any, + ref?: any + ) => { + const { + isDisabled, + isReadOnly, + isFocused, + isInvalid, + // setIsFocused, + isFocusVisible, + isRequired, + format, + updateMeridiem, + setMeridiemHovered, + meridiemValue, + setMeridiemPressed, + } = useTimeInput('TimeInputContext'); + const { pressProps: pressableProps, isPressed } = usePress({ + isDisabled, + }); + + const buttonRef = useRef(null); + const { isHovered } = useHover({}, buttonRef); + const mergedRef = mergeRefs([ref, buttonRef]); + + if (format !== 12) { + return null; + } + return ( + setMeridiemHovered(true)} + onHoverOut={() => setMeridiemHovered(false)} + onPressIn={composeEventHandlers( + props?.onPressIn, + pressableProps.onPressIn, + () => { + if (isPressedProp) { + setMeridiemPressed(true); + } + } + )} + onPressOut={composeEventHandlers( + props?.onPressOut, + pressableProps.onPressOut, + () => { + if (isPressedProp) { + setMeridiemPressed(false); + } + } + )} + onPress={composeEventHandlers(props?.onPress, () => + updateMeridiem(meridiemValue) + )} + > + {children} + + ); + } + ); diff --git a/packages/unstyled/time-input/src/TimeInputMeridiemText.tsx b/packages/unstyled/time-input/src/TimeInputMeridiemText.tsx new file mode 100644 index 0000000000..fb7e4d26ef --- /dev/null +++ b/packages/unstyled/time-input/src/TimeInputMeridiemText.tsx @@ -0,0 +1,40 @@ +import React, { forwardRef } from 'react'; +import { useTimeInput } from './TimeInputContext'; + +export const TimeInputMeridiemText = (StyledTimeInputMeridiemText: any) => + forwardRef(({ ...props }: any, ref?: any) => { + const { + isDisabled, + isReadOnly, + isFocused, + isInvalid, + isFocusVisible, + meridiemHovered, + meridiemValue, + meridiemPressed, + } = useTimeInput('TimeInputContext'); + return ( + + {meridiemValue} + + ); + }); diff --git a/packages/unstyled/time-input/src/TimeInputMin.tsx b/packages/unstyled/time-input/src/TimeInputMin.tsx new file mode 100644 index 0000000000..a5ef46fc6a --- /dev/null +++ b/packages/unstyled/time-input/src/TimeInputMin.tsx @@ -0,0 +1,121 @@ +import React, { forwardRef, useMemo, useRef } from 'react'; +import { Platform } from 'react-native'; +import { useFormControl } from '@gluestack-ui/form-control'; +import { useTimeInput } from './TimeInputContext'; +import { mergeRefs } from '@gluestack-ui/utils'; +import { useHover } from '@react-native-aria/interactions'; + +export const TimeInputMin = (StyledTimeInputMin: any) => + forwardRef( + ( + { + children, + onKeyPress, + 'isHovered': isHoveredProp = true, + 'aria-label': ariaLabel = 'Minutes', + editable, + disabled, + ...props + }: any, + ref?: any + ) => { + const { + isDisabled, + isReadOnly, + isFocused, + isInvalid, + setIsFocused, + isFocusVisible, + isRequired, + updateMinutes, + timeValue, + } = useTimeInput('TimeInputContext'); + const inputRef = useRef(null); + const inputProps = useFormControl({ + isDisabled: props.isDisabled || disabled, + isInvalid: props.isInvalid, + isReadOnly: props.isReadOnly, + isRequired: props.isRequired, + id: props.id, + }); + const { isHovered }: any = useHover({}, inputRef); + + const handleFocus = (focusState: boolean, callback: any) => { + setIsFocused?.(focusState); + callback(); + }; + + const mergedRef = mergeRefs([ref, inputRef]); + + const editableProp = useMemo(() => { + if (editable !== undefined) { + return editable; + } else { + return isDisabled || inputProps.isDisabled || isReadOnly + ? false + : true; + } + }, [isDisabled, inputProps.isDisabled, isReadOnly, editable]); + + const handleChange = (e: any) => { + const newMinutes = e.target.value; + updateMinutes(newMinutes); + }; + + return ( + { + e.persist(); + onKeyPress && onKeyPress(e); + }} + onFocus={(e: any) => { + handleFocus( + true, + props?.onFocus ? () => props?.onFocus(e) : () => {} + ); + }} + onBlur={(e: any) => { + handleFocus( + false, + props?.onBlur ? () => props?.onBlur(e) : () => {} + ); + }} + ref={mergedRef} + value={timeValue.split(':')[1]} + onChange={handleChange} + keyboardType="number-pad" + > + {children} + + ); + } + ); diff --git a/packages/unstyled/time-input/src/TimeInputSec.tsx b/packages/unstyled/time-input/src/TimeInputSec.tsx new file mode 100644 index 0000000000..cf25ebbd1c --- /dev/null +++ b/packages/unstyled/time-input/src/TimeInputSec.tsx @@ -0,0 +1,123 @@ +import React, { forwardRef, useMemo, useRef } from 'react'; +import { Platform } from 'react-native'; +import { useFormControl } from '@gluestack-ui/form-control'; +import { useTimeInput } from './TimeInputContext'; +import { mergeRefs } from '@gluestack-ui/utils'; +import { useHover } from '@react-native-aria/interactions'; + +export const TimeInputSec = (StyledTimeInputSec: any) => + forwardRef( + ( + { + children, + onKeyPress, + 'isHovered': isHoveredProp = true, + 'aria-label': ariaLabel = 'Seconds', + editable, + disabled, + ...props + }: any, + ref?: any + ) => { + const { + isDisabled, + isReadOnly, + isFocused, + isInvalid, + setIsFocused, + isFocusVisible, + isRequired, + updateSeconds, + timeValue, + } = useTimeInput('TimeInputContext'); + + const inputRef = useRef(null); + + const inputProps = useFormControl({ + isDisabled: props.isDisabled || disabled, + isInvalid: props.isInvalid, + isReadOnly: props.isReadOnly, + isRequired: props.isRequired, + id: props.id, + }); + + const handleFocus = (focusState: boolean, callback: any) => { + setIsFocused?.(focusState); + callback(); + }; + const { isHovered }: any = useHover({}, inputRef); + + const mergedRef = mergeRefs([ref, inputRef]); + + const editableProp = useMemo(() => { + if (editable !== undefined) { + return editable; + } else { + return isDisabled || inputProps.isDisabled || isReadOnly + ? false + : true; + } + }, [isDisabled, inputProps.isDisabled, isReadOnly, editable]); + + const handleChange = (e: any) => { + const newSeconds = e.target.value; + updateSeconds(newSeconds); + }; + + return ( + { + e.persist(); + onKeyPress && onKeyPress(e); + }} + onFocus={(e: any) => { + handleFocus( + true, + props?.onFocus ? () => props?.onFocus(e) : () => {} + ); + }} + onBlur={(e: any) => { + handleFocus( + false, + props?.onBlur ? () => props?.onBlur(e) : () => {} + ); + }} + ref={mergedRef} + value={timeValue.split(':')[2]} + onChange={handleChange} + keyboardType="number-pad" + > + {children} + + ); + } + ); diff --git a/packages/unstyled/time-input/src/index.tsx b/packages/unstyled/time-input/src/index.tsx new file mode 100644 index 0000000000..8841cf5e34 --- /dev/null +++ b/packages/unstyled/time-input/src/index.tsx @@ -0,0 +1,52 @@ +import { TimeInputHr } from './TimeInputHr'; +import { TimeInputMin } from './TimeInputMin'; +import { TimeInputSec } from './TimeInputSec'; +import type { ITimeInputComponentType } from './types'; +import { TimeInputGroup } from './TimeInputGroup'; +import { TimeInputMeridiem } from './TimeInputMeridiem'; +import { TimeInputMeridiemText } from './TimeInputMeridiemText'; + +export const createTimeInput = < + Root, + TimeInputHr, + TimeInputMin, + TimeInputSec, + TimeInputMeridiem, + TimeInputMeridiemText +>({ + Root, + TimeInputHr: Hr, + TimeInputMin: Min, + TimeInputSec: Sec, + TimeInputMeridiem: Meridiem, + TimeInputMeridiemText: MeridiemText, +}: { + Root: React.ComponentType; + TimeInputHr: React.ComponentType; + TimeInputMin: React.ComponentType; + TimeInputSec: React.ComponentType; + TimeInputMeridiem: React.ComponentType; + TimeInputMeridiemText: React.ComponentType; +}) => { + const TimeInputField = TimeInputGroup(Root) as any; + TimeInputField.Hr = TimeInputHr(Hr); + TimeInputField.Min = TimeInputMin(Min); + TimeInputField.Sec = TimeInputSec(Sec); + TimeInputField.Meridiem = TimeInputMeridiem(Meridiem); + TimeInputField.MeridiemText = TimeInputMeridiemText(MeridiemText); + TimeInputField.displayName = 'TimeInputField'; + TimeInputField.Hr.displayName = 'TimeInputField.Hr'; + TimeInputField.Min.displayName = 'TimeInputField.Min'; + TimeInputField.Sec.displayName = 'TimeInputField.Sec'; + TimeInputField.Meridiem.displayName = 'TimeInputField.Meridiem'; + TimeInputField.MeridiemText.displayName = 'TimeInputField.MeridiemText'; + + return TimeInputField as ITimeInputComponentType< + Root, + TimeInputHr, + TimeInputMin, + TimeInputSec, + TimeInputMeridiem, + TimeInputMeridiemText + >; +}; diff --git a/packages/unstyled/time-input/src/types.ts b/packages/unstyled/time-input/src/types.ts new file mode 100644 index 0000000000..23b94a32b6 --- /dev/null +++ b/packages/unstyled/time-input/src/types.ts @@ -0,0 +1,76 @@ +export interface TimeInputContext { + isDisabled?: boolean; + isInvalid?: boolean; + isReadOnly?: boolean; + isRequired?: boolean; + isFocused?: boolean; + handleFocus?: any; + isFocusVisible?: boolean; + isFullWidth?: boolean; + timeInputFieldRef?: any; + setIsFocused?: (value: boolean) => void; + meridiemHovered?: boolean; + updateMeridiem?: (value: boolean) => void; +} + +export interface ITimeInputFieldProps { + isInvalid?: boolean; + isDisabled?: boolean; + isHovered?: boolean; + isFocused?: boolean; + isRequired?: boolean; + isReadOnly?: boolean; + isFullWidth?: boolean; +} +export interface ITimeInputProps { + onKeyPress?: (e: any) => void; + onFocus?: any; + onBlur?: any; + isHovered?: boolean; + isDisabled?: boolean; +} +export interface ITimeInputMeridiemProps { + isPressed?: boolean; + isHovered?: boolean; +} + +export type ITimeInputComponentType< + Root, + Hr, + Min, + Sec, + Meridiem, + MeridiemText +> = React.ForwardRefExoticComponent< + React.RefAttributes & React.PropsWithoutRef & ITimeInputFieldProps +> & { + Hr: React.ForwardRefExoticComponent< + React.RefAttributes
& React.PropsWithoutRef
& ITimeInputProps + >; + Min: React.ForwardRefExoticComponent< + React.RefAttributes & React.PropsWithoutRef & ITimeInputProps + >; + Sec: React.ForwardRefExoticComponent< + React.RefAttributes & React.PropsWithoutRef & ITimeInputProps + >; + Meridiem: React.ForwardRefExoticComponent< + React.RefAttributes & + React.PropsWithoutRef & + ITimeInputMeridiemProps + >; + MeridiemText: React.ForwardRefExoticComponent< + React.RefAttributes & React.PropsWithoutRef + >; +}; +export interface ITimeInputMeridiemProps { + isPressed?: boolean; + isDisabled?: boolean; + isHovered?: boolean; + isFocused?: boolean; + isFocusVisible?: boolean; + children: JSX.Element | Array | ((props: any) => JSX.Element); + isInvalid?: boolean; + isReadOnly?: boolean; + isRequired?: boolean; + toggleItem?: () => void; +} From 935e5c301a6613d3b5b001f2be78ba4e7f0dc97c Mon Sep 17 00:00:00 2001 From: ujjjwal2608 Date: Thu, 2 Jan 2025 14:14:07 +0530 Subject: [PATCH 03/20] feat: added the column and cleaned code --- .../TimeInput/TimeInput.stories.tsx | 31 +- .../src/components/TimeInput/TimeInput.tsx | 14 +- .../nativewind/time-input/index.tsx | 102 +- packages/unstyled/time-input/.npmignore | 20 + packages/unstyled/time-input/CHANGELOG.md | 5 + packages/unstyled/time-input/README.md | 61 + packages/unstyled/time-input/babel.config.js | 29 + packages/unstyled/time-input/package.json | 82 + .../time-input/src/TimeInputContext.tsx | 18 +- .../time-input/src/TimeInputGroup.tsx | 128 +- .../unstyled/time-input/src/TimeInputHr.tsx | 70 +- .../time-input/src/TimeInputMeridiem.tsx | 53 +- .../time-input/src/TimeInputMeridiemText.tsx | 14 +- .../unstyled/time-input/src/TimeInputMin.tsx | 70 +- .../unstyled/time-input/src/TimeInputSec.tsx | 123 -- packages/unstyled/time-input/src/index.tsx | 29 +- packages/unstyled/time-input/src/types.ts | 175 +- packages/unstyled/time-input/tsconfig.json | 31 + yarn.lock | 1411 +++++++++++++++-- 19 files changed, 1884 insertions(+), 582 deletions(-) create mode 100644 packages/unstyled/time-input/.npmignore create mode 100644 packages/unstyled/time-input/CHANGELOG.md create mode 100644 packages/unstyled/time-input/README.md create mode 100644 packages/unstyled/time-input/babel.config.js create mode 100644 packages/unstyled/time-input/package.json delete mode 100644 packages/unstyled/time-input/src/TimeInputSec.tsx create mode 100644 packages/unstyled/time-input/tsconfig.json diff --git a/example/storybook-nativewind/src/components/TimeInput/TimeInput.stories.tsx b/example/storybook-nativewind/src/components/TimeInput/TimeInput.stories.tsx index 3bac82c106..c1c918c77d 100644 --- a/example/storybook-nativewind/src/components/TimeInput/TimeInput.stories.tsx +++ b/example/storybook-nativewind/src/components/TimeInput/TimeInput.stories.tsx @@ -9,8 +9,35 @@ const TimeInputMeta: ComponentMeta = { metaInfo: { componentDescription: `The TimeInput component is designed to accommodate larger amounts of text input. It allows multi-line input and can be easily customized to fit the user's needs.`, }, - argTypes: {}, - args: {}, + argTypes: { + size: { + control: 'select', + options: ['sm', 'md', 'lg', 'xl'], + }, + variant: { + control: 'select', + options: ['outlined', 'underlined'], + }, + isInvalid: { + control: 'boolean', + options: [true, false], + }, + isDisabled: { + control: 'boolean', + options: [true, false], + }, + isReadOnly: { + control: 'boolean', + options: [true, false], + }, + }, + args: { + size: 'sm', + variant: 'outlined', + isInvalid: false, + isDisabled: false, + isReadOnly: false, + }, }; export default TimeInputMeta; diff --git a/example/storybook-nativewind/src/components/TimeInput/TimeInput.tsx b/example/storybook-nativewind/src/components/TimeInput/TimeInput.tsx index 0d453de476..50b8303f18 100644 --- a/example/storybook-nativewind/src/components/TimeInput/TimeInput.tsx +++ b/example/storybook-nativewind/src/components/TimeInput/TimeInput.tsx @@ -3,28 +3,26 @@ import { TimeInput, TimeInputHr, TimeInputMin, - TimeInputSec, TimeInputMeridiem, TimeInputMeridiemText, + TimeInputColumn, } from '@/components/ui/time-input'; const TimeInputBasic = ({ ...props }: any) => { const [timeValue, setTimeValue] = useState(null); - return ( <> + - - diff --git a/example/storybook-nativewind/src/core-components/nativewind/time-input/index.tsx b/example/storybook-nativewind/src/core-components/nativewind/time-input/index.tsx index e0620e4337..ec8a3fe7c6 100644 --- a/example/storybook-nativewind/src/core-components/nativewind/time-input/index.tsx +++ b/example/storybook-nativewind/src/core-components/nativewind/time-input/index.tsx @@ -16,7 +16,6 @@ const UITimeInput = createTimeInput({ Root: withStyleContext(View, SCOPE), TimeInputHr: TextInput, TimeInputMin: TextInput, - TimeInputSec: TextInput, TimeInputMeridiem: Pressable, TimeInputMeridiemText: Text, }); @@ -31,52 +30,38 @@ const timeInputStyle = tva({ base: 'flex flex-row items-center justify-between', variants: { size: { - xl: 'h-12 gap-2', - lg: 'h-11 gap-2', - md: 'h-11 w-8 gap-2', - sm: 'h-9 w-6 gap-2', - }, - variant: { - underlined: '', - outlined: '', - rounded: '', + xl: 'h-12 gap-5', + lg: 'h-11 gap-4', + md: 'h-11 gap-3', + sm: 'h-9 gap-2', }, }, }); + const timeInputFieldStyle = tva({ - base: 'border-background-300 flex-row overflow-hidden content-center data-[hover=true]:border-outline-400 data-[focus=true]:border-primary-700 data-[focus=true]:data-[hover=true]:border-primary-700 data-[disabled=true]:opacity-40 data-[disabled=true]:data-[hover=true]:border-background-300 items-center w-12 text-center placeholder:text-typography-500', + base: 'border-background-300 content-center data-[hover=true]:border-outline-400 data-[focus=true]:border-primary-700 data-[focus=true]:data-[hover=true]:border-primary-700 data-[disabled=true]:opacity-40 data-[disabled=true]:data-[hover=true]:border-background-300 text-center placeholder:text-typography-500', parentVariants: { size: { - xl: 'text-xl h-12', - lg: 'text-lg h-11', - md: 'text-base h-10', - sm: 'text-sm h-9', + xl: 'text-xl h-12 w-12', + lg: 'text-lg h-11 w-11', + md: 'text-base h-10 w-10', + sm: 'text-sm h-9 w-9', }, - variant: { underlined: 'rounded-none border-b data-[invalid=true]:border-b-2 data-[invalid=true]:border-error-700 data-[invalid=true]:data-[hover=true]:border-error-700 data-[invalid=true]:data-[focus=true]:border-error-700 data-[invalid=true]:data-[focus=true]:data-[hover=true]:border-error-700 data-[invalid=true]:data-[disabled=true]:data-[hover=true]:border-error-700', - outlined: 'rounded border data-[invalid=true]:border-error-700 data-[invalid=true]:data-[hover=true]:border-error-700 data-[invalid=true]:data-[focus=true]:border-error-700 data-[invalid=true]:data-[focus=true]:data-[hover=true]:border-error-700 data-[invalid=true]:data-[disabled=true]:data-[hover=true]:border-error-700 data-[focus=true]:web:ring-1 data-[focus=true]:web:ring-inset data-[focus=true]:web:ring-indicator-primary data-[invalid=true]:web:ring-1 data-[invalid=true]:web:ring-inset data-[invalid=true]:web:ring-indicator-error data-[invalid=true]:data-[focus=true]:data-[hover=true]:web:ring-1 data-[invalid=true]:data-[focus=true]:data-[hover=true]:web:ring-inset data-[invalid=true]:data-[focus=true]:data-[hover=true]:web:ring-indicator-error data-[invalid=true]:data-[disabled=true]:data-[hover=true]:web:ring-1 data-[invalid=true]:data-[disabled=true]:data-[hover=true]:web:ring-inset data-[invalid=true]:data-[disabled=true]:data-[hover=true]:web:ring-indicator-error', - - rounded: - 'rounded-full border data-[invalid=true]:border-error-700 data-[invalid=true]:data-[hover=true]:border-error-700 data-[invalid=true]:data-[focus=true]:border-error-700 data-[invalid=true]:data-[focus=true]:data-[hover=true]:border-error-700 data-[invalid=true]:data-[disabled=true]:data-[hover=true]:border-error-700 data-[focus=true]:web:ring-1 data-[focus=true]:web:ring-inset data-[focus=true]:web:ring-indicator-primary data-[invalid=true]:web:ring-1 data-[invalid=true]:web:ring-inset data-[invalid=true]:web:ring-indicator-error data-[invalid=true]:data-[focus=true]:data-[hover=true]:web:ring-1 data-[invalid=true]:data-[focus=true]:data-[hover=true]:web:ring-inset data-[invalid=true]:data-[focus=true]:data-[hover=true]:web:ring-indicator-error data-[invalid=true]:data-[disabled=true]:data-[hover=true]:web:ring-1 data-[invalid=true]:data-[disabled=true]:data-[hover=true]:web:ring-inset data-[invalid=true]:data-[disabled=true]:data-[hover=true]:web:ring-indicator-error', }, }, }); const timeInputMeridiemTextStyle = tva({ - base: 'text-typography-0 font-semibold web:select-none data-[invalid=true]:text-error-400 data-[active=true]:text-error-500', + base: 'text-typography-0 font-semibold web:select-none', + parentVariants: { - variant: { - underlined: '', - outlined: '', - rounded: '', - }, size: { - xs: 'text-xs', sm: 'text-sm', md: 'text-base', lg: 'text-lg', @@ -85,14 +70,14 @@ const timeInputMeridiemTextStyle = tva({ }, }); +const timeInputColumnStyle = tva({ + base: 'text-sm font-semibold', +}); + const timeInputMeridiemStyle = tva({ - base: 'rounded bg-primary-500 flex-row items-center justify-center data-[focus-visible=true]:web:outline-none data-[focus-visible=true]:web:ring-2 data-[disabled=true]:opacity-40 gap-2', + base: 'rounded bg-primary-500 flex-row items-center justify-center data-[focus-visible=true]:web:outline-none data-[focus-visible=true]:web:ring-2 data-[disabled=true]:opacity-40', + parentVariants: { - variant: { - underlined: '', - outlined: '', - rounded: 'rounded-full', - }, size: { xl: 'h-12 w-12', lg: 'h-11 w-11', @@ -103,16 +88,18 @@ const timeInputMeridiemStyle = tva({ }); type ITimeInputProps = React.ComponentProps & - VariantProps & { className?: string }; + VariantProps & { className?: string } & { + variant: 'outlined' | 'underlined'; + }; const TimeInput = React.forwardRef< React.ElementRef, ITimeInputProps ->(({ className, variant = 'outlined', size = 'md', ...props }, ref) => { +>(({ className, size = 'md', variant = 'outlined', ...props }, ref) => { return ( ); @@ -166,30 +153,6 @@ const TimeInputMin = React.forwardRef< ); }); -type ITimeInputFieldSecProps = React.ComponentProps & - VariantProps & { className?: string }; - -const TimeInputSec = React.forwardRef< - React.ElementRef, - ITimeInputFieldSecProps ->(({ className, ...props }, ref) => { - const { variant: parentVariant, size: parentSize } = useStyleContext(SCOPE); - - return ( - - ); -}); - type ITimeInputFieldMeridiemProps = React.ComponentProps< typeof UITimeInput.Meridiem > & @@ -199,15 +162,13 @@ const TimeInputMeridiem = React.forwardRef< React.ElementRef, ITimeInputFieldMeridiemProps >(({ className, ...props }, ref) => { - const { variant: parentVariant, size: parentSize } = useStyleContext(SCOPE); - + const { size: parentSize } = useStyleContext(SCOPE); return ( , ITimeInputFieldMeridiemTextProps >(({ className, ...props }, ref) => { - const { variant: parentVariant, size: parentSize } = useStyleContext(SCOPE); + const { size: parentSize } = useStyleContext(SCOPE); return ( { + return ( + + : + + ); +}; + TimeInput.displayName = 'TimeInput'; TimeInputHr.displayName = 'TimeInputHr'; TimeInputMin.displayName = 'TimeInputMin'; -TimeInputSec.displayName = 'TimeInputSec'; TimeInputMeridiem.displayName = 'TimeInputMeridiem'; TimeInputMeridiemText.displayName = 'TimeInputMeridiemText'; +TimeInputColumn.displayName = 'TimeInputColumn'; export { TimeInput, TimeInputHr, TimeInputMin, - TimeInputSec, TimeInputMeridiem, TimeInputMeridiemText, + TimeInputColumn, }; diff --git a/packages/unstyled/time-input/.npmignore b/packages/unstyled/time-input/.npmignore new file mode 100644 index 0000000000..187790b632 --- /dev/null +++ b/packages/unstyled/time-input/.npmignore @@ -0,0 +1,20 @@ +# Dotfiles +.babelrc +.eslintignore +.eslintrc.json +.gitattributes +_config.yml +.editorconfig + + +#Config files +babel.config.js + +# Documents +CONTRIBUTING.md +ISSUE_TEMPLATE.txt +img + +# Test cases +__tests__ +dist/__tests__ diff --git a/packages/unstyled/time-input/CHANGELOG.md b/packages/unstyled/time-input/CHANGELOG.md new file mode 100644 index 0000000000..8cce7554b3 --- /dev/null +++ b/packages/unstyled/time-input/CHANGELOG.md @@ -0,0 +1,5 @@ +# @gluestack-ui/input + +## 0.0.1 + +- Initial release diff --git a/packages/unstyled/time-input/README.md b/packages/unstyled/time-input/README.md new file mode 100644 index 0000000000..729b0e21bb --- /dev/null +++ b/packages/unstyled/time-input/README.md @@ -0,0 +1,61 @@ +# @gluestack-style/input + +## Installation + +To use `@gluestack-ui/input`, all you need to do is install the +`@gluestack-ui/input` package: + +```sh +$ yarn add @gluestack-ui/input + +# or + +$ npm i @gluestack-ui/input +``` + +## Usage + +The Input component is your go-to tool for gathering user input in a sleek and user-friendly text field. Whether you're designing a simple login form or a complex search feature, this component has got you covered. Here's an example how to use this package to create one: + +```jsx +import { Root, Input } from '../components/core/input/styled-components'; +import { createInput } from '@gluestack-ui/input'; +const InputField = createInput({ + Root, + Input, +}); +``` + +## Customizing the input: + +Default styling of all these components can be found in the components/core/input file. For reference, you can view the [source code](https://github.com/gluestack/gluestack-ui/blob/development/example/storybook/src/ui-components/Input/index.tsx) of the styled `input` components. + +```jsx +// import the styles +import { Root, Input } from '../components/core/input/styled-components'; + +// import the createInput function +import { createInput } from '@gluestack-ui/input'; + +//import any icon +import { searchIcon } from '@gluestack/icons'; + +// Understanding the API +const InputField = createInput({ + Root, + Input, +}); + +// Using the input component +export default () => ( + + + + + + +); +``` + +More guides on how to get started are available +[here](https://ui.gluestack.io/docs/components/forms/input). diff --git a/packages/unstyled/time-input/babel.config.js b/packages/unstyled/time-input/babel.config.js new file mode 100644 index 0000000000..d19155f22d --- /dev/null +++ b/packages/unstyled/time-input/babel.config.js @@ -0,0 +1,29 @@ +const path = require('path'); + +module.exports = function (api) { + api.cache(true); + return { + presets: ['babel-preset-expo'], + plugins: [ + process.env.NODE_ENV !== 'production' + ? [ + 'module-resolver', + { + alias: { + ['@gluestack-ui/form-control']: path.resolve( + __dirname, + '../form-control/src' + ), + ['@gluestack-ui/utils']: path.resolve( + __dirname, + '../utils/src' + ), + // ['@gluestack-ui/utils']: path.resolve(__dirname, '../utils/src'), + // For development, we want to alias the library to the source + }, + }, + ] + : ['babel-plugin-react-docgen-typescript', { exclude: 'node_modules' }], + ], + }; +}; diff --git a/packages/unstyled/time-input/package.json b/packages/unstyled/time-input/package.json new file mode 100644 index 0000000000..3ac508683f --- /dev/null +++ b/packages/unstyled/time-input/package.json @@ -0,0 +1,82 @@ +{ + "name": "@gluestack-ui/time-input", + "description": "A universal headless time input component for React Native, Next.js & React", + "version": "0.0.1", + "main": "lib/index", + "module": "lib/index", + "types": "lib/index.d.ts", + "react-native": "src/index", + "source": "src/index", + "typings": "lib/index.d.ts", + "scripts": { + "prepare": "tsc", + "release": "release-it", + "watch": "tsc --watch", + "build": "tsc", + "clean": "rm -rf lib", + "dev:web": "cd example/native && yarn web --clear", + "storybook": "cd example/native/storybook && yarn web" + }, + "devDependencies": { + "@types/react": "^18.0.22", + "@types/react-native": "^0.72.3", + "babel-plugin-transform-remove-console": "^6.9.4", + "react": "^18.1.0", + "react-dom": "^18.1.0", + "react-native": "^0.72.4", + "react-native-builder-bob": "^0.20.1", + "react-native-web": "^0.19.9", + "tsconfig": "7", + "typescript": "^5.6.3" + }, + "dependencies": { + "@gluestack-ui/form-control": "^0.1.19", + "@gluestack-ui/utils": "^0.1.14", + "@react-native-aria/focus": "^0.2.9", + "@react-native-aria/interactions": "0.2.13", + "dayjs": "^1.11.13" + }, + "peerDependencies": { + "react": ">=16", + "react-dom": ">=16" + }, + "homepage": "https://github.com/gluestack/gluestack-ui/tree/main/packages/unstyled/time-input#readme", + "repository": { + "type": "git", + "url": "git+https://github.com/gluestack/gluestack-ui.git" + }, + "files": [ + "lib/", + "src/" + ], + "jest": { + "preset": "jest-expo", + "transform": { + "^.+\\.js$": "/node_modules/react-native/jest/preprocessor.js" + }, + "modulePathIgnorePatterns": [ + "/example/*", + "/lib/" + ], + "transformIgnorePatterns": [ + "node_modules/(?!(@react-native|react-native|expo-asset|expo-constants|@unimodules|react-native-unimodules|expo-font|react-native-svg|@expo/vector-icons|react-native-vector-icons|@react-native-aria/checkbox|@react-native-aria/interactions|@react-native-aria/button|@react-native-aria/switch|@react-native-aria/toggle|@react-native-aria/utils|@react-native-aria/*))" + ], + "setupFiles": [ + "/src/jest/mock.ts" + ] + }, + "keywords": [ + "react", + "native", + "react-native", + "time-input", + "gluestack-ui", + "universal", + "headless", + "typescript", + "component", + "android", + "ios", + "nextjs" + ] +} diff --git a/packages/unstyled/time-input/src/TimeInputContext.tsx b/packages/unstyled/time-input/src/TimeInputContext.tsx index 27ce05bf0a..375576721a 100644 --- a/packages/unstyled/time-input/src/TimeInputContext.tsx +++ b/packages/unstyled/time-input/src/TimeInputContext.tsx @@ -1,28 +1,20 @@ import { createContext } from '@gluestack-ui/utils'; +import { Dayjs } from 'dayjs'; interface TimeInputContext { isDisabled?: boolean; isInvalid?: boolean; - isFocused?: boolean; - isFocusVisible?: boolean; isReadOnly?: boolean; isRequired?: boolean; - timeInputRef?: any; - handleFocus?: (focusState: boolean, callback: any) => void; - setIsFocused?: React.Dispatch>; timeInputFieldRef?: any; - timeValue: string; - setTimeValue: React.Dispatch>; - updateHours: (hours: string) => void; - updateMinutes: (minutes: string) => void; - updateSeconds: (seconds: string) => void; - updateMeridiem: (meridiem: string) => void; - format: number; + value: Dayjs; + setTimeValue: (value: Dayjs) => void; + meridiem: string; + setMeridiem: (meridiem: string) => void; meridiemHovered: boolean; setMeridiemHovered: (meridiemHovered: boolean) => void; meridiemPressed: boolean; setMeridiemPressed: (meridiemPressed: boolean) => void; - meridiemValue: string; } export const [TimeInputProvider, useTimeInput] = diff --git a/packages/unstyled/time-input/src/TimeInputGroup.tsx b/packages/unstyled/time-input/src/TimeInputGroup.tsx index 8c542f84ca..d3c9a7a30e 100644 --- a/packages/unstyled/time-input/src/TimeInputGroup.tsx +++ b/packages/unstyled/time-input/src/TimeInputGroup.tsx @@ -2,7 +2,8 @@ import React, { forwardRef, useState } from 'react'; import { TimeInputProvider } from './TimeInputContext'; import { useFormControlContext } from '@gluestack-ui/form-control'; import { mergeRefs } from '@gluestack-ui/utils'; - +import dayjs, { Dayjs } from 'dayjs'; +import type { ITimeInputProps } from './types'; export const TimeInputGroup = (StyledTimeInputRoot: any) => forwardRef( ( @@ -12,113 +13,24 @@ export const TimeInputGroup = (StyledTimeInputRoot: any) => isDisabled, isInvalid, isRequired, - isFocused: isFocusedProp, - isFocusVisible: isFocusVisibleProp, - timeValue: externalTimeValue, - defaultValue: externalDefaultValue, + value: externalValue, onChange, - format = 24, ...props - }: any, + }: Omit & { children: React.ReactNode[] }, ref?: any ) => { const timeInputRef = React.useRef(); const timeInputFieldRef = React.useRef(null); - const [isFocused, setIsFocused] = React.useState(false); - const defaultMeridiem = externalDefaultValue?.split(':')[3] || 'AM'; - const [timeValue, setTimeValue] = useState( - externalTimeValue || externalDefaultValue || ':::' + const [timeValue, setTimeValue] = useState( + externalValue ? externalValue : dayjs() ); + const handleTimeChange = (newTimeValue: Dayjs) => { + setTimeValue(newTimeValue); + onChange?.(newTimeValue); + }; const [meridiemHovered, setMeridiemHovered] = useState(false); - const [meridiemValue, setMeridiemValue] = useState(defaultMeridiem); const [meridiemPressed, setMeridiemPressed] = useState(false); - - const handleFocus = (focusState: boolean, callback: any) => { - setIsFocused(focusState); - callback(); - }; - const updateHours = (hours: string) => { - let hourValue = parseInt(hours, 10); - if (isNaN(hourValue)) { - hourValue = 0; // Default value if parsing fails - } - if (format === 12) { - if (hourValue > 12) { - hourValue = 12; - } - } else if (format === 24) { - if (hourValue > 23) { - hourValue = 23; - } - } - const formattedValue = - hourValue < 10 ? `0${hourValue}` : `${hourValue}`; - const [_, minutes, seconds] = timeValue.split(':'); - const newTimeValueFormat24 = `${formattedValue}:${minutes}:${seconds}`; - const newTimeValueFormat12 = `${formattedValue}:${minutes}:${seconds}:${meridiemValue}`; - if (format === 24) { - setTimeValue(newTimeValueFormat24); - onChange(newTimeValueFormat24); - } else { - setTimeValue(newTimeValueFormat12); - onChange(newTimeValueFormat12); - } - }; - - const updateMinutes = (minutes: string) => { - let minutesValue = parseInt(minutes, 10); - if (isNaN(minutesValue)) { - minutesValue = 0; // Default value if parsing fails - } - if (minutesValue > 59) { - minutesValue = 59; - } - const formattedValue = - minutesValue < 10 ? `0${minutesValue}` : `${minutesValue}`; - const [hours, _, seconds] = timeValue.split(':'); - const newTimeValueFormat24 = `${hours}:${formattedValue}:${seconds}`; - const newTimeValueFormat12 = `${hours}:${formattedValue}:${seconds}:${meridiemValue}`; - if (format === 24) { - setTimeValue(newTimeValueFormat24); - onChange(newTimeValueFormat24); - } else { - setTimeValue(newTimeValueFormat12); - onChange(newTimeValueFormat12); - } - }; - - const updateSeconds = (seconds: string) => { - let secondsValue = parseInt(seconds, 10); - if (isNaN(secondsValue)) { - secondsValue = 0; // Default value if parsing fails - } - if (secondsValue > 59) { - secondsValue = 59; - } - const formattedValue = - secondsValue < 10 ? `0${secondsValue}` : `${secondsValue}`; - const [hours, minutes, _] = timeValue.split(':'); - const newTimeValueFormat24 = `${hours}:${minutes}:${formattedValue}`; - const newTimeValueFormat12 = `${hours}:${minutes}:${formattedValue}:${meridiemValue}`; - if (format === 24) { - setTimeValue(newTimeValueFormat24); - onChange(newTimeValueFormat24); - } else { - setTimeValue(newTimeValueFormat12); - onChange(newTimeValueFormat12); - } - }; - - const updateMeridiem = () => { - const newMeridiemValue = meridiemValue === 'PM' ? 'AM' : 'PM'; - setMeridiemValue(newMeridiemValue); - if (format === 12) { - const [hours, minutes, seconds] = timeValue.split(':'); - const newTimeValueFormat12 = `${hours}:${minutes}:${seconds}:${newMeridiemValue}`; - setTimeValue(newTimeValueFormat12); - onChange(newTimeValueFormat12); - } - }; + const [meridiem, setMeridiem] = useState(timeValue.format('A')); const timeInputProps = useFormControlContext(); @@ -129,10 +41,8 @@ export const TimeInputGroup = (StyledTimeInputRoot: any) => invalid: isInvalid || timeInputProps.isInvalid, readonly: isReadOnly || timeInputProps.isReadOnly, required: isRequired || timeInputProps.isRequired, - focusVisible: isFocusVisibleProp, }} dataSet={{ - focus: isFocusedProp ? isFocusedProp : isFocused ? 'true' : 'false', disabled: isDisabled || timeInputProps.isDisabled ? 'true' : 'false', invalid: isInvalid || timeInputProps.isInvalid ? 'true' : 'false', @@ -140,7 +50,6 @@ export const TimeInputGroup = (StyledTimeInputRoot: any) => isReadOnly || timeInputProps.isReadOnly ? 'true' : 'false', required: isRequired || timeInputProps.isRequired ? 'true' : 'false', - focusVisible: isFocusVisibleProp ? 'true' : 'false', }} {...props} ref={mergeRefs([timeInputRef, ref])} @@ -150,22 +59,15 @@ export const TimeInputGroup = (StyledTimeInputRoot: any) => isInvalid={isInvalid || timeInputProps.isInvalid} isReadOnly={isReadOnly || timeInputProps.isReadOnly} isRequired={isRequired || timeInputProps.isRequired} - timeInputRef={timeInputRef} - handleFocus={handleFocus} - setIsFocused={setIsFocused} timeInputFieldRef={timeInputFieldRef} - timeValue={timeValue} - setTimeValue={setTimeValue} - updateHours={updateHours} - updateMinutes={updateMinutes} - format={format} - updateSeconds={updateSeconds} - updateMeridiem={updateMeridiem} + value={timeValue} + setTimeValue={handleTimeChange} meridiemHovered={meridiemHovered} - meridiemValue={meridiemValue} setMeridiemHovered={setMeridiemHovered} meridiemPressed={meridiemPressed} setMeridiemPressed={setMeridiemPressed} + meridiem={meridiem} + setMeridiem={setMeridiem} > {children} diff --git a/packages/unstyled/time-input/src/TimeInputHr.tsx b/packages/unstyled/time-input/src/TimeInputHr.tsx index 3a4bac7de6..e789952223 100644 --- a/packages/unstyled/time-input/src/TimeInputHr.tsx +++ b/packages/unstyled/time-input/src/TimeInputHr.tsx @@ -1,9 +1,11 @@ -import React, { forwardRef, useMemo, useRef } from 'react'; +import React, { forwardRef, useMemo, useRef, useState } from 'react'; import { Platform } from 'react-native'; import { useFormControl } from '@gluestack-ui/form-control'; import { useTimeInput } from './TimeInputContext'; import { mergeRefs } from '@gluestack-ui/utils'; import { useHover } from '@react-native-aria/interactions'; +import { useFocusRing } from '@react-native-aria/focus'; +import type { ITimeInputFieldProps } from './types'; export const TimeInputHr = (StyledTimeInputHr: any) => forwardRef( @@ -14,41 +16,40 @@ export const TimeInputHr = (StyledTimeInputHr: any) => 'isHovered': isHoveredProp = true, 'aria-label': ariaLabel = 'Hours', editable, - // isFocused: isFocusedProp = false, 'isDisabled': isDisabledProp = false, + 'isFocused': isFocusedProp = false, + 'isFocusVisible': isFocusVisibleProp, ...props - }: any, + }: Omit & { children: React.ReactNode }, ref?: any ) => { const { isDisabled, isReadOnly, - isFocused, isInvalid, - setIsFocused, - isFocusVisible, isRequired, - updateHours, - timeValue, + value, + setTimeValue, } = useTimeInput('TimeInputContext'); + const inputProps = useFormControl({ - isDisabled: props.isDisabled, - isInvalid: props.isInvalid, - isReadOnly: props.isReadOnly, - isRequired: props.isRequired, + isDisabled: isDisabledProp, + isInvalid: isInvalid, + isReadOnly: isReadOnly, + isRequired: isRequired, id: props.id, }); + const inputRef = useRef(null); - const handleChange = (e: any) => { - const newHours = e.target.value; - updateHours(newHours); - }; const { isHovered }: any = useHover({}, inputRef); + + const [isFocused, setIsFocused] = useState(false); const handleFocus = (focusState: boolean, callback: any) => { - setIsFocused?.(focusState); + setIsFocused(focusState); callback(); }; + const { isFocusVisible }: any = useFocusRing(); const mergedRef = mergeRefs([ref, inputRef]); const editableProp = useMemo(() => { @@ -70,25 +71,38 @@ export const TimeInputHr = (StyledTimeInputHr: any) => isDisabledProp, ]); + const handleChange = (newHoursInt: string) => { + const newHours = newHoursInt.replace(/[^0-9]/g, ''); + if (newHours === newHoursInt) { + const newTimeValue = newHours + ? value + .set('hour', parseInt(newHours) % 12) + .second(new Date().getSeconds()) + : value.set('hour', 0).second(new Date().getSeconds()); + setTimeValue(newTimeValue); + } + }; + return ( onKeyPress && onKeyPress(e); }} onFocus={(e: any) => { - handleFocus( - true, - props?.onFocus ? () => props?.onFocus(e) : () => {} - ); + handleFocus(true, () => props.onFocus?.(e)); }} onBlur={(e: any) => { - handleFocus( - false, - props?.onBlur ? () => props?.onBlur(e) : () => {} - ); + handleFocus(false, () => props.onBlur?.(e)); }} - value={timeValue.split(':')[0]} - onChange={handleChange} + value={(value.get('hour') % 12).toString()} + onChangeText={handleChange} ref={mergedRef} keyboardType="number-pad" > diff --git a/packages/unstyled/time-input/src/TimeInputMeridiem.tsx b/packages/unstyled/time-input/src/TimeInputMeridiem.tsx index c4a035a8f1..67a634b8a0 100644 --- a/packages/unstyled/time-input/src/TimeInputMeridiem.tsx +++ b/packages/unstyled/time-input/src/TimeInputMeridiem.tsx @@ -3,6 +3,8 @@ import { useTimeInput } from './TimeInputContext'; import { composeEventHandlers } from '@gluestack-ui/utils'; import { mergeRefs } from '@gluestack-ui/utils'; import { useHover, usePress } from '@react-native-aria/interactions'; +import { useFocusRing, useFocus } from '@react-native-aria/focus'; +import type { ITimeInputMeridiemProps } from './types'; export const TimeInputMeridiem = (StyledTimeInputMeridiem: any) => forwardRef( @@ -13,37 +15,50 @@ export const TimeInputMeridiem = (StyledTimeInputMeridiem: any) => isFocused: isFocusedProp, isPressed: isPressedProp, isFocusVisible: isFocusVisibleProp, - // editable, isDisabled: isDisabledProp, ...props - }: any, + }: Omit & { + children: React.ReactNode; + }, ref?: any ) => { const { isDisabled, isReadOnly, - isFocused, - isInvalid, - // setIsFocused, - isFocusVisible, + value, + meridiem, + setMeridiem, isRequired, - format, - updateMeridiem, + setTimeValue, setMeridiemHovered, - meridiemValue, setMeridiemPressed, } = useTimeInput('TimeInputContext'); + + const { isFocusVisible, focusProps: focusRingProps }: any = + useFocusRing(); + const { isFocused, focusProps } = useFocus(); + const { pressProps: pressableProps, isPressed } = usePress({ isDisabled, }); const buttonRef = useRef(null); const { isHovered } = useHover({}, buttonRef); + const mergedRef = mergeRefs([ref, buttonRef]); - if (format !== 12) { - return null; - } + const updateMeridiem = (meridiem: string) => { + if (meridiem === 'AM') { + const newTimeValue = value.set('hour', value.get('hour') + 12); + setMeridiem('PM'); + setTimeValue(newTimeValue); + } else { + const newTimeValue = value.set('hour', value.get('hour') - 12); + setMeridiem('AM'); + setTimeValue(newTimeValue); + } + }; + return ( focusVisible: isFocusVisibleProp || isFocusVisible, active: isPressedProp || isPressed, pressed: isPressed, - invalid: isInvalid, required: isRequired, readOnly: isReadOnly, }} @@ -68,7 +82,6 @@ export const TimeInputMeridiem = (StyledTimeInputMeridiem: any) => isFocusVisibleProp || isFocusVisible ? 'true' : 'false', active: isPressedProp || isPressed ? 'true' : 'false', pressed: isPressed && isPressedProp ? 'true' : 'false', - invalid: isInvalid ? 'true' : 'false', required: isRequired ? 'true' : 'false', readOnly: isReadOnly ? 'true' : 'false', }} @@ -94,7 +107,17 @@ export const TimeInputMeridiem = (StyledTimeInputMeridiem: any) => } )} onPress={composeEventHandlers(props?.onPress, () => - updateMeridiem(meridiemValue) + updateMeridiem(meridiem) + )} + // @ts-ignore - web only + onFocus={composeEventHandlers( + composeEventHandlers(props?.onFocus, focusProps.onFocus), + focusRingProps.onFocus + )} + // @ts-ignore - web only + onBlur={composeEventHandlers( + composeEventHandlers(props?.onBlur, focusProps.onBlur), + focusRingProps.onBlur )} > {children} diff --git a/packages/unstyled/time-input/src/TimeInputMeridiemText.tsx b/packages/unstyled/time-input/src/TimeInputMeridiemText.tsx index fb7e4d26ef..140f427622 100644 --- a/packages/unstyled/time-input/src/TimeInputMeridiemText.tsx +++ b/packages/unstyled/time-input/src/TimeInputMeridiemText.tsx @@ -6,13 +6,11 @@ export const TimeInputMeridiemText = (StyledTimeInputMeridiemText: any) => const { isDisabled, isReadOnly, - isFocused, - isInvalid, - isFocusVisible, meridiemHovered, - meridiemValue, + meridiem, meridiemPressed, } = useTimeInput('TimeInputContext'); + return ( states={{ hover: meridiemHovered, disabled: isDisabled, - focusVisible: isFocusVisible, - focus: isFocused, active: meridiemPressed, readOnly: isReadOnly, - invalid: isInvalid, }} dataSet={{ hover: meridiemHovered, - focus: focus, + disabled: isDisabled, active: meridiemPressed, readOnly: isReadOnly, - invalid: isInvalid, }} > - {meridiemValue} + {meridiem} ); }); diff --git a/packages/unstyled/time-input/src/TimeInputMin.tsx b/packages/unstyled/time-input/src/TimeInputMin.tsx index a5ef46fc6a..fdbff98446 100644 --- a/packages/unstyled/time-input/src/TimeInputMin.tsx +++ b/packages/unstyled/time-input/src/TimeInputMin.tsx @@ -1,9 +1,11 @@ -import React, { forwardRef, useMemo, useRef } from 'react'; +import React, { forwardRef, useMemo, useRef, useState } from 'react'; import { Platform } from 'react-native'; import { useFormControl } from '@gluestack-ui/form-control'; import { useTimeInput } from './TimeInputContext'; import { mergeRefs } from '@gluestack-ui/utils'; import { useHover } from '@react-native-aria/interactions'; +import { useFocusRing } from '@react-native-aria/focus'; +import type { ITimeInputFieldProps } from './types'; export const TimeInputMin = (StyledTimeInputMin: any) => forwardRef( @@ -14,37 +16,41 @@ export const TimeInputMin = (StyledTimeInputMin: any) => 'isHovered': isHoveredProp = true, 'aria-label': ariaLabel = 'Minutes', editable, - disabled, + 'isDisabled': isDisabledProp = false, + 'isFocused': isFocusedProp = false, + 'isFocusVisible': isFocusVisibleProp, ...props - }: any, + }: Omit & { children: React.ReactNode }, ref?: any ) => { const { isDisabled, isReadOnly, - isFocused, isInvalid, - setIsFocused, - isFocusVisible, isRequired, - updateMinutes, - timeValue, + value, + setTimeValue, } = useTimeInput('TimeInputContext'); + const inputRef = useRef(null); + const { isHovered }: any = useHover({}, inputRef); + const inputProps = useFormControl({ - isDisabled: props.isDisabled || disabled, - isInvalid: props.isInvalid, - isReadOnly: props.isReadOnly, - isRequired: props.isRequired, + isDisabled: isDisabledProp, + isInvalid: isInvalid, + isReadOnly: isReadOnly, + isRequired: isRequired, id: props.id, }); - const { isHovered }: any = useHover({}, inputRef); + const [isFocused, setIsFocused] = useState(false); const handleFocus = (focusState: boolean, callback: any) => { - setIsFocused?.(focusState); + setIsFocused(focusState); callback(); }; + const { isFocusVisible }: any = useFocusRing(); + const mergedRef = mergeRefs([ref, inputRef]); const editableProp = useMemo(() => { @@ -57,30 +63,38 @@ export const TimeInputMin = (StyledTimeInputMin: any) => } }, [isDisabled, inputProps.isDisabled, isReadOnly, editable]); - const handleChange = (e: any) => { - const newMinutes = e.target.value; - updateMinutes(newMinutes); + const handleChange = (newMinutesInt: string) => { + const newMinutes = newMinutesInt.replace(/[^0-9]/g, ''); + if (newMinutes === newMinutesInt) { + const newTimeValue = newMinutes + ? value + .set('minute', parseInt(newMinutes) % 60) + .second(new Date().getSeconds()) + : value.set('minute', 0).second(new Date().getSeconds()); + setTimeValue(newTimeValue); + } }; return ( onKeyPress && onKeyPress(e); }} onFocus={(e: any) => { - handleFocus( - true, - props?.onFocus ? () => props?.onFocus(e) : () => {} - ); + handleFocus(true, () => props.onFocus?.(e)); }} onBlur={(e: any) => { - handleFocus( - false, - props?.onBlur ? () => props?.onBlur(e) : () => {} - ); + handleFocus(false, () => props.onBlur?.(e)); }} ref={mergedRef} - value={timeValue.split(':')[1]} - onChange={handleChange} + value={value.get('minute').toString()} + onChangeText={handleChange} keyboardType="number-pad" > {children} diff --git a/packages/unstyled/time-input/src/TimeInputSec.tsx b/packages/unstyled/time-input/src/TimeInputSec.tsx deleted file mode 100644 index cf25ebbd1c..0000000000 --- a/packages/unstyled/time-input/src/TimeInputSec.tsx +++ /dev/null @@ -1,123 +0,0 @@ -import React, { forwardRef, useMemo, useRef } from 'react'; -import { Platform } from 'react-native'; -import { useFormControl } from '@gluestack-ui/form-control'; -import { useTimeInput } from './TimeInputContext'; -import { mergeRefs } from '@gluestack-ui/utils'; -import { useHover } from '@react-native-aria/interactions'; - -export const TimeInputSec = (StyledTimeInputSec: any) => - forwardRef( - ( - { - children, - onKeyPress, - 'isHovered': isHoveredProp = true, - 'aria-label': ariaLabel = 'Seconds', - editable, - disabled, - ...props - }: any, - ref?: any - ) => { - const { - isDisabled, - isReadOnly, - isFocused, - isInvalid, - setIsFocused, - isFocusVisible, - isRequired, - updateSeconds, - timeValue, - } = useTimeInput('TimeInputContext'); - - const inputRef = useRef(null); - - const inputProps = useFormControl({ - isDisabled: props.isDisabled || disabled, - isInvalid: props.isInvalid, - isReadOnly: props.isReadOnly, - isRequired: props.isRequired, - id: props.id, - }); - - const handleFocus = (focusState: boolean, callback: any) => { - setIsFocused?.(focusState); - callback(); - }; - const { isHovered }: any = useHover({}, inputRef); - - const mergedRef = mergeRefs([ref, inputRef]); - - const editableProp = useMemo(() => { - if (editable !== undefined) { - return editable; - } else { - return isDisabled || inputProps.isDisabled || isReadOnly - ? false - : true; - } - }, [isDisabled, inputProps.isDisabled, isReadOnly, editable]); - - const handleChange = (e: any) => { - const newSeconds = e.target.value; - updateSeconds(newSeconds); - }; - - return ( - { - e.persist(); - onKeyPress && onKeyPress(e); - }} - onFocus={(e: any) => { - handleFocus( - true, - props?.onFocus ? () => props?.onFocus(e) : () => {} - ); - }} - onBlur={(e: any) => { - handleFocus( - false, - props?.onBlur ? () => props?.onBlur(e) : () => {} - ); - }} - ref={mergedRef} - value={timeValue.split(':')[2]} - onChange={handleChange} - keyboardType="number-pad" - > - {children} - - ); - } - ); diff --git a/packages/unstyled/time-input/src/index.tsx b/packages/unstyled/time-input/src/index.tsx index 8841cf5e34..ff66c4ae67 100644 --- a/packages/unstyled/time-input/src/index.tsx +++ b/packages/unstyled/time-input/src/index.tsx @@ -1,6 +1,5 @@ import { TimeInputHr } from './TimeInputHr'; import { TimeInputMin } from './TimeInputMin'; -import { TimeInputSec } from './TimeInputSec'; import type { ITimeInputComponentType } from './types'; import { TimeInputGroup } from './TimeInputGroup'; import { TimeInputMeridiem } from './TimeInputMeridiem'; @@ -10,42 +9,36 @@ export const createTimeInput = < Root, TimeInputHr, TimeInputMin, - TimeInputSec, TimeInputMeridiem, TimeInputMeridiemText >({ Root, TimeInputHr: Hr, TimeInputMin: Min, - TimeInputSec: Sec, TimeInputMeridiem: Meridiem, TimeInputMeridiemText: MeridiemText, }: { Root: React.ComponentType; TimeInputHr: React.ComponentType; TimeInputMin: React.ComponentType; - TimeInputSec: React.ComponentType; TimeInputMeridiem: React.ComponentType; TimeInputMeridiemText: React.ComponentType; }) => { - const TimeInputField = TimeInputGroup(Root) as any; - TimeInputField.Hr = TimeInputHr(Hr); - TimeInputField.Min = TimeInputMin(Min); - TimeInputField.Sec = TimeInputSec(Sec); - TimeInputField.Meridiem = TimeInputMeridiem(Meridiem); - TimeInputField.MeridiemText = TimeInputMeridiemText(MeridiemText); - TimeInputField.displayName = 'TimeInputField'; - TimeInputField.Hr.displayName = 'TimeInputField.Hr'; - TimeInputField.Min.displayName = 'TimeInputField.Min'; - TimeInputField.Sec.displayName = 'TimeInputField.Sec'; - TimeInputField.Meridiem.displayName = 'TimeInputField.Meridiem'; - TimeInputField.MeridiemText.displayName = 'TimeInputField.MeridiemText'; + const TimeInput = TimeInputGroup(Root) as any; + TimeInput.Hr = TimeInputHr(Hr); + TimeInput.Min = TimeInputMin(Min); + TimeInput.Meridiem = TimeInputMeridiem(Meridiem); + TimeInput.MeridiemText = TimeInputMeridiemText(MeridiemText); + TimeInput.displayName = 'TimeInput'; + TimeInput.Hr.displayName = 'TimeInput.Hr'; + TimeInput.Min.displayName = 'TimeInput.Min'; + TimeInput.Meridiem.displayName = 'TimeInput.Meridiem'; + TimeInput.MeridiemText.displayName = 'TimeInput.MeridiemText'; - return TimeInputField as ITimeInputComponentType< + return TimeInput as ITimeInputComponentType< Root, TimeInputHr, TimeInputMin, - TimeInputSec, TimeInputMeridiem, TimeInputMeridiemText >; diff --git a/packages/unstyled/time-input/src/types.ts b/packages/unstyled/time-input/src/types.ts index 23b94a32b6..751423c95a 100644 --- a/packages/unstyled/time-input/src/types.ts +++ b/packages/unstyled/time-input/src/types.ts @@ -1,67 +1,136 @@ -export interface TimeInputContext { - isDisabled?: boolean; - isInvalid?: boolean; - isReadOnly?: boolean; - isRequired?: boolean; - isFocused?: boolean; - handleFocus?: any; - isFocusVisible?: boolean; - isFullWidth?: boolean; - timeInputFieldRef?: any; - setIsFocused?: (value: boolean) => void; - meridiemHovered?: boolean; - updateMeridiem?: (value: boolean) => void; -} +import { Dayjs } from 'dayjs'; -export interface ITimeInputFieldProps { +export interface ITimeInputProps { + /** + * If true, the input will indicate an error. + */ isInvalid?: boolean; + /** + * If true, the input will be disabled. + */ isDisabled?: boolean; + /** + * If true, the input will be hovered. + */ isHovered?: boolean; - isFocused?: boolean; - isRequired?: boolean; + /** + * If true, prevents the value of the input from being edited. + */ isReadOnly?: boolean; - isFullWidth?: boolean; + /** + * This will set aria-required="true" on web when passed in formcontrol. + */ + isRequired?: boolean; + /** + * value that will be set to the input + */ + value?: Dayjs; + /** + * callback function that will be called when the value changes + */ + onChange?: (value: Dayjs) => void; } -export interface ITimeInputProps { - onKeyPress?: (e: any) => void; - onFocus?: any; - onBlur?: any; - isHovered?: boolean; - isDisabled?: boolean; +export interface ITimeInputFieldProps { + /** + * If true, the input will be hovered. + */ + 'isHovered'?: boolean; + /** + * If true, the input will be disabled. + */ + 'isDisabled'?: boolean; + /** + * the input will be editable. + */ + 'editable'?: boolean; + /** + * If true, the input will be focused. + */ + 'isFocused'?: boolean; + /** + * If true, the input will be focus visible. + */ + 'isFocusVisible'?: boolean; + /** + * aria-label for the input + */ + 'aria-label'?: string; + /** + * callback function that will be called when the key is pressed + */ + 'onKeyPress'?: (e: any) => void; + /** + * callback function that will be called when the input is focused + */ + 'onFocus'?: (e: any) => void; + /** + * callback function that will be called when the input is blurred + */ + 'onBlur'?: (e: any) => void; + /** + * id for the input + */ + 'id'?: string; } export interface ITimeInputMeridiemProps { + /** + * If true, the input will be on active state on press. + */ isPressed?: boolean; + /** + * If true, the input will be hovered. + */ isHovered?: boolean; + /** + * callback function that will be called when the input is pressed + */ + onPress?: () => void; + /** + * callback function that will be called when the input is pressed in + */ + onPressIn?: () => void; + /** + * callback function that will be called when the input is pressed out + */ + onPressOut?: () => void; + /** + * If true, the input will be focused. + */ + isFocused?: boolean; + /** + * If true, the input will be focus visible. + */ + isFocusVisible?: boolean; + /** + * callback function that will be called when the input is focused + */ + onFocus?: (e: any) => void; + /** + * callback function that will be called when the input is blurred + */ + onBlur?: (e: any) => void; } -export type ITimeInputComponentType< - Root, - Hr, - Min, - Sec, - Meridiem, - MeridiemText -> = React.ForwardRefExoticComponent< - React.RefAttributes & React.PropsWithoutRef & ITimeInputFieldProps -> & { - Hr: React.ForwardRefExoticComponent< - React.RefAttributes
& React.PropsWithoutRef
& ITimeInputProps - >; - Min: React.ForwardRefExoticComponent< - React.RefAttributes & React.PropsWithoutRef & ITimeInputProps - >; - Sec: React.ForwardRefExoticComponent< - React.RefAttributes & React.PropsWithoutRef & ITimeInputProps - >; - Meridiem: React.ForwardRefExoticComponent< - React.RefAttributes & - React.PropsWithoutRef & - ITimeInputMeridiemProps - >; - MeridiemText: React.ForwardRefExoticComponent< - React.RefAttributes & React.PropsWithoutRef - >; -}; +export type ITimeInputComponentType = + React.ForwardRefExoticComponent< + React.RefAttributes & React.PropsWithoutRef & ITimeInputProps + > & { + Hr: React.ForwardRefExoticComponent< + React.RefAttributes
& React.PropsWithoutRef
& ITimeInputProps + >; + Min: React.ForwardRefExoticComponent< + React.RefAttributes & React.PropsWithoutRef & ITimeInputProps + >; + Meridiem: React.ForwardRefExoticComponent< + React.RefAttributes & + React.PropsWithoutRef & + ITimeInputMeridiemProps + >; + MeridiemText: React.ForwardRefExoticComponent< + React.RefAttributes & React.PropsWithoutRef + >; + Text: React.FC; + }; export interface ITimeInputMeridiemProps { isPressed?: boolean; isDisabled?: boolean; @@ -73,4 +142,6 @@ export interface ITimeInputMeridiemProps { isReadOnly?: boolean; isRequired?: boolean; toggleItem?: () => void; + onFocus?: (e: any) => void; + onBlur?: (e: any) => void; } diff --git a/packages/unstyled/time-input/tsconfig.json b/packages/unstyled/time-input/tsconfig.json new file mode 100644 index 0000000000..ac8f6075d2 --- /dev/null +++ b/packages/unstyled/time-input/tsconfig.json @@ -0,0 +1,31 @@ +{ + "include": ["./src"], + "exclude": ["node_modules", "example"], + "paths": {}, + "compilerOptions": { + "ignoreDeprecations": "5.0", + "noEmit": false, + "declaration": true, + "allowJs": true, + "allowUnreachableCode": false, + "allowUnusedLabels": true, + "esModuleInterop": true, + "verbatimModuleSyntax": true, + "forceConsistentCasingInFileNames": true, + "jsx": "preserve", + "lib": ["esnext", "dom"], + "module": "esnext", + "moduleResolution": "node", + "noFallthroughCasesInSwitch": true, + "noImplicitReturns": true, + "noImplicitUseStrict": false, + "noStrictGenericChecks": false, + "noUnusedLocals": false, + "noUnusedParameters": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "strict": true, + "target": "esnext", + "outDir": "./lib" + } +} diff --git a/yarn.lock b/yarn.lock index 257bd45361..48545f1051 100644 --- a/yarn.lock +++ b/yarn.lock @@ -199,6 +199,15 @@ "@babel/highlight" "^7.24.7" picocolors "^1.0.0" +"@babel/code-frame@^7.25.9", "@babel/code-frame@^7.26.2": + version "7.26.2" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85" + integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ== + dependencies: + "@babel/helper-validator-identifier" "^7.25.9" + js-tokens "^4.0.0" + picocolors "^1.0.0" + "@babel/compat-data@^7.20.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.25.2", "@babel/compat-data@^7.25.4": version "7.25.4" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.4.tgz#7d2a80ce229890edcf4cc259d4d696cb4dae2fcb" @@ -288,6 +297,17 @@ "@jridgewell/trace-mapping" "^0.3.25" jsesc "^2.5.1" +"@babel/generator@^7.14.0", "@babel/generator@^7.26.3": + version "7.26.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.3.tgz#ab8d4360544a425c90c248df7059881f4b2ce019" + integrity sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ== + dependencies: + "@babel/parser" "^7.26.3" + "@babel/types" "^7.26.3" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^3.0.2" + "@babel/helper-annotate-as-pure@^7.18.6", "@babel/helper-annotate-as-pure@^7.22.5", "@babel/helper-annotate-as-pure@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz#5373c7bc8366b12a033b4be1ac13a206c6656aab" @@ -450,11 +470,21 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz#5b3329c9a58803d5df425e5785865881a81ca48d" integrity sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ== +"@babel/helper-string-parser@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c" + integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== + "@babel/helper-validator-identifier@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== +"@babel/helper-validator-identifier@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" + integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== + "@babel/helper-validator-option@^7.24.7", "@babel/helper-validator-option@^7.24.8": version "7.24.8" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz#3725cdeea8b480e86d34df15304806a06975e33d" @@ -494,6 +524,13 @@ dependencies: "@babel/types" "^7.25.6" +"@babel/parser@^7.14.0", "@babel/parser@^7.25.9", "@babel/parser@^7.26.3": + version "7.26.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.3.tgz#8c51c5db6ddf08134af1ddbacf16aaab48bac234" + integrity sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA== + dependencies: + "@babel/types" "^7.26.3" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.3": version "7.25.3" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.3.tgz#dca427b45a6c0f5c095a1c639dfe2476a3daba7f" @@ -1460,6 +1497,15 @@ "@babel/parser" "^7.25.0" "@babel/types" "^7.25.0" +"@babel/template@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.9.tgz#ecb62d81a8a6f5dc5fe8abfc3901fc52ddf15016" + integrity sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg== + dependencies: + "@babel/code-frame" "^7.25.9" + "@babel/parser" "^7.25.9" + "@babel/types" "^7.25.9" + "@babel/traverse@^7.1.6", "@babel/traverse@^7.12.11", "@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.20.0", "@babel/traverse@^7.20.13", "@babel/traverse@^7.20.5", "@babel/traverse@^7.23.0", "@babel/traverse@^7.24.7", "@babel/traverse@^7.24.8", "@babel/traverse@^7.25.0", "@babel/traverse@^7.25.1", "@babel/traverse@^7.25.2", "@babel/traverse@^7.25.3", "@babel/traverse@^7.25.4", "@babel/traverse@^7.4.5", "@babel/traverse@^7.9.0": version "7.25.6" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.6.tgz#04fad980e444f182ecf1520504941940a90fea41" @@ -1473,6 +1519,19 @@ debug "^4.3.1" globals "^11.1.0" +"@babel/traverse@^7.14.0": + version "7.26.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.26.4.tgz#ac3a2a84b908dde6d463c3bfa2c5fdc1653574bd" + integrity sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w== + dependencies: + "@babel/code-frame" "^7.26.2" + "@babel/generator" "^7.26.3" + "@babel/parser" "^7.26.3" + "@babel/template" "^7.25.9" + "@babel/types" "^7.26.3" + debug "^4.3.1" + globals "^11.1.0" + "@babel/types@^7.0.0", "@babel/types@^7.12.11", "@babel/types@^7.12.7", "@babel/types@^7.2.0", "@babel/types@^7.20.0", "@babel/types@^7.20.7", "@babel/types@^7.23.0", "@babel/types@^7.24.7", "@babel/types@^7.24.8", "@babel/types@^7.25.0", "@babel/types@^7.25.2", "@babel/types@^7.25.6", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.9.0": version "7.25.6" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.6.tgz#893942ddb858f32ae7a004ec9d3a76b3463ef8e6" @@ -1482,6 +1541,14 @@ "@babel/helper-validator-identifier" "^7.24.7" to-fast-properties "^2.0.0" +"@babel/types@^7.25.9", "@babel/types@^7.26.3": + version "7.26.3" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.3.tgz#37e79830f04c2b5687acc77db97fbc75fb81f3c0" + integrity sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA== + dependencies: + "@babel/helper-string-parser" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + "@base2/pretty-print-object@1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@base2/pretty-print-object/-/pretty-print-object-1.0.1.tgz#371ba8be66d556812dc7fb169ebc3c08378f69d4" @@ -2913,6 +2980,13 @@ slash "^3.0.0" strip-ansi "^6.0.0" +"@jest/create-cache-key-function@^27.0.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/create-cache-key-function/-/create-cache-key-function-27.5.1.tgz#7448fae15602ea95c828f5eceed35c202a820b31" + integrity sha512-dmH1yW+makpTSURTy8VzdUwFnfQh1G8R+DxO2Ho2FFmBbKFEVm+3jWdvFhE2VqB/LATCTokkP0dotjyQyw5/AQ== + dependencies: + "@jest/types" "^27.5.1" + "@jest/create-cache-key-function@^29.2.1", "@jest/create-cache-key-function@^29.6.3": version "29.7.0" resolved "https://registry.yarnpkg.com/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz#793be38148fab78e65f40ae30c36785f4ad859f0" @@ -4172,6 +4246,26 @@ execa "^5.0.0" prompts "^2.4.0" +"@react-native-community/cli-clean@11.4.1": + version "11.4.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-11.4.1.tgz#0155a02e4158c8a61ba3d7a2b08f3ebebed81906" + integrity sha512-cwUbY3c70oBGv3FvQJWe2Qkq6m1+/dcEBonMDTYyH6i+6OrkzI4RkIGpWmbG1IS5JfE9ISUZkNL3946sxyWNkw== + dependencies: + "@react-native-community/cli-tools" "11.4.1" + chalk "^4.1.2" + execa "^5.0.0" + prompts "^2.4.0" + +"@react-native-community/cli-clean@^9.2.1": + version "9.2.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-9.2.1.tgz#198c5dd39c432efb5374582073065ff75d67d018" + integrity sha512-dyNWFrqRe31UEvNO+OFWmQ4hmqA07bR9Ief/6NnGwx67IO9q83D5PEAf/o96ML6jhSbDwCmpPKhPwwBbsyM3mQ== + dependencies: + "@react-native-community/cli-tools" "^9.2.1" + chalk "^4.1.2" + execa "^1.0.0" + prompts "^2.4.0" + "@react-native-community/cli-config@11.3.6": version "11.3.6" resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-11.3.6.tgz#6d3636a8a3c4542ebb123eaf61bbbc0c2a1d2a6b" @@ -4184,6 +4278,29 @@ glob "^7.1.3" joi "^17.2.1" +"@react-native-community/cli-config@11.4.1": + version "11.4.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-11.4.1.tgz#c27f91d2753f0f803cc79bbf299f19648a5d5627" + integrity sha512-sLdv1HFVqu5xNpeaR1+std0t7FFZaobpmpR0lFCOzKV7H/l611qS2Vo8zssmMK+oQbCs5JsX3SFPciODeIlaWA== + dependencies: + "@react-native-community/cli-tools" "11.4.1" + chalk "^4.1.2" + cosmiconfig "^5.1.0" + deepmerge "^4.3.0" + glob "^7.1.3" + joi "^17.2.1" + +"@react-native-community/cli-config@^9.2.1": + version "9.2.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-9.2.1.tgz#54eb026d53621ccf3a9df8b189ac24f6e56b8750" + integrity sha512-gHJlBBXUgDN9vrr3aWkRqnYrPXZLztBDQoY97Mm5Yo6MidsEpYo2JIP6FH4N/N2p1TdjxJL4EFtdd/mBpiR2MQ== + dependencies: + "@react-native-community/cli-tools" "^9.2.1" + cosmiconfig "^5.1.0" + deepmerge "^3.2.0" + glob "^7.1.3" + joi "^17.2.1" + "@react-native-community/cli-debugger-ui@11.3.6": version "11.3.6" resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-11.3.6.tgz#1eb2276450f270a938686b49881fe232a08c01c4" @@ -4191,6 +4308,20 @@ dependencies: serve-static "^1.13.1" +"@react-native-community/cli-debugger-ui@11.4.1": + version "11.4.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-11.4.1.tgz#783cc276e1360baf8235dc8c6ebbbce0fe01d944" + integrity sha512-+pgIjGNW5TrJF37XG3djIOzP+WNoPp67to/ggDhrshuYgpymfb9XpDVsURJugy0Sy3RViqb83kQNK765QzTIvw== + dependencies: + serve-static "^1.13.1" + +"@react-native-community/cli-debugger-ui@^9.0.0": + version "9.0.0" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-9.0.0.tgz#ea5c5dad6008bccd840d858e160d42bb2ced8793" + integrity sha512-7hH05ZwU9Tp0yS6xJW0bqcZPVt0YCK7gwj7gnRu1jDNN2kughf6Lg0Ys29rAvtZ7VO1PK5c1O+zs7yFnylQDUA== + dependencies: + serve-static "^1.13.1" + "@react-native-community/cli-doctor@11.3.6": version "11.3.6" resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-11.3.6.tgz#fa33ee00fe5120af516aa0f17fe3ad50270976e7" @@ -4215,6 +4346,51 @@ wcwidth "^1.0.1" yaml "^2.2.1" +"@react-native-community/cli-doctor@11.4.1": + version "11.4.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-11.4.1.tgz#516ef5932de3e12989695e7cb7aba82b81e7b2de" + integrity sha512-O6oPiRsl8pdkcyNktpzvJAXUqdocoY4jh7Tt7wA69B1JKCJA7aPCecwJgpUZb63ZYoxOtRtYM3BYQKzRMLIuUw== + dependencies: + "@react-native-community/cli-config" "11.4.1" + "@react-native-community/cli-platform-android" "11.4.1" + "@react-native-community/cli-platform-ios" "11.4.1" + "@react-native-community/cli-tools" "11.4.1" + chalk "^4.1.2" + command-exists "^1.2.8" + envinfo "^7.7.2" + execa "^5.0.0" + hermes-profile-transformer "^0.0.6" + node-stream-zip "^1.9.1" + ora "^5.4.1" + prompts "^2.4.0" + semver "^7.5.2" + strip-ansi "^5.2.0" + sudo-prompt "^9.0.0" + wcwidth "^1.0.1" + yaml "^2.2.1" + +"@react-native-community/cli-doctor@^9.3.0": + version "9.3.0" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-9.3.0.tgz#8817a3fd564453467def5b5bc8aecdc4205eff50" + integrity sha512-/fiuG2eDGC2/OrXMOWI5ifq4X1gdYTQhvW2m0TT5Lk1LuFiZsbTCp1lR+XILKekuTvmYNjEGdVpeDpdIWlXdEA== + dependencies: + "@react-native-community/cli-config" "^9.2.1" + "@react-native-community/cli-platform-ios" "^9.3.0" + "@react-native-community/cli-tools" "^9.2.1" + chalk "^4.1.2" + command-exists "^1.2.8" + envinfo "^7.7.2" + execa "^1.0.0" + hermes-profile-transformer "^0.0.6" + ip "^1.1.5" + node-stream-zip "^1.9.1" + ora "^5.4.1" + prompts "^2.4.0" + semver "^6.3.0" + strip-ansi "^5.2.0" + sudo-prompt "^9.0.0" + wcwidth "^1.0.1" + "@react-native-community/cli-hermes@11.3.6": version "11.3.6" resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-11.3.6.tgz#b1acc7feff66ab0859488e5812b3b3e8b8e9434c" @@ -4226,6 +4402,27 @@ hermes-profile-transformer "^0.0.6" ip "^1.1.5" +"@react-native-community/cli-hermes@11.4.1": + version "11.4.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-11.4.1.tgz#abf487ae8ab53c66f6f1178bcd37ecbbbac9fb5c" + integrity sha512-1VAjwcmv+i9BJTMMVn5Grw7AcgURhTyfHVghJ1YgBE2euEJxPuqPKSxP54wBOQKnWUwsuDQAtQf+jPJoCxJSSA== + dependencies: + "@react-native-community/cli-platform-android" "11.4.1" + "@react-native-community/cli-tools" "11.4.1" + chalk "^4.1.2" + hermes-profile-transformer "^0.0.6" + +"@react-native-community/cli-hermes@^9.3.4": + version "9.3.4" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-9.3.4.tgz#47851847c4990272687883bd8bf53733d5f3c341" + integrity sha512-VqTPA7kknCXgtYlRf+sDWW4yxZ6Gtg1Ga+Rdrn1qSKuo09iJ8YKPoQYOu5nqbIYJQAEhorWQyo1VvNgd0wd49w== + dependencies: + "@react-native-community/cli-platform-android" "^9.3.4" + "@react-native-community/cli-tools" "^9.2.1" + chalk "^4.1.2" + hermes-profile-transformer "^0.0.6" + ip "^1.1.5" + "@react-native-community/cli-platform-android@11.3.6": version "11.3.6" resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-11.3.6.tgz#6f3581ca4eed3deec7edba83c1bc467098c8167b" @@ -4237,6 +4434,30 @@ glob "^7.1.3" logkitty "^0.7.1" +"@react-native-community/cli-platform-android@11.4.1", "@react-native-community/cli-platform-android@^11.4.1": + version "11.4.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-11.4.1.tgz#ec5fc97e87834f2e33cb0d34dcef6c17b20f60fc" + integrity sha512-VMmXWIzk0Dq5RAd+HIEa3Oe7xl2jso7+gOr6E2HALF4A3fCKUjKZQ6iK2t6AfnY04zftvaiKw6zUXtrfl52AVQ== + dependencies: + "@react-native-community/cli-tools" "11.4.1" + chalk "^4.1.2" + execa "^5.0.0" + glob "^7.1.3" + logkitty "^0.7.1" + +"@react-native-community/cli-platform-android@9.3.4", "@react-native-community/cli-platform-android@^9.3.4": + version "9.3.4" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-9.3.4.tgz#42f22943b6ee15713add6af8608c1d0ebf79d774" + integrity sha512-BTKmTMYFuWtMqimFQJfhRyhIWw1m+5N5svR1S5+DqPcyFuSXrpNYDWNSFR8E105xUbFANmsCZZQh6n1WlwMpOA== + dependencies: + "@react-native-community/cli-tools" "^9.2.1" + chalk "^4.1.2" + execa "^1.0.0" + fs-extra "^8.1.0" + glob "^7.1.3" + logkitty "^0.7.1" + slash "^3.0.0" + "@react-native-community/cli-platform-ios@11.3.6": version "11.3.6" resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-11.3.6.tgz#0fa58d01f55d85618c4218925509a4be77867dab" @@ -4249,6 +4470,29 @@ glob "^7.1.3" ora "^5.4.1" +"@react-native-community/cli-platform-ios@11.4.1", "@react-native-community/cli-platform-ios@^11.4.1": + version "11.4.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-11.4.1.tgz#12d72741273b684734d5ed021415b7f543a6f009" + integrity sha512-RPhwn+q3IY9MpWc9w/Qmzv03mo8sXdah2eSZcECgweqD5SHWtOoRCUt11zM8jASpAQ8Tm5Je7YE9bHvdwGl4hA== + dependencies: + "@react-native-community/cli-tools" "11.4.1" + chalk "^4.1.2" + execa "^5.0.0" + fast-xml-parser "^4.0.12" + glob "^7.1.3" + ora "^5.4.1" + +"@react-native-community/cli-platform-ios@9.3.0", "@react-native-community/cli-platform-ios@^9.3.0": + version "9.3.0" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-9.3.0.tgz#45abde2a395fddd7cf71e8b746c1dc1ee2260f9a" + integrity sha512-nihTX53BhF2Q8p4B67oG3RGe1XwggoGBrMb6vXdcu2aN0WeXJOXdBLgR900DAA1O8g7oy1Sudu6we+JsVTKnjw== + dependencies: + "@react-native-community/cli-tools" "^9.2.1" + chalk "^4.1.2" + execa "^1.0.0" + glob "^7.1.3" + ora "^5.4.1" + "@react-native-community/cli-plugin-metro@11.3.6": version "11.3.6" resolved "https://registry.yarnpkg.com/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-11.3.6.tgz#2d632c304313435c9ea104086901fbbeba0f1882" @@ -4266,6 +4510,39 @@ metro-runtime "0.76.7" readline "^1.3.0" +"@react-native-community/cli-plugin-metro@11.4.1": + version "11.4.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-11.4.1.tgz#8d51c59a9a720f99150d4153e757d5d1d1dabd22" + integrity sha512-JxbIqknYcQ5Z4rWROtu5LNakLfMiKoWcMoPqIrBLrV5ILm1XUJj1/8fATCcotZqV3yzB3SCJ3RrhKx7dQ3YELw== + dependencies: + "@react-native-community/cli-server-api" "11.4.1" + "@react-native-community/cli-tools" "11.4.1" + chalk "^4.1.2" + execa "^5.0.0" + metro "^0.76.9" + metro-config "^0.76.9" + metro-core "^0.76.9" + metro-react-native-babel-transformer "^0.76.9" + metro-resolver "^0.76.9" + metro-runtime "^0.76.9" + readline "^1.3.0" + +"@react-native-community/cli-plugin-metro@^9.3.3": + version "9.3.3" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-9.3.3.tgz#330d7b9476a3fdabdd5863f114fa962289e280dc" + integrity sha512-lPBw6XieNdj2AbWDN0Rc+jNOx8hBgSQyv0gUAm01qtJe4I9FjSMU6nOGTxMpWpICo6TYl/cmPGXOzbfpwxwtkQ== + dependencies: + "@react-native-community/cli-server-api" "^9.2.1" + "@react-native-community/cli-tools" "^9.2.1" + chalk "^4.1.2" + metro "0.72.4" + metro-config "0.72.4" + metro-core "0.72.4" + metro-react-native-babel-transformer "0.72.4" + metro-resolver "0.72.4" + metro-runtime "0.72.4" + readline "^1.3.0" + "@react-native-community/cli-server-api@11.3.6": version "11.3.6" resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-11.3.6.tgz#3a16039518f7f3865f85f8f54b19174448bbcdbb" @@ -4281,6 +4558,36 @@ serve-static "^1.13.1" ws "^7.5.1" +"@react-native-community/cli-server-api@11.4.1": + version "11.4.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-11.4.1.tgz#3dda094c4ab2369db34fe991c320e3cd78f097b3" + integrity sha512-isxXE8X5x+C4kN90yilD08jaLWD34hfqTfn/Xbl1u/igtdTsCaQGvWe9eaFamrpWFWTpVtj6k+vYfy8AtYSiKA== + dependencies: + "@react-native-community/cli-debugger-ui" "11.4.1" + "@react-native-community/cli-tools" "11.4.1" + compression "^1.7.1" + connect "^3.6.5" + errorhandler "^1.5.1" + nocache "^3.0.1" + pretty-format "^26.6.2" + serve-static "^1.13.1" + ws "^7.5.1" + +"@react-native-community/cli-server-api@^9.2.1": + version "9.2.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-9.2.1.tgz#41ac5916b21d324bccef447f75600c03b2f54fbe" + integrity sha512-EI+9MUxEbWBQhWw2PkhejXfkcRqPl+58+whlXJvKHiiUd7oVbewFs0uLW0yZffUutt4FGx6Uh88JWEgwOzAdkw== + dependencies: + "@react-native-community/cli-debugger-ui" "^9.0.0" + "@react-native-community/cli-tools" "^9.2.1" + compression "^1.7.1" + connect "^3.6.5" + errorhandler "^1.5.0" + nocache "^3.0.1" + pretty-format "^26.6.2" + serve-static "^1.13.1" + ws "^7.5.1" + "@react-native-community/cli-tools@11.3.6": version "11.3.6" resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-11.3.6.tgz#ec213b8409917a56e023595f148c84b9cb3ad871" @@ -4296,6 +4603,36 @@ semver "^7.5.2" shell-quote "^1.7.3" +"@react-native-community/cli-tools@11.4.1": + version "11.4.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-11.4.1.tgz#f6c69967e077b10cd8a884a83e53eb199dd9ee9f" + integrity sha512-GuQIuY/kCPfLeXB1aiPZ5HvF+e/wdO42AYuNEmT7FpH/0nAhdTxA9qjL8m3vatDD2/YK7WNOSVNsl2UBZuOISg== + dependencies: + appdirsjs "^1.2.4" + chalk "^4.1.2" + find-up "^5.0.0" + mime "^2.4.1" + node-fetch "^2.6.0" + open "^6.2.0" + ora "^5.4.1" + semver "^7.5.2" + shell-quote "^1.7.3" + +"@react-native-community/cli-tools@^9.2.1": + version "9.2.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-9.2.1.tgz#c332324b1ea99f9efdc3643649bce968aa98191c" + integrity sha512-bHmL/wrKmBphz25eMtoJQgwwmeCylbPxqFJnFSbkqJPXQz3ManQ6q/gVVMqFyz7D3v+riaus/VXz3sEDa97uiQ== + dependencies: + appdirsjs "^1.2.4" + chalk "^4.1.2" + find-up "^5.0.0" + mime "^2.4.1" + node-fetch "^2.6.0" + open "^6.2.0" + ora "^5.4.1" + semver "^6.3.0" + shell-quote "^1.7.3" + "@react-native-community/cli-types@11.3.6": version "11.3.6" resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-11.3.6.tgz#34012f1d0cb1c4039268828abc07c9c69f2e15be" @@ -4303,6 +4640,20 @@ dependencies: joi "^17.2.1" +"@react-native-community/cli-types@11.4.1": + version "11.4.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-11.4.1.tgz#3842dc37ba3b09f929b485bcbd8218de19349ac2" + integrity sha512-B3q9A5BCneLDSoK/iSJ06MNyBn1qTxjdJeOgeS3MiCxgJpPcxyn/Yrc6+h0Cu9T9sgWj/dmectQPYWxtZeo5VA== + dependencies: + joi "^17.2.1" + +"@react-native-community/cli-types@^9.1.0": + version "9.1.0" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-9.1.0.tgz#dcd6a0022f62790fe1f67417f4690db938746aab" + integrity sha512-KDybF9XHvafLEILsbiKwz5Iobd+gxRaPyn4zSaAerBxedug4er5VUWa8Szy+2GeYKZzMh/gsb1o9lCToUwdT/g== + dependencies: + joi "^17.2.1" + "@react-native-community/cli@11.3.6": version "11.3.6" resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-11.3.6.tgz#d92618d75229eaf6c0391a6b075684eba5d9819f" @@ -4326,6 +4677,52 @@ prompts "^2.4.0" semver "^7.5.2" +"@react-native-community/cli@9.3.5": + version "9.3.5" + resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-9.3.5.tgz#73626d3be8f5e2e6389f2555d126666fb8de4389" + integrity sha512-X+/xSysHsb0rXUWZKtXnKGhUNMRPxYzyhBc3VMld+ygPaFG57TAdK9rFGRu7NkIsRI6qffF/SukQPVlBZIfBHg== + dependencies: + "@react-native-community/cli-clean" "^9.2.1" + "@react-native-community/cli-config" "^9.2.1" + "@react-native-community/cli-debugger-ui" "^9.0.0" + "@react-native-community/cli-doctor" "^9.3.0" + "@react-native-community/cli-hermes" "^9.3.4" + "@react-native-community/cli-plugin-metro" "^9.3.3" + "@react-native-community/cli-server-api" "^9.2.1" + "@react-native-community/cli-tools" "^9.2.1" + "@react-native-community/cli-types" "^9.1.0" + chalk "^4.1.2" + commander "^9.4.0" + execa "^1.0.0" + find-up "^4.1.0" + fs-extra "^8.1.0" + graceful-fs "^4.1.3" + prompts "^2.4.0" + semver "^6.3.0" + +"@react-native-community/cli@^11.4.1": + version "11.4.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-11.4.1.tgz#9a6346486622860dad721da406df70e29a45491f" + integrity sha512-NdAageVMtNhtvRsrq4NgJf5Ey2nA1CqmLvn7PhSawg+aIzMKmZuzWxGVwr9CoPGyjvNiqJlCWrLGR7NzOyi/sA== + dependencies: + "@react-native-community/cli-clean" "11.4.1" + "@react-native-community/cli-config" "11.4.1" + "@react-native-community/cli-debugger-ui" "11.4.1" + "@react-native-community/cli-doctor" "11.4.1" + "@react-native-community/cli-hermes" "11.4.1" + "@react-native-community/cli-plugin-metro" "11.4.1" + "@react-native-community/cli-server-api" "11.4.1" + "@react-native-community/cli-tools" "11.4.1" + "@react-native-community/cli-types" "11.4.1" + chalk "^4.1.2" + commander "^9.4.1" + execa "^5.0.0" + find-up "^4.1.0" + fs-extra "^8.1.0" + graceful-fs "^4.1.3" + prompts "^2.4.0" + semver "^7.5.2" + "@react-native-community/clipboard@^1.5.1": version "1.5.1" resolved "https://registry.yarnpkg.com/@react-native-community/clipboard/-/clipboard-1.5.1.tgz#32abb3ea2eb91ee3f9c5fb1d32d5783253c9fabe" @@ -4372,7 +4769,12 @@ resolved "https://registry.yarnpkg.com/@react-native/assets-registry/-/assets-registry-0.72.0.tgz#c82a76a1d86ec0c3907be76f7faf97a32bbed05d" integrity sha512-Im93xRJuHHxb1wniGhBMsxLwcfzdYreSZVQGDoMJgkd6+Iky61LInGEHnQCTN0fKNYF1Dvcofb4uMmE1RQHXHQ== -"@react-native/codegen@^0.72.6": +"@react-native/assets@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@react-native/assets/-/assets-1.0.0.tgz#c6f9bf63d274bafc8e970628de24986b30a55c8e" + integrity sha512-KrwSpS1tKI70wuKl68DwJZYEvXktDHdZMG0k2AXD/rJVSlB23/X2CB2cutVR0HwNMJIal9HOUOBB2rVfa6UGtQ== + +"@react-native/codegen@^0.72.6", "@react-native/codegen@^0.72.8": version "0.72.8" resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.72.8.tgz#0593f628e1310f430450a9479fbb4be35e7b63d6" integrity sha512-jQCcBlXV7B7ap5VlHhwIPieYz89yiRgwd2FPUBu+unz+kcJ6pAiB2U8RdLDmyIs8fiWd+Vq1xxaWs4TR329/ng== @@ -4395,6 +4797,11 @@ resolved "https://registry.yarnpkg.com/@react-native/js-polyfills/-/js-polyfills-0.72.1.tgz#905343ef0c51256f128256330fccbdb35b922291" integrity sha512-cRPZh2rBswFnGt5X5EUEPs0r+pAsXxYsifv/fgy9ZLQokuT52bPH+9xjDR+7TafRua5CttGW83wP4TntRcWNDA== +"@react-native/normalize-color@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@react-native/normalize-color/-/normalize-color-2.0.0.tgz#da955909432474a9a0fe1cbffc66576a0447f567" + integrity sha512-Wip/xsc5lw8vsBlmY2MO/gFLp3MvuZ2baBZjDeTjjndMgM0h5sxz7AZR62RDPGgstp8Np7JzjvVqVT7tpFZqsw== + "@react-native/normalize-color@^2.0.0", "@react-native/normalize-color@^2.1.0": version "2.1.0" resolved "https://registry.yarnpkg.com/@react-native/normalize-color/-/normalize-color-2.1.0.tgz#939b87a9849e81687d3640c5efa2a486ac266f91" @@ -4405,11 +4812,16 @@ resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.75.3.tgz#3407ac591f17e5462e297784b04bc25e4d62e788" integrity sha512-3mhF8AJFfIN0E5bEs/DQ4U2LzMJYm+FPSwY5bJ1DZhrxW1PFAh24bAPrSd8PwS0iarQ7biLdr1lWf/8LFv8pDA== -"@react-native/normalize-colors@^0.72.0": +"@react-native/normalize-colors@<0.73.0", "@react-native/normalize-colors@^0.72.0": version "0.72.0" resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.72.0.tgz#14294b7ed3c1d92176d2a00df48456e8d7d62212" integrity sha512-285lfdqSXaqKuBbbtP9qL2tDrfxdOFtIMvkKadtleRQkdOxx+uzGvFr82KHmc/sSiMtfXGp7JnFYWVh4sFl7Yw== +"@react-native/polyfills@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@react-native/polyfills/-/polyfills-2.0.0.tgz#4c40b74655c83982c8cf47530ee7dc13d957b6aa" + integrity sha512-K0aGNn1TjalKj+65D7ycc1//H9roAQ51GJVk5ZJQFb2teECGmzd86bYDC0aYdbRf7gtovescq4Zt6FR0tgXiHQ== + "@react-native/virtualized-lists@^0.72.4", "@react-native/virtualized-lists@^0.72.8": version "0.72.8" resolved "https://registry.yarnpkg.com/@react-native/virtualized-lists/-/virtualized-lists-0.72.8.tgz#a2c6a91ea0f1d40eb5a122fb063daedb92ed1dc3" @@ -6906,6 +7318,11 @@ abort-controller@^3.0.0: dependencies: event-target-shim "^5.0.0" +absolute-path@^0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/absolute-path/-/absolute-path-0.0.0.tgz#a78762fbdadfb5297be99b15d35a785b2f095bf7" + integrity sha512-HQiug4c+/s3WOvEnDRxXVmNtSG5s2gJM9r19BTcqjp7BWcE48PB+Y2G6jE65kqI0LpsQeMZygt/b60Gi4KxGyA== + accepts@^1.3.7, accepts@^1.3.8, accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7, accepts@~1.3.8: version "1.3.8" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" @@ -8509,7 +8926,7 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -camelcase@^6.2.0: +camelcase@^6.0.0, camelcase@^6.2.0: version "6.3.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== @@ -8982,7 +9399,7 @@ commander@^8.2.0: resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== -commander@^9.4.1: +commander@^9.4.0, commander@^9.4.1: version "9.5.0" resolved "https://registry.yarnpkg.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30" integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== @@ -9361,6 +9778,14 @@ create-jest@^29.7.0: jest-util "^29.7.0" prompts "^2.0.1" +create-react-class@^15.7.0: + version "15.7.0" + resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.7.0.tgz#7499d7ca2e69bb51d13faf59bd04f0c65a1d6c1e" + integrity sha512-QZv4sFWG9S5RUvkTYWbflxeZX+JG7Cz0Tn33rQBJ+WFQTqTfUTjMjiv9tnfXazjsO5r0KhPs+AqCjyrQX6h2ng== + dependencies: + loose-envify "^1.3.1" + object-assign "^4.1.1" + create-require@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" @@ -9741,7 +10166,7 @@ data-view-byte-offset@^1.0.0: es-errors "^1.3.0" is-data-view "^1.0.1" -dayjs@^1.8.15: +dayjs@^1.11.13, dayjs@^1.8.15: version "1.11.13" resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.13.tgz#92430b0139055c3ebb60150aa13e860a4b5a366c" integrity sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg== @@ -9753,7 +10178,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0: dependencies: ms "2.0.0" -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.7: +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: version "4.3.7" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== @@ -9836,6 +10261,11 @@ deep-is@^0.1.3, deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== +deepmerge@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-3.3.0.tgz#d3c47fd6f3a93d517b14426b0628a17b0125f5f7" + integrity sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA== + deepmerge@^4.2.2, deepmerge@^4.3.0: version "4.3.1" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" @@ -10009,6 +10439,15 @@ deprecated-react-native-prop-types@4.1.0: invariant "*" prop-types "*" +deprecated-react-native-prop-types@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/deprecated-react-native-prop-types/-/deprecated-react-native-prop-types-4.2.3.tgz#0ef845c1a80ef1636bd09060e4cdf70f9727e5ad" + integrity sha512-2rLTiMKidIFFYpIVM69UnQKngLqQfL6I11Ch8wGSBftS18FUXda+o2we2950X+1dmbgps28niI3qwyH4eX3Z1g== + dependencies: + "@react-native/normalize-colors" "<0.73.0" + invariant "^2.2.4" + prop-types "^15.8.1" + deprecation@^2.0.0: version "2.3.1" resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" @@ -10487,7 +10926,7 @@ error-stack-parser@^2.0.6: dependencies: stackframe "^1.3.4" -errorhandler@^1.5.1: +errorhandler@^1.5.0, errorhandler@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/errorhandler/-/errorhandler-1.5.1.tgz#b9ba5d17cf90744cd1e851357a6e75bf806a9a91" integrity sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A== @@ -11662,6 +12101,11 @@ flow-parser@0.*: resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.247.0.tgz#1bbbc6e097a31d5b37c3956972418bde9b0dcf01" integrity sha512-IY9JLxkKPY4BNODrwaMycusCtIrB17QRnKIBlf36dgyv7jFUIefGaUsEBT0xG6xT/rxgrZAGEgqmQ25RNghhyg== +flow-parser@^0.121.0: + version "0.121.0" + resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.121.0.tgz#9f9898eaec91a9f7c323e9e992d81ab5c58e618f" + integrity sha512-1gIBiWJNR0tKUNv8gZuk7l9rVX06OuLzY9AoGio7y/JT4V1IZErEMEq2TJS+PFcw/y0RshZ1J/27VfK1UQzYVg== + flow-parser@^0.206.0: version "0.206.0" resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.206.0.tgz#f4f794f8026535278393308e01ea72f31000bfef" @@ -11850,6 +12294,15 @@ fs-extra@9.0.0: jsonfile "^6.0.1" universalify "^1.0.0" +fs-extra@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950" + integrity sha512-VerQV6vEKuhDWD2HGOybV6v5I73syoc/cXAbKlgTC7M/oFVEtklWlp9QH2Ijw3IaWDOQcMkldSPa7zXy79Z/UQ== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + fs-extra@^10.1.0: version "10.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" @@ -12340,7 +12793,7 @@ graceful-fs@4.2.10: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -12599,6 +13052,11 @@ hermes-estree@0.12.0: resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.12.0.tgz#8a289f9aee854854422345e6995a48613bac2ca8" integrity sha512-+e8xR6SCen0wyAKrMT3UD0ZCCLymKhRgjEB5sS28rKiFir/fXgLoeRilRUssFCILmGHb+OvHDUlhxs0+IEyvQw== +hermes-estree@0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.8.0.tgz#530be27243ca49f008381c1f3e8b18fb26bf9ec0" + integrity sha512-W6JDAOLZ5pMPMjEiQGLCXSSV7pIBEgRR5zGkxgmzGSXHOxqV5dC/M1Zevqpbm9TZDE5tu358qZf8Vkzmsc+u7Q== + hermes-parser@0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.12.0.tgz#114dc26697cfb41a6302c215b859b74224383773" @@ -12606,6 +13064,13 @@ hermes-parser@0.12.0: dependencies: hermes-estree "0.12.0" +hermes-parser@0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.8.0.tgz#116dceaba32e45b16d6aefb5c4c830eaeba2d257" + integrity sha512-yZKalg1fTYG5eOiToLUaw69rQfZq/fi+/NtEXRU7N87K/XobNRhRWorh80oSge2lWUiZfTgUvRJH+XgZWrhoqA== + dependencies: + hermes-estree "0.8.0" + hermes-profile-transformer@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz#bd0f5ecceda80dd0ddaae443469ab26fb38fc27b" @@ -12956,6 +13421,11 @@ ignore@^5.0.5, ignore@^5.1.4, ignore@^5.2.0: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== +image-size@^0.6.0: + version "0.6.3" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.6.3.tgz#e7e5c65bb534bd7cdcedd6cb5166272a85f75fb2" + integrity sha512-47xSUiQioGaB96nqtp5/q55m0aBQSQdyIloMOc/x+QVTDZLNmXE892IIDrJ0hM1A5vcNUDD5tDffkSP5lCaIIA== + image-size@^1.0.0, image-size@^1.0.2: version "1.1.1" resolved "https://registry.yarnpkg.com/image-size/-/image-size-1.1.1.tgz#ddd67d4dc340e52ac29ce5f546a09f4e29e840ac" @@ -14085,6 +14555,11 @@ jest-environment-node@^29.2.1, jest-environment-node@^29.7.0: jest-mock "^29.7.0" jest-util "^29.7.0" +jest-get-type@^26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" + integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== + jest-get-type@^29.6.3: version "29.6.3" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" @@ -14288,6 +14763,14 @@ jest-serializer@^26.6.2: "@types/node" "*" graceful-fs "^4.2.4" +jest-serializer@^27.0.6: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64" + integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== + dependencies: + "@types/node" "*" + graceful-fs "^4.2.9" + jest-snapshot@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5" @@ -14350,6 +14833,18 @@ jest-util@^29.0.0, jest-util@^29.7.0: graceful-fs "^4.2.9" picomatch "^2.2.3" +jest-validate@^26.5.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec" + integrity sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ== + dependencies: + "@jest/types" "^26.6.2" + camelcase "^6.0.0" + chalk "^4.0.0" + jest-get-type "^26.3.0" + leven "^3.1.0" + pretty-format "^26.6.2" + jest-validate@^29.2.1, jest-validate@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" @@ -14480,6 +14975,11 @@ jsbn@1.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== +jsc-android@^250230.2.1: + version "250230.2.1" + resolved "https://registry.yarnpkg.com/jsc-android/-/jsc-android-250230.2.1.tgz#3790313a970586a03ab0ad47defbc84df54f1b83" + integrity sha512-KmxeBlRjwoqCnBBKGsihFtvsBHyUFlBxJPK4FzeYcIuBfdjv6jFys44JITAgSTbQD+vIdwMEfyZklsuQX0yI1Q== + jsc-android@^250231.0.0: version "250231.0.0" resolved "https://registry.yarnpkg.com/jsc-android/-/jsc-android-250231.0.0.tgz#91720f8df382a108872fa4b3f558f33ba5e95262" @@ -14552,6 +15052,11 @@ jsesc@^2.5.1: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== +jsesc@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d" + integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== + jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" @@ -14628,6 +15133,13 @@ json5@^2.1.2, json5@^2.2.1, json5@^2.2.2, json5@^2.2.3: resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== +jsonfile@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + integrity sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw== + optionalDependencies: + graceful-fs "^4.1.6" + jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" @@ -14707,6 +15219,13 @@ klaw-sync@^6.0.0: dependencies: graceful-fs "^4.1.11" +klaw@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" + integrity sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw== + optionalDependencies: + graceful-fs "^4.1.9" + kleur@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" @@ -14769,76 +15288,70 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -lightningcss-darwin-arm64@1.28.1: - version "1.28.1" - resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.28.1.tgz#043c30e2d22ee68beb7f8782e96390821ba8ab34" - integrity sha512-VG3vvzM0m/rguCdm76DdobNeNJnHK+jWcdkNLFWHLh9YCotRvbRIt45JxwcHlIF8TDqWStVLTdghq5NaigVCBQ== - -lightningcss-darwin-x64@1.28.1: - version "1.28.1" - resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.28.1.tgz#c0f975759af364699fdbd7a4756ac66767ed9767" - integrity sha512-O7ORdislvKfMohFl4Iq7fxKqdJOuuxArcglVI3amuFO5DJ0wfV3Gxgi1JRo49slfr7OVzJQEHLG4muTWYM5cTQ== - -lightningcss-freebsd-x64@1.28.1: - version "1.28.1" - resolved "https://registry.yarnpkg.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.28.1.tgz#f8eb8b63845a88d32eed71a594cf224f6c7ea4fd" - integrity sha512-b7sF89B31kYYijxVcFO7l5u6UNA862YstNu+3YbLl/IQKzveL4a5cwR5cdpG+OOhErg/c2u9WCmzZoX2I5GBvw== - -lightningcss-linux-arm-gnueabihf@1.28.1: - version "1.28.1" - resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.28.1.tgz#726dfdb2db6ba3a7bb2169e5724d826cb585a76d" - integrity sha512-p61kXwvhUDLLzkWHjzSFfUBW/F0iy3jr3CWi3k8SKULtJEsJXTI9DqRm9EixxMSe2AMBQBt4auTYiQL4B1N51A== - -lightningcss-linux-arm64-gnu@1.28.1: - version "1.28.1" - resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.28.1.tgz#9f4e4450617230ea557abb5ffd5d26b2047e9b62" - integrity sha512-iO+fN9hOMmzfwqcG2/BgUtMKD48H2JO/SXU44fyIwpY2veb65QF5xiRrQ9l1FwIxbGK3231KBYCtAqv+xf+NsQ== - -lightningcss-linux-arm64-musl@1.28.1: - version "1.28.1" - resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.28.1.tgz#9d2561d8a5ecfb3f1f18651da0acc592e837ea3a" - integrity sha512-dnMHeXEmCUzHHZjaDpQBYuBKcN9nPC3nPFKl70bcj5Bkn5EmkcgEqm5p035LKOgvAwk1XwLpQCML6pXmCwz0NQ== - -lightningcss-linux-x64-gnu@1.28.1: - version "1.28.1" - resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.28.1.tgz#91d0a41d6dd40d8965cb6c1fbd4d40e6b3460384" - integrity sha512-7vWDISaMUn+oo2TwRdf2hl/BLdPxvywv9JKEqNZB/0K7bXwV4XE9wN/C2sAp1gGuh6QBA8lpjF4JIPt3HNlCHA== - -lightningcss-linux-x64-musl@1.28.1: - version "1.28.1" - resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.28.1.tgz#f1a9d0cafc1eb7ec72ef4f2a3a81b5631060c461" - integrity sha512-IHCu9tVGP+x5BCpA2rF3D04DBokcBza/a8AuHQU+1AiMKubuMegPwcL7RatBgK4ztFHeYnnD5NdhwhRfYMAtNA== - -lightningcss-win32-arm64-msvc@1.28.1: - version "1.28.1" - resolved "https://registry.yarnpkg.com/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.28.1.tgz#c21f7683648a9e4d856737fc22c3eca908c773b6" - integrity sha512-Erm72kHmMg/3h350PTseskz+eEGBM17Fuu79WW2Qqt0BfWSF1jHHc12lkJCWMYl5jcBHPs5yZdgNHtJ7IJS3Uw== - -lightningcss-win32-x64-msvc@1.28.1: - version "1.28.1" - resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.28.1.tgz#7afe4f4128bf6b75a570e8585d287040243f7881" - integrity sha512-ZPQtvx+uQBzrSdHH8p4H3M9Alue+x369TPZAA3b4K3d92FPhpZCuBG04+HQzspam9sVeID9mI6f3VRAs2ezaEA== - -lightningcss@^1.27.0: - version "1.28.1" - resolved "https://registry.yarnpkg.com/lightningcss/-/lightningcss-1.28.1.tgz#311b44052e4dcb17e31929a584a9a68864a456ed" - integrity sha512-KRDkHlLlNj3DWh79CDt93fPlRJh2W1AuHV0ZSZAMMuN7lqlsZTV5842idfS1urWG8q9tc17velp1gCXhY7sLnQ== - dependencies: - detect-libc "^1.0.3" - optionalDependencies: - lightningcss-darwin-arm64 "1.28.1" - lightningcss-darwin-x64 "1.28.1" - lightningcss-freebsd-x64 "1.28.1" - lightningcss-linux-arm-gnueabihf "1.28.1" - lightningcss-linux-arm64-gnu "1.28.1" - lightningcss-linux-arm64-musl "1.28.1" - lightningcss-linux-x64-gnu "1.28.1" - lightningcss-linux-x64-musl "1.28.1" - lightningcss-win32-arm64-msvc "1.28.1" - lightningcss-win32-x64-msvc "1.28.1" +lightningcss-darwin-arm64@1.22.0: + version "1.22.0" + resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.22.0.tgz#28e189ce15290b3d0ab43704fc33e8e6366e6df4" + integrity sha512-aH2be3nNny+It5YEVm8tBSSdRlBVWQV8m2oJ7dESiYRzyY/E/bQUe2xlw5caaMuhlM9aoTMtOH25yzMhir0qPg== -lilconfig@2.1.0, lilconfig@^2.1.0: - version "2.1.0" +lightningcss-darwin-x64@1.22.0: + version "1.22.0" + resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.22.0.tgz#1c5fe3e3ab31c9f1741f6d5d650ab683bd942854" + integrity sha512-9KHRFA0Y6mNxRHeoQMp0YaI0R0O2kOgUlYPRjuasU4d+pI8NRhVn9bt0yX9VPs5ibWX1RbDViSPtGJvYYrfVAQ== + +lightningcss-freebsd-x64@1.22.0: + version "1.22.0" + resolved "https://registry.yarnpkg.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.22.0.tgz#1ee7bcb68258b2cb1425bdc7ccb632233eae639c" + integrity sha512-xaYL3xperGwD85rQioDb52ozF3NAJb+9wrge3jD9lxGffplu0Mn35rXMptB8Uc2N9Mw1i3Bvl7+z1evlqVl7ww== + +lightningcss-linux-arm-gnueabihf@1.22.0: + version "1.22.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.22.0.tgz#1c4287ec7268dcee6d9dcccb3d0810ecdcd35b74" + integrity sha512-epQGvXIjOuxrZpMpMnRjK54ZqzhiHhCPLtHvw2fb6NeK2kK9YtF0wqmeTBiQ1AkbWfnnXGTstYaFNiadNK+StQ== + +lightningcss-linux-arm64-gnu@1.22.0: + version "1.22.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.22.0.tgz#b8e6daee4a60020a4930fc3564669868e723a10d" + integrity sha512-AArGtKSY4DGTA8xP8SDyNyKtpsUl1Rzq6FW4JomeyUQ4nBrR71uPChksTpj3gmWuGhZeRKLeCUI1DBid/zhChg== + +lightningcss-linux-arm64-musl@1.22.0: + version "1.22.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.22.0.tgz#8d863a5470ee50369f13974325f2a3326b5f77df" + integrity sha512-RRraNgP8hnBPhInTTUdlFm+z16C/ghbxBG51Sw00hd7HUyKmEUKRozyc5od+/N6pOrX/bIh5vIbtMXIxsos0lg== + +lightningcss-linux-x64-gnu@1.22.0: + version "1.22.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.22.0.tgz#4798711d1897fe19fccd039640389c5049fb03fb" + integrity sha512-grdrhYGRi2KrR+bsXJVI0myRADqyA7ekprGxiuK5QRNkv7kj3Yq1fERDNyzZvjisHwKUi29sYMClscbtl+/Zpw== + +lightningcss-linux-x64-musl@1.22.0: + version "1.22.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.22.0.tgz#1d34f5bf428b0d2d4550627e653231d33fda90f9" + integrity sha512-t5f90X+iQUtIyR56oXIHMBUyQFX/zwmPt72E6Dane3P8KNGlkijTg2I75XVQS860gNoEFzV7Mm5ArRRA7u5CAQ== + +lightningcss-win32-x64-msvc@1.22.0: + version "1.22.0" + resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.22.0.tgz#2fece601ea92298f73008bdf96ed0af8132d318f" + integrity sha512-64HTDtOOZE9PUCZJiZZQpyqXBbdby1lnztBccnqh+NtbKxjnGzP92R2ngcgeuqMPecMNqNWxgoWgTGpC+yN5Sw== + +lightningcss@1.22.0: + version "1.22.0" + resolved "https://registry.yarnpkg.com/lightningcss/-/lightningcss-1.22.0.tgz#76c9a17925e660741858e88b774172cb1923bb4a" + integrity sha512-+z0qvwRVzs4XGRXelnWRNwqsXUx8k3bSkbP8vD42kYKSk3z9OM2P3e/gagT7ei/gwh8DTS80LZOFZV6lm8Z8Fg== + dependencies: + detect-libc "^1.0.3" + optionalDependencies: + lightningcss-darwin-arm64 "1.22.0" + lightningcss-darwin-x64 "1.22.0" + lightningcss-freebsd-x64 "1.22.0" + lightningcss-linux-arm-gnueabihf "1.22.0" + lightningcss-linux-arm64-gnu "1.22.0" + lightningcss-linux-arm64-musl "1.22.0" + lightningcss-linux-x64-gnu "1.22.0" + lightningcss-linux-x64-musl "1.22.0" + lightningcss-win32-x64-msvc "1.22.0" + +lilconfig@2.1.0, lilconfig@^2.1.0: + version "2.1.0" resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== @@ -15088,7 +15601,7 @@ loglevel@^1.6.8: resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.9.2.tgz#c2e028d6c757720107df4e64508530db6621ba08" integrity sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg== -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -15425,6 +15938,16 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== +metro-babel-transformer@0.72.4: + version "0.72.4" + resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.72.4.tgz#5149424896797980aa1758c8ef7c9a80f9d0f587" + integrity sha512-cg1TQUKDkKqrIClrqqIGE8ZDa9kRKSjhBtqPtNYt/ZSywXU41SrldfcI5uzPrzcIrYpH5hnN6OCLRACPgy2vsw== + dependencies: + "@babel/core" "^7.14.0" + hermes-parser "0.8.0" + metro-source-map "0.72.4" + nullthrows "^1.1.1" + metro-babel-transformer@0.76.7: version "0.76.7" resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.76.7.tgz#ba620d64cbaf97d1aa14146d654a3e5d7477fc62" @@ -15434,11 +15957,38 @@ metro-babel-transformer@0.76.7: hermes-parser "0.12.0" nullthrows "^1.1.1" +metro-babel-transformer@0.76.9: + version "0.76.9" + resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.76.9.tgz#659ba481d471b5f748c31a8f9397094b629f50ec" + integrity sha512-dAnAmBqRdTwTPVn4W4JrowPolxD1MDbuU97u3MqtWZgVRvDpmr+Cqnn5oSxLQk3Uc+Zy3wkqVrB/zXNRlLDSAQ== + dependencies: + "@babel/core" "^7.20.0" + hermes-parser "0.12.0" + nullthrows "^1.1.1" + +metro-cache-key@0.72.4: + version "0.72.4" + resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.72.4.tgz#f03d49214554b25968f04dc5e19dfe018cf9312b" + integrity sha512-DH3cgN4L7IKNCVBy8LBOXQ4tHDdvh7Vl7jWNkQKMOfHWu1EwsTtXD/+zdV7/be4ls/kHxrD0HbGzpK8XhUAHSw== + metro-cache-key@0.76.7: version "0.76.7" resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.76.7.tgz#70913f43b92b313096673c37532edd07438cb325" integrity sha512-0pecoIzwsD/Whn/Qfa+SDMX2YyasV0ndbcgUFx7w1Ct2sLHClujdhQ4ik6mvQmsaOcnGkIyN0zcceMDjC2+BFQ== +metro-cache-key@0.76.9: + version "0.76.9" + resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.76.9.tgz#6f17f821d6f306fa9028b7e79445eb18387d03d9" + integrity sha512-ugJuYBLngHVh1t2Jj+uP9pSCQl7enzVXkuh6+N3l0FETfqjgOaSHlcnIhMPn6yueGsjmkiIfxQU4fyFVXRtSTw== + +metro-cache@0.72.4: + version "0.72.4" + resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.72.4.tgz#e0ffb33dd044a7cf5897a09489088a413bfe7468" + integrity sha512-76fi9OVytiFVSuGQcNoquVOT7AENd0q3n1WmyBeJ7jvl/UrE3/NN3HTWzu2ezG5IxF3cmo5q1ehi0NEpgwaFGg== + dependencies: + metro-core "0.72.4" + rimraf "^2.5.4" + metro-cache@0.76.7: version "0.76.7" resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.76.7.tgz#e49e51423fa960df4eeff9760d131f03e003a9eb" @@ -15447,6 +15997,26 @@ metro-cache@0.76.7: metro-core "0.76.7" rimraf "^3.0.2" +metro-cache@0.76.9: + version "0.76.9" + resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.76.9.tgz#64326d7a8b470c3886a5e97d5e2a20acab20bc5f" + integrity sha512-W6QFEU5AJG1gH4Ltv8S2IvhmEhSDYnbPafyj5fGR3YLysdykj+olKv9B0V+YQXtcLGyY5CqpXLYUx595GdiKzA== + dependencies: + metro-core "0.76.9" + rimraf "^3.0.2" + +metro-config@0.72.4: + version "0.72.4" + resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.72.4.tgz#3ad42b3ca0037125d5615f4cb7e1c7ed9442bedd" + integrity sha512-USv+H14D5RrSpfA5t4t5cbF1CnizgYGz6xJ3HB0r/bDYdJdZTVqB3/mMPft7Z5zHslS00JCG7oE51G1CK/FlKw== + dependencies: + cosmiconfig "^5.0.5" + jest-validate "^26.5.2" + metro "0.72.4" + metro-cache "0.72.4" + metro-core "0.72.4" + metro-runtime "0.72.4" + metro-config@0.76.7: version "0.76.7" resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.76.7.tgz#f0fc171707523aa7d3a9311550872136880558c0" @@ -15460,6 +16030,27 @@ metro-config@0.76.7: metro-core "0.76.7" metro-runtime "0.76.7" +metro-config@0.76.9, metro-config@^0.76.9: + version "0.76.9" + resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.76.9.tgz#5e60aff9d8894c1ee6bbc5de23b7c8515a0b84a3" + integrity sha512-oYyJ16PY3rprsfoi80L+gDJhFJqsKI3Pob5LKQbJpvL+gGr8qfZe1eQzYp5Xxxk9DOHKBV1xD94NB8GdT/DA8Q== + dependencies: + connect "^3.6.5" + cosmiconfig "^5.0.5" + jest-validate "^29.2.1" + metro "0.76.9" + metro-cache "0.76.9" + metro-core "0.76.9" + metro-runtime "0.76.9" + +metro-core@0.72.4: + version "0.72.4" + resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.72.4.tgz#e4939aef4c50d953c44eee99a3c971d5162f1287" + integrity sha512-2JNT1nG0UV1uMrQHQOKUSII0sdS6MhVT3mBt2kwfjCvD+jvi1iYhKJ4kYCRlUQw9XNLGZ/B+C0VDQzlf2M3zVw== + dependencies: + lodash.throttle "^4.1.1" + metro-resolver "0.72.4" + metro-core@0.76.7: version "0.76.7" resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.76.7.tgz#5d2b8bac2cde801dc22666ad7be1336d1f021b61" @@ -15468,6 +16059,34 @@ metro-core@0.76.7: lodash.throttle "^4.1.1" metro-resolver "0.76.7" +metro-core@0.76.9, metro-core@^0.76.9: + version "0.76.9" + resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.76.9.tgz#5f55f0fbde41d28957e4f3bb187d32251403f00e" + integrity sha512-DSeEr43Wrd5Q7ySfRzYzDwfV89g2OZTQDf1s3exOcLjE5fb7awoLOkA2h46ZzN8NcmbbM0cuJy6hOwF073/yRQ== + dependencies: + lodash.throttle "^4.1.1" + metro-resolver "0.76.9" + +metro-file-map@0.72.4: + version "0.72.4" + resolved "https://registry.yarnpkg.com/metro-file-map/-/metro-file-map-0.72.4.tgz#8a0c8a0e44d665af90dded2ac6e01baebff8552e" + integrity sha512-Mv5WgTsYs5svTR/df6jhq2aD4IkAuwV5TutHW0BfEg1YccQt8/v7q5ZypmUOkjdSS9bFR4r3677jalr/ceFypQ== + dependencies: + abort-controller "^3.0.0" + anymatch "^3.0.3" + debug "^2.2.0" + fb-watchman "^2.0.0" + graceful-fs "^4.2.4" + invariant "^2.2.4" + jest-regex-util "^27.0.6" + jest-serializer "^27.0.6" + jest-util "^27.2.0" + jest-worker "^27.2.0" + micromatch "^4.0.4" + walker "^1.0.7" + optionalDependencies: + fsevents "^2.1.2" + metro-file-map@0.76.7: version "0.76.7" resolved "https://registry.yarnpkg.com/metro-file-map/-/metro-file-map-0.76.7.tgz#0f041a4f186ac672f0188180310609c8483ffe89" @@ -15488,6 +16107,41 @@ metro-file-map@0.76.7: optionalDependencies: fsevents "^2.3.2" +metro-file-map@0.76.9: + version "0.76.9" + resolved "https://registry.yarnpkg.com/metro-file-map/-/metro-file-map-0.76.9.tgz#dd3d76ec23fc0ba8cb7b3a3b8075bb09e0b5d378" + integrity sha512-7vJd8kksMDTO/0fbf3081bTrlw8SLiploeDf+vkkf0OwlrtDUWPOikfebp+MpZB2S61kamKjCNRfRkgrbPfSwg== + dependencies: + anymatch "^3.0.3" + debug "^2.2.0" + fb-watchman "^2.0.0" + graceful-fs "^4.2.4" + invariant "^2.2.4" + jest-regex-util "^27.0.6" + jest-util "^27.2.0" + jest-worker "^27.2.0" + micromatch "^4.0.4" + node-abort-controller "^3.1.1" + nullthrows "^1.1.1" + walker "^1.0.7" + optionalDependencies: + fsevents "^2.3.2" + +metro-hermes-compiler@0.72.4: + version "0.72.4" + resolved "https://registry.yarnpkg.com/metro-hermes-compiler/-/metro-hermes-compiler-0.72.4.tgz#06c946d74720d5132fa1690df0610ba367d3436c" + integrity sha512-AY1mAT5FKfDRYCthuKo2XHbuhG5TUV4ZpZlJ8peIgkiWICzfy0tau3yu+3jUD456N90CjMCOmdknji4uKiZ8ww== + +metro-inspector-proxy@0.72.4: + version "0.72.4" + resolved "https://registry.yarnpkg.com/metro-inspector-proxy/-/metro-inspector-proxy-0.72.4.tgz#347e9634b6204c38117292edfb11eb2df71c09ad" + integrity sha512-pr+PsbNCZaStWuJRH8oclT170B7NxfgH+UUyTf9/aR+7PjX0gdDabJhPyzA633QgR+EFBaQKZuetHA+f5/cnEQ== + dependencies: + connect "^3.6.5" + debug "^2.2.0" + ws "^7.5.1" + yargs "^15.3.1" + metro-inspector-proxy@0.76.7: version "0.76.7" resolved "https://registry.yarnpkg.com/metro-inspector-proxy/-/metro-inspector-proxy-0.76.7.tgz#c067df25056e932002a72a4b45cf7b4b749f808e" @@ -15499,6 +16153,17 @@ metro-inspector-proxy@0.76.7: ws "^7.5.1" yargs "^17.6.2" +metro-inspector-proxy@0.76.9: + version "0.76.9" + resolved "https://registry.yarnpkg.com/metro-inspector-proxy/-/metro-inspector-proxy-0.76.9.tgz#0d333e64a7bc9d156d712265faa7b7ae88c775e8" + integrity sha512-idIiPkb8CYshc0WZmbzwmr4B1QwsQUbpDwBzHwxE1ni27FWKWhV9CD5p+qlXZHgfwJuMRfPN+tIaLSR8+vttYg== + dependencies: + connect "^3.6.5" + debug "^2.2.0" + node-fetch "^2.2.0" + ws "^7.5.1" + yargs "^17.6.2" + metro-minify-terser@0.76.7: version "0.76.7" resolved "https://registry.yarnpkg.com/metro-minify-terser/-/metro-minify-terser-0.76.7.tgz#aefac8bb8b6b3a0fcb5ea0238623cf3e100893ff" @@ -15506,6 +16171,20 @@ metro-minify-terser@0.76.7: dependencies: terser "^5.15.0" +metro-minify-terser@0.76.9: + version "0.76.9" + resolved "https://registry.yarnpkg.com/metro-minify-terser/-/metro-minify-terser-0.76.9.tgz#3f6271da74dd57179852118443b62cc8dc578aab" + integrity sha512-ju2nUXTKvh96vHPoGZH/INhSvRRKM14CbGAJXQ98+g8K5z1v3luYJ/7+dFQB202eVzJdTB2QMtBjI1jUUpooCg== + dependencies: + terser "^5.15.0" + +metro-minify-uglify@0.72.4: + version "0.72.4" + resolved "https://registry.yarnpkg.com/metro-minify-uglify/-/metro-minify-uglify-0.72.4.tgz#b4504adc17f093173c0e5d44df32ac9e13f50a88" + integrity sha512-84Rrgie3O7Dqkak9ep/eIpMZkEFzpKD4bngPUNimYqAMCExKL7/aymydB27gKcqwus/BVkAV+aOnFsuOhlgnQg== + dependencies: + uglify-es "^3.1.9" + metro-minify-uglify@0.76.7: version "0.76.7" resolved "https://registry.yarnpkg.com/metro-minify-uglify/-/metro-minify-uglify-0.76.7.tgz#3e0143786718dcaea4e28a724698d4f8ac199a43" @@ -15513,6 +16192,13 @@ metro-minify-uglify@0.76.7: dependencies: uglify-es "^3.1.9" +metro-minify-uglify@0.76.9: + version "0.76.9" + resolved "https://registry.yarnpkg.com/metro-minify-uglify/-/metro-minify-uglify-0.76.9.tgz#e88c30c27911c053e1ee20e12077f0f4cbb154f8" + integrity sha512-MXRrM3lFo62FPISlPfTqC6n9HTEI3RJjDU5SvpE7sJFfJKLx02xXQEltsL/wzvEqK+DhRQ5DEYACTwf5W4Z3yA== + dependencies: + uglify-es "^3.1.9" + metro-react-native-babel-preset@0.72.3: version "0.72.3" resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.72.3.tgz#e549199fa310fef34364fdf19bd210afd0c89432" @@ -15558,6 +16244,51 @@ metro-react-native-babel-preset@0.72.3: "@babel/template" "^7.0.0" react-refresh "^0.4.0" +metro-react-native-babel-preset@0.72.4: + version "0.72.4" + resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.72.4.tgz#2b320772d2489d1fb3a6413fc58dad13a56eea0e" + integrity sha512-YGCVaYe1H5fOFktdDdL9IwAyiXjPh1t2eZZFp3KFJak6fxKpN+q5PPhe1kzMa77dbCAqgImv43zkfGa6i27eyA== + dependencies: + "@babel/core" "^7.14.0" + "@babel/plugin-proposal-async-generator-functions" "^7.0.0" + "@babel/plugin-proposal-class-properties" "^7.0.0" + "@babel/plugin-proposal-export-default-from" "^7.0.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.0.0" + "@babel/plugin-proposal-object-rest-spread" "^7.0.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" + "@babel/plugin-proposal-optional-chaining" "^7.0.0" + "@babel/plugin-syntax-dynamic-import" "^7.0.0" + "@babel/plugin-syntax-export-default-from" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.2.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0" + "@babel/plugin-syntax-optional-chaining" "^7.0.0" + "@babel/plugin-transform-arrow-functions" "^7.0.0" + "@babel/plugin-transform-async-to-generator" "^7.0.0" + "@babel/plugin-transform-block-scoping" "^7.0.0" + "@babel/plugin-transform-classes" "^7.0.0" + "@babel/plugin-transform-computed-properties" "^7.0.0" + "@babel/plugin-transform-destructuring" "^7.0.0" + "@babel/plugin-transform-exponentiation-operator" "^7.0.0" + "@babel/plugin-transform-flow-strip-types" "^7.0.0" + "@babel/plugin-transform-function-name" "^7.0.0" + "@babel/plugin-transform-literals" "^7.0.0" + "@babel/plugin-transform-modules-commonjs" "^7.0.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.0.0" + "@babel/plugin-transform-parameters" "^7.0.0" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-react-jsx-self" "^7.0.0" + "@babel/plugin-transform-react-jsx-source" "^7.0.0" + "@babel/plugin-transform-runtime" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.0.0" + "@babel/plugin-transform-spread" "^7.0.0" + "@babel/plugin-transform-sticky-regex" "^7.0.0" + "@babel/plugin-transform-template-literals" "^7.0.0" + "@babel/plugin-transform-typescript" "^7.5.0" + "@babel/plugin-transform-unicode-regex" "^7.0.0" + "@babel/template" "^7.0.0" + react-refresh "^0.4.0" + metro-react-native-babel-preset@0.76.7: version "0.76.7" resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.76.7.tgz#dfe15c040d0918147a8b0e9f530d558287acbb54" @@ -15603,6 +16334,64 @@ metro-react-native-babel-preset@0.76.7: babel-plugin-transform-flow-enums "^0.0.2" react-refresh "^0.4.0" +metro-react-native-babel-preset@0.76.9: + version "0.76.9" + resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.76.9.tgz#15868142122af14313429d7572c15cf01c16f077" + integrity sha512-eCBtW/UkJPDr6HlMgFEGF+964DZsUEF9RGeJdZLKWE7d/0nY3ABZ9ZAGxzu9efQ35EWRox5bDMXUGaOwUe5ikQ== + dependencies: + "@babel/core" "^7.20.0" + "@babel/plugin-proposal-async-generator-functions" "^7.0.0" + "@babel/plugin-proposal-class-properties" "^7.18.0" + "@babel/plugin-proposal-export-default-from" "^7.0.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.0" + "@babel/plugin-proposal-numeric-separator" "^7.0.0" + "@babel/plugin-proposal-object-rest-spread" "^7.20.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" + "@babel/plugin-proposal-optional-chaining" "^7.20.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-export-default-from" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.18.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0" + "@babel/plugin-syntax-optional-chaining" "^7.0.0" + "@babel/plugin-transform-arrow-functions" "^7.0.0" + "@babel/plugin-transform-async-to-generator" "^7.20.0" + "@babel/plugin-transform-block-scoping" "^7.0.0" + "@babel/plugin-transform-classes" "^7.0.0" + "@babel/plugin-transform-computed-properties" "^7.0.0" + "@babel/plugin-transform-destructuring" "^7.20.0" + "@babel/plugin-transform-flow-strip-types" "^7.20.0" + "@babel/plugin-transform-function-name" "^7.0.0" + "@babel/plugin-transform-literals" "^7.0.0" + "@babel/plugin-transform-modules-commonjs" "^7.0.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.0.0" + "@babel/plugin-transform-parameters" "^7.0.0" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-react-jsx-self" "^7.0.0" + "@babel/plugin-transform-react-jsx-source" "^7.0.0" + "@babel/plugin-transform-runtime" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.0.0" + "@babel/plugin-transform-spread" "^7.0.0" + "@babel/plugin-transform-sticky-regex" "^7.0.0" + "@babel/plugin-transform-typescript" "^7.5.0" + "@babel/plugin-transform-unicode-regex" "^7.0.0" + "@babel/template" "^7.0.0" + babel-plugin-transform-flow-enums "^0.0.2" + react-refresh "^0.4.0" + +metro-react-native-babel-transformer@0.72.4: + version "0.72.4" + resolved "https://registry.yarnpkg.com/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.72.4.tgz#c1a38bf28513374dbb0fce45b4017d8abfe4a071" + integrity sha512-VxM8Cki+/tPAyQRPHEy1bsxAihpxz8cGLdteFo9t0eAJI7/vEegqICxQm4A+RiGQc4f8t2jiwI6YpnDWomI5Gw== + dependencies: + "@babel/core" "^7.14.0" + babel-preset-fbjs "^3.4.0" + hermes-parser "0.8.0" + metro-babel-transformer "0.72.4" + metro-react-native-babel-preset "0.72.4" + metro-source-map "0.72.4" + nullthrows "^1.1.1" + metro-react-native-babel-transformer@0.76.7: version "0.76.7" resolved "https://registry.yarnpkg.com/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.76.7.tgz#ccc7c25b49ee8a1860aafdbf48bfa5441d206f8f" @@ -15614,11 +16403,42 @@ metro-react-native-babel-transformer@0.76.7: metro-react-native-babel-preset "0.76.7" nullthrows "^1.1.1" +metro-react-native-babel-transformer@^0.76.9: + version "0.76.9" + resolved "https://registry.yarnpkg.com/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.76.9.tgz#464aab85669ed39f7a59f1fd993a05de9543b09e" + integrity sha512-xXzHcfngSIkbQj+U7i/anFkNL0q2QVarYSzr34CFkzKLa79Rp16B8ki7z9eVVqo9W3B4TBcTXl3BipgRoOoZSQ== + dependencies: + "@babel/core" "^7.20.0" + babel-preset-fbjs "^3.4.0" + hermes-parser "0.12.0" + metro-react-native-babel-preset "0.76.9" + nullthrows "^1.1.1" + +metro-resolver@0.72.4: + version "0.72.4" + resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.72.4.tgz#37893ff72273a2b7ea529564caa15fe2e2337267" + integrity sha512-aHxq/jypzGyi9Ic9woe//RymfxpzWliAkyTmBWPHE9ypGoiobstK0me2j5XuSfzASzCU8wcVt20qy870rxTWLw== + dependencies: + absolute-path "^0.0.0" + metro-resolver@0.76.7: version "0.76.7" resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.76.7.tgz#f00ebead64e451c060f30926ecbf4f797588df52" integrity sha512-pC0Wgq29HHIHrwz23xxiNgylhI8Rq1V01kQaJ9Kz11zWrIdlrH0ZdnJ7GC6qA0ErROG+cXmJ0rJb8/SW1Zp2IA== +metro-resolver@0.76.9, metro-resolver@^0.76.9: + version "0.76.9" + resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.76.9.tgz#79c244784b16ca56076bc1fc816d2ba74860e882" + integrity sha512-s86ipNRas9vNR5lChzzSheF7HoaQEmzxBLzwFA6/2YcGmUCowcoyPAfs1yPh4cjMw9F1T4KlMLaiwniGE7HCyw== + +metro-runtime@0.72.4: + version "0.72.4" + resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.72.4.tgz#b3469fd040a9526bfd897c0517c5f052a059ddeb" + integrity sha512-EA0ltqyYFpjOdpoRqE2U9FJleqTOIK+ZLRlLaDrx4yz3zTqUZ16W6w71dq+qrwD8BPg7bPKQu7RluU3K6tI79A== + dependencies: + "@babel/runtime" "^7.0.0" + react-refresh "^0.4.0" + metro-runtime@0.76.7: version "0.76.7" resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.76.7.tgz#4d75f2dbbcd19a4f01e0d89494e140b0ba8247e4" @@ -15635,6 +16455,28 @@ metro-runtime@0.76.8: "@babel/runtime" "^7.0.0" react-refresh "^0.4.0" +metro-runtime@0.76.9, metro-runtime@^0.76.9: + version "0.76.9" + resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.76.9.tgz#f8ebe150f8896ce1aef5d7f3a52844f8b4f721fb" + integrity sha512-/5vezDpGUtA0Fv6cJg0+i6wB+QeBbvLeaw9cTSG7L76liP0b91f8vOcYzGaUbHI8pznJCCTerxRzpQ8e3/NcDw== + dependencies: + "@babel/runtime" "^7.0.0" + react-refresh "^0.4.0" + +metro-source-map@0.72.4: + version "0.72.4" + resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.72.4.tgz#3c6444bba22b84d7d7e383f784a1d59e724192de" + integrity sha512-P09aMDEPkLo6BM8VYYoTsH/2B1w6t+mrCwNcNJV1zE+57FPiU4fSBlSeM8G9YeYaezDTHimS2JlMozP+2r+trA== + dependencies: + "@babel/traverse" "^7.14.0" + "@babel/types" "^7.0.0" + invariant "^2.2.4" + metro-symbolicate "0.72.4" + nullthrows "^1.1.1" + ob1 "0.72.4" + source-map "^0.5.6" + vlq "^1.0.0" + metro-source-map@0.76.7: version "0.76.7" resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.76.7.tgz#9a4aa3a35e1e8ffde9a74cd7ab5f49d9d4a4da14" @@ -15663,6 +16505,32 @@ metro-source-map@0.76.8: source-map "^0.5.6" vlq "^1.0.0" +metro-source-map@0.76.9, metro-source-map@^0.76.9: + version "0.76.9" + resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.76.9.tgz#0f976ada836717f307427d3830aea52a2ca7ed5f" + integrity sha512-q5qsMlu8EFvsT46wUUh+ao+efDsicT30zmaPATNhq+PcTawDbDgnMuUD+FT0bvxxnisU2PWl91RdzKfNc2qPQA== + dependencies: + "@babel/traverse" "^7.20.0" + "@babel/types" "^7.20.0" + invariant "^2.2.4" + metro-symbolicate "0.76.9" + nullthrows "^1.1.1" + ob1 "0.76.9" + source-map "^0.5.6" + vlq "^1.0.0" + +metro-symbolicate@0.72.4: + version "0.72.4" + resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.72.4.tgz#3be7c9d1f382fc58198efcb515f2de0ec3fc4181" + integrity sha512-6ZRo66Q4iKiwaQuHjmogkSCCqaSpJ4QzbHsVHRUe57mFIL34lOLYp7aPfmX7NHCmy061HhDox/kGuYZQRmHB3A== + dependencies: + invariant "^2.2.4" + metro-source-map "0.72.4" + nullthrows "^1.1.1" + source-map "^0.5.6" + through2 "^2.0.1" + vlq "^1.0.0" + metro-symbolicate@0.76.7: version "0.76.7" resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.76.7.tgz#1720e6b4ce5676935d7a8a440f25d3f16638e87a" @@ -15687,6 +16555,29 @@ metro-symbolicate@0.76.8: through2 "^2.0.1" vlq "^1.0.0" +metro-symbolicate@0.76.9: + version "0.76.9" + resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.76.9.tgz#f1627ef6f73bb0c4d48c55684d3c87866a0b0920" + integrity sha512-Yyq6Ukj/IeWnGST09kRt0sBK8TwzGZWoU7YAcQlh14+AREH454Olx4wbFTpkkhUkV05CzNCvUuXQ0efFxhA1bw== + dependencies: + invariant "^2.2.4" + metro-source-map "0.76.9" + nullthrows "^1.1.1" + source-map "^0.5.6" + through2 "^2.0.1" + vlq "^1.0.0" + +metro-transform-plugins@0.72.4: + version "0.72.4" + resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.72.4.tgz#01e95aa277216fb0887610067125fac9271d399e" + integrity sha512-yxB4v/LxQkmN1rjyyeLiV4x+jwCmId4FTTxNrmTYoi0tFPtOBOeSwuqY08LjxZQMJdZOKXqj2bgIewqFXJEkGw== + dependencies: + "@babel/core" "^7.14.0" + "@babel/generator" "^7.14.0" + "@babel/template" "^7.0.0" + "@babel/traverse" "^7.14.0" + nullthrows "^1.1.1" + metro-transform-plugins@0.76.7: version "0.76.7" resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.76.7.tgz#5d5f75371706fbf5166288e43ffd36b5e5bd05bc" @@ -15698,6 +16589,36 @@ metro-transform-plugins@0.76.7: "@babel/traverse" "^7.20.0" nullthrows "^1.1.1" +metro-transform-plugins@0.76.9: + version "0.76.9" + resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.76.9.tgz#73e34f2014d3df3c336a882b13e541bceb826d37" + integrity sha512-YEQeNlOCt92I7S9A3xbrfaDfwfgcxz9PpD/1eeop3c4cO3z3Q3otYuxw0WJ/rUIW8pZfOm5XCehd+1NRbWlAaw== + dependencies: + "@babel/core" "^7.20.0" + "@babel/generator" "^7.20.0" + "@babel/template" "^7.0.0" + "@babel/traverse" "^7.20.0" + nullthrows "^1.1.1" + +metro-transform-worker@0.72.4: + version "0.72.4" + resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.72.4.tgz#356903c343dc62373b928b4325ad09a103398cc5" + integrity sha512-mIvzy6nRQKMALEdF5g8LXPgCOUi/tGESE5dlb7OSMCj2FAFBm3mTLRrpW5phzK/J6Wg+4Vb9PMS+wGbXR261rA== + dependencies: + "@babel/core" "^7.14.0" + "@babel/generator" "^7.14.0" + "@babel/parser" "^7.14.0" + "@babel/types" "^7.0.0" + babel-preset-fbjs "^3.4.0" + metro "0.72.4" + metro-babel-transformer "0.72.4" + metro-cache "0.72.4" + metro-cache-key "0.72.4" + metro-hermes-compiler "0.72.4" + metro-source-map "0.72.4" + metro-transform-plugins "0.72.4" + nullthrows "^1.1.1" + metro-transform-worker@0.76.7: version "0.76.7" resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.76.7.tgz#b842d5a542f1806cca401633fc002559b3e3d668" @@ -15716,6 +16637,82 @@ metro-transform-worker@0.76.7: metro-transform-plugins "0.76.7" nullthrows "^1.1.1" +metro-transform-worker@0.76.9: + version "0.76.9" + resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.76.9.tgz#281fad223f0447e1ff9cc44d6f7e33dfab9ab120" + integrity sha512-F69A0q0qFdJmP2Clqr6TpTSn4WTV9p5A28h5t9o+mB22ryXBZfUQ6BFBBW/6Wp2k/UtPH+oOsBfV9guiqm3d2Q== + dependencies: + "@babel/core" "^7.20.0" + "@babel/generator" "^7.20.0" + "@babel/parser" "^7.20.0" + "@babel/types" "^7.20.0" + babel-preset-fbjs "^3.4.0" + metro "0.76.9" + metro-babel-transformer "0.76.9" + metro-cache "0.76.9" + metro-cache-key "0.76.9" + metro-minify-terser "0.76.9" + metro-source-map "0.76.9" + metro-transform-plugins "0.76.9" + nullthrows "^1.1.1" + +metro@0.72.4: + version "0.72.4" + resolved "https://registry.yarnpkg.com/metro/-/metro-0.72.4.tgz#fdfc43b3329388b5a3e8856727403f93a8c05250" + integrity sha512-UBqL2fswJjsq2LlfMPV4ArqzLzjyN0nReKRijP3DdSxZiaJDG4NC9sQoVJHbH1HP5qXQMAK/SftyAx1c1kuy+w== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/core" "^7.14.0" + "@babel/generator" "^7.14.0" + "@babel/parser" "^7.14.0" + "@babel/template" "^7.0.0" + "@babel/traverse" "^7.14.0" + "@babel/types" "^7.0.0" + absolute-path "^0.0.0" + accepts "^1.3.7" + async "^3.2.2" + chalk "^4.0.0" + ci-info "^2.0.0" + connect "^3.6.5" + debug "^2.2.0" + denodeify "^1.2.1" + error-stack-parser "^2.0.6" + fs-extra "^1.0.0" + graceful-fs "^4.2.4" + hermes-parser "0.8.0" + image-size "^0.6.0" + invariant "^2.2.4" + jest-worker "^27.2.0" + jsc-safe-url "^0.2.2" + lodash.throttle "^4.1.1" + metro-babel-transformer "0.72.4" + metro-cache "0.72.4" + metro-cache-key "0.72.4" + metro-config "0.72.4" + metro-core "0.72.4" + metro-file-map "0.72.4" + metro-hermes-compiler "0.72.4" + metro-inspector-proxy "0.72.4" + metro-minify-uglify "0.72.4" + metro-react-native-babel-preset "0.72.4" + metro-resolver "0.72.4" + metro-runtime "0.72.4" + metro-source-map "0.72.4" + metro-symbolicate "0.72.4" + metro-transform-plugins "0.72.4" + metro-transform-worker "0.72.4" + mime-types "^2.1.27" + node-fetch "^2.2.0" + nullthrows "^1.1.1" + rimraf "^2.5.4" + serialize-error "^2.1.0" + source-map "^0.5.6" + strip-ansi "^6.0.0" + temp "0.8.3" + throat "^5.0.0" + ws "^7.5.1" + yargs "^15.3.1" + metro@0.76.7: version "0.76.7" resolved "https://registry.yarnpkg.com/metro/-/metro-0.76.7.tgz#4885917ad28738c7d1e556630e0155f687336230" @@ -15770,6 +16767,59 @@ metro@0.76.7: ws "^7.5.1" yargs "^17.6.2" +metro@0.76.9, metro@^0.76.9: + version "0.76.9" + resolved "https://registry.yarnpkg.com/metro/-/metro-0.76.9.tgz#605fddf1a54d27762ddba2f636420ae2408862df" + integrity sha512-gcjcfs0l5qIPg0lc5P7pj0x7vPJ97tan+OnEjiYLbKjR1D7Oa78CE93YUPyymUPH6q7VzlzMm1UjT35waEkZUw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/core" "^7.20.0" + "@babel/generator" "^7.20.0" + "@babel/parser" "^7.20.0" + "@babel/template" "^7.0.0" + "@babel/traverse" "^7.20.0" + "@babel/types" "^7.20.0" + accepts "^1.3.7" + async "^3.2.2" + chalk "^4.0.0" + ci-info "^2.0.0" + connect "^3.6.5" + debug "^2.2.0" + denodeify "^1.2.1" + error-stack-parser "^2.0.6" + graceful-fs "^4.2.4" + hermes-parser "0.12.0" + image-size "^1.0.2" + invariant "^2.2.4" + jest-worker "^27.2.0" + jsc-safe-url "^0.2.2" + lodash.throttle "^4.1.1" + metro-babel-transformer "0.76.9" + metro-cache "0.76.9" + metro-cache-key "0.76.9" + metro-config "0.76.9" + metro-core "0.76.9" + metro-file-map "0.76.9" + metro-inspector-proxy "0.76.9" + metro-minify-uglify "0.76.9" + metro-react-native-babel-preset "0.76.9" + metro-resolver "0.76.9" + metro-runtime "0.76.9" + metro-source-map "0.76.9" + metro-symbolicate "0.76.9" + metro-transform-plugins "0.76.9" + metro-transform-worker "0.76.9" + mime-types "^2.1.27" + node-fetch "^2.2.0" + nullthrows "^1.1.1" + rimraf "^3.0.2" + serialize-error "^2.1.0" + source-map "^0.5.6" + strip-ansi "^6.0.0" + throat "^5.0.0" + ws "^7.5.1" + yargs "^17.6.2" + microevent.ts@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" @@ -16151,14 +17201,13 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" -nativewind@4.1.10, nativewind@4.1.23: - version "4.1.23" - resolved "https://registry.yarnpkg.com/nativewind/-/nativewind-4.1.23.tgz#badfa94a5cd2e12ff8971dd274d234cd843ca74e" - integrity sha512-oLX3suGI6ojQqWxdQezOSM5GmJ4KvMnMtmaSMN9Ggb5j7ysFt4nHxb1xs8RDjZR7BWc+bsetNJU8IQdQMHqRpg== +nativewind@4.1.10: + version "4.1.10" + resolved "https://registry.yarnpkg.com/nativewind/-/nativewind-4.1.10.tgz#89174704108400a81e8443d13cd17bd3b687e81b" + integrity sha512-RDLqcXdfYEpLelY/VQUYjGu5xmoZmhK+QELUyxZR4RY/+pr1BvIctfYWnEJYvORj7Al3tI3LQA4GZ1J4K2DdGQ== dependencies: comment-json "^4.2.5" - debug "^4.3.7" - react-native-css-interop "0.1.22" + react-native-css-interop "0.1.9" natural-compare-lite@^1.4.0: version "1.4.0" @@ -16469,6 +17518,11 @@ nwsapi@^2.2.2: resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.12.tgz#fb6af5c0ec35b27b4581eb3bbad34ec9e5c696f8" integrity sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w== +ob1@0.72.4: + version "0.72.4" + resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.72.4.tgz#d2ddedb09fb258d69490e8809157518a62b75506" + integrity sha512-/iPJKpXpVEZS0subUvjew4ept5LTBxj1hD20A4mAj9CJkGGPgvbBlfYtFEBubBkk4dv4Ef5lajsnRBYPxF74cQ== + ob1@0.76.7: version "0.76.7" resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.76.7.tgz#95b68fadafd47e7a6a0ad64cf80f3140dd6d1124" @@ -16479,6 +17533,11 @@ ob1@0.76.8: resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.76.8.tgz#ac4c459465b1c0e2c29aaa527e09fc463d3ffec8" integrity sha512-dlBkJJV5M/msj9KYA9upc+nUWVwuOFFTbu28X6kZeGwcuW+JxaHSBZ70SYQnk5M+j5JbNLR6yKHmgW4M5E7X5g== +ob1@0.76.9: + version "0.76.9" + resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.76.9.tgz#a493e4b83a0fb39200de639804b5d06eed5599dc" + integrity sha512-g0I/OLnSxf6OrN3QjSew3bTDJCdbZoWxnh8adh1z36alwCuGF1dgDeRA25bTYSakrG5WULSaWJPOdgnf1O/oQw== + object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -18208,6 +19267,14 @@ react-dev-utils@~11.0.1: strip-ansi "6.0.0" text-table "0.2.0" +react-devtools-core@4.27.7: + version "4.27.7" + resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.27.7.tgz#458a6541483078d60a036c75bf88f54c478086ec" + integrity sha512-12N0HrhCPbD76Z7SkyJdGdXdPGouUsgV6tlEsbSpAnLDO06tjXZP+irht4wPdYwJAJRQ85DxL48eQoz7UmrSuQ== + dependencies: + shell-quote "^1.6.1" + ws "^7" + react-devtools-core@^4.27.2: version "4.28.5" resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.28.5.tgz#c8442b91f068cdf0c899c543907f7f27d79c2508" @@ -18341,16 +19408,25 @@ react-native-builder-bob@^0.20.1, react-native-builder-bob@^0.20.3: optionalDependencies: jetifier "^2.0.0" -react-native-css-interop@0.1.22: - version "0.1.22" - resolved "https://registry.yarnpkg.com/react-native-css-interop/-/react-native-css-interop-0.1.22.tgz#70cc6ca7a8f14126e123e44a19ceed74dd2a167a" - integrity sha512-Mu01e+H9G+fxSWvwtgWlF5MJBJC4VszTCBXopIpeR171lbeBInHb8aHqoqRPxmJpi3xIHryzqKFOJYAdk7PBxg== +react-native-codegen@^0.70.7: + version "0.70.7" + resolved "https://registry.yarnpkg.com/react-native-codegen/-/react-native-codegen-0.70.7.tgz#8f6b47a88740ae703209d57b7605538d86dacfa6" + integrity sha512-qXE8Jrhc9BmxDAnCmrHFDLJrzgjsE/mH57dtC4IO7K76AwagdXNCMRp5SA8XdHJzvvHWRaghpiFHEMl9TtOBcQ== + dependencies: + "@babel/parser" "^7.14.0" + flow-parser "^0.121.0" + jscodeshift "^0.14.0" + nullthrows "^1.1.1" + +react-native-css-interop@0.1.9: + version "0.1.9" + resolved "https://registry.yarnpkg.com/react-native-css-interop/-/react-native-css-interop-0.1.9.tgz#2777c4107398098c2d15a9cb3e78b1ea0a0d0e9e" + integrity sha512-aPFkiTsJeGz3x65of8RYziEI+x1EjuANr42IcleTkxvWwwKWNOdxdjNCj2LROJRozs9K1rs3BzFJnbypvpdTow== dependencies: "@babel/helper-module-imports" "^7.22.15" "@babel/traverse" "^7.23.0" "@babel/types" "^7.23.0" - debug "^4.3.7" - lightningcss "^1.27.0" + lightningcss "1.22.0" semver "^7.6.3" react-native-gesture-handler@^2.12.1: @@ -18374,6 +19450,11 @@ react-native-gesture-handler@~2.14.0: lodash "^4.17.21" prop-types "^15.7.2" +react-native-gradle-plugin@^0.70.3: + version "0.70.3" + resolved "https://registry.yarnpkg.com/react-native-gradle-plugin/-/react-native-gradle-plugin-0.70.3.tgz#cbcf0619cbfbddaa9128701aa2d7b4145f9c4fc8" + integrity sha512-oOanj84fJEXUg9FoEAQomA8ISG+DVIrTZ3qF7m69VQUJyOGYyDZmPqKcjvRku4KXlEH6hWO9i4ACLzNBh8gC0A== + react-native-modal-datetime-picker@^14.0.0: version "14.0.1" resolved "https://registry.yarnpkg.com/react-native-modal-datetime-picker/-/react-native-modal-datetime-picker-14.0.1.tgz#d9c6df4ff85bf1cfbe108c756dc26dcca4cc5f2f" @@ -18424,7 +19505,7 @@ react-native-vector-icons@^10.0.0: prop-types "^15.7.2" yargs "^16.1.1" -react-native-web@0.19.9, react-native-web@^0.18.1, react-native-web@^0.19.9: +react-native-web@0.19.9, react-native-web@^0.19.9: version "0.19.9" resolved "https://registry.yarnpkg.com/react-native-web/-/react-native-web-0.19.9.tgz#6ee43e6c64d886b1d739f100fed07927541ee003" integrity sha512-m69arZbS6FV+BNSKE6R/NQwUX+CzxCkYM7AJlSLlS8dz3BDzlaxG8Bzqtzv/r3r1YFowhnZLBXVKIwovKDw49g== @@ -18438,7 +19519,20 @@ react-native-web@0.19.9, react-native-web@^0.18.1, react-native-web@^0.19.9: postcss-value-parser "^4.2.0" styleq "^0.1.3" -react-native@0.72.4, react-native@^0.70.3, react-native@^0.72.4, react-native@^0.72.5: +react-native-web@^0.18.1: + version "0.18.12" + resolved "https://registry.yarnpkg.com/react-native-web/-/react-native-web-0.18.12.tgz#d4bb3a783ece2514ba0508d7805b09c0a98f5a8e" + integrity sha512-fboP7yqobJ8InSr4fP+bQ3scOtSQtUoPcR+HWasH8b/fk/RO+mWcJs/8n+lewy9WTZc2D68ha7VwRDviUshEWA== + dependencies: + "@babel/runtime" "^7.18.6" + create-react-class "^15.7.0" + fbjs "^3.0.4" + inline-style-prefixer "^6.0.1" + normalize-css-color "^1.0.2" + postcss-value-parser "^4.2.0" + styleq "^0.1.2" + +react-native@0.72.4, react-native@^0.72.4: version "0.72.4" resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.72.4.tgz#97b57e22e4d7657eaf4d1f62a678511fcf9bdda7" integrity sha512-+vrObi0wZR+NeqL09KihAAdVlQ9IdplwznJWtYrjnQ4UbCW6rkzZJebRsugwUneSOKNFaHFEo1uKU89HsgtYBg== @@ -18480,6 +19574,87 @@ react-native@0.72.4, react-native@^0.70.3, react-native@^0.72.4, react-native@^0 ws "^6.2.2" yargs "^17.6.2" +react-native@^0.70.3: + version "0.70.15" + resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.70.15.tgz#65f2c5c399ff8e2a892cef9b094cc0888653a874" + integrity sha512-pm2ZPpA+m0Kl0THAy2fptnp7B9+QPexpfad9fSXfqjPufrXG2alwW8kYCn2EO5ZUX6bomZjFEswz6RzdRN/p9A== + dependencies: + "@jest/create-cache-key-function" "^27.0.1" + "@react-native-community/cli" "9.3.5" + "@react-native-community/cli-platform-android" "9.3.4" + "@react-native-community/cli-platform-ios" "9.3.0" + "@react-native/assets" "1.0.0" + "@react-native/normalize-color" "2.0.0" + "@react-native/polyfills" "2.0.0" + abort-controller "^3.0.0" + anser "^1.4.9" + base64-js "^1.1.2" + event-target-shim "^5.0.1" + invariant "^2.2.4" + jsc-android "^250230.2.1" + memoize-one "^5.0.0" + metro-react-native-babel-transformer "0.72.4" + metro-runtime "0.72.4" + metro-source-map "0.72.4" + mkdirp "^0.5.1" + nullthrows "^1.1.1" + pretty-format "^26.5.2" + promise "^8.3.0" + react-devtools-core "4.27.7" + react-native-codegen "^0.70.7" + react-native-gradle-plugin "^0.70.3" + react-refresh "^0.4.0" + react-shallow-renderer "^16.15.0" + regenerator-runtime "^0.13.2" + scheduler "^0.22.0" + stacktrace-parser "^0.1.3" + use-sync-external-store "^1.0.0" + whatwg-fetch "^3.0.0" + ws "^6.1.4" + +react-native@^0.72.5: + version "0.72.17" + resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.72.17.tgz#54d6de38adf6e56fdde1a6b83ef9b138abae7384" + integrity sha512-k3dNe0XqoYCGGWTenbupWSj+ljW3GIfmYS5P4s3if4j0csx2YbenKgH1aJNWLp+UP7ONwfId6G+uBoUJfyMxXg== + dependencies: + "@jest/create-cache-key-function" "^29.2.1" + "@react-native-community/cli" "^11.4.1" + "@react-native-community/cli-platform-android" "^11.4.1" + "@react-native-community/cli-platform-ios" "^11.4.1" + "@react-native/assets-registry" "^0.72.0" + "@react-native/codegen" "^0.72.8" + "@react-native/gradle-plugin" "^0.72.11" + "@react-native/js-polyfills" "^0.72.1" + "@react-native/normalize-colors" "^0.72.0" + "@react-native/virtualized-lists" "^0.72.8" + abort-controller "^3.0.0" + anser "^1.4.9" + ansi-regex "^5.0.0" + base64-js "^1.1.2" + deprecated-react-native-prop-types "^4.2.3" + event-target-shim "^5.0.1" + flow-enums-runtime "^0.0.5" + invariant "^2.2.4" + jest-environment-node "^29.2.1" + jsc-android "^250231.0.0" + memoize-one "^5.0.0" + metro-runtime "^0.76.9" + metro-source-map "^0.76.9" + mkdirp "^0.5.1" + nullthrows "^1.1.1" + pretty-format "^26.5.2" + promise "^8.3.0" + react-devtools-core "^4.27.2" + react-refresh "^0.4.0" + react-shallow-renderer "^16.15.0" + regenerator-runtime "^0.13.2" + scheduler "0.24.0-canary-efb381bbf-20230505" + stacktrace-parser "^0.1.10" + use-sync-external-store "^1.0.0" + whatwg-fetch "^3.0.0" + ws "^6.2.2" + yargs "^17.6.2" + react-refresh@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046" @@ -19136,6 +20311,11 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" +rimraf@~2.2.6: + version "2.2.8" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" + integrity sha512-R5KMKHnPAQaZMqLOsyuyUmcIjSeDm+73eoqQpaXA7AZ22BL+6C+1mcUscgOsNd8WVlJuvlgAPsegcx7pjlV0Dg== + rimraf@~2.4.0: version "2.4.5" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.4.5.tgz#ee710ce5d93a8fdb856fb5ea8ff0e2d75934b2da" @@ -19980,7 +21160,7 @@ stackframe@^1.3.4: resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== -stacktrace-parser@^0.1.10: +stacktrace-parser@^0.1.10, stacktrace-parser@^0.1.3: version "0.1.10" resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== @@ -20103,7 +21283,16 @@ string-natural-compare@^3.0.1: resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4" integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== -"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -20218,7 +21407,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -20246,6 +21435,13 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-ansi@^7.0.1: version "7.1.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" @@ -20382,7 +21578,7 @@ stylehacks@^4.0.0: postcss "^7.0.0" postcss-selector-parser "^3.0.0" -styleq@^0.1.3: +styleq@^0.1.2, styleq@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/styleq/-/styleq-0.1.3.tgz#8efb2892debd51ce7b31dc09c227ad920decab71" integrity sha512-3ZUifmCDCQanjeej1f6kyl/BeP/Vae5EYkQ9iJfUm/QwZvlgnZzyflqAsAWYURdtea8Vkvswu2GrC57h3qffcA== @@ -20589,6 +21785,14 @@ temp-dir@^2.0.0: resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== +temp@0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59" + integrity sha512-jtnWJs6B1cZlHs9wPG7BrowKxZw/rf6+UpGAkr8AaYmiTyTO7zQlLoST8zx/8TcUPnZmeBoB+H8ARuHZaSijVw== + dependencies: + os-tmpdir "^1.0.0" + rimraf "~2.2.6" + temp@^0.8.4: version "0.8.4" resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.4.tgz#8c97a33a4770072e0a05f919396c7665a7dd59f2" @@ -22245,7 +23449,7 @@ worker-rpc@^0.1.0: dependencies: microevent.ts "~0.1.1" -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -22272,6 +23476,15 @@ wrap-ansi@^6.0.1, wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^8.0.1, wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" @@ -22313,7 +23526,7 @@ write-file-atomic@^4.0.2: imurmurhash "^0.1.4" signal-exit "^3.0.7" -ws@^6.2.1, ws@^6.2.2: +ws@^6.1.4, ws@^6.2.1, ws@^6.2.2: version "6.2.3" resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.3.tgz#ccc96e4add5fd6fedbc491903075c85c5a11d9ee" integrity sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA== @@ -22475,7 +23688,7 @@ yargs@^13.3.2: y18n "^4.0.0" yargs-parser "^13.1.2" -yargs@^15.1.0: +yargs@^15.1.0, yargs@^15.3.1: version "15.4.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== From 72a9941bfe470e9c7f8ac6c022bce7d2bfc266ff Mon Sep 17 00:00:00 2001 From: ujjjwal2608 Date: Thu, 2 Jan 2025 15:25:09 +0530 Subject: [PATCH 04/20] fix: fixed the width of the component --- .../src/core-components/nativewind/time-input/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/example/storybook-nativewind/src/core-components/nativewind/time-input/index.tsx b/example/storybook-nativewind/src/core-components/nativewind/time-input/index.tsx index ec8a3fe7c6..824c6cfe44 100644 --- a/example/storybook-nativewind/src/core-components/nativewind/time-input/index.tsx +++ b/example/storybook-nativewind/src/core-components/nativewind/time-input/index.tsx @@ -27,7 +27,7 @@ cssInterop(UITimeInput, { }); const timeInputStyle = tva({ - base: 'flex flex-row items-center justify-between', + base: 'flex flex-row items-center justify-between w-fit', variants: { size: { xl: 'h-12 gap-5', From 10957c780b4ddac8b673c9eaa5ff6e41b7b8b8c4 Mon Sep 17 00:00:00 2001 From: ujjjwal2608 Date: Thu, 2 Jan 2025 16:40:14 +0530 Subject: [PATCH 05/20] fix: fixed the typings --- packages/unstyled/time-input/src/types.ts | 31 ++++++++++++++++++----- 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/packages/unstyled/time-input/src/types.ts b/packages/unstyled/time-input/src/types.ts index 751423c95a..faa11a8117 100644 --- a/packages/unstyled/time-input/src/types.ts +++ b/packages/unstyled/time-input/src/types.ts @@ -116,10 +116,12 @@ export type ITimeInputComponentType = React.RefAttributes & React.PropsWithoutRef & ITimeInputProps > & { Hr: React.ForwardRefExoticComponent< - React.RefAttributes
& React.PropsWithoutRef
& ITimeInputProps + React.RefAttributes
& React.PropsWithoutRef
& ITimeInputFieldProps >; Min: React.ForwardRefExoticComponent< - React.RefAttributes & React.PropsWithoutRef & ITimeInputProps + React.RefAttributes & + React.PropsWithoutRef & + ITimeInputFieldProps >; Meridiem: React.ForwardRefExoticComponent< React.RefAttributes & @@ -132,16 +134,33 @@ export type ITimeInputComponentType = Text: React.FC; }; export interface ITimeInputMeridiemProps { + /** + * If true, the input will be on active state on press. + */ isPressed?: boolean; + /** + * If true, the input will be disabled. + */ isDisabled?: boolean; + /** + * If true, the input will be hovered. + */ isHovered?: boolean; + /** + * If true, the input will be focused. + */ isFocused?: boolean; + /** + * If true, the input will be focus visible. + */ isFocusVisible?: boolean; children: JSX.Element | Array | ((props: any) => JSX.Element); - isInvalid?: boolean; - isReadOnly?: boolean; - isRequired?: boolean; - toggleItem?: () => void; + /** + * callback function that will be called when the input is focused + */ onFocus?: (e: any) => void; + /** + * callback function that will be called when the input is blurred + */ onBlur?: (e: any) => void; } From c7c4167a2875c09bcb6cec0759208c34572886bc Mon Sep 17 00:00:00 2001 From: ujjjwal2608 Date: Thu, 2 Jan 2025 16:55:54 +0530 Subject: [PATCH 06/20] feat: basic docs completed --- .../components/TimeInput/index.nw.stories.mdx | 623 ++++++++++++++++++ 1 file changed, 623 insertions(+) create mode 100644 example/storybook-nativewind/src/components/TimeInput/index.nw.stories.mdx diff --git a/example/storybook-nativewind/src/components/TimeInput/index.nw.stories.mdx b/example/storybook-nativewind/src/components/TimeInput/index.nw.stories.mdx new file mode 100644 index 0000000000..f74152869e --- /dev/null +++ b/example/storybook-nativewind/src/components/TimeInput/index.nw.stories.mdx @@ -0,0 +1,623 @@ +--- +title: gluestack-ui TimeInput Component | Installation, Usage, and API + +description: A component that allows users to input a time value. + +pageTitle: TimeInput + +pageDescription: A component that allows users to input a time value. + +showHeader: true +--- + +import { Meta } from '@storybook/addon-docs'; + + + +import { + TimeInput, + TimeInputHr, + TimeInputMin, + TimeInputMeridiem, + TimeInputMeridiemText, + TimeInputColumn, + Input, + InputField, + InputIcon, + InputSlot, + Button, + ButtonText, + VStack, + Text as GSText, + Center, + Box, + FormControl, + Heading, + Icon, SearchIcon +} from '../../core-components/nativewind'; +import { EyeIcon, EyeOffIcon } from 'lucide-react-native'; +import { transformedCode } from '../../utils'; +import { + AppProvider, + CodePreview, + Table, + TableContainer, + Text, + InlineCode, + CollapsibleCode, + Tabs +} from '@gluestack/design-system'; +import Wrapper from '../../core-components/nativewind/Wrapper'; +import AnatomyImage from '../../extra-components/nativewind/AnatomyImage'; + +This is an illustration of **TimeInput** component. + +<> + + + + + + + +
+ `, + transformCode: (code) => { + return transformedCode(code); + }, + scope: { + Wrapper, + TimeInput, + TimeInputHr, + TimeInputMin, + TimeInputMeridiem, + TimeInputMeridiemText, + TimeInputColumn, + }, + argsType: { + variant: { + control: 'select', + options: ['outline', 'underlined'], + default: 'outline', + }, + size: { + control: 'select', + options: ['sm', 'md', 'lg', 'xl'], + default: 'md', + }, + isDisabled: { + control: 'boolean', + default: false, + }, + isInvalid: { + control: 'boolean', + default: false, + }, + isReadOnly: { + control: 'boolean', + default: false, + }, + }, + }} + /> + + +
+ +## Installation + + + + + CLI + + + Manual + + + + +<> + +### Run the following command: + ```bash + npx gluestack-ui add time-input + ``` + + + +<> + +### Step 1: Install the following dependencies: +```bash +npm i @gluestack-ui/time-input +``` + +### Step 2: Copy and paste the following code into your project. + + +```jsx +%%-- File: core-components/nativewind/time-input/index.tsx --%% +``` + + +### Step 3: Update the import paths to match your project setup. + + + + + +## API Reference + +To use this component in your project, include the following import statement in your file. + +```jsx +import { TimeInput } from '@/components/ui/time-input'; +``` + + + +```jsx +export default () => ( + + + + + + + + +); +``` + +### Component Props + +This section provides a comprehensive reference list for the component props, detailing descriptions, properties, types, and default behavior for easy project integration. + +#### TimeInput + +It inherits all the properties of React Native's [View](https://reactnative.dev/docs/view) component. + +<> + + + + + + Prop + + + Type + + + Default + + + Description + + + + + + + + isInvalid + + + + bool + + + false + + + {`When true, the timeinput minutes and hours feilds displays an error state.`} + + + + + + isDisabled + + + + bool + + + false + + + {`When true, the timeinput is disabled and cannot be edited.`} + + + + + + isHovered + + + + bool + + + false + + + {`When true, the timeinput feilds displays a hover state.`} + + + + + + isRequired + + + + bool + + + false + + + {`If true, sets aria-required="true" on the minutes and hours feilds of timeinput.`} + + + + + + isReadOnly + + + + bool + + + false + + + {`If true, the timeinput minutes and hours values cannot be edited.`} + + + +
+
+ + + +#### Minutes and Hours Fields + +Contains all TextInput related layout style props and actions. +It inherits all the properties of React Native's [TextInput](https://reactnative.dev/docs/textInput#props) component. + +<> + + + + + + Prop + + + Type + + + Default + + + Description + + + + + + + + isFocused + + + + bool + + + false + + + {`If true, the timeinput minutes and hours feilds displays a focus state.`} + + + + + + isHovered + + + + bool + + + false + + + {`If true, the specific timeinput feilds displays a hover state.`} + + + + + + editable + + + + bool + + + true + + + {`If true, the specific timeinput feild is editable.`} + + + +
+
+ + +#### TimeInputMeridiem + +Contains all button related layout style props and actions. It inherits all the properties of React Native's [Pressable](https://reactnative.dev/docs/pressable) component. + +<> + + + + + + Prop + + + Type + + + Default + + + Description + + + + + + + + isHovered + + + + bool + + + false + + + {`To manually set hover to the meridiem.`} + + + + + + isPressed + + + + bool + + + false + + + {`To manually set pressable state to the meridiem.`} + + + + + + isFocused + + + + bool + + + false + + + {`To manually set focused state to the meridiem.`} + + + +
+
+ +Text + +

{`Renders a on web and a Text on native.`}

+ +### Features + +- Keyboard support for actions. +- Support for hover, focus and active states. +- Option to add your styles or use the default styles. + +### Accessibility + +We have outlined the various features that ensure the TimeInput component is accessible to all users, including those with disabilities. These features help ensure that your application is inclusive and meets accessibility standards.Adheres to the [WAI-ARIA design pattern](https://www.w3.org/TR/wai-aria-1.2/#textbox). + +#### Keyboard + +- Setting the `aria-label` and `aria-hint` to help users understand the purpose and function of the TimeInput + +#### Screen Reader + +- Compatible with screen readers such as VoiceOver and Talk-back. +- The `accessible` and `aria-label` props to provide descriptive information about the TimeInput +- Setting `aria-traits` and `aria-hint` to provide contextual information about the various states of the TimeInput, such as "double tap to edit". + +#### Focus Management + +- The `onFocus` and `onBlur` props to manage focus states and provide visual cues to users. This is especially important for users who rely on keyboard navigation. + +#### States + +- In error state, `aria-invalid` will be passed to indicate that the TimeInput has an error, and providing support for an `aria-errormessage` to describe the error in more detail. +- In disabled state, `aria-hidden` will be passed to make input not focusable. +- In required state, `aria-required` will be passed to indicate that the TimeInput is required. + + +### Data Attributes Table + +Component receives states as props as boolean values, which are applied as ```data-*``` attributes. These attributes are then used to style the component via classNames, enabling state-based styling. + +<> + + + + + + State + + + Data Attribute + + + Values + + + + + + + + hover + + + + + data-hover + + + + + true | false + + + + + + + disabled + + + + data-disabled + + + + true | false + + + + + + + focus + + + + data-focus + + + + true | false + + + + + + + invalid + + + + data-invalid + + + + true | false + + + + +
+
+ + +#### Input + +<> + + + + + + Name + + + Value + + + Default + + + + + + + + size + + + + xl | lg | md | sm + + + md + + + + + + variant + + + + outlined | rounded + + + outlined + + + +
+
+ + + + + + + From 40afdbacc43bd002f3c11ffe4c36dcd27c4a6280 Mon Sep 17 00:00:00 2001 From: ujjjwal2608 Date: Thu, 2 Jan 2025 18:52:03 +0530 Subject: [PATCH 07/20] feat: docs completed --- .../components/TimeInput/TimeInput.stories.tsx | 2 +- .../components/TimeInput/index.nw.stories.mdx | 16 +--------------- 2 files changed, 2 insertions(+), 16 deletions(-) diff --git a/example/storybook-nativewind/src/components/TimeInput/TimeInput.stories.tsx b/example/storybook-nativewind/src/components/TimeInput/TimeInput.stories.tsx index c1c918c77d..c21402ac3d 100644 --- a/example/storybook-nativewind/src/components/TimeInput/TimeInput.stories.tsx +++ b/example/storybook-nativewind/src/components/TimeInput/TimeInput.stories.tsx @@ -7,7 +7,7 @@ const TimeInputMeta: ComponentMeta = { // metaInfo is required for figma generation // @ts-ignore metaInfo: { - componentDescription: `The TimeInput component is designed to accommodate larger amounts of text input. It allows multi-line input and can be easily customized to fit the user's needs.`, + componentDescription: `The TimeInput component is designed to take the time from user in the form of day.js object`, }, argTypes: { size: { diff --git a/example/storybook-nativewind/src/components/TimeInput/index.nw.stories.mdx b/example/storybook-nativewind/src/components/TimeInput/index.nw.stories.mdx index f74152869e..3edf88bd74 100644 --- a/example/storybook-nativewind/src/components/TimeInput/index.nw.stories.mdx +++ b/example/storybook-nativewind/src/components/TimeInput/index.nw.stories.mdx @@ -21,21 +21,7 @@ import { TimeInputMeridiem, TimeInputMeridiemText, TimeInputColumn, - Input, - InputField, - InputIcon, - InputSlot, - Button, - ButtonText, - VStack, - Text as GSText, - Center, - Box, - FormControl, - Heading, - Icon, SearchIcon -} from '../../core-components/nativewind'; -import { EyeIcon, EyeOffIcon } from 'lucide-react-native'; +} from '../../core-components/nativewind/time-input'; import { transformedCode } from '../../utils'; import { AppProvider, From 7a5c8d17311f034ec980b9191fba19d5a709840f Mon Sep 17 00:00:00 2001 From: ujjjwal2608 Date: Fri, 3 Jan 2025 13:33:31 +0530 Subject: [PATCH 08/20] fix: corrected styling --- .../nativewind/time-input/index.tsx | 36 +++++++++++++++---- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/example/storybook-nativewind/src/core-components/nativewind/time-input/index.tsx b/example/storybook-nativewind/src/core-components/nativewind/time-input/index.tsx index 824c6cfe44..0b81f96bd3 100644 --- a/example/storybook-nativewind/src/core-components/nativewind/time-input/index.tsx +++ b/example/storybook-nativewind/src/core-components/nativewind/time-input/index.tsx @@ -30,16 +30,20 @@ const timeInputStyle = tva({ base: 'flex flex-row items-center justify-between w-fit', variants: { size: { - xl: 'h-12 gap-5', - lg: 'h-11 gap-4', - md: 'h-11 gap-3', - sm: 'h-9 gap-2', + xl: 'gap-5', + lg: 'gap-4', + md: 'gap-3', + sm: 'gap-2', + }, + variant: { + outlined: '', + underlined: '', }, }, }); const timeInputFieldStyle = tva({ - base: 'border-background-300 content-center data-[hover=true]:border-outline-400 data-[focus=true]:border-primary-700 data-[focus=true]:data-[hover=true]:border-primary-700 data-[disabled=true]:opacity-40 data-[disabled=true]:data-[hover=true]:border-background-300 text-center placeholder:text-typography-500', + base: 'border-background-300 data-[hover=true]:border-outline-400 data-[focus=true]:border-primary-700 data-[focus=true]:data-[hover=true]:border-primary-700 data-[disabled=true]:opacity-40 data-[disabled=true]:data-[hover=true]:border-background-300 text-center placeholder:text-typography-500', parentVariants: { size: { @@ -50,7 +54,7 @@ const timeInputFieldStyle = tva({ }, variant: { underlined: - 'rounded-none border-b data-[invalid=true]:border-b-2 data-[invalid=true]:border-error-700 data-[invalid=true]:data-[hover=true]:border-error-700 data-[invalid=true]:data-[focus=true]:border-error-700 data-[invalid=true]:data-[focus=true]:data-[hover=true]:border-error-700 data-[invalid=true]:data-[disabled=true]:data-[hover=true]:border-error-700', + 'border-b data-[invalid=true]:border-b-2 data-[invalid=true]:border-error-700 data-[invalid=true]:data-[hover=true]:border-error-700 data-[invalid=true]:data-[focus=true]:border-error-700 data-[invalid=true]:data-[focus=true]:data-[hover=true]:border-error-700 data-[invalid=true]:data-[disabled=true]:data-[hover=true]:border-error-700', outlined: 'rounded border data-[invalid=true]:border-error-700 data-[invalid=true]:data-[hover=true]:border-error-700 data-[invalid=true]:data-[focus=true]:border-error-700 data-[invalid=true]:data-[focus=true]:data-[hover=true]:border-error-700 data-[invalid=true]:data-[disabled=true]:data-[hover=true]:border-error-700 data-[focus=true]:web:ring-1 data-[focus=true]:web:ring-inset data-[focus=true]:web:ring-indicator-primary data-[invalid=true]:web:ring-1 data-[invalid=true]:web:ring-inset data-[invalid=true]:web:ring-indicator-error data-[invalid=true]:data-[focus=true]:data-[hover=true]:web:ring-1 data-[invalid=true]:data-[focus=true]:data-[hover=true]:web:ring-inset data-[invalid=true]:data-[focus=true]:data-[hover=true]:web:ring-indicator-error data-[invalid=true]:data-[disabled=true]:data-[hover=true]:web:ring-1 data-[invalid=true]:data-[disabled=true]:data-[hover=true]:web:ring-inset data-[invalid=true]:data-[disabled=true]:data-[hover=true]:web:ring-indicator-error', }, @@ -72,6 +76,14 @@ const timeInputMeridiemTextStyle = tva({ const timeInputColumnStyle = tva({ base: 'text-sm font-semibold', + variants: { + size: { + xl: 'text-xl', + lg: 'text-lg', + md: 'text-base', + sm: 'text-sm', + }, + }, }); const timeInputMeridiemStyle = tva({ @@ -203,8 +215,18 @@ const TimeInputMeridiemText = React.forwardRef< }); const TimeInputColumn = ({ className, ...props }: { className?: string }) => { + const { size: parentSize } = useStyleContext(SCOPE); + return ( - + : ); From ec55f83b79328a45e30faad20cef37c675aae0cf Mon Sep 17 00:00:00 2001 From: ujjjwal2608 Date: Fri, 3 Jan 2025 17:17:34 +0530 Subject: [PATCH 09/20] feat: completed the keyboard navigation bw the diff feilds and some fixes --- .../src/components/TimeInput/TimeInput.tsx | 1 - .../src/{TimeInputGroup.tsx => TimeInput.tsx} | 14 +++++++++----- .../time-input/src/TimeInputContext.tsx | 18 +----------------- .../unstyled/time-input/src/TimeInputHr.tsx | 14 ++++++++++---- .../time-input/src/TimeInputMeridiem.tsx | 9 +++++---- .../unstyled/time-input/src/TimeInputMin.tsx | 14 ++++++++++---- packages/unstyled/time-input/src/index.tsx | 4 ++-- packages/unstyled/time-input/src/types.ts | 19 ++++++++++++++++++- 8 files changed, 55 insertions(+), 38 deletions(-) rename packages/unstyled/time-input/src/{TimeInputGroup.tsx => TimeInput.tsx} (89%) diff --git a/example/storybook-nativewind/src/components/TimeInput/TimeInput.tsx b/example/storybook-nativewind/src/components/TimeInput/TimeInput.tsx index 50b8303f18..d72c3ccf34 100644 --- a/example/storybook-nativewind/src/components/TimeInput/TimeInput.tsx +++ b/example/storybook-nativewind/src/components/TimeInput/TimeInput.tsx @@ -17,7 +17,6 @@ const TimeInputBasic = ({ ...props }: any) => { value={timeValue} onChange={setTimeValue} isHovered={true} - isReadOnly={true} className="" > diff --git a/packages/unstyled/time-input/src/TimeInputGroup.tsx b/packages/unstyled/time-input/src/TimeInput.tsx similarity index 89% rename from packages/unstyled/time-input/src/TimeInputGroup.tsx rename to packages/unstyled/time-input/src/TimeInput.tsx index d3c9a7a30e..59ce8522ac 100644 --- a/packages/unstyled/time-input/src/TimeInputGroup.tsx +++ b/packages/unstyled/time-input/src/TimeInput.tsx @@ -4,7 +4,7 @@ import { useFormControlContext } from '@gluestack-ui/form-control'; import { mergeRefs } from '@gluestack-ui/utils'; import dayjs, { Dayjs } from 'dayjs'; import type { ITimeInputProps } from './types'; -export const TimeInputGroup = (StyledTimeInputRoot: any) => +export const TimeInput = (StyledTimeInputRoot: any) => forwardRef( ( { @@ -19,8 +19,10 @@ export const TimeInputGroup = (StyledTimeInputRoot: any) => }: Omit & { children: React.ReactNode[] }, ref?: any ) => { - const timeInputRef = React.useRef(); - const timeInputFieldRef = React.useRef(null); + const hourRef = React.useRef(null); + const minuteRef = React.useRef(null); + const meridiemRef = React.useRef(null); + const [timeValue, setTimeValue] = useState( externalValue ? externalValue : dayjs() ); @@ -52,14 +54,13 @@ export const TimeInputGroup = (StyledTimeInputRoot: any) => isRequired || timeInputProps.isRequired ? 'true' : 'false', }} {...props} - ref={mergeRefs([timeInputRef, ref])} + ref={mergeRefs([ref])} > setMeridiemPressed={setMeridiemPressed} meridiem={meridiem} setMeridiem={setMeridiem} + hourRef={hourRef} + minuteRef={minuteRef} + meridiemRef={meridiemRef} > {children} diff --git a/packages/unstyled/time-input/src/TimeInputContext.tsx b/packages/unstyled/time-input/src/TimeInputContext.tsx index 375576721a..75d1dbfd09 100644 --- a/packages/unstyled/time-input/src/TimeInputContext.tsx +++ b/packages/unstyled/time-input/src/TimeInputContext.tsx @@ -1,21 +1,5 @@ import { createContext } from '@gluestack-ui/utils'; -import { Dayjs } from 'dayjs'; - -interface TimeInputContext { - isDisabled?: boolean; - isInvalid?: boolean; - isReadOnly?: boolean; - isRequired?: boolean; - timeInputFieldRef?: any; - value: Dayjs; - setTimeValue: (value: Dayjs) => void; - meridiem: string; - setMeridiem: (meridiem: string) => void; - meridiemHovered: boolean; - setMeridiemHovered: (meridiemHovered: boolean) => void; - meridiemPressed: boolean; - setMeridiemPressed: (meridiemPressed: boolean) => void; -} +import type { TimeInputContext } from './types'; export const [TimeInputProvider, useTimeInput] = createContext('TimeInputContext'); diff --git a/packages/unstyled/time-input/src/TimeInputHr.tsx b/packages/unstyled/time-input/src/TimeInputHr.tsx index e789952223..7ac89f2738 100644 --- a/packages/unstyled/time-input/src/TimeInputHr.tsx +++ b/packages/unstyled/time-input/src/TimeInputHr.tsx @@ -20,7 +20,7 @@ export const TimeInputHr = (StyledTimeInputHr: any) => 'isFocused': isFocusedProp = false, 'isFocusVisible': isFocusVisibleProp, ...props - }: Omit & { children: React.ReactNode }, + }: ITimeInputFieldProps & { children: React.ReactNode }, ref?: any ) => { const { @@ -30,6 +30,8 @@ export const TimeInputHr = (StyledTimeInputHr: any) => isRequired, value, setTimeValue, + minuteRef, + hourRef, } = useTimeInput('TimeInputContext'); const inputProps = useFormControl({ @@ -50,7 +52,7 @@ export const TimeInputHr = (StyledTimeInputHr: any) => }; const { isFocusVisible }: any = useFocusRing(); - const mergedRef = mergeRefs([ref, inputRef]); + const mergedRef = mergeRefs([ref, inputRef, hourRef]); const editableProp = useMemo(() => { if (editable !== undefined) { @@ -76,10 +78,13 @@ export const TimeInputHr = (StyledTimeInputHr: any) => if (newHours === newHoursInt) { const newTimeValue = newHours ? value - .set('hour', parseInt(newHours) % 12) + .set('hour', parseInt(newHours)) .second(new Date().getSeconds()) : value.set('hour', 0).second(new Date().getSeconds()); setTimeValue(newTimeValue); + if (parseInt(newHours) > 1) { + minuteRef.current.select(); + } } }; @@ -121,11 +126,12 @@ export const TimeInputHr = (StyledTimeInputHr: any) => }} onFocus={(e: any) => { handleFocus(true, () => props.onFocus?.(e)); + hourRef.current.select(); }} onBlur={(e: any) => { handleFocus(false, () => props.onBlur?.(e)); }} - value={(value.get('hour') % 12).toString()} + value={(value.get('hour') % 12).toString().padStart(2, '0')} onChangeText={handleChange} ref={mergedRef} keyboardType="number-pad" diff --git a/packages/unstyled/time-input/src/TimeInputMeridiem.tsx b/packages/unstyled/time-input/src/TimeInputMeridiem.tsx index 67a634b8a0..3fc258e938 100644 --- a/packages/unstyled/time-input/src/TimeInputMeridiem.tsx +++ b/packages/unstyled/time-input/src/TimeInputMeridiem.tsx @@ -17,7 +17,7 @@ export const TimeInputMeridiem = (StyledTimeInputMeridiem: any) => isFocusVisible: isFocusVisibleProp, isDisabled: isDisabledProp, ...props - }: Omit & { + }: ITimeInputMeridiemProps & { children: React.ReactNode; }, ref?: any @@ -32,6 +32,7 @@ export const TimeInputMeridiem = (StyledTimeInputMeridiem: any) => setTimeValue, setMeridiemHovered, setMeridiemPressed, + meridiemRef, } = useTimeInput('TimeInputContext'); const { isFocusVisible, focusProps: focusRingProps }: any = @@ -42,10 +43,10 @@ export const TimeInputMeridiem = (StyledTimeInputMeridiem: any) => isDisabled, }); - const buttonRef = useRef(null); - const { isHovered } = useHover({}, buttonRef); + const pressableRef = useRef(null); + const { isHovered } = useHover({}, pressableRef); - const mergedRef = mergeRefs([ref, buttonRef]); + const mergedRef = mergeRefs([ref, pressableRef, meridiemRef]); const updateMeridiem = (meridiem: string) => { if (meridiem === 'AM') { diff --git a/packages/unstyled/time-input/src/TimeInputMin.tsx b/packages/unstyled/time-input/src/TimeInputMin.tsx index fdbff98446..6cc6872e67 100644 --- a/packages/unstyled/time-input/src/TimeInputMin.tsx +++ b/packages/unstyled/time-input/src/TimeInputMin.tsx @@ -20,7 +20,7 @@ export const TimeInputMin = (StyledTimeInputMin: any) => 'isFocused': isFocusedProp = false, 'isFocusVisible': isFocusVisibleProp, ...props - }: Omit & { children: React.ReactNode }, + }: ITimeInputFieldProps & { children: React.ReactNode }, ref?: any ) => { const { @@ -30,6 +30,8 @@ export const TimeInputMin = (StyledTimeInputMin: any) => isRequired, value, setTimeValue, + minuteRef, + meridiemRef, } = useTimeInput('TimeInputContext'); const inputRef = useRef(null); @@ -51,7 +53,7 @@ export const TimeInputMin = (StyledTimeInputMin: any) => const { isFocusVisible }: any = useFocusRing(); - const mergedRef = mergeRefs([ref, inputRef]); + const mergedRef = mergeRefs([ref, inputRef, minuteRef]); const editableProp = useMemo(() => { if (editable !== undefined) { @@ -68,10 +70,13 @@ export const TimeInputMin = (StyledTimeInputMin: any) => if (newMinutes === newMinutesInt) { const newTimeValue = newMinutes ? value - .set('minute', parseInt(newMinutes) % 60) + .set('minute', parseInt(newMinutes)) .second(new Date().getSeconds()) : value.set('minute', 0).second(new Date().getSeconds()); setTimeValue(newTimeValue); + if (parseInt(newMinutes) > 5) { + meridiemRef.current.focus(); + } } }; @@ -113,12 +118,13 @@ export const TimeInputMin = (StyledTimeInputMin: any) => }} onFocus={(e: any) => { handleFocus(true, () => props.onFocus?.(e)); + minuteRef.current.select(); }} onBlur={(e: any) => { handleFocus(false, () => props.onBlur?.(e)); }} ref={mergedRef} - value={value.get('minute').toString()} + value={value.get('minute').toString().padStart(2, '0')} onChangeText={handleChange} keyboardType="number-pad" > diff --git a/packages/unstyled/time-input/src/index.tsx b/packages/unstyled/time-input/src/index.tsx index ff66c4ae67..3dd4bbf450 100644 --- a/packages/unstyled/time-input/src/index.tsx +++ b/packages/unstyled/time-input/src/index.tsx @@ -1,7 +1,7 @@ +import { TimeInput as TimeInputComponent } from './TimeInput'; import { TimeInputHr } from './TimeInputHr'; import { TimeInputMin } from './TimeInputMin'; import type { ITimeInputComponentType } from './types'; -import { TimeInputGroup } from './TimeInputGroup'; import { TimeInputMeridiem } from './TimeInputMeridiem'; import { TimeInputMeridiemText } from './TimeInputMeridiemText'; @@ -24,7 +24,7 @@ export const createTimeInput = < TimeInputMeridiem: React.ComponentType; TimeInputMeridiemText: React.ComponentType; }) => { - const TimeInput = TimeInputGroup(Root) as any; + const TimeInput = TimeInputComponent(Root) as any; TimeInput.Hr = TimeInputHr(Hr); TimeInput.Min = TimeInputMin(Min); TimeInput.Meridiem = TimeInputMeridiem(Meridiem); diff --git a/packages/unstyled/time-input/src/types.ts b/packages/unstyled/time-input/src/types.ts index faa11a8117..f46765c2f7 100644 --- a/packages/unstyled/time-input/src/types.ts +++ b/packages/unstyled/time-input/src/types.ts @@ -1,5 +1,22 @@ import { Dayjs } from 'dayjs'; - +export interface TimeInputContext { + isDisabled?: boolean; + isInvalid?: boolean; + isReadOnly?: boolean; + isRequired?: boolean; + timeInputFieldRef?: any; //remove it + value: Dayjs; + setTimeValue: (value: Dayjs) => void; + meridiem: string; + setMeridiem: (meridiem: string) => void; + meridiemHovered: boolean; + setMeridiemHovered: (meridiemHovered: boolean) => void; + meridiemPressed: boolean; + setMeridiemPressed: (meridiemPressed: boolean) => void; + hourRef: React.RefObject; + minuteRef: React.RefObject; + meridiemRef: React.RefObject; +} export interface ITimeInputProps { /** * If true, the input will indicate an error. From 9985b7afd2f9b2fbb6a47d819ad5382453318dae Mon Sep 17 00:00:00 2001 From: ujjjwal2608 Date: Fri, 3 Jan 2025 17:46:52 +0530 Subject: [PATCH 10/20] fix: corrected the name of Colon coponent in TimeInput --- .../src/components/TimeInput/TimeInput.tsx | 4 ++-- .../src/components/TimeInput/index.nw.stories.mdx | 8 ++++---- .../core-components/nativewind/time-input/index.tsx | 10 +++++----- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/example/storybook-nativewind/src/components/TimeInput/TimeInput.tsx b/example/storybook-nativewind/src/components/TimeInput/TimeInput.tsx index d72c3ccf34..ba99bb84bc 100644 --- a/example/storybook-nativewind/src/components/TimeInput/TimeInput.tsx +++ b/example/storybook-nativewind/src/components/TimeInput/TimeInput.tsx @@ -5,7 +5,7 @@ import { TimeInputMin, TimeInputMeridiem, TimeInputMeridiemText, - TimeInputColumn, + TimeInputColon, } from '@/components/ui/time-input'; const TimeInputBasic = ({ ...props }: any) => { @@ -20,7 +20,7 @@ const TimeInputBasic = ({ ...props }: any) => { className="" > - + diff --git a/example/storybook-nativewind/src/components/TimeInput/index.nw.stories.mdx b/example/storybook-nativewind/src/components/TimeInput/index.nw.stories.mdx index 3edf88bd74..95373e88d4 100644 --- a/example/storybook-nativewind/src/components/TimeInput/index.nw.stories.mdx +++ b/example/storybook-nativewind/src/components/TimeInput/index.nw.stories.mdx @@ -20,7 +20,7 @@ import { TimeInputMin, TimeInputMeridiem, TimeInputMeridiemText, - TimeInputColumn, + TimeInputColon, } from '../../core-components/nativewind/time-input'; import { transformedCode } from '../../utils'; import { @@ -46,7 +46,7 @@ This is an illustration of **TimeInput** component. code: ` - + @@ -63,7 +63,7 @@ This is an illustration of **TimeInput** component. TimeInputMin, TimeInputMeridiem, TimeInputMeridiemText, - TimeInputColumn, + TimeInputColon, }, argsType: { variant: { @@ -152,7 +152,7 @@ import { TimeInput } from '@/components/ui/time-input'; export default () => ( - + diff --git a/example/storybook-nativewind/src/core-components/nativewind/time-input/index.tsx b/example/storybook-nativewind/src/core-components/nativewind/time-input/index.tsx index 0b81f96bd3..7c9d270b7b 100644 --- a/example/storybook-nativewind/src/core-components/nativewind/time-input/index.tsx +++ b/example/storybook-nativewind/src/core-components/nativewind/time-input/index.tsx @@ -74,7 +74,7 @@ const timeInputMeridiemTextStyle = tva({ }, }); -const timeInputColumnStyle = tva({ +const timeInputColonStyle = tva({ base: 'text-sm font-semibold', variants: { size: { @@ -214,12 +214,12 @@ const TimeInputMeridiemText = React.forwardRef< ); }); -const TimeInputColumn = ({ className, ...props }: { className?: string }) => { +const TimeInputColon = ({ className, ...props }: { className?: string }) => { const { size: parentSize } = useStyleContext(SCOPE); return ( Date: Fri, 3 Jan 2025 18:15:59 +0530 Subject: [PATCH 11/20] fix: changed the styling of meridiem for invalid state and underlined variant --- .../nativewind/time-input/index.tsx | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/example/storybook-nativewind/src/core-components/nativewind/time-input/index.tsx b/example/storybook-nativewind/src/core-components/nativewind/time-input/index.tsx index 7c9d270b7b..7e7a816fa9 100644 --- a/example/storybook-nativewind/src/core-components/nativewind/time-input/index.tsx +++ b/example/storybook-nativewind/src/core-components/nativewind/time-input/index.tsx @@ -62,7 +62,7 @@ const timeInputFieldStyle = tva({ }); const timeInputMeridiemTextStyle = tva({ - base: 'text-typography-0 font-semibold web:select-none', + base: 'web:select-none data-[invalid=true]:text-error-700', parentVariants: { size: { @@ -71,6 +71,10 @@ const timeInputMeridiemTextStyle = tva({ lg: 'text-lg', xl: 'text-xl', }, + variant: { + outlined: 'text-typography-0', + underlined: '', + }, }, }); @@ -87,7 +91,7 @@ const timeInputColonStyle = tva({ }); const timeInputMeridiemStyle = tva({ - base: 'rounded bg-primary-500 flex-row items-center justify-center data-[focus-visible=true]:web:outline-none data-[focus-visible=true]:web:ring-2 data-[disabled=true]:opacity-40', + base: 'rounded flex-row items-center justify-center data-[focus-visible=true]:web:outline-none data-[focus-visible=true]:web:ring-2 data-[disabled=true]:opacity-40', parentVariants: { size: { @@ -96,13 +100,15 @@ const timeInputMeridiemStyle = tva({ md: 'h-10 w-10', sm: 'h-9 w-9', }, + variant: { + outlined: 'bg-primary-500', + underlined: 'border border-background-300', + }, }, }); type ITimeInputProps = React.ComponentProps & - VariantProps & { className?: string } & { - variant: 'outlined' | 'underlined'; - }; + VariantProps & { className?: string }; const TimeInput = React.forwardRef< React.ElementRef, ITimeInputProps @@ -168,13 +174,13 @@ const TimeInputMin = React.forwardRef< type ITimeInputFieldMeridiemProps = React.ComponentProps< typeof UITimeInput.Meridiem > & - VariantProps & { className?: string }; + VariantProps & { className?: string }; const TimeInputMeridiem = React.forwardRef< React.ElementRef, ITimeInputFieldMeridiemProps >(({ className, ...props }, ref) => { - const { size: parentSize } = useStyleContext(SCOPE); + const { size: parentSize, variant: parentVariant } = useStyleContext(SCOPE); return ( & - VariantProps & { className?: string }; + VariantProps & { className?: string }; const TimeInputMeridiemText = React.forwardRef< React.ElementRef, ITimeInputFieldMeridiemTextProps >(({ className, ...props }, ref) => { - const { size: parentSize } = useStyleContext(SCOPE); + const { size: parentSize, variant: parentVariant } = useStyleContext(SCOPE); return ( Date: Fri, 3 Jan 2025 18:16:43 +0530 Subject: [PATCH 12/20] fix: changed the styling of meridiem for invalid state and underlined variant --- packages/unstyled/time-input/src/TimeInputMeridiem.tsx | 5 ++++- packages/unstyled/time-input/src/TimeInputMeridiemText.tsx | 6 +++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/unstyled/time-input/src/TimeInputMeridiem.tsx b/packages/unstyled/time-input/src/TimeInputMeridiem.tsx index 3fc258e938..1c814df97b 100644 --- a/packages/unstyled/time-input/src/TimeInputMeridiem.tsx +++ b/packages/unstyled/time-input/src/TimeInputMeridiem.tsx @@ -25,6 +25,7 @@ export const TimeInputMeridiem = (StyledTimeInputMeridiem: any) => const { isDisabled, isReadOnly, + isInvalid, value, meridiem, setMeridiem, @@ -67,6 +68,7 @@ export const TimeInputMeridiem = (StyledTimeInputMeridiem: any) => {...props} states={{ disabled: isDisabled, + invalid: isInvalid, hover: isHoveredProp || isHovered, focus: isFocusedProp || isFocused, focusVisible: isFocusVisibleProp || isFocusVisible, @@ -77,6 +79,7 @@ export const TimeInputMeridiem = (StyledTimeInputMeridiem: any) => }} dataSet={{ disabled: isDisabled ? 'true' : 'false', + invalid: isInvalid ? 'true' : 'false', hover: isHoveredProp && isHovered ? 'true' : 'false', focus: isFocusedProp || isFocused ? 'true' : 'false', focusVisible: @@ -86,7 +89,7 @@ export const TimeInputMeridiem = (StyledTimeInputMeridiem: any) => required: isRequired ? 'true' : 'false', readOnly: isReadOnly ? 'true' : 'false', }} - disabled={isDisabled || isDisabledProp} + disabled={isDisabled || isDisabledProp || isReadOnly} onHoverIn={() => setMeridiemHovered(true)} onHoverOut={() => setMeridiemHovered(false)} onPressIn={composeEventHandlers( diff --git a/packages/unstyled/time-input/src/TimeInputMeridiemText.tsx b/packages/unstyled/time-input/src/TimeInputMeridiemText.tsx index 140f427622..0ba6b4bfc4 100644 --- a/packages/unstyled/time-input/src/TimeInputMeridiemText.tsx +++ b/packages/unstyled/time-input/src/TimeInputMeridiemText.tsx @@ -5,10 +5,10 @@ export const TimeInputMeridiemText = (StyledTimeInputMeridiemText: any) => forwardRef(({ ...props }: any, ref?: any) => { const { isDisabled, - isReadOnly, meridiemHovered, meridiem, meridiemPressed, + isInvalid, } = useTimeInput('TimeInputContext'); return ( @@ -19,13 +19,13 @@ export const TimeInputMeridiemText = (StyledTimeInputMeridiemText: any) => hover: meridiemHovered, disabled: isDisabled, active: meridiemPressed, - readOnly: isReadOnly, + invalid: isInvalid, }} dataSet={{ hover: meridiemHovered, disabled: isDisabled, active: meridiemPressed, - readOnly: isReadOnly, + invalid: isInvalid, }} > {meridiem} From ba5952a9201d7cb7064b14b0ff9b1379210842ef Mon Sep 17 00:00:00 2001 From: ujjjwal2608 Date: Wed, 15 Jan 2025 11:21:07 +0530 Subject: [PATCH 13/20] fix: done some changes in docs --- .../src/components/TimeInput/index.nw.stories.mdx | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/example/storybook-nativewind/src/components/TimeInput/index.nw.stories.mdx b/example/storybook-nativewind/src/components/TimeInput/index.nw.stories.mdx index 95373e88d4..b89ce4d1d0 100644 --- a/example/storybook-nativewind/src/components/TimeInput/index.nw.stories.mdx +++ b/example/storybook-nativewind/src/components/TimeInput/index.nw.stories.mdx @@ -202,7 +202,7 @@ It inherits all the properties of React Native's [View](https://reactnative.dev/ false - {`When true, the timeinput minutes and hours feilds displays an error state.`} + {`When true, the timeinput displays an error state.`} @@ -234,7 +234,7 @@ It inherits all the properties of React Native's [View](https://reactnative.dev/ false - {`When true, the timeinput feilds displays a hover state.`} + {`When true, the timeinput displays a hover state.`} @@ -266,7 +266,7 @@ It inherits all the properties of React Native's [View](https://reactnative.dev/ false - {`If true, the timeinput minutes and hours values cannot be edited.`} + {`If true, the timeinput values cannot be edited.`} @@ -429,9 +429,6 @@ Contains all button related layout style props and actions. It inherits all the -Text - -

{`Renders a on web and a Text on native.`}

### Features From a0084f527f7f3e28a1b33e84c569992dfb85194d Mon Sep 17 00:00:00 2001 From: ujjjwal2608 Date: Wed, 15 Jan 2025 11:33:43 +0530 Subject: [PATCH 14/20] fix: passed props to the input components in docs --- .../src/components/TimeInput/index.nw.stories.mdx | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/example/storybook-nativewind/src/components/TimeInput/index.nw.stories.mdx b/example/storybook-nativewind/src/components/TimeInput/index.nw.stories.mdx index b89ce4d1d0..7ae2aace6e 100644 --- a/example/storybook-nativewind/src/components/TimeInput/index.nw.stories.mdx +++ b/example/storybook-nativewind/src/components/TimeInput/index.nw.stories.mdx @@ -44,8 +44,8 @@ This is an illustration of **TimeInput** component. showArgsController={true} metaData={{ code: ` - - + + @@ -68,8 +68,8 @@ This is an illustration of **TimeInput** component. argsType: { variant: { control: 'select', - options: ['outline', 'underlined'], - default: 'outline', + options: ['outlined', 'underlined'], + default: 'outlined', }, size: { control: 'select', @@ -146,7 +146,6 @@ To use this component in your project, include the following import statement in import { TimeInput } from '@/components/ui/time-input'; ``` - ```jsx export default () => ( From 5a552ec63e64769dc67bcbfe6f935f3ce36cbff4 Mon Sep 17 00:00:00 2001 From: ujjjwal2608 Date: Wed, 15 Jan 2025 13:14:18 +0530 Subject: [PATCH 15/20] chore: updated yarn.lock --- yarn.lock | 1178 ++--------------------------------------------------- 1 file changed, 25 insertions(+), 1153 deletions(-) diff --git a/yarn.lock b/yarn.lock index 6642ca348a..f203916d6e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -290,17 +290,6 @@ "@jridgewell/trace-mapping" "^0.3.25" jsesc "^3.0.2" -"@babel/generator@^7.14.0", "@babel/generator@^7.26.3": - version "7.26.3" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.3.tgz#ab8d4360544a425c90c248df7059881f4b2ce019" - integrity sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ== - dependencies: - "@babel/parser" "^7.26.3" - "@babel/types" "^7.26.3" - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.25" - jsesc "^3.0.2" - "@babel/helper-annotate-as-pure@^7.18.6", "@babel/helper-annotate-as-pure@^7.22.5", "@babel/helper-annotate-as-pure@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz#5373c7bc8366b12a033b4be1ac13a206c6656aab" @@ -2982,13 +2971,6 @@ slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/create-cache-key-function@^27.0.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/create-cache-key-function/-/create-cache-key-function-27.5.1.tgz#7448fae15602ea95c828f5eceed35c202a820b31" - integrity sha512-dmH1yW+makpTSURTy8VzdUwFnfQh1G8R+DxO2Ho2FFmBbKFEVm+3jWdvFhE2VqB/LATCTokkP0dotjyQyw5/AQ== - dependencies: - "@jest/types" "^27.5.1" - "@jest/create-cache-key-function@^29.2.1", "@jest/create-cache-key-function@^29.6.3": version "29.7.0" resolved "https://registry.yarnpkg.com/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz#793be38148fab78e65f40ae30c36785f4ad859f0" @@ -4291,26 +4273,6 @@ execa "^5.0.0" prompts "^2.4.0" -"@react-native-community/cli-clean@11.4.1": - version "11.4.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-11.4.1.tgz#0155a02e4158c8a61ba3d7a2b08f3ebebed81906" - integrity sha512-cwUbY3c70oBGv3FvQJWe2Qkq6m1+/dcEBonMDTYyH6i+6OrkzI4RkIGpWmbG1IS5JfE9ISUZkNL3946sxyWNkw== - dependencies: - "@react-native-community/cli-tools" "11.4.1" - chalk "^4.1.2" - execa "^5.0.0" - prompts "^2.4.0" - -"@react-native-community/cli-clean@^9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-9.2.1.tgz#198c5dd39c432efb5374582073065ff75d67d018" - integrity sha512-dyNWFrqRe31UEvNO+OFWmQ4hmqA07bR9Ief/6NnGwx67IO9q83D5PEAf/o96ML6jhSbDwCmpPKhPwwBbsyM3mQ== - dependencies: - "@react-native-community/cli-tools" "^9.2.1" - chalk "^4.1.2" - execa "^1.0.0" - prompts "^2.4.0" - "@react-native-community/cli-config@11.3.6": version "11.3.6" resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-11.3.6.tgz#6d3636a8a3c4542ebb123eaf61bbbc0c2a1d2a6b" @@ -4323,29 +4285,6 @@ glob "^7.1.3" joi "^17.2.1" -"@react-native-community/cli-config@11.4.1": - version "11.4.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-11.4.1.tgz#c27f91d2753f0f803cc79bbf299f19648a5d5627" - integrity sha512-sLdv1HFVqu5xNpeaR1+std0t7FFZaobpmpR0lFCOzKV7H/l611qS2Vo8zssmMK+oQbCs5JsX3SFPciODeIlaWA== - dependencies: - "@react-native-community/cli-tools" "11.4.1" - chalk "^4.1.2" - cosmiconfig "^5.1.0" - deepmerge "^4.3.0" - glob "^7.1.3" - joi "^17.2.1" - -"@react-native-community/cli-config@^9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-9.2.1.tgz#54eb026d53621ccf3a9df8b189ac24f6e56b8750" - integrity sha512-gHJlBBXUgDN9vrr3aWkRqnYrPXZLztBDQoY97Mm5Yo6MidsEpYo2JIP6FH4N/N2p1TdjxJL4EFtdd/mBpiR2MQ== - dependencies: - "@react-native-community/cli-tools" "^9.2.1" - cosmiconfig "^5.1.0" - deepmerge "^3.2.0" - glob "^7.1.3" - joi "^17.2.1" - "@react-native-community/cli-debugger-ui@11.3.6": version "11.3.6" resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-11.3.6.tgz#1eb2276450f270a938686b49881fe232a08c01c4" @@ -4353,20 +4292,6 @@ dependencies: serve-static "^1.13.1" -"@react-native-community/cli-debugger-ui@11.4.1": - version "11.4.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-11.4.1.tgz#783cc276e1360baf8235dc8c6ebbbce0fe01d944" - integrity sha512-+pgIjGNW5TrJF37XG3djIOzP+WNoPp67to/ggDhrshuYgpymfb9XpDVsURJugy0Sy3RViqb83kQNK765QzTIvw== - dependencies: - serve-static "^1.13.1" - -"@react-native-community/cli-debugger-ui@^9.0.0": - version "9.0.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-9.0.0.tgz#ea5c5dad6008bccd840d858e160d42bb2ced8793" - integrity sha512-7hH05ZwU9Tp0yS6xJW0bqcZPVt0YCK7gwj7gnRu1jDNN2kughf6Lg0Ys29rAvtZ7VO1PK5c1O+zs7yFnylQDUA== - dependencies: - serve-static "^1.13.1" - "@react-native-community/cli-doctor@11.3.6": version "11.3.6" resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-11.3.6.tgz#fa33ee00fe5120af516aa0f17fe3ad50270976e7" @@ -4391,51 +4316,6 @@ wcwidth "^1.0.1" yaml "^2.2.1" -"@react-native-community/cli-doctor@11.4.1": - version "11.4.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-11.4.1.tgz#516ef5932de3e12989695e7cb7aba82b81e7b2de" - integrity sha512-O6oPiRsl8pdkcyNktpzvJAXUqdocoY4jh7Tt7wA69B1JKCJA7aPCecwJgpUZb63ZYoxOtRtYM3BYQKzRMLIuUw== - dependencies: - "@react-native-community/cli-config" "11.4.1" - "@react-native-community/cli-platform-android" "11.4.1" - "@react-native-community/cli-platform-ios" "11.4.1" - "@react-native-community/cli-tools" "11.4.1" - chalk "^4.1.2" - command-exists "^1.2.8" - envinfo "^7.7.2" - execa "^5.0.0" - hermes-profile-transformer "^0.0.6" - node-stream-zip "^1.9.1" - ora "^5.4.1" - prompts "^2.4.0" - semver "^7.5.2" - strip-ansi "^5.2.0" - sudo-prompt "^9.0.0" - wcwidth "^1.0.1" - yaml "^2.2.1" - -"@react-native-community/cli-doctor@^9.3.0": - version "9.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-9.3.0.tgz#8817a3fd564453467def5b5bc8aecdc4205eff50" - integrity sha512-/fiuG2eDGC2/OrXMOWI5ifq4X1gdYTQhvW2m0TT5Lk1LuFiZsbTCp1lR+XILKekuTvmYNjEGdVpeDpdIWlXdEA== - dependencies: - "@react-native-community/cli-config" "^9.2.1" - "@react-native-community/cli-platform-ios" "^9.3.0" - "@react-native-community/cli-tools" "^9.2.1" - chalk "^4.1.2" - command-exists "^1.2.8" - envinfo "^7.7.2" - execa "^1.0.0" - hermes-profile-transformer "^0.0.6" - ip "^1.1.5" - node-stream-zip "^1.9.1" - ora "^5.4.1" - prompts "^2.4.0" - semver "^6.3.0" - strip-ansi "^5.2.0" - sudo-prompt "^9.0.0" - wcwidth "^1.0.1" - "@react-native-community/cli-hermes@11.3.6": version "11.3.6" resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-11.3.6.tgz#b1acc7feff66ab0859488e5812b3b3e8b8e9434c" @@ -4447,27 +4327,6 @@ hermes-profile-transformer "^0.0.6" ip "^1.1.5" -"@react-native-community/cli-hermes@11.4.1": - version "11.4.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-11.4.1.tgz#abf487ae8ab53c66f6f1178bcd37ecbbbac9fb5c" - integrity sha512-1VAjwcmv+i9BJTMMVn5Grw7AcgURhTyfHVghJ1YgBE2euEJxPuqPKSxP54wBOQKnWUwsuDQAtQf+jPJoCxJSSA== - dependencies: - "@react-native-community/cli-platform-android" "11.4.1" - "@react-native-community/cli-tools" "11.4.1" - chalk "^4.1.2" - hermes-profile-transformer "^0.0.6" - -"@react-native-community/cli-hermes@^9.3.4": - version "9.3.4" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-9.3.4.tgz#47851847c4990272687883bd8bf53733d5f3c341" - integrity sha512-VqTPA7kknCXgtYlRf+sDWW4yxZ6Gtg1Ga+Rdrn1qSKuo09iJ8YKPoQYOu5nqbIYJQAEhorWQyo1VvNgd0wd49w== - dependencies: - "@react-native-community/cli-platform-android" "^9.3.4" - "@react-native-community/cli-tools" "^9.2.1" - chalk "^4.1.2" - hermes-profile-transformer "^0.0.6" - ip "^1.1.5" - "@react-native-community/cli-platform-android@11.3.6": version "11.3.6" resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-11.3.6.tgz#6f3581ca4eed3deec7edba83c1bc467098c8167b" @@ -4479,30 +4338,6 @@ glob "^7.1.3" logkitty "^0.7.1" -"@react-native-community/cli-platform-android@11.4.1", "@react-native-community/cli-platform-android@^11.4.1": - version "11.4.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-11.4.1.tgz#ec5fc97e87834f2e33cb0d34dcef6c17b20f60fc" - integrity sha512-VMmXWIzk0Dq5RAd+HIEa3Oe7xl2jso7+gOr6E2HALF4A3fCKUjKZQ6iK2t6AfnY04zftvaiKw6zUXtrfl52AVQ== - dependencies: - "@react-native-community/cli-tools" "11.4.1" - chalk "^4.1.2" - execa "^5.0.0" - glob "^7.1.3" - logkitty "^0.7.1" - -"@react-native-community/cli-platform-android@9.3.4", "@react-native-community/cli-platform-android@^9.3.4": - version "9.3.4" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-9.3.4.tgz#42f22943b6ee15713add6af8608c1d0ebf79d774" - integrity sha512-BTKmTMYFuWtMqimFQJfhRyhIWw1m+5N5svR1S5+DqPcyFuSXrpNYDWNSFR8E105xUbFANmsCZZQh6n1WlwMpOA== - dependencies: - "@react-native-community/cli-tools" "^9.2.1" - chalk "^4.1.2" - execa "^1.0.0" - fs-extra "^8.1.0" - glob "^7.1.3" - logkitty "^0.7.1" - slash "^3.0.0" - "@react-native-community/cli-platform-ios@11.3.6": version "11.3.6" resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-11.3.6.tgz#0fa58d01f55d85618c4218925509a4be77867dab" @@ -4515,29 +4350,6 @@ glob "^7.1.3" ora "^5.4.1" -"@react-native-community/cli-platform-ios@11.4.1", "@react-native-community/cli-platform-ios@^11.4.1": - version "11.4.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-11.4.1.tgz#12d72741273b684734d5ed021415b7f543a6f009" - integrity sha512-RPhwn+q3IY9MpWc9w/Qmzv03mo8sXdah2eSZcECgweqD5SHWtOoRCUt11zM8jASpAQ8Tm5Je7YE9bHvdwGl4hA== - dependencies: - "@react-native-community/cli-tools" "11.4.1" - chalk "^4.1.2" - execa "^5.0.0" - fast-xml-parser "^4.0.12" - glob "^7.1.3" - ora "^5.4.1" - -"@react-native-community/cli-platform-ios@9.3.0", "@react-native-community/cli-platform-ios@^9.3.0": - version "9.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-9.3.0.tgz#45abde2a395fddd7cf71e8b746c1dc1ee2260f9a" - integrity sha512-nihTX53BhF2Q8p4B67oG3RGe1XwggoGBrMb6vXdcu2aN0WeXJOXdBLgR900DAA1O8g7oy1Sudu6we+JsVTKnjw== - dependencies: - "@react-native-community/cli-tools" "^9.2.1" - chalk "^4.1.2" - execa "^1.0.0" - glob "^7.1.3" - ora "^5.4.1" - "@react-native-community/cli-plugin-metro@11.3.6": version "11.3.6" resolved "https://registry.yarnpkg.com/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-11.3.6.tgz#2d632c304313435c9ea104086901fbbeba0f1882" @@ -4555,39 +4367,6 @@ metro-runtime "0.76.7" readline "^1.3.0" -"@react-native-community/cli-plugin-metro@11.4.1": - version "11.4.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-11.4.1.tgz#8d51c59a9a720f99150d4153e757d5d1d1dabd22" - integrity sha512-JxbIqknYcQ5Z4rWROtu5LNakLfMiKoWcMoPqIrBLrV5ILm1XUJj1/8fATCcotZqV3yzB3SCJ3RrhKx7dQ3YELw== - dependencies: - "@react-native-community/cli-server-api" "11.4.1" - "@react-native-community/cli-tools" "11.4.1" - chalk "^4.1.2" - execa "^5.0.0" - metro "^0.76.9" - metro-config "^0.76.9" - metro-core "^0.76.9" - metro-react-native-babel-transformer "^0.76.9" - metro-resolver "^0.76.9" - metro-runtime "^0.76.9" - readline "^1.3.0" - -"@react-native-community/cli-plugin-metro@^9.3.3": - version "9.3.3" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-9.3.3.tgz#330d7b9476a3fdabdd5863f114fa962289e280dc" - integrity sha512-lPBw6XieNdj2AbWDN0Rc+jNOx8hBgSQyv0gUAm01qtJe4I9FjSMU6nOGTxMpWpICo6TYl/cmPGXOzbfpwxwtkQ== - dependencies: - "@react-native-community/cli-server-api" "^9.2.1" - "@react-native-community/cli-tools" "^9.2.1" - chalk "^4.1.2" - metro "0.72.4" - metro-config "0.72.4" - metro-core "0.72.4" - metro-react-native-babel-transformer "0.72.4" - metro-resolver "0.72.4" - metro-runtime "0.72.4" - readline "^1.3.0" - "@react-native-community/cli-server-api@11.3.6": version "11.3.6" resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-11.3.6.tgz#3a16039518f7f3865f85f8f54b19174448bbcdbb" @@ -4603,36 +4382,6 @@ serve-static "^1.13.1" ws "^7.5.1" -"@react-native-community/cli-server-api@11.4.1": - version "11.4.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-11.4.1.tgz#3dda094c4ab2369db34fe991c320e3cd78f097b3" - integrity sha512-isxXE8X5x+C4kN90yilD08jaLWD34hfqTfn/Xbl1u/igtdTsCaQGvWe9eaFamrpWFWTpVtj6k+vYfy8AtYSiKA== - dependencies: - "@react-native-community/cli-debugger-ui" "11.4.1" - "@react-native-community/cli-tools" "11.4.1" - compression "^1.7.1" - connect "^3.6.5" - errorhandler "^1.5.1" - nocache "^3.0.1" - pretty-format "^26.6.2" - serve-static "^1.13.1" - ws "^7.5.1" - -"@react-native-community/cli-server-api@^9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-9.2.1.tgz#41ac5916b21d324bccef447f75600c03b2f54fbe" - integrity sha512-EI+9MUxEbWBQhWw2PkhejXfkcRqPl+58+whlXJvKHiiUd7oVbewFs0uLW0yZffUutt4FGx6Uh88JWEgwOzAdkw== - dependencies: - "@react-native-community/cli-debugger-ui" "^9.0.0" - "@react-native-community/cli-tools" "^9.2.1" - compression "^1.7.1" - connect "^3.6.5" - errorhandler "^1.5.0" - nocache "^3.0.1" - pretty-format "^26.6.2" - serve-static "^1.13.1" - ws "^7.5.1" - "@react-native-community/cli-tools@11.3.6": version "11.3.6" resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-11.3.6.tgz#ec213b8409917a56e023595f148c84b9cb3ad871" @@ -4648,36 +4397,6 @@ semver "^7.5.2" shell-quote "^1.7.3" -"@react-native-community/cli-tools@11.4.1": - version "11.4.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-11.4.1.tgz#f6c69967e077b10cd8a884a83e53eb199dd9ee9f" - integrity sha512-GuQIuY/kCPfLeXB1aiPZ5HvF+e/wdO42AYuNEmT7FpH/0nAhdTxA9qjL8m3vatDD2/YK7WNOSVNsl2UBZuOISg== - dependencies: - appdirsjs "^1.2.4" - chalk "^4.1.2" - find-up "^5.0.0" - mime "^2.4.1" - node-fetch "^2.6.0" - open "^6.2.0" - ora "^5.4.1" - semver "^7.5.2" - shell-quote "^1.7.3" - -"@react-native-community/cli-tools@^9.2.1": - version "9.2.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-9.2.1.tgz#c332324b1ea99f9efdc3643649bce968aa98191c" - integrity sha512-bHmL/wrKmBphz25eMtoJQgwwmeCylbPxqFJnFSbkqJPXQz3ManQ6q/gVVMqFyz7D3v+riaus/VXz3sEDa97uiQ== - dependencies: - appdirsjs "^1.2.4" - chalk "^4.1.2" - find-up "^5.0.0" - mime "^2.4.1" - node-fetch "^2.6.0" - open "^6.2.0" - ora "^5.4.1" - semver "^6.3.0" - shell-quote "^1.7.3" - "@react-native-community/cli-types@11.3.6": version "11.3.6" resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-11.3.6.tgz#34012f1d0cb1c4039268828abc07c9c69f2e15be" @@ -4685,20 +4404,6 @@ dependencies: joi "^17.2.1" -"@react-native-community/cli-types@11.4.1": - version "11.4.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-11.4.1.tgz#3842dc37ba3b09f929b485bcbd8218de19349ac2" - integrity sha512-B3q9A5BCneLDSoK/iSJ06MNyBn1qTxjdJeOgeS3MiCxgJpPcxyn/Yrc6+h0Cu9T9sgWj/dmectQPYWxtZeo5VA== - dependencies: - joi "^17.2.1" - -"@react-native-community/cli-types@^9.1.0": - version "9.1.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-9.1.0.tgz#dcd6a0022f62790fe1f67417f4690db938746aab" - integrity sha512-KDybF9XHvafLEILsbiKwz5Iobd+gxRaPyn4zSaAerBxedug4er5VUWa8Szy+2GeYKZzMh/gsb1o9lCToUwdT/g== - dependencies: - joi "^17.2.1" - "@react-native-community/cli@11.3.6": version "11.3.6" resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-11.3.6.tgz#d92618d75229eaf6c0391a6b075684eba5d9819f" @@ -4722,52 +4427,6 @@ prompts "^2.4.0" semver "^7.5.2" -"@react-native-community/cli@9.3.5": - version "9.3.5" - resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-9.3.5.tgz#73626d3be8f5e2e6389f2555d126666fb8de4389" - integrity sha512-X+/xSysHsb0rXUWZKtXnKGhUNMRPxYzyhBc3VMld+ygPaFG57TAdK9rFGRu7NkIsRI6qffF/SukQPVlBZIfBHg== - dependencies: - "@react-native-community/cli-clean" "^9.2.1" - "@react-native-community/cli-config" "^9.2.1" - "@react-native-community/cli-debugger-ui" "^9.0.0" - "@react-native-community/cli-doctor" "^9.3.0" - "@react-native-community/cli-hermes" "^9.3.4" - "@react-native-community/cli-plugin-metro" "^9.3.3" - "@react-native-community/cli-server-api" "^9.2.1" - "@react-native-community/cli-tools" "^9.2.1" - "@react-native-community/cli-types" "^9.1.0" - chalk "^4.1.2" - commander "^9.4.0" - execa "^1.0.0" - find-up "^4.1.0" - fs-extra "^8.1.0" - graceful-fs "^4.1.3" - prompts "^2.4.0" - semver "^6.3.0" - -"@react-native-community/cli@^11.4.1": - version "11.4.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-11.4.1.tgz#9a6346486622860dad721da406df70e29a45491f" - integrity sha512-NdAageVMtNhtvRsrq4NgJf5Ey2nA1CqmLvn7PhSawg+aIzMKmZuzWxGVwr9CoPGyjvNiqJlCWrLGR7NzOyi/sA== - dependencies: - "@react-native-community/cli-clean" "11.4.1" - "@react-native-community/cli-config" "11.4.1" - "@react-native-community/cli-debugger-ui" "11.4.1" - "@react-native-community/cli-doctor" "11.4.1" - "@react-native-community/cli-hermes" "11.4.1" - "@react-native-community/cli-plugin-metro" "11.4.1" - "@react-native-community/cli-server-api" "11.4.1" - "@react-native-community/cli-tools" "11.4.1" - "@react-native-community/cli-types" "11.4.1" - chalk "^4.1.2" - commander "^9.4.1" - execa "^5.0.0" - find-up "^4.1.0" - fs-extra "^8.1.0" - graceful-fs "^4.1.3" - prompts "^2.4.0" - semver "^7.5.2" - "@react-native-community/clipboard@^1.5.1": version "1.5.1" resolved "https://registry.yarnpkg.com/@react-native-community/clipboard/-/clipboard-1.5.1.tgz#32abb3ea2eb91ee3f9c5fb1d32d5783253c9fabe" @@ -4814,12 +4473,7 @@ resolved "https://registry.yarnpkg.com/@react-native/assets-registry/-/assets-registry-0.72.0.tgz#c82a76a1d86ec0c3907be76f7faf97a32bbed05d" integrity sha512-Im93xRJuHHxb1wniGhBMsxLwcfzdYreSZVQGDoMJgkd6+Iky61LInGEHnQCTN0fKNYF1Dvcofb4uMmE1RQHXHQ== -"@react-native/assets@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@react-native/assets/-/assets-1.0.0.tgz#c6f9bf63d274bafc8e970628de24986b30a55c8e" - integrity sha512-KrwSpS1tKI70wuKl68DwJZYEvXktDHdZMG0k2AXD/rJVSlB23/X2CB2cutVR0HwNMJIal9HOUOBB2rVfa6UGtQ== - -"@react-native/codegen@^0.72.6", "@react-native/codegen@^0.72.8": +"@react-native/codegen@^0.72.6": version "0.72.8" resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.72.8.tgz#0593f628e1310f430450a9479fbb4be35e7b63d6" integrity sha512-jQCcBlXV7B7ap5VlHhwIPieYz89yiRgwd2FPUBu+unz+kcJ6pAiB2U8RdLDmyIs8fiWd+Vq1xxaWs4TR329/ng== @@ -4842,11 +4496,6 @@ resolved "https://registry.yarnpkg.com/@react-native/js-polyfills/-/js-polyfills-0.72.1.tgz#905343ef0c51256f128256330fccbdb35b922291" integrity sha512-cRPZh2rBswFnGt5X5EUEPs0r+pAsXxYsifv/fgy9ZLQokuT52bPH+9xjDR+7TafRua5CttGW83wP4TntRcWNDA== -"@react-native/normalize-color@2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@react-native/normalize-color/-/normalize-color-2.0.0.tgz#da955909432474a9a0fe1cbffc66576a0447f567" - integrity sha512-Wip/xsc5lw8vsBlmY2MO/gFLp3MvuZ2baBZjDeTjjndMgM0h5sxz7AZR62RDPGgstp8Np7JzjvVqVT7tpFZqsw== - "@react-native/normalize-color@^2.0.0", "@react-native/normalize-color@^2.1.0": version "2.1.0" resolved "https://registry.yarnpkg.com/@react-native/normalize-color/-/normalize-color-2.1.0.tgz#939b87a9849e81687d3640c5efa2a486ac266f91" @@ -4857,16 +4506,11 @@ resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.76.5.tgz#a33560736311aefcf1d3cb594597befe81a9a53c" integrity sha512-6QRLEok1r55gLqj+94mEWUENuU5A6wsr2OoXpyq/CgQ7THWowbHtru/kRGRr6o3AQXrVnZheR60JNgFcpNYIug== -"@react-native/normalize-colors@<0.73.0", "@react-native/normalize-colors@^0.72.0": +"@react-native/normalize-colors@^0.72.0": version "0.72.0" resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.72.0.tgz#14294b7ed3c1d92176d2a00df48456e8d7d62212" integrity sha512-285lfdqSXaqKuBbbtP9qL2tDrfxdOFtIMvkKadtleRQkdOxx+uzGvFr82KHmc/sSiMtfXGp7JnFYWVh4sFl7Yw== -"@react-native/polyfills@2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@react-native/polyfills/-/polyfills-2.0.0.tgz#4c40b74655c83982c8cf47530ee7dc13d957b6aa" - integrity sha512-K0aGNn1TjalKj+65D7ycc1//H9roAQ51GJVk5ZJQFb2teECGmzd86bYDC0aYdbRf7gtovescq4Zt6FR0tgXiHQ== - "@react-native/virtualized-lists@^0.72.4", "@react-native/virtualized-lists@^0.72.8": version "0.72.8" resolved "https://registry.yarnpkg.com/@react-native/virtualized-lists/-/virtualized-lists-0.72.8.tgz#a2c6a91ea0f1d40eb5a122fb063daedb92ed1dc3" @@ -9024,7 +8668,7 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -camelcase@^6.0.0, camelcase@^6.2.0: +camelcase@^6.2.0: version "6.3.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== @@ -9507,7 +9151,7 @@ commander@^8.2.0: resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== -commander@^9.4.0, commander@^9.4.1: +commander@^9.4.1: version "9.5.0" resolved "https://registry.yarnpkg.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30" integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== @@ -9886,14 +9530,6 @@ create-jest@^29.7.0: jest-util "^29.7.0" prompts "^2.0.1" -create-react-class@^15.7.0: - version "15.7.0" - resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.7.0.tgz#7499d7ca2e69bb51d13faf59bd04f0c65a1d6c1e" - integrity sha512-QZv4sFWG9S5RUvkTYWbflxeZX+JG7Cz0Tn33rQBJ+WFQTqTfUTjMjiv9tnfXazjsO5r0KhPs+AqCjyrQX6h2ng== - dependencies: - loose-envify "^1.3.1" - object-assign "^4.1.1" - create-require@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" @@ -10377,11 +10013,6 @@ deep-is@^0.1.3, deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== -deepmerge@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-3.3.0.tgz#d3c47fd6f3a93d517b14426b0628a17b0125f5f7" - integrity sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA== - deepmerge@^4.2.2, deepmerge@^4.3.0: version "4.3.1" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" @@ -10555,15 +10186,6 @@ deprecated-react-native-prop-types@4.1.0: invariant "*" prop-types "*" -deprecated-react-native-prop-types@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/deprecated-react-native-prop-types/-/deprecated-react-native-prop-types-4.2.3.tgz#0ef845c1a80ef1636bd09060e4cdf70f9727e5ad" - integrity sha512-2rLTiMKidIFFYpIVM69UnQKngLqQfL6I11Ch8wGSBftS18FUXda+o2we2950X+1dmbgps28niI3qwyH4eX3Z1g== - dependencies: - "@react-native/normalize-colors" "<0.73.0" - invariant "^2.2.4" - prop-types "^15.8.1" - deprecation@^2.0.0: version "2.3.1" resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" @@ -11056,7 +10678,7 @@ error-stack-parser@^2.0.6: dependencies: stackframe "^1.3.4" -errorhandler@^1.5.0, errorhandler@^1.5.1: +errorhandler@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/errorhandler/-/errorhandler-1.5.1.tgz#b9ba5d17cf90744cd1e851357a6e75bf806a9a91" integrity sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A== @@ -12232,11 +11854,6 @@ flow-parser@0.*: resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.257.1.tgz#1d563688f5c0b5a573ce380a86aa1cc2c44c65df" integrity sha512-7+KYDpAXyBPD/wODhbPYO6IGUx+WwtJcLLG/r3DvbNyxaDyuYaTBKbSqeCldWQzuFcj+MsOVx2bpkEwVPB9JRw== -flow-parser@^0.121.0: - version "0.121.0" - resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.121.0.tgz#9f9898eaec91a9f7c323e9e992d81ab5c58e618f" - integrity sha512-1gIBiWJNR0tKUNv8gZuk7l9rVX06OuLzY9AoGio7y/JT4V1IZErEMEq2TJS+PFcw/y0RshZ1J/27VfK1UQzYVg== - flow-parser@^0.206.0: version "0.206.0" resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.206.0.tgz#f4f794f8026535278393308e01ea72f31000bfef" @@ -12425,15 +12042,6 @@ fs-extra@9.0.0: jsonfile "^6.0.1" universalify "^1.0.0" -fs-extra@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950" - integrity sha512-VerQV6vEKuhDWD2HGOybV6v5I73syoc/cXAbKlgTC7M/oFVEtklWlp9QH2Ijw3IaWDOQcMkldSPa7zXy79Z/UQ== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - klaw "^1.0.0" - fs-extra@^10.1.0: version "10.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" @@ -12928,7 +12536,7 @@ graceful-fs@4.2.10: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -13189,11 +12797,6 @@ hermes-estree@0.12.0: resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.12.0.tgz#8a289f9aee854854422345e6995a48613bac2ca8" integrity sha512-+e8xR6SCen0wyAKrMT3UD0ZCCLymKhRgjEB5sS28rKiFir/fXgLoeRilRUssFCILmGHb+OvHDUlhxs0+IEyvQw== -hermes-estree@0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.8.0.tgz#530be27243ca49f008381c1f3e8b18fb26bf9ec0" - integrity sha512-W6JDAOLZ5pMPMjEiQGLCXSSV7pIBEgRR5zGkxgmzGSXHOxqV5dC/M1Zevqpbm9TZDE5tu358qZf8Vkzmsc+u7Q== - hermes-parser@0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.12.0.tgz#114dc26697cfb41a6302c215b859b74224383773" @@ -13201,13 +12804,6 @@ hermes-parser@0.12.0: dependencies: hermes-estree "0.12.0" -hermes-parser@0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.8.0.tgz#116dceaba32e45b16d6aefb5c4c830eaeba2d257" - integrity sha512-yZKalg1fTYG5eOiToLUaw69rQfZq/fi+/NtEXRU7N87K/XobNRhRWorh80oSge2lWUiZfTgUvRJH+XgZWrhoqA== - dependencies: - hermes-estree "0.8.0" - hermes-profile-transformer@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz#bd0f5ecceda80dd0ddaae443469ab26fb38fc27b" @@ -13558,11 +13154,6 @@ ignore@^5.0.5, ignore@^5.1.4, ignore@^5.2.0: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== -image-size@^0.6.0: - version "0.6.3" - resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.6.3.tgz#e7e5c65bb534bd7cdcedd6cb5166272a85f75fb2" - integrity sha512-47xSUiQioGaB96nqtp5/q55m0aBQSQdyIloMOc/x+QVTDZLNmXE892IIDrJ0hM1A5vcNUDD5tDffkSP5lCaIIA== - image-size@^1.0.0, image-size@^1.0.2: version "1.2.0" resolved "https://registry.yarnpkg.com/image-size/-/image-size-1.2.0.tgz#312af27a2ff4ff58595ad00b9344dd684c910df6" @@ -14698,11 +14289,6 @@ jest-environment-node@^29.2.1, jest-environment-node@^29.7.0: jest-mock "^29.7.0" jest-util "^29.7.0" -jest-get-type@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" - integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== - jest-get-type@^29.6.3: version "29.6.3" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" @@ -14906,14 +14492,6 @@ jest-serializer@^26.6.2: "@types/node" "*" graceful-fs "^4.2.4" -jest-serializer@^27.0.6: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64" - integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== - dependencies: - "@types/node" "*" - graceful-fs "^4.2.9" - jest-snapshot@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5" @@ -14976,18 +14554,6 @@ jest-util@^29.0.0, jest-util@^29.7.0: graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-validate@^26.5.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec" - integrity sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ== - dependencies: - "@jest/types" "^26.6.2" - camelcase "^6.0.0" - chalk "^4.0.0" - jest-get-type "^26.3.0" - leven "^3.1.0" - pretty-format "^26.6.2" - jest-validate@^29.2.1, jest-validate@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" @@ -15118,11 +14684,6 @@ jsbn@1.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== -jsc-android@^250230.2.1: - version "250230.2.1" - resolved "https://registry.yarnpkg.com/jsc-android/-/jsc-android-250230.2.1.tgz#3790313a970586a03ab0ad47defbc84df54f1b83" - integrity sha512-KmxeBlRjwoqCnBBKGsihFtvsBHyUFlBxJPK4FzeYcIuBfdjv6jFys44JITAgSTbQD+vIdwMEfyZklsuQX0yI1Q== - jsc-android@^250231.0.0: version "250231.0.0" resolved "https://registry.yarnpkg.com/jsc-android/-/jsc-android-250231.0.0.tgz#91720f8df382a108872fa4b3f558f33ba5e95262" @@ -15195,11 +14756,6 @@ jsesc@^3.0.2: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d" integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== -jsesc@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d" - integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== - jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" @@ -15282,13 +14838,6 @@ json5@^2.1.2, json5@^2.2.1, json5@^2.2.2, json5@^2.2.3: resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== -jsonfile@^2.1.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" - integrity sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw== - optionalDependencies: - graceful-fs "^4.1.6" - jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" @@ -15368,13 +14917,6 @@ klaw-sync@^6.0.0: dependencies: graceful-fs "^4.1.11" -klaw@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" - integrity sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw== - optionalDependencies: - graceful-fs "^4.1.9" - kleur@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" @@ -15761,7 +15303,7 @@ loglevel@^1.6.8: resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.9.2.tgz#c2e028d6c757720107df4e64508530db6621ba08" integrity sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg== -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1, loose-envify@^1.4.0: +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -16095,16 +15637,6 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== -metro-babel-transformer@0.72.4: - version "0.72.4" - resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.72.4.tgz#5149424896797980aa1758c8ef7c9a80f9d0f587" - integrity sha512-cg1TQUKDkKqrIClrqqIGE8ZDa9kRKSjhBtqPtNYt/ZSywXU41SrldfcI5uzPrzcIrYpH5hnN6OCLRACPgy2vsw== - dependencies: - "@babel/core" "^7.14.0" - hermes-parser "0.8.0" - metro-source-map "0.72.4" - nullthrows "^1.1.1" - metro-babel-transformer@0.76.7: version "0.76.7" resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.76.7.tgz#ba620d64cbaf97d1aa14146d654a3e5d7477fc62" @@ -16114,38 +15646,11 @@ metro-babel-transformer@0.76.7: hermes-parser "0.12.0" nullthrows "^1.1.1" -metro-babel-transformer@0.76.9: - version "0.76.9" - resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.76.9.tgz#659ba481d471b5f748c31a8f9397094b629f50ec" - integrity sha512-dAnAmBqRdTwTPVn4W4JrowPolxD1MDbuU97u3MqtWZgVRvDpmr+Cqnn5oSxLQk3Uc+Zy3wkqVrB/zXNRlLDSAQ== - dependencies: - "@babel/core" "^7.20.0" - hermes-parser "0.12.0" - nullthrows "^1.1.1" - -metro-cache-key@0.72.4: - version "0.72.4" - resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.72.4.tgz#f03d49214554b25968f04dc5e19dfe018cf9312b" - integrity sha512-DH3cgN4L7IKNCVBy8LBOXQ4tHDdvh7Vl7jWNkQKMOfHWu1EwsTtXD/+zdV7/be4ls/kHxrD0HbGzpK8XhUAHSw== - metro-cache-key@0.76.7: version "0.76.7" resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.76.7.tgz#70913f43b92b313096673c37532edd07438cb325" integrity sha512-0pecoIzwsD/Whn/Qfa+SDMX2YyasV0ndbcgUFx7w1Ct2sLHClujdhQ4ik6mvQmsaOcnGkIyN0zcceMDjC2+BFQ== -metro-cache-key@0.76.9: - version "0.76.9" - resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.76.9.tgz#6f17f821d6f306fa9028b7e79445eb18387d03d9" - integrity sha512-ugJuYBLngHVh1t2Jj+uP9pSCQl7enzVXkuh6+N3l0FETfqjgOaSHlcnIhMPn6yueGsjmkiIfxQU4fyFVXRtSTw== - -metro-cache@0.72.4: - version "0.72.4" - resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.72.4.tgz#e0ffb33dd044a7cf5897a09489088a413bfe7468" - integrity sha512-76fi9OVytiFVSuGQcNoquVOT7AENd0q3n1WmyBeJ7jvl/UrE3/NN3HTWzu2ezG5IxF3cmo5q1ehi0NEpgwaFGg== - dependencies: - metro-core "0.72.4" - rimraf "^2.5.4" - metro-cache@0.76.7: version "0.76.7" resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.76.7.tgz#e49e51423fa960df4eeff9760d131f03e003a9eb" @@ -16154,26 +15659,6 @@ metro-cache@0.76.7: metro-core "0.76.7" rimraf "^3.0.2" -metro-cache@0.76.9: - version "0.76.9" - resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.76.9.tgz#64326d7a8b470c3886a5e97d5e2a20acab20bc5f" - integrity sha512-W6QFEU5AJG1gH4Ltv8S2IvhmEhSDYnbPafyj5fGR3YLysdykj+olKv9B0V+YQXtcLGyY5CqpXLYUx595GdiKzA== - dependencies: - metro-core "0.76.9" - rimraf "^3.0.2" - -metro-config@0.72.4: - version "0.72.4" - resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.72.4.tgz#3ad42b3ca0037125d5615f4cb7e1c7ed9442bedd" - integrity sha512-USv+H14D5RrSpfA5t4t5cbF1CnizgYGz6xJ3HB0r/bDYdJdZTVqB3/mMPft7Z5zHslS00JCG7oE51G1CK/FlKw== - dependencies: - cosmiconfig "^5.0.5" - jest-validate "^26.5.2" - metro "0.72.4" - metro-cache "0.72.4" - metro-core "0.72.4" - metro-runtime "0.72.4" - metro-config@0.76.7: version "0.76.7" resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.76.7.tgz#f0fc171707523aa7d3a9311550872136880558c0" @@ -16187,27 +15672,6 @@ metro-config@0.76.7: metro-core "0.76.7" metro-runtime "0.76.7" -metro-config@0.76.9, metro-config@^0.76.9: - version "0.76.9" - resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.76.9.tgz#5e60aff9d8894c1ee6bbc5de23b7c8515a0b84a3" - integrity sha512-oYyJ16PY3rprsfoi80L+gDJhFJqsKI3Pob5LKQbJpvL+gGr8qfZe1eQzYp5Xxxk9DOHKBV1xD94NB8GdT/DA8Q== - dependencies: - connect "^3.6.5" - cosmiconfig "^5.0.5" - jest-validate "^29.2.1" - metro "0.76.9" - metro-cache "0.76.9" - metro-core "0.76.9" - metro-runtime "0.76.9" - -metro-core@0.72.4: - version "0.72.4" - resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.72.4.tgz#e4939aef4c50d953c44eee99a3c971d5162f1287" - integrity sha512-2JNT1nG0UV1uMrQHQOKUSII0sdS6MhVT3mBt2kwfjCvD+jvi1iYhKJ4kYCRlUQw9XNLGZ/B+C0VDQzlf2M3zVw== - dependencies: - lodash.throttle "^4.1.1" - metro-resolver "0.72.4" - metro-core@0.76.7: version "0.76.7" resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.76.7.tgz#5d2b8bac2cde801dc22666ad7be1336d1f021b61" @@ -16216,34 +15680,6 @@ metro-core@0.76.7: lodash.throttle "^4.1.1" metro-resolver "0.76.7" -metro-core@0.76.9, metro-core@^0.76.9: - version "0.76.9" - resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.76.9.tgz#5f55f0fbde41d28957e4f3bb187d32251403f00e" - integrity sha512-DSeEr43Wrd5Q7ySfRzYzDwfV89g2OZTQDf1s3exOcLjE5fb7awoLOkA2h46ZzN8NcmbbM0cuJy6hOwF073/yRQ== - dependencies: - lodash.throttle "^4.1.1" - metro-resolver "0.76.9" - -metro-file-map@0.72.4: - version "0.72.4" - resolved "https://registry.yarnpkg.com/metro-file-map/-/metro-file-map-0.72.4.tgz#8a0c8a0e44d665af90dded2ac6e01baebff8552e" - integrity sha512-Mv5WgTsYs5svTR/df6jhq2aD4IkAuwV5TutHW0BfEg1YccQt8/v7q5ZypmUOkjdSS9bFR4r3677jalr/ceFypQ== - dependencies: - abort-controller "^3.0.0" - anymatch "^3.0.3" - debug "^2.2.0" - fb-watchman "^2.0.0" - graceful-fs "^4.2.4" - invariant "^2.2.4" - jest-regex-util "^27.0.6" - jest-serializer "^27.0.6" - jest-util "^27.2.0" - jest-worker "^27.2.0" - micromatch "^4.0.4" - walker "^1.0.7" - optionalDependencies: - fsevents "^2.1.2" - metro-file-map@0.76.7: version "0.76.7" resolved "https://registry.yarnpkg.com/metro-file-map/-/metro-file-map-0.76.7.tgz#0f041a4f186ac672f0188180310609c8483ffe89" @@ -16264,41 +15700,6 @@ metro-file-map@0.76.7: optionalDependencies: fsevents "^2.3.2" -metro-file-map@0.76.9: - version "0.76.9" - resolved "https://registry.yarnpkg.com/metro-file-map/-/metro-file-map-0.76.9.tgz#dd3d76ec23fc0ba8cb7b3a3b8075bb09e0b5d378" - integrity sha512-7vJd8kksMDTO/0fbf3081bTrlw8SLiploeDf+vkkf0OwlrtDUWPOikfebp+MpZB2S61kamKjCNRfRkgrbPfSwg== - dependencies: - anymatch "^3.0.3" - debug "^2.2.0" - fb-watchman "^2.0.0" - graceful-fs "^4.2.4" - invariant "^2.2.4" - jest-regex-util "^27.0.6" - jest-util "^27.2.0" - jest-worker "^27.2.0" - micromatch "^4.0.4" - node-abort-controller "^3.1.1" - nullthrows "^1.1.1" - walker "^1.0.7" - optionalDependencies: - fsevents "^2.3.2" - -metro-hermes-compiler@0.72.4: - version "0.72.4" - resolved "https://registry.yarnpkg.com/metro-hermes-compiler/-/metro-hermes-compiler-0.72.4.tgz#06c946d74720d5132fa1690df0610ba367d3436c" - integrity sha512-AY1mAT5FKfDRYCthuKo2XHbuhG5TUV4ZpZlJ8peIgkiWICzfy0tau3yu+3jUD456N90CjMCOmdknji4uKiZ8ww== - -metro-inspector-proxy@0.72.4: - version "0.72.4" - resolved "https://registry.yarnpkg.com/metro-inspector-proxy/-/metro-inspector-proxy-0.72.4.tgz#347e9634b6204c38117292edfb11eb2df71c09ad" - integrity sha512-pr+PsbNCZaStWuJRH8oclT170B7NxfgH+UUyTf9/aR+7PjX0gdDabJhPyzA633QgR+EFBaQKZuetHA+f5/cnEQ== - dependencies: - connect "^3.6.5" - debug "^2.2.0" - ws "^7.5.1" - yargs "^15.3.1" - metro-inspector-proxy@0.76.7: version "0.76.7" resolved "https://registry.yarnpkg.com/metro-inspector-proxy/-/metro-inspector-proxy-0.76.7.tgz#c067df25056e932002a72a4b45cf7b4b749f808e" @@ -16310,17 +15711,6 @@ metro-inspector-proxy@0.76.7: ws "^7.5.1" yargs "^17.6.2" -metro-inspector-proxy@0.76.9: - version "0.76.9" - resolved "https://registry.yarnpkg.com/metro-inspector-proxy/-/metro-inspector-proxy-0.76.9.tgz#0d333e64a7bc9d156d712265faa7b7ae88c775e8" - integrity sha512-idIiPkb8CYshc0WZmbzwmr4B1QwsQUbpDwBzHwxE1ni27FWKWhV9CD5p+qlXZHgfwJuMRfPN+tIaLSR8+vttYg== - dependencies: - connect "^3.6.5" - debug "^2.2.0" - node-fetch "^2.2.0" - ws "^7.5.1" - yargs "^17.6.2" - metro-minify-terser@0.76.7: version "0.76.7" resolved "https://registry.yarnpkg.com/metro-minify-terser/-/metro-minify-terser-0.76.7.tgz#aefac8bb8b6b3a0fcb5ea0238623cf3e100893ff" @@ -16328,20 +15718,6 @@ metro-minify-terser@0.76.7: dependencies: terser "^5.15.0" -metro-minify-terser@0.76.9: - version "0.76.9" - resolved "https://registry.yarnpkg.com/metro-minify-terser/-/metro-minify-terser-0.76.9.tgz#3f6271da74dd57179852118443b62cc8dc578aab" - integrity sha512-ju2nUXTKvh96vHPoGZH/INhSvRRKM14CbGAJXQ98+g8K5z1v3luYJ/7+dFQB202eVzJdTB2QMtBjI1jUUpooCg== - dependencies: - terser "^5.15.0" - -metro-minify-uglify@0.72.4: - version "0.72.4" - resolved "https://registry.yarnpkg.com/metro-minify-uglify/-/metro-minify-uglify-0.72.4.tgz#b4504adc17f093173c0e5d44df32ac9e13f50a88" - integrity sha512-84Rrgie3O7Dqkak9ep/eIpMZkEFzpKD4bngPUNimYqAMCExKL7/aymydB27gKcqwus/BVkAV+aOnFsuOhlgnQg== - dependencies: - uglify-es "^3.1.9" - metro-minify-uglify@0.76.7: version "0.76.7" resolved "https://registry.yarnpkg.com/metro-minify-uglify/-/metro-minify-uglify-0.76.7.tgz#3e0143786718dcaea4e28a724698d4f8ac199a43" @@ -16349,13 +15725,6 @@ metro-minify-uglify@0.76.7: dependencies: uglify-es "^3.1.9" -metro-minify-uglify@0.76.9: - version "0.76.9" - resolved "https://registry.yarnpkg.com/metro-minify-uglify/-/metro-minify-uglify-0.76.9.tgz#e88c30c27911c053e1ee20e12077f0f4cbb154f8" - integrity sha512-MXRrM3lFo62FPISlPfTqC6n9HTEI3RJjDU5SvpE7sJFfJKLx02xXQEltsL/wzvEqK+DhRQ5DEYACTwf5W4Z3yA== - dependencies: - uglify-es "^3.1.9" - metro-react-native-babel-preset@0.72.3: version "0.72.3" resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.72.3.tgz#e549199fa310fef34364fdf19bd210afd0c89432" @@ -16401,51 +15770,6 @@ metro-react-native-babel-preset@0.72.3: "@babel/template" "^7.0.0" react-refresh "^0.4.0" -metro-react-native-babel-preset@0.72.4: - version "0.72.4" - resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.72.4.tgz#2b320772d2489d1fb3a6413fc58dad13a56eea0e" - integrity sha512-YGCVaYe1H5fOFktdDdL9IwAyiXjPh1t2eZZFp3KFJak6fxKpN+q5PPhe1kzMa77dbCAqgImv43zkfGa6i27eyA== - dependencies: - "@babel/core" "^7.14.0" - "@babel/plugin-proposal-async-generator-functions" "^7.0.0" - "@babel/plugin-proposal-class-properties" "^7.0.0" - "@babel/plugin-proposal-export-default-from" "^7.0.0" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.0.0" - "@babel/plugin-proposal-object-rest-spread" "^7.0.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" - "@babel/plugin-proposal-optional-chaining" "^7.0.0" - "@babel/plugin-syntax-dynamic-import" "^7.0.0" - "@babel/plugin-syntax-export-default-from" "^7.0.0" - "@babel/plugin-syntax-flow" "^7.2.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0" - "@babel/plugin-syntax-optional-chaining" "^7.0.0" - "@babel/plugin-transform-arrow-functions" "^7.0.0" - "@babel/plugin-transform-async-to-generator" "^7.0.0" - "@babel/plugin-transform-block-scoping" "^7.0.0" - "@babel/plugin-transform-classes" "^7.0.0" - "@babel/plugin-transform-computed-properties" "^7.0.0" - "@babel/plugin-transform-destructuring" "^7.0.0" - "@babel/plugin-transform-exponentiation-operator" "^7.0.0" - "@babel/plugin-transform-flow-strip-types" "^7.0.0" - "@babel/plugin-transform-function-name" "^7.0.0" - "@babel/plugin-transform-literals" "^7.0.0" - "@babel/plugin-transform-modules-commonjs" "^7.0.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.0.0" - "@babel/plugin-transform-parameters" "^7.0.0" - "@babel/plugin-transform-react-display-name" "^7.0.0" - "@babel/plugin-transform-react-jsx" "^7.0.0" - "@babel/plugin-transform-react-jsx-self" "^7.0.0" - "@babel/plugin-transform-react-jsx-source" "^7.0.0" - "@babel/plugin-transform-runtime" "^7.0.0" - "@babel/plugin-transform-shorthand-properties" "^7.0.0" - "@babel/plugin-transform-spread" "^7.0.0" - "@babel/plugin-transform-sticky-regex" "^7.0.0" - "@babel/plugin-transform-template-literals" "^7.0.0" - "@babel/plugin-transform-typescript" "^7.5.0" - "@babel/plugin-transform-unicode-regex" "^7.0.0" - "@babel/template" "^7.0.0" - react-refresh "^0.4.0" - metro-react-native-babel-preset@0.76.7: version "0.76.7" resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.76.7.tgz#dfe15c040d0918147a8b0e9f530d558287acbb54" @@ -16491,64 +15815,6 @@ metro-react-native-babel-preset@0.76.7: babel-plugin-transform-flow-enums "^0.0.2" react-refresh "^0.4.0" -metro-react-native-babel-preset@0.76.9: - version "0.76.9" - resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.76.9.tgz#15868142122af14313429d7572c15cf01c16f077" - integrity sha512-eCBtW/UkJPDr6HlMgFEGF+964DZsUEF9RGeJdZLKWE7d/0nY3ABZ9ZAGxzu9efQ35EWRox5bDMXUGaOwUe5ikQ== - dependencies: - "@babel/core" "^7.20.0" - "@babel/plugin-proposal-async-generator-functions" "^7.0.0" - "@babel/plugin-proposal-class-properties" "^7.18.0" - "@babel/plugin-proposal-export-default-from" "^7.0.0" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.0" - "@babel/plugin-proposal-numeric-separator" "^7.0.0" - "@babel/plugin-proposal-object-rest-spread" "^7.20.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" - "@babel/plugin-proposal-optional-chaining" "^7.20.0" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - "@babel/plugin-syntax-export-default-from" "^7.0.0" - "@babel/plugin-syntax-flow" "^7.18.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0" - "@babel/plugin-syntax-optional-chaining" "^7.0.0" - "@babel/plugin-transform-arrow-functions" "^7.0.0" - "@babel/plugin-transform-async-to-generator" "^7.20.0" - "@babel/plugin-transform-block-scoping" "^7.0.0" - "@babel/plugin-transform-classes" "^7.0.0" - "@babel/plugin-transform-computed-properties" "^7.0.0" - "@babel/plugin-transform-destructuring" "^7.20.0" - "@babel/plugin-transform-flow-strip-types" "^7.20.0" - "@babel/plugin-transform-function-name" "^7.0.0" - "@babel/plugin-transform-literals" "^7.0.0" - "@babel/plugin-transform-modules-commonjs" "^7.0.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.0.0" - "@babel/plugin-transform-parameters" "^7.0.0" - "@babel/plugin-transform-react-display-name" "^7.0.0" - "@babel/plugin-transform-react-jsx" "^7.0.0" - "@babel/plugin-transform-react-jsx-self" "^7.0.0" - "@babel/plugin-transform-react-jsx-source" "^7.0.0" - "@babel/plugin-transform-runtime" "^7.0.0" - "@babel/plugin-transform-shorthand-properties" "^7.0.0" - "@babel/plugin-transform-spread" "^7.0.0" - "@babel/plugin-transform-sticky-regex" "^7.0.0" - "@babel/plugin-transform-typescript" "^7.5.0" - "@babel/plugin-transform-unicode-regex" "^7.0.0" - "@babel/template" "^7.0.0" - babel-plugin-transform-flow-enums "^0.0.2" - react-refresh "^0.4.0" - -metro-react-native-babel-transformer@0.72.4: - version "0.72.4" - resolved "https://registry.yarnpkg.com/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.72.4.tgz#c1a38bf28513374dbb0fce45b4017d8abfe4a071" - integrity sha512-VxM8Cki+/tPAyQRPHEy1bsxAihpxz8cGLdteFo9t0eAJI7/vEegqICxQm4A+RiGQc4f8t2jiwI6YpnDWomI5Gw== - dependencies: - "@babel/core" "^7.14.0" - babel-preset-fbjs "^3.4.0" - hermes-parser "0.8.0" - metro-babel-transformer "0.72.4" - metro-react-native-babel-preset "0.72.4" - metro-source-map "0.72.4" - nullthrows "^1.1.1" - metro-react-native-babel-transformer@0.76.7: version "0.76.7" resolved "https://registry.yarnpkg.com/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.76.7.tgz#ccc7c25b49ee8a1860aafdbf48bfa5441d206f8f" @@ -16560,42 +15826,11 @@ metro-react-native-babel-transformer@0.76.7: metro-react-native-babel-preset "0.76.7" nullthrows "^1.1.1" -metro-react-native-babel-transformer@^0.76.9: - version "0.76.9" - resolved "https://registry.yarnpkg.com/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.76.9.tgz#464aab85669ed39f7a59f1fd993a05de9543b09e" - integrity sha512-xXzHcfngSIkbQj+U7i/anFkNL0q2QVarYSzr34CFkzKLa79Rp16B8ki7z9eVVqo9W3B4TBcTXl3BipgRoOoZSQ== - dependencies: - "@babel/core" "^7.20.0" - babel-preset-fbjs "^3.4.0" - hermes-parser "0.12.0" - metro-react-native-babel-preset "0.76.9" - nullthrows "^1.1.1" - -metro-resolver@0.72.4: - version "0.72.4" - resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.72.4.tgz#37893ff72273a2b7ea529564caa15fe2e2337267" - integrity sha512-aHxq/jypzGyi9Ic9woe//RymfxpzWliAkyTmBWPHE9ypGoiobstK0me2j5XuSfzASzCU8wcVt20qy870rxTWLw== - dependencies: - absolute-path "^0.0.0" - metro-resolver@0.76.7: version "0.76.7" resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.76.7.tgz#f00ebead64e451c060f30926ecbf4f797588df52" integrity sha512-pC0Wgq29HHIHrwz23xxiNgylhI8Rq1V01kQaJ9Kz11zWrIdlrH0ZdnJ7GC6qA0ErROG+cXmJ0rJb8/SW1Zp2IA== -metro-resolver@0.76.9, metro-resolver@^0.76.9: - version "0.76.9" - resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.76.9.tgz#79c244784b16ca56076bc1fc816d2ba74860e882" - integrity sha512-s86ipNRas9vNR5lChzzSheF7HoaQEmzxBLzwFA6/2YcGmUCowcoyPAfs1yPh4cjMw9F1T4KlMLaiwniGE7HCyw== - -metro-runtime@0.72.4: - version "0.72.4" - resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.72.4.tgz#b3469fd040a9526bfd897c0517c5f052a059ddeb" - integrity sha512-EA0ltqyYFpjOdpoRqE2U9FJleqTOIK+ZLRlLaDrx4yz3zTqUZ16W6w71dq+qrwD8BPg7bPKQu7RluU3K6tI79A== - dependencies: - "@babel/runtime" "^7.0.0" - react-refresh "^0.4.0" - metro-runtime@0.76.7: version "0.76.7" resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.76.7.tgz#4d75f2dbbcd19a4f01e0d89494e140b0ba8247e4" @@ -16612,28 +15847,6 @@ metro-runtime@0.76.8: "@babel/runtime" "^7.0.0" react-refresh "^0.4.0" -metro-runtime@0.76.9, metro-runtime@^0.76.9: - version "0.76.9" - resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.76.9.tgz#f8ebe150f8896ce1aef5d7f3a52844f8b4f721fb" - integrity sha512-/5vezDpGUtA0Fv6cJg0+i6wB+QeBbvLeaw9cTSG7L76liP0b91f8vOcYzGaUbHI8pznJCCTerxRzpQ8e3/NcDw== - dependencies: - "@babel/runtime" "^7.0.0" - react-refresh "^0.4.0" - -metro-source-map@0.72.4: - version "0.72.4" - resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.72.4.tgz#3c6444bba22b84d7d7e383f784a1d59e724192de" - integrity sha512-P09aMDEPkLo6BM8VYYoTsH/2B1w6t+mrCwNcNJV1zE+57FPiU4fSBlSeM8G9YeYaezDTHimS2JlMozP+2r+trA== - dependencies: - "@babel/traverse" "^7.14.0" - "@babel/types" "^7.0.0" - invariant "^2.2.4" - metro-symbolicate "0.72.4" - nullthrows "^1.1.1" - ob1 "0.72.4" - source-map "^0.5.6" - vlq "^1.0.0" - metro-source-map@0.76.7: version "0.76.7" resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.76.7.tgz#9a4aa3a35e1e8ffde9a74cd7ab5f49d9d4a4da14" @@ -16662,32 +15875,6 @@ metro-source-map@0.76.8: source-map "^0.5.6" vlq "^1.0.0" -metro-source-map@0.76.9, metro-source-map@^0.76.9: - version "0.76.9" - resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.76.9.tgz#0f976ada836717f307427d3830aea52a2ca7ed5f" - integrity sha512-q5qsMlu8EFvsT46wUUh+ao+efDsicT30zmaPATNhq+PcTawDbDgnMuUD+FT0bvxxnisU2PWl91RdzKfNc2qPQA== - dependencies: - "@babel/traverse" "^7.20.0" - "@babel/types" "^7.20.0" - invariant "^2.2.4" - metro-symbolicate "0.76.9" - nullthrows "^1.1.1" - ob1 "0.76.9" - source-map "^0.5.6" - vlq "^1.0.0" - -metro-symbolicate@0.72.4: - version "0.72.4" - resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.72.4.tgz#3be7c9d1f382fc58198efcb515f2de0ec3fc4181" - integrity sha512-6ZRo66Q4iKiwaQuHjmogkSCCqaSpJ4QzbHsVHRUe57mFIL34lOLYp7aPfmX7NHCmy061HhDox/kGuYZQRmHB3A== - dependencies: - invariant "^2.2.4" - metro-source-map "0.72.4" - nullthrows "^1.1.1" - source-map "^0.5.6" - through2 "^2.0.1" - vlq "^1.0.0" - metro-symbolicate@0.76.7: version "0.76.7" resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.76.7.tgz#1720e6b4ce5676935d7a8a440f25d3f16638e87a" @@ -16712,29 +15899,6 @@ metro-symbolicate@0.76.8: through2 "^2.0.1" vlq "^1.0.0" -metro-symbolicate@0.76.9: - version "0.76.9" - resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.76.9.tgz#f1627ef6f73bb0c4d48c55684d3c87866a0b0920" - integrity sha512-Yyq6Ukj/IeWnGST09kRt0sBK8TwzGZWoU7YAcQlh14+AREH454Olx4wbFTpkkhUkV05CzNCvUuXQ0efFxhA1bw== - dependencies: - invariant "^2.2.4" - metro-source-map "0.76.9" - nullthrows "^1.1.1" - source-map "^0.5.6" - through2 "^2.0.1" - vlq "^1.0.0" - -metro-transform-plugins@0.72.4: - version "0.72.4" - resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.72.4.tgz#01e95aa277216fb0887610067125fac9271d399e" - integrity sha512-yxB4v/LxQkmN1rjyyeLiV4x+jwCmId4FTTxNrmTYoi0tFPtOBOeSwuqY08LjxZQMJdZOKXqj2bgIewqFXJEkGw== - dependencies: - "@babel/core" "^7.14.0" - "@babel/generator" "^7.14.0" - "@babel/template" "^7.0.0" - "@babel/traverse" "^7.14.0" - nullthrows "^1.1.1" - metro-transform-plugins@0.76.7: version "0.76.7" resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.76.7.tgz#5d5f75371706fbf5166288e43ffd36b5e5bd05bc" @@ -16746,36 +15910,6 @@ metro-transform-plugins@0.76.7: "@babel/traverse" "^7.20.0" nullthrows "^1.1.1" -metro-transform-plugins@0.76.9: - version "0.76.9" - resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.76.9.tgz#73e34f2014d3df3c336a882b13e541bceb826d37" - integrity sha512-YEQeNlOCt92I7S9A3xbrfaDfwfgcxz9PpD/1eeop3c4cO3z3Q3otYuxw0WJ/rUIW8pZfOm5XCehd+1NRbWlAaw== - dependencies: - "@babel/core" "^7.20.0" - "@babel/generator" "^7.20.0" - "@babel/template" "^7.0.0" - "@babel/traverse" "^7.20.0" - nullthrows "^1.1.1" - -metro-transform-worker@0.72.4: - version "0.72.4" - resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.72.4.tgz#356903c343dc62373b928b4325ad09a103398cc5" - integrity sha512-mIvzy6nRQKMALEdF5g8LXPgCOUi/tGESE5dlb7OSMCj2FAFBm3mTLRrpW5phzK/J6Wg+4Vb9PMS+wGbXR261rA== - dependencies: - "@babel/core" "^7.14.0" - "@babel/generator" "^7.14.0" - "@babel/parser" "^7.14.0" - "@babel/types" "^7.0.0" - babel-preset-fbjs "^3.4.0" - metro "0.72.4" - metro-babel-transformer "0.72.4" - metro-cache "0.72.4" - metro-cache-key "0.72.4" - metro-hermes-compiler "0.72.4" - metro-source-map "0.72.4" - metro-transform-plugins "0.72.4" - nullthrows "^1.1.1" - metro-transform-worker@0.76.7: version "0.76.7" resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.76.7.tgz#b842d5a542f1806cca401633fc002559b3e3d668" @@ -16794,82 +15928,6 @@ metro-transform-worker@0.76.7: metro-transform-plugins "0.76.7" nullthrows "^1.1.1" -metro-transform-worker@0.76.9: - version "0.76.9" - resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.76.9.tgz#281fad223f0447e1ff9cc44d6f7e33dfab9ab120" - integrity sha512-F69A0q0qFdJmP2Clqr6TpTSn4WTV9p5A28h5t9o+mB22ryXBZfUQ6BFBBW/6Wp2k/UtPH+oOsBfV9guiqm3d2Q== - dependencies: - "@babel/core" "^7.20.0" - "@babel/generator" "^7.20.0" - "@babel/parser" "^7.20.0" - "@babel/types" "^7.20.0" - babel-preset-fbjs "^3.4.0" - metro "0.76.9" - metro-babel-transformer "0.76.9" - metro-cache "0.76.9" - metro-cache-key "0.76.9" - metro-minify-terser "0.76.9" - metro-source-map "0.76.9" - metro-transform-plugins "0.76.9" - nullthrows "^1.1.1" - -metro@0.72.4: - version "0.72.4" - resolved "https://registry.yarnpkg.com/metro/-/metro-0.72.4.tgz#fdfc43b3329388b5a3e8856727403f93a8c05250" - integrity sha512-UBqL2fswJjsq2LlfMPV4ArqzLzjyN0nReKRijP3DdSxZiaJDG4NC9sQoVJHbH1HP5qXQMAK/SftyAx1c1kuy+w== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/core" "^7.14.0" - "@babel/generator" "^7.14.0" - "@babel/parser" "^7.14.0" - "@babel/template" "^7.0.0" - "@babel/traverse" "^7.14.0" - "@babel/types" "^7.0.0" - absolute-path "^0.0.0" - accepts "^1.3.7" - async "^3.2.2" - chalk "^4.0.0" - ci-info "^2.0.0" - connect "^3.6.5" - debug "^2.2.0" - denodeify "^1.2.1" - error-stack-parser "^2.0.6" - fs-extra "^1.0.0" - graceful-fs "^4.2.4" - hermes-parser "0.8.0" - image-size "^0.6.0" - invariant "^2.2.4" - jest-worker "^27.2.0" - jsc-safe-url "^0.2.2" - lodash.throttle "^4.1.1" - metro-babel-transformer "0.72.4" - metro-cache "0.72.4" - metro-cache-key "0.72.4" - metro-config "0.72.4" - metro-core "0.72.4" - metro-file-map "0.72.4" - metro-hermes-compiler "0.72.4" - metro-inspector-proxy "0.72.4" - metro-minify-uglify "0.72.4" - metro-react-native-babel-preset "0.72.4" - metro-resolver "0.72.4" - metro-runtime "0.72.4" - metro-source-map "0.72.4" - metro-symbolicate "0.72.4" - metro-transform-plugins "0.72.4" - metro-transform-worker "0.72.4" - mime-types "^2.1.27" - node-fetch "^2.2.0" - nullthrows "^1.1.1" - rimraf "^2.5.4" - serialize-error "^2.1.0" - source-map "^0.5.6" - strip-ansi "^6.0.0" - temp "0.8.3" - throat "^5.0.0" - ws "^7.5.1" - yargs "^15.3.1" - metro@0.76.7: version "0.76.7" resolved "https://registry.yarnpkg.com/metro/-/metro-0.76.7.tgz#4885917ad28738c7d1e556630e0155f687336230" @@ -16924,59 +15982,6 @@ metro@0.76.7: ws "^7.5.1" yargs "^17.6.2" -metro@0.76.9, metro@^0.76.9: - version "0.76.9" - resolved "https://registry.yarnpkg.com/metro/-/metro-0.76.9.tgz#605fddf1a54d27762ddba2f636420ae2408862df" - integrity sha512-gcjcfs0l5qIPg0lc5P7pj0x7vPJ97tan+OnEjiYLbKjR1D7Oa78CE93YUPyymUPH6q7VzlzMm1UjT35waEkZUw== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/core" "^7.20.0" - "@babel/generator" "^7.20.0" - "@babel/parser" "^7.20.0" - "@babel/template" "^7.0.0" - "@babel/traverse" "^7.20.0" - "@babel/types" "^7.20.0" - accepts "^1.3.7" - async "^3.2.2" - chalk "^4.0.0" - ci-info "^2.0.0" - connect "^3.6.5" - debug "^2.2.0" - denodeify "^1.2.1" - error-stack-parser "^2.0.6" - graceful-fs "^4.2.4" - hermes-parser "0.12.0" - image-size "^1.0.2" - invariant "^2.2.4" - jest-worker "^27.2.0" - jsc-safe-url "^0.2.2" - lodash.throttle "^4.1.1" - metro-babel-transformer "0.76.9" - metro-cache "0.76.9" - metro-cache-key "0.76.9" - metro-config "0.76.9" - metro-core "0.76.9" - metro-file-map "0.76.9" - metro-inspector-proxy "0.76.9" - metro-minify-uglify "0.76.9" - metro-react-native-babel-preset "0.76.9" - metro-resolver "0.76.9" - metro-runtime "0.76.9" - metro-source-map "0.76.9" - metro-symbolicate "0.76.9" - metro-transform-plugins "0.76.9" - metro-transform-worker "0.76.9" - mime-types "^2.1.27" - node-fetch "^2.2.0" - nullthrows "^1.1.1" - rimraf "^3.0.2" - serialize-error "^2.1.0" - source-map "^0.5.6" - strip-ansi "^6.0.0" - throat "^5.0.0" - ws "^7.5.1" - yargs "^17.6.2" - microevent.ts@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" @@ -17358,13 +16363,14 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" -nativewind@4.1.10: - version "4.1.10" - resolved "https://registry.yarnpkg.com/nativewind/-/nativewind-4.1.10.tgz#89174704108400a81e8443d13cd17bd3b687e81b" - integrity sha512-RDLqcXdfYEpLelY/VQUYjGu5xmoZmhK+QELUyxZR4RY/+pr1BvIctfYWnEJYvORj7Al3tI3LQA4GZ1J4K2DdGQ== +nativewind@4.1.10, nativewind@4.1.23: + version "4.1.23" + resolved "https://registry.yarnpkg.com/nativewind/-/nativewind-4.1.23.tgz#badfa94a5cd2e12ff8971dd274d234cd843ca74e" + integrity sha512-oLX3suGI6ojQqWxdQezOSM5GmJ4KvMnMtmaSMN9Ggb5j7ysFt4nHxb1xs8RDjZR7BWc+bsetNJU8IQdQMHqRpg== dependencies: comment-json "^4.2.5" - react-native-css-interop "0.1.9" + debug "^4.3.7" + react-native-css-interop "0.1.22" natural-compare-lite@^1.4.0: version "1.4.0" @@ -17680,11 +16686,6 @@ nwsapi@^2.2.2: resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.16.tgz#177760bba02c351df1d2644e220c31dfec8cdb43" integrity sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ== -ob1@0.72.4: - version "0.72.4" - resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.72.4.tgz#d2ddedb09fb258d69490e8809157518a62b75506" - integrity sha512-/iPJKpXpVEZS0subUvjew4ept5LTBxj1hD20A4mAj9CJkGGPgvbBlfYtFEBubBkk4dv4Ef5lajsnRBYPxF74cQ== - ob1@0.76.7: version "0.76.7" resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.76.7.tgz#95b68fadafd47e7a6a0ad64cf80f3140dd6d1124" @@ -17695,11 +16696,6 @@ ob1@0.76.8: resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.76.8.tgz#ac4c459465b1c0e2c29aaa527e09fc463d3ffec8" integrity sha512-dlBkJJV5M/msj9KYA9upc+nUWVwuOFFTbu28X6kZeGwcuW+JxaHSBZ70SYQnk5M+j5JbNLR6yKHmgW4M5E7X5g== -ob1@0.76.9: - version "0.76.9" - resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.76.9.tgz#a493e4b83a0fb39200de639804b5d06eed5599dc" - integrity sha512-g0I/OLnSxf6OrN3QjSew3bTDJCdbZoWxnh8adh1z36alwCuGF1dgDeRA25bTYSakrG5WULSaWJPOdgnf1O/oQw== - object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -19438,14 +18434,6 @@ react-dev-utils@~11.0.1: strip-ansi "6.0.0" text-table "0.2.0" -react-devtools-core@4.27.7: - version "4.27.7" - resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.27.7.tgz#458a6541483078d60a036c75bf88f54c478086ec" - integrity sha512-12N0HrhCPbD76Z7SkyJdGdXdPGouUsgV6tlEsbSpAnLDO06tjXZP+irht4wPdYwJAJRQ85DxL48eQoz7UmrSuQ== - dependencies: - shell-quote "^1.6.1" - ws "^7" - react-devtools-core@^4.27.2: version "4.28.5" resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.28.5.tgz#c8442b91f068cdf0c899c543907f7f27d79c2508" @@ -19579,25 +18567,16 @@ react-native-builder-bob@^0.20.1, react-native-builder-bob@^0.20.3: optionalDependencies: jetifier "^2.0.0" -react-native-codegen@^0.70.7: - version "0.70.7" - resolved "https://registry.yarnpkg.com/react-native-codegen/-/react-native-codegen-0.70.7.tgz#8f6b47a88740ae703209d57b7605538d86dacfa6" - integrity sha512-qXE8Jrhc9BmxDAnCmrHFDLJrzgjsE/mH57dtC4IO7K76AwagdXNCMRp5SA8XdHJzvvHWRaghpiFHEMl9TtOBcQ== - dependencies: - "@babel/parser" "^7.14.0" - flow-parser "^0.121.0" - jscodeshift "^0.14.0" - nullthrows "^1.1.1" - -react-native-css-interop@0.1.9: - version "0.1.9" - resolved "https://registry.yarnpkg.com/react-native-css-interop/-/react-native-css-interop-0.1.9.tgz#2777c4107398098c2d15a9cb3e78b1ea0a0d0e9e" - integrity sha512-aPFkiTsJeGz3x65of8RYziEI+x1EjuANr42IcleTkxvWwwKWNOdxdjNCj2LROJRozs9K1rs3BzFJnbypvpdTow== +react-native-css-interop@0.1.22: + version "0.1.22" + resolved "https://registry.yarnpkg.com/react-native-css-interop/-/react-native-css-interop-0.1.22.tgz#70cc6ca7a8f14126e123e44a19ceed74dd2a167a" + integrity sha512-Mu01e+H9G+fxSWvwtgWlF5MJBJC4VszTCBXopIpeR171lbeBInHb8aHqoqRPxmJpi3xIHryzqKFOJYAdk7PBxg== dependencies: "@babel/helper-module-imports" "^7.22.15" "@babel/traverse" "^7.23.0" "@babel/types" "^7.23.0" - lightningcss "1.22.0" + debug "^4.3.7" + lightningcss "^1.27.0" semver "^7.6.3" react-native-gesture-handler@^2.21.2: @@ -19663,7 +18642,7 @@ react-native-vector-icons@^10.0.0: prop-types "^15.7.2" yargs "^16.1.1" -react-native-web@0.19.9, react-native-web@^0.19.9: +react-native-web@0.19.9, react-native-web@^0.18.1, react-native-web@^0.19.9: version "0.19.9" resolved "https://registry.yarnpkg.com/react-native-web/-/react-native-web-0.19.9.tgz#6ee43e6c64d886b1d739f100fed07927541ee003" integrity sha512-m69arZbS6FV+BNSKE6R/NQwUX+CzxCkYM7AJlSLlS8dz3BDzlaxG8Bzqtzv/r3r1YFowhnZLBXVKIwovKDw49g== @@ -19677,20 +18656,7 @@ react-native-web@0.19.9, react-native-web@^0.19.9: postcss-value-parser "^4.2.0" styleq "^0.1.3" -react-native-web@^0.18.1: - version "0.18.12" - resolved "https://registry.yarnpkg.com/react-native-web/-/react-native-web-0.18.12.tgz#d4bb3a783ece2514ba0508d7805b09c0a98f5a8e" - integrity sha512-fboP7yqobJ8InSr4fP+bQ3scOtSQtUoPcR+HWasH8b/fk/RO+mWcJs/8n+lewy9WTZc2D68ha7VwRDviUshEWA== - dependencies: - "@babel/runtime" "^7.18.6" - create-react-class "^15.7.0" - fbjs "^3.0.4" - inline-style-prefixer "^6.0.1" - normalize-css-color "^1.0.2" - postcss-value-parser "^4.2.0" - styleq "^0.1.2" - -react-native@0.72.4, react-native@^0.72.4: +react-native@0.72.4, react-native@^0.70.3, react-native@^0.72.4, react-native@^0.72.5: version "0.72.4" resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.72.4.tgz#97b57e22e4d7657eaf4d1f62a678511fcf9bdda7" integrity sha512-+vrObi0wZR+NeqL09KihAAdVlQ9IdplwznJWtYrjnQ4UbCW6rkzZJebRsugwUneSOKNFaHFEo1uKU89HsgtYBg== @@ -19732,87 +18698,6 @@ react-native@0.72.4, react-native@^0.72.4: ws "^6.2.2" yargs "^17.6.2" -react-native@^0.70.3: - version "0.70.15" - resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.70.15.tgz#65f2c5c399ff8e2a892cef9b094cc0888653a874" - integrity sha512-pm2ZPpA+m0Kl0THAy2fptnp7B9+QPexpfad9fSXfqjPufrXG2alwW8kYCn2EO5ZUX6bomZjFEswz6RzdRN/p9A== - dependencies: - "@jest/create-cache-key-function" "^27.0.1" - "@react-native-community/cli" "9.3.5" - "@react-native-community/cli-platform-android" "9.3.4" - "@react-native-community/cli-platform-ios" "9.3.0" - "@react-native/assets" "1.0.0" - "@react-native/normalize-color" "2.0.0" - "@react-native/polyfills" "2.0.0" - abort-controller "^3.0.0" - anser "^1.4.9" - base64-js "^1.1.2" - event-target-shim "^5.0.1" - invariant "^2.2.4" - jsc-android "^250230.2.1" - memoize-one "^5.0.0" - metro-react-native-babel-transformer "0.72.4" - metro-runtime "0.72.4" - metro-source-map "0.72.4" - mkdirp "^0.5.1" - nullthrows "^1.1.1" - pretty-format "^26.5.2" - promise "^8.3.0" - react-devtools-core "4.27.7" - react-native-codegen "^0.70.7" - react-native-gradle-plugin "^0.70.3" - react-refresh "^0.4.0" - react-shallow-renderer "^16.15.0" - regenerator-runtime "^0.13.2" - scheduler "^0.22.0" - stacktrace-parser "^0.1.3" - use-sync-external-store "^1.0.0" - whatwg-fetch "^3.0.0" - ws "^6.1.4" - -react-native@^0.72.5: - version "0.72.17" - resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.72.17.tgz#54d6de38adf6e56fdde1a6b83ef9b138abae7384" - integrity sha512-k3dNe0XqoYCGGWTenbupWSj+ljW3GIfmYS5P4s3if4j0csx2YbenKgH1aJNWLp+UP7ONwfId6G+uBoUJfyMxXg== - dependencies: - "@jest/create-cache-key-function" "^29.2.1" - "@react-native-community/cli" "^11.4.1" - "@react-native-community/cli-platform-android" "^11.4.1" - "@react-native-community/cli-platform-ios" "^11.4.1" - "@react-native/assets-registry" "^0.72.0" - "@react-native/codegen" "^0.72.8" - "@react-native/gradle-plugin" "^0.72.11" - "@react-native/js-polyfills" "^0.72.1" - "@react-native/normalize-colors" "^0.72.0" - "@react-native/virtualized-lists" "^0.72.8" - abort-controller "^3.0.0" - anser "^1.4.9" - ansi-regex "^5.0.0" - base64-js "^1.1.2" - deprecated-react-native-prop-types "^4.2.3" - event-target-shim "^5.0.1" - flow-enums-runtime "^0.0.5" - invariant "^2.2.4" - jest-environment-node "^29.2.1" - jsc-android "^250231.0.0" - memoize-one "^5.0.0" - metro-runtime "^0.76.9" - metro-source-map "^0.76.9" - mkdirp "^0.5.1" - nullthrows "^1.1.1" - pretty-format "^26.5.2" - promise "^8.3.0" - react-devtools-core "^4.27.2" - react-refresh "^0.4.0" - react-shallow-renderer "^16.15.0" - regenerator-runtime "^0.13.2" - scheduler "0.24.0-canary-efb381bbf-20230505" - stacktrace-parser "^0.1.10" - use-sync-external-store "^1.0.0" - whatwg-fetch "^3.0.0" - ws "^6.2.2" - yargs "^17.6.2" - react-refresh@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046" @@ -20496,11 +19381,6 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" -rimraf@~2.2.6: - version "2.2.8" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" - integrity sha512-R5KMKHnPAQaZMqLOsyuyUmcIjSeDm+73eoqQpaXA7AZ22BL+6C+1mcUscgOsNd8WVlJuvlgAPsegcx7pjlV0Dg== - rimraf@~2.4.0: version "2.4.5" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.4.5.tgz#ee710ce5d93a8fdb856fb5ea8ff0e2d75934b2da" @@ -21376,7 +20256,7 @@ stackframe@^1.3.4: resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== -stacktrace-parser@^0.1.10, stacktrace-parser@^0.1.3: +stacktrace-parser@^0.1.10: version "0.1.10" resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== @@ -21805,7 +20685,7 @@ stylehacks@^4.0.0: postcss "^7.0.0" postcss-selector-parser "^3.0.0" -styleq@^0.1.2, styleq@^0.1.3: +styleq@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/styleq/-/styleq-0.1.3.tgz#8efb2892debd51ce7b31dc09c227ad920decab71" integrity sha512-3ZUifmCDCQanjeej1f6kyl/BeP/Vae5EYkQ9iJfUm/QwZvlgnZzyflqAsAWYURdtea8Vkvswu2GrC57h3qffcA== @@ -22014,14 +20894,6 @@ temp-dir@^2.0.0: resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== -temp@0.8.3: - version "0.8.3" - resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59" - integrity sha512-jtnWJs6B1cZlHs9wPG7BrowKxZw/rf6+UpGAkr8AaYmiTyTO7zQlLoST8zx/8TcUPnZmeBoB+H8ARuHZaSijVw== - dependencies: - os-tmpdir "^1.0.0" - rimraf "~2.2.6" - temp@^0.8.4: version "0.8.4" resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.4.tgz#8c97a33a4770072e0a05f919396c7665a7dd59f2" @@ -23753,7 +22625,7 @@ write-file-atomic@^4.0.2: imurmurhash "^0.1.4" signal-exit "^3.0.7" -ws@^6.1.4, ws@^6.2.1, ws@^6.2.2: +ws@^6.2.1, ws@^6.2.2: version "6.2.3" resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.3.tgz#ccc96e4add5fd6fedbc491903075c85c5a11d9ee" integrity sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA== @@ -23910,7 +22782,7 @@ yargs@^13.3.2: y18n "^4.0.0" yargs-parser "^13.1.2" -yargs@^15.1.0, yargs@^15.3.1: +yargs@^15.1.0: version "15.4.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== From 020befe87eadb2736010ae4cca812f45bcf35b99 Mon Sep 17 00:00:00 2001 From: ujjjwal2608 Date: Wed, 15 Jan 2025 14:38:49 +0530 Subject: [PATCH 16/20] chore: updated path and dependencies --- .../src/core-components/nativewind/dependencies.json | 7 ++++++- example/storybook-v7/babel.config.js | 4 ++++ example/storybook-v7/tsconfig.json | 5 ++++- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/example/storybook-nativewind/src/core-components/nativewind/dependencies.json b/example/storybook-nativewind/src/core-components/nativewind/dependencies.json index 5db25292bc..42b44663b1 100644 --- a/example/storybook-nativewind/src/core-components/nativewind/dependencies.json +++ b/example/storybook-nativewind/src/core-components/nativewind/dependencies.json @@ -208,6 +208,11 @@ "@gluestack-ui/textarea": "latest" } }, + "time-input": { + "dependencies": { + "@gluestack-ui/time-input": "latest" + } + }, "toast": { "dependencies": { "@gluestack-ui/toast": "latest", @@ -234,5 +239,5 @@ "hooks": ["useBreakpointValue"] } }, - "IgnoredComponents": ["bottomsheet", "image-viewer"] + "IgnoredComponents": ["bottomsheet", "image-viewer", "time-input"] } diff --git a/example/storybook-v7/babel.config.js b/example/storybook-v7/babel.config.js index 0ac0d7dc1b..a970def10c 100644 --- a/example/storybook-v7/babel.config.js +++ b/example/storybook-v7/babel.config.js @@ -124,6 +124,10 @@ module.exports = function (api) { __dirname, '../../packages/unstyled/image-viewer/src' ), + '@gluestack-ui/time-input': path.join( + __dirname, + '../../packages/unstyled/time-input/src' + ), '@gluestack-ui/toast': path.join( __dirname, '../../packages/unstyled/toast/src' diff --git a/example/storybook-v7/tsconfig.json b/example/storybook-v7/tsconfig.json index fa0e0cccdd..925633f97d 100644 --- a/example/storybook-v7/tsconfig.json +++ b/example/storybook-v7/tsconfig.json @@ -5,7 +5,10 @@ "baseUrl": ".", "paths": { "@gluestack-ui/pin-input": ["../../packages/unstyled/pin-input/src"], - "@gluestack-ui/image-viewer": ["../../packages/unstyled/image-viewer/src"] + "@gluestack-ui/image-viewer": [ + "../../packages/unstyled/image-viewer/src" + ], + "@gluestack-ui/time-input": ["../../packages/unstyled/time-input/src"] } } } From d425fd686698c874732835042be02affddf0865b Mon Sep 17 00:00:00 2001 From: ujjjwal2608 Date: Mon, 20 Jan 2025 00:14:05 +0530 Subject: [PATCH 17/20] fix: fix the isuue of selection of the input feild in the min and hours input --- packages/unstyled/time-input/src/TimeInputHr.tsx | 4 ++-- packages/unstyled/time-input/src/TimeInputMin.tsx | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/unstyled/time-input/src/TimeInputHr.tsx b/packages/unstyled/time-input/src/TimeInputHr.tsx index 7ac89f2738..1574caf755 100644 --- a/packages/unstyled/time-input/src/TimeInputHr.tsx +++ b/packages/unstyled/time-input/src/TimeInputHr.tsx @@ -83,7 +83,7 @@ export const TimeInputHr = (StyledTimeInputHr: any) => : value.set('hour', 0).second(new Date().getSeconds()); setTimeValue(newTimeValue); if (parseInt(newHours) > 1) { - minuteRef.current.select(); + minuteRef.current.focus(); } } }; @@ -126,7 +126,6 @@ export const TimeInputHr = (StyledTimeInputHr: any) => }} onFocus={(e: any) => { handleFocus(true, () => props.onFocus?.(e)); - hourRef.current.select(); }} onBlur={(e: any) => { handleFocus(false, () => props.onBlur?.(e)); @@ -135,6 +134,7 @@ export const TimeInputHr = (StyledTimeInputHr: any) => onChangeText={handleChange} ref={mergedRef} keyboardType="number-pad" + selectTextOnFocus={true} > {children} diff --git a/packages/unstyled/time-input/src/TimeInputMin.tsx b/packages/unstyled/time-input/src/TimeInputMin.tsx index 6cc6872e67..aab6aefbd5 100644 --- a/packages/unstyled/time-input/src/TimeInputMin.tsx +++ b/packages/unstyled/time-input/src/TimeInputMin.tsx @@ -118,7 +118,6 @@ export const TimeInputMin = (StyledTimeInputMin: any) => }} onFocus={(e: any) => { handleFocus(true, () => props.onFocus?.(e)); - minuteRef.current.select(); }} onBlur={(e: any) => { handleFocus(false, () => props.onBlur?.(e)); @@ -127,6 +126,7 @@ export const TimeInputMin = (StyledTimeInputMin: any) => value={value.get('minute').toString().padStart(2, '0')} onChangeText={handleChange} keyboardType="number-pad" + selectTextOnFocus={true} > {children} From 51b025cd505aff16f16b1cda9a53268945572bc6 Mon Sep 17 00:00:00 2001 From: ujjjwal2608 Date: Mon, 20 Jan 2025 01:02:40 +0530 Subject: [PATCH 18/20] fix: fixed the issue of focussing meridiem in the native --- .../src/components/TimeInput/TimeInput.tsx | 3 +-- packages/unstyled/time-input/src/TimeInputMin.tsx | 5 ++++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/example/storybook-nativewind/src/components/TimeInput/TimeInput.tsx b/example/storybook-nativewind/src/components/TimeInput/TimeInput.tsx index ba99bb84bc..9dcd4cd10d 100644 --- a/example/storybook-nativewind/src/components/TimeInput/TimeInput.tsx +++ b/example/storybook-nativewind/src/components/TimeInput/TimeInput.tsx @@ -17,10 +17,9 @@ const TimeInputBasic = ({ ...props }: any) => { value={timeValue} onChange={setTimeValue} isHovered={true} - className="" > - + diff --git a/packages/unstyled/time-input/src/TimeInputMin.tsx b/packages/unstyled/time-input/src/TimeInputMin.tsx index aab6aefbd5..f33eeee44e 100644 --- a/packages/unstyled/time-input/src/TimeInputMin.tsx +++ b/packages/unstyled/time-input/src/TimeInputMin.tsx @@ -75,7 +75,10 @@ export const TimeInputMin = (StyledTimeInputMin: any) => : value.set('minute', 0).second(new Date().getSeconds()); setTimeValue(newTimeValue); if (parseInt(newMinutes) > 5) { - meridiemRef.current.focus(); + if (Platform.OS === 'web') { + meridiemRef.current.focus(); + } + minuteRef.current.blur(); } } }; From 0a3fb8b5780884ee6f772b8ac086a231b8cd34cd Mon Sep 17 00:00:00 2001 From: ujjjwal2608 Date: Mon, 20 Jan 2025 01:48:17 +0530 Subject: [PATCH 19/20] fix: fixed the time-input width for mobile device --- .../src/core-components/nativewind/time-input/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/example/storybook-nativewind/src/core-components/nativewind/time-input/index.tsx b/example/storybook-nativewind/src/core-components/nativewind/time-input/index.tsx index 7e7a816fa9..f61bb59367 100644 --- a/example/storybook-nativewind/src/core-components/nativewind/time-input/index.tsx +++ b/example/storybook-nativewind/src/core-components/nativewind/time-input/index.tsx @@ -27,7 +27,7 @@ cssInterop(UITimeInput, { }); const timeInputStyle = tva({ - base: 'flex flex-row items-center justify-between w-fit', + base: 'flex flex-row items-center self-center', variants: { size: { xl: 'gap-5', From e0760a0f93275b55d83ff6a782f10ff019f17c8a Mon Sep 17 00:00:00 2001 From: ujjjwal2608 Date: Mon, 20 Jan 2025 01:49:50 +0530 Subject: [PATCH 20/20] fix: correct the example for the time-input component --- .../storybook-nativewind/src/components/TimeInput/TimeInput.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/example/storybook-nativewind/src/components/TimeInput/TimeInput.tsx b/example/storybook-nativewind/src/components/TimeInput/TimeInput.tsx index 9dcd4cd10d..dbe2b4753a 100644 --- a/example/storybook-nativewind/src/components/TimeInput/TimeInput.tsx +++ b/example/storybook-nativewind/src/components/TimeInput/TimeInput.tsx @@ -21,7 +21,7 @@ const TimeInputBasic = ({ ...props }: any) => { - +