diff --git a/example/app/(tabs)/explore.tsx b/example/app/(tabs)/explore.tsx
index 47bd2a821..47e081759 100644
--- a/example/app/(tabs)/explore.tsx
+++ b/example/app/(tabs)/explore.tsx
@@ -8,7 +8,7 @@ import { ThemedText } from '@/components/themed-text'
import { ThemedView } from '@/components/themed-view'
import { useThemeColor } from '@/hooks/use-theme-color'
-type ChatExample = 'basic' | 'customized-rendering' | 'slack' | 'links' | 'reply'
+type ChatExample = 'basic' | 'customized-rendering' | 'slack' | 'links' | 'reply' | 'reactions'
const examples: Array<{ id: ChatExample, title: string, description: string }> = [
{ id: 'basic', title: 'Basic Example', description: 'Basic chat with keyboard logging for testing' },
@@ -16,6 +16,7 @@ const examples: Array<{ id: ChatExample, title: string, description: string }> =
{ id: 'customized-rendering', title: 'Customized Rendering', description: 'Customized chat with all rendering options' },
{ id: 'slack', title: 'Slack Style', description: 'Slack-like message styling' },
{ id: 'reply', title: 'Reply Example', description: 'Example demonstrating reply functionality' },
+ { id: 'reactions', title: 'Emoji Reactions', description: 'Long-press a message to react with an emoji' },
]
export default function ExploreScreen () {
diff --git a/example/app/chat/_layout.tsx b/example/app/chat/_layout.tsx
index 57639a27a..f5986e854 100644
--- a/example/app/chat/_layout.tsx
+++ b/example/app/chat/_layout.tsx
@@ -40,6 +40,10 @@ export default function ChatLayout () {
name='slack'
options={{ title: 'Slack Style' }}
/>
+
)
}
diff --git a/example/app/chat/reactions.tsx b/example/app/chat/reactions.tsx
new file mode 100644
index 000000000..42c471022
--- /dev/null
+++ b/example/app/chat/reactions.tsx
@@ -0,0 +1,3 @@
+import ReactionsExample from '@/components/chat-examples/ReactionsExample'
+
+export default ReactionsExample
diff --git a/example/components/chat-examples/ReactionsExample.tsx b/example/components/chat-examples/ReactionsExample.tsx
new file mode 100644
index 000000000..c0c788d7d
--- /dev/null
+++ b/example/components/chat-examples/ReactionsExample.tsx
@@ -0,0 +1,138 @@
+import React, { useCallback, useMemo, useState } from 'react'
+import { StyleSheet, View, useColorScheme } from 'react-native'
+import { GiftedChat, IMessage, MessageReaction } from 'react-native-gifted-chat'
+
+import messagesData from '../../example-expo/data/messages'
+import { useKeyboardVerticalOffset } from '../../hooks/useKeyboardVerticalOffset'
+import { getColorSchemeStyle } from '../../utils/styleUtils'
+
+export interface IChatMessage extends IMessage {
+ reactions?: MessageReaction[]
+}
+
+const CURRENT_USER_ID = 1
+
+export default function ReactionsExample () {
+ const [messages, setMessages] = useState(messagesData)
+ const colorScheme = useColorScheme()
+ const keyboardVerticalOffset = useKeyboardVerticalOffset()
+
+ const user = useMemo(() => ({
+ _id: CURRENT_USER_ID,
+ name: 'Developer',
+ }), [])
+
+ const onSend = useCallback((newMessages: IChatMessage[] = []) => {
+ setMessages(previousMessages =>
+ GiftedChat.append(previousMessages, newMessages)
+ )
+ }, [])
+
+ const handleReactionPress = useCallback((message: IChatMessage, emoji: string) => {
+ setMessages(previousMessages =>
+ previousMessages.map(m => {
+ if (m._id !== message._id)
+ return m
+
+ const existing = (m.reactions ?? []).find(r => r.emoji === emoji)
+
+ if (existing) {
+ const newUserIds = existing.userIds.includes(CURRENT_USER_ID)
+ ? existing.userIds.filter(id => id !== CURRENT_USER_ID)
+ : [...existing.userIds, CURRENT_USER_ID]
+
+ return {
+ ...m,
+ reactions: newUserIds.length === 0
+ ? (m.reactions ?? []).filter(r => r.emoji !== emoji)
+ : (m.reactions ?? []).map(r =>
+ r.emoji === emoji ? { ...r, userIds: newUserIds } : r
+ ),
+ }
+ }
+
+ return {
+ ...m,
+ reactions: [...(m.reactions ?? []), { emoji, userIds: [CURRENT_USER_ID] }],
+ }
+ })
+ )
+ }, [])
+
+ const isDark = colorScheme === 'dark'
+
+ return (
+
+
+ messages={messages}
+ onSend={onSend}
+ user={user}
+ messagesContainerStyle={getColorSchemeStyle(styles, 'messagesContainer', colorScheme)}
+ textInputProps={{
+ style: getColorSchemeStyle(styles, 'composer', colorScheme),
+ }}
+ reactions={{
+ isEnabled: true,
+ onReactionPress: handleReactionPress,
+
+ // Full emoji browser — opens when user taps "+" in the quick picker
+ isFullPickerEnabled: true,
+ fullPickerLang: 'en',
+ fullPickerColumnCount: 6,
+
+ // Theme overrides for the EmojiChooser sheet
+ fullPickerTheme: {
+ light: {
+ searchbar: {
+ container: { backgroundColor: '#f3f4f6' },
+ textInput: {
+ backgroundColor: '#ffffff',
+ color: '#111827',
+ fontSize: 15,
+ },
+ },
+ toolbar: {
+ container: { backgroundColor: '#ffffff' },
+ },
+ },
+ dark: {
+ searchbar: {
+ container: { backgroundColor: '#1f2937' },
+ textInput: {
+ backgroundColor: '#374151',
+ color: '#f9fafb',
+ fontSize: 15,
+ },
+ },
+ toolbar: {
+ container: { backgroundColor: '#111827' },
+ },
+ },
+ },
+
+ fullPickerSearchBarProps: {
+ placeholderTextColor: isDark ? '#9ca3af' : '#6b7280',
+ },
+ }}
+ keyboardAvoidingViewProps={{ keyboardVerticalOffset }}
+ />
+
+ )
+}
+
+const styles = StyleSheet.create({
+ container: {
+ flex: 1,
+ backgroundColor: '#fff',
+ },
+ container_dark: {
+ backgroundColor: '#000',
+ },
+ messagesContainer_dark: {
+ backgroundColor: '#000',
+ },
+ composer_dark: {
+ backgroundColor: '#1a1a1a',
+ color: '#fff',
+ },
+})
diff --git a/example/package.json b/example/package.json
index feb493ef2..ffff1402e 100644
--- a/example/package.json
+++ b/example/package.json
@@ -52,7 +52,10 @@
"react-native-safe-area-context": "~5.6.2",
"react-native-screens": "~4.16.0",
"react-native-web": "~0.21.2",
- "react-native-worklets": "0.5.1"
+ "react-native-worklets": "0.5.1",
+ "@react-native-async-storage/async-storage": "^2.1.2",
+ "react-native-emoji-chooser": "^0.1.11",
+ "react-native-svg": "^15.11.2"
},
"devDependencies": {
"@babel/core": "^7.28.6",
diff --git a/example/yarn.lock b/example/yarn.lock
index 89add6559..22293af43 100644
--- a/example/yarn.lock
+++ b/example/yarn.lock
@@ -7,41 +7,41 @@
resolved "https://registry.yarnpkg.com/@0no-co/graphql.web/-/graphql.web-1.2.0.tgz#296d00581bfaaabfda1e976849d927824aaea81b"
integrity sha512-/1iHy9TTr63gE1YcR5idjx8UREz1s0kFhydf3bBLCXyqjhkIc6igAzTOx3zPifCwFR87tsh/4Pa9cNts6d2otw==
-"@babel/code-frame@7.10.4", "@babel/code-frame@~7.10.4":
+"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.20.0", "@babel/code-frame@^7.24.7", "@babel/code-frame@^7.28.6", "@babel/code-frame@^7.29.0":
+ version "7.29.0"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.29.0.tgz#7cd7a59f15b3cc0dcd803038f7792712a7d0b15c"
+ integrity sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.28.5"
+ js-tokens "^4.0.0"
+ picocolors "^1.1.1"
+
+"@babel/code-frame@~7.10.4":
version "7.10.4"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a"
integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==
dependencies:
"@babel/highlight" "^7.10.4"
-"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.20.0", "@babel/code-frame@^7.24.7", "@babel/code-frame@^7.28.6":
- version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.28.6.tgz#72499312ec58b1e2245ba4a4f550c132be4982f7"
- integrity sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==
- dependencies:
- "@babel/helper-validator-identifier" "^7.28.5"
- js-tokens "^4.0.0"
- picocolors "^1.1.1"
-
-"@babel/compat-data@^7.27.7", "@babel/compat-data@^7.28.6":
- version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.28.6.tgz#103f466803fa0f059e82ccac271475470570d74c"
- integrity sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg==
+"@babel/compat-data@^7.28.6":
+ version "7.29.0"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.29.0.tgz#00d03e8c0ac24dd9be942c5370990cbe1f17d88d"
+ integrity sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==
"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.20.0", "@babel/core@^7.23.9", "@babel/core@^7.25.2", "@babel/core@^7.28.6":
- version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.28.6.tgz#531bf883a1126e53501ba46eb3bb414047af507f"
- integrity sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw==
+ version "7.29.0"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.29.0.tgz#5286ad785df7f79d656e88ce86e650d16ca5f322"
+ integrity sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==
dependencies:
- "@babel/code-frame" "^7.28.6"
- "@babel/generator" "^7.28.6"
+ "@babel/code-frame" "^7.29.0"
+ "@babel/generator" "^7.29.0"
"@babel/helper-compilation-targets" "^7.28.6"
"@babel/helper-module-transforms" "^7.28.6"
"@babel/helpers" "^7.28.6"
- "@babel/parser" "^7.28.6"
+ "@babel/parser" "^7.29.0"
"@babel/template" "^7.28.6"
- "@babel/traverse" "^7.28.6"
- "@babel/types" "^7.28.6"
+ "@babel/traverse" "^7.29.0"
+ "@babel/types" "^7.29.0"
"@jridgewell/remapping" "^2.3.5"
convert-source-map "^2.0.0"
debug "^4.1.0"
@@ -49,13 +49,13 @@
json5 "^2.2.3"
semver "^6.3.1"
-"@babel/generator@^7.20.5", "@babel/generator@^7.25.0", "@babel/generator@^7.28.6", "@babel/generator@^7.7.2":
- version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.28.6.tgz#48dcc65d98fcc8626a48f72b62e263d25fc3c3f1"
- integrity sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==
+"@babel/generator@^7.20.5", "@babel/generator@^7.25.0", "@babel/generator@^7.29.0", "@babel/generator@^7.29.1", "@babel/generator@^7.7.2":
+ version "7.29.1"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.29.1.tgz#d09876290111abbb00ef962a7b83a5307fba0d50"
+ integrity sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==
dependencies:
- "@babel/parser" "^7.28.6"
- "@babel/types" "^7.28.6"
+ "@babel/parser" "^7.29.0"
+ "@babel/types" "^7.29.0"
"@jridgewell/gen-mapping" "^0.3.12"
"@jridgewell/trace-mapping" "^0.3.28"
jsesc "^3.0.2"
@@ -67,7 +67,7 @@
dependencies:
"@babel/types" "^7.27.3"
-"@babel/helper-compilation-targets@^7.27.1", "@babel/helper-compilation-targets@^7.27.2", "@babel/helper-compilation-targets@^7.28.6":
+"@babel/helper-compilation-targets@^7.27.1", "@babel/helper-compilation-targets@^7.28.6":
version "7.28.6"
resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz#32c4a3f41f12ed1532179b108a4d746e105c2b25"
integrity sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==
@@ -91,7 +91,7 @@
"@babel/traverse" "^7.28.6"
semver "^6.3.1"
-"@babel/helper-create-regexp-features-plugin@^7.27.1":
+"@babel/helper-create-regexp-features-plugin@^7.27.1", "@babel/helper-create-regexp-features-plugin@^7.28.5":
version "7.28.5"
resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz#7c1ddd64b2065c7f78034b25b43346a7e19ed997"
integrity sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==
@@ -100,16 +100,16 @@
regexpu-core "^6.3.1"
semver "^6.3.1"
-"@babel/helper-define-polyfill-provider@^0.6.5":
- version "0.6.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz#742ccf1cb003c07b48859fc9fa2c1bbe40e5f753"
- integrity sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==
+"@babel/helper-define-polyfill-provider@^0.6.5", "@babel/helper-define-polyfill-provider@^0.6.7":
+ version "0.6.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.7.tgz#8d01cba97de419115ad3497573a476db15dc6c6a"
+ integrity sha512-6Fqi8MtQ/PweQ9xvux65emkLQ83uB+qAVtfHkC9UodyHMIZdxNI01HjLCLUtybElp2KY2XNE0nOgyP1E1vXw9w==
dependencies:
- "@babel/helper-compilation-targets" "^7.27.2"
- "@babel/helper-plugin-utils" "^7.27.1"
- debug "^4.4.1"
+ "@babel/helper-compilation-targets" "^7.28.6"
+ "@babel/helper-plugin-utils" "^7.28.6"
+ debug "^4.4.3"
lodash.debounce "^4.0.8"
- resolve "^1.22.10"
+ resolve "^1.22.11"
"@babel/helper-globals@^7.28.0":
version "7.28.0"
@@ -124,7 +124,7 @@
"@babel/traverse" "^7.28.5"
"@babel/types" "^7.28.5"
-"@babel/helper-module-imports@^7.25.9", "@babel/helper-module-imports@^7.27.1", "@babel/helper-module-imports@^7.28.6":
+"@babel/helper-module-imports@^7.25.9", "@babel/helper-module-imports@^7.28.6":
version "7.28.6"
resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz#60632cbd6ffb70b22823187201116762a03e2d5c"
integrity sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==
@@ -221,17 +221,17 @@
js-tokens "^4.0.0"
picocolors "^1.0.0"
-"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.25.3", "@babel/parser@^7.28.6":
- version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.6.tgz#f01a8885b7fa1e56dd8a155130226cd698ef13fd"
- integrity sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==
+"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.25.3", "@babel/parser@^7.28.6", "@babel/parser@^7.29.0":
+ version "7.29.0"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.29.0.tgz#669ef345add7d057e92b7ed15f0bac07611831b6"
+ integrity sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==
dependencies:
- "@babel/types" "^7.28.6"
+ "@babel/types" "^7.29.0"
"@babel/plugin-proposal-decorators@^7.12.9":
- version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.28.6.tgz#924df2177affb56ef54b0884ad39352578e8f4fa"
- integrity sha512-RVdFPPyY9fCRAX68haPmOk2iyKW8PKJFthmm8NeSI3paNxKWGZIn99+VbIf0FrtCpFnPgnpF/L48tadi617ULg==
+ version "7.29.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.29.0.tgz#d159f26f78740e47bf3ef075882b155b2d54ca81"
+ integrity sha512-CVBVv3VY/XRMxRYq5dwr2DS7/MvqPm23cOCjbwNnVrfOqcWlnefua1uUs0sjdKOGjvPUG633o07uWzJq4oI6dA==
dependencies:
"@babel/helper-create-class-features-plugin" "^7.28.6"
"@babel/helper-plugin-utils" "^7.28.6"
@@ -399,13 +399,13 @@
"@babel/helper-plugin-utils" "^7.27.1"
"@babel/plugin-transform-async-generator-functions@^7.25.4":
- version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.6.tgz#80cb86d3eaa2102e18ae90dd05ab87bdcad3877d"
- integrity sha512-9knsChgsMzBV5Yh3kkhrZNxH3oCYAfMBkNNaVN4cP2RVlFPe8wYdwwcnOsAbkdDoV9UjFtOXWrWB52M8W4jNeA==
+ version "7.29.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.0.tgz#63ed829820298f0bf143d5a4a68fb8c06ffd742f"
+ integrity sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w==
dependencies:
"@babel/helper-plugin-utils" "^7.28.6"
"@babel/helper-remap-async-to-generator" "^7.27.1"
- "@babel/traverse" "^7.28.6"
+ "@babel/traverse" "^7.29.0"
"@babel/plugin-transform-async-to-generator@^7.24.7":
version "7.28.6"
@@ -522,12 +522,12 @@
"@babel/helper-plugin-utils" "^7.28.6"
"@babel/plugin-transform-named-capturing-groups-regex@^7.24.7":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz#f32b8f7818d8fc0cc46ee20a8ef75f071af976e1"
- integrity sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==
+ version "7.29.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.0.tgz#a26cd51e09c4718588fc4cce1c5d1c0152102d6a"
+ integrity sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ==
dependencies:
- "@babel/helper-create-regexp-features-plugin" "^7.27.1"
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-create-regexp-features-plugin" "^7.28.5"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/plugin-transform-nullish-coalescing-operator@^7.0.0-0", "@babel/plugin-transform-nullish-coalescing-operator@^7.24.7":
version "7.28.6"
@@ -641,19 +641,19 @@
"@babel/helper-plugin-utils" "^7.27.1"
"@babel/plugin-transform-regenerator@^7.24.7":
- version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.6.tgz#6ca2ed5b76cff87980f96eaacfc2ce833e8e7a1b"
- integrity sha512-eZhoEZHYQLL5uc1gS5e9/oTknS0sSSAtd5TkKMUp3J+S/CaUjagc0kOUPsEbDmMeva0nC3WWl4SxVY6+OBuxfw==
+ version "7.29.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.0.tgz#dec237cec1b93330876d6da9992c4abd42c9d18b"
+ integrity sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog==
dependencies:
"@babel/helper-plugin-utils" "^7.28.6"
"@babel/plugin-transform-runtime@^7.24.7":
- version "7.28.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.28.5.tgz#ae3e21fbefe2831ebac04dfa6b463691696afe17"
- integrity sha512-20NUVgOrinudkIBzQ2bNxP08YpKprUkRTiRSd2/Z5GOdPImJGkoN4Z7IQe1T5AdyKI1i5L6RBmluqdSzvaq9/w==
+ version "7.29.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.29.0.tgz#a5fded13cc656700804bfd6e5ebd7fffd5266803"
+ integrity sha512-jlaRT5dJtMaMCV6fAuLbsQMSwz/QkvaHOHOSXRitGGwSpR1blCY4KUKoyP2tYO8vJcqYe8cEj96cqSztv3uF9w==
dependencies:
- "@babel/helper-module-imports" "^7.27.1"
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-module-imports" "^7.28.6"
+ "@babel/helper-plugin-utils" "^7.28.6"
babel-plugin-polyfill-corejs2 "^0.4.14"
babel-plugin-polyfill-corejs3 "^0.13.0"
babel-plugin-polyfill-regenerator "^0.6.5"
@@ -744,36 +744,23 @@
"@babel/parser" "^7.28.6"
"@babel/types" "^7.28.6"
-"@babel/traverse--for-generate-function-map@npm:@babel/traverse@^7.25.3":
- version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.28.6.tgz#871ddc79a80599a5030c53b1cc48cbe3a5583c2e"
- integrity sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==
+"@babel/traverse--for-generate-function-map@npm:@babel/traverse@^7.25.3", "@babel/traverse@^7.25.3", "@babel/traverse@^7.27.1", "@babel/traverse@^7.28.5", "@babel/traverse@^7.28.6", "@babel/traverse@^7.29.0":
+ version "7.29.0"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.29.0.tgz#f323d05001440253eead3c9c858adbe00b90310a"
+ integrity sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==
dependencies:
- "@babel/code-frame" "^7.28.6"
- "@babel/generator" "^7.28.6"
+ "@babel/code-frame" "^7.29.0"
+ "@babel/generator" "^7.29.0"
"@babel/helper-globals" "^7.28.0"
- "@babel/parser" "^7.28.6"
+ "@babel/parser" "^7.29.0"
"@babel/template" "^7.28.6"
- "@babel/types" "^7.28.6"
- debug "^4.3.1"
-
-"@babel/traverse@^7.25.3", "@babel/traverse@^7.27.1", "@babel/traverse@^7.28.5", "@babel/traverse@^7.28.6":
- version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.28.6.tgz#871ddc79a80599a5030c53b1cc48cbe3a5583c2e"
- integrity sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==
- dependencies:
- "@babel/code-frame" "^7.28.6"
- "@babel/generator" "^7.28.6"
- "@babel/helper-globals" "^7.28.0"
- "@babel/parser" "^7.28.6"
- "@babel/template" "^7.28.6"
- "@babel/types" "^7.28.6"
+ "@babel/types" "^7.29.0"
debug "^4.3.1"
-"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.25.2", "@babel/types@^7.26.0", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.2", "@babel/types@^7.28.5", "@babel/types@^7.28.6", "@babel/types@^7.3.3":
- version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.6.tgz#c3e9377f1b155005bcc4c46020e7e394e13089df"
- integrity sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==
+"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.25.2", "@babel/types@^7.26.0", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.2", "@babel/types@^7.28.5", "@babel/types@^7.28.6", "@babel/types@^7.29.0", "@babel/types@^7.3.3":
+ version "7.29.0"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.29.0.tgz#9f5b1e838c446e72cf3cd4b918152b8c605e37c7"
+ integrity sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==
dependencies:
"@babel/helper-string-parser" "^7.27.1"
"@babel/helper-validator-identifier" "^7.28.5"
@@ -832,14 +819,14 @@
resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.2.tgz#bccdf615bcf7b6e8db830ec0b8d21c9a25de597b"
integrity sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==
-"@eslint/config-array@^0.21.1":
- version "0.21.1"
- resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.21.1.tgz#7d1b0060fea407f8301e932492ba8c18aff29713"
- integrity sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==
+"@eslint/config-array@^0.21.2":
+ version "0.21.2"
+ resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.21.2.tgz#f29e22057ad5316cf23836cee9a34c81fffcb7e6"
+ integrity sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==
dependencies:
"@eslint/object-schema" "^2.1.7"
debug "^4.3.1"
- minimatch "^3.1.2"
+ minimatch "^3.1.5"
"@eslint/config-helpers@^0.4.2":
version "0.4.2"
@@ -855,25 +842,25 @@
dependencies:
"@types/json-schema" "^7.0.15"
-"@eslint/eslintrc@^3.3.1":
- version "3.3.3"
- resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.3.3.tgz#26393a0806501b5e2b6a43aa588a4d8df67880ac"
- integrity sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==
+"@eslint/eslintrc@^3.3.5":
+ version "3.3.5"
+ resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.3.5.tgz#c131793cfc1a7b96f24a83e0a8bbd4b881558c60"
+ integrity sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==
dependencies:
- ajv "^6.12.4"
+ ajv "^6.14.0"
debug "^4.3.2"
espree "^10.0.1"
globals "^14.0.0"
ignore "^5.2.0"
import-fresh "^3.2.1"
js-yaml "^4.1.1"
- minimatch "^3.1.2"
+ minimatch "^3.1.5"
strip-json-comments "^3.1.1"
-"@eslint/js@9.39.2":
- version "9.39.2"
- resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.39.2.tgz#2d4b8ec4c3ea13c1b3748e0c97ecd766bdd80599"
- integrity sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==
+"@eslint/js@9.39.4":
+ version "9.39.4"
+ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.39.4.tgz#a3f83bfc6fd9bf33a853dfacd0b49b398eb596c1"
+ integrity sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==
"@eslint/object-schema@^2.1.7":
version "2.1.7"
@@ -888,10 +875,10 @@
"@eslint/core" "^0.17.0"
levn "^0.4.1"
-"@expo/cli@54.0.21":
- version "54.0.21"
- resolved "https://registry.yarnpkg.com/@expo/cli/-/cli-54.0.21.tgz#196ea08f539535b26717e09661937b24b38f25e7"
- integrity sha512-L/FdpyZDsg/Nq6xW6kfiyF9DUzKfLZCKFXEVZcDqCNar6bXxQVotQyvgexRvtUF5nLinuT/UafLOdC3FUALUmA==
+"@expo/cli@54.0.23":
+ version "54.0.23"
+ resolved "https://registry.yarnpkg.com/@expo/cli/-/cli-54.0.23.tgz#e8a7dc4e1f2a8a5361afd80bcc352014b57a87ac"
+ integrity sha512-km0h72SFfQCmVycH/JtPFTVy69w6Lx1cHNDmfLfQqgKFYeeHTjx7LVDP4POHCtNxFP2UeRazrygJhlh4zz498g==
dependencies:
"@0no-co/graphql.web" "^1.0.8"
"@expo/code-signing-certificates" "^0.0.6"
@@ -902,9 +889,9 @@
"@expo/image-utils" "^0.8.8"
"@expo/json-file" "^10.0.8"
"@expo/metro" "~54.2.0"
- "@expo/metro-config" "~54.0.13"
+ "@expo/metro-config" "~54.0.14"
"@expo/osascript" "^2.3.8"
- "@expo/package-manager" "^1.9.9"
+ "@expo/package-manager" "^1.9.10"
"@expo/plist" "^0.4.8"
"@expo/prebuild-config" "^54.0.8"
"@expo/schema-utils" "^0.1.8"
@@ -1024,9 +1011,9 @@
chalk "^4.1.2"
"@expo/env@~2.0.8":
- version "2.0.8"
- resolved "https://registry.yarnpkg.com/@expo/env/-/env-2.0.8.tgz#2aea906eed3d297b2e19608dc1a800fba0a3fe03"
- integrity sha512-5VQD6GT8HIMRaSaB5JFtOXuvfDVU80YtZIuUT/GDhUF782usIXY13Tn3IdDz1Tm/lqA9qnRZQ1BF4t7LlvdJPA==
+ version "2.0.11"
+ resolved "https://registry.yarnpkg.com/@expo/env/-/env-2.0.11.tgz#3a10d9142b1833566bdfb39de1c062f7a8b8ac38"
+ integrity sha512-xV+ps6YCW7XIPVUwFVCRN2nox09dnRwy8uIjwHWTODu0zFw4kp4omnVkl0OOjuu2XOe7tdgAHxikrkJt9xB/7Q==
dependencies:
chalk "^4.0.0"
debug "^4.3.4"
@@ -1052,9 +1039,9 @@
semver "^7.6.0"
"@expo/image-utils@^0.8.8":
- version "0.8.8"
- resolved "https://registry.yarnpkg.com/@expo/image-utils/-/image-utils-0.8.8.tgz#db5d460fd0c7101b10e9d027ffbe42f9cf115248"
- integrity sha512-HHHaG4J4nKjTtVa1GG9PCh763xlETScfEyNxxOvfTRr8IKPJckjTyqSLEtdJoFNJ1vqiABEjW7tqGhqGibZLeA==
+ version "0.8.12"
+ resolved "https://registry.yarnpkg.com/@expo/image-utils/-/image-utils-0.8.12.tgz#56e34b9555745ad4d11c972fe0d1ce71c7c64c41"
+ integrity sha512-3KguH7kyKqq7pNwLb9j6BBdD/bjmNwXZG/HPWT6GWIXbwrvAJt2JNyYTP5agWJ8jbbuys1yuCzmkX+TU6rmI7A==
dependencies:
"@expo/spawn-async" "^1.7.2"
chalk "^4.0.0"
@@ -1062,23 +1049,20 @@
jimp-compact "0.16.1"
parse-png "^2.1.0"
resolve-from "^5.0.0"
- resolve-global "^1.0.0"
semver "^7.6.0"
- temp-dir "~2.0.0"
- unique-string "~2.0.0"
-"@expo/json-file@^10.0.8", "@expo/json-file@~10.0.8":
- version "10.0.8"
- resolved "https://registry.yarnpkg.com/@expo/json-file/-/json-file-10.0.8.tgz#05e524d1ecc0011db0a6d66b525ea2f58cfe6d43"
- integrity sha512-9LOTh1PgKizD1VXfGQ88LtDH0lRwq9lsTb4aichWTWSWqy3Ugfkhfm3BhzBIkJJfQQ5iJu3m/BoRlEIjoCGcnQ==
+"@expo/json-file@^10.0.12", "@expo/json-file@^10.0.8", "@expo/json-file@~10.0.8":
+ version "10.0.12"
+ resolved "https://registry.yarnpkg.com/@expo/json-file/-/json-file-10.0.12.tgz#411216996ab6df6765d463de22283b3f30e49ccb"
+ integrity sha512-inbDycp1rMAelAofg7h/mMzIe+Owx6F7pur3XdQ3EPTy00tme+4P6FWgHKUcjN8dBSrnbRNpSyh5/shzHyVCyQ==
dependencies:
- "@babel/code-frame" "~7.10.4"
+ "@babel/code-frame" "^7.20.0"
json5 "^2.2.3"
-"@expo/metro-config@54.0.13", "@expo/metro-config@~54.0.13":
- version "54.0.13"
- resolved "https://registry.yarnpkg.com/@expo/metro-config/-/metro-config-54.0.13.tgz#a78f0da6ba7eca4d3b1fa0fa2487be4d947e4fd6"
- integrity sha512-RRufMCgLR2Za1WGsh02OatIJo5qZFt31yCnIOSfoubNc3Qqe92Z41pVsbrFnmw5CIaisv1NgdBy05DHe7pEyuw==
+"@expo/metro-config@54.0.14", "@expo/metro-config@~54.0.14":
+ version "54.0.14"
+ resolved "https://registry.yarnpkg.com/@expo/metro-config/-/metro-config-54.0.14.tgz#e455dfb2bae9473ec665bc830d651baa709c1e8a"
+ integrity sha512-hxpLyDfOR4L23tJ9W1IbJJsG7k4lv2sotohBm/kTYyiG+pe1SYCAWsRmgk+H42o/wWf/HQjE5k45S5TomGLxNA==
dependencies:
"@babel/code-frame" "^7.20.0"
"@babel/core" "^7.20.0"
@@ -1133,19 +1117,18 @@
metro-transform-worker "0.83.3"
"@expo/osascript@^2.3.8":
- version "2.3.8"
- resolved "https://registry.yarnpkg.com/@expo/osascript/-/osascript-2.3.8.tgz#6b376f09650e6476991f707356be54b5ea53d89e"
- integrity sha512-/TuOZvSG7Nn0I8c+FcEaoHeBO07yu6vwDgk7rZVvAXoeAK5rkA09jRyjYsZo+0tMEFaToBeywA6pj50Mb3ny9w==
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/@expo/osascript/-/osascript-2.4.2.tgz#fe341cff1eb2c939da43cf58ade5504c8a5d77ca"
+ integrity sha512-/XP7PSYF2hzOZzqfjgkoWtllyeTN8dW3aM4P6YgKcmmPikKL5FdoyQhti4eh6RK5a5VrUXJTOlTNIpIHsfB5Iw==
dependencies:
"@expo/spawn-async" "^1.7.2"
- exec-async "^2.2.0"
-"@expo/package-manager@^1.9.9":
- version "1.9.10"
- resolved "https://registry.yarnpkg.com/@expo/package-manager/-/package-manager-1.9.10.tgz#5da3f4943f6fa44ddd7f0efe32a360040edd734a"
- integrity sha512-axJm+NOj3jVxep49va/+L3KkF3YW/dkV+RwzqUJedZrv4LeTqOG4rhrCaCPXHTvLqCTDKu6j0Xyd28N7mnxsGA==
+"@expo/package-manager@^1.9.10":
+ version "1.10.3"
+ resolved "https://registry.yarnpkg.com/@expo/package-manager/-/package-manager-1.10.3.tgz#151fafc1c30de3e75df78f7c0424915210779288"
+ integrity sha512-ZuXiK/9fCrIuLjPSe1VYmfp0Sa85kCMwd8QQpgyi5ufppYKRtLBg14QOgUqj8ZMbJTxE0xqzd0XR7kOs3vAK9A==
dependencies:
- "@expo/json-file" "^10.0.8"
+ "@expo/json-file" "^10.0.12"
"@expo/spawn-async" "^1.7.2"
chalk "^4.0.0"
npm-package-arg "^11.0.0"
@@ -1208,9 +1191,9 @@
integrity sha512-HHQigo3rQWKMDzYDLkubN5WQOYXJJE2eNqIQC2axC2iO3mHdwnIR7FgZVvHWtBwAdzBgAP0ECp8KqS8TiMKvgw==
"@expo/vector-icons@^15.0.3":
- version "15.0.3"
- resolved "https://registry.yarnpkg.com/@expo/vector-icons/-/vector-icons-15.0.3.tgz#12c38d4e6cc927dd0500e4591ac00672a8909748"
- integrity sha512-SBUyYKphmlfUBqxSfDdJ3jAdEVSALS2VUPOUyqn48oZmb2TL/O7t7/PQm5v4NQujYEPLPMTLn9KVw6H7twwbTA==
+ version "15.1.1"
+ resolved "https://registry.yarnpkg.com/@expo/vector-icons/-/vector-icons-15.1.1.tgz#4b1d2c60493c0b0536972f0a5babd5f5c85b48f4"
+ integrity sha512-Iu2VkcoI5vygbtYngm7jb4ifxElNVXQYdDrYkT7UCEIiKLeWnQY0wf2ZhHZ+Wro6Sc5TaumpKUOqDRpLi5rkvw==
"@expo/ws-tunnel@^1.0.1":
version "1.0.6"
@@ -1218,13 +1201,12 @@
integrity sha512-nDRbLmSrJar7abvUjp3smDwH8HcbZcoOEa5jVPUv9/9CajgmWw20JNRwTuBRzWIWIkEJDkz20GoNA+tSwUqk0Q==
"@expo/xcpretty@^4.3.0":
- version "4.3.2"
- resolved "https://registry.yarnpkg.com/@expo/xcpretty/-/xcpretty-4.3.2.tgz#12dba1295167a9c8dde4be783d74f7e81648ca5d"
- integrity sha512-ReZxZ8pdnoI3tP/dNnJdnmAk7uLT4FjsKDGW7YeDdvdOMz2XCQSmSCM9IWlrXuWtMF9zeSB6WJtEhCQ41gQOfw==
+ version "4.4.1"
+ resolved "https://registry.yarnpkg.com/@expo/xcpretty/-/xcpretty-4.4.1.tgz#dcd41f886f8a0474c217adaef84f4733e44625c9"
+ integrity sha512-KZNxZvnGCtiM2aYYZ6Wz0Ix5r47dAvpNLApFtZWnSoERzAdOMzVBOPysBoM0JlF6FKWZ8GPqgn6qt3dV/8Zlpg==
dependencies:
- "@babel/code-frame" "7.10.4"
+ "@babel/code-frame" "^7.20.0"
chalk "^4.1.0"
- find-up "^5.0.0"
js-yaml "^4.1.0"
"@humanfs/core@^0.19.1":
@@ -1250,18 +1232,6 @@
resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.3.tgz#c2b9d2e374ee62c586d3adbea87199b1d7a7a6ba"
integrity sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==
-"@isaacs/balanced-match@^4.0.1":
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz#3081dadbc3460661b751e7591d7faea5df39dd29"
- integrity sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==
-
-"@isaacs/brace-expansion@^5.0.0":
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz#4b3dabab7d8e75a429414a96bd67bf4c1d13e0f3"
- integrity sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==
- dependencies:
- "@isaacs/balanced-match" "^4.0.1"
-
"@isaacs/fs-minipass@^4.0.0":
version "4.0.1"
resolved "https://registry.yarnpkg.com/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz#2d59ae3ab4b38fb4270bfa23d30f8e2e86c7fe32"
@@ -1725,6 +1695,13 @@
resolved "https://registry.yarnpkg.com/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz#0c4230a9eed49d4589c967e2d9c0d9d60a23971e"
integrity sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==
+"@react-native-async-storage/async-storage@^2.1.2":
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/@react-native-async-storage/async-storage/-/async-storage-2.2.0.tgz#a3aa565253e46286655560172f4e366e8969f5ad"
+ integrity sha512-gvRvjR5JAaUZF8tv2Kcq/Gbt3JHwbKFYfmb445rhOj6NUMx3qPLixmDx5pZAyb9at1bYvJ4/eTUipU5aki45xw==
+ dependencies:
+ merge-options "^3.0.4"
+
"@react-native/assets-registry@0.81.5":
version "0.81.5"
resolved "https://registry.yarnpkg.com/@react-native/assets-registry/-/assets-registry-0.81.5.tgz#d22c924fa6f6d4a463c5af34ce91f38756c0fa7d"
@@ -1891,18 +1868,18 @@
nullthrows "^1.1.1"
"@react-navigation/bottom-tabs@^7.4.0":
- version "7.10.1"
- resolved "https://registry.yarnpkg.com/@react-navigation/bottom-tabs/-/bottom-tabs-7.10.1.tgz#8d28e623f1f503c0e66b55837fa03a78a20ea2a8"
- integrity sha512-MirOzKEe/rRwPSE9HMrS4niIo0LyUhewlvd01TpzQ1ipuXjH2wJbzAM9gS/r62zriB6HMHz2OY6oIRduwQJtTw==
+ version "7.15.5"
+ resolved "https://registry.yarnpkg.com/@react-navigation/bottom-tabs/-/bottom-tabs-7.15.5.tgz#a858b88d0d23f0f57eac6204752adfdbb16380cc"
+ integrity sha512-wQHredlCrRmShWQ1vF4HUcLdaiJ8fUgnbaeQH7BJ7MQVQh4mdzab0IOY/4QSmUyNRB350oyu1biTycyQ5FKWMQ==
dependencies:
- "@react-navigation/elements" "^2.9.5"
+ "@react-navigation/elements" "^2.9.10"
color "^4.2.3"
sf-symbols-typescript "^2.1.0"
-"@react-navigation/core@^7.14.0":
- version "7.14.0"
- resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-7.14.0.tgz#d24f93d424ab33f645262dc4775e4708aa3d9a8b"
- integrity sha512-tMpzskBzVp0E7CRNdNtJIdXjk54Kwe/TF9ViXAef+YFM1kSfGv4e/B2ozfXE+YyYgmh4WavTv8fkdJz1CNyu+g==
+"@react-navigation/core@^7.16.1":
+ version "7.16.1"
+ resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-7.16.1.tgz#a8f6799a7b18f6d5c45616cbf792ec8f08d1aadc"
+ integrity sha512-xhquoyhKdqDfiL7LuupbwYnmauUGfVFGDEJO34m26k8zSN1eDjQ2stBZcHN8ILOI1PrG9885nf8ZmfaQxPS0ww==
dependencies:
"@react-navigation/routers" "^7.5.3"
escape-string-regexp "^4.0.0"
@@ -1913,31 +1890,31 @@
use-latest-callback "^0.2.4"
use-sync-external-store "^1.5.0"
-"@react-navigation/elements@^2.9.5":
- version "2.9.5"
- resolved "https://registry.yarnpkg.com/@react-navigation/elements/-/elements-2.9.5.tgz#29f68c4975351724dcfe1d3bdc76c4d6dc65fc33"
- integrity sha512-iHZU8rRN1014Upz73AqNVXDvSMZDh5/ktQ1CMe21rdgnOY79RWtHHBp9qOS3VtqlUVYGkuX5GEw5mDt4tKdl0g==
+"@react-navigation/elements@^2.9.10", "@react-navigation/elements@^2.9.5":
+ version "2.9.10"
+ resolved "https://registry.yarnpkg.com/@react-navigation/elements/-/elements-2.9.10.tgz#8cde92a7b4d088a46efb931e6edb2644eddd630c"
+ integrity sha512-N8tuBekzTRb0pkMHFJGvmC6Q5OisSbt6gzvw7RHMnp4NDo5auVllT12sWFaTXf8mTduaLKNSrD/NZNaOqThCBg==
dependencies:
color "^4.2.3"
use-latest-callback "^0.2.4"
use-sync-external-store "^1.5.0"
"@react-navigation/native-stack@^7.3.16":
- version "7.10.1"
- resolved "https://registry.yarnpkg.com/@react-navigation/native-stack/-/native-stack-7.10.1.tgz#de6551286a5e9e2b0c466daa83e0f9bf0321815b"
- integrity sha512-8jt7olKysn07HuKKSjT/ahZZTV+WaZa96o9RI7gAwh7ATlUDY02rIRttwvCyjovhSjD9KCiuJ+Hd4kwLidHwJw==
+ version "7.14.4"
+ resolved "https://registry.yarnpkg.com/@react-navigation/native-stack/-/native-stack-7.14.4.tgz#c575117a2da14257ef13f5111cf31a6a8025bbba"
+ integrity sha512-HFEnM5Q7JY3FmmiolD/zvgY+9sxZAyVGPZJoz7BdTvJmi1VHOdplf24YiH45mqeitlGnaOlvNT55rH4abHJ5eA==
dependencies:
- "@react-navigation/elements" "^2.9.5"
+ "@react-navigation/elements" "^2.9.10"
color "^4.2.3"
sf-symbols-typescript "^2.1.0"
warn-once "^0.1.1"
"@react-navigation/native@^7.1.8":
- version "7.1.28"
- resolved "https://registry.yarnpkg.com/@react-navigation/native/-/native-7.1.28.tgz#1ee75cf3a8b3e4365f94c5d657bb3c015e387720"
- integrity sha512-d1QDn+KNHfHGt3UIwOZvupvdsDdiHYZBEj7+wL2yDVo3tMezamYy60H9s3EnNVE1Ae1ty0trc7F2OKqo/RmsdQ==
+ version "7.1.33"
+ resolved "https://registry.yarnpkg.com/@react-navigation/native/-/native-7.1.33.tgz#a9910b51b42373e8977cf8d76ac960077ad4a2fc"
+ integrity sha512-DpFdWGcgLajKZ1TuIvDNQsblN2QaUFWpTQaB8v7WRP9Mix8H/6TFoIrZd93pbymI2hybd6UYrD+lI408eWVcfw==
dependencies:
- "@react-navigation/core" "^7.14.0"
+ "@react-navigation/core" "^7.16.1"
escape-string-regexp "^4.0.0"
fast-deep-equal "^3.1.3"
nanoid "^3.3.11"
@@ -1956,9 +1933,9 @@
integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==
"@sinclair/typebox@^0.27.8":
- version "0.27.8"
- resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e"
- integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==
+ version "0.27.10"
+ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.10.tgz#beefe675f1853f73676aecc915b2bd2ac98c4fc6"
+ integrity sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==
"@sinonjs/commons@^3.0.0":
version "3.0.1"
@@ -2080,16 +2057,16 @@
"@types/lodash" "*"
"@types/lodash@*":
- version "4.17.23"
- resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.23.tgz#c1bb06db218acc8fc232da0447473fc2fb9d9841"
- integrity sha512-RDvF6wTulMPjrNdCoYRC8gNR880JNGT8uB+REUpC2Ns4pRqQJhGz90wh7rgdXDPpCczF3VGktDuFGVnz8zP7HA==
+ version "4.17.24"
+ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.24.tgz#4ae334fc62c0e915ca8ed8e35dcc6d4eeb29215f"
+ integrity sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==
"@types/node@*":
- version "25.0.9"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-25.0.9.tgz#81ce3579ddf67cae812a9d49c8a0ab90c82e7782"
- integrity sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw==
+ version "25.3.5"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-25.3.5.tgz#beccb5915561f7a9970ace547ad44d6cdbf39b46"
+ integrity sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==
dependencies:
- undici-types "~7.16.0"
+ undici-types "~7.18.0"
"@types/react-test-renderer@^19.1.0":
version "19.1.0"
@@ -2099,9 +2076,9 @@
"@types/react" "*"
"@types/react@*":
- version "19.2.9"
- resolved "https://registry.yarnpkg.com/@types/react/-/react-19.2.9.tgz#84ec7669742bb3e7e2e8d6a5258d95ead7764200"
- integrity sha512-Lpo8kgb/igvMIPeNV2rsYKTgaORYdO1XGVZ4Qz3akwOj0ySGYMPlQWa8BaLn0G63D1aSaAQ5ldR06wCpChQCjA==
+ version "19.2.14"
+ resolved "https://registry.yarnpkg.com/@types/react/-/react-19.2.14.tgz#39604929b5e3957e3a6fa0001dafb17c7af70bad"
+ integrity sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==
dependencies:
csstype "^3.2.2"
@@ -2130,100 +2107,100 @@
"@types/yargs-parser" "*"
"@typescript-eslint/eslint-plugin@^8.18.2":
- version "8.53.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.53.1.tgz#f6640f6f8749b71d9ab457263939e8932a3c6b46"
- integrity sha512-cFYYFZ+oQFi6hUnBTbLRXfTJiaQtYE3t4O692agbBl+2Zy+eqSKWtPjhPXJu1G7j4RLjKgeJPDdq3EqOwmX5Ag==
+ version "8.56.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.56.1.tgz#b1ce606d87221daec571e293009675992f0aae76"
+ integrity sha512-Jz9ZztpB37dNC+HU2HI28Bs9QXpzCz+y/twHOwhyrIRdbuVDxSytJNDl6z/aAKlaRIwC7y8wJdkBv7FxYGgi0A==
dependencies:
"@eslint-community/regexpp" "^4.12.2"
- "@typescript-eslint/scope-manager" "8.53.1"
- "@typescript-eslint/type-utils" "8.53.1"
- "@typescript-eslint/utils" "8.53.1"
- "@typescript-eslint/visitor-keys" "8.53.1"
+ "@typescript-eslint/scope-manager" "8.56.1"
+ "@typescript-eslint/type-utils" "8.56.1"
+ "@typescript-eslint/utils" "8.56.1"
+ "@typescript-eslint/visitor-keys" "8.56.1"
ignore "^7.0.5"
natural-compare "^1.4.0"
ts-api-utils "^2.4.0"
"@typescript-eslint/parser@^8.18.2":
- version "8.53.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.53.1.tgz#58d4a70cc2daee2becf7d4521d65ea1782d6ec68"
- integrity sha512-nm3cvFN9SqZGXjmw5bZ6cGmvJSyJPn0wU9gHAZZHDnZl2wF9PhHv78Xf06E0MaNk4zLVHL8hb2/c32XvyJOLQg==
- dependencies:
- "@typescript-eslint/scope-manager" "8.53.1"
- "@typescript-eslint/types" "8.53.1"
- "@typescript-eslint/typescript-estree" "8.53.1"
- "@typescript-eslint/visitor-keys" "8.53.1"
+ version "8.56.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.56.1.tgz#21d13b3d456ffb08614c1d68bb9a4f8d9237cdc7"
+ integrity sha512-klQbnPAAiGYFyI02+znpBRLyjL4/BrBd0nyWkdC0s/6xFLkXYQ8OoRrSkqacS1ddVxf/LDyODIKbQ5TgKAf/Fg==
+ dependencies:
+ "@typescript-eslint/scope-manager" "8.56.1"
+ "@typescript-eslint/types" "8.56.1"
+ "@typescript-eslint/typescript-estree" "8.56.1"
+ "@typescript-eslint/visitor-keys" "8.56.1"
debug "^4.4.3"
-"@typescript-eslint/project-service@8.53.1":
- version "8.53.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.53.1.tgz#4e47856a0b14a1ceb28b0294b4badef3be1e9734"
- integrity sha512-WYC4FB5Ra0xidsmlPb+1SsnaSKPmS3gsjIARwbEkHkoWloQmuzcfypljaJcR78uyLA1h8sHdWWPHSLDI+MtNog==
+"@typescript-eslint/project-service@8.56.1":
+ version "8.56.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.56.1.tgz#65c8d645f028b927bfc4928593b54e2ecd809244"
+ integrity sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ==
dependencies:
- "@typescript-eslint/tsconfig-utils" "^8.53.1"
- "@typescript-eslint/types" "^8.53.1"
+ "@typescript-eslint/tsconfig-utils" "^8.56.1"
+ "@typescript-eslint/types" "^8.56.1"
debug "^4.4.3"
-"@typescript-eslint/scope-manager@8.53.1":
- version "8.53.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.53.1.tgz#6c4b8c82cd45ae3b365afc2373636e166743a8fa"
- integrity sha512-Lu23yw1uJMFY8cUeq7JlrizAgeQvWugNQzJp8C3x8Eo5Jw5Q2ykMdiiTB9vBVOOUBysMzmRRmUfwFrZuI2C4SQ==
+"@typescript-eslint/scope-manager@8.56.1":
+ version "8.56.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.56.1.tgz#254df93b5789a871351335dd23e20bc164060f24"
+ integrity sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==
dependencies:
- "@typescript-eslint/types" "8.53.1"
- "@typescript-eslint/visitor-keys" "8.53.1"
+ "@typescript-eslint/types" "8.56.1"
+ "@typescript-eslint/visitor-keys" "8.56.1"
-"@typescript-eslint/tsconfig-utils@8.53.1", "@typescript-eslint/tsconfig-utils@^8.53.1":
- version "8.53.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.53.1.tgz#efe80b8d019cd49e5a1cf46c2eb0cd2733076424"
- integrity sha512-qfvLXS6F6b1y43pnf0pPbXJ+YoXIC7HKg0UGZ27uMIemKMKA6XH2DTxsEDdpdN29D+vHV07x/pnlPNVLhdhWiA==
+"@typescript-eslint/tsconfig-utils@8.56.1", "@typescript-eslint/tsconfig-utils@^8.56.1":
+ version "8.56.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.56.1.tgz#1afa830b0fada5865ddcabdc993b790114a879b7"
+ integrity sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ==
-"@typescript-eslint/type-utils@8.53.1":
- version "8.53.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.53.1.tgz#95de2651a96d580bf5c6c6089ddd694284d558ad"
- integrity sha512-MOrdtNvyhy0rHyv0ENzub1d4wQYKb2NmIqG7qEqPWFW7Mpy2jzFC3pQ2yKDvirZB7jypm5uGjF2Qqs6OIqu47w==
+"@typescript-eslint/type-utils@8.56.1":
+ version "8.56.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.56.1.tgz#7a6c4fabf225d674644931e004302cbbdd2f2e24"
+ integrity sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg==
dependencies:
- "@typescript-eslint/types" "8.53.1"
- "@typescript-eslint/typescript-estree" "8.53.1"
- "@typescript-eslint/utils" "8.53.1"
+ "@typescript-eslint/types" "8.56.1"
+ "@typescript-eslint/typescript-estree" "8.56.1"
+ "@typescript-eslint/utils" "8.56.1"
debug "^4.4.3"
ts-api-utils "^2.4.0"
-"@typescript-eslint/types@8.53.1", "@typescript-eslint/types@^8.29.1", "@typescript-eslint/types@^8.53.1":
- version "8.53.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.53.1.tgz#101f203f0807a63216cceceedb815fabe21d5793"
- integrity sha512-jr/swrr2aRmUAUjW5/zQHbMaui//vQlsZcJKijZf3M26bnmLj8LyZUpj8/Rd6uzaek06OWsqdofN/Thenm5O8A==
+"@typescript-eslint/types@8.56.1", "@typescript-eslint/types@^8.29.1", "@typescript-eslint/types@^8.56.1":
+ version "8.56.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.56.1.tgz#975e5942bf54895291337c91b9191f6eb0632ab9"
+ integrity sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==
-"@typescript-eslint/typescript-estree@8.53.1":
- version "8.53.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.53.1.tgz#b6dce2303c9e27e95b8dcd8c325868fff53e488f"
- integrity sha512-RGlVipGhQAG4GxV1s34O91cxQ/vWiHJTDHbXRr0li2q/BGg3RR/7NM8QDWgkEgrwQYCvmJV9ichIwyoKCQ+DTg==
+"@typescript-eslint/typescript-estree@8.56.1":
+ version "8.56.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.1.tgz#3b9e57d8129a860c50864c42188f761bdef3eab0"
+ integrity sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==
dependencies:
- "@typescript-eslint/project-service" "8.53.1"
- "@typescript-eslint/tsconfig-utils" "8.53.1"
- "@typescript-eslint/types" "8.53.1"
- "@typescript-eslint/visitor-keys" "8.53.1"
+ "@typescript-eslint/project-service" "8.56.1"
+ "@typescript-eslint/tsconfig-utils" "8.56.1"
+ "@typescript-eslint/types" "8.56.1"
+ "@typescript-eslint/visitor-keys" "8.56.1"
debug "^4.4.3"
- minimatch "^9.0.5"
+ minimatch "^10.2.2"
semver "^7.7.3"
tinyglobby "^0.2.15"
ts-api-utils "^2.4.0"
-"@typescript-eslint/utils@8.53.1", "@typescript-eslint/utils@^8.29.1":
- version "8.53.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.53.1.tgz#81fe6c343de288701b774f4d078382f567e6edaa"
- integrity sha512-c4bMvGVWW4hv6JmDUEG7fSYlWOl3II2I4ylt0NM+seinYQlZMQIaKaXIIVJWt9Ofh6whrpM+EdDQXKXjNovvrg==
+"@typescript-eslint/utils@8.56.1", "@typescript-eslint/utils@^8.29.1":
+ version "8.56.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.56.1.tgz#5a86acaf9f1b4c4a85a42effb217f73059f6deb7"
+ integrity sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==
dependencies:
"@eslint-community/eslint-utils" "^4.9.1"
- "@typescript-eslint/scope-manager" "8.53.1"
- "@typescript-eslint/types" "8.53.1"
- "@typescript-eslint/typescript-estree" "8.53.1"
+ "@typescript-eslint/scope-manager" "8.56.1"
+ "@typescript-eslint/types" "8.56.1"
+ "@typescript-eslint/typescript-estree" "8.56.1"
-"@typescript-eslint/visitor-keys@8.53.1":
- version "8.53.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.53.1.tgz#405f04959be22b9be364939af8ac19c3649b6eb7"
- integrity sha512-oy+wV7xDKFPRyNggmXuZQSBzvoLnpmJs+GhzRhPjrxl2b/jIlyjVokzm47CZCDUdXKr2zd7ZLodPfOBpOPyPlg==
+"@typescript-eslint/visitor-keys@8.56.1":
+ version "8.56.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.1.tgz#50e03475c33a42d123dc99e63acf1841c0231f87"
+ integrity sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==
dependencies:
- "@typescript-eslint/types" "8.53.1"
- eslint-visitor-keys "^4.2.1"
+ "@typescript-eslint/types" "8.56.1"
+ eslint-visitor-keys "^5.0.0"
"@ungap/structured-clone@^1.3.0":
version "1.3.0"
@@ -2363,25 +2340,33 @@ accepts@^1.3.7, accepts@^1.3.8:
mime-types "~2.1.34"
negotiator "0.6.3"
+accepts@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/accepts/-/accepts-2.0.0.tgz#bbcf4ba5075467f3f2131eab3cffc73c2f5d7895"
+ integrity sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==
+ dependencies:
+ mime-types "^3.0.0"
+ negotiator "^1.0.0"
+
acorn-jsx@^5.3.2:
version "5.3.2"
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
acorn@^8.15.0:
- version "8.15.0"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816"
- integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==
+ version "8.16.0"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.16.0.tgz#4ce79c89be40afe7afe8f3adb902a1f1ce9ac08a"
+ integrity sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==
agent-base@^7.1.2:
version "7.1.4"
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.4.tgz#e3cd76d4c548ee895d3c3fd8dc1f6c5b9032e7a8"
integrity sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==
-ajv@^6.12.4:
- version "6.12.6"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
- integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
+ajv@^6.14.0:
+ version "6.14.0"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.14.0.tgz#fd067713e228210636ebb08c60bd3765d6dbe73a"
+ integrity sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==
dependencies:
fast-deep-equal "^3.1.1"
fast-json-stable-stringify "^2.0.0"
@@ -2389,9 +2374,9 @@ ajv@^6.12.4:
uri-js "^4.2.2"
ajv@^8.11.0:
- version "8.17.1"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6"
- integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==
+ version "8.18.0"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.18.0.tgz#8864186b6738d003eb3a933172bb3833e10cefbc"
+ integrity sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==
dependencies:
fast-deep-equal "^3.1.3"
fast-uri "^3.0.1"
@@ -2635,12 +2620,12 @@ babel-plugin-module-resolver@^5.0.2:
resolve "^1.22.8"
babel-plugin-polyfill-corejs2@^0.4.14:
- version "0.4.14"
- resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz#8101b82b769c568835611542488d463395c2ef8f"
- integrity sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==
+ version "0.4.16"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.16.tgz#a1321145f6cde738b0a412616b6bcf77f143ab36"
+ integrity sha512-xaVwwSfebXf0ooE11BJovZYKhFjIvQo7TsyVpETuIeH2JHv0k/T6Y5j22pPTvqYqmpkxdlPAJlyJ0tfOJAoMxw==
dependencies:
- "@babel/compat-data" "^7.27.7"
- "@babel/helper-define-polyfill-provider" "^0.6.5"
+ "@babel/compat-data" "^7.28.6"
+ "@babel/helper-define-polyfill-provider" "^0.6.7"
semver "^6.3.1"
babel-plugin-polyfill-corejs3@^0.13.0:
@@ -2652,11 +2637,11 @@ babel-plugin-polyfill-corejs3@^0.13.0:
core-js-compat "^3.43.0"
babel-plugin-polyfill-regenerator@^0.6.5:
- version "0.6.5"
- resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz#32752e38ab6f6767b92650347bf26a31b16ae8c5"
- integrity sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==
+ version "0.6.7"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.7.tgz#eca723d67ef87b798881ad00546db1b6dd72e1ef"
+ integrity sha512-OTYbUlSwXhNgr4g6efMZgsO8//jA61P7ZbRX3iTT53VON8l+WQS8IAUEVo4a4cWknrg2W8Cj4gQhRYNCJ8GkAA==
dependencies:
- "@babel/helper-define-polyfill-provider" "^0.6.5"
+ "@babel/helper-define-polyfill-provider" "^0.6.7"
babel-plugin-react-compiler@^1.0.0:
version "1.0.0"
@@ -2705,10 +2690,10 @@ babel-preset-current-node-syntax@^1.0.0:
"@babel/plugin-syntax-private-property-in-object" "^7.14.5"
"@babel/plugin-syntax-top-level-await" "^7.14.5"
-babel-preset-expo@~54.0.9:
- version "54.0.9"
- resolved "https://registry.yarnpkg.com/babel-preset-expo/-/babel-preset-expo-54.0.9.tgz#88af355f08dc49b4b54ac559c02ce8890ab08930"
- integrity sha512-8J6hRdgEC2eJobjoft6mKJ294cLxmi3khCUy2JJQp4htOYYkllSLUq6vudWJkTJiIuGdVR4bR6xuz2EvJLWHNg==
+babel-preset-expo@~54.0.10:
+ version "54.0.10"
+ resolved "https://registry.yarnpkg.com/babel-preset-expo/-/babel-preset-expo-54.0.10.tgz#3b70f4af3a5f65f945d7957ef511ee016e8f2fd6"
+ integrity sha512-wTt7POavLFypLcPW/uC5v8y+mtQKDJiyGLzYCjqr9tx0Qc3vCXcDKk1iCFIj/++Iy5CWhhTflEa7VvVPNWeCfw==
dependencies:
"@babel/helper-module-imports" "^7.25.9"
"@babel/plugin-proposal-decorators" "^7.12.9"
@@ -2746,15 +2731,20 @@ balanced-match@^1.0.0:
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
+balanced-match@^4.0.2:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-4.0.4.tgz#bfb10662feed8196a2c62e7c68e17720c274179a"
+ integrity sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==
+
base64-js@^1.2.3, base64-js@^1.3.1, base64-js@^1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
baseline-browser-mapping@^2.9.0:
- version "2.9.16"
- resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.9.16.tgz#da1e893fd13aa6e8b6349b64b06399a0644c14b5"
- integrity sha512-KeUZdBuxngy825i8xvzaK1Ncnkx0tBmb3k8DkEuqjKRkmtvNTjey2ZsNeh8Dw4lfKvbCOu9oeNx2TKm2vHqcRw==
+ version "2.10.0"
+ resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.0.tgz#5b09935025bf8a80e29130251e337c6a7fc8cbb9"
+ integrity sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==
better-opn@~3.0.2:
version "3.0.2"
@@ -2768,6 +2758,11 @@ big-integer@1.6.x:
resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.52.tgz#60a887f3047614a8e1bffe5d7173490a97dc8c85"
integrity sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==
+boolbase@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
+ integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==
+
bplist-creator@0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/bplist-creator/-/bplist-creator-0.1.0.tgz#018a2d1b587f769e379ef5519103730f8963ba1e"
@@ -2797,13 +2792,20 @@ brace-expansion@^1.1.7:
balanced-match "^1.0.0"
concat-map "0.0.1"
-brace-expansion@^2.0.1:
+brace-expansion@^2.0.1, brace-expansion@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.2.tgz#54fc53237a613d854c7bd37463aad17df87214e7"
integrity sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==
dependencies:
balanced-match "^1.0.0"
+brace-expansion@^5.0.2:
+ version "5.0.4"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-5.0.4.tgz#614daaecd0a688f660bbbc909a8748c3d80d4336"
+ integrity sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==
+ dependencies:
+ balanced-match "^4.0.2"
+
braces@^3.0.3:
version "3.0.3"
resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789"
@@ -2811,7 +2813,7 @@ braces@^3.0.3:
dependencies:
fill-range "^7.1.1"
-browserslist@^4.24.0, browserslist@^4.25.0, browserslist@^4.28.0:
+browserslist@^4.24.0, browserslist@^4.25.0, browserslist@^4.28.1:
version "4.28.1"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.1.tgz#7f534594628c53c63101079e27e40de490456a95"
integrity sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==
@@ -2889,9 +2891,9 @@ camelcase@^6.2.0:
integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
caniuse-lite@^1.0.30001759:
- version "1.0.30001765"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001765.tgz#4a78d8a797fd4124ebaab2043df942eb091648ee"
- integrity sha512-LWcNtSyZrakjECqmpP4qdg0MMGdN368D7X8XvvAqOcqMv0RxnlqVKZl2V6/mBR68oYMxOZPLw/gO7DuisMHUvQ==
+ version "1.0.30001777"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001777.tgz#028f21e4b2718d138b55e692583e6810ccf60691"
+ integrity sha512-tmN+fJxroPndC74efCdp12j+0rk0RHwV5Jwa1zWaFVyw2ZxAuPeG8ZgWC3Wz7uSjT3qMRQ5XHZ4COgQmsCMJAQ==
chalk@^2.0.1, chalk@^2.4.2:
version "2.4.2"
@@ -3107,11 +3109,11 @@ convert-source-map@^2.0.0:
integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==
core-js-compat@^3.43.0:
- version "3.47.0"
- resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.47.0.tgz#698224bbdbb6f2e3f39decdda4147b161e3772a3"
- integrity sha512-IGfuznZ/n7Kp9+nypamBhvwdwLsW6KC8IOaURw2doAK5e98AG3acVLdh0woOnEqCfUtS+Vu882JE4k/DAm3ItQ==
+ version "3.48.0"
+ resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.48.0.tgz#7efbe1fc1cbad44008190462217cc5558adaeaa6"
+ integrity sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==
dependencies:
- browserslist "^4.28.0"
+ browserslist "^4.28.1"
create-jest@^29.7.0:
version "29.7.0"
@@ -3142,11 +3144,6 @@ cross-spawn@^7.0.3, cross-spawn@^7.0.6:
shebang-command "^2.0.0"
which "^2.0.1"
-crypto-random-string@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5"
- integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==
-
css-in-js-utils@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz#640ae6a33646d401fc720c54fc61c42cd76ae2bb"
@@ -3154,6 +3151,30 @@ css-in-js-utils@^3.1.0:
dependencies:
hyphenate-style-name "^1.0.3"
+css-select@^5.1.0:
+ version "5.2.2"
+ resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.2.2.tgz#01b6e8d163637bb2dd6c982ca4ed65863682786e"
+ integrity sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==
+ dependencies:
+ boolbase "^1.0.0"
+ css-what "^6.1.0"
+ domhandler "^5.0.2"
+ domutils "^3.0.1"
+ nth-check "^2.0.1"
+
+css-tree@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d"
+ integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==
+ dependencies:
+ mdn-data "2.0.14"
+ source-map "^0.6.1"
+
+css-what@^6.1.0:
+ version "6.2.2"
+ resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.2.2.tgz#cdcc8f9b6977719fdfbd1de7aec24abf756b9dea"
+ integrity sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==
+
csstype@^3.0.2, csstype@^3.2.2:
version "3.2.3"
resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.2.3.tgz#ec48c0f3e993e50648c86da559e2610995cf989a"
@@ -3198,7 +3219,7 @@ debug@2.6.9, debug@^2.6.9:
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.5, debug@^4.4.0, debug@^4.4.1, debug@^4.4.3:
+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.5, debug@^4.4.0, debug@^4.4.3:
version "4.4.3"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a"
integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==
@@ -3218,9 +3239,9 @@ decode-uri-component@^0.2.2:
integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==
dedent@^1.0.0:
- version "1.7.1"
- resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.7.1.tgz#364661eea3d73f3faba7089214420ec2f8f13e15"
- integrity sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg==
+ version "1.7.2"
+ resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.7.2.tgz#34e2264ab538301e27cf7b07bf2369c19baa8dd9"
+ integrity sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==
deep-extend@^0.6.0:
version "0.6.0"
@@ -3309,6 +3330,36 @@ doctrine@^2.1.0:
dependencies:
esutils "^2.0.2"
+dom-serializer@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53"
+ integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==
+ dependencies:
+ domelementtype "^2.3.0"
+ domhandler "^5.0.2"
+ entities "^4.2.0"
+
+domelementtype@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d"
+ integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==
+
+domhandler@^5.0.2, domhandler@^5.0.3:
+ version "5.0.3"
+ resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31"
+ integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==
+ dependencies:
+ domelementtype "^2.3.0"
+
+domutils@^3.0.1:
+ version "3.2.2"
+ resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.2.2.tgz#edbfe2b668b0c1d97c24baf0f1062b132221bc78"
+ integrity sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==
+ dependencies:
+ dom-serializer "^2.0.0"
+ domelementtype "^2.3.0"
+ domhandler "^5.0.3"
+
dotenv-expand@~11.0.6:
version "11.0.7"
resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-11.0.7.tgz#af695aea007d6fdc84c86cd8d0ad7beb40a0bd08"
@@ -3341,15 +3392,20 @@ ee-first@1.1.1:
integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
electron-to-chromium@^1.5.263:
- version "1.5.267"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz#5d84f2df8cdb6bfe7e873706bb21bd4bfb574dc7"
- integrity sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==
+ version "1.5.307"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.307.tgz#09f8973100c39fb0d003b890393cd1d58932b1c8"
+ integrity sha512-5z3uFKBWjiNR44nFcYdkcXjKMbg5KXNdciu7mhTPo9tB7NbqSNP2sSnGR+fqknZSCwKkBN+oxiiajWs4dT6ORg==
emittery@^0.13.1:
version "0.13.1"
resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad"
integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==
+emoji-datasource@^15.1.2:
+ version "15.1.2"
+ resolved "https://registry.yarnpkg.com/emoji-datasource/-/emoji-datasource-15.1.2.tgz#afec422adadeafbf59c4e346fe24a891900e257c"
+ integrity sha512-tXAqGsrDVhgCRpFePtaD9P4Z8Ro2SUQSL/4MIJBG0SxqQJaMslEbin8J53OaFwEBu6e7JxFaIF6s4mw9+8acAQ==
+
emoji-regex@^8.0.0:
version "8.0.0"
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
@@ -3365,6 +3421,11 @@ encodeurl@~2.0.0:
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58"
integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==
+entities@^4.2.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48"
+ integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
+
env-editor@^0.4.1:
version "0.4.2"
resolved "https://registry.yarnpkg.com/env-editor/-/env-editor-0.4.2.tgz#4e76568d0bd8f5c2b6d314a9412c8fe9aa3ae861"
@@ -3658,24 +3719,29 @@ eslint-visitor-keys@^4.2.1:
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz#4cfea60fe7dd0ad8e816e1ed026c1d5251b512c1"
integrity sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==
+eslint-visitor-keys@^5.0.0:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz#9e3c9489697824d2d4ce3a8ad12628f91e9f59be"
+ integrity sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==
+
eslint@^9.24.0, eslint@^9.39.2:
- version "9.39.2"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.39.2.tgz#cb60e6d16ab234c0f8369a3fe7cc87967faf4b6c"
- integrity sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==
+ version "9.39.4"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.39.4.tgz#855da1b2e2ad66dc5991195f35e262bcec8117b5"
+ integrity sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==
dependencies:
"@eslint-community/eslint-utils" "^4.8.0"
"@eslint-community/regexpp" "^4.12.1"
- "@eslint/config-array" "^0.21.1"
+ "@eslint/config-array" "^0.21.2"
"@eslint/config-helpers" "^0.4.2"
"@eslint/core" "^0.17.0"
- "@eslint/eslintrc" "^3.3.1"
- "@eslint/js" "9.39.2"
+ "@eslint/eslintrc" "^3.3.5"
+ "@eslint/js" "9.39.4"
"@eslint/plugin-kit" "^0.4.1"
"@humanfs/node" "^0.16.6"
"@humanwhocodes/module-importer" "^1.0.1"
"@humanwhocodes/retry" "^0.4.2"
"@types/estree" "^1.0.6"
- ajv "^6.12.4"
+ ajv "^6.14.0"
chalk "^4.0.0"
cross-spawn "^7.0.6"
debug "^4.3.2"
@@ -3694,7 +3760,7 @@ eslint@^9.24.0, eslint@^9.39.2:
is-glob "^4.0.0"
json-stable-stringify-without-jsonify "^1.0.1"
lodash.merge "^4.6.2"
- minimatch "^3.1.2"
+ minimatch "^3.1.5"
natural-compare "^1.4.0"
optionator "^0.9.3"
@@ -3746,11 +3812,6 @@ event-target-shim@^5.0.0:
resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789"
integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==
-exec-async@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/exec-async/-/exec-async-2.2.0.tgz#c7c5ad2eef3478d38390c6dd3acfe8af0efc8301"
- integrity sha512-87OpwcEiMia/DeiKFzaQNBNFeN3XkkpYIh9FyOqq5mS2oKv3CBE67PXoEKcr6nodWdXNogTiQ0jE2NGuoffXPw==
-
execa@^5.0.0:
version "5.1.1"
resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd"
@@ -3816,10 +3877,10 @@ expo-file-system@~19.0.21:
resolved "https://registry.yarnpkg.com/expo-file-system/-/expo-file-system-19.0.21.tgz#e96a68107fb629cf0dd1906fe7b46b566ff13e10"
integrity sha512-s3DlrDdiscBHtab/6W1osrjGL+C2bvoInPJD7sOwmxfJ5Woynv2oc+Fz1/xVXaE/V7HE/+xrHC/H45tu6lZzzg==
-expo-font@~14.0.10:
- version "14.0.10"
- resolved "https://registry.yarnpkg.com/expo-font/-/expo-font-14.0.10.tgz#33fb9f6dc5661729192a6bc8cd6f08bd1a9097cc"
- integrity sha512-UqyNaaLKRpj4pKAP4HZSLnuDQqueaO5tB1c/NWu5vh1/LF9ulItyyg2kF/IpeOp0DeOLk0GY0HrIXaKUMrwB+Q==
+expo-font@~14.0.10, expo-font@~14.0.11:
+ version "14.0.11"
+ resolved "https://registry.yarnpkg.com/expo-font/-/expo-font-14.0.11.tgz#198743d17332520545107df026d8a261e6b2732f"
+ integrity sha512-ga0q61ny4s/kr4k8JX9hVH69exVSIfcIc19+qZ7gt71Mqtm7xy2c6kwsPTCyhBW2Ro5yXTT8EaZOpuRi35rHbg==
dependencies:
fontfaceobserver "^2.1.0"
@@ -3882,9 +3943,9 @@ expo-modules-core@3.0.29:
invariant "^2.2.4"
expo-router@~6.0.21:
- version "6.0.21"
- resolved "https://registry.yarnpkg.com/expo-router/-/expo-router-6.0.21.tgz#5920269224c7817f23a55df43ea01d1f7cba9172"
- integrity sha512-wjTUjrnWj6gRYjaYl1kYfcRnNE4ZAQ0kz0+sQf6/mzBd/OU6pnOdD7WrdAW3pTTpm52Q8sMoeX98tNQEddg2uA==
+ version "6.0.23"
+ resolved "https://registry.yarnpkg.com/expo-router/-/expo-router-6.0.23.tgz#480fbcb4901fd692f9d11762f33894280dcbd75a"
+ integrity sha512-qCxVAiCrCyu0npky6azEZ6dJDMt77OmCzEbpF6RbUTlfkaCA417LvY14SBkk0xyGruSxy/7pvJOI6tuThaUVCA==
dependencies:
"@expo/metro-runtime" "^6.1.2"
"@expo/schema-utils" "^0.1.8"
@@ -3950,25 +4011,25 @@ expo-web-browser@~15.0.10:
integrity sha512-fvDhW4bhmXAeWFNFiInmsGCK83PAqAcQaFyp/3pE/jbdKmFKoRCWr46uZGIfN4msLK/OODhaQ/+US7GSJNDHJg==
expo@~54.0.31:
- version "54.0.31"
- resolved "https://registry.yarnpkg.com/expo/-/expo-54.0.31.tgz#c9b88d7154039bb7165abc21d73aec5e5fde6d71"
- integrity sha512-kQ3RDqA/a59I7y+oqQGyrPbbYlgPMUdKBOgvFLpoHbD2bCM+F75i4N0mUijy7dG5F/CUCu2qHmGGUCXBbMDkCg==
+ version "54.0.33"
+ resolved "https://registry.yarnpkg.com/expo/-/expo-54.0.33.tgz#f7d572857323f5a8250a9afe245a487d2ee2735f"
+ integrity sha512-3yOEfAKqo+gqHcV8vKcnq0uA5zxlohnhA3fu4G43likN8ct5ZZ3LjAh9wDdKteEkoad3tFPvwxmXW711S5OHUw==
dependencies:
"@babel/runtime" "^7.20.0"
- "@expo/cli" "54.0.21"
+ "@expo/cli" "54.0.23"
"@expo/config" "~12.0.13"
"@expo/config-plugins" "~54.0.4"
"@expo/devtools" "0.1.8"
"@expo/fingerprint" "0.15.4"
"@expo/metro" "~54.2.0"
- "@expo/metro-config" "54.0.13"
+ "@expo/metro-config" "54.0.14"
"@expo/vector-icons" "^15.0.3"
"@ungap/structured-clone" "^1.3.0"
- babel-preset-expo "~54.0.9"
+ babel-preset-expo "~54.0.10"
expo-asset "~12.0.12"
expo-constants "~18.0.13"
expo-file-system "~19.0.21"
- expo-font "~14.0.10"
+ expo-font "~14.0.11"
expo-keep-awake "~15.0.8"
expo-modules-autolinking "3.0.24"
expo-modules-core "3.0.29"
@@ -4102,9 +4163,9 @@ flat-cache@^4.0.0:
keyv "^4.5.4"
flatted@^3.2.9:
- version "3.3.3"
- resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.3.tgz#67c8fad95454a7c7abebf74bb78ee74a44023358"
- integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==
+ version "3.3.4"
+ resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.4.tgz#0986e681008f0f13f58e18656c47967682db5ff6"
+ integrity sha512-3+mMldrTAPdta5kjX2G2J7iX4zxtnwpdA8Tr2ZSjkyPSanvbZAcy6flmtnXbEybHrDcU9641lxrMfFuUxVz9vA==
flow-enums-runtime@^0.0.6:
version "0.0.6"
@@ -4229,9 +4290,9 @@ get-symbol-description@^1.1.0:
get-intrinsic "^1.2.6"
get-tsconfig@^4.10.0:
- version "4.13.0"
- resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.13.0.tgz#fcdd991e6d22ab9a600f00e91c318707a5d9a0d7"
- integrity sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==
+ version "4.13.6"
+ resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.13.6.tgz#2fbfda558a98a691a798f123afd95915badce876"
+ integrity sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==
dependencies:
resolve-pkg-maps "^1.0.0"
@@ -4248,13 +4309,13 @@ glob-parent@^6.0.2:
is-glob "^4.0.3"
glob@^13.0.0:
- version "13.0.0"
- resolved "https://registry.yarnpkg.com/glob/-/glob-13.0.0.tgz#9d9233a4a274fc28ef7adce5508b7ef6237a1be3"
- integrity sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==
+ version "13.0.6"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-13.0.6.tgz#078666566a425147ccacfbd2e332deb66a2be71d"
+ integrity sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==
dependencies:
- minimatch "^10.1.1"
- minipass "^7.1.2"
- path-scurry "^2.0.0"
+ minimatch "^10.2.2"
+ minipass "^7.1.3"
+ path-scurry "^2.0.2"
glob@^7.1.1, glob@^7.1.3, glob@^7.1.4:
version "7.2.3"
@@ -4278,13 +4339,6 @@ glob@^9.3.3:
minipass "^4.2.4"
path-scurry "^1.6.1"
-global-dirs@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445"
- integrity sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==
- dependencies:
- ini "^1.3.4"
-
globals@^14.0.0:
version "14.0.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e"
@@ -4313,6 +4367,11 @@ graceful-fs@^4.2.4, graceful-fs@^4.2.9:
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==
+grapheme-splitter@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e"
+ integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==
+
has-bigints@^1.0.2:
version "1.1.0"
resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.1.0.tgz#28607e965ac967e03cd2a2c70a2636a1edad49fe"
@@ -4371,6 +4430,11 @@ hermes-estree@0.32.0:
resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.32.0.tgz#bb7da6613ab8e67e334a1854ea1e209f487d307b"
integrity sha512-KWn3BqnlDOl97Xe1Yviur6NbgIZ+IP+UVSpshlZWkq+EtoHg6/cwiDj/osP9PCEgFE15KBm1O55JRwbMEm5ejQ==
+hermes-estree@0.33.3:
+ version "0.33.3"
+ resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.33.3.tgz#6d6b593d4b471119772c82bdb0212dfadabb6f17"
+ integrity sha512-6kzYZHCk8Fy1Uc+t3HGYyJn3OL4aeqKLTyina4UFtWl8I0kSL7OmKThaiX+Uh2f8nGw3mo4Ifxg0M5Zk3/Oeqg==
+
hermes-parser@0.29.1, hermes-parser@^0.29.1:
version "0.29.1"
resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.29.1.tgz#436b24bcd7bb1e71f92a04c396ccc0716c288d56"
@@ -4385,6 +4449,13 @@ hermes-parser@0.32.0:
dependencies:
hermes-estree "0.32.0"
+hermes-parser@0.33.3:
+ version "0.33.3"
+ resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.33.3.tgz#da50ababb7a5ab636d339e7b2f6e3848e217e09d"
+ integrity sha512-Yg3HgaG4CqgyowtYjX/FsnPAuZdHOqSMtnbpylbptsQ9nwwSKsy6uRWcGO5RK0EqiX12q8HvDWKgeAVajRO5DA==
+ dependencies:
+ hermes-estree "0.33.3"
+
hoist-non-react-statics@^3.3.0:
version "3.3.2"
resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"
@@ -4489,7 +4560,7 @@ inherits@2, inherits@~2.0.3, inherits@~2.0.4:
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
-ini@^1.3.4, ini@~1.3.0:
+ini@~1.3.0:
version "1.3.8"
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
@@ -4666,6 +4737,11 @@ is-number@^7.0.0:
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+is-plain-obj@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287"
+ integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==
+
is-regex@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.2.1.tgz#76d70a3ed10ef9be48eb577887d74205bf0cad22"
@@ -5290,9 +5366,9 @@ levn@^0.4.1:
type-check "~0.4.0"
libphonenumber-js@^1.12.34:
- version "1.12.34"
- resolved "https://registry.yarnpkg.com/libphonenumber-js/-/libphonenumber-js-1.12.34.tgz#20ed9da39e930e98eff4b6e24a8d8480303658af"
- integrity sha512-v/Ip8k8eYdp7bINpzqDh46V/PaQ8sK+qi97nMQgjZzFlb166YFqlR/HVI+MzsI9JqcyyVWCOipmmretiaSyQyw==
+ version "1.12.38"
+ resolved "https://registry.yarnpkg.com/libphonenumber-js/-/libphonenumber-js-1.12.38.tgz#51e70b23cc1f5502e15c56b8ff09c71a91b86c66"
+ integrity sha512-vwzxmasAy9hZigxtqTbFEwp8ZdZ975TiqVDwj5bKx5sR+zi5ucUQy9mbVTkKM9GzqdLdxux/hTw2nmN5J7POMA==
lighthouse-logger@^1.0.0:
version "1.4.2"
@@ -5302,79 +5378,79 @@ lighthouse-logger@^1.0.0:
debug "^2.6.9"
marky "^1.2.2"
-lightningcss-android-arm64@1.31.0:
- version "1.31.0"
- resolved "https://registry.yarnpkg.com/lightningcss-android-arm64/-/lightningcss-android-arm64-1.31.0.tgz#9da18c0ba27da5de4c65da9f85df03b852e7c2e3"
- integrity sha512-qRdhuBXBgGfO3NZ37l/lA1qqjqptBQoa37YiMDeMRpJpv/+0CGKtL4o5+VUFaHzZb9+hS/DOg3XNff3YmwY2ug==
-
-lightningcss-darwin-arm64@1.31.0:
- version "1.31.0"
- resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.31.0.tgz#bb6e3172e5a4e77196ce9303122e7509274c9bfb"
- integrity sha512-ctMERKCPJHgEhkCUvcCT5Z1wB+pCyFO+XskTNFB3uTrE9i3LzQXvrlm2PSuYhOYSExrzfmfD/HVyfqZYnfpjvQ==
-
-lightningcss-darwin-x64@1.31.0:
- version "1.31.0"
- resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.31.0.tgz#adfbef625a8013dfd9a07c995175b26e699cb85c"
- integrity sha512-7+8dwpz4qj/IiKxSs210WKWoJg59npBxvEXrpuxAkfZDPSgXiPcNZfaL9HtcaRntd7DbzVSI5SHMsmlsl+NZgA==
-
-lightningcss-freebsd-x64@1.31.0:
- version "1.31.0"
- resolved "https://registry.yarnpkg.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.31.0.tgz#cf537daf55900ecbd3f8f7e3a6ca9460297a2105"
- integrity sha512-HZdu0reyMXO0TzJnK3D37dxgijjJsZt9muQRi+df/sr6WnkSZJKHfOufm0amWz+LiWg9X3H+XIBW24s/y3itmQ==
-
-lightningcss-linux-arm-gnueabihf@1.31.0:
- version "1.31.0"
- resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.31.0.tgz#7655be556039d7d1713acde222d12a03bf7f97a7"
- integrity sha512-pqp0rGHc9rebDT7vVtu92JqU6gP5zm19m+zCqvHHMI+cEQrCjbNlMbPqn9UEfPYfRltL4pti9MJQ62558nVHnw==
-
-lightningcss-linux-arm64-gnu@1.31.0:
- version "1.31.0"
- resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.31.0.tgz#6562e17aaf79dce87690e29cbf541701f6658913"
- integrity sha512-EpAQTq6TXL+200bDNMzhbFpqAJsto01R//xuE8yAWN0l4wmJhmS1r/FxoudIUM9PxHMPEiWeLw+1thdF5ZPg7Q==
-
-lightningcss-linux-arm64-musl@1.31.0:
- version "1.31.0"
- resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.31.0.tgz#ee90571005040dc2d26dad93f001387a81f2ecc4"
- integrity sha512-6tuU37nXStA3kxNnjC49z1tPFEoviC9ZLyB34O3X1/VTLXdZX2vmPZ+45XesagvlgoeJQ9r9XVSovUZny41AQA==
-
-lightningcss-linux-x64-gnu@1.31.0:
- version "1.31.0"
- resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.31.0.tgz#64e6079f7e765dd53285ea5fa44445b9bc662fea"
- integrity sha512-enNePbgDKmJybVz90/8dAGTOulvpn0IwxamHHnIj32gmdbuSPJ9mk+Nob4UmiqLMAdHlH+0c+lpsZkv4TSxi3w==
-
-lightningcss-linux-x64-musl@1.31.0:
- version "1.31.0"
- resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.31.0.tgz#e48bb0f289fe25ad5818b99a2fdbada63729b36d"
- integrity sha512-EM4jGT+V+PdFkcrIB5m5yiSzfV7z43k0pOtUmODhFSbuay5JvbVChK1uoaMmwPTKGWatwSRbiu90BUzU262B9g==
-
-lightningcss-win32-arm64-msvc@1.31.0:
- version "1.31.0"
- resolved "https://registry.yarnpkg.com/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.31.0.tgz#4feed2c33c897054f94d9bd65534fe83ed36a5fc"
- integrity sha512-IGvE0eCsWrYWerlkXFitANJ2vdkzs4EVCm1sEttanqVc4lqdRKyZ7ZIapBfo5OckE+zuq/JNaIkbWHdYDpOblQ==
-
-lightningcss-win32-x64-msvc@1.31.0:
- version "1.31.0"
- resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.31.0.tgz#3045c297a7e597454c9f84c48a600e48ce056e71"
- integrity sha512-7V6CPCLNO1Pv5gPPvXWst7V8cvZjbRKgwht1qd4/OH7yacV/kMV5VDq/RDnmdQpXUTnn4ye+vZkU8REXU46iZA==
+lightningcss-android-arm64@1.31.1:
+ version "1.31.1"
+ resolved "https://registry.yarnpkg.com/lightningcss-android-arm64/-/lightningcss-android-arm64-1.31.1.tgz#609ff48332adff452a8157a7c2842fd692a8eac4"
+ integrity sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg==
+
+lightningcss-darwin-arm64@1.31.1:
+ version "1.31.1"
+ resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.31.1.tgz#a13da040a7929582bab3ace9a67bdc146e99fc2d"
+ integrity sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg==
+
+lightningcss-darwin-x64@1.31.1:
+ version "1.31.1"
+ resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.31.1.tgz#f7482c311273571ec0c2bd8277c1f5f6e90e03a4"
+ integrity sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA==
+
+lightningcss-freebsd-x64@1.31.1:
+ version "1.31.1"
+ resolved "https://registry.yarnpkg.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.31.1.tgz#91df1bb290f1cb7bb2af832d7d0d8809225e0124"
+ integrity sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A==
+
+lightningcss-linux-arm-gnueabihf@1.31.1:
+ version "1.31.1"
+ resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.31.1.tgz#c3cad5ae8b70045f21600dc95295ab6166acf57e"
+ integrity sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g==
+
+lightningcss-linux-arm64-gnu@1.31.1:
+ version "1.31.1"
+ resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.31.1.tgz#a5c4f6a5ac77447093f61b209c0bd7fef1f0a3e3"
+ integrity sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==
+
+lightningcss-linux-arm64-musl@1.31.1:
+ version "1.31.1"
+ resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.31.1.tgz#af26ab8f829b727ada0a200938a6c8796ff36900"
+ integrity sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==
+
+lightningcss-linux-x64-gnu@1.31.1:
+ version "1.31.1"
+ resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.31.1.tgz#a891d44e84b71c0d88959feb9a7522bbf61450ee"
+ integrity sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==
+
+lightningcss-linux-x64-musl@1.31.1:
+ version "1.31.1"
+ resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.31.1.tgz#8c8b21def851f4d477fa897b80cb3db2b650bc6e"
+ integrity sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==
+
+lightningcss-win32-arm64-msvc@1.31.1:
+ version "1.31.1"
+ resolved "https://registry.yarnpkg.com/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.31.1.tgz#79000fb8c57e94a91b8fc643e74d5a54407d7080"
+ integrity sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==
+
+lightningcss-win32-x64-msvc@1.31.1:
+ version "1.31.1"
+ resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.31.1.tgz#7f025274c81c7d659829731e09c8b6f442209837"
+ integrity sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw==
lightningcss@^1.30.1:
- version "1.31.0"
- resolved "https://registry.yarnpkg.com/lightningcss/-/lightningcss-1.31.0.tgz#86221a60a3d8b92606195c05e75bafb578470fd0"
- integrity sha512-mKXR8TIPqVNcs0qQplcnLgDSmyMW5q9Bt5GmcvABpeexaGGPILxDmMNoabSsS9pAPgICYmgzL2wYFPf84/fQ2A==
+ version "1.31.1"
+ resolved "https://registry.yarnpkg.com/lightningcss/-/lightningcss-1.31.1.tgz#1a19dd327b547a7eda1d5c296ebe1e72df5a184b"
+ integrity sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==
dependencies:
detect-libc "^2.0.3"
optionalDependencies:
- lightningcss-android-arm64 "1.31.0"
- lightningcss-darwin-arm64 "1.31.0"
- lightningcss-darwin-x64 "1.31.0"
- lightningcss-freebsd-x64 "1.31.0"
- lightningcss-linux-arm-gnueabihf "1.31.0"
- lightningcss-linux-arm64-gnu "1.31.0"
- lightningcss-linux-arm64-musl "1.31.0"
- lightningcss-linux-x64-gnu "1.31.0"
- lightningcss-linux-x64-musl "1.31.0"
- lightningcss-win32-arm64-msvc "1.31.0"
- lightningcss-win32-x64-msvc "1.31.0"
+ lightningcss-android-arm64 "1.31.1"
+ lightningcss-darwin-arm64 "1.31.1"
+ lightningcss-darwin-x64 "1.31.1"
+ lightningcss-freebsd-x64 "1.31.1"
+ lightningcss-linux-arm-gnueabihf "1.31.1"
+ lightningcss-linux-arm64-gnu "1.31.1"
+ lightningcss-linux-arm64-musl "1.31.1"
+ lightningcss-linux-x64-gnu "1.31.1"
+ lightningcss-linux-x64-musl "1.31.1"
+ lightningcss-win32-arm64-msvc "1.31.1"
+ lightningcss-win32-x64-msvc "1.31.1"
lines-and-columns@^1.1.6:
version "1.2.4"
@@ -5443,9 +5519,9 @@ lru-cache@^10.0.1, lru-cache@^10.2.0:
integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==
lru-cache@^11.0.0:
- version "11.2.4"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.2.4.tgz#ecb523ebb0e6f4d837c807ad1abaea8e0619770d"
- integrity sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==
+ version "11.2.6"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.2.6.tgz#356bf8a29e88a7a2945507b31f6429a65a192c58"
+ integrity sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==
lru-cache@^5.1.1:
version "5.1.1"
@@ -5478,6 +5554,11 @@ math-intrinsics@^1.1.0:
resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9"
integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==
+mdn-data@2.0.14:
+ version "2.0.14"
+ resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50"
+ integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==
+
memoize-one@^5.0.0:
version "5.2.1"
resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e"
@@ -5488,6 +5569,13 @@ memoize-one@^6.0.0:
resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-6.0.0.tgz#b2591b871ed82948aee4727dc6abceeeac8c1045"
integrity sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==
+merge-options@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/merge-options/-/merge-options-3.0.4.tgz#84709c2aa2a4b24c1981f66c179fe5565cc6dbb7"
+ integrity sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==
+ dependencies:
+ is-plain-obj "^2.1.0"
+
merge-stream@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
@@ -5503,6 +5591,16 @@ metro-babel-transformer@0.83.3:
hermes-parser "0.32.0"
nullthrows "^1.1.1"
+metro-babel-transformer@0.83.5:
+ version "0.83.5"
+ resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.83.5.tgz#91f3fa269171ad5189ebba625f1f0aa124ce06ea"
+ integrity sha512-d9FfmgUEVejTiSb7bkQeLRGl6aeno2UpuPm3bo3rCYwxewj03ymvOn8s8vnS4fBqAPQ+cE9iQM40wh7nGXR+eA==
+ dependencies:
+ "@babel/core" "^7.25.2"
+ flow-enums-runtime "^0.0.6"
+ hermes-parser "0.33.3"
+ nullthrows "^1.1.1"
+
metro-cache-key@0.83.3:
version "0.83.3"
resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.83.3.tgz#ae6c5d4eb1ad8d06a92bf7294ca730a8d880b573"
@@ -5510,6 +5608,13 @@ metro-cache-key@0.83.3:
dependencies:
flow-enums-runtime "^0.0.6"
+metro-cache-key@0.83.5:
+ version "0.83.5"
+ resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.83.5.tgz#96896a1768f0494a375e1d5957b7ad487e508a4c"
+ integrity sha512-Ycl8PBajB7bhbAI7Rt0xEyiF8oJ0RWX8EKkolV1KfCUlC++V/GStMSGpPLwnnBZXZWkCC5edBPzv1Hz1Yi0Euw==
+ dependencies:
+ flow-enums-runtime "^0.0.6"
+
metro-cache@0.83.3:
version "0.83.3"
resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.83.3.tgz#f1245cc48570c47d8944495e61d67f0228f10172"
@@ -5520,7 +5625,17 @@ metro-cache@0.83.3:
https-proxy-agent "^7.0.5"
metro-core "0.83.3"
-metro-config@0.83.3, metro-config@^0.83.1:
+metro-cache@0.83.5:
+ version "0.83.5"
+ resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.83.5.tgz#5675f4ad56905aa78fff3dec1b6bf213e0b6c86d"
+ integrity sha512-oH+s4U+IfZyg8J42bne2Skc90rcuESIYf86dYittcdWQtPfcaFXWpByPyTuWk3rR1Zz3Eh5HOrcVImfEhhJLng==
+ dependencies:
+ exponential-backoff "^3.1.1"
+ flow-enums-runtime "^0.0.6"
+ https-proxy-agent "^7.0.5"
+ metro-core "0.83.5"
+
+metro-config@0.83.3:
version "0.83.3"
resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.83.3.tgz#a30e7a69b5cf8c4ac4c4b68b1b4c33649ae129a2"
integrity sha512-mTel7ipT0yNjKILIan04bkJkuCzUUkm2SeEaTads8VfEecCh+ltXchdq6DovXJqzQAXuR2P9cxZB47Lg4klriA==
@@ -5534,7 +5649,21 @@ metro-config@0.83.3, metro-config@^0.83.1:
metro-runtime "0.83.3"
yaml "^2.6.1"
-metro-core@0.83.3, metro-core@^0.83.1:
+metro-config@0.83.5, metro-config@^0.83.1:
+ version "0.83.5"
+ resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.83.5.tgz#a3dd20fc5d5582aa4ad3704678e52abcf4d46b2b"
+ integrity sha512-JQ/PAASXH7yczgV6OCUSRhZYME+NU8NYjI2RcaG5ga4QfQ3T/XdiLzpSb3awWZYlDCcQb36l4Vl7i0Zw7/Tf9w==
+ dependencies:
+ connect "^3.6.5"
+ flow-enums-runtime "^0.0.6"
+ jest-validate "^29.7.0"
+ metro "0.83.5"
+ metro-cache "0.83.5"
+ metro-core "0.83.5"
+ metro-runtime "0.83.5"
+ yaml "^2.6.1"
+
+metro-core@0.83.3:
version "0.83.3"
resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.83.3.tgz#007e93f7d1983777da8988dfb103ad897c9835b8"
integrity sha512-M+X59lm7oBmJZamc96usuF1kusd5YimqG/q97g4Ac7slnJ3YiGglW5CsOlicTR5EWf8MQFxxjDoB6ytTqRe8Hw==
@@ -5543,6 +5672,15 @@ metro-core@0.83.3, metro-core@^0.83.1:
lodash.throttle "^4.1.1"
metro-resolver "0.83.3"
+metro-core@0.83.5, metro-core@^0.83.1:
+ version "0.83.5"
+ resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.83.5.tgz#1592033633034feb5d368d22bf18e38052146970"
+ integrity sha512-YcVcLCrf0ed4mdLa82Qob0VxYqfhmlRxUS8+TO4gosZo/gLwSvtdeOjc/Vt0pe/lvMNrBap9LlmvZM8FIsMgJQ==
+ dependencies:
+ flow-enums-runtime "^0.0.6"
+ lodash.throttle "^4.1.1"
+ metro-resolver "0.83.5"
+
metro-file-map@0.83.3:
version "0.83.3"
resolved "https://registry.yarnpkg.com/metro-file-map/-/metro-file-map-0.83.3.tgz#3d79fbb1d379ab178dd895ce54cb5ecb183d74a2"
@@ -5558,6 +5696,21 @@ metro-file-map@0.83.3:
nullthrows "^1.1.1"
walker "^1.0.7"
+metro-file-map@0.83.5:
+ version "0.83.5"
+ resolved "https://registry.yarnpkg.com/metro-file-map/-/metro-file-map-0.83.5.tgz#394aa61d54b3822f10e68c18cbd1318f18865d20"
+ integrity sha512-ZEt8s3a1cnYbn40nyCD+CsZdYSlwtFh2kFym4lo+uvfM+UMMH+r/BsrC6rbNClSrt+B7rU9T+Te/sh/NL8ZZKQ==
+ dependencies:
+ debug "^4.4.0"
+ fb-watchman "^2.0.0"
+ flow-enums-runtime "^0.0.6"
+ graceful-fs "^4.2.4"
+ invariant "^2.2.4"
+ jest-worker "^29.7.0"
+ micromatch "^4.0.4"
+ nullthrows "^1.1.1"
+ walker "^1.0.7"
+
metro-minify-terser@0.83.3:
version "0.83.3"
resolved "https://registry.yarnpkg.com/metro-minify-terser/-/metro-minify-terser-0.83.3.tgz#c1c70929c86b14c8bf03e6321b4f9310bc8dbe87"
@@ -5566,6 +5719,14 @@ metro-minify-terser@0.83.3:
flow-enums-runtime "^0.0.6"
terser "^5.15.0"
+metro-minify-terser@0.83.5:
+ version "0.83.5"
+ resolved "https://registry.yarnpkg.com/metro-minify-terser/-/metro-minify-terser-0.83.5.tgz#ee43a11a9d3442760781434c599d45eb1274e6fd"
+ integrity sha512-Toe4Md1wS1PBqbvB0cFxBzKEVyyuYTUb0sgifAZh/mSvLH84qA1NAWik9sISWatzvfWf3rOGoUoO5E3f193a3Q==
+ dependencies:
+ flow-enums-runtime "^0.0.6"
+ terser "^5.15.0"
+
metro-resolver@0.83.3:
version "0.83.3"
resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.83.3.tgz#06207bdddc280b9335722a8c992aeec017413942"
@@ -5573,7 +5734,14 @@ metro-resolver@0.83.3:
dependencies:
flow-enums-runtime "^0.0.6"
-metro-runtime@0.83.3, metro-runtime@^0.83.1:
+metro-resolver@0.83.5:
+ version "0.83.5"
+ resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.83.5.tgz#72340ca8071941eafe92ff2dcb8e33c581870ef7"
+ integrity sha512-7p3GtzVUpbAweJeCcUJihJeOQl1bDuimO5ueo1K0BUpUtR41q5EilbQ3klt16UTPPMpA+tISWBtsrqU556mY1A==
+ dependencies:
+ flow-enums-runtime "^0.0.6"
+
+metro-runtime@0.83.3:
version "0.83.3"
resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.83.3.tgz#ff504df5d93f38b1af396715b327e589ba8d184d"
integrity sha512-JHCJb9ebr9rfJ+LcssFYA2x1qPYuSD/bbePupIGhpMrsla7RCwC/VL3yJ9cSU+nUhU4c9Ixxy8tBta+JbDeZWw==
@@ -5581,7 +5749,15 @@ metro-runtime@0.83.3, metro-runtime@^0.83.1:
"@babel/runtime" "^7.25.0"
flow-enums-runtime "^0.0.6"
-metro-source-map@0.83.3, metro-source-map@^0.83.1:
+metro-runtime@0.83.5, metro-runtime@^0.83.1:
+ version "0.83.5"
+ resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.83.5.tgz#52c1edafc6cc82e57729cc9c21700ab1e53a1777"
+ integrity sha512-f+b3ue9AWTVlZe2Xrki6TAoFtKIqw30jwfk7GQ1rDUBQaE0ZQ+NkiMEtb9uwH7uAjJ87U7Tdx1Jg1OJqUfEVlA==
+ dependencies:
+ "@babel/runtime" "^7.25.0"
+ flow-enums-runtime "^0.0.6"
+
+metro-source-map@0.83.3:
version "0.83.3"
resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.83.3.tgz#04bb464f7928ea48bcdfd18912c8607cf317c898"
integrity sha512-xkC3qwUBh2psVZgVavo8+r2C9Igkk3DibiOXSAht1aYRRcztEZNFtAMtfSB7sdO2iFMx2Mlyu++cBxz/fhdzQg==
@@ -5597,6 +5773,21 @@ metro-source-map@0.83.3, metro-source-map@^0.83.1:
source-map "^0.5.6"
vlq "^1.0.0"
+metro-source-map@0.83.5, metro-source-map@^0.83.1:
+ version "0.83.5"
+ resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.83.5.tgz#384f311f83fa2bf51cbec08d77210aa951bf9ee3"
+ integrity sha512-VT9bb2KO2/4tWY9Z2yeZqTUao7CicKAOps9LUg2aQzsz+04QyuXL3qgf1cLUVRjA/D6G5u1RJAlN1w9VNHtODQ==
+ dependencies:
+ "@babel/traverse" "^7.29.0"
+ "@babel/types" "^7.29.0"
+ flow-enums-runtime "^0.0.6"
+ invariant "^2.2.4"
+ metro-symbolicate "0.83.5"
+ nullthrows "^1.1.1"
+ ob1 "0.83.5"
+ source-map "^0.5.6"
+ vlq "^1.0.0"
+
metro-symbolicate@0.83.3:
version "0.83.3"
resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.83.3.tgz#67af03950f0dfe19a7c059e3983e39a31e95d03a"
@@ -5609,6 +5800,18 @@ metro-symbolicate@0.83.3:
source-map "^0.5.6"
vlq "^1.0.0"
+metro-symbolicate@0.83.5:
+ version "0.83.5"
+ resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.83.5.tgz#62167db423be6c68b4b9f39935c9cb7330cc9526"
+ integrity sha512-EMIkrjNRz/hF+p0RDdxoE60+dkaTLPN3vaaGkFmX5lvFdO6HPfHA/Ywznzkev+za0VhPQ5KSdz49/MALBRteHA==
+ dependencies:
+ flow-enums-runtime "^0.0.6"
+ invariant "^2.2.4"
+ metro-source-map "0.83.5"
+ nullthrows "^1.1.1"
+ source-map "^0.5.6"
+ vlq "^1.0.0"
+
metro-transform-plugins@0.83.3:
version "0.83.3"
resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.83.3.tgz#2c59ba841e269363cf3acb13138cb992f0c75013"
@@ -5621,6 +5824,18 @@ metro-transform-plugins@0.83.3:
flow-enums-runtime "^0.0.6"
nullthrows "^1.1.1"
+metro-transform-plugins@0.83.5:
+ version "0.83.5"
+ resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.83.5.tgz#ba21c6a5fa9bf6c5c2c222e2c8e7a668ffb3d341"
+ integrity sha512-KxYKzZL+lt3Os5H2nx7YkbkWVduLZL5kPrE/Yq+Prm/DE1VLhpfnO6HtPs8vimYFKOa58ncl60GpoX0h7Wm0Vw==
+ dependencies:
+ "@babel/core" "^7.25.2"
+ "@babel/generator" "^7.29.1"
+ "@babel/template" "^7.28.6"
+ "@babel/traverse" "^7.29.0"
+ flow-enums-runtime "^0.0.6"
+ nullthrows "^1.1.1"
+
metro-transform-worker@0.83.3:
version "0.83.3"
resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.83.3.tgz#ca6ae4a02b0f61b33299e6e56bacaba32dcd607f"
@@ -5640,7 +5855,26 @@ metro-transform-worker@0.83.3:
metro-transform-plugins "0.83.3"
nullthrows "^1.1.1"
-metro@0.83.3, metro@^0.83.1:
+metro-transform-worker@0.83.5:
+ version "0.83.5"
+ resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.83.5.tgz#8616b54282e727027fdb5c475aade719394a8e8a"
+ integrity sha512-8N4pjkNXc6ytlP9oAM6MwqkvUepNSW39LKYl9NjUMpRDazBQ7oBpQDc8Sz4aI8jnH6AGhF7s1m/ayxkN1t04yA==
+ dependencies:
+ "@babel/core" "^7.25.2"
+ "@babel/generator" "^7.29.1"
+ "@babel/parser" "^7.29.0"
+ "@babel/types" "^7.29.0"
+ flow-enums-runtime "^0.0.6"
+ metro "0.83.5"
+ metro-babel-transformer "0.83.5"
+ metro-cache "0.83.5"
+ metro-cache-key "0.83.5"
+ metro-minify-terser "0.83.5"
+ metro-source-map "0.83.5"
+ metro-transform-plugins "0.83.5"
+ nullthrows "^1.1.1"
+
+metro@0.83.3:
version "0.83.3"
resolved "https://registry.yarnpkg.com/metro/-/metro-0.83.3.tgz#1e7e04c15519af746f8932c7f9c553d92c39e922"
integrity sha512-+rP+/GieOzkt97hSJ0MrPOuAH/jpaS21ZDvL9DJ35QYRDlQcwzcvUlGUf79AnQxq/2NPiS/AULhhM4TKutIt8Q==
@@ -5686,6 +5920,52 @@ metro@0.83.3, metro@^0.83.1:
ws "^7.5.10"
yargs "^17.6.2"
+metro@0.83.5, metro@^0.83.1:
+ version "0.83.5"
+ resolved "https://registry.yarnpkg.com/metro/-/metro-0.83.5.tgz#f5441075d5211c980ac8c79109e9e6fa2df68924"
+ integrity sha512-BgsXevY1MBac/3ZYv/RfNFf/4iuW9X7f4H8ZNkiH+r667HD9sVujxcmu4jvEzGCAm4/WyKdZCuyhAcyhTHOucQ==
+ dependencies:
+ "@babel/code-frame" "^7.29.0"
+ "@babel/core" "^7.25.2"
+ "@babel/generator" "^7.29.1"
+ "@babel/parser" "^7.29.0"
+ "@babel/template" "^7.28.6"
+ "@babel/traverse" "^7.29.0"
+ "@babel/types" "^7.29.0"
+ accepts "^2.0.0"
+ chalk "^4.0.0"
+ ci-info "^2.0.0"
+ connect "^3.6.5"
+ debug "^4.4.0"
+ error-stack-parser "^2.0.6"
+ flow-enums-runtime "^0.0.6"
+ graceful-fs "^4.2.4"
+ hermes-parser "0.33.3"
+ image-size "^1.0.2"
+ invariant "^2.2.4"
+ jest-worker "^29.7.0"
+ jsc-safe-url "^0.2.2"
+ lodash.throttle "^4.1.1"
+ metro-babel-transformer "0.83.5"
+ metro-cache "0.83.5"
+ metro-cache-key "0.83.5"
+ metro-config "0.83.5"
+ metro-core "0.83.5"
+ metro-file-map "0.83.5"
+ metro-resolver "0.83.5"
+ metro-runtime "0.83.5"
+ metro-source-map "0.83.5"
+ metro-symbolicate "0.83.5"
+ metro-transform-plugins "0.83.5"
+ metro-transform-worker "0.83.5"
+ mime-types "^3.0.1"
+ nullthrows "^1.1.1"
+ serialize-error "^2.1.0"
+ source-map "^0.5.6"
+ throat "^5.0.0"
+ ws "^7.5.10"
+ yargs "^17.6.2"
+
micromatch@^4.0.4:
version "4.0.8"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202"
@@ -5699,7 +5979,7 @@ mime-db@1.52.0:
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
-"mime-db@>= 1.43.0 < 2":
+"mime-db@>= 1.43.0 < 2", mime-db@^1.54.0:
version "1.54.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.54.0.tgz#cddb3ee4f9c64530dff640236661d42cb6a314f5"
integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==
@@ -5711,6 +5991,13 @@ mime-types@^2.1.27, mime-types@~2.1.34:
dependencies:
mime-db "1.52.0"
+mime-types@^3.0.0, mime-types@^3.0.1:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-3.0.2.tgz#39002d4182575d5af036ffa118100f2524b2e2ab"
+ integrity sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==
+ dependencies:
+ mime-db "^1.54.0"
+
mime@1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
@@ -5726,33 +6013,33 @@ mimic-fn@^2.1.0:
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
-minimatch@^10.1.1:
- version "10.1.1"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.1.1.tgz#e6e61b9b0c1dcab116b5a7d1458e8b6ae9e73a55"
- integrity sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==
+minimatch@^10.2.2:
+ version "10.2.4"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.2.4.tgz#465b3accbd0218b8281f5301e27cedc697f96fde"
+ integrity sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==
dependencies:
- "@isaacs/brace-expansion" "^5.0.0"
+ brace-expansion "^5.0.2"
-minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
- integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
+minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2, minimatch@^3.1.5:
+ version "3.1.5"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.5.tgz#580c88f8d5445f2bd6aa8f3cadefa0de79fbd69e"
+ integrity sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==
dependencies:
brace-expansion "^1.1.7"
minimatch@^8.0.2:
- version "8.0.4"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-8.0.4.tgz#847c1b25c014d4e9a7f68aaf63dedd668a626229"
- integrity sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==
+ version "8.0.7"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-8.0.7.tgz#954766e22da88a3e0a17ad93b58c15c9d8a579de"
+ integrity sha512-V+1uQNdzybxa14e/p00HZnQNNcTjnRJjDxg2V8wtkjFctq4M7hXFws4oekyTP0Jebeq7QYtpFyOeBAjc88zvYg==
dependencies:
brace-expansion "^2.0.1"
-minimatch@^9.0.0, minimatch@^9.0.5:
- version "9.0.5"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5"
- integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==
+minimatch@^9.0.0:
+ version "9.0.9"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.9.tgz#9b0cb9fcb78087f6fd7eababe2511c4d3d60574e"
+ integrity sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==
dependencies:
- brace-expansion "^2.0.1"
+ brace-expansion "^2.0.2"
minimist@^1.2.0, minimist@^1.2.6:
version "1.2.8"
@@ -5764,10 +6051,10 @@ minipass@^4.2.4:
resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.2.8.tgz#f0010f64393ecfc1d1ccb5f582bcaf45f48e1a3a"
integrity sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==
-"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.4, minipass@^7.1.2:
- version "7.1.2"
- resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707"
- integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==
+"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.4, minipass@^7.1.2, minipass@^7.1.3:
+ version "7.1.3"
+ resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.3.tgz#79389b4eb1bb2d003a9bba87d492f2bd37bdc65b"
+ integrity sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==
minizlib@^3.1.0:
version "3.1.0"
@@ -5820,6 +6107,11 @@ negotiator@0.6.3:
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd"
integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==
+negotiator@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-1.0.0.tgz#b6c91bb47172d69f93cfd7c357bbb529019b5f6a"
+ integrity sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==
+
negotiator@~0.6.4:
version "0.6.4"
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.4.tgz#777948e2452651c570b712dd01c23e262713fff7"
@@ -5830,6 +6122,16 @@ nested-error-stacks@~2.0.1:
resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-2.0.1.tgz#d2cc9fc5235ddb371fc44d506234339c8e4b0a4b"
integrity sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==
+node-exports-info@^1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/node-exports-info/-/node-exports-info-1.6.0.tgz#1aedafb01a966059c9a5e791a94a94d93f5c2a13"
+ integrity sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==
+ dependencies:
+ array.prototype.flatmap "^1.3.3"
+ es-errors "^1.3.0"
+ object.entries "^1.1.9"
+ semver "^6.3.1"
+
node-fetch@^2.7.0:
version "2.7.0"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d"
@@ -5848,9 +6150,9 @@ node-int64@^0.4.0:
integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==
node-releases@^2.0.27:
- version "2.0.27"
- resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.27.tgz#eedca519205cf20f650f61d56b070db111231e4e"
- integrity sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==
+ version "2.0.36"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.36.tgz#99fd6552aaeda9e17c4713b57a63964a2e325e9d"
+ integrity sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==
normalize-path@^3.0.0:
version "3.0.0"
@@ -5874,6 +6176,13 @@ npm-run-path@^4.0.1:
dependencies:
path-key "^3.0.0"
+nth-check@^2.0.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d"
+ integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==
+ dependencies:
+ boolbase "^1.0.0"
+
nullthrows@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1"
@@ -5886,6 +6195,13 @@ ob1@0.83.3:
dependencies:
flow-enums-runtime "^0.0.6"
+ob1@0.83.5:
+ version "0.83.5"
+ resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.83.5.tgz#f9c289d759142b76577948eea7fd1f07d36f825f"
+ integrity sha512-vNKPYC8L5ycVANANpF/S+WZHpfnRWKx/F3AYP4QMn6ZJTh+l2HOrId0clNkEmua58NB9vmI9Qh7YOoV/4folYg==
+ dependencies:
+ flow-enums-runtime "^0.0.6"
+
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"
@@ -6144,10 +6460,10 @@ path-scurry@^1.6.1:
lru-cache "^10.2.0"
minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
-path-scurry@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-2.0.1.tgz#4b6572376cfd8b811fca9cd1f5c24b3cbac0fe10"
- integrity sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==
+path-scurry@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-2.0.2.tgz#6be0d0ee02a10d9e0de7a98bae65e182c9061f85"
+ integrity sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==
dependencies:
lru-cache "^11.0.0"
minipass "^7.1.2"
@@ -6367,9 +6683,18 @@ react-is@^18.0.0:
integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==
react-is@^19.1.0, react-is@^19.2.3:
- version "19.2.3"
- resolved "https://registry.yarnpkg.com/react-is/-/react-is-19.2.3.tgz#eec2feb69c7fb31f77d0b5c08c10ae1c88886b29"
- integrity sha512-qJNJfu81ByyabuG7hPFEbXqNcWSU3+eVus+KJs+0ncpGfMyYdvSmxiJxbWR65lYi1I+/0HBcliO029gc4F+PnA==
+ version "19.2.4"
+ resolved "https://registry.yarnpkg.com/react-is/-/react-is-19.2.4.tgz#a080758243c572ccd4a63386537654298c99d135"
+ integrity sha512-W+EWGn2v0ApPKgKKCy/7s7WHXkboGcsrXE+2joLyVxkbyVQfO3MUEaUQDHoSmb8TFFrSKYa9mw64WZHNHSDzYA==
+
+react-native-emoji-chooser@^0.1.11:
+ version "0.1.11"
+ resolved "https://registry.yarnpkg.com/react-native-emoji-chooser/-/react-native-emoji-chooser-0.1.11.tgz#d54c05d276c363c3cec45d3cfee71dab37cb5d62"
+ integrity sha512-+mnhR+2M/L2Ddepj9ROAnUdDCz8bvRVxF9dHQvEPqDTmHJUYQ26OX98HDSv7uYPZx5ZQ8kZ5s6YYLgQYaAlQ1w==
+ dependencies:
+ emoji-datasource "^15.1.2"
+ grapheme-splitter "^1.0.4"
+ react-native-section-list-get-item-layout "^2.2.3"
react-native-gesture-handler@~2.30.0:
version "2.30.0"
@@ -6385,9 +6710,9 @@ react-native-gesture-handler@~2.30.0:
uid ""
react-native-is-edge-to-edge@^1.1.6, react-native-is-edge-to-edge@^1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/react-native-is-edge-to-edge/-/react-native-is-edge-to-edge-1.2.1.tgz#64e10851abd9d176cbf2b40562f751622bde3358"
- integrity sha512-FLbPWl/MyYQWz+KwqOZsSyj2JmLKglHatd3xLZWskXOpRaio4LfEDEz8E/A6uD8QoTHW6Aobw1jbEwK7KMgR7Q==
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/react-native-is-edge-to-edge/-/react-native-is-edge-to-edge-1.3.1.tgz#feb9a6a8faf0874298947edd556e5af22044e139"
+ integrity sha512-NIXU/iT5+ORyCc7p0z2nnlkouYKX425vuU1OEm6bMMtWWR9yvb+Xg5AZmImTKoF9abxCPqrKC3rOZsKzUYgYZA==
react-native-keyboard-controller@1.20.6:
version "1.20.6"
@@ -6404,9 +6729,9 @@ react-native-maps@1.20.1:
"@types/geojson" "^7946.0.13"
react-native-paper@^5.14.5:
- version "5.14.5"
- resolved "https://registry.yarnpkg.com/react-native-paper/-/react-native-paper-5.14.5.tgz#7995a2f8171c8355c1cb55c81a6d2074a7dd5abb"
- integrity sha512-eaIH5bUQjJ/mYm4AkI6caaiyc7BcHDwX6CqNDi6RIxfxfWxROsHpll1oBuwn/cFvknvA8uEAkqLk/vzVihI3AQ==
+ version "5.15.0"
+ resolved "https://registry.yarnpkg.com/react-native-paper/-/react-native-paper-5.15.0.tgz#3f99734b00f0305fc7dec6b80be86adc3d5acdf2"
+ integrity sha512-I/1CQLfW9VM0Oo5I5dQI/hjgf1I6q2S1wwgzAdsv6whAQ3zO97GWHwtgNh9se9j8zBOJ86afPTQKxxUL0IJd9A==
dependencies:
"@callstack/react-theme-provider" "^3.0.9"
color "^3.1.2"
@@ -6434,6 +6759,20 @@ react-native-screens@~4.16.0:
react-native-is-edge-to-edge "^1.2.1"
warn-once "^0.1.0"
+react-native-section-list-get-item-layout@^2.2.3:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/react-native-section-list-get-item-layout/-/react-native-section-list-get-item-layout-2.2.3.tgz#152a8efdcb3847dbcbeb04cd2d0de4312d3d2fcb"
+ integrity sha512-fzCW5SiYP6qCZyDHebaElHonIFr8NFrZK9JDkxFLnpxMJih4d+HQ4rHyOs0Z4Gb/FjyCVbRH7RtEnjeQ0XffMg==
+
+react-native-svg@^15.11.2:
+ version "15.15.3"
+ resolved "https://registry.yarnpkg.com/react-native-svg/-/react-native-svg-15.15.3.tgz#48baf15ad9610be816b37c03ffbb1f72c056a2b0"
+ integrity sha512-/k4KYwPBLGcx2f5d4FjE+vCScK7QOX14cl2lIASJ28u4slHHtIhL0SZKU7u9qmRBHxTCKPoPBtN6haT1NENJNA==
+ dependencies:
+ css-select "^5.1.0"
+ css-tree "^1.1.3"
+ warn-once "0.1.1"
+
react-native-web@~0.21.2:
version "0.21.2"
resolved "https://registry.yarnpkg.com/react-native-web/-/react-native-web-0.21.2.tgz#0f6983dfea600d9cc1c66fda87ff9ca585eaa647"
@@ -6466,9 +6805,9 @@ react-native-worklets@0.5.1:
semver "7.7.2"
react-native-zoom-reanimated@^1.5.2:
- version "1.5.2"
- resolved "https://registry.yarnpkg.com/react-native-zoom-reanimated/-/react-native-zoom-reanimated-1.5.2.tgz#a62a86a26addcaebfb7da112b944da4bff9d0892"
- integrity sha512-FjphqFlxIhvvo8tidU9d3D7/+GT1jM1T4ZCd0qotYQWSvp2M1WAQTvgcRYeI4U8hrkHTTKgW2E0o+tI4EB9tXA==
+ version "1.5.3"
+ resolved "https://registry.yarnpkg.com/react-native-zoom-reanimated/-/react-native-zoom-reanimated-1.5.3.tgz#65a3c43d0e385dcbfd652553f33b1201d390fa14"
+ integrity sha512-IuaRbzs/Ku2lyOcG0p1xMro+1K1bCC+jtWoQecUaqK8/ME97uRwNgwi6k/Fx8cEsx/R60HLA/mqpbw8pfrUECw==
react-native@0.81.5:
version "0.81.5"
@@ -6663,13 +7002,6 @@ resolve-from@^5.0.0:
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69"
integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
-resolve-global@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/resolve-global/-/resolve-global-1.0.0.tgz#a2a79df4af2ca3f49bf77ef9ddacd322dad19255"
- integrity sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==
- dependencies:
- global-dirs "^0.1.1"
-
resolve-pkg-maps@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f"
@@ -6685,7 +7017,7 @@ resolve.exports@^2.0.0, resolve.exports@^2.0.3:
resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.3.tgz#41955e6f1b4013b7586f873749a635dea07ebe3f"
integrity sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==
-resolve@^1.20.0, resolve@^1.22.10, resolve@^1.22.2, resolve@^1.22.4, resolve@^1.22.8:
+resolve@^1.20.0, resolve@^1.22.11, resolve@^1.22.2, resolve@^1.22.4, resolve@^1.22.8:
version "1.22.11"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.11.tgz#aad857ce1ffb8bfa9b0b1ac29f1156383f68c262"
integrity sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==
@@ -6695,11 +7027,14 @@ resolve@^1.20.0, resolve@^1.22.10, resolve@^1.22.2, resolve@^1.22.4, resolve@^1.
supports-preserve-symlinks-flag "^1.0.0"
resolve@^2.0.0-next.5:
- version "2.0.0-next.5"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c"
- integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==
+ version "2.0.0-next.6"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.6.tgz#b3961812be69ace7b3bc35d5bf259434681294af"
+ integrity sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA==
dependencies:
- is-core-module "^2.13.0"
+ es-errors "^1.3.0"
+ is-core-module "^2.16.1"
+ node-exports-info "^1.6.0"
+ object-keys "^1.1.1"
path-parse "^1.0.7"
supports-preserve-symlinks-flag "^1.0.0"
@@ -6759,9 +7094,9 @@ safe-regex-test@^1.1.0:
is-regex "^1.2.1"
sax@>=0.6.0:
- version "1.4.4"
- resolved "https://registry.yarnpkg.com/sax/-/sax-1.4.4.tgz#f29c2bba80ce5b86f4343b4c2be9f2b96627cf8b"
- integrity sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/sax/-/sax-1.5.0.tgz#b5549b671069b7aa392df55ec7574cf411179eb8"
+ integrity sha512-21IYA3Q5cQf089Z6tgaUTr7lDAyzoTPx5HRtbhsME8Udispad8dC/+sziTNugOEx54ilvatQ9YCzl4KQLPcRHA==
scheduler@0.26.0, scheduler@^0.26.0:
version "0.26.0"
@@ -6784,9 +7119,9 @@ semver@^6.3.0, semver@^6.3.1:
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
semver@^7.1.3, semver@^7.3.5, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.7.1, semver@^7.7.3:
- version "7.7.3"
- resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.3.tgz#4b5f4143d007633a8dc671cd0a6ef9147b8bb946"
- integrity sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.4.tgz#28464e36060e991fa7a11d0279d2d3f3b57a7e8a"
+ integrity sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==
semver@~7.6.3:
version "7.6.3"
@@ -7242,9 +7577,9 @@ supports-preserve-symlinks-flag@^1.0.0:
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
tar@^7.5.2:
- version "7.5.4"
- resolved "https://registry.yarnpkg.com/tar/-/tar-7.5.4.tgz#18b53b44f939a7e03ed874f1fafe17d29e306c81"
- integrity sha512-AN04xbWGrSTDmVwlI4/GTlIIwMFk/XEv7uL8aa57zuvRy6s4hdBed+lVq2fAZ89XDa7Us3ANXcE3Tvqvja1kTA==
+ version "7.5.10"
+ resolved "https://registry.yarnpkg.com/tar/-/tar-7.5.10.tgz#2281541123f5507db38bc6eb22619f4bbaef73ad"
+ integrity sha512-8mOPs1//5q/rlkNSPcCegA6hiHJYDmSLEI8aMH/CdSQJNWztHC9WHNam5zdQlfpTwB9Xp7IBEsHfV5LKMJGVAw==
dependencies:
"@isaacs/fs-minipass" "^4.0.0"
chownr "^3.0.0"
@@ -7252,11 +7587,6 @@ tar@^7.5.2:
minizlib "^3.1.0"
yallist "^5.0.0"
-temp-dir@~2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e"
- integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==
-
terminal-link@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994"
@@ -7445,10 +7775,10 @@ unbox-primitive@^1.1.0:
has-symbols "^1.1.0"
which-boxed-primitive "^1.1.1"
-undici-types@~7.16.0:
- version "7.16.0"
- resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.16.0.tgz#ffccdff36aea4884cbfce9a750a0580224f58a46"
- integrity sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==
+undici-types@~7.18.0:
+ version "7.18.2"
+ resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.18.2.tgz#29357a89e7b7ca4aef3bf0fd3fd0cd73884229e9"
+ integrity sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==
undici@^6.18.2:
version "6.23.0"
@@ -7478,13 +7808,6 @@ unicode-property-aliases-ecmascript@^2.0.0:
resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz#301d4f8a43d2b75c97adfad87c9dd5350c9475d1"
integrity sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==
-unique-string@~2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d"
- integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==
- dependencies:
- crypto-random-string "^2.0.0"
-
unpipe@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
@@ -7605,7 +7928,7 @@ walker@^1.0.7, walker@^1.0.8:
dependencies:
makeerror "1.0.12"
-warn-once@^0.1.0, warn-once@^0.1.1:
+warn-once@0.1.1, warn-once@^0.1.0, warn-once@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/warn-once/-/warn-once-0.1.1.tgz#952088f4fb56896e73fd4e6a3767272a3fccce43"
integrity sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q==
diff --git a/package.json b/package.json
index c6dec977b..58c6e0550 100644
--- a/package.json
+++ b/package.json
@@ -106,7 +106,21 @@
"react-native-gesture-handler": ">=2.0.0",
"react-native-keyboard-controller": ">=1.0.0",
"react-native-reanimated": ">=3.0.0 || ^4.0.0",
- "react-native-safe-area-context": ">=5.0.0"
+ "react-native-safe-area-context": ">=5.0.0",
+ "@react-native-async-storage/async-storage": ">=2.0.0",
+ "react-native-emoji-chooser": ">=0.1.0",
+ "react-native-svg": ">=12.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@react-native-async-storage/async-storage": {
+ "optional": true
+ },
+ "react-native-emoji-chooser": {
+ "optional": true
+ },
+ "react-native-svg": {
+ "optional": true
+ }
},
"packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e",
"engines": {
diff --git a/src/Bubble/index.tsx b/src/Bubble/index.tsx
index e44095130..ffd47d06e 100644
--- a/src/Bubble/index.tsx
+++ b/src/Bubble/index.tsx
@@ -1,10 +1,18 @@
-import React, { useCallback, useMemo } from 'react'
+import React, { useCallback, useMemo, useRef, useState } from 'react'
import {
View,
Pressable,
} from 'react-native'
-import { Text } from 'react-native-gesture-handler'
+import { Text, Gesture, GestureDetector } from 'react-native-gesture-handler'
+import Animated, {
+ Easing,
+ ReduceMotion,
+ runOnJS,
+ useAnimatedStyle,
+ useSharedValue,
+ withTiming,
+} from 'react-native-reanimated'
import { MessageReply } from '../components/MessageReply'
import { useChatContext } from '../GiftedChatContext'
@@ -14,6 +22,8 @@ import { MessageText } from '../MessageText'
import { MessageVideo } from '../MessageVideo'
import { IMessage } from '../Models'
import { QuickReplies } from '../QuickReplies'
+import { DEFAULT_REACTION_EMOJIS, MessageReactions } from '../Reactions'
+import { ReactionPicker } from '../Reactions/ReactionPicker'
import { getStyleWithPosition } from '../styles'
import { Time } from '../Time'
import { isSameUser, isSameDay, renderComponentOrElement } from '../utils'
@@ -22,6 +32,18 @@ import { BubbleProps, RenderMessageTextProps } from './types'
export * from './types'
+interface PickerAnchor {
+ pageX: number
+ pageY: number
+ bubbleWidth: number
+ bubbleHeight: number
+}
+
+const SCALE_PRESSED = 0.85
+const SCALE_DURATION_IN = 400
+const SCALE_DURATION_OUT = 200
+const SCALE_EASING = Easing.inOut(Easing.quad)
+
export const Bubble = (props: BubbleProps): React.ReactElement => {
const {
currentMessage,
@@ -40,21 +62,89 @@ export const Bubble = (props: BubbleProps<
bottomContainerStyle,
onPressMessage: onPressMessageProp,
onLongPressMessage: onLongPressMessageProp,
+ reactions,
} = props
const context = useChatContext()
+ const bubbleContainerRef = useRef(null)
+
+ const [isPickerVisible, setIsPickerVisible] = useState(false)
+ const [pickerAnchor, setPickerAnchor] = useState({
+ pageX: 0,
+ pageY: 0,
+ bubbleWidth: 0,
+ bubbleHeight: 0,
+ })
+
+ // Scale animation shared value (used in both gesture paths so hooks
+ // are always called unconditionally)
+ const messageScale = useSharedValue(1)
+
+ const bubbleScaleStyle = useAnimatedStyle(() => ({
+ transform: [{ scale: messageScale.value }],
+ }))
+
const onPress = useCallback(() => {
onPressMessageProp?.(context, currentMessage)
}, [onPressMessageProp, context, currentMessage])
const onLongPress = useCallback(() => {
onLongPressMessageProp?.(context, currentMessage)
- }, [
- currentMessage,
- context,
- onLongPressMessageProp,
- ])
+ }, [onLongPressMessageProp, context, currentMessage])
+
+ const measureBubble = useCallback(() => {
+ bubbleContainerRef.current?.measure((_x, _y, width, height, pageX, pageY) => {
+ setPickerAnchor({ pageX, pageY, bubbleWidth: width, bubbleHeight: height })
+ })
+ }, [])
+
+ const tapGesture = useMemo(
+ () =>
+ Gesture.Tap()
+ .runOnJS(true)
+ .onEnd((_e, success) => {
+ if (success)
+ onPressMessageProp?.(context, currentMessage)
+ }),
+ [onPressMessageProp, context, currentMessage]
+ )
+
+
+ const longPressGesture = useMemo(
+ () =>
+ Gesture.LongPress()
+ .onBegin(() => {
+ messageScale.value = withTiming(SCALE_PRESSED, {
+ duration: SCALE_DURATION_IN,
+ easing: SCALE_EASING,
+ reduceMotion: ReduceMotion.System,
+ })
+ runOnJS(measureBubble)()
+ })
+ .onStart(() => {
+ runOnJS(setIsPickerVisible)(true)
+ })
+ .onFinalize(() => {
+ messageScale.value = withTiming(1, {
+ duration: SCALE_DURATION_OUT,
+ easing: SCALE_EASING,
+ reduceMotion: ReduceMotion.System,
+ })
+ }),
+ [messageScale, measureBubble]
+ )
+
+
+ /**
+ * Exclusive composition: long-press wins over tap when held long enough;
+ * quick lifts let the tap through. Both share the same onBegin/onFinalize
+ * scale animation because onBegin always fires before either gesture wins.
+ */
+ const reactionsGesture = useMemo(
+ () => Gesture.Exclusive(longPressGesture, tapGesture),
+ [longPressGesture, tapGesture]
+ )
const styledBubbleToNext = useMemo(() => {
if (
@@ -70,12 +160,7 @@ export const Bubble = (props: BubbleProps<
]
return null
- }, [
- currentMessage,
- nextMessage,
- position,
- containerToNextStyle,
- ])
+ }, [currentMessage, nextMessage, position, containerToNextStyle])
const styledBubbleToPrevious = useMemo(() => {
if (
@@ -91,12 +176,7 @@ export const Bubble = (props: BubbleProps<
]
return null
- }, [
- currentMessage,
- previousMessage,
- position,
- containerToPreviousStyle,
- ])
+ }, [currentMessage, previousMessage, position, containerToPreviousStyle])
const renderQuickReplies = useCallback(() => {
if (currentMessage?.quickReplies) {
@@ -217,50 +297,31 @@ export const Bubble = (props: BubbleProps<
}, [props, currentMessage])
const renderTicks = useCallback(() => {
- const {
- renderTicks,
- user,
- } = props
+ const { renderTicks, user } = props
if (renderTicks && currentMessage)
return renderComponentOrElement(renderTicks, currentMessage)
- if (
- user &&
- currentMessage?.user &&
- currentMessage.user._id !== user._id
- )
+ if (user && currentMessage?.user && currentMessage.user._id !== user._id)
return null
- if (
- currentMessage &&
- (currentMessage.sent || currentMessage.received || currentMessage.pending)
- )
+ if (currentMessage && (currentMessage.sent || currentMessage.received || currentMessage.pending))
return (
{!!currentMessage.sent && (
-
- {'✓'}
-
+ {'✓'}
)}
{!!currentMessage.received && (
-
- {'✓'}
-
+ {'✓'}
)}
{!!currentMessage.pending && (
-
- {'🕓'}
-
+ {'🕓'}
)}
)
return null
- }, [
- props,
- currentMessage,
- ])
+ }, [props, currentMessage])
const renderTime = useCallback(() => {
if (currentMessage?.createdAt) {
@@ -283,10 +344,7 @@ export const Bubble = (props: BubbleProps<
}, [props, currentMessage])
const renderUsername = useCallback(() => {
- const {
- user,
- renderUsername,
- } = props
+ const { user, renderUsername } = props
if (props.isUsernameVisible && currentMessage) {
if (user && currentMessage.user._id === user._id)
@@ -297,9 +355,7 @@ export const Bubble = (props: BubbleProps<
return (
-
+
{currentMessage.user.name}
@@ -307,10 +363,7 @@ export const Bubble = (props: BubbleProps<
}
return null
- }, [
- currentMessage,
- props,
- ])
+ }, [currentMessage, props])
const renderCustomView = useCallback(() => {
if (props.renderCustomView)
@@ -343,25 +396,19 @@ export const Bubble = (props: BubbleProps<
return renderComponentOrElement(messageReply.renderMessageReply, messageReplyProps)
return
- }, [
- props,
- currentMessage,
- position,
- ])
-
- const renderBubbleContent = useCallback(() => {
- return (
- <>
- {!props.isCustomViewBottom && renderCustomView()}
- {renderMessageReply()}
- {renderMessageImage()}
- {renderMessageVideo()}
- {renderMessageAudio()}
- {renderMessageText()}
- {props.isCustomViewBottom && renderCustomView()}
- >
- )
- }, [
+ }, [props, currentMessage, position])
+
+ const renderBubbleContent = useCallback(() => (
+ <>
+ {!props.isCustomViewBottom && renderCustomView()}
+ {renderMessageReply()}
+ {renderMessageImage()}
+ {renderMessageVideo()}
+ {renderMessageAudio()}
+ {renderMessageText()}
+ {props.isCustomViewBottom && renderCustomView()}
+ >
+ ), [
renderMessageReply,
renderCustomView,
renderMessageImage,
@@ -371,37 +418,133 @@ export const Bubble = (props: BubbleProps<
props.isCustomViewBottom,
])
+ const renderReactionsDisplay = useCallback(() => {
+ const currentReactions = currentMessage?.reactions
+ if (!currentReactions || currentReactions.length === 0)
+ return null
+
+ const displayProps = {
+ message: currentMessage,
+ reactions: currentReactions,
+ currentUserId: props.user?._id,
+ position,
+ onReactionPress: (emoji: string) => reactions?.onReactionPress?.(currentMessage, emoji),
+ containerStyle: reactions?.containerStyle,
+ reactionStyle: reactions?.reactionStyle,
+ reactionActiveStyle: reactions?.reactionActiveStyle,
+ reactionTextStyle: reactions?.reactionTextStyle,
+ reactionCountStyle: reactions?.reactionCountStyle,
+ }
+
+
+ if (reactions?.renderReactions)
+ return renderComponentOrElement(reactions.renderReactions, displayProps)
+
+ return
+ }, [currentMessage, position, props.user, reactions])
+
+ const renderReactionPickerModal = useCallback(() => {
+ if (!reactions?.isEnabled)
+ return null
+
+ const emojis = reactions.emojis ?? DEFAULT_REACTION_EMOJIS
+
+ const colorScheme = context.getColorScheme()
+ const mode = reactions.fullPickerMode ?? (colorScheme === 'dark' ? 'dark' : 'light')
+
+ const pickerProps = {
+ visible: isPickerVisible,
+ message: currentMessage,
+ emojis,
+ onSelect: (emoji: string) => reactions?.onReactionPress?.(currentMessage, emoji),
+ onDismiss: () => setIsPickerVisible(false),
+ position,
+ ...pickerAnchor,
+ pickerContainerStyle: reactions.pickerContainerStyle,
+ pickerEmojiStyle: reactions.pickerEmojiStyle,
+ isFullPickerEnabled: reactions.isFullPickerEnabled,
+ mode,
+ fullPickerLang: reactions.fullPickerLang,
+ fullPickerColumnCount: reactions.fullPickerColumnCount,
+ fullPickerTheme: reactions.fullPickerTheme,
+ fullPickerSearchBarProps: reactions.fullPickerSearchBarProps,
+ }
+
+
+ if (reactions.renderReactionPicker)
+ return renderComponentOrElement(reactions.renderReactionPicker, pickerProps)
+
+ return
+ }, [reactions, isPickerVisible, currentMessage, position, pickerAnchor, context])
+
return (
-
-
-
+ {reactions?.isEnabled ? (
+ /*
+ * Reactions-enabled path
+ * ─────────────────────
+ * Animated.View carries ONLY the scale transform so that
+ * Reanimated's style processor never receives a nested static
+ * style array with null entries — that was breaking the layout
+ * context of sibling nodes (e.g. reaction pills drifting to top).
+ *
+ * Static bubble styles (backgroundColor, borderRadius, etc.) live
+ * on a plain inner View, completely isolated from the animation.
+ */
+
+
+
+ {renderBubbleContent()}
+
+ {renderUsername()}
+
+ {renderTime()}
+ {renderTicks()}
+
+
+
+
+
+ ) : (
+ /*
+ * Default path — unchanged behaviour for existing users.
+ * Preserves touchableProps, native press feedback, and the
+ * original onLongPressMessage callback.
+ */
+
- {renderBubbleContent()}
-
- {renderUsername()}
-
- {renderTime()}
- {renderTicks()}
+ {renderBubbleContent()}
+
+ {renderUsername()}
+
+ {renderTime()}
+ {renderTicks()}
+
-
-
-
+
+
+ )}
{renderQuickReplies()}
-
+ {renderReactionsDisplay()}
+ {renderReactionPickerModal()}
+
)
}
diff --git a/src/Bubble/types.ts b/src/Bubble/types.ts
index 3b4fafdcc..a32f799d7 100644
--- a/src/Bubble/types.ts
+++ b/src/Bubble/types.ts
@@ -20,6 +20,7 @@ import {
MessageAudioProps,
} from '../Models'
import { QuickRepliesProps } from '../QuickReplies'
+import { ReactionsProps } from '../Reactions'
import { MessageReplyStyleProps } from '../Reply'
import { TimeProps } from '../Time'
@@ -101,4 +102,6 @@ export interface BubbleProps {
) => React.ReactNode
/** Message reply configuration */
messageReply?: BubbleReplyProps
+ /** Emoji reactions configuration */
+ reactions?: ReactionsProps
}
diff --git a/src/GiftedChat/types.ts b/src/GiftedChat/types.ts
index 5cfdc8eaa..21532aa35 100644
--- a/src/GiftedChat/types.ts
+++ b/src/GiftedChat/types.ts
@@ -26,6 +26,7 @@ import {
User,
} from '../Models'
import { QuickRepliesProps } from '../QuickReplies'
+import { ReactionsProps } from '../Reactions'
import { ReplyProps } from '../Reply'
import { SendProps } from '../Send'
import { SystemMessageProps } from '../SystemMessage'
@@ -153,4 +154,6 @@ export interface GiftedChatProps extends Partial
+ /** Emoji reactions configuration */
+ reactions?: ReactionsProps
}
diff --git a/src/Message/types.ts b/src/Message/types.ts
index 97130884e..71db59c2a 100644
--- a/src/Message/types.ts
+++ b/src/Message/types.ts
@@ -4,6 +4,7 @@ import { AvatarProps } from '../Avatar'
import { BubbleProps } from '../Bubble'
import { DayProps } from '../Day'
import { IMessage, User, LeftRightStyle } from '../Models'
+import { ReactionsProps } from '../Reactions'
import { SwipeToReplyProps } from '../Reply'
import { SystemMessageProps } from '../SystemMessage'
@@ -23,4 +24,6 @@ export interface MessageProps {
onMessageLayout?: (event: LayoutChangeEvent) => void
/** Swipe to reply configuration */
swipeToReply?: SwipeToReplyProps
+ /** Emoji reactions configuration */
+ reactions?: ReactionsProps
}
diff --git a/src/MessagesContainer/types.ts b/src/MessagesContainer/types.ts
index b36b7c7d3..16741bb64 100644
--- a/src/MessagesContainer/types.ts
+++ b/src/MessagesContainer/types.ts
@@ -11,6 +11,7 @@ import { DayProps } from '../Day'
import { LoadEarlierMessagesProps } from '../LoadEarlierMessages'
import { MessageProps } from '../Message'
import { User, IMessage, Reply } from '../Models'
+import { ReactionsProps } from '../Reactions'
import { ReplyProps } from '../Reply'
import { TypingIndicatorProps } from '../TypingIndicator/types'
@@ -85,6 +86,8 @@ export interface MessagesContainerProps
isDayAnimationEnabled?: boolean
/** Reply functionality configuration */
reply?: ReplyProps
+ /** Emoji reactions configuration */
+ reactions?: ReactionsProps
}
export interface State {
diff --git a/src/Models.ts b/src/Models.ts
index 86b0b9d6f..b76195a3c 100644
--- a/src/Models.ts
+++ b/src/Models.ts
@@ -29,6 +29,13 @@ export interface QuickReplies {
export interface ReplyMessage extends Pick {}
+export interface MessageReaction {
+ /** The emoji character (e.g. '👍') */
+ emoji: string
+ /** IDs of the users who reacted with this emoji */
+ userIds: (string | number)[]
+}
+
export interface IMessage {
_id: string | number
text: string
@@ -43,6 +50,7 @@ export interface IMessage {
pending?: boolean
quickReplies?: QuickReplies
replyMessage?: ReplyMessage
+ reactions?: MessageReaction[]
location?: {
latitude: number
longitude: number
diff --git a/src/Reactions/FullEmojiPicker.tsx b/src/Reactions/FullEmojiPicker.tsx
new file mode 100644
index 000000000..3fb053c48
--- /dev/null
+++ b/src/Reactions/FullEmojiPicker.tsx
@@ -0,0 +1,263 @@
+import React, {
+ forwardRef,
+ useCallback,
+ useEffect,
+ useImperativeHandle,
+ useState,
+} from 'react'
+import {
+ Dimensions,
+ Platform,
+ Pressable,
+ StyleSheet,
+ Text,
+ View,
+} from 'react-native'
+import { Gesture, GestureDetector } from 'react-native-gesture-handler'
+import Animated, {
+ runOnJS,
+ useAnimatedStyle,
+ useSharedValue,
+ withSpring,
+ withTiming,
+} from 'react-native-reanimated'
+
+import { EmojiPickerSearchBarProps, FullEmojiPickerTheme } from './types'
+
+// ---------------------------------------------------------------------------
+// Lazy-require react-native-emoji-chooser so the library stays functional
+// even when the package is not installed (it is an optional peer dependency).
+// ---------------------------------------------------------------------------
+
+let EmojiPicker: React.ComponentType | null = null
+try {
+
+ EmojiPicker = require('react-native-emoji-chooser').default
+} catch { /* optional dep — not installed */ }
+
+const { height: WINDOW_HEIGHT, width: WINDOW_WIDTH } = Dimensions.get('window')
+const SHEET_HEIGHT = WINDOW_HEIGHT * 0.8
+const SAFE_BOTTOM_PADDING = Platform.OS === 'ios' ? 24 : 16
+const SWIPE_CLOSE_THRESHOLD = 80
+
+// Public ref type — matches @gorhom/bottom-sheet's minimal API
+
+export interface FullEmojiPickerRef {
+ /** Slide the sheet into view */
+ expand: () => void
+ /** Slide the sheet out and call onClose */
+ close: () => void
+}
+
+export interface FullEmojiPickerProps {
+ onSelect: (emoji: string) => void
+ onClose: () => void
+ mode?: 'light' | 'dark'
+ lang?: string
+ columnCount?: number
+ theme?: FullEmojiPickerTheme
+ searchBarProps?: EmojiPickerSearchBarProps
+}
+
+export const FullEmojiPicker = forwardRef(
+ (props, ref) => {
+ const {
+ onSelect,
+ onClose,
+ mode = 'light',
+ lang = 'en',
+ columnCount = 6,
+ theme = {},
+ searchBarProps,
+ } = props
+
+ const [isMounted, setIsMounted] = useState(false)
+
+ const translateY = useSharedValue(SHEET_HEIGHT)
+ const backdropOpacity = useSharedValue(0)
+ const panOffsetY = useSharedValue(0)
+
+
+ const close = useCallback(() => {
+ translateY.value = withTiming(SHEET_HEIGHT, { duration: 250 })
+ backdropOpacity.value = withTiming(0, { duration: 250 }, finished => {
+ if (finished)
+ runOnJS(onClose)()
+ })
+ }, [backdropOpacity, onClose, translateY])
+
+ const expand = useCallback(() => {
+ setIsMounted(true)
+ }, [])
+
+ // Trigger the entrance animation once the component is mounted in the tree
+ useEffect(() => {
+ if (!isMounted)
+ return
+
+ translateY.value = withTiming(0, { duration: 300 })
+ backdropOpacity.value = withTiming(0.6, { duration: 300 })
+ // eslint-disable-next-line react-hooks/exhaustive-deps
+ }, [isMounted])
+
+ useImperativeHandle(ref, () => ({ expand, close }), [expand, close])
+
+ // Swipe-to-dismiss gesture
+ const panGesture = Gesture.Pan()
+ .onUpdate(e => {
+ panOffsetY.value = Math.max(0, e.translationY)
+ translateY.value = Math.max(0, e.translationY)
+ })
+ .onEnd(e => {
+ if (e.translationY > SWIPE_CLOSE_THRESHOLD) {
+ runOnJS(close)()
+ } else {
+ translateY.value = withSpring(0, { damping: 22, stiffness: 110 })
+ panOffsetY.value = 0
+ }
+ })
+
+ const sheetStyle = useAnimatedStyle(() => ({
+ transform: [{ translateY: translateY.value }],
+ }))
+
+ const backdropStyle = useAnimatedStyle(() => ({
+ opacity: backdropOpacity.value,
+ }))
+
+ if (!isMounted)
+ return null
+
+ // ------------------------------------------------------------------
+ // Theme for EmojiPicker — build from overrides.
+ // Typed as Record because StyleProp values are complex
+ // union types that cannot be spread directly, and the whole object
+ // is forwarded to the lazily-required react-native-emoji-chooser.
+ // ------------------------------------------------------------------
+ const lightOverrides = theme.light ?? {}
+ const darkOverrides = theme.dark ?? {}
+
+
+ const emojiPickerTheme: Record = {
+ light: {
+ searchbar: {
+ ...(lightOverrides.searchbar as Record),
+ placeholderColor: searchBarProps?.placeholderTextColor,
+ },
+ toolbar: {
+ container: {
+ paddingBottom: SAFE_BOTTOM_PADDING,
+ ...(lightOverrides.toolbar?.container as Record),
+ },
+ },
+ },
+ dark: {
+ searchbar: {
+ ...(darkOverrides.searchbar as Record),
+ placeholderColor: searchBarProps?.placeholderTextColor,
+ },
+ toolbar: {
+ container: {
+ paddingBottom: SAFE_BOTTOM_PADDING,
+ ...(darkOverrides.toolbar?.container as Record),
+ },
+ },
+ },
+ }
+
+ const bgColor = mode === 'dark' ? '#111827' : '#ffffff'
+ const handleColor = mode === 'dark' ? '#4b5563' : '#d1d5db'
+
+ return (
+ <>
+ {/* Semi-transparent backdrop — tap to dismiss */}
+
+
+
+
+ {/* Slide-up sheet */}
+
+ {/* Drag handle — pan gesture attached here */}
+
+
+
+
+
+
+ {/* Emoji picker content */}
+ {EmojiPicker ? (
+ {
+ onSelect(emoji)
+ close()
+ }}
+ mode={mode}
+ lang={lang}
+ columnCount={columnCount}
+ theme={emojiPickerTheme}
+ searchBarProps={searchBarProps}
+ />
+ ) : (
+
+
+ {'Install react-native-emoji-chooser to enable the full emoji browser.'}
+
+
+ )}
+
+ >
+ )
+ }
+)
+
+FullEmojiPicker.displayName = 'FullEmojiPicker'
+
+// ---------------------------------------------------------------------------
+// Styles
+// ---------------------------------------------------------------------------
+
+const styles = StyleSheet.create({
+ backdrop: {
+ backgroundColor: '#000000',
+ },
+ sheet: {
+ position: 'absolute',
+ bottom: 0,
+ left: 0,
+ right: 0,
+ borderTopLeftRadius: 16,
+ borderTopRightRadius: 16,
+ overflow: 'hidden',
+ },
+ handleContainer: {
+ width: '100%',
+ alignItems: 'center',
+ paddingVertical: 12,
+ },
+ handle: {
+ width: 40,
+ height: 4,
+ borderRadius: 2,
+ },
+ missingContainer: {
+ flex: 1,
+ justifyContent: 'center',
+ alignItems: 'center',
+ padding: 32,
+ },
+ missingText: {
+ textAlign: 'center',
+ color: '#6b7280',
+ fontSize: 14,
+ lineHeight: 22,
+ },
+})
diff --git a/src/Reactions/MessageReactions.tsx b/src/Reactions/MessageReactions.tsx
new file mode 100644
index 000000000..4dc06d386
--- /dev/null
+++ b/src/Reactions/MessageReactions.tsx
@@ -0,0 +1,116 @@
+import React from 'react'
+import { Pressable, StyleSheet, Text, View } from 'react-native'
+
+import { Color } from '../Color'
+import { IMessage } from '../Models'
+import { MessageReactionsDisplayProps } from './types'
+
+export const MessageReactions = (
+ props: MessageReactionsDisplayProps
+): React.ReactElement | null => {
+ const {
+ reactions,
+ currentUserId,
+ position,
+ onReactionPress,
+ containerStyle,
+ reactionStyle,
+ reactionActiveStyle,
+ reactionTextStyle,
+ reactionCountStyle,
+ } = props
+
+ if (!reactions || reactions.length === 0)
+ return null
+
+ return (
+
+ {reactions.map(reaction => {
+ const isActive = currentUserId != null && reaction.userIds.includes(currentUserId)
+ const count = reaction.userIds.length
+
+ return (
+ onReactionPress?.(reaction.emoji)}
+ style={({ pressed }) => [
+ styles.pill,
+ isActive ? styles.pillActive : styles.pillInactive,
+ isActive ? reactionActiveStyle : reactionStyle,
+ pressed && styles.pillPressed,
+ ]}
+ >
+ {reaction.emoji}
+ {count > 1 && (
+
+ {count}
+
+ )}
+
+ )
+ })}
+
+ )
+}
+
+const styles = StyleSheet.create({
+ container: {
+ flexDirection: 'row',
+ flexWrap: 'wrap',
+ marginTop: 3,
+ gap: 4,
+ },
+ containerLeft: {
+ justifyContent: 'flex-start',
+ paddingLeft: 4,
+ },
+ containerRight: {
+ justifyContent: 'flex-end',
+ paddingRight: 4,
+ },
+ pill: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ borderRadius: 12,
+ paddingHorizontal: 7,
+ paddingVertical: 3,
+ borderWidth: 1,
+ },
+ pillInactive: {
+ backgroundColor: 'rgba(0, 0, 0, 0.06)',
+ borderColor: 'transparent',
+ },
+ pillActive: {
+ backgroundColor: 'rgba(0, 132, 255, 0.15)',
+ borderColor: Color.defaultBlue,
+ },
+ pillPressed: {
+ opacity: 0.7,
+ },
+ emoji: {
+ fontSize: 15,
+ lineHeight: 20,
+ },
+ count: {
+ fontSize: 12,
+ marginLeft: 3,
+ color: Color.black,
+ lineHeight: 20,
+ },
+ countActive: {
+ color: Color.defaultBlue,
+ fontWeight: '600',
+ },
+})
diff --git a/src/Reactions/ReactionPicker.tsx b/src/Reactions/ReactionPicker.tsx
new file mode 100644
index 000000000..bd1109f5b
--- /dev/null
+++ b/src/Reactions/ReactionPicker.tsx
@@ -0,0 +1,246 @@
+import React, { useCallback, useRef } from 'react'
+import {
+ Dimensions,
+ Modal,
+ Pressable,
+ StyleSheet,
+ Text,
+ View,
+} from 'react-native'
+import { GestureHandlerRootView } from 'react-native-gesture-handler'
+import Animated, {
+ runOnJS,
+ useAnimatedStyle,
+ useSharedValue,
+ withTiming,
+} from 'react-native-reanimated'
+
+import { IMessage } from '../Models'
+import { FullEmojiPicker, FullEmojiPickerRef } from './FullEmojiPicker'
+import { ReactionPickerProps } from './types'
+
+const PICKER_HEIGHT = 54
+const EMOJI_BUTTON_SIZE = 46
+const PICKER_PADDING_H = 8
+const PICKER_VERTICAL_OFFSET = 8
+const QUICK_PICKER_ANIMATE_DURATION = 200
+
+export const ReactionPicker = (
+ props: ReactionPickerProps
+): React.ReactElement | null => {
+ const {
+ visible,
+ emojis,
+ onSelect,
+ onDismiss,
+ position,
+ pageX = 0,
+ pageY = 0,
+ bubbleWidth = 0,
+ bubbleHeight = 0,
+ pickerContainerStyle,
+ pickerEmojiStyle,
+ isFullPickerEnabled,
+ mode = 'light',
+ fullPickerLang,
+ fullPickerColumnCount,
+ fullPickerTheme,
+ fullPickerSearchBarProps,
+ } = props
+
+ const { width: screenWidth } = Dimensions.get('window')
+
+ // Ref to the full emoji picker sheet
+ const fullPickerRef = useRef(null)
+
+ // Scale animation for the quick-picker bar
+ const pickerScale = useSharedValue(1)
+
+ const quickPickerStyle = useAnimatedStyle(() => ({
+ transform: [{ scale: pickerScale.value }],
+ }))
+
+ // Positioning the quick-picker bar
+ const pickerWidth = emojis.length * EMOJI_BUTTON_SIZE + PICKER_PADDING_H * 2
+ + (isFullPickerEnabled ? EMOJI_BUTTON_SIZE : 0)
+
+ const spaceAbove = pageY
+ const showAbove = spaceAbove >= PICKER_HEIGHT + PICKER_VERTICAL_OFFSET
+ const pickerTop = showAbove
+ ? pageY - PICKER_HEIGHT - PICKER_VERTICAL_OFFSET
+ : pageY + bubbleHeight + PICKER_VERTICAL_OFFSET
+
+ let pickerLeft: number
+ if (position === 'right')
+ pickerLeft = pageX + bubbleWidth - pickerWidth
+ else
+ pickerLeft = pageX
+
+ pickerLeft = Math.max(8, Math.min(pickerLeft, screenWidth - pickerWidth - 8))
+
+ const handleSelect = useCallback(
+ (emoji: string) => {
+ onSelect(emoji)
+ onDismiss()
+ },
+ [onSelect, onDismiss]
+ )
+
+ const openFullPicker = useCallback(() => {
+ fullPickerRef.current?.expand()
+ }, [])
+
+ const handleOpenFullPicker = useCallback(() => {
+ pickerScale.value = withTiming(
+ 0,
+ { duration: QUICK_PICKER_ANIMATE_DURATION },
+ finished => {
+ if (finished)
+ runOnJS(openFullPicker)()
+ }
+ )
+ }, [openFullPicker, pickerScale])
+
+ if (!visible)
+ return null
+
+ return (
+
+ {/*
+ * GestureHandlerRootView is required inside the Modal so that
+ * the FullEmojiPicker's pan-to-dismiss gesture is recognised.
+ */}
+
+ {/* ----------------------------------------------------------------
+ Backdrop — dismiss quick picker on tap (ignored when full
+ picker is open, whose own backdrop handles dismissal).
+ ---------------------------------------------------------------- */}
+
+
+ {/* ----------------------------------------------------------------
+ Quick-picker bar — scales away before full picker opens
+ ---------------------------------------------------------------- */}
+
+ {emojis.map(emoji => (
+ handleSelect(emoji)}
+ style={({ pressed }) => [
+ styles.emojiButton,
+ pressed && styles.emojiButtonPressed,
+ ]}
+ >
+ {emoji}
+
+ ))}
+
+ {/* "+" button opens the full emoji browser */}
+ {isFullPickerEnabled && (
+ <>
+
+ [
+ styles.emojiButton,
+ styles.plusButton,
+ pressed && styles.emojiButtonPressed,
+ ]}
+ >
+ {'+'}
+
+ >
+ )}
+
+
+ {/* ----------------------------------------------------------------
+ Full emoji browser (slide-up sheet + EmojiChooser)
+ Rendered inside the same Modal so the backdrop correctly
+ covers it at full-screen height.
+ ---------------------------------------------------------------- */}
+ {isFullPickerEnabled && (
+
+ )}
+
+
+ )
+}
+
+// ---------------------------------------------------------------------------
+// Styles
+// ---------------------------------------------------------------------------
+
+const styles = StyleSheet.create({
+ gestureRoot: {
+ flex: 1,
+ },
+ picker: {
+ position: 'absolute',
+ height: PICKER_HEIGHT,
+ flexDirection: 'row',
+ alignItems: 'center',
+ backgroundColor: '#ffffff',
+ borderRadius: PICKER_HEIGHT / 2,
+ paddingHorizontal: PICKER_PADDING_H,
+ shadowColor: '#000',
+ shadowOffset: { width: 0, height: 4 },
+ shadowOpacity: 0.15,
+ shadowRadius: 12,
+ elevation: 8,
+ },
+ emojiButton: {
+ width: EMOJI_BUTTON_SIZE,
+ height: EMOJI_BUTTON_SIZE,
+ justifyContent: 'center',
+ alignItems: 'center',
+ borderRadius: EMOJI_BUTTON_SIZE / 2,
+ },
+ emojiButtonPressed: {
+ backgroundColor: 'rgba(0, 0, 0, 0.07)',
+ transform: [{ scale: 1.2 }],
+ },
+ emoji: {
+ fontSize: 26,
+ lineHeight: 32,
+ },
+ divider: {
+ width: 1,
+ height: 28,
+ backgroundColor: 'rgba(0, 0, 0, 0.1)',
+ marginHorizontal: 2,
+ },
+ plusButton: {
+ backgroundColor: 'rgba(0, 0, 0, 0.04)',
+ },
+ plusText: {
+ fontSize: 22,
+ lineHeight: 26,
+ color: '#374151',
+ fontWeight: '500',
+ },
+})
diff --git a/src/Reactions/index.ts b/src/Reactions/index.ts
new file mode 100644
index 000000000..2f6736a8d
--- /dev/null
+++ b/src/Reactions/index.ts
@@ -0,0 +1,8 @@
+export * from './types'
+export { MessageReactions } from './MessageReactions'
+export { ReactionPicker } from './ReactionPicker'
+export { FullEmojiPicker } from './FullEmojiPicker'
+export type { FullEmojiPickerRef, FullEmojiPickerProps } from './FullEmojiPicker'
+
+/** Default set of emojis shown in the reaction quick-picker */
+export const DEFAULT_REACTION_EMOJIS: string[] = ['👍', '❤️', '😂', '😮', '😢', '👎']
diff --git a/src/Reactions/types.ts b/src/Reactions/types.ts
new file mode 100644
index 000000000..72c4d5c94
--- /dev/null
+++ b/src/Reactions/types.ts
@@ -0,0 +1,145 @@
+import React from 'react'
+import { StyleProp, TextStyle, ViewStyle } from 'react-native'
+
+import { IMessage, MessageReaction } from '../Models'
+
+export type { MessageReaction }
+
+/** Props passed to the default (or custom) reactions-display component rendered below each bubble */
+export interface MessageReactionsDisplayProps {
+ message: TMessage
+ reactions: MessageReaction[]
+ currentUserId?: string | number
+ position: 'left' | 'right'
+ onReactionPress?: (emoji: string) => void
+ containerStyle?: StyleProp
+ reactionStyle?: StyleProp
+ reactionActiveStyle?: StyleProp
+ reactionTextStyle?: StyleProp
+ reactionCountStyle?: StyleProp
+}
+
+/** Props passed to the default (or custom) reaction-picker component shown on long-press */
+export interface ReactionPickerProps {
+ visible: boolean
+ message: TMessage
+ emojis: string[]
+ onSelect: (emoji: string) => void
+ onDismiss: () => void
+ position: 'left' | 'right'
+ /** Horizontal screen-coordinate of the bubble's top-left corner */
+ pageX?: number
+ /** Vertical screen-coordinate of the bubble's top edge */
+ pageY?: number
+ /** Measured width of the bubble container */
+ bubbleWidth?: number
+ /** Measured height of the bubble container */
+ bubbleHeight?: number
+ pickerContainerStyle?: StyleProp
+ pickerEmojiStyle?: StyleProp
+ /** Show a "+" button that opens the full emoji browser; default false */
+ isFullPickerEnabled?: boolean
+ /** Color scheme forwarded to the full emoji browser */
+ mode?: 'light' | 'dark'
+ /** Language code forwarded to the full emoji browser (e.g. 'en', 'uk') */
+ fullPickerLang?: string
+ /** Column count for the full emoji browser grid; default 6 */
+ fullPickerColumnCount?: number
+ /** Theme overrides for the full emoji browser */
+ fullPickerTheme?: FullEmojiPickerTheme
+ /** SearchBar props forwarded to the full emoji browser */
+ fullPickerSearchBarProps?: EmojiPickerSearchBarProps
+}
+
+// ---------------------------------------------------------------------------
+// Full emoji-browser (slide-up sheet) types
+// ---------------------------------------------------------------------------
+
+export interface EmojiPickerSearchBarProps {
+ placeholderTextColor?: string
+ [key: string]: unknown
+}
+
+export interface EmojiPickerSearchBarOverride {
+ container?: StyleProp
+ textInput?: StyleProp
+}
+
+export interface EmojiPickerToolbarOverride {
+ container?: StyleProp
+}
+
+export interface EmojiPickerThemeMode {
+ searchbar?: EmojiPickerSearchBarOverride
+ toolbar?: EmojiPickerToolbarOverride
+}
+
+/** Per-mode theme overrides forwarded to `react-native-emoji-chooser` */
+export interface FullEmojiPickerTheme {
+ light?: EmojiPickerThemeMode
+ dark?: EmojiPickerThemeMode
+}
+
+/**
+ * Top-level emoji-reactions configuration.
+ * Pass this as the `reactions` prop to ``.
+ */
+export interface ReactionsProps {
+ /**
+ * Enable emoji reactions on messages.
+ * @default false
+ */
+ isEnabled?: boolean
+ /**
+ * Emoji options shown in the quick picker.
+ * @default ['👍', '❤️', '😂', '😮', '😢', '👎']
+ */
+ emojis?: string[]
+ /**
+ * Called when the user selects an emoji in the picker or taps an existing
+ * reaction pill. Toggle logic is left to the consumer.
+ */
+ onReactionPress?: (message: TMessage, emoji: string) => void
+ /** Override the reactions-display component rendered below the bubble */
+ renderReactions?: (props: MessageReactionsDisplayProps) => React.ReactNode
+ /** Override the emoji-picker component shown on long-press */
+ renderReactionPicker?: (props: ReactionPickerProps) => React.ReactNode
+ /** Style for the container wrapping all reaction pills */
+ containerStyle?: StyleProp
+ /** Style applied to every inactive reaction pill */
+ reactionStyle?: StyleProp
+ /** Style applied to the current-user's active reaction pill */
+ reactionActiveStyle?: StyleProp
+ /** Style for the emoji text inside each pill */
+ reactionTextStyle?: StyleProp
+ /** Style for the count label inside each pill */
+ reactionCountStyle?: StyleProp
+ /** Style for the floating quick-picker panel */
+ pickerContainerStyle?: StyleProp
+ /** Style for each emoji button inside the quick picker */
+ pickerEmojiStyle?: StyleProp
+
+ // -------------------------------------------------------------------------
+ // Full emoji-browser (slide-up sheet)
+ // -------------------------------------------------------------------------
+
+ /**
+ * Show a "+" button in the quick picker that opens a full emoji browser.
+ * Requires `react-native-emoji-chooser` (and its peer deps) to be installed.
+ * @default false
+ */
+ isFullPickerEnabled?: boolean
+ /**
+ * Force a color scheme for the full emoji browser.
+ * Defaults to the GiftedChat color scheme (system if not overridden).
+ */
+ fullPickerMode?: 'light' | 'dark'
+ /** Language code for the full emoji browser (e.g. 'en', 'uk'); default 'en' */
+ fullPickerLang?: string
+ /** Column count for the emoji grid in the full browser; default 6 */
+ fullPickerColumnCount?: number
+ /** Deep theme overrides passed to `react-native-emoji-chooser` */
+ fullPickerTheme?: FullEmojiPickerTheme
+ /** SearchBar props forwarded to the full emoji browser */
+ fullPickerSearchBarProps?: EmojiPickerSearchBarProps
+}