[MOB-98] Rename, delete, & more (#2506)

* rename and delete support, browse design improvement

* update toast styling

* Update RenameModal.tsx

* fix test

* fix warning message on initial render, add-tag test, and remove solid js references

* ci

* Add feedback toast for location delete and tag delete
This commit is contained in:
ameer2468 2024-05-27 16:44:15 +01:00 committed by GitHub
parent a63d66da4c
commit 2321addc67
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
30 changed files with 459 additions and 473 deletions

View file

@ -4,6 +4,19 @@ import {
NavigationContainer,
useNavigationContainerRef
} from '@react-navigation/native';
import {
ClientContextProvider,
LibraryContextProvider,
P2PContextProvider,
RspcProvider,
initPlausible,
useBridgeQuery,
useClientContext,
useInvalidateQuery,
usePlausibleEvent,
usePlausiblePageViewMonitor,
usePlausiblePingMonitor
} from '@sd/client';
import { QueryClient } from '@tanstack/react-query';
import dayjs from 'dayjs';
import advancedFormat from 'dayjs/plugin/advancedFormat';
@ -17,19 +30,6 @@ import { GestureHandlerRootView } from 'react-native-gesture-handler';
import { MenuProvider } from 'react-native-popup-menu';
import { SafeAreaProvider } from 'react-native-safe-area-context';
import { useSnapshot } from 'valtio';
import {
ClientContextProvider,
initPlausible,
LibraryContextProvider,
P2PContextProvider,
RspcProvider,
useBridgeQuery,
useClientContext,
useInvalidateQuery,
usePlausibleEvent,
usePlausiblePageViewMonitor,
usePlausiblePingMonitor
} from '@sd/client';
import { GlobalModals } from './components/modal/GlobalModals';
import { Toast, toastConfig } from './components/primitive/Toast';
@ -55,13 +55,17 @@ function AppNavigation() {
const plausibleEvent = usePlausibleEvent();
const buildInfo = useBridgeQuery(['buildInfo']);
initPlausible({ platformType: 'mobile', buildInfo: buildInfo?.data });
const navRef = useNavigationContainerRef();
const routeNameRef = useRef<string>();
const [currentPath, setCurrentPath] = useState<string>('/');
useEffect(() => {
if (buildInfo?.data) {
initPlausible({ platformType: 'mobile', buildInfo: buildInfo.data });
}
}, [buildInfo]);
usePlausiblePageViewMonitor({ currentPath });
usePlausiblePingMonitor({ currentPath });
@ -73,9 +77,11 @@ function AppNavigation() {
return () => clearInterval(interval);
}, [plausibleEvent]);
if (library === null && libraries.data) {
currentLibraryStore.id = libraries.data[0]?.uuid ?? null;
}
useEffect(() => {
if (library === null && libraries.data) {
currentLibraryStore.id = libraries.data[0]?.uuid ?? null;
}
}, [library, libraries]);
return (
<NavigationContainer

View file

@ -31,17 +31,17 @@ export const CATEGORIES_LIST = [
const BrowseCategories = () => {
const navigation = useNavigation<BrowseStackScreenProps<'Browse'>['navigation']>();
return (
<View style={tw`gap-5 px-6`}>
<View style={tw`gap-5 px-5`}>
<View style={tw`flex-row items-center justify-between`}>
<Text style={tw`text-lg font-bold text-white`}>Library</Text>
<Button
onPress={() => {
navigation.navigate('Library');
}}
style={tw`h-9 w-9 rounded-full`}
style={tw`h-8 w-8 rounded-full`}
variant="gray"
>
<DotsThree weight="bold" size={20} color={'white'} />
<DotsThree weight="bold" size={18} color={'white'} />
</Button>
</View>
<View style={tw`flex-row flex-wrap gap-2`}>

View file

@ -1,14 +1,15 @@
import { useNavigation } from '@react-navigation/native';
import { useLibraryQuery } from '@sd/client';
import { DotsThree, Plus } from 'phosphor-react-native';
import { useRef } from 'react';
import { Text, View } from 'react-native';
import { useRef, useState } from 'react';
import { FlatList, Text, View } from 'react-native';
import { ModalRef } from '~/components/layout/Modal';
import { tw } from '~/lib/tailwind';
import { tw, twStyle } from '~/lib/tailwind';
import { BrowseStackScreenProps } from '~/navigation/tabs/BrowseStack';
import { SettingsStackScreenProps } from '~/navigation/tabs/SettingsStack';
import { Plus } from 'phosphor-react-native';
import Empty from '../layout/Empty';
import Fade from '../layout/Fade';
import { LocationItem } from '../locations/LocationItem';
import ImportModal from '../modal/ImportModal';
import { Button } from '../primitive/Button';
@ -20,54 +21,64 @@ const BrowseLocations = () => {
>();
const modalRef = useRef<ModalRef>(null);
const [showAll, setShowAll] = useState(false);
const result = useLibraryQuery(['locations.list'], { keepPreviousData: true });
const locations = result.data;
return (
<View style={tw`gap-5 px-6`}>
<View style={tw`w-full flex-row items-center justify-between`}>
<View style={tw`gap-5`}>
<View style={tw`flex-row items-center justify-between px-5`}>
<Text style={tw`text-lg font-bold text-white`}>Locations</Text>
<View style={tw`flex-row gap-3`}>
<Button
style={tw`h-9 w-9 rounded-full`}
variant="dashed"
onPress={() => modalRef.current?.present()}
style={twStyle(`rounded-full`, {
borderColor: showAll ? tw.color('accent') : tw.color('border-app-lightborder')
})}
variant="outline"
onPress={() => setShowAll((prev) => !prev)}
>
<Plus weight="bold" size={16} style={tw`text-ink`} />
<Text style={tw`text-xs text-ink`}>{showAll ? 'Show less' : 'Show all'} ({locations?.length})</Text>
</Button>
<Button
onPress={() => {
navigation.navigate('Locations');
}}
style={tw`h-9 w-9 rounded-full`}
onPress={() => modalRef.current?.present()}
style={tw`flex-row gap-1 rounded-full`}
variant="gray"
>
<DotsThree weight="bold" size={20} color={'white'} />
<Plus size={10} weight="bold" style={tw`text-white`} />
<Text style={tw`text-xs text-ink`}>Add</Text>
</Button>
</View>
</View>
<View style={tw`flex-row flex-wrap gap-2`}>
{locations?.length === 0 ? (
<Empty description="You have not added any locations" icon="Folder" />
) : (
<>
{locations?.slice(0, 3).map((location) => (
<View style={tw`relative -m-1`}>
<Fade color='black' width={30} height="100%">
<FlatList
data={locations}
ListEmptyComponent={<Empty description="You have not added any locations" icon="Folder" />}
numColumns={showAll ? 3 : 1}
horizontal={showAll ? false : true}
contentContainerStyle={twStyle(locations?.length === 0 && 'w-full','px-5')}
key={showAll ? '_locations' : 'alllocationcols'}
keyExtractor={(item) => item.id.toString()}
scrollEnabled={showAll ? false : true}
showsHorizontalScrollIndicator={false}
renderItem={({ item }) => {
return (
<LocationItem
key={location.id}
location={location}
location={item}
style={twStyle(showAll && 'max-w-[31%] flex-1')}
editLocation={() =>
navigation.navigate('SettingsStack', {
screen: 'EditLocationSettings',
params: { id: location.id },
params: { id: item.id },
initial: false
})
}
onPress={() => navigation.navigate('Location', { id: location.id })}
/>
))}
</>
)}
onPress={() => navigation.navigate('Location', { id: item.id })}
/>
)}
}
/>
</Fade>
</View>
<ImportModal ref={modalRef} />
</View>

View file

@ -1,13 +1,14 @@
import { useNavigation } from '@react-navigation/native';
import { useLibraryQuery } from '@sd/client';
import { DotsThree, Plus } from 'phosphor-react-native';
import React, { useRef } from 'react';
import { Text, View } from 'react-native';
import { Plus } from 'phosphor-react-native';
import React, { useRef, useState } from 'react';
import { FlatList, Text, View } from 'react-native';
import { ModalRef } from '~/components/layout/Modal';
import { tw } from '~/lib/tailwind';
import { tw, twStyle } from '~/lib/tailwind';
import { BrowseStackScreenProps } from '~/navigation/tabs/BrowseStack';
import Empty from '../layout/Empty';
import Fade from '../layout/Fade';
import CreateTagModal from '../modal/tag/CreateTagModal';
import { Button } from '../primitive/Button';
import { TagItem } from '../tags/TagItem';
@ -19,47 +20,58 @@ const BrowseTags = () => {
const tagData = tags.data;
const modalRef = useRef<ModalRef>(null);
const [showAll, setShowAll] = useState(false);
return (
<View style={tw`gap-5 px-6`}>
<View style={tw`w-full flex-row items-center justify-between`}>
<View style={tw`gap-5`}>
<View style={tw`w-full flex-row items-center justify-between px-5`}>
<Text style={tw`text-lg font-bold text-white`}>Tags</Text>
<View style={tw`flex-row gap-3`}>
<Button
style={tw`h-9 w-9 rounded-full`}
variant="dashed"
onPress={() => modalRef.current?.present()}
testID='show-all-tags-button'
style={twStyle(`rounded-full`, {
borderColor: showAll ? tw.color('accent') : tw.color('border-app-lightborder')
})}
variant="outline"
onPress={() => setShowAll((prev) => !prev)}
>
<Plus weight="bold" size={16} style={tw`text-ink`} />
<Text style={tw`text-xs text-ink`}>{showAll ? 'Show less' : 'Show all'} ({tagData?.length})</Text>
</Button>
<Button
testID="navigate-tags-screen"
onPress={() => {
navigation.navigate('Tags');
}}
style={tw`w-9 rounded-full`}
testID='create-tag-button'
onPress={() => modalRef.current?.present()}
style={tw`flex-row gap-1 rounded-full`}
variant="gray"
>
<DotsThree weight="bold" size={20} color={'white'} />
<Plus size={10} weight="bold" style={tw`text-white`} />
<Text style={tw`text-xs text-ink`}>Add</Text>
</Button>
</View>
</View>
<View style={tw`flex-row flex-wrap gap-2`}>
{tagData?.length === 0 ? (
<Empty description="You have not created any tags" icon="Tags" />
) : (
tagData
?.slice(0, 3)
.map((tag) => (
<View style={tw`relative -m-1`}>
<Fade color='black' width={20} height="100%">
<FlatList
data={tagData}
ListEmptyComponent={<Empty description="You have not created any tags" icon="Tags" />}
numColumns={showAll ? 3 : 1}
contentContainerStyle={twStyle(tagData?.length === 0 && 'w-full','px-5')}
horizontal={showAll ? false : true}
key={showAll ? '_tags' : 'alltagcols'}
keyExtractor={(item) => item.id.toString()}
scrollEnabled={showAll ? false : true}
showsHorizontalScrollIndicator={false}
renderItem={({ item }) => (
<TagItem
key={tag.id}
tag={tag}
onPress={() =>
navigation.navigate('Tag', { id: tag.id, color: tag.color! })
}
/>
))
)}
style={twStyle(showAll && 'max-w-[31%] flex-1')}
key={item.id}
tag={item}
onPress={() =>
navigation.navigate('Tag', { id: item.id, color: item.color! })
}
/>
)}
/>
</Fade>
</View>
<CreateTagModal ref={modalRef} />
</View>

View file

@ -1,11 +1,11 @@
import { DrawerContentScrollView } from '@react-navigation/drawer';
import { DrawerContentComponentProps } from '@react-navigation/drawer/lib/typescript/src/types';
import { AppLogo } from '@sd/assets/images';
import { JobManagerContextProvider, useLibraryQuery } from '@sd/client';
import { Image } from 'expo-image';
import { CheckCircle } from 'phosphor-react-native';
import { useRef } from 'react';
import { Platform, Pressable, Text, View } from 'react-native';
import { JobManagerContextProvider, useLibraryQuery } from '@sd/client';
import Layout from '~/constants/Layout';
import { tw, twStyle } from '~/lib/tailwind';

View file

@ -1,14 +1,14 @@
import { DrawerNavigationHelpers } from '@react-navigation/drawer/lib/typescript/src/types';
import { useNavigation } from '@react-navigation/native';
import { useRef } from 'react';
import { Pressable, Text, View } from 'react-native';
import {
Location,
arraysEqual,
humanizeSize,
Location,
useLibraryQuery,
useOnlineLocations
} from '@sd/client';
import { useRef } from 'react';
import { Pressable, Text, View } from 'react-native';
import { ModalRef } from '~/components/layout/Modal';
import { tw, twStyle } from '~/lib/tailwind';
@ -49,8 +49,8 @@ const DrawerLocationItem: React.FC<DrawerLocationItemProps> = ({
{location.name ?? ''}
</Text>
</View>
<View style={tw`rounded-md border border-app-lightborder bg-app-box px-1 py-0.5`}>
<Text style={tw`text-[11px] font-medium text-ink-dull`} numberOfLines={1}>
<View style={tw`rounded-md border border-app-box/70 bg-app/70 px-1 py-0.5`}>
<Text style={tw`text-[11px] font-bold text-ink-dull`} numberOfLines={1}>
{`${humanizeSize(location.size_in_bytes)}`}
</Text>
</View>

View file

@ -27,7 +27,7 @@ const FileRow = ({ data }: FileRowProps) => {
height: getExplorerStore().listItemSize
})}
>
<FileThumb data={data} size={0.6} />
<FileThumb data={data} size={0.5} />
<View style={tw`mx-2 flex-1 flex-row items-center justify-between border-b border-white/10 pb-3`}>
<View style={tw`max-w-[80%]`}>
<Text numberOfLines={1} style={tw`text-center text-sm font-medium text-ink`}>

View file

@ -6,10 +6,10 @@ import {
BottomSheetHandleProps,
BottomSheetModal,
BottomSheetModalProps,
BottomSheetScrollView
BottomSheetScrollView,
} from '@gorhom/bottom-sheet';
import { X } from 'phosphor-react-native';
import { forwardRef, ReactNode } from 'react';
import { ReactNode, forwardRef } from 'react';
import { Platform, Pressable, Text, View } from 'react-native';
import useForwardedRef from '~/hooks/useForwardedRef';
import { tw, twStyle } from '~/lib/tailwind';

View file

@ -1,6 +1,6 @@
import { Location, arraysEqual, humanizeSize, useOnlineLocations } from '@sd/client';
import { DotsThreeOutlineVertical } from 'phosphor-react-native';
import { Pressable, Text, View } from 'react-native';
import { arraysEqual, humanizeSize, Location, useOnlineLocations } from '@sd/client';
import { tw, twStyle } from '~/lib/tailwind';
import FolderIcon from '../icons/FolderIcon';
@ -16,7 +16,7 @@ const GridLocation: React.FC<GridLocationProps> = ({ location, modalRef }: GridL
const onlineLocations = useOnlineLocations();
const online = onlineLocations.some((l) => arraysEqual(location.pub_id, l));
return (
<Card style={'h-auto flex-col justify-center gap-3'}>
<Card style={'h-auto flex-col items-start justify-center gap-3'}>
<View style={tw`w-full flex-col justify-between gap-1`}>
<View style={tw`flex-row items-center justify-between`}>
<View style={tw`relative`}>
@ -46,9 +46,11 @@ const GridLocation: React.FC<GridLocationProps> = ({ location, modalRef }: GridL
{location.path}
</Text>
</View>
<Text style={tw`text-left text-[13px] font-bold text-ink-dull`} numberOfLines={1}>
<View style={tw`rounded-md border border-app-box/70 bg-app/70 px-1 py-0.5`}>
<Text style={tw`text-xs font-bold text-ink-dull`} numberOfLines={1}>
{`${humanizeSize(location.size_in_bytes)}`}
</Text>
</View>
</Card>
);
};

View file

@ -61,10 +61,10 @@ const ListLocation = ({ location }: ListLocationProps) => {
</Text>
</View>
</View>
<View style={tw`flex-row items-center gap-3`}>
<View style={tw`rounded-md border border-app-box bg-app p-1.5`}>
<View style={tw`flex-row items-center gap-1.5`}>
<View style={tw`rounded-md border border-app-box/70 bg-app/70 px-1.5 py-1`}>
<Text
style={tw`text-left text-xs font-medium text-ink-dull`}
style={tw`text-xs font-bold text-ink-dull`}
numberOfLines={1}
>
{`${humanizeSize(location.size_in_bytes)}`}

View file

@ -1,8 +1,9 @@
import { Location } from '@sd/client';
import { useRef } from 'react';
import { Pressable } from 'react-native';
import { Location } from '@sd/client';
import { twStyle } from '~/lib/tailwind';
import { ClassInput } from 'twrnc';
import { ModalRef } from '../layout/Modal';
import { LocationModal } from '../modal/location/LocationModal';
import GridLocation from './GridLocation';
@ -13,19 +14,21 @@ type LocationItemProps = {
onPress: () => void;
viewStyle?: 'grid' | 'list';
editLocation: () => void;
style?: ClassInput;
};
export const LocationItem = ({
location,
onPress,
editLocation,
viewStyle = 'grid'
viewStyle = 'grid',
style
}: LocationItemProps) => {
const modalRef = useRef<ModalRef>(null);
return (
<>
<Pressable
style={twStyle(viewStyle === 'grid' ? `w-[31.5%]` : `flex-1`)}
style={twStyle(viewStyle === 'grid' ? `m-1 w-[112px]` : `flex-1`, style)}
onPress={onPress}
>
{viewStyle === 'grid' ? (

View file

@ -1,4 +1,4 @@
import { Tag, getItemObject, useLibraryMutation, useLibraryQuery, useRspcContext } from "@sd/client";
import { Tag, getItemObject, useLibraryMutation, useLibraryQuery, useRspcLibraryContext } from "@sd/client";
import { CaretLeft, Plus } from "phosphor-react-native";
import { forwardRef, useCallback, useEffect, useMemo, useRef, useState } from "react";
import { FlatList, NativeScrollEvent, Pressable, Text, View } from "react-native";
@ -24,7 +24,7 @@ const AddTagModal = forwardRef<ModalRef, unknown>((_, ref) => {
const [startedScrolling, setStartedScrolling] = useState(false);
const [reachedBottom, setReachedBottom] = useState(true); // needs to be set to true for initial rendering fade to be correct
const rspc = useRspcContext();
const rspc = useRspcLibraryContext();
const tagsQuery = useLibraryQuery(['tags.list']);
const tagsObjectQuery = useLibraryQuery(['tags.getForObject', objectData?.id ?? -1]);
const mutation = useLibraryMutation(['tags.assign'], {

View file

@ -1,14 +1,15 @@
import * as RNFS from '@dr.pogodin/react-native-fs';
import { useLibraryMutation, useRspcLibraryContext } from '@sd/client';
import { forwardRef, useCallback } from 'react';
import { Alert, Platform, Text, View } from 'react-native';
import DocumentPicker from 'react-native-document-picker';
import { useLibraryMutation, useRspcLibraryContext } from '@sd/client';
import { Modal, ModalRef } from '~/components/layout/Modal';
import { Button } from '~/components/primitive/Button';
import useForwardedRef from '~/hooks/useForwardedRef';
import { tw } from '~/lib/tailwind';
import { Icon } from '../icons/Icon';
import { toast } from '../primitive/Toast';
// import * as ML from 'expo-media-library';
@ -22,17 +23,27 @@ const ImportModal = forwardRef<ModalRef, unknown>((_, ref) => {
const createLocation = useLibraryMutation('locations.create', {
onError: (error, variables) => {
modalRef.current?.close();
//custom message handling
if (error.message.startsWith("location already exists")) {
return toast.error('This location has already been added');
}
switch (error.message) {
case 'NEED_RELINK':
if (!variables.dry_run) relinkLocation.mutate(variables.path);
toast.info('Please relink the location');
break;
case 'ADD_LIBRARY':
addLocationToLibrary.mutate(variables);
break;
default:
toast.error(error.message);
throw new Error('Unimplemented custom remote error handling');
}
},
onSuccess: () => {
toast.success('Location added successfully');
},
onSettled: () => {
rspc.queryClient.invalidateQueries(['locations.list']);
modalRef.current?.close();

View file

@ -1,6 +1,7 @@
import { useRef } from 'react';
import { useLibraryMutation, usePlausibleEvent, useRspcLibraryContext } from '@sd/client';
import { useRef } from 'react';
import { ConfirmModal, ModalRef } from '~/components/layout/Modal';
import { toast } from '~/components/primitive/Toast';
type Props = {
locationId: number;
@ -20,6 +21,10 @@ const DeleteLocationModal = ({ trigger, onSubmit, locationId, triggerStyle }: Pr
onSuccess: () => {
submitPlausibleEvent({ event: { type: 'locationDelete' } });
onSubmit?.();
toast.success('Location deleted successfully');
},
onError: (error) => {
toast.error(error.message);
},
onSettled: () => {
modalRef.current?.close();

View file

@ -1,6 +1,7 @@
import { useRef } from 'react';
import { useLibraryMutation, usePlausibleEvent, useRspcLibraryContext } from '@sd/client';
import { useRef } from 'react';
import { ConfirmModal, ModalRef } from '~/components/layout/Modal';
import { toast } from '~/components/primitive/Toast';
type Props = {
tagId: number;
@ -19,6 +20,7 @@ const DeleteTagModal = ({ trigger, onSubmit, tagId, triggerStyle }: Props) => {
submitPlausibleEvent({ event: { type: 'tagDelete' } });
onSubmit?.();
rspc.queryClient.invalidateQueries(['tags.list']);
toast.success('Tag deleted successfully');
},
onSettled: () => {
modalRef.current?.close();

View file

@ -3,7 +3,8 @@ import {
getItemObject,
humanizeSize,
useLibraryMutation,
useLibraryQuery
useLibraryQuery,
useRspcContext
} from '@sd/client';
import dayjs from 'dayjs';
import {
@ -28,6 +29,7 @@ import { tw, twStyle } from '~/lib/tailwind';
import { useActionsModalStore } from '~/stores/modalStore';
import FileInfoModal from './FileInfoModal';
import RenameModal from './RenameModal';
type ActionsContainerProps = PropsWithChildren<{
style?: ViewStyle;
@ -65,8 +67,10 @@ const ActionDivider = () => <View style={tw`my-3.5 h-[0.5px] bg-app-box`} />;
export const ActionsModal = () => {
const fileInfoRef = useRef<ModalRef>(null);
const renameRef = useRef<ModalRef>(null);
const { modalRef, data } = useActionsModalStore();
const rspc = useRspcContext();
const objectData = data && getItemObject(data);
const filePath = data && getIndexedItemFilePath(data);
@ -77,6 +81,13 @@ export const ActionsModal = () => {
enabled: filePath != null
});
const deleteFile = useLibraryMutation('files.deleteFiles', {
onSuccess: () => {
rspc.queryClient.invalidateQueries(['search.paths'])
modalRef.current?.dismiss();
}
});
async function handleOpen() {
const absolutePath = queriedFullPath.data;
if (!absolutePath) return;
@ -141,7 +152,9 @@ export const ActionsModal = () => {
/>
</ActionsContainer>
<ActionsContainer style={tw`mt-2`}>
<ActionsItem icon={Pencil} title="Rename" />
<ActionsItem onPress={() => {
renameRef.current?.present();
}} icon={Pencil} title="Rename" />
<ActionDivider />
<ActionsItem icon={Copy} title="Duplicate" />
<ActionDivider />
@ -154,11 +167,19 @@ export const ActionsModal = () => {
<ActionDivider />
<ActionsItem icon={Package} title="Compress" />
<ActionDivider />
<ActionsItem icon={TrashSimple} title="Delete" isDanger />
<ActionsItem icon={TrashSimple} title="Delete" isDanger onPress={async () => {
if (filePath && filePath.location_id) {
await deleteFile.mutateAsync({
location_id: filePath.location_id,
file_path_ids: [filePath.id]
});
}
}} />
</ActionsContainer>
</View>
)}
</Modal>
<RenameModal objectName={filePath?.name ?? ''} ref={renameRef} />
<FileInfoModal ref={fileInfoRef} data={data} />
</>
);

View file

@ -0,0 +1,90 @@
import { getIndexedItemFilePath, useLibraryMutation, useRspcLibraryContext } from '@sd/client';
import React, { forwardRef, useEffect, useRef, useState } from 'react';
import { Text, View } from 'react-native';
import { TextInput } from 'react-native-gesture-handler';
import { Modal, ModalRef } from '~/components/layout/Modal';
import { Button } from '~/components/primitive/Button';
import { ModalInput } from '~/components/primitive/Input';
import { toast } from '~/components/primitive/Toast';
import useForwardedRef from '~/hooks/useForwardedRef';
import { tw } from '~/lib/tailwind';
import { useActionsModalStore } from '~/stores/modalStore';
interface Props {
objectName: string;
}
const RenameModal = forwardRef<ModalRef, Props>((props, ref) => {
const modalRef = useForwardedRef(ref);
const [newName, setNewName] = useState('');
const rspc = useRspcLibraryContext();
const { data } = useActionsModalStore();
const inputRef = useRef<TextInput>(null);
const filePathData = data && getIndexedItemFilePath(data);
const renameFile = useLibraryMutation(['files.renameFile'], {
onSuccess: () => {
modalRef.current?.dismiss();
rspc.queryClient.invalidateQueries(['search.paths']);
},
onError: () => {
toast.error('Failed to rename object');
}
});
// set input value to object name on initial render
useEffect(() => {
setNewName(props.objectName);
}, [props.objectName]);
const textRenameHandler = async () => {
switch (data?.type) {
case 'Path':
case 'Object': {
if (!filePathData) throw new Error('Failed to get file path object');
const { id, location_id } = filePathData;
if (!location_id) throw new Error('Missing location id');
await renameFile.mutateAsync({
location_id: location_id,
kind: {
One: {
from_file_path_id: id,
to: newName
}
}
});
break;
}
}
};
return (
<Modal
ref={modalRef}
title="Rename"
onDismiss={() => setNewName(props.objectName)}
enableContentPanningGesture={false}
enablePanDownToClose={false}
snapPoints={['20']}
>
<View style={tw`mt-2 flex-col gap-2 px-6`}>
<ModalInput
ref={inputRef}
autoFocus
onFocus={() => inputRef.current?.setSelection(0, newName.length)}
value={newName}
onChangeText={(t) => setNewName(t)}
/>
<Button disabled={newName.length === 0 || props.objectName === newName} onPress={textRenameHandler} variant="accent">
<Text style={tw`font-medium text-ink`}>Save</Text>
</Button>
</View>
</Modal>
);
});
export default RenameModal;

View file

@ -1,16 +1,17 @@
import { forwardRef, useEffect, useState } from 'react';
import { Pressable, Text, View } from 'react-native';
import ColorPicker from 'react-native-wheel-color-picker';
import {
ToastDefautlColor,
useLibraryMutation,
usePlausibleEvent,
useRspcLibraryContext
} from '@sd/client';
import { forwardRef, useEffect, useState } from 'react';
import { Pressable, Text, View } from 'react-native';
import ColorPicker from 'react-native-wheel-color-picker';
import { FadeInAnimation } from '~/components/animation/layout';
import { Modal, ModalRef } from '~/components/layout/Modal';
import { Button } from '~/components/primitive/Button';
import { ModalInput } from '~/components/primitive/Input';
import { toast } from '~/components/primitive/Toast';
import useForwardedRef from '~/hooks/useForwardedRef';
import { useKeyboard } from '~/hooks/useKeyboard';
import { tw, twStyle } from '~/lib/tailwind';
@ -36,8 +37,12 @@ const CreateTagModal = forwardRef<ModalRef, unknown>((_, ref) => {
rspc.queryClient.invalidateQueries(['tags.list']);
toast.success('Tag created successfully');
submitPlausibleEvent({ event: { type: 'tagCreate' } });
},
onError: (error) => {
toast.error(error.message);
},
onSettled: () => {
// Close modal
modalRef.current?.dismiss();
@ -57,7 +62,7 @@ const CreateTagModal = forwardRef<ModalRef, unknown>((_, ref) => {
return (
<Modal
ref={modalRef}
snapPoints={['25']}
snapPoints={['22']}
title="Create Tag"
onDismiss={() => {
// Resets form onDismiss
@ -94,7 +99,7 @@ const CreateTagModal = forwardRef<ModalRef, unknown>((_, ref) => {
<Button
variant="accent"
onPress={() => createTag({ color: tagColor, name: tagName })}
style={tw`mt-6`}
style={tw`mt-2`}
disabled={tagName.length === 0}
>
<Text style={tw`text-sm font-medium text-white`}>Create</Text>

View file

@ -14,17 +14,17 @@ export default function CategoriesScreen() {
const kinds = useLibraryQuery(['library.kindStatistics']);
const navigation = useNavigation<OverviewStackScreenProps<'Overview'>['navigation']>();
return (
<View style={tw`px-6`}>
<View style={tw`px-5`}>
<View style={tw`flex-row items-center justify-between pb-5`}>
<Text style={tw`text-lg font-bold text-white`}>Categories</Text>
<Button
onPress={() => {
navigation.navigate('Categories');
}}
style={tw`h-9 w-9 rounded-full`}
style={tw`h-8 w-8 rounded-full`}
variant="gray"
>
<DotsThree weight='bold' size={20} color={'white'} />
<DotsThree weight='bold' size={18} color={'white'} />
</Button>
</View>
<View style={tw`flex-row flex-wrap gap-2`}>

View file

@ -1,8 +1,8 @@
import { useNavigation } from '@react-navigation/native';
import { useLibraryQuery } from '@sd/client';
import React, { useRef } from 'react';
import { Pressable, Text, View } from 'react-native';
import { FlatList } from 'react-native-gesture-handler';
import { useLibraryQuery } from '@sd/client';
import { tw, twStyle } from '~/lib/tailwind';
import { OverviewStackScreenProps } from '~/navigation/tabs/OverviewStack';
@ -25,10 +25,11 @@ const Locations = () => {
<>
<OverviewSection title="Locations" count={locations?.length}>
<View style={tw`flex-row items-center`}>
<Fade height={'100%'} width={30} color="black">
<FlatList
horizontal
data={locations}
contentContainerStyle={tw`px-7`}
contentContainerStyle={tw`px-6`}
showsHorizontalScrollIndicator={false}
keyExtractor={(location) => location.id.toString()}
ItemSeparatorComponent={() => <View style={tw`w-2`} />}
@ -73,6 +74,7 @@ const Locations = () => {
</Pressable>
)}
/>
</Fade>
</View>
</OverviewSection>
<ImportModal ref={modalRef} />

View file

@ -37,7 +37,7 @@ const StatItem = ({ title, bytes, isLoading, style }: StatItemProps) => {
hidden: isLoading
})}
>
<Text style={tw`text-sm font-bold text-zinc-400`}>{title}</Text>
<Text style={tw`text-xs font-bold text-zinc-400`}>{title}</Text>
<View style={tw`mt-1 flex-row items-baseline`}>
<Text style={twStyle('text-xl font-bold tabular-nums text-white')}>{count}</Text>
<Text style={tw`ml-1 text-sm text-zinc-400`}>{unit}</Text>
@ -104,7 +104,7 @@ const OverviewStats = ({ stats }: Props) => {
};
return (
<View style={tw`px-6`}>
<View style={tw`px-5`}>
<Text style={tw`pb-3 text-lg font-bold text-white`}>Statistics</Text>
<View style={tw`flex-row gap-2`}>
<View style={tw`h-full flex-1 flex-col gap-2`}>

View file

@ -8,10 +8,10 @@ const button = cva(['items-center justify-center rounded-md border shadow-sm'],
variants: {
variant: {
danger: ['border-red-800 bg-red-600 shadow-none'],
gray: ['border-app-lightborder bg-app-button shadow-none'],
gray: ['border-app-box bg-app shadow-none'],
darkgray: ['border-app-box bg-app shadow-none'],
accent: ['border-accent-deep bg-accent shadow-md shadow-app-shade/10'],
outline: ['border-sidebar-line/60 bg-black shadow-none'],
outline: ['border-app-lightborder bg-black shadow-none'],
transparent: ['border-0 bg-black shadow-none'],
dashed: ['border border-dashed border-app-line bg-transparent shadow-none']
},

View file

@ -1,7 +1,7 @@
import { BottomSheetTextInput } from '@gorhom/bottom-sheet';
import { cva, VariantProps } from 'class-variance-authority';
import { Eye, EyeSlash } from 'phosphor-react-native';
import { useState } from 'react';
import { forwardRef, useState } from 'react';
import { Pressable, TextInputProps as RNTextInputProps, TextInput, View } from 'react-native';
import { tw, twStyle } from '~/lib/tailwind';
@ -23,28 +23,32 @@ const input = cva(['rounded-md border text-sm leading-tight shadow-sm'], {
type InputProps = VariantProps<typeof input> & RNTextInputProps;
export const Input = ({ variant, size, ...props }: InputProps) => {
const { style, ...otherProps } = props;
export const Input = forwardRef<TextInput, InputProps>((props, ref) => {
const { style, variant, size, ...otherProps } = props;
return (
<TextInput
ref={ref}
selectionColor={tw.color('accent')}
placeholderTextColor={tw.color('ink-faint')}
style={twStyle(input({ variant, size }), style as string)}
{...otherProps}
/>
);
};
})
// To use in modals (for keyboard handling)
export const ModalInput = ({ variant, size, ...props }: InputProps) => {
const { style, ...otherProps } = props;
export const ModalInput = forwardRef<any, InputProps>((props, ref) => {
const { style, variant, size, ...otherProps } = props;
return (
<BottomSheetTextInput
ref={ref}
selectionColor={tw.color('accent')}
placeholderTextColor={tw.color('ink-faint')}
style={twStyle(input({ variant, size }), style as string)}
{...otherProps}
/>
);
};
})
// Same as Input but configured with password props & show/hide password button

View file

@ -1,30 +1,41 @@
/* eslint-disable no-restricted-imports */
import { CheckCircle, Info, WarningCircle } from 'phosphor-react-native';
import { Text, View } from 'react-native';
import Toast, { ToastConfig } from 'react-native-toast-message';
import { tw } from '~/lib/tailwind';
const baseStyles = 'w-[340px] flex-row overflow-hidden rounded-md border p-3 shadow-lg';
const baseStyles = 'max-w-[340px] flex-row gap-1 items-center justify-center overflow-hidden rounded-md border p-3 shadow-lg bg-app-input border-app-inputborder';
const containerStyle = 'flex-row items-start gap-2'
const toastConfig: ToastConfig = {
success: ({ text1, ...rest }) => (
<View style={tw.style(baseStyles, 'border-app-line bg-app-darkBox/90 ')}>
<Text style={tw`text-sm font-medium text-ink`} numberOfLines={3}>
<View style={tw.style(baseStyles)}>
<View style={tw.style(containerStyle)}>
<CheckCircle size={24} weight="fill" color={tw.color("text-green-500")} />
<Text style={tw`self-center text-left text-sm font-medium text-ink`} numberOfLines={3}>
{text1}
</Text>
</View>
</View>
),
error: ({ text1, ...rest }) => (
<View style={tw.style(baseStyles, 'border-red-500 bg-red-500/90')}>
<Text style={tw`text-sm font-medium text-ink`} numberOfLines={3}>
<View style={tw.style(baseStyles)}>
<View style={tw.style(containerStyle)}>
<WarningCircle size={24} weight="fill" color={tw.color("text-red-500")} />
<Text style={tw`self-center text-left text-sm font-medium text-ink`} numberOfLines={3}>
{text1}
</Text>
</View>
</View>
),
info: ({ text1, ...rest }) => (
<View style={tw.style(baseStyles, 'border-app-line bg-app-darkBox/90')}>
<Text style={tw`text-sm font-medium text-ink`} numberOfLines={3}>
<View style={tw.style(baseStyles)}>
<View style={tw.style(containerStyle)}>
<Info size={24} weight="fill" color={tw.color("text-accent")} />
<Text style={tw`self-center text-left text-sm font-medium text-ink`} numberOfLines={3}>
{text1}
</Text>
</View>
</View>
)
};

View file

@ -16,7 +16,7 @@ const GridTag = ({ tag, modalRef }: GridTagProps) => {
<Card style={twStyle(`h-auto w-full flex-col justify-center gap-3`)}>
<View style={tw`flex-row items-center justify-between`}>
<View
style={twStyle('h-[28px] w-[28px] rounded-full', {
style={twStyle('h-5 w-5 rounded-full', {
backgroundColor: tag.color!
})}
/>

View file

@ -1,8 +1,9 @@
import { Tag } from '@sd/client';
import { useRef } from 'react';
import { Pressable } from 'react-native';
import { Tag } from '@sd/client';
import { twStyle } from '~/lib/tailwind';
import { ClassInput } from 'twrnc';
import { ModalRef } from '../layout/Modal';
import { TagModal } from '../modal/tag/TagModal';
import GridTag from './GridTag';
@ -12,14 +13,15 @@ type TagItemProps = {
tag: Tag;
onPress: () => void;
viewStyle?: 'grid' | 'list';
style?: ClassInput;
};
export const TagItem = ({ tag, onPress, viewStyle = 'grid' }: TagItemProps) => {
export const TagItem = ({ tag, onPress, style, viewStyle = 'grid' }: TagItemProps) => {
const modalRef = useRef<ModalRef>(null);
return (
<>
<Pressable
style={twStyle(viewStyle === 'grid' ? `w-[31.5%]` : `flex-1`)}
style={twStyle(viewStyle === 'grid' ? `m-1 w-[112px]` : `flex-1`, style)}
onPress={onPress}
testID="browse-tag"
>

View file

@ -60,7 +60,7 @@ export function useFiltersSearch(search: string) {
const filters = [] as SearchFilterArgs[];
//It's a global search if no locations have been selected
if (searchStore.filters.locations.length === 0 || !name || !ext) {
if (searchStore.filters.locations.length === 0) {
const locationIds = locations.data?.map((l) => l.id);
if (locationIds) filters.push({ filePath: { locations: { in: locationIds } } });
}

View file

@ -1,4 +1,4 @@
import { useLibraryQuery, usePathsExplorerQuery } from '@sd/client';
import { useLibraryQuery, useLibrarySubscription, usePathsExplorerQuery } from '@sd/client';
import { useEffect, useMemo } from 'react';
import Explorer from '~/components/explorer/Explorer';
import Empty from '~/components/layout/Empty';
@ -19,6 +19,13 @@ export default function LocationScreen({ navigation, route }: BrowseStackScreenP
.pop();
}, [path])
// makes sure that the location shows newest/modified objects
// when a location is opened
useLibrarySubscription(
['locations.quickRescan', { sub_path: path ?? '', location_id: id }],
{ onData() {} }
);
const paths = usePathsExplorerQuery({
arg: {
filters: [

View file

@ -5,10 +5,10 @@ appId: com.spacedrive.app
id: 'browse-tab'
- waitForAnimationToEnd
- tapOn:
id: 'navigate-tags-screen'
- tapOn:
id: 'create-tag-modal'
id: 'create-tag-button'
- inputText: 'MyTag'
- tapOn:
text: 'Create'
- tapOn:
id: 'show-all-tags-button'
- assertVisible: 'MyTag'

View file

@ -58,7 +58,7 @@ importers:
version: 5.4.2
vite:
specifier: ^5.1.6
version: 5.1.6(@types/node@20.11.29)(sass@1.72.0)(terser@5.29.2)
version: 5.1.6(@types/node@20.11.29)(lightningcss@1.19.0)(sass@1.72.0)(terser@5.29.2)
.github/actions/publish-artifacts:
dependencies:
@ -89,7 +89,7 @@ importers:
version: 0.0.0-main-dc31e5b2
'@oscartbeaumont-sd/rspc-tauri':
specifier: '=0.0.0-main-dc31e5b2'
version: 0.0.0-main-dc31e5b2(patch_hash=3ozd223mr7o4cioyf7af7qd56a)(@tauri-apps/api@2.0.0-beta.11)
version: 0.0.0-main-dc31e5b2(patch_hash=3ozd223mr7o4cioyf7af7qd56a)(@tauri-apps/api@2.0.0-beta.12)
'@remix-run/router':
specifier: '=1.13.1'
version: 1.13.1(patch_hash=wdk5klbkacqsve2yzdckjvtjz4)
@ -107,10 +107,10 @@ importers:
version: 0.7.3(typescript@5.4.2)(zod@3.22.4)
'@tanstack/react-query':
specifier: ^4.36.1
version: 4.36.1(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.24.0)(react@18.2.0))(react@18.2.0)
version: 4.36.1(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(react@18.2.0))(react@18.2.0)
'@tauri-apps/api':
specifier: next
version: 2.0.0-beta.11
version: 2.0.0-beta.12
'@tauri-apps/plugin-dialog':
specifier: 2.0.0-beta.3
version: 2.0.0-beta.3
@ -147,7 +147,7 @@ importers:
version: 2.16.0
'@tauri-apps/cli':
specifier: next
version: 2.0.0-beta.16
version: 2.0.0-beta.18
'@types/react':
specifier: ^18.2.67
version: 18.2.67
@ -162,10 +162,10 @@ importers:
version: 5.4.2
vite:
specifier: ^5.1.6
version: 5.1.6(@types/node@20.11.29)(sass@1.72.0)(terser@5.29.2)
version: 5.1.6(@types/node@20.11.29)(lightningcss@1.19.0)(sass@1.72.0)(terser@5.29.2)
vite-tsconfig-paths:
specifier: ^4.3.2
version: 4.3.2(typescript@5.4.2)(vite@5.1.6(@types/node@20.11.29)(sass@1.72.0)(terser@5.29.2))
version: 4.3.2(typescript@5.4.2)(vite@5.1.6(@types/node@20.11.29)(lightningcss@1.19.0)(sass@1.72.0)(terser@5.29.2))
apps/landing:
dependencies:
@ -183,10 +183,10 @@ importers:
version: 1.0.5(@types/react-dom@18.2.22)(@types/react@18.2.67)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
'@react-three/drei':
specifier: ^9.88.13
version: 9.102.6(@react-three/fiber@8.15.19(expo-asset@9.0.2(expo@50.0.13(@babel/core@7.24.0)))(expo-file-system@16.0.8(expo@50.0.13(@babel/core@7.24.0)))(expo@50.0.13(@babel/core@7.24.0))(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.24.0)(react@18.2.0))(react@18.2.0)(three@0.161.0))(@types/react@18.2.67)(@types/three@0.162.0)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(three@0.161.0)
version: 9.102.6(@react-three/fiber@8.15.19(expo-asset@9.0.2(expo@50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0)))))(expo-file-system@16.0.8(expo@50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0)))))(expo@50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))))(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(react@18.2.0))(react@18.2.0)(three@0.161.0))(@types/react@18.2.67)(@types/three@0.162.0)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(three@0.161.0)
'@react-three/fiber':
specifier: ^8.15.11
version: 8.15.19(expo-asset@9.0.2(expo@50.0.13(@babel/core@7.24.0)))(expo-file-system@16.0.8(expo@50.0.13(@babel/core@7.24.0)))(expo@50.0.13(@babel/core@7.24.0))(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.24.0)(react@18.2.0))(react@18.2.0)(three@0.161.0)
version: 8.15.19(expo-asset@9.0.2(expo@50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0)))))(expo-file-system@16.0.8(expo@50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0)))))(expo@50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))))(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(react@18.2.0))(react@18.2.0)(three@0.161.0)
'@sd/assets':
specifier: workspace:*
version: link:../../packages/assets
@ -553,7 +553,7 @@ importers:
version: 8.0.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.4.2)
'@storybook/react-vite':
specifier: ^8.0.1
version: 8.0.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(rollup@4.13.0)(typescript@5.4.2)(vite@5.1.6(@types/node@20.11.29)(sass@1.72.0)(terser@5.29.2))
version: 8.0.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(rollup@4.13.0)(typescript@5.4.2)(vite@5.1.6(@types/node@20.11.29)(lightningcss@1.19.0)(sass@1.72.0)(terser@5.29.2))
'@storybook/testing-library':
specifier: ^0.2.2
version: 0.2.2
@ -602,7 +602,7 @@ importers:
version: 5.4.2
vite:
specifier: ^5.1.6
version: 5.1.6(@types/node@20.11.29)(sass@1.72.0)(terser@5.29.2)
version: 5.1.6(@types/node@20.11.29)(lightningcss@1.19.0)(sass@1.72.0)(terser@5.29.2)
apps/web:
dependencies:
@ -617,7 +617,7 @@ importers:
version: link:../../interface
'@tanstack/react-query':
specifier: ^4.36.1
version: 4.36.1(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.24.0)(react@18.2.0))(react@18.2.0)
version: 4.36.1(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(react@18.2.0))(react@18.2.0)
html-to-image:
specifier: ^1.11.11
version: 1.11.11
@ -675,10 +675,10 @@ importers:
version: 5.4.2
vite:
specifier: ^5.1.6
version: 5.1.6(@types/node@20.11.29)(sass@1.72.0)(terser@5.29.2)
version: 5.1.6(@types/node@20.11.29)(lightningcss@1.19.0)(sass@1.72.0)(terser@5.29.2)
vite-tsconfig-paths:
specifier: ^4.3.2
version: 4.3.2(typescript@5.4.2)(vite@5.1.6(@types/node@20.11.29)(sass@1.72.0)(terser@5.29.2))
version: 4.3.2(typescript@5.4.2)(vite@5.1.6(@types/node@20.11.29)(lightningcss@1.19.0)(sass@1.72.0)(terser@5.29.2))
interface:
dependencies:
@ -735,10 +735,10 @@ importers:
version: 7.107.0
'@tanstack/react-query':
specifier: ^4.36.1
version: 4.36.1(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.24.0)(react@18.2.0))(react@18.2.0)
version: 4.36.1(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(react@18.2.0))(react@18.2.0)
'@tanstack/react-query-devtools':
specifier: ^4.36.1
version: 4.36.1(@tanstack/react-query@4.36.1(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.24.0)(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
version: 4.36.1(@tanstack/react-query@4.36.1(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
'@tanstack/react-table':
specifier: ^8.10.7
version: 8.13.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
@ -801,7 +801,7 @@ importers:
version: 4.5.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
react-i18next:
specifier: ^13.5.0
version: 13.5.0(i18next@23.10.1)(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.24.0)(react@18.2.0))(react@18.2.0)
version: 13.5.0(i18next@23.10.1)(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(react@18.2.0))(react@18.2.0)
react-json-view:
specifier: ^1.21.3
version: 1.21.3(@types/react@18.2.67)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
@ -886,10 +886,10 @@ importers:
version: 5.4.2
vite:
specifier: ^5.1.6
version: 5.1.6(@types/node@20.11.29)(sass@1.72.0)(terser@5.29.2)
version: 5.1.6(@types/node@20.11.29)(lightningcss@1.19.0)(sass@1.72.0)(terser@5.29.2)
vite-plugin-svgr:
specifier: ^3.3.0
version: 3.3.0(rollup@4.13.0)(typescript@5.4.2)(vite@5.1.6(@types/node@20.11.29)(sass@1.72.0)(terser@5.29.2))
version: 3.3.0(rollup@4.13.0)(typescript@5.4.2)(vite@5.1.6(@types/node@20.11.29)(lightningcss@1.19.0)(sass@1.72.0)(terser@5.29.2))
packages/assets: {}
@ -900,13 +900,13 @@ importers:
version: 0.0.0-main-dc31e5b2
'@oscartbeaumont-sd/rspc-react':
specifier: '=0.0.0-main-dc31e5b2'
version: 0.0.0-main-dc31e5b2(@oscartbeaumont-sd/rspc-client@0.0.0-main-dc31e5b2)(@tanstack/react-query@4.36.1(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.24.0)(react@18.2.0))(react@18.2.0))(react@18.2.0)
version: 0.0.0-main-dc31e5b2(@oscartbeaumont-sd/rspc-client@0.0.0-main-dc31e5b2)(@tanstack/react-query@4.36.1(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(react@18.2.0))(react@18.2.0))(react@18.2.0)
'@solid-primitives/deep':
specifier: ^0.2.4
version: 0.2.7(solid-js@1.8.15)
'@tanstack/react-query':
specifier: ^4.36.1
version: 4.36.1(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.24.0)(react@18.2.0))(react@18.2.0)
version: 4.36.1(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(react@18.2.0))(react@18.2.0)
'@tanstack/solid-query':
specifier: ^5.17.9
version: 5.28.5(solid-js@1.8.15)
@ -962,7 +962,7 @@ importers:
version: 7.3.1(eslint@8.57.0)(typescript@5.4.2)
'@vitejs/plugin-react-swc':
specifier: ^3.6.0
version: 3.6.0(@swc/helpers@0.5.2)(vite@5.1.6(@types/node@20.11.29)(sass@1.72.0)(terser@5.29.2))
version: 3.6.0(@swc/helpers@0.5.2)(vite@5.1.6(@types/node@20.11.29)(lightningcss@1.19.0)(sass@1.72.0)(terser@5.29.2))
eslint:
specifier: ^8.57.0
version: 8.57.0
@ -998,19 +998,19 @@ importers:
version: 3.2.0
vite-plugin-html:
specifier: ^3.2.2
version: 3.2.2(vite@5.1.6(@types/node@20.11.29)(sass@1.72.0)(terser@5.29.2))
version: 3.2.2(vite@5.1.6(@types/node@20.11.29)(lightningcss@1.19.0)(sass@1.72.0)(terser@5.29.2))
vite-plugin-i18next-loader:
specifier: ^2.0.12
version: 2.0.12(vite@5.1.6(@types/node@20.11.29)(sass@1.72.0)(terser@5.29.2))
version: 2.0.12(vite@5.1.6(@types/node@20.11.29)(lightningcss@1.19.0)(sass@1.72.0)(terser@5.29.2))
vite-plugin-inspect:
specifier: ^0.8.3
version: 0.8.3(rollup@4.13.0)(vite@5.1.6(@types/node@20.11.29)(sass@1.72.0)(terser@5.29.2))
version: 0.8.3(rollup@4.13.0)(vite@5.1.6(@types/node@20.11.29)(lightningcss@1.19.0)(sass@1.72.0)(terser@5.29.2))
vite-plugin-solid:
specifier: ^2.10.2
version: 2.10.2(@testing-library/jest-dom@6.4.2)(solid-js@1.8.15)(vite@5.1.6(@types/node@20.11.29)(sass@1.72.0)(terser@5.29.2))
version: 2.10.2(@testing-library/jest-dom@6.4.2)(solid-js@1.8.15)(vite@5.1.6(@types/node@20.11.29)(lightningcss@1.19.0)(sass@1.72.0)(terser@5.29.2))
vite-plugin-svgr:
specifier: ^3.3.0
version: 3.3.0(rollup@4.13.0)(typescript@5.4.2)(vite@5.1.6(@types/node@20.11.29)(sass@1.72.0)(terser@5.29.2))
version: 3.3.0(rollup@4.13.0)(typescript@5.4.2)(vite@5.1.6(@types/node@20.11.29)(lightningcss@1.19.0)(sass@1.72.0)(terser@5.29.2))
packages/ui:
dependencies:
@ -3560,9 +3560,6 @@ packages:
'@radix-ui/number@1.0.1':
resolution: {integrity: sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==}
'@radix-ui/primitive@1.0.0':
resolution: {integrity: sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA==}
'@radix-ui/primitive@1.0.1':
resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==}
@ -3605,11 +3602,6 @@ packages:
'@types/react-dom':
optional: true
'@radix-ui/react-compose-refs@1.0.0':
resolution: {integrity: sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==}
peerDependencies:
react: ^16.8 || ^17.0 || ^18.0
'@radix-ui/react-compose-refs@1.0.1':
resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==}
peerDependencies:
@ -3663,12 +3655,6 @@ packages:
'@types/react':
optional: true
'@radix-ui/react-dismissable-layer@1.0.2':
resolution: {integrity: sha512-WjJzMrTWROozDqLB0uRWYvj4UuXsM/2L19EmQ3Au+IJWqwvwq9Bwd+P8ivo0Deg9JDPArR1I6MbWNi1CmXsskg==}
peerDependencies:
react: ^16.8 || ^17.0 || ^18.0
react-dom: ^16.8 || ^17.0 || ^18.0
'@radix-ui/react-dismissable-layer@1.0.4':
resolution: {integrity: sha512-7UpBa/RKMoHJYjie1gkF1DlK8l1fdU/VKDpoS3rCCo8YBJR294GwcEHyxHw72yvphJ7ld0AXEcSLAzY2F/WyCg==}
peerDependencies:
@ -3843,12 +3829,6 @@ packages:
'@types/react-dom':
optional: true
'@radix-ui/react-primitive@1.0.1':
resolution: {integrity: sha512-fHbmislWVkZaIdeF6GZxF0A/NH/3BjrGIYj+Ae6eTmTCr7EB0RQAAVEiqsXK6p3/JcRqVSBQoceZroj30Jj3XA==}
peerDependencies:
react: ^16.8 || ^17.0 || ^18.0
react-dom: ^16.8 || ^17.0 || ^18.0
'@radix-ui/react-primitive@1.0.3':
resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==}
peerDependencies:
@ -3927,11 +3907,6 @@ packages:
'@types/react-dom':
optional: true
'@radix-ui/react-slot@1.0.1':
resolution: {integrity: sha512-avutXAFL1ehGvAXtPquu0YK5oz6ctS474iM3vNGQIkswrVhdrS52e3uoMQBzZhNRAIE0jBnUyXWNmSjGHhCFcw==}
peerDependencies:
react: ^16.8 || ^17.0 || ^18.0
'@radix-ui/react-slot@1.0.2':
resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==}
peerDependencies:
@ -3993,11 +3968,6 @@ packages:
'@types/react-dom':
optional: true
'@radix-ui/react-use-callback-ref@1.0.0':
resolution: {integrity: sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==}
peerDependencies:
react: ^16.8 || ^17.0 || ^18.0
'@radix-ui/react-use-callback-ref@1.0.1':
resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==}
peerDependencies:
@ -4016,11 +3986,6 @@ packages:
'@types/react':
optional: true
'@radix-ui/react-use-escape-keydown@1.0.2':
resolution: {integrity: sha512-DXGim3x74WgUv+iMNCF+cAo8xUHHeqvjx8zs7trKf+FkQKPQXLk2sX7Gx1ysH7Q76xCpZuxIJE7HLPxRE+Q+GA==}
peerDependencies:
react: ^16.8 || ^17.0 || ^18.0
'@radix-ui/react-use-escape-keydown@1.0.3':
resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==}
peerDependencies:
@ -5114,68 +5079,72 @@ packages:
resolution: {integrity: sha512-wJRY+fBUm3KpqZDHMIz5HRv+1vlnvRJ/dFxiyY3NlINTx2qXqDou5qWYcP1CuZXsd39InWVPV3FAZvno/kGCkA==}
engines: {node: '>= 18', npm: '>= 6.6.0', yarn: '>= 1.19.1'}
'@tauri-apps/cli-darwin-arm64@2.0.0-beta.16':
resolution: {integrity: sha512-5Gif4AvpJmnyLj3HO3AEl1RVrr4ast6mDQiXoLwe75bfWq1pj9VwsS5SuSrUKtB8YBSnnclcJwkqwa6soY/xkg==}
'@tauri-apps/api@2.0.0-beta.12':
resolution: {integrity: sha512-77OvAnsExtiprnjQcvmDyZGfnIvMF/zVL5+8Vkl1R8o8E3iDtvEJZpbbH1F4dPtNa3gr4byp/5dm8hAa1+r3AA==}
engines: {node: '>= 18', npm: '>= 6.6.0', yarn: '>= 1.19.1'}
'@tauri-apps/cli-darwin-arm64@2.0.0-beta.18':
resolution: {integrity: sha512-Jq49VH/UpHVkWw+qqymY1xWLMu7FF+4r5C4qVZvgm5Mkgulgf63jyCkrejdlXvOJQNm5MAHTyn2hnX6ZDeWVxA==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
'@tauri-apps/cli-darwin-x64@2.0.0-beta.16':
resolution: {integrity: sha512-6Cia8lGSroyoXKvfRI+Dv8Xinr27lptDzGZnd8mT9V0xPg73xcWxPKiTkuxPmLQTrQKVAurfsX3DwwgK8m9kSw==}
'@tauri-apps/cli-darwin-x64@2.0.0-beta.18':
resolution: {integrity: sha512-50UZNSPfMveKv8jH674S8r+844Ew3WFyastZU+/Q2pPCzqBU4ejdVVLT/37oZo8ip3VpLR3+TBfSn0dmdKrgUw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
'@tauri-apps/cli-linux-arm-gnueabihf@2.0.0-beta.16':
resolution: {integrity: sha512-1mQ0flIt0wrX4QLPwd8f1QFsuFjLPQtWuiObK63K0/YZmDS2yzKT6jnGqNCJsSiyXE2/36gKSyWh6OVpX8U7xg==}
'@tauri-apps/cli-linux-arm-gnueabihf@2.0.0-beta.18':
resolution: {integrity: sha512-2AI8j2LwryQ+HYMvLNx9EDRWMRwWhK/7RKdOkxgXEbLXc6AKzwVZLH6QddQvjcq8nBR6zk5wnvBjxo1DcQEBSA==}
engines: {node: '>= 10'}
cpu: [arm]
os: [linux]
'@tauri-apps/cli-linux-arm64-gnu@2.0.0-beta.16':
resolution: {integrity: sha512-CjgwOvaslvy06m36faZ40noQaBu37gcXtD0HlCgAMofDZz7fUWQJn3xE7r8fegXmY0oMKZ9ah8dgwd5KSk+L+Q==}
'@tauri-apps/cli-linux-arm64-gnu@2.0.0-beta.18':
resolution: {integrity: sha512-HcPWBF/rJkBgzQhuUwxY8v/+44EamEqqj6rNO6j59d070e/80Uaild6a7A2LKNtvskm7zK436oDfWCyOBF/QQA==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
'@tauri-apps/cli-linux-arm64-musl@2.0.0-beta.16':
resolution: {integrity: sha512-JMtryDJckutFzNpwFgh98o9Z4Vw1pwImYmJIDLpCPSqYIfd+mrBgPZFTaGl11ZsQnllqt4FNXlYR8T+ey7ZpfQ==}
'@tauri-apps/cli-linux-arm64-musl@2.0.0-beta.18':
resolution: {integrity: sha512-JkQ4rMtuhPFotMKsVhbRF18f3EiHsdnu7QiOy3i9idFnAv1moo7tU46ntRJtXr8FRTEHywMnnzlNo4Tg5fbZSw==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
'@tauri-apps/cli-linux-x64-gnu@2.0.0-beta.16':
resolution: {integrity: sha512-3dQGCKsbjaIzk4UM7Jf5FzBJpBJ1OfwBOwkVv2M4O7EDLNZi9brDR+I41eqyFhTabEcHJoLhtURLbD25dJuiug==}
'@tauri-apps/cli-linux-x64-gnu@2.0.0-beta.18':
resolution: {integrity: sha512-H0whpcVNrVx3apDz2Kp+OgNcJFkTxijqEABYtHS7vXHnhmb6DNdUlKudSW0NwK8SmHJREm0KJftEszrJOoJwaw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
'@tauri-apps/cli-linux-x64-musl@2.0.0-beta.16':
resolution: {integrity: sha512-t+wdk/VCn8l9y1fhRQPfvZyz3Or7QEPTxXNobbUzbtckFsf/LqTxjaajOBmSGnZpoTDFvwVOmalDaylILxuM5g==}
'@tauri-apps/cli-linux-x64-musl@2.0.0-beta.18':
resolution: {integrity: sha512-pti+ttp3Kn7s0Xu4Dc+Z6idLWaQqZel8UqLlvHY21Tf/G4TgMBoyonIWRfQMRoy4DcW/8Oml5F4ZY6IdTC9dgg==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
'@tauri-apps/cli-win32-arm64-msvc@2.0.0-beta.16':
resolution: {integrity: sha512-ouP0iiRMTNaKyz6c06LucMR5P585r2XJ3/GlzNWtUfP4EaP8mZAENB0ro9VZl10++7Z658MdWxSAf4+Qmkj0jQ==}
'@tauri-apps/cli-win32-arm64-msvc@2.0.0-beta.18':
resolution: {integrity: sha512-hcc2YsFTbwoctuf+mC3DSy1FVMifH02+6I8kjXXXj2DE4FguP6TwbH43oY+GB6zI3bNdRRhqaZ83GfPTLR55pw==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
'@tauri-apps/cli-win32-ia32-msvc@2.0.0-beta.16':
resolution: {integrity: sha512-BiBkv3IesPNGXVaampxpB+ub0tz2sGu+6OLzxSm1QTp+2ZSw/qeXi/icvJl5azmOyee4ZWBBiuBzdVY88QH+Vw==}
'@tauri-apps/cli-win32-ia32-msvc@2.0.0-beta.18':
resolution: {integrity: sha512-8wPZ9L87m0vXNKuMWaYN7nz23Nx95yMEAFCZLrVgpvWahh+LyUho7TrHUQqzE3pGtlkhWDA64hqvuH8Sg75Jwg==}
engines: {node: '>= 10'}
cpu: [ia32]
os: [win32]
'@tauri-apps/cli-win32-x64-msvc@2.0.0-beta.16':
resolution: {integrity: sha512-rrJeC7eAT6diQpnI3aaflhvtKyTryywbhHLG/c1QyPhdxA7Or6nflo5KzWLd6q3GQqKRbvz5dDtxwFn+XLo+rQ==}
'@tauri-apps/cli-win32-x64-msvc@2.0.0-beta.18':
resolution: {integrity: sha512-x31LCiExR1cS/xXNs1AJEDEM7dtoE3tYWy6u7Kcl1bQBWZV5AAEofRhO1iztWCNdOm2Ddvc/Ugb8Q2khAu7+iw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
'@tauri-apps/cli@2.0.0-beta.16':
resolution: {integrity: sha512-ELaPqTekAVfTU4lFf7k/Z422DKXk/uDWi7ppI8TuQOqcXjrxlXMvv/Y1eC2tem9vMeuOIU0Jg53pOhOu0w8JIQ==}
'@tauri-apps/cli@2.0.0-beta.18':
resolution: {integrity: sha512-VcuvIyKsGVygUX1sIZmyCinzfudhcgzkFY8c9UBTbpf2/dtJADqqKEirsTXa/XPvWK64weyHFpr+i1uL7zopsg==}
engines: {node: '>= 10'}
hasBin: true
@ -15817,13 +15786,13 @@ snapshots:
'@types/yargs': 17.0.32
chalk: 4.1.2
'@joshwooding/vite-plugin-react-docgen-typescript@0.3.0(typescript@5.4.2)(vite@5.1.6(@types/node@20.11.29)(sass@1.72.0)(terser@5.29.2))':
'@joshwooding/vite-plugin-react-docgen-typescript@0.3.0(typescript@5.4.2)(vite@5.1.6(@types/node@20.11.29)(lightningcss@1.19.0)(sass@1.72.0)(terser@5.29.2))':
dependencies:
glob: 7.2.3
glob-promise: 4.2.2(glob@7.2.3)
magic-string: 0.27.0
react-docgen-typescript: 2.2.2(typescript@5.4.2)
vite: 5.1.6(@types/node@20.11.29)(sass@1.72.0)(terser@5.29.2)
vite: 5.1.6(@types/node@20.11.29)(lightningcss@1.19.0)(sass@1.72.0)(terser@5.29.2)
optionalDependencies:
typescript: 5.4.2
@ -16238,16 +16207,10 @@ snapshots:
'@tanstack/react-query': 4.36.1(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(react@18.2.0))(react@18.2.0)
react: 18.2.0
'@oscartbeaumont-sd/rspc-react@0.0.0-main-dc31e5b2(@oscartbeaumont-sd/rspc-client@0.0.0-main-dc31e5b2)(@tanstack/react-query@4.36.1(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.24.0)(react@18.2.0))(react@18.2.0))(react@18.2.0)':
'@oscartbeaumont-sd/rspc-tauri@0.0.0-main-dc31e5b2(patch_hash=3ozd223mr7o4cioyf7af7qd56a)(@tauri-apps/api@2.0.0-beta.12)':
dependencies:
'@oscartbeaumont-sd/rspc-client': 0.0.0-main-dc31e5b2
'@tanstack/react-query': 4.36.1(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.24.0)(react@18.2.0))(react@18.2.0)
react: 18.2.0
'@oscartbeaumont-sd/rspc-tauri@0.0.0-main-dc31e5b2(patch_hash=3ozd223mr7o4cioyf7af7qd56a)(@tauri-apps/api@2.0.0-beta.11)':
dependencies:
'@oscartbeaumont-sd/rspc-client': 0.0.0-main-dc31e5b2
'@tauri-apps/api': 2.0.0-beta.11
'@tauri-apps/api': 2.0.0-beta.12
'@phosphor-icons/core@2.0.8': {}
@ -16315,10 +16278,6 @@ snapshots:
dependencies:
'@babel/runtime': 7.24.0
'@radix-ui/primitive@1.0.0':
dependencies:
'@babel/runtime': 7.24.0
'@radix-ui/primitive@1.0.1':
dependencies:
'@babel/runtime': 7.24.0
@ -16363,11 +16322,6 @@ snapshots:
'@types/react': 18.2.67
'@types/react-dom': 18.2.22
'@radix-ui/react-compose-refs@1.0.0(react@18.2.0)':
dependencies:
'@babel/runtime': 7.24.0
react: 18.2.0
'@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.67)(react@18.2.0)':
dependencies:
'@babel/runtime': 7.24.0
@ -16427,17 +16381,6 @@ snapshots:
optionalDependencies:
'@types/react': 18.2.67
'@radix-ui/react-dismissable-layer@1.0.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
dependencies:
'@babel/runtime': 7.24.0
'@radix-ui/primitive': 1.0.0
'@radix-ui/react-compose-refs': 1.0.0(react@18.2.0)
'@radix-ui/react-primitive': 1.0.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
'@radix-ui/react-use-callback-ref': 1.0.0(react@18.2.0)
'@radix-ui/react-use-escape-keydown': 1.0.2(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
'@radix-ui/react-dismissable-layer@1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.67)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
dependencies:
'@babel/runtime': 7.24.0
@ -16529,7 +16472,7 @@ snapshots:
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.67)(react@18.2.0)
'@radix-ui/react-context': 1.0.1(@types/react@18.2.67)(react@18.2.0)
'@radix-ui/react-direction': 1.0.1(@types/react@18.2.67)(react@18.2.0)
'@radix-ui/react-dismissable-layer': 1.0.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
'@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.22)(@types/react@18.2.67)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
'@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.67)(react@18.2.0)
'@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.67)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
'@radix-ui/react-id': 1.0.1(@types/react@18.2.67)(react@18.2.0)
@ -16641,13 +16584,6 @@ snapshots:
'@types/react': 18.2.67
'@types/react-dom': 18.2.22
'@radix-ui/react-primitive@1.0.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
dependencies:
'@babel/runtime': 7.24.0
'@radix-ui/react-slot': 1.0.1(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
'@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.67)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
dependencies:
'@babel/runtime': 7.24.0
@ -16756,12 +16692,6 @@ snapshots:
'@types/react': 18.2.67
'@types/react-dom': 18.2.22
'@radix-ui/react-slot@1.0.1(react@18.2.0)':
dependencies:
'@babel/runtime': 7.24.0
'@radix-ui/react-compose-refs': 1.0.0(react@18.2.0)
react: 18.2.0
'@radix-ui/react-slot@1.0.2(@types/react@18.2.67)(react@18.2.0)':
dependencies:
'@babel/runtime': 7.24.0
@ -16845,11 +16775,6 @@ snapshots:
'@types/react': 18.2.67
'@types/react-dom': 18.2.22
'@radix-ui/react-use-callback-ref@1.0.0(react@18.2.0)':
dependencies:
'@babel/runtime': 7.24.0
react: 18.2.0
'@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.67)(react@18.2.0)':
dependencies:
'@babel/runtime': 7.24.0
@ -16865,12 +16790,6 @@ snapshots:
optionalDependencies:
'@types/react': 18.2.67
'@radix-ui/react-use-escape-keydown@1.0.2(react@18.2.0)':
dependencies:
'@babel/runtime': 7.24.0
'@radix-ui/react-use-callback-ref': 1.0.0(react@18.2.0)
react: 18.2.0
'@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.67)(react@18.2.0)':
dependencies:
'@babel/runtime': 7.24.0
@ -17458,13 +17377,6 @@ snapshots:
nullthrows: 1.1.1
react-native: 0.73.4(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(react@18.2.0)
'@react-native/virtualized-lists@0.73.4(react-native@0.73.4(@babel/core@7.24.0)(react@18.2.0))':
dependencies:
invariant: 2.2.4
nullthrows: 1.1.1
react-native: 0.73.4(@babel/core@7.24.0)(react@18.2.0)
optional: true
'@react-navigation/bottom-tabs@6.5.20(@react-navigation/native@6.1.17(react-native@0.73.4(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(react@18.2.0))(react@18.2.0))(react-native-safe-area-context@4.8.2(react-native@0.73.4(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(react@18.2.0))(react@18.2.0))(react-native-screens@3.29.0(react-native@0.73.4(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(react@18.2.0))(react@18.2.0))(react-native@0.73.4(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(react@18.2.0))(react@18.2.0)':
dependencies:
'@react-navigation/elements': 1.3.30(@react-navigation/native@6.1.17(react-native@0.73.4(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(react@18.2.0))(react@18.2.0))(react-native-safe-area-context@4.8.2(react-native@0.73.4(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(react@18.2.0))(react@18.2.0))(react-native@0.73.4(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(react@18.2.0))(react@18.2.0)
@ -17569,13 +17481,13 @@ snapshots:
'@react-spring/types': 9.7.3
react: 18.2.0
'@react-spring/three@9.6.1(@react-three/fiber@8.15.19(expo-asset@9.0.2(expo@50.0.13(@babel/core@7.24.0)))(expo-file-system@16.0.8(expo@50.0.13(@babel/core@7.24.0)))(expo@50.0.13(@babel/core@7.24.0))(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.24.0)(react@18.2.0))(react@18.2.0)(three@0.161.0))(react@18.2.0)(three@0.161.0)':
'@react-spring/three@9.6.1(@react-three/fiber@8.15.19(expo-asset@9.0.2(expo@50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0)))))(expo-file-system@16.0.8(expo@50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0)))))(expo@50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))))(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(react@18.2.0))(react@18.2.0)(three@0.161.0))(react@18.2.0)(three@0.161.0)':
dependencies:
'@react-spring/animated': 9.6.1(react@18.2.0)
'@react-spring/core': 9.6.1(react@18.2.0)
'@react-spring/shared': 9.6.1(react@18.2.0)
'@react-spring/types': 9.6.1
'@react-three/fiber': 8.15.19(expo-asset@9.0.2(expo@50.0.13(@babel/core@7.24.0)))(expo-file-system@16.0.8(expo@50.0.13(@babel/core@7.24.0)))(expo@50.0.13(@babel/core@7.24.0))(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.24.0)(react@18.2.0))(react@18.2.0)(three@0.161.0)
'@react-three/fiber': 8.15.19(expo-asset@9.0.2(expo@50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0)))))(expo-file-system@16.0.8(expo@50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0)))))(expo@50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))))(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(react@18.2.0))(react@18.2.0)(three@0.161.0)
react: 18.2.0
three: 0.161.0
@ -17592,12 +17504,12 @@ snapshots:
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
'@react-three/drei@9.102.6(@react-three/fiber@8.15.19(expo-asset@9.0.2(expo@50.0.13(@babel/core@7.24.0)))(expo-file-system@16.0.8(expo@50.0.13(@babel/core@7.24.0)))(expo@50.0.13(@babel/core@7.24.0))(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.24.0)(react@18.2.0))(react@18.2.0)(three@0.161.0))(@types/react@18.2.67)(@types/three@0.162.0)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(three@0.161.0)':
'@react-three/drei@9.102.6(@react-three/fiber@8.15.19(expo-asset@9.0.2(expo@50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0)))))(expo-file-system@16.0.8(expo@50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0)))))(expo@50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))))(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(react@18.2.0))(react@18.2.0)(three@0.161.0))(@types/react@18.2.67)(@types/three@0.162.0)(immer@10.0.4)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(three@0.161.0)':
dependencies:
'@babel/runtime': 7.24.0
'@mediapipe/tasks-vision': 0.10.8
'@react-spring/three': 9.6.1(@react-three/fiber@8.15.19(expo-asset@9.0.2(expo@50.0.13(@babel/core@7.24.0)))(expo-file-system@16.0.8(expo@50.0.13(@babel/core@7.24.0)))(expo@50.0.13(@babel/core@7.24.0))(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.24.0)(react@18.2.0))(react@18.2.0)(three@0.161.0))(react@18.2.0)(three@0.161.0)
'@react-three/fiber': 8.15.19(expo-asset@9.0.2(expo@50.0.13(@babel/core@7.24.0)))(expo-file-system@16.0.8(expo@50.0.13(@babel/core@7.24.0)))(expo@50.0.13(@babel/core@7.24.0))(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.24.0)(react@18.2.0))(react@18.2.0)(three@0.161.0)
'@react-spring/three': 9.6.1(@react-three/fiber@8.15.19(expo-asset@9.0.2(expo@50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0)))))(expo-file-system@16.0.8(expo@50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0)))))(expo@50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))))(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(react@18.2.0))(react@18.2.0)(three@0.161.0))(react@18.2.0)(three@0.161.0)
'@react-three/fiber': 8.15.19(expo-asset@9.0.2(expo@50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0)))))(expo-file-system@16.0.8(expo@50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0)))))(expo@50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))))(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(react@18.2.0))(react@18.2.0)(three@0.161.0)
'@use-gesture/react': 10.3.0(react@18.2.0)
camera-controls: 2.8.3(three@0.161.0)
cross-env: 7.0.3
@ -17625,7 +17537,7 @@ snapshots:
- '@types/three'
- immer
'@react-three/fiber@8.15.19(expo-asset@9.0.2(expo@50.0.13(@babel/core@7.24.0)))(expo-file-system@16.0.8(expo@50.0.13(@babel/core@7.24.0)))(expo@50.0.13(@babel/core@7.24.0))(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.24.0)(react@18.2.0))(react@18.2.0)(three@0.161.0)':
'@react-three/fiber@8.15.19(expo-asset@9.0.2(expo@50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0)))))(expo-file-system@16.0.8(expo@50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0)))))(expo@50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))))(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(react@18.2.0))(react@18.2.0)(three@0.161.0)':
dependencies:
'@babel/runtime': 7.24.0
'@types/react-reconciler': 0.26.7
@ -17641,11 +17553,11 @@ snapshots:
three: 0.161.0
zustand: 3.7.2(react@18.2.0)
optionalDependencies:
expo: 50.0.13(@babel/core@7.24.0)
expo-asset: 9.0.2(expo@50.0.13(@babel/core@7.24.0))
expo-file-system: 16.0.8(expo@50.0.13(@babel/core@7.24.0))
expo: 50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0)))
expo-asset: 9.0.2(expo@50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))))
expo-file-system: 16.0.8(expo@50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))))
react-dom: 18.2.0(react@18.2.0)
react-native: 0.73.4(@babel/core@7.24.0)(react@18.2.0)
react-native: 0.73.4(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(react@18.2.0)
'@redux-devtools/extension@3.3.0(redux@5.0.1)':
dependencies:
@ -18089,7 +18001,7 @@ snapshots:
- encoding
- supports-color
'@storybook/builder-vite@8.0.1(typescript@5.4.2)(vite@5.1.6(@types/node@20.11.29)(sass@1.72.0)(terser@5.29.2))':
'@storybook/builder-vite@8.0.1(typescript@5.4.2)(vite@5.1.6(@types/node@20.11.29)(lightningcss@1.19.0)(sass@1.72.0)(terser@5.29.2))':
dependencies:
'@storybook/channels': 8.0.1
'@storybook/client-logger': 8.0.1
@ -18108,7 +18020,7 @@ snapshots:
fs-extra: 11.2.0
magic-string: 0.30.8
ts-dedent: 2.2.0
vite: 5.1.6(@types/node@20.11.29)(sass@1.72.0)(terser@5.29.2)
vite: 5.1.6(@types/node@20.11.29)(lightningcss@1.19.0)(sass@1.72.0)(terser@5.29.2)
optionalDependencies:
typescript: 5.4.2
transitivePeerDependencies:
@ -18406,11 +18318,11 @@ snapshots:
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
'@storybook/react-vite@8.0.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(rollup@4.13.0)(typescript@5.4.2)(vite@5.1.6(@types/node@20.11.29)(sass@1.72.0)(terser@5.29.2))':
'@storybook/react-vite@8.0.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(rollup@4.13.0)(typescript@5.4.2)(vite@5.1.6(@types/node@20.11.29)(lightningcss@1.19.0)(sass@1.72.0)(terser@5.29.2))':
dependencies:
'@joshwooding/vite-plugin-react-docgen-typescript': 0.3.0(typescript@5.4.2)(vite@5.1.6(@types/node@20.11.29)(sass@1.72.0)(terser@5.29.2))
'@joshwooding/vite-plugin-react-docgen-typescript': 0.3.0(typescript@5.4.2)(vite@5.1.6(@types/node@20.11.29)(lightningcss@1.19.0)(sass@1.72.0)(terser@5.29.2))
'@rollup/pluginutils': 5.1.0(rollup@4.13.0)
'@storybook/builder-vite': 8.0.1(typescript@5.4.2)(vite@5.1.6(@types/node@20.11.29)(sass@1.72.0)(terser@5.29.2))
'@storybook/builder-vite': 8.0.1(typescript@5.4.2)(vite@5.1.6(@types/node@20.11.29)(lightningcss@1.19.0)(sass@1.72.0)(terser@5.29.2))
'@storybook/node-logger': 8.0.1
'@storybook/react': 8.0.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.4.2)
find-up: 5.0.0
@ -18420,7 +18332,7 @@ snapshots:
react-dom: 18.2.0(react@18.2.0)
resolve: 1.22.8
tsconfig-paths: 4.2.0
vite: 5.1.6(@types/node@20.11.29)(sass@1.72.0)(terser@5.29.2)
vite: 5.1.6(@types/node@20.11.29)(lightningcss@1.19.0)(sass@1.72.0)(terser@5.29.2)
transitivePeerDependencies:
- '@preact/preset-vite'
- encoding
@ -18706,10 +18618,10 @@ snapshots:
'@tanstack/query-core@5.28.4': {}
'@tanstack/react-query-devtools@4.36.1(@tanstack/react-query@4.36.1(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.24.0)(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
'@tanstack/react-query-devtools@4.36.1(@tanstack/react-query@4.36.1(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
dependencies:
'@tanstack/match-sorter-utils': 8.11.8
'@tanstack/react-query': 4.36.1(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.24.0)(react@18.2.0))(react@18.2.0)
'@tanstack/react-query': 4.36.1(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(react@18.2.0))(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
superjson: 1.13.3
@ -18724,15 +18636,6 @@ snapshots:
react-dom: 18.2.0(react@18.2.0)
react-native: 0.73.4(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(react@18.2.0)
'@tanstack/react-query@4.36.1(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.24.0)(react@18.2.0))(react@18.2.0)':
dependencies:
'@tanstack/query-core': 4.36.1
react: 18.2.0
use-sync-external-store: 1.2.0(react@18.2.0)
optionalDependencies:
react-dom: 18.2.0(react@18.2.0)
react-native: 0.73.4(@babel/core@7.24.0)(react@18.2.0)
'@tanstack/react-table@8.13.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
dependencies:
'@tanstack/table-core': 8.13.2
@ -18763,48 +18666,50 @@ snapshots:
'@tauri-apps/api@2.0.0-beta.11': {}
'@tauri-apps/cli-darwin-arm64@2.0.0-beta.16':
'@tauri-apps/api@2.0.0-beta.12': {}
'@tauri-apps/cli-darwin-arm64@2.0.0-beta.18':
optional: true
'@tauri-apps/cli-darwin-x64@2.0.0-beta.16':
'@tauri-apps/cli-darwin-x64@2.0.0-beta.18':
optional: true
'@tauri-apps/cli-linux-arm-gnueabihf@2.0.0-beta.16':
'@tauri-apps/cli-linux-arm-gnueabihf@2.0.0-beta.18':
optional: true
'@tauri-apps/cli-linux-arm64-gnu@2.0.0-beta.16':
'@tauri-apps/cli-linux-arm64-gnu@2.0.0-beta.18':
optional: true
'@tauri-apps/cli-linux-arm64-musl@2.0.0-beta.16':
'@tauri-apps/cli-linux-arm64-musl@2.0.0-beta.18':
optional: true
'@tauri-apps/cli-linux-x64-gnu@2.0.0-beta.16':
'@tauri-apps/cli-linux-x64-gnu@2.0.0-beta.18':
optional: true
'@tauri-apps/cli-linux-x64-musl@2.0.0-beta.16':
'@tauri-apps/cli-linux-x64-musl@2.0.0-beta.18':
optional: true
'@tauri-apps/cli-win32-arm64-msvc@2.0.0-beta.16':
'@tauri-apps/cli-win32-arm64-msvc@2.0.0-beta.18':
optional: true
'@tauri-apps/cli-win32-ia32-msvc@2.0.0-beta.16':
'@tauri-apps/cli-win32-ia32-msvc@2.0.0-beta.18':
optional: true
'@tauri-apps/cli-win32-x64-msvc@2.0.0-beta.16':
'@tauri-apps/cli-win32-x64-msvc@2.0.0-beta.18':
optional: true
'@tauri-apps/cli@2.0.0-beta.16':
'@tauri-apps/cli@2.0.0-beta.18':
optionalDependencies:
'@tauri-apps/cli-darwin-arm64': 2.0.0-beta.16
'@tauri-apps/cli-darwin-x64': 2.0.0-beta.16
'@tauri-apps/cli-linux-arm-gnueabihf': 2.0.0-beta.16
'@tauri-apps/cli-linux-arm64-gnu': 2.0.0-beta.16
'@tauri-apps/cli-linux-arm64-musl': 2.0.0-beta.16
'@tauri-apps/cli-linux-x64-gnu': 2.0.0-beta.16
'@tauri-apps/cli-linux-x64-musl': 2.0.0-beta.16
'@tauri-apps/cli-win32-arm64-msvc': 2.0.0-beta.16
'@tauri-apps/cli-win32-ia32-msvc': 2.0.0-beta.16
'@tauri-apps/cli-win32-x64-msvc': 2.0.0-beta.16
'@tauri-apps/cli-darwin-arm64': 2.0.0-beta.18
'@tauri-apps/cli-darwin-x64': 2.0.0-beta.18
'@tauri-apps/cli-linux-arm-gnueabihf': 2.0.0-beta.18
'@tauri-apps/cli-linux-arm64-gnu': 2.0.0-beta.18
'@tauri-apps/cli-linux-arm64-musl': 2.0.0-beta.18
'@tauri-apps/cli-linux-x64-gnu': 2.0.0-beta.18
'@tauri-apps/cli-linux-x64-musl': 2.0.0-beta.18
'@tauri-apps/cli-win32-arm64-msvc': 2.0.0-beta.18
'@tauri-apps/cli-win32-ia32-msvc': 2.0.0-beta.18
'@tauri-apps/cli-win32-x64-msvc': 2.0.0-beta.18
'@tauri-apps/plugin-dialog@2.0.0-beta.3':
dependencies:
@ -19504,10 +19409,10 @@ snapshots:
'@virtual-grid/shared@2.0.1': {}
'@vitejs/plugin-react-swc@3.6.0(@swc/helpers@0.5.2)(vite@5.1.6(@types/node@20.11.29)(sass@1.72.0)(terser@5.29.2))':
'@vitejs/plugin-react-swc@3.6.0(@swc/helpers@0.5.2)(vite@5.1.6(@types/node@20.11.29)(lightningcss@1.19.0)(sass@1.72.0)(terser@5.29.2))':
dependencies:
'@swc/core': 1.4.8(@swc/helpers@0.5.2)
vite: 5.1.6(@types/node@20.11.29)(sass@1.72.0)(terser@5.29.2)
vite: 5.1.6(@types/node@20.11.29)(lightningcss@1.19.0)(sass@1.72.0)(terser@5.29.2)
transitivePeerDependencies:
- '@swc/helpers'
@ -22202,19 +22107,6 @@ snapshots:
- expo
- supports-color
expo-asset@9.0.2(expo@50.0.13(@babel/core@7.24.0)):
dependencies:
'@react-native/assets-registry': 0.73.1
blueimp-md5: 2.19.0
expo-constants: 15.4.5(expo@50.0.13(@babel/core@7.24.0))
expo-file-system: 16.0.8(expo@50.0.13(@babel/core@7.24.0))
invariant: 2.2.4
md5-file: 3.2.3
transitivePeerDependencies:
- expo
- supports-color
optional: true
expo-av@13.10.5(expo@50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0)))):
dependencies:
expo: 50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0)))
@ -22236,34 +22128,15 @@ snapshots:
transitivePeerDependencies:
- supports-color
expo-constants@15.4.5(expo@50.0.13(@babel/core@7.24.0)):
dependencies:
'@expo/config': 8.5.4
expo: 50.0.13(@babel/core@7.24.0)
transitivePeerDependencies:
- supports-color
optional: true
expo-file-system@16.0.8(expo@50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0)))):
dependencies:
expo: 50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0)))
expo-file-system@16.0.8(expo@50.0.13(@babel/core@7.24.0)):
dependencies:
expo: 50.0.13(@babel/core@7.24.0)
optional: true
expo-font@11.10.3(expo@50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0)))):
dependencies:
expo: 50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0)))
fontfaceobserver: 2.3.0
expo-font@11.10.3(expo@50.0.13(@babel/core@7.24.0)):
dependencies:
expo: 50.0.13(@babel/core@7.24.0)
fontfaceobserver: 2.3.0
optional: true
expo-haptics@12.8.1(expo@50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0)))):
dependencies:
expo: 50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0)))
@ -22277,11 +22150,6 @@ snapshots:
dependencies:
expo: 50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0)))
expo-keep-awake@12.8.2(expo@50.0.13(@babel/core@7.24.0)):
dependencies:
expo: 50.0.13(@babel/core@7.24.0)
optional: true
expo-linking@6.2.2(expo@50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0)))):
dependencies:
expo-constants: 15.4.5(expo@50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))))
@ -22320,33 +22188,6 @@ snapshots:
expo-status-bar@1.11.1: {}
expo@50.0.13(@babel/core@7.24.0):
dependencies:
'@babel/runtime': 7.24.0
'@expo/cli': 0.17.8(@react-native/babel-preset@0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0)))(expo-modules-autolinking@1.10.3)
'@expo/config': 8.5.4
'@expo/config-plugins': 7.8.4
'@expo/metro-config': 0.17.6(@react-native/babel-preset@0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0)))
'@expo/vector-icons': 14.0.0
babel-preset-expo: 10.0.1(@babel/core@7.24.0)
expo-asset: 9.0.2(expo@50.0.13(@babel/core@7.24.0))
expo-file-system: 16.0.8(expo@50.0.13(@babel/core@7.24.0))
expo-font: 11.10.3(expo@50.0.13(@babel/core@7.24.0))
expo-keep-awake: 12.8.2(expo@50.0.13(@babel/core@7.24.0))
expo-modules-autolinking: 1.10.3
expo-modules-core: 1.11.12
fbemitter: 3.0.0
whatwg-url-without-unicode: 8.0.0-3
transitivePeerDependencies:
- '@babel/core'
- '@react-native/babel-preset'
- bluebird
- bufferutil
- encoding
- supports-color
- utf-8-validate
optional: true
expo@50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))):
dependencies:
'@babel/runtime': 7.24.0
@ -26368,7 +26209,7 @@ snapshots:
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
react-i18next@13.5.0(i18next@23.10.1)(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.24.0)(react@18.2.0))(react@18.2.0):
react-i18next@13.5.0(i18next@23.10.1)(react-dom@18.2.0(react@18.2.0))(react-native@0.73.4(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(react@18.2.0))(react@18.2.0):
dependencies:
'@babel/runtime': 7.24.0
html-parse-stringify: 3.0.1
@ -26376,7 +26217,7 @@ snapshots:
react: 18.2.0
optionalDependencies:
react-dom: 18.2.0(react@18.2.0)
react-native: 0.73.4(@babel/core@7.24.0)(react@18.2.0)
react-native: 0.73.4(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))(react@18.2.0)
react-intersection-observer@9.8.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0):
dependencies:
@ -26629,56 +26470,6 @@ snapshots:
- supports-color
- utf-8-validate
react-native@0.73.4(@babel/core@7.24.0)(react@18.2.0):
dependencies:
'@jest/create-cache-key-function': 29.7.0
'@react-native-community/cli': 12.3.2
'@react-native-community/cli-platform-android': 12.3.2
'@react-native-community/cli-platform-ios': 12.3.2
'@react-native/assets-registry': 0.73.1
'@react-native/codegen': 0.73.3(@babel/preset-env@7.24.0(@babel/core@7.24.0))
'@react-native/community-cli-plugin': 0.73.16(@babel/core@7.24.0)(@babel/preset-env@7.24.0(@babel/core@7.24.0))
'@react-native/gradle-plugin': 0.73.4
'@react-native/js-polyfills': 0.73.1
'@react-native/normalize-colors': 0.73.2
'@react-native/virtualized-lists': 0.73.4(react-native@0.73.4(@babel/core@7.24.0)(react@18.2.0))
abort-controller: 3.0.0
anser: 1.4.10
ansi-regex: 5.0.1
base64-js: 1.5.1
chalk: 4.1.2
deprecated-react-native-prop-types: 5.0.0
event-target-shim: 5.0.1
flow-enums-runtime: 0.0.6
invariant: 2.2.4
jest-environment-node: 29.7.0
jsc-android: 250231.0.0
memoize-one: 5.2.1
metro-runtime: 0.80.6
metro-source-map: 0.80.6
mkdirp: 0.5.6
nullthrows: 1.1.1
pretty-format: 26.6.2
promise: 8.3.0
react: 18.2.0
react-devtools-core: 4.28.5
react-refresh: 0.14.0
react-shallow-renderer: 16.15.0(react@18.2.0)
regenerator-runtime: 0.13.11
scheduler: 0.24.0-canary-efb381bbf-20230505
stacktrace-parser: 0.1.10
whatwg-fetch: 3.6.20
ws: 6.2.2
yargs: 17.7.2
transitivePeerDependencies:
- '@babel/core'
- '@babel/preset-env'
- bufferutil
- encoding
- supports-color
- utf-8-validate
optional: true
react-reconciler@0.27.0(react@18.2.0):
dependencies:
loose-envify: 1.4.0
@ -28708,7 +28499,7 @@ snapshots:
unist-util-stringify-position: 4.0.0
vfile-message: 4.0.2
vite-plugin-html@3.2.2(vite@5.1.6(@types/node@20.11.29)(sass@1.72.0)(terser@5.29.2)):
vite-plugin-html@3.2.2(vite@5.1.6(@types/node@20.11.29)(lightningcss@1.19.0)(sass@1.72.0)(terser@5.29.2)):
dependencies:
'@rollup/pluginutils': 4.2.1
colorette: 2.0.20
@ -28722,9 +28513,9 @@ snapshots:
html-minifier-terser: 6.1.0
node-html-parser: 5.4.2
pathe: 0.2.0
vite: 5.1.6(@types/node@20.11.29)(sass@1.72.0)(terser@5.29.2)
vite: 5.1.6(@types/node@20.11.29)(lightningcss@1.19.0)(sass@1.72.0)(terser@5.29.2)
vite-plugin-i18next-loader@2.0.12(vite@5.1.6(@types/node@20.11.29)(sass@1.72.0)(terser@5.29.2)):
vite-plugin-i18next-loader@2.0.12(vite@5.1.6(@types/node@20.11.29)(lightningcss@1.19.0)(sass@1.72.0)(terser@5.29.2)):
dependencies:
dot-prop: 8.0.2
glob-all: 3.3.1
@ -28732,9 +28523,9 @@ snapshots:
marked: 12.0.1
marked-terminal: 7.0.0(marked@12.0.1)
ts-deepmerge: 7.0.0
vite: 5.1.6(@types/node@20.11.29)(sass@1.72.0)(terser@5.29.2)
vite: 5.1.6(@types/node@20.11.29)(lightningcss@1.19.0)(sass@1.72.0)(terser@5.29.2)
vite-plugin-inspect@0.8.3(rollup@4.13.0)(vite@5.1.6(@types/node@20.11.29)(sass@1.72.0)(terser@5.29.2)):
vite-plugin-inspect@0.8.3(rollup@4.13.0)(vite@5.1.6(@types/node@20.11.29)(lightningcss@1.19.0)(sass@1.72.0)(terser@5.29.2)):
dependencies:
'@antfu/utils': 0.7.7
'@rollup/pluginutils': 5.1.0(rollup@4.13.0)
@ -28745,12 +28536,12 @@ snapshots:
perfect-debounce: 1.0.0
picocolors: 1.0.0
sirv: 2.0.4
vite: 5.1.6(@types/node@20.11.29)(sass@1.72.0)(terser@5.29.2)
vite: 5.1.6(@types/node@20.11.29)(lightningcss@1.19.0)(sass@1.72.0)(terser@5.29.2)
transitivePeerDependencies:
- rollup
- supports-color
vite-plugin-solid@2.10.2(@testing-library/jest-dom@6.4.2)(solid-js@1.8.15)(vite@5.1.6(@types/node@20.11.29)(sass@1.72.0)(terser@5.29.2)):
vite-plugin-solid@2.10.2(@testing-library/jest-dom@6.4.2)(solid-js@1.8.15)(vite@5.1.6(@types/node@20.11.29)(lightningcss@1.19.0)(sass@1.72.0)(terser@5.29.2)):
dependencies:
'@babel/core': 7.24.0
'@types/babel__core': 7.20.5
@ -28758,36 +28549,36 @@ snapshots:
merge-anything: 5.1.7
solid-js: 1.8.15
solid-refresh: 0.6.3(solid-js@1.8.15)
vite: 5.1.6(@types/node@20.11.29)(sass@1.72.0)(terser@5.29.2)
vitefu: 0.2.5(vite@5.1.6(@types/node@20.11.29)(sass@1.72.0)(terser@5.29.2))
vite: 5.1.6(@types/node@20.11.29)(lightningcss@1.19.0)(sass@1.72.0)(terser@5.29.2)
vitefu: 0.2.5(vite@5.1.6(@types/node@20.11.29)(lightningcss@1.19.0)(sass@1.72.0)(terser@5.29.2))
optionalDependencies:
'@testing-library/jest-dom': 6.4.2
transitivePeerDependencies:
- supports-color
vite-plugin-svgr@3.3.0(rollup@4.13.0)(typescript@5.4.2)(vite@5.1.6(@types/node@20.11.29)(sass@1.72.0)(terser@5.29.2)):
vite-plugin-svgr@3.3.0(rollup@4.13.0)(typescript@5.4.2)(vite@5.1.6(@types/node@20.11.29)(lightningcss@1.19.0)(sass@1.72.0)(terser@5.29.2)):
dependencies:
'@rollup/pluginutils': 5.1.0(rollup@4.13.0)
'@svgr/core': 8.1.0(typescript@5.4.2)
'@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.4.2))
vite: 5.1.6(@types/node@20.11.29)(sass@1.72.0)(terser@5.29.2)
vite: 5.1.6(@types/node@20.11.29)(lightningcss@1.19.0)(sass@1.72.0)(terser@5.29.2)
transitivePeerDependencies:
- rollup
- supports-color
- typescript
vite-tsconfig-paths@4.3.2(typescript@5.4.2)(vite@5.1.6(@types/node@20.11.29)(sass@1.72.0)(terser@5.29.2)):
vite-tsconfig-paths@4.3.2(typescript@5.4.2)(vite@5.1.6(@types/node@20.11.29)(lightningcss@1.19.0)(sass@1.72.0)(terser@5.29.2)):
dependencies:
debug: 4.3.4(supports-color@8.1.1)
globrex: 0.1.2
tsconfck: 3.0.3(typescript@5.4.2)
optionalDependencies:
vite: 5.1.6(@types/node@20.11.29)(sass@1.72.0)(terser@5.29.2)
vite: 5.1.6(@types/node@20.11.29)(lightningcss@1.19.0)(sass@1.72.0)(terser@5.29.2)
transitivePeerDependencies:
- supports-color
- typescript
vite@5.1.6(@types/node@20.11.29)(sass@1.72.0)(terser@5.29.2):
vite@5.1.6(@types/node@20.11.29)(lightningcss@1.19.0)(sass@1.72.0)(terser@5.29.2):
dependencies:
esbuild: 0.19.12
postcss: 8.4.36
@ -28795,12 +28586,13 @@ snapshots:
optionalDependencies:
'@types/node': 20.11.29
fsevents: 2.3.3
lightningcss: 1.19.0
sass: 1.72.0
terser: 5.29.2
vitefu@0.2.5(vite@5.1.6(@types/node@20.11.29)(sass@1.72.0)(terser@5.29.2)):
vitefu@0.2.5(vite@5.1.6(@types/node@20.11.29)(lightningcss@1.19.0)(sass@1.72.0)(terser@5.29.2)):
optionalDependencies:
vite: 5.1.6(@types/node@20.11.29)(sass@1.72.0)(terser@5.29.2)
vite: 5.1.6(@types/node@20.11.29)(lightningcss@1.19.0)(sass@1.72.0)(terser@5.29.2)
vlq@1.0.1: {}