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"