diff --git a/example/App.js b/example/App.js deleted file mode 100644 index 834a527..0000000 --- a/example/App.js +++ /dev/null @@ -1 +0,0 @@ -export { default } from './src/App'; diff --git a/example/app.json b/example/app.json index 6406397..2978a79 100644 --- a/example/app.json +++ b/example/app.json @@ -1,6 +1,7 @@ { "expo": { "name": "Lazy ScrollView", + "scheme": "lazyscrollview", "slug": "example", "version": "1.0.0", "orientation": "portrait", @@ -26,6 +27,7 @@ }, "web": { "favicon": "./assets/favicon.png" - } + }, + "plugins": ["expo-router"] } } diff --git a/example/app/_layout.tsx b/example/app/_layout.tsx new file mode 100644 index 0000000..dc9bee1 --- /dev/null +++ b/example/app/_layout.tsx @@ -0,0 +1,22 @@ +import { Stack } from 'expo-router'; + +export default function Layout() { + return ( + + + + + + ); +} diff --git a/example/app/index.tsx b/example/app/index.tsx new file mode 100644 index 0000000..07e2f29 --- /dev/null +++ b/example/app/index.tsx @@ -0,0 +1,67 @@ +import { Stack } from 'expo-router'; +import { + Dimensions, + Image, + ScrollView, + StyleSheet, + Text, + View, +} from 'react-native'; +import { useSafeAreaInsets } from 'react-native-safe-area-context'; +import { HorizontalCard } from '../components/cards/HorizontalCard'; +import { NoLazyCard } from '../components/cards/NoLazyCard'; +import { VerticalCard } from '../components/cards/VerticalCard'; + +export default function App() { + const { top, bottom } = useSafeAreaInsets(); + + return ( + + + + + + + Lazy ScrollView Example App + + + + + + + + ); +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: '#ecf0f1', + padding: 16, + }, + image: { + width: Dimensions.get('window').width * 0.3, + aspectRatio: 1, + }, + row: { + flexDirection: 'row', + justifyContent: 'space-between', + flex: 1, + alignItems: 'flex-end', + }, + textContainer: { + flex: 1, + justifyContent: 'flex-end', + alignItems: 'flex-end', + padding: 8, + }, + header: { + fontSize: 24, + fontWeight: 'bold', + lineHeight: 32, + textAlign: 'right', + }, +}); diff --git a/example/app/scrollviews/horizontal.tsx b/example/app/scrollviews/horizontal.tsx new file mode 100644 index 0000000..6df0fb7 --- /dev/null +++ b/example/app/scrollviews/horizontal.tsx @@ -0,0 +1,79 @@ +import React, { useRef } from 'react'; + +import { StyleSheet, Text, TouchableOpacity, View } from 'react-native'; +import { + LazyScrollView, + LazyScrollViewMethods, +} from 'react-native-lazy-scrollview'; +import { PADDING_VERTICAL } from '../../constants'; +import { Blocks } from '../../components/blocks/Blocks'; + +const OFFSET = -50; + +export default function HorizontalScrollView() { + const ref = useRef(null); + + return ( + + + + + + ref.current?.scrollToStart({ animated: true })} + > + ⬅️ + + ref.current?.scrollToEnd({ animated: true })} + > + ➡️ + + + + ); +} + +const styles = StyleSheet.create({ + scrollviewContainer: { + flex: 1, + backgroundColor: '#ecf0f1', + }, + offsetBar: { + position: 'absolute', + bottom: OFFSET * -1 + PADDING_VERTICAL, + borderBottomWidth: 1, + borderBottomColor: 'black', + left: 0, + right: 0, + opacity: 0.7, + height: 50, + justifyContent: 'flex-end', + }, + offsetText: { + color: 'white', + fontSize: 18, + fontWeight: '600', + backgroundColor: '#000', + padding: 8, + alignSelf: 'flex-start', + }, + arrowsContainer: { + top: 8, + right: 8, + position: 'absolute', + justifyContent: 'center', + alignItems: 'center', + flexDirection: 'row', + }, + arrowButton: {}, + arrow: { fontSize: 32 }, +}); diff --git a/example/app/scrollviews/nocontext.tsx b/example/app/scrollviews/nocontext.tsx new file mode 100644 index 0000000..1f590e9 --- /dev/null +++ b/example/app/scrollviews/nocontext.tsx @@ -0,0 +1,20 @@ +import { ScrollView, StyleSheet, Text } from 'react-native'; +import { Blocks } from '../../components/blocks/Blocks'; + +export default function NoContext() { + return ( + + + + ); +} + +const styles = StyleSheet.create({ + scrollviewContainer: { + flex: 1, + backgroundColor: '#ecf0f1', + }, +}); diff --git a/example/src/components/scrollviews/VerticalScrollView.tsx b/example/app/scrollviews/vertical.tsx similarity index 80% rename from example/src/components/scrollviews/VerticalScrollView.tsx rename to example/app/scrollviews/vertical.tsx index 38888b7..b41d8f9 100644 --- a/example/src/components/scrollviews/VerticalScrollView.tsx +++ b/example/app/scrollviews/vertical.tsx @@ -1,4 +1,4 @@ -import React, { useRef } from 'react'; +import { useRef } from 'react'; import { StyleSheet, Text, TouchableOpacity, View } from 'react-native'; import { @@ -6,11 +6,11 @@ import { LazyScrollViewMethods, } from 'react-native-lazy-scrollview'; import { PADDING_VERTICAL } from '../../constants'; -import { BlockColumns } from './BlockColumns'; +import { Blocks } from '../../components/blocks/Blocks'; -const OFFSET = -100; +const OFFSET = -50; -export function VerticalScrollView() { +export default function VerticalScrollView() { const ref = useRef(null); return ( @@ -20,7 +20,7 @@ export function VerticalScrollView() { offset={OFFSET} showsVerticalScrollIndicator={false} > - + ⬇️ - - {`Offset: ${OFFSET}`} - ); } @@ -47,8 +44,7 @@ export function VerticalScrollView() { const styles = StyleSheet.create({ scrollviewContainer: { flex: 1, - paddingVertical: PADDING_VERTICAL, - backgroundColor: '#2d3436', + backgroundColor: '#ecf0f1', }, offsetBar: { position: 'absolute', @@ -70,11 +66,11 @@ const styles = StyleSheet.create({ alignSelf: 'flex-start', }, arrowsContainer: { - top: 0, - bottom: 0, - right: 0, + top: 8, + right: 8, position: 'absolute', justifyContent: 'center', + flexDirection: 'row', }, arrowButton: { marginBottom: 8 }, arrow: { fontSize: 32 }, diff --git a/example/assets/horizontal.png b/example/assets/horizontal.png new file mode 100644 index 0000000..2daabe1 Binary files /dev/null and b/example/assets/horizontal.png differ diff --git a/example/assets/lazy.png b/example/assets/lazy.png new file mode 100644 index 0000000..03b1b45 Binary files /dev/null and b/example/assets/lazy.png differ diff --git a/example/assets/no.png b/example/assets/no.png new file mode 100644 index 0000000..9a352b8 Binary files /dev/null and b/example/assets/no.png differ diff --git a/example/assets/vertical.png b/example/assets/vertical.png new file mode 100644 index 0000000..99fff64 Binary files /dev/null and b/example/assets/vertical.png differ diff --git a/example/components/blocks/Blocks.tsx b/example/components/blocks/Blocks.tsx new file mode 100644 index 0000000..d08838f --- /dev/null +++ b/example/components/blocks/Blocks.tsx @@ -0,0 +1,89 @@ +import { useCallback } from 'react'; + +import { chunk } from 'lodash'; +import shuffle from 'lodash/shuffle'; +import { + Dimensions, + ImageSourcePropType, + StyleSheet, + View, +} from 'react-native'; +import { ALBUMS, SQUARE_SIZE } from '../../constants'; +import { FireOnceBlock } from '../blocks/FireOnceBlock'; +import { ImageBlock } from '../blocks/ImageBlock'; +import { NoLazyChild } from '../blocks/NoLazyChild'; + +export function Blocks({ horizontal }: { horizontal?: boolean }) { + const chunks = chunk( + shuffle(ALBUMS.concat(shuffle(ALBUMS)).concat(shuffle(ALBUMS))), + 9 + ); + + const renderBlock = useCallback( + (source: ImageSourcePropType | 'no-lazy' | 'fire-once', index: number) => { + if (source === 'no-lazy') { + return ; + } + + if (source === 'fire-once') { + return ( + + ); + } + + return ( + + ); + }, + [] + ); + + const renderRow = ( + column: (ImageSourcePropType | 'no-lazy' | 'fire-once')[], + index: number + ) => { + return ( + + {column.map(renderBlock)} + + ); + }; + + return horizontal ? ( + + {chunks.map(renderRow)} + + ) : ( + + {shuffle(ALBUMS).map(renderBlock)} + + {shuffle(ALBUMS).map(renderBlock)} + + + ); +} + +const styles = StyleSheet.create({ + container: { + flexDirection: 'row', + }, + offset: { + transform: [{ translateY: -SQUARE_SIZE / 2 }], + }, + offsetHorizontal: { + transform: [{ translateX: -SQUARE_SIZE / 2 }], + }, +}); diff --git a/example/src/components/blocks/FireOnceBlock.tsx b/example/components/blocks/FireOnceBlock.tsx similarity index 74% rename from example/src/components/blocks/FireOnceBlock.tsx rename to example/components/blocks/FireOnceBlock.tsx index c902c2f..8c4cc17 100644 --- a/example/src/components/blocks/FireOnceBlock.tsx +++ b/example/components/blocks/FireOnceBlock.tsx @@ -1,4 +1,4 @@ -import React, { ComponentProps, useMemo, useState } from 'react'; +import { ComponentProps, useMemo, useState } from 'react'; import { ActivityIndicator, StyleSheet, Text, View } from 'react-native'; import { LazyChild } from 'react-native-lazy-scrollview'; import { SQUARE_SIZE } from '../../constants'; @@ -23,22 +23,23 @@ export function FireOnceBlock( ); return ( - - - {triggered ? ( - + + + + {triggered ? ( I didn't provide exit functions so my entering callbacks fire only once, then measurement stops 🤯 - - ) : ( - - )} + ) : ( + + )} + + {!isVisible && props.percentVisibleThreshold ? ( {`${ @@ -46,8 +47,8 @@ export function FireOnceBlock( } not visible`} ) : null} - - + + ); } @@ -55,15 +56,17 @@ const styles = StyleSheet.create({ container: { justifyContent: 'center', alignItems: 'center', - overflow: 'hidden', - alignSelf: 'center', width: SQUARE_SIZE, height: SQUARE_SIZE, - padding: 16, }, - image: { - width: SQUARE_SIZE, - height: SQUARE_SIZE, + contentContainer: { + width: SQUARE_SIZE - 16, + height: SQUARE_SIZE - 16, + borderRadius: 8, + overflow: 'hidden', + justifyContent: 'center', + alignItems: 'center', + padding: 16, }, percentTextWrapper: { position: 'absolute', diff --git a/example/src/components/blocks/ImageBlock.tsx b/example/components/blocks/ImageBlock.tsx similarity index 54% rename from example/src/components/blocks/ImageBlock.tsx rename to example/components/blocks/ImageBlock.tsx index 91a4ef2..41a85a5 100644 --- a/example/src/components/blocks/ImageBlock.tsx +++ b/example/components/blocks/ImageBlock.tsx @@ -1,4 +1,4 @@ -import React, { ComponentProps, useState } from 'react'; +import { ComponentProps, useState } from 'react'; import { ActivityIndicator, Image, @@ -35,28 +35,30 @@ export function ImageBlock({ source, ...rest }: Props) { }; return ( - - - {triggered ? ( - - ) : ( - - )} - {!isVisible && rest.percentVisibleThreshold ? ( - - {`${ - rest.percentVisibleThreshold * 100 - } not visible`} - - ) : null} - - + + + + {triggered ? ( + + ) : ( + + )} + {!isVisible && rest.percentVisibleThreshold ? ( + + {`${ + rest.percentVisibleThreshold * 100 + } not visible`} + + ) : null} + + + ); } @@ -65,14 +67,22 @@ const styles = StyleSheet.create({ justifyContent: 'center', alignItems: 'center', overflow: 'hidden', - backgroundColor: '#d1d8e0', alignSelf: 'center', width: SQUARE_SIZE, height: SQUARE_SIZE, }, + contentContainer: { + width: SQUARE_SIZE - 16, + height: SQUARE_SIZE - 16, + borderRadius: 8, + overflow: 'hidden', + justifyContent: 'center', + alignItems: 'center', + }, image: { - width: SQUARE_SIZE, - height: SQUARE_SIZE, + width: SQUARE_SIZE - 16, + height: SQUARE_SIZE - 16, + borderRadius: 8, }, percentTextWrapper: { position: 'absolute', diff --git a/example/src/components/blocks/NoLazyChild.tsx b/example/components/blocks/NoLazyChild.tsx similarity index 53% rename from example/src/components/blocks/NoLazyChild.tsx rename to example/components/blocks/NoLazyChild.tsx index ebc38c3..d572f78 100644 --- a/example/src/components/blocks/NoLazyChild.tsx +++ b/example/components/blocks/NoLazyChild.tsx @@ -1,27 +1,34 @@ -import React from 'react'; import { StyleSheet, Text, View } from 'react-native'; import { SQUARE_SIZE } from '../../constants'; export function NoLazyChild() { return ( - - I'm not wrapped in LazyChild so I render right away 😉 - + + + I'm not wrapped in LazyChild so I render right away 😉 + + ); } const styles = StyleSheet.create({ container: { + justifyContent: 'center', + alignItems: 'center', width: SQUARE_SIZE, height: SQUARE_SIZE, - aspectRatio: 1, + }, + contentContainer: { + width: SQUARE_SIZE - 16, + height: SQUARE_SIZE - 16, + backgroundColor: '#ff7f50', + borderRadius: 8, + overflow: 'hidden', justifyContent: 'center', alignItems: 'center', - alignSelf: 'center', padding: 16, - backgroundColor: '#7bed9f', }, text: { fontSize: 16, diff --git a/example/components/cards/Card.tsx b/example/components/cards/Card.tsx new file mode 100644 index 0000000..269a43c --- /dev/null +++ b/example/components/cards/Card.tsx @@ -0,0 +1,101 @@ +import { useRouter } from 'expo-router'; +import { + Image, + StyleSheet, + Text, + TouchableOpacity, + View, + ViewStyle, +} from 'react-native'; +import Animated from 'react-native-reanimated'; +import { VERTICAL } from '../../constants'; + +export function Card({ + scrollView, + animatedStyle, + imageOnBottom, +}: { + scrollView: typeof VERTICAL; + animatedStyle: ViewStyle; + imageOnBottom?: boolean; +}) { + const router = useRouter(); + + const onPress = () => { + router.push(`scrollviews/${scrollView.name}`); + }; + + return ( + + {imageOnBottom ? ( + <> + + {scrollView.title} + {scrollView.description} + + + + + + + + ) : ( + <> + + + + + + + + {scrollView.title} + {scrollView.description} + + + + )} + + ); +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: '#ecf0f1', + padding: 16, + }, + button: { + padding: 16, + borderRadius: 16, + marginVertical: 8, + }, + buttonTitle: { + color: 'white', + fontSize: 20, + lineHeight: 28, + fontWeight: '600', + }, + buttonText: { + color: 'white', + fontSize: 14, + lineHeight: 18, + }, + icon: { + padding: 12, + borderRadius: 64, + backgroundColor: 'white', + alignSelf: 'center', + }, + image: { + width: 24, + height: 24, + }, + textContainer: { + flex: 1, + }, +}); diff --git a/example/components/cards/HorizontalCard.tsx b/example/components/cards/HorizontalCard.tsx new file mode 100644 index 0000000..682f095 --- /dev/null +++ b/example/components/cards/HorizontalCard.tsx @@ -0,0 +1,30 @@ +import { useEffect } from 'react'; +import { + interpolate, + useAnimatedStyle, + useSharedValue, + withRepeat, + withTiming, +} from 'react-native-reanimated'; +import { HORIZONTAL } from '../../constants'; +import { Card } from './Card'; + +export function HorizontalCard() { + const animation = useSharedValue(0); + + useEffect(() => { + animation.value = withRepeat(withTiming(1, { duration: 1000 }), -1, true); + }, []); + const animatedStyle = useAnimatedStyle(() => { + return { + marginTop: 16, + transform: [ + { translateX: interpolate(animation.value, [0, 1], [-50, 50]) }, + ], + }; + }); + + return ( + + ); +} diff --git a/example/components/cards/NoLazyCard.tsx b/example/components/cards/NoLazyCard.tsx new file mode 100644 index 0000000..ebcda3e --- /dev/null +++ b/example/components/cards/NoLazyCard.tsx @@ -0,0 +1,29 @@ +import { useEffect } from 'react'; +import { + interpolate, + useAnimatedStyle, + useSharedValue, + withRepeat, + withTiming, +} from 'react-native-reanimated'; +import { NO_LAZY } from '../../constants'; +import { Card } from './Card'; + +export function NoLazyCard() { + const animation = useSharedValue(0); + + useEffect(() => { + animation.value = withRepeat(withTiming(1, { duration: 2000 }), -1); + }, []); + + const animatedStyle = useAnimatedStyle(() => { + return { + marginRight: 16, + transform: [ + { rotate: `${interpolate(animation.value, [0, 1], [0, 360])}deg` }, + ], + }; + }); + + return ; +} diff --git a/example/components/cards/VerticalCard.tsx b/example/components/cards/VerticalCard.tsx new file mode 100644 index 0000000..d5d9c5d --- /dev/null +++ b/example/components/cards/VerticalCard.tsx @@ -0,0 +1,28 @@ +import { useEffect } from 'react'; +import { + interpolate, + useAnimatedStyle, + useSharedValue, + withRepeat, + withTiming, +} from 'react-native-reanimated'; +import { VERTICAL } from '../../constants'; +import { Card } from './Card'; + +export function VerticalCard() { + const animation = useSharedValue(0); + + useEffect(() => { + animation.value = withRepeat(withTiming(1, { duration: 1000 }), -1, true); + }, []); + const animatedStyle = useAnimatedStyle(() => { + return { + marginRight: 16, + transform: [ + { translateY: interpolate(animation.value, [0, 1], [-20, 20]) }, + ], + }; + }); + + return ; +} diff --git a/example/constants.ts b/example/constants.ts new file mode 100644 index 0000000..a20e505 --- /dev/null +++ b/example/constants.ts @@ -0,0 +1,63 @@ +import shuffle from 'lodash/shuffle'; +import { Dimensions } from 'react-native'; + +export const ALBUMS = [ + require('./assets/albums/american-psycho.jpg'), + require('./assets/albums/doggstyle.jpg'), + require('./assets/albums/dude-ranch.jpg'), + require('./assets/albums/in_utero.jpg'), + require('./assets/albums/is-this-it.jpg'), + require('./assets/albums/let-it-be.jpg'), + require('./assets/albums/rip-this.jpeg'), + require('./assets/albums/spilt-milk.jpg'), + require('./assets/albums/suffer.jpg'), + require('./assets/albums/t-hives.jpg'), + require('./assets/albums/trendkill.jpg'), + require('./assets/albums/wysiatwin.jpg'), + require('./assets/albums/youre-welcome.jpeg'), + 'no-lazy', + 'no-lazy', + 'fire-once', + 'fire-once', +]; + +export const SHUFFLED_ALBUMS = shuffle(ALBUMS); + +export const PADDING_VERTICAL = 64; + +export const SQUARE_SIZE = Math.floor(Dimensions.get('window').width * 0.5); + +export const BLOCK_COLORS = [ + '#f8a5c2', + '#f5cd79', + '#ff7f50', + '#7bed9f', + '#1e90ff', +]; + +export const VERTICAL = { + name: 'vertical', + title: 'Vertical Lazy ScrollView', + color: '#1e90ff', + description: + 'LazyScrollView with vertical orientation. Offset is set to -50, so threshold triggers will happen 50 points before the top and bottom edges of the scrollview container. Visibility triggers will use the top and bottom edge of the scrollview container.', + image: require('./assets/vertical.png'), +}; + +export const HORIZONTAL = { + name: 'horizontal', + title: 'Horizontal Lazy ScrollView', + color: '#7bed9f', + description: + 'LazyScrollView with horizontal orientation. Offset is set to -50, so threshold triggers will happen 50 points before the left and right edges of the scrollview container. Visibility triggers will use the left and right edge of the scrollview container.', + image: require('./assets/horizontal.png'), +}; + +export const NO_LAZY = { + name: 'nocontext', + title: 'No LazyScrollView', + color: '#ff7f50', + description: + 'Standard ScrollView with no LazyScrollView wrapping the LazyChildren. Entering callbacks fire on render and no measuring or scroll tracking occurs.', + image: require('./assets/no.png'), +}; diff --git a/example/package.json b/example/package.json index 6ea3e77..714dcb1 100644 --- a/example/package.json +++ b/example/package.json @@ -1,7 +1,7 @@ { "name": "example", "version": "1.0.0", - "main": "node_modules/expo/AppEntry.js", + "main": "expo-router/entry", "scripts": { "start": "expo start", "android": "expo start --android", @@ -10,20 +10,33 @@ }, "dependencies": { "expo": "^51.0.37", + "expo-constants": "~16.0.2", + "expo-linking": "~6.3.1", + "expo-router": "~3.5.23", "expo-status-bar": "~1.12.1", "lodash": "^4.17.21", - "react": "18.2.0", + "react": "18.1.0", "react-dom": "18.2.0", "react-native": "0.74.5", "react-native-reanimated": "~3.10.1", + "react-native-safe-area-context": "4.10.5", + "react-native-screens": "3.31.1", + "react-native-svg": "15.2.0", "react-native-web": "~0.19.10" }, "devDependencies": { "@babel/core": "^7.24.0", "@expo/webpack-config": "~19.0.1", "@types/lodash": "^4.14.194", + "@types/react": "~18.2.79", "babel-loader": "^8.1.0", "babel-plugin-module-resolver": "^4.1.0" }, - "private": true + "private": true, + "eslintConfig": { + "extends": "expo", + "rules": { + "react/react-in-jsx-scope": "off" + } + } } diff --git a/example/src/App.tsx b/example/src/App.tsx deleted file mode 100644 index e501bff..0000000 --- a/example/src/App.tsx +++ /dev/null @@ -1,74 +0,0 @@ -import React, { useState } from 'react'; - -import { StyleSheet, Text, TouchableOpacity, View } from 'react-native'; -import { NoContext } from './components/scrollviews/NoContext'; -import { VerticalScrollView } from './components/scrollviews/VerticalScrollView'; - -const demoTypes = ['vertical', 'nocontext'] as const; -type DemoType = (typeof demoTypes)[number]; - -export default function App() { - const [type, setType] = useState(); - - const renderButton = (text: DemoType) => { - const onPress = () => { - setType(text); - }; - - const active = type === text; - - return ( - - - {active ? '✅' : ''} - {text} - - - ); - }; - - return ( - - {type === 'vertical' && } - {type === 'nocontext' && } - {demoTypes.map(renderButton)} - - ); -} - -const styles = StyleSheet.create({ - container: { - flex: 1, - backgroundColor: '#fff', - justifyContent: 'center', - alignItems: 'center', - }, - buttonContainer: { - position: 'absolute', - top: 0, - left: 0, - right: 0, - paddingTop: 56, - paddingHorizontal: 16, - flexDirection: 'row', - }, - button: { - backgroundColor: '#1e90ff', - padding: 8, - borderRadius: 8, - alignSelf: 'flex-start', - marginLeft: 8, - }, - buttonText: { - color: 'white', - fontSize: 16, - fontWeight: '600', - textAlign: 'center', - textTransform: 'uppercase', - }, -}); diff --git a/example/src/components/scrollviews/BlockColumns.tsx b/example/src/components/scrollviews/BlockColumns.tsx deleted file mode 100644 index c5bff85..0000000 --- a/example/src/components/scrollviews/BlockColumns.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import React, { useCallback } from 'react'; - -import shuffle from 'lodash/shuffle'; -import { ImageSourcePropType, StyleSheet, View } from 'react-native'; -import { ALBUMS, SQUARE_SIZE } from '../../constants'; -import { ImageBlock } from '../blocks/ImageBlock'; -import { NoLazyChild } from '../blocks/NoLazyChild'; -import { FireOnceBlock } from '../blocks/FireOnceBlock'; - -export function BlockColumns() { - const renderBlock = useCallback( - (source: ImageSourcePropType | 'no-lazy' | 'fire-once', index: number) => { - if (source === 'no-lazy') { - return ; - } - - if (source === 'fire-once') { - return ( - - ); - } - - return ( - - ); - }, - [] - ); - - return ( - - {shuffle(ALBUMS).map(renderBlock)} - - - {shuffle(ALBUMS).map(renderBlock)} - - - ); -} - -const styles = StyleSheet.create({ - container: { - flexDirection: 'row', - }, -}); diff --git a/example/src/components/scrollviews/NoContext.tsx b/example/src/components/scrollviews/NoContext.tsx deleted file mode 100644 index be09427..0000000 --- a/example/src/components/scrollviews/NoContext.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import React from 'react'; - -import { ScrollView, StyleSheet, Text } from 'react-native'; -import { BlockColumns } from './BlockColumns'; - -export function NoContext() { - return ( - - - These aren't wrapped in a LazyScrollView, so all onThresholdPass and - onVisibilityEnter callbacks are fired once, on mount - - - - ); -} - -const styles = StyleSheet.create({ - noContextHeader: { - fontSize: 24, - fontWeight: '600', - textAlign: 'center', - padding: 16, - marginTop: 80, - }, -}); diff --git a/example/src/constants.ts b/example/src/constants.ts deleted file mode 100644 index 27569b0..0000000 --- a/example/src/constants.ts +++ /dev/null @@ -1,36 +0,0 @@ -import shuffle from 'lodash/shuffle'; -import { Dimensions } from 'react-native'; - -export const ALBUMS = [ - require('../assets/albums/american-psycho.jpg'), - require('../assets/albums/doggstyle.jpg'), - require('../assets/albums/dude-ranch.jpg'), - require('../assets/albums/in_utero.jpg'), - require('../assets/albums/is-this-it.jpg'), - require('../assets/albums/let-it-be.jpg'), - require('../assets/albums/rip-this.jpeg'), - require('../assets/albums/spilt-milk.jpg'), - require('../assets/albums/suffer.jpg'), - require('../assets/albums/t-hives.jpg'), - require('../assets/albums/trendkill.jpg'), - require('../assets/albums/wysiatwin.jpg'), - require('../assets/albums/youre-welcome.jpeg'), - 'no-lazy', - 'no-lazy', - 'fire-once', - 'fire-once', -]; - -export const SHUFFLED_ALBUMS = shuffle(ALBUMS); - -export const PADDING_VERTICAL = 64; - -export const SQUARE_SIZE = Math.floor(Dimensions.get('window').width * 0.5); - -export const BLOCK_COLORS = [ - '#f8a5c2', - '#f5cd79', - '#ff7f50', - '#7bed9f', - '#1e90ff', -]; diff --git a/example/tsconfig.json b/example/tsconfig.json index facc3ec..2db003a 100644 --- a/example/tsconfig.json +++ b/example/tsconfig.json @@ -1,6 +1,6 @@ { "extends": "../tsconfig", "compilerOptions": { - // Avoid expo-cli auto-generating a tsconfig + "jsx": "react-jsx" } } diff --git a/example/yarn.lock b/example/yarn.lock index bd3d32f..bf0ac1a 100644 --- a/example/yarn.lock +++ b/example/yarn.lock @@ -1209,6 +1209,13 @@ pirates "^4.0.5" source-map-support "^0.5.16" +"@babel/runtime@^7.13.10", "@babel/runtime@^7.20.0", "@babel/runtime@^7.25.0": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.7.tgz#7ffb53c37a8f247c8c4d335e89cdf16a2e0d0fb6" + integrity sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/runtime@^7.18.6": version "7.20.13" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.13.tgz#7055ab8a7cff2b8f6058bf6ae45ff84ad2aded4b" @@ -1216,13 +1223,6 @@ dependencies: regenerator-runtime "^0.13.11" -"@babel/runtime@^7.20.0", "@babel/runtime@^7.25.0": - version "7.25.7" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.7.tgz#7ffb53c37a8f247c8c4d335e89cdf16a2e0d0fb6" - integrity sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w== - dependencies: - regenerator-runtime "^0.14.0" - "@babel/template@^7.0.0", "@babel/template@^7.18.10", "@babel/template@^7.20.7": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8" @@ -1414,7 +1414,7 @@ node-forge "^1.2.1" nullthrows "^1.1.1" -"@expo/config-plugins@8.0.10", "@expo/config-plugins@~8.0.8": +"@expo/config-plugins@8.0.10", "@expo/config-plugins@~8.0.0-beta.0", "@expo/config-plugins@~8.0.8": version "8.0.10" resolved "https://registry.yarnpkg.com/@expo/config-plugins/-/config-plugins-8.0.10.tgz#5cda076f38bc04675cb42d8acdd23d6e460a62de" integrity sha512-KG1fnSKRmsudPU9BWkl59PyE0byrE2HTnqbOrgwr2FAhqh7tfr9nRs6A9oLS/ntpGzmFxccTEcsV0L4apsuxxg== @@ -1435,7 +1435,7 @@ xcode "^3.0.1" xml2js "0.6.0" -"@expo/config-types@^51.0.3": +"@expo/config-types@^51.0.0-unreleased", "@expo/config-types@^51.0.3": version "51.0.3" resolved "https://registry.yarnpkg.com/@expo/config-types/-/config-types-51.0.3.tgz#520bdce5fd75f9d234fd81bd0347443086419450" integrity sha512-hMfuq++b8VySb+m9uNNrlpbvGxYc8OcFCUX9yTmi9tlx6A4k8SDabWFBgmnr4ao3wEArvWrtUQIfQCVtPRdpKA== @@ -1553,6 +1553,11 @@ postcss "~8.4.32" resolve-from "^5.0.0" +"@expo/metro-runtime@3.2.3": + version "3.2.3" + resolved "https://registry.yarnpkg.com/@expo/metro-runtime/-/metro-runtime-3.2.3.tgz#e074c28084f30725f8d0d0eeee4fcd6074797d2d" + integrity sha512-v5ji+fAGi7B9YavrxvekuF8gXEV/5fz0+PhaED5AaFDnbGB4IJIbpaiqK9nqZV1axjGZNQSw6Q8TsnFetCR3bQ== + "@expo/osascript@^2.0.31": version "2.0.33" resolved "https://registry.yarnpkg.com/@expo/osascript/-/osascript-2.0.33.tgz#e9dcc8da54466c11939074aa71a006024ea884b1" @@ -1588,6 +1593,23 @@ base64-js "^1.2.3" xmlbuilder "^14.0.0" +"@expo/prebuild-config@7.0.6": + version "7.0.6" + resolved "https://registry.yarnpkg.com/@expo/prebuild-config/-/prebuild-config-7.0.6.tgz#b9c2c36ee564244da8073ce7bea22ebe57743615" + integrity sha512-Hts+iGBaG6OQ+N8IEMMgwQElzJeSTb7iUJ26xADEHkaexsucAK+V52dM8M4ceicvbZR9q8M+ebJEGj0MCNA3dQ== + dependencies: + "@expo/config" "~9.0.0-beta.0" + "@expo/config-plugins" "~8.0.0-beta.0" + "@expo/config-types" "^51.0.0-unreleased" + "@expo/image-utils" "^0.5.0" + "@expo/json-file" "^8.3.0" + "@react-native/normalize-colors" "0.74.84" + debug "^4.3.1" + fs-extra "^9.0.0" + resolve-from "^5.0.0" + semver "^7.6.0" + xml2js "0.6.0" + "@expo/prebuild-config@7.0.9": version "7.0.9" resolved "https://registry.yarnpkg.com/@expo/prebuild-config/-/prebuild-config-7.0.9.tgz#7abd489e18ed6514a0c9cd214eb34c0d5efda799" @@ -1623,6 +1645,16 @@ resolved "https://registry.yarnpkg.com/@expo/sdk-runtime-versions/-/sdk-runtime-versions-1.0.0.tgz#d7ebd21b19f1c6b0395e50d78da4416941c57f7c" integrity sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ== +"@expo/server@^0.4.0": + version "0.4.4" + resolved "https://registry.yarnpkg.com/@expo/server/-/server-0.4.4.tgz#f89a8e57ef93b35e9635632e217a8868f762f358" + integrity sha512-q9ADBzMN5rZ/fgQ2mz5YIJuZ8gelQlhG2CQqToD+UvBLZvbaHCNxTTSs2KI1LzJvAaW5CWgWMatGvGF6iUQ0LA== + dependencies: + "@remix-run/node" "^2.7.2" + abort-controller "^3.0.0" + debug "^4.3.4" + source-map-support "~0.5.21" + "@expo/spawn-async@1.5.0": version "1.5.0" resolved "https://registry.yarnpkg.com/@expo/spawn-async/-/spawn-async-1.5.0.tgz#799827edd8c10ef07eb1a2ff9dcfe081d596a395" @@ -1918,6 +1950,21 @@ resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== +"@radix-ui/react-compose-refs@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz#37595b1f16ec7f228d698590e78eeed18ff218ae" + integrity sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA== + dependencies: + "@babel/runtime" "^7.13.10" + +"@radix-ui/react-slot@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.0.1.tgz#e7868c669c974d649070e9ecbec0b367ee0b4d81" + integrity sha512-avutXAFL1ehGvAXtPquu0YK5oz6ctS474iM3vNGQIkswrVhdrS52e3uoMQBzZhNRAIE0jBnUyXWNmSjGHhCFcw== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-compose-refs" "1.0.0" + "@react-native-community/cli-clean@13.6.9": version "13.6.9" resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-13.6.9.tgz#b6754f39c2b877c9d730feb848945150e1d52209" @@ -2233,6 +2280,11 @@ hermes-parser "0.19.1" nullthrows "^1.1.1" +"@react-native/normalize-colors@0.74.84": + version "0.74.84" + resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.74.84.tgz#4764d59775c17a6ed193509cb01ae2f42dd5c045" + integrity sha512-Y5W6x8cC5RuakUcTVUFNAIhUZ/tYpuqHZlRBoAuakrTwVuoNHXfQki8lj1KsYU7rW6e3VWgdEx33AfOQpdNp6A== + "@react-native/normalize-colors@0.74.85": version "0.74.85" resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.74.85.tgz#62bcb9ab1b10b822ca0278fdfdf23d3b18e125da" @@ -2256,6 +2308,131 @@ invariant "^2.2.4" nullthrows "^1.1.1" +"@react-navigation/bottom-tabs@~6.5.7": + version "6.5.20" + resolved "https://registry.yarnpkg.com/@react-navigation/bottom-tabs/-/bottom-tabs-6.5.20.tgz#5335e75b02c527ef0569bd97d4f9185d65616e49" + integrity sha512-ow6Z06iS4VqBO8d7FP+HsGjJLWt2xTWIvuWjpoCvsM/uQXzCRDIjBv9HaKcXbF0yTW7IMir0oDAbU5PFzEDdgA== + dependencies: + "@react-navigation/elements" "^1.3.30" + color "^4.2.3" + warn-once "^0.1.0" + +"@react-navigation/core@^6.4.17": + version "6.4.17" + resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-6.4.17.tgz#f277a196b578c8a456efcc563d1c9bd87eb4ab04" + integrity sha512-Nd76EpomzChWAosGqWOYE3ItayhDzIEzzZsT7PfGcRFDgW5miHV2t4MZcq9YIK4tzxZjVVpYbIynOOQQd1e0Cg== + dependencies: + "@react-navigation/routers" "^6.1.9" + escape-string-regexp "^4.0.0" + nanoid "^3.1.23" + query-string "^7.1.3" + react-is "^16.13.0" + use-latest-callback "^0.2.1" + +"@react-navigation/elements@^1.3.30": + version "1.3.31" + resolved "https://registry.yarnpkg.com/@react-navigation/elements/-/elements-1.3.31.tgz#28dd802a0787bb03fc0e5be296daf1804dbebbcf" + integrity sha512-bUzP4Awlljx5RKEExw8WYtif8EuQni2glDaieYROKTnaxsu9kEIA515sXQgUDZU4Ob12VoL7+z70uO3qrlfXcQ== + +"@react-navigation/native-stack@~6.9.12": + version "6.9.26" + resolved "https://registry.yarnpkg.com/@react-navigation/native-stack/-/native-stack-6.9.26.tgz#90facf7783c9927f094bc9f01c613af75b6c241e" + integrity sha512-++dueQ+FDj2XkZ902DVrK79ub1vp19nSdAZWxKRgd6+Bc0Niiesua6rMCqymYOVaYh+dagwkA9r00bpt/U5WLw== + dependencies: + "@react-navigation/elements" "^1.3.30" + warn-once "^0.1.0" + +"@react-navigation/native@~6.1.6": + version "6.1.18" + resolved "https://registry.yarnpkg.com/@react-navigation/native/-/native-6.1.18.tgz#338fa9afa2c89feec1d3eac41c963840d8d6f106" + integrity sha512-mIT9MiL/vMm4eirLcmw2h6h/Nm5FICtnYSdohq4vTLA2FF/6PNhByM7s8ffqoVfE5L0uAa6Xda1B7oddolUiGg== + dependencies: + "@react-navigation/core" "^6.4.17" + escape-string-regexp "^4.0.0" + fast-deep-equal "^3.1.3" + nanoid "^3.1.23" + +"@react-navigation/routers@^6.1.9": + version "6.1.9" + resolved "https://registry.yarnpkg.com/@react-navigation/routers/-/routers-6.1.9.tgz#73f5481a15a38e36592a0afa13c3c064b9f90bed" + integrity sha512-lTM8gSFHSfkJvQkxacGM6VJtBt61ip2XO54aNfswD+KMw6eeZ4oehl7m0me3CR9hnDE4+60iAZR8sAhvCiI3NA== + dependencies: + nanoid "^3.1.23" + +"@remix-run/node@^2.7.2": + version "2.13.1" + resolved "https://registry.yarnpkg.com/@remix-run/node/-/node-2.13.1.tgz#572f838201a11f8d9d8ef56929eb2a2c46e0f5ea" + integrity sha512-2ly7bENj2n2FNBdEN60ZEbNCs5dAOex/QJoo6EZ8RNFfUQxVKAZkMwfQ4ETV2SLWDgkRLj3Jo5n/dx7O2ZGhGw== + dependencies: + "@remix-run/server-runtime" "2.13.1" + "@remix-run/web-fetch" "^4.4.2" + "@web3-storage/multipart-parser" "^1.0.0" + cookie-signature "^1.1.0" + source-map-support "^0.5.21" + stream-slice "^0.1.2" + undici "^6.11.1" + +"@remix-run/router@1.20.0": + version "1.20.0" + resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.20.0.tgz#03554155b45d8b529adf635b2f6ad1165d70d8b4" + integrity sha512-mUnk8rPJBI9loFDZ+YzPGdeniYK+FTmRD1TMCz7ev2SNIozyKKpnGgsxO34u6Z4z/t0ITuu7voi/AshfsGsgFg== + +"@remix-run/server-runtime@2.13.1": + version "2.13.1" + resolved "https://registry.yarnpkg.com/@remix-run/server-runtime/-/server-runtime-2.13.1.tgz#91cc669fee41288b7f7c287558f144cc4b5ed65a" + integrity sha512-2DfBPRcHKVzE4bCNsNkKB50BhCCKF73x+jiS836OyxSIAL+x0tguV2AEjmGXefEXc5AGGzoxkus0AUUEYa29Vg== + dependencies: + "@remix-run/router" "1.20.0" + "@types/cookie" "^0.6.0" + "@web3-storage/multipart-parser" "^1.0.0" + cookie "^0.6.0" + set-cookie-parser "^2.4.8" + source-map "^0.7.3" + turbo-stream "2.4.0" + +"@remix-run/web-blob@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@remix-run/web-blob/-/web-blob-3.1.0.tgz#e0c669934c1eb6028960047e57a13ed38bbfb434" + integrity sha512-owGzFLbqPH9PlKb8KvpNJ0NO74HWE2euAn61eEiyCXX/oteoVzTVSN8mpLgDjaxBf2btj5/nUllSUgpyd6IH6g== + dependencies: + "@remix-run/web-stream" "^1.1.0" + web-encoding "1.1.5" + +"@remix-run/web-fetch@^4.4.2": + version "4.4.2" + resolved "https://registry.yarnpkg.com/@remix-run/web-fetch/-/web-fetch-4.4.2.tgz#ce7aedef72cc26e15060e8cf84674029f92809b6" + integrity sha512-jgKfzA713/4kAW/oZ4bC3MoLWyjModOVDjFPNseVqcJKSafgIscrYL9G50SurEYLswPuoU3HzSbO0jQCMYWHhA== + dependencies: + "@remix-run/web-blob" "^3.1.0" + "@remix-run/web-file" "^3.1.0" + "@remix-run/web-form-data" "^3.1.0" + "@remix-run/web-stream" "^1.1.0" + "@web3-storage/multipart-parser" "^1.0.0" + abort-controller "^3.0.0" + data-uri-to-buffer "^3.0.1" + mrmime "^1.0.0" + +"@remix-run/web-file@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@remix-run/web-file/-/web-file-3.1.0.tgz#07219021a2910e90231bc30ca1ce693d0e9d3825" + integrity sha512-dW2MNGwoiEYhlspOAXFBasmLeYshyAyhIdrlXBi06Duex5tDr3ut2LFKVj7tyHLmn8nnNwFf1BjNbkQpygC2aQ== + dependencies: + "@remix-run/web-blob" "^3.1.0" + +"@remix-run/web-form-data@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@remix-run/web-form-data/-/web-form-data-3.1.0.tgz#47f9ad8ce8bf1c39ed83eab31e53967fe8e3df6a" + integrity sha512-NdeohLMdrb+pHxMQ/Geuzdp0eqPbea+Ieo8M8Jx2lGC6TBHsgHzYcBvr0LyPdPVycNRDEpWpiDdCOdCryo3f9A== + dependencies: + web-encoding "1.1.5" + +"@remix-run/web-stream@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@remix-run/web-stream/-/web-stream-1.1.0.tgz#b93a8f806c2c22204930837c44d81fdedfde079f" + integrity sha512-KRJtwrjRV5Bb+pM7zxcTJkhIqWWSy+MYsIxHK+0m5atcznsf15YwUBWHWulZerV2+vvHH1Lp1DD7pw6qKW8SgA== + dependencies: + web-streams-polyfill "^3.1.1" + "@rnx-kit/chromium-edge-launcher@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@rnx-kit/chromium-edge-launcher/-/chromium-edge-launcher-1.0.0.tgz#c0df8ea00a902c7a417cd9655aab06de398b939c" @@ -2347,6 +2524,11 @@ dependencies: "@types/node" "*" +"@types/cookie@^0.6.0": + version "0.6.0" + resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.6.0.tgz#eac397f28bf1d6ae0ae081363eca2f425bedf0d5" + integrity sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA== + "@types/estree@^1.0.5": version "1.0.6" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" @@ -2488,6 +2670,11 @@ dependencies: undici-types "~5.26.4" +"@types/prop-types@*": + version "15.7.13" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.13.tgz#2af91918ee12d9d32914feb13f5326658461b451" + integrity sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA== + "@types/qs@*": version "6.9.16" resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.16.tgz#52bba125a07c0482d26747d5d4947a64daf8f794" @@ -2498,6 +2685,14 @@ resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== +"@types/react@~18.2.79": + version "18.2.79" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.79.tgz#c40efb4f255711f554d47b449f796d1c7756d865" + integrity sha512-RwGAGXPl9kSXwdNTafkOEuFrTBD5SA2B3iEB96xi8+xu5ddUa/cpvyVCSNn+asgLCTHkb5ZxN8gbuibYJi4s1w== + dependencies: + "@types/prop-types" "*" + csstype "^3.0.2" + "@types/retry@0.12.0": version "0.12.0" resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" @@ -2595,6 +2790,11 @@ "@urql/core" ">=2.3.1" wonka "^4.0.14" +"@web3-storage/multipart-parser@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@web3-storage/multipart-parser/-/multipart-parser-1.0.0.tgz#6b69dc2a32a5b207ba43e556c25cc136a56659c4" + integrity sha512-BEO6al7BYqcnfX15W2cnGR+Q566ACXAT9UQykORCWW80lmkpWsnEob6zJS1ZVBKsSJC8+7vJkHwlp+lXG1UCdw== + "@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.12.1": version "1.12.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.12.1.tgz#bb16a0e8b1914f979f45864c23819cc3e3f0d4bb" @@ -2731,6 +2931,11 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== +"@zxing/text-encoding@0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@zxing/text-encoding/-/text-encoding-0.9.0.tgz#fb50ffabc6c7c66a0c96b4c03e3d9be74864b70b" + integrity sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA== + abab@^2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" @@ -2984,6 +3189,13 @@ at-least-node@^1.0.0: resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== +available-typed-arrays@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" + integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== + dependencies: + possible-typed-array-names "^1.0.0" + babel-core@^7.0.0-bridge.0: version "7.0.0-bridge.0" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" @@ -3303,7 +3515,7 @@ cacache@^18.0.2: tar "^6.1.11" unique-filename "^3.0.0" -call-bind@^1.0.7: +call-bind@^1.0.2, call-bind@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== @@ -3532,11 +3744,27 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== -color-name@~1.1.4: +color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-string@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" + integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a" + integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A== + dependencies: + color-convert "^2.0.1" + color-string "^1.9.0" + colord@^2.9.1: version "2.9.3" resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" @@ -3671,11 +3899,21 @@ cookie-signature@1.0.6: resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== +cookie-signature@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.2.1.tgz#790dea2cce64638c7ae04d9fabed193bd7ccf3b4" + integrity sha512-78KWk9T26NhzXtuL26cIJ8/qNHANyJ/ZYrmEXFzUmhZdjpBv+DlWlOANRTGBt48YcyslsLrj0bMLFTmXvLRCOw== + cookie@0.7.1: version "0.7.1" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.1.tgz#2f73c42142d5d5cf71310a74fc4ae61670e5dbc9" integrity sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w== +cookie@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" + integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== + copy-webpack-plugin@^10.2.0: version "10.2.4" resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz#6c854be3fdaae22025da34b9112ccf81c63308fe" @@ -3801,6 +4039,17 @@ css-select@^4.1.3, css-select@^4.2.1: domutils "^2.8.0" nth-check "^2.0.1" +css-select@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" + integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== + 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.2, css-tree@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" @@ -3809,7 +4058,7 @@ css-tree@^1.1.2, css-tree@^1.1.3: mdn-data "2.0.14" source-map "^0.6.1" -css-what@^6.0.1: +css-what@^6.0.1, css-what@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== @@ -3875,11 +4124,21 @@ csso@^4.2.0: dependencies: css-tree "^1.1.2" +csstype@^3.0.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== + dag-map@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/dag-map/-/dag-map-1.0.2.tgz#e8379f041000ed561fc515475c1ed2c85eece8d7" integrity sha512-+LSAiGFwQ9dRnRdOeaj7g47ZFJcOUPukAP8J3A3fuZ1g9Y44BG+P1sgApjLXTQPOzC4+7S9Wr8kXsfpINM4jpw== +data-uri-to-buffer@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz#594b8973938c5bc2c33046535785341abc4f3636" + integrity sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og== + dayjs@^1.8.15: version "1.11.7" resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.7.tgz#4b296922642f70999544d1144a2c25730fce63e2" @@ -3911,6 +4170,11 @@ decamelize@^1.2.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== +decode-uri-component@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" + integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== + deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" @@ -4049,7 +4313,16 @@ dom-serializer@^1.0.1: domhandler "^4.2.0" entities "^2.0.0" -domelementtype@^2.0.1, domelementtype@^2.2.0: +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.0.1, domelementtype@^2.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== @@ -4061,6 +4334,13 @@ domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: dependencies: domelementtype "^2.2.0" +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@^2.5.2, domutils@^2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" @@ -4070,6 +4350,15 @@ domutils@^2.5.2, domutils@^2.8.0: domelementtype "^2.2.0" domhandler "^4.2.0" +domutils@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e" + integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA== + dependencies: + dom-serializer "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.3" + dot-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" @@ -4155,6 +4444,11 @@ entities@^2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== +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" @@ -4331,7 +4625,7 @@ expo-asset@~10.0.10: invariant "^2.2.4" md5-file "^3.2.3" -expo-constants@~16.0.0: +expo-constants@~16.0.0, expo-constants@~16.0.2: version "16.0.2" resolved "https://registry.yarnpkg.com/expo-constants/-/expo-constants-16.0.2.tgz#eb5a1bddb7308fd8cadac8fc44decaf4784cac5e" integrity sha512-9tNY3OVO0jfiMzl7ngb6IOyR5VFzNoN5OOazUWoeGfmMqVB5kltTemRvKraK9JRbBKIw+SOYLEmF0sEqgFZ6OQ== @@ -4356,6 +4650,14 @@ expo-keep-awake@~13.0.2: resolved "https://registry.yarnpkg.com/expo-keep-awake/-/expo-keep-awake-13.0.2.tgz#5ef31311a339671eec9921b934fdd90ab9652b0e" integrity sha512-kKiwkVg/bY0AJ5q1Pxnm/GvpeB6hbNJhcFsoOWDh2NlpibhCLaHL826KHUM+WsnJRbVRxJ+K9vbPRHEMvFpVyw== +expo-linking@~6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/expo-linking/-/expo-linking-6.3.1.tgz#05aef8a42bd310391d0b00644be40d80ece038d9" + integrity sha512-xuZCntSBGWCD/95iZ+mTUGTwHdy8Sx+immCqbUBxdvZ2TN61P02kKg7SaLS8A4a/hLrSCwrg5tMMwu5wfKr35g== + dependencies: + expo-constants "~16.0.0" + invariant "^2.2.4" + expo-modules-autolinking@1.11.3: version "1.11.3" resolved "https://registry.yarnpkg.com/expo-modules-autolinking/-/expo-modules-autolinking-1.11.3.tgz#bc64d278c04015014bb5802e3cfcd942d7c07168" @@ -4386,6 +4688,28 @@ expo-pwa@0.0.127: commander "2.20.0" update-check "1.5.3" +expo-router@~3.5.23: + version "3.5.23" + resolved "https://registry.yarnpkg.com/expo-router/-/expo-router-3.5.23.tgz#da038e28c64cb69f19d046d7c651c389c5207a3e" + integrity sha512-Re2kYcxov67hWrcjuu0+3ovsLxYn79PuX6hgtYN20MgigY5ttX79KOIBEVGTO3F3y9dxSrGHyy5Z14BcO+usGQ== + dependencies: + "@expo/metro-runtime" "3.2.3" + "@expo/server" "^0.4.0" + "@radix-ui/react-slot" "1.0.1" + "@react-navigation/bottom-tabs" "~6.5.7" + "@react-navigation/native" "~6.1.6" + "@react-navigation/native-stack" "~6.9.12" + expo-splash-screen "0.27.5" + react-native-helmet-async "2.0.4" + schema-utils "^4.0.1" + +expo-splash-screen@0.27.5: + version "0.27.5" + resolved "https://registry.yarnpkg.com/expo-splash-screen/-/expo-splash-screen-0.27.5.tgz#bcc1ebb4e761e19a1f2112469f3d424a36fb1e2c" + integrity sha512-9rdZuLkFCfgJBxrheUsOEOIW6Rp+9NVlpSE0hgXQwbTCLTncf00IHSE8/L2NbFyeDLNjof1yZBppaV7tXHRUzA== + dependencies: + "@expo/prebuild-config" "7.0.6" + expo-status-bar@~1.12.1: version "1.12.1" resolved "https://registry.yarnpkg.com/expo-status-bar/-/expo-status-bar-1.12.1.tgz#52ce594aab5064a0511d14375364d718ab78aa66" @@ -4561,6 +4885,11 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" +filter-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" + integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== + finalhandler@1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" @@ -4663,6 +4992,13 @@ fontfaceobserver@^2.1.0: resolved "https://registry.yarnpkg.com/fontfaceobserver/-/fontfaceobserver-2.3.0.tgz#5fb392116e75d5024b7ec8e4f2ce92106d1488c8" integrity sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg== +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + foreground-child@^3.1.0: version "3.3.0" resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.0.tgz#0ac8644c06e431439f8561db8ecf29a7b5519c77" @@ -4996,6 +5332,13 @@ has-symbols@^1.0.3: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== +has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" @@ -5291,11 +5634,24 @@ ipaddr.js@^2.0.1: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz#d33fa7bac284f4de7af949638c9d68157c6b92e8" integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== +is-arguments@^1.0.4: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" @@ -5308,6 +5664,11 @@ is-buffer@~1.1.1, is-buffer@~1.1.6: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== +is-callable@^1.1.3: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + is-core-module@^2.13.0: version "2.15.1" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.1.tgz#a7363a25bee942fefab0de13bf6aa372c82dcc37" @@ -5352,6 +5713,13 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== +is-generator-function@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + is-glob@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" @@ -5429,6 +5797,13 @@ is-stream@^2.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== +is-typed-array@^1.1.3: + version "1.1.13" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" + integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== + dependencies: + which-typed-array "^1.1.14" + is-unicode-supported@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" @@ -6369,6 +6744,11 @@ mkdirp@^1.0.3, mkdirp@^1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== +mrmime@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-1.0.1.tgz#5f90c825fad4bdd41dc914eff5d1a8cfdaf24f27" + integrity sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw== + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -6410,7 +6790,7 @@ mz@^2.7.0: object-assign "^4.0.1" thenify-all "^1.0.0" -nanoid@^3.3.7: +nanoid@^3.1.23, nanoid@^3.3.7: version "3.3.7" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== @@ -6946,6 +7326,11 @@ pngjs@^3.3.0: resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== +possible-typed-array-names@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" + integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== + postcss-calc@^8.2.3: version "8.2.4" resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" @@ -7322,6 +7707,16 @@ qs@6.13.0: dependencies: side-channel "^1.0.6" +query-string@^7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-7.1.3.tgz#a1cf90e994abb113a325804a972d98276fe02328" + integrity sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg== + dependencies: + decode-uri-component "^0.2.2" + filter-obj "^1.1.0" + split-on-first "^1.0.0" + strict-uri-encode "^2.0.0" + querystring@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.1.tgz#40d77615bb09d16902a85c3e38aa8b5ed761c2dd" @@ -7387,12 +7782,22 @@ react-dom@18.2.0: loose-envify "^1.1.0" scheduler "^0.23.0" +react-fast-compare@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.2.tgz#929a97a532304ce9fee4bcae44234f1ce2c21d49" + integrity sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ== + +react-freeze@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/react-freeze/-/react-freeze-1.0.4.tgz#cbbea2762b0368b05cbe407ddc9d518c57c6f3ad" + integrity sha512-r4F0Sec0BLxWicc7HEyo2x3/2icUTrRmDjaaRyzzn+7aDyFZliszMDOgLVwSnQnYENOlL1o569Ze2HZefk8clA== + "react-is@^16.12.0 || ^17.0.0 || ^18.0.0": version "18.2.0" resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== -react-is@^16.13.1, react-is@^16.8.4: +react-is@^16.13.0, react-is@^16.13.1, react-is@^16.8.4: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -7407,6 +7812,15 @@ react-is@^18.0.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== +react-native-helmet-async@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/react-native-helmet-async/-/react-native-helmet-async-2.0.4.tgz#93f53a1ff22d6898039688a541653a2d6b6866bb" + integrity sha512-m3CkXWss6B1dd6mCMleLpzDCJJGGaHOLQsUzZv8kAASJmMfmVT4d2fx375iXKTRWT25ThBfae3dECuX5cq/8hg== + dependencies: + invariant "^2.2.4" + react-fast-compare "^3.2.2" + shallowequal "^1.1.0" + react-native-reanimated@~3.10.1: version "3.10.1" resolved "https://registry.yarnpkg.com/react-native-reanimated/-/react-native-reanimated-3.10.1.tgz#3c37d1100bbba0065df39c96aab0c1ff1b50c0fa" @@ -7421,6 +7835,27 @@ react-native-reanimated@~3.10.1: convert-source-map "^2.0.0" invariant "^2.2.4" +react-native-safe-area-context@4.10.5: + version "4.10.5" + resolved "https://registry.yarnpkg.com/react-native-safe-area-context/-/react-native-safe-area-context-4.10.5.tgz#a9c677a48bd273afa6876772062ce08e8af1f18d" + integrity sha512-Wyb0Nqw2XJ6oZxW/cK8k5q7/UAhg/wbEG6UVf89rQqecDZTDA5ic//P9J6VvJRVZerzGmxWQpVuM7f+PRYUM4g== + +react-native-screens@3.31.1: + version "3.31.1" + resolved "https://registry.yarnpkg.com/react-native-screens/-/react-native-screens-3.31.1.tgz#909a890f669e32b0fb1b1410278b71ad2f8238f6" + integrity sha512-8fRW362pfZ9y4rS8KY5P3DFScrmwo/vu1RrRMMx0PNHbeC9TLq0Kw1ubD83591yz64gLNHFLTVkTJmWeWCXKtQ== + dependencies: + react-freeze "^1.0.0" + warn-once "^0.1.0" + +react-native-svg@15.2.0: + version "15.2.0" + resolved "https://registry.yarnpkg.com/react-native-svg/-/react-native-svg-15.2.0.tgz#9561a6b3bd6b44689f437ba13182afee33bd5557" + integrity sha512-R0E6IhcJfVLsL0lRmnUSm72QO+mTqcAOM5Jb8FVGxJqX3NfJMlMP0YyvcajZiaRR8CqQUpEoqrY25eyZb006kw== + dependencies: + css-select "^5.1.0" + css-tree "^1.1.3" + react-native-web@~0.19.10: version "0.19.12" resolved "https://registry.yarnpkg.com/react-native-web/-/react-native-web-0.19.12.tgz#30d1fd70bdff7886f43c0c2698629d830fade6bc" @@ -7491,10 +7926,10 @@ react-shallow-renderer@^16.15.0: object-assign "^4.1.1" react-is "^16.12.0 || ^17.0.0 || ^18.0.0" -react@18.2.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" - integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== +react@18.1.0: + version "18.1.0" + resolved "https://registry.yarnpkg.com/react/-/react-18.1.0.tgz#6f8620382decb17fdc5cc223a115e2adbf104890" + integrity sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ== dependencies: loose-envify "^1.1.0" @@ -7825,7 +8260,7 @@ schema-utils@^3.2.0: ajv "^6.12.5" ajv-keywords "^3.5.2" -schema-utils@^4.0.0: +schema-utils@^4.0.0, schema-utils@^4.0.1: version "4.2.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.2.0.tgz#70d7c93e153a273a805801882ebd3bff20d89c8b" integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw== @@ -7975,6 +8410,11 @@ set-blocking@^2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== +set-cookie-parser@^2.4.8: + version "2.7.0" + resolved "https://registry.yarnpkg.com/set-cookie-parser/-/set-cookie-parser-2.7.0.tgz#ef5552b56dc01baae102acb5fc9fb8cd060c30f9" + integrity sha512-lXLOiqpkUumhRdFF3k1osNXCy9akgx/dyPZ5p8qAg9seJzXr5ZrlqZuWIMuY6ejOsVLE6flJ5/h3lsn57fQ/PQ== + set-function-length@^1.2.1: version "1.2.2" resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" @@ -8009,6 +8449,11 @@ shallow-clone@^3.0.0: dependencies: kind-of "^6.0.2" +shallowequal@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" + integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== + shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -8072,6 +8517,13 @@ simple-plist@^1.1.0: bplist-parser "0.3.1" plist "^3.0.5" +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== + dependencies: + is-arrayish "^0.3.1" + sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" @@ -8134,7 +8586,7 @@ source-map-loader@^3.0.1: iconv-lite "^0.6.3" source-map-js "^1.0.1" -source-map-support@^0.5.16, source-map-support@~0.5.20, source-map-support@~0.5.21: +source-map-support@^0.5.16, source-map-support@^0.5.21, source-map-support@~0.5.20, source-map-support@~0.5.21: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== @@ -8180,6 +8632,11 @@ spdy@^4.0.2: select-hose "^2.0.0" spdy-transport "^3.0.0" +split-on-first@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" + integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== + split@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" @@ -8238,6 +8695,16 @@ stream-buffers@2.2.x, stream-buffers@~2.2.0: resolved "https://registry.yarnpkg.com/stream-buffers/-/stream-buffers-2.2.0.tgz#91d5f5130d1cef96dcfa7f726945188741d09ee4" integrity sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg== +stream-slice@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/stream-slice/-/stream-slice-0.1.2.tgz#2dc4f4e1b936fb13f3eb39a2def1932798d07a4b" + integrity sha512-QzQxpoacatkreL6jsxnVb7X5R/pGw9OUv2qWTYWnmLpg4NdN31snPy/f3TdQE1ZUXaThRvj1Zw4/OGg0ZkaLMA== + +strict-uri-encode@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" + integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ== + "string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" @@ -8600,6 +9067,11 @@ tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== +turbo-stream@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/turbo-stream/-/turbo-stream-2.4.0.tgz#1e4fca6725e90fa14ac4adb782f2d3759a5695f0" + integrity sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g== + type-detect@4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" @@ -8643,6 +9115,11 @@ undici-types@~5.26.4: resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== +undici@^6.11.1: + version "6.20.0" + resolved "https://registry.yarnpkg.com/undici/-/undici-6.20.0.tgz#3b94d967693759ea625a3b78b2097213f30405a1" + integrity sha512-AITZfPuxubm31Sx0vr8bteSalEbs9wQb/BOBi9FPlD9Qpd6HxZ4Q0+hI742jBhkPb4RT2v5MQzaW5VhRVyj+9A== + unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" @@ -8750,11 +9227,27 @@ url-join@4.0.0: resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.0.tgz#4d3340e807d3773bda9991f8305acdcc2a665d2a" integrity sha512-EGXjXJZhIHiQMK2pQukuFcL303nskqIRzWvPvV5O8miOfwoUb9G+a/Cld60kUyeaybEI94wvVClT10DtfeAExA== +use-latest-callback@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/use-latest-callback/-/use-latest-callback-0.2.1.tgz#4d4e6a9e4817b13142834850dcfa8d24ca4569cf" + integrity sha512-QWlq8Is8BGWBf883QOEQP5HWYX/kMI+JTbJ5rdtvJLmXTIh9XoHIO3PQcmQl8BU44VKxow1kbQUHa6mQSMALDQ== + util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== +util@^0.12.3: + version "0.12.5" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" + integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + which-typed-array "^1.1.2" + utila@~0.4: version "0.4.0" resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" @@ -8804,6 +9297,11 @@ walker@^1.0.7: dependencies: makeerror "1.0.12" +warn-once@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/warn-once/-/warn-once-0.1.1.tgz#952088f4fb56896e73fd4e6a3767272a3fccce43" + integrity sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q== + watchpack@^2.4.1: version "2.4.2" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.2.tgz#2feeaed67412e7c33184e5a79ca738fbd38564da" @@ -8826,6 +9324,20 @@ wcwidth@^1.0.1: dependencies: defaults "^1.0.3" +web-encoding@1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/web-encoding/-/web-encoding-1.1.5.tgz#fc810cf7667364a6335c939913f5051d3e0c4864" + integrity sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA== + dependencies: + util "^0.12.3" + optionalDependencies: + "@zxing/text-encoding" "0.9.0" + +web-streams-polyfill@^3.1.1: + version "3.3.3" + resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz#2073b91a2fdb1fbfbd401e7de0ac9f8214cecb4b" + integrity sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw== + webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" @@ -8974,6 +9486,17 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== +which-typed-array@^1.1.14, which-typed-array@^1.1.2: + version "1.1.15" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" + integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.2" + which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"