mirror of
https://github.com/spacedriveapp/spacedrive
synced 2024-07-02 10:03:28 +00:00
broken list
This commit is contained in:
parent
b639160107
commit
b51734f180
|
@ -11,6 +11,8 @@
|
|||
"@types/react": "^17.0.18",
|
||||
"@types/react-dom": "^17.0.9",
|
||||
"@types/react-router-dom": "^5.3.1",
|
||||
"@types/react-virtualized-auto-sizer": "^1.0.1",
|
||||
"@types/react-window": "^1.8.5",
|
||||
"@types/tailwindcss": "^2.2.1",
|
||||
"concurrently": "^6.2.1",
|
||||
"prettier": "^2.3.2",
|
||||
|
@ -49,6 +51,8 @@
|
|||
"react-router-dom": "^5.2.0",
|
||||
"react-spline": "^1.2.1",
|
||||
"react-virtualized": "^9.22.3",
|
||||
"react-virtualized-auto-sizer": "^1.0.6",
|
||||
"react-window": "^1.8.6",
|
||||
"rooks": "^5.7.1",
|
||||
"tailwindcss": "^2.2.16",
|
||||
"vite": "^2.4.4",
|
||||
|
|
|
@ -39,3 +39,8 @@ pub async fn get_dir_with_contents(path: &str) -> Result<Directory, String> {
|
|||
contents: files,
|
||||
})
|
||||
}
|
||||
|
||||
pub async fn get_directory(path: &str) {
|
||||
// 1. search db for path
|
||||
// 2. get directory shallow
|
||||
}
|
||||
|
|
|
@ -1,21 +1,22 @@
|
|||
import { DocumentIcon, DotsVerticalIcon, FilmIcon, FolderIcon } from '@heroicons/react/solid';
|
||||
import clsx from 'clsx';
|
||||
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
||||
import { IFile } from '../../types';
|
||||
import byteSize from 'pretty-bytes';
|
||||
import { useKey, useOnWindowResize, useWindowSize } from 'rooks';
|
||||
import { DotsVerticalIcon } from '@heroicons/react/solid';
|
||||
import { invoke } from '@tauri-apps/api';
|
||||
import { convertFileSrc } from '@tauri-apps/api/tauri';
|
||||
import clsx from 'clsx';
|
||||
import byteSize from 'pretty-bytes';
|
||||
import React, { forwardRef, useEffect, useMemo, useRef } from 'react';
|
||||
import AutoSizer from 'react-virtualized-auto-sizer';
|
||||
import { FixedSizeList as List } from 'react-window';
|
||||
import { useKey, useWindowSize } from 'rooks';
|
||||
import { DirectoryResponse } from '../../screens/Explorer';
|
||||
// import { List, ListRowRenderer } from 'react-virtualized';
|
||||
import { useAppState } from '../../store/app';
|
||||
import {
|
||||
useCurrentDir,
|
||||
useExplorerStore,
|
||||
useFile,
|
||||
useSelectedFile,
|
||||
useSelectedFileIndex
|
||||
} from '../../store/explorer';
|
||||
import { DirectoryResponse } from '../../screens/Explorer';
|
||||
import { List, ListRowRenderer } from 'react-virtualized';
|
||||
import { useAppState } from '../../store/app';
|
||||
import { convertFileSrc } from '@tauri-apps/api/tauri';
|
||||
import { IFile } from '../../types';
|
||||
|
||||
interface IColumn {
|
||||
column: string;
|
||||
|
@ -23,6 +24,8 @@ interface IColumn {
|
|||
width: number;
|
||||
}
|
||||
|
||||
const PADDING_SIZE = 130;
|
||||
|
||||
// Function ensure no types are loss, but guarantees that they are Column[]
|
||||
function ensureIsColumns<T extends IColumn[]>(data: T) {
|
||||
return data;
|
||||
|
@ -53,7 +56,7 @@ export const FileList: React.FC<{}> = (props) => {
|
|||
|
||||
const seletedRowIndex = useSelectedFileIndex(currentDir?.id as number);
|
||||
useEffect(() => {
|
||||
if (seletedRowIndex != null) VList.current?.scrollToRow(seletedRowIndex);
|
||||
if (seletedRowIndex != null) VList.current?.scrollToItem(seletedRowIndex);
|
||||
}, [seletedRowIndex]);
|
||||
|
||||
useKey('ArrowUp', (e) => {
|
||||
|
@ -68,42 +71,18 @@ export const FileList: React.FC<{}> = (props) => {
|
|||
explorer.selectFile(explorer.currentDir as number, explorer.selectedFile.id, 'below');
|
||||
});
|
||||
|
||||
// function isRowOutOfView(rowHeight: number, rowIndex: number) {
|
||||
// const scrollTop = scrollContainer.current?.scrollTop || 0;
|
||||
// }
|
||||
|
||||
const rowRenderer: ListRowRenderer = ({
|
||||
index, // Index of row
|
||||
isScrolling, // The List is currently being scrolled
|
||||
isVisible, // This row is visible within the List (eg it is not an overscanned row)
|
||||
key, // Unique key within array of rendered rows
|
||||
parent, // Reference to the parent List (instance)
|
||||
style // Style object to be applied to row (to position it);
|
||||
// This must be passed through to the rendered row element.
|
||||
}) => {
|
||||
const row = currentDir?.children?.[index] as IFile;
|
||||
|
||||
// If row content is complex, consider rendering a light-weight placeholder while scrolling.
|
||||
const content = (
|
||||
<RenderRow key={key} row={row} rowIndex={index} dirId={currentDir?.id as number} />
|
||||
);
|
||||
return (
|
||||
<div key={key} style={style}>
|
||||
{content}
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
const width = (tableContainer.current?.getBoundingClientRect().width || 0) - 30;
|
||||
const height = (tableContainer.current?.getBoundingClientRect().height || 0) - 140;
|
||||
|
||||
return useMemo(
|
||||
() => (
|
||||
<div
|
||||
ref={tableContainer}
|
||||
className="table-container w-full h-full bg-white dark:bg-gray-900 p-3 cursor-default"
|
||||
>
|
||||
<h1 className="p-2 ml-3 font-bold text-xl">{currentDir?.name}</h1>
|
||||
const listInnerElement = forwardRef<HTMLDivElement, { style: any }>(({ style, ...rest }, ref) => (
|
||||
<div
|
||||
ref={ref}
|
||||
style={{
|
||||
...style,
|
||||
height: `${parseFloat(style.height) + PADDING_SIZE * 2}px`
|
||||
}}
|
||||
{...rest}
|
||||
className="jeff"
|
||||
>
|
||||
<div>
|
||||
<h1 className="p-2 mt-12 ml-3 font-bold text-xl">{currentDir?.name}</h1>
|
||||
<div className="table-head">
|
||||
<div className="table-head-row flex flex-row p-2">
|
||||
{columns.map((col) => (
|
||||
|
@ -118,15 +97,44 @@ export const FileList: React.FC<{}> = (props) => {
|
|||
))}
|
||||
</div>
|
||||
</div>
|
||||
<List
|
||||
ref={VList}
|
||||
width={width}
|
||||
height={height}
|
||||
rowHeight={40}
|
||||
rowCount={currentDir?.children_count || 0}
|
||||
rowRenderer={rowRenderer}
|
||||
className="table-body pb-10 outline-none"
|
||||
/>
|
||||
</div>
|
||||
{rest.children}
|
||||
</div>
|
||||
));
|
||||
|
||||
const Row = ({ index, key, style }: any) => {
|
||||
const row = currentDir?.children?.[index] as IFile;
|
||||
|
||||
return (
|
||||
<div key={key} style={{ ...style, top: `${parseFloat(style.top) + PADDING_SIZE}px` }}>
|
||||
<RenderRow key={key} row={row} rowIndex={index} dirId={currentDir?.id as number} />
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
return useMemo(
|
||||
() => (
|
||||
<div
|
||||
ref={tableContainer}
|
||||
style={{ marginTop: -44 }}
|
||||
className="table-container w-full h-full bg-white dark:bg-gray-900 p-3 cursor-default"
|
||||
>
|
||||
<AutoSizer>
|
||||
{({ width, height }) => (
|
||||
<List
|
||||
ref={VList}
|
||||
innerElementType={listInnerElement}
|
||||
width={width}
|
||||
height={height}
|
||||
overscanCount={5}
|
||||
itemSize={40}
|
||||
itemCount={currentDir?.children_count || 0}
|
||||
className="table-body pb-10 outline-none"
|
||||
>
|
||||
{Row}
|
||||
</List>
|
||||
)}
|
||||
</AutoSizer>
|
||||
</div>
|
||||
),
|
||||
[size.innerWidth, currentDir?.id, tableContainer.current]
|
||||
|
|
|
@ -1,11 +1,16 @@
|
|||
import {
|
||||
BookOpenIcon,
|
||||
CogIcon,
|
||||
CollectionIcon,
|
||||
CubeTransparentIcon,
|
||||
DatabaseIcon,
|
||||
FolderIcon,
|
||||
LibraryIcon,
|
||||
PhotographIcon,
|
||||
PlusIcon,
|
||||
ServerIcon
|
||||
} from '@heroicons/react/solid';
|
||||
import clsx from 'clsx';
|
||||
import {
|
||||
Book,
|
||||
Camera,
|
||||
|
@ -19,11 +24,13 @@ import {
|
|||
HardDrives,
|
||||
MonitorPlay,
|
||||
Package,
|
||||
Planet
|
||||
Planet,
|
||||
Plus
|
||||
} from 'phosphor-react';
|
||||
import React, { useEffect } from 'react';
|
||||
import { NavLink, NavLinkProps } from 'react-router-dom';
|
||||
import { useLocations } from '../../store/locations';
|
||||
import { Button } from '../primative';
|
||||
import { Dropdown } from '../primative/Dropdown';
|
||||
import { DefaultProps } from '../primative/types';
|
||||
|
||||
|
@ -39,15 +46,20 @@ interface SidebarProps extends DefaultProps {}
|
|||
|
||||
const SidebarLink = (props: NavLinkProps) => (
|
||||
<NavLink
|
||||
className="max-w mb-[2px] text-gray-550 dark:text-gray-150 rounded-md px-2 py-1 flex flex-row items-center hover:bg-gray-100 dark:hover:bg-gray-600 text-sm"
|
||||
activeClassName="!bg-primary !text-white hover:bg-primary dark:hover:bg-primary"
|
||||
{...props}
|
||||
className={clsx(
|
||||
'max-w mb-[2px] text-gray-550 dark:text-gray-150 rounded-md px-2 py-1 flex flex-row flex-grow items-center hover:bg-gray-100 dark:hover:bg-gray-600 text-sm',
|
||||
props.className
|
||||
)}
|
||||
activeClassName="!bg-primary !text-white hover:bg-primary dark:hover:bg-primary"
|
||||
>
|
||||
{props.children}
|
||||
</NavLink>
|
||||
);
|
||||
|
||||
const Icon = ({ component: Icon }: any) => <Icon weight="bold" className="w-4 h-4 mr-2 " />;
|
||||
const Icon = ({ component: Icon, ...props }: any) => (
|
||||
<Icon weight="bold" {...props} className={clsx('w-4 h-4 mr-2', props.className)} />
|
||||
);
|
||||
|
||||
const Heading: React.FC<{}> = ({ children }) => (
|
||||
<div className="text-xs font-semibold text-gray-300 ml-1 mb-1 mt-5">{children}</div>
|
||||
|
@ -59,7 +71,7 @@ export const Sidebar: React.FC<SidebarProps> = (props) => {
|
|||
console.log({ locations });
|
||||
|
||||
return (
|
||||
<div className="w-46 flex flex-col flex-wrap flex-shrink-0 min-h-full bg-gray-50 dark:bg-gray-650 border-gray-100 border-r dark:border-gray-600 px-3 space-y-0.5">
|
||||
<div className="w-46 flex flex-col flex-wrap flex-shrink-0 min-h-full bg-gray-50 dark:bg-gray-650 border-gray-100 border-r dark:border-gray-600 px-3 space-y-0.5">
|
||||
<Dropdown
|
||||
buttonProps={{
|
||||
justifyLeft: true,
|
||||
|
@ -69,7 +81,13 @@ export const Sidebar: React.FC<SidebarProps> = (props) => {
|
|||
}}
|
||||
// buttonIcon={<Book weight="bold" className="w-4 h-4 mt-0.5 mr-1" />}
|
||||
buttonText="Jamie's Library"
|
||||
items={[[{ name: `Jamie's Library` }, { name: 'Subto' }], [{ name: 'Add Library' }]]}
|
||||
items={[
|
||||
[{ name: `Jamie's Library`, selected: true }, { name: 'Subto' }],
|
||||
[
|
||||
{ name: 'Library Settings', icon: CogIcon },
|
||||
{ name: 'Add Library', icon: PlusIcon }
|
||||
]
|
||||
]}
|
||||
/>
|
||||
|
||||
<div>
|
||||
|
@ -90,12 +108,22 @@ export const Sidebar: React.FC<SidebarProps> = (props) => {
|
|||
<Heading>Locations</Heading>
|
||||
{locations.map((location, index) => {
|
||||
return (
|
||||
<SidebarLink key={index} to={`/explorer/${location.name}`}>
|
||||
<Icon component={ServerIcon} />
|
||||
{location.name}
|
||||
<div className="flex-grow" />
|
||||
{location.is_removable && <Icon component={EjectSimple} />}
|
||||
</SidebarLink>
|
||||
<div className="flex flex-row items-center">
|
||||
<SidebarLink className="relative group" key={index} to={`/explorer/${location.name}`}>
|
||||
<Icon component={ServerIcon} />
|
||||
{location.name}
|
||||
<div className="flex-grow" />
|
||||
{location.is_removable && (
|
||||
<Button
|
||||
noBorder
|
||||
size="sm"
|
||||
className="w-7 h-7 top-0 right-0 absolute group-hover:bg-gray-600 hover:!bg-gray-550 transition-none items-center !rounded-l-none"
|
||||
>
|
||||
<Icon className="w-3 h-3 mr-0" component={EjectSimple} />
|
||||
</Button>
|
||||
)}
|
||||
</SidebarLink>
|
||||
</div>
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
|
|
|
@ -18,7 +18,6 @@ import {
|
|||
FolderPlus,
|
||||
HouseSimple,
|
||||
Key,
|
||||
List,
|
||||
SquaresFour,
|
||||
Tag,
|
||||
TerminalWindow
|
||||
|
@ -66,7 +65,7 @@ export const TopBar: React.FC<TopBarProps> = (props) => {
|
|||
<>
|
||||
<div
|
||||
data-tauri-drag-region
|
||||
className="flex flex-shrink-0 h-[2.95rem] -mt-0.5 max-w items-center border-b bg-gray-50 dark:bg-gray-650 border-gray-100 dark:border-gray-600 shadow-sm"
|
||||
className="flex z-50 blur-rr !bg-opacity-70 flex-shrink-0 h-[2.95rem] -mt-0.5 max-w items-center border-b bg-gray-50 dark:bg-gray-650 border-gray-100 dark:border-gray-600 shadow-sm"
|
||||
>
|
||||
<div className="mr-32 ml-1 ">
|
||||
<TrafficLights
|
||||
|
|
|
@ -27,7 +27,7 @@ const Light: React.FC<LightProps> = (props) => {
|
|||
return (
|
||||
<div
|
||||
onClick={props.action}
|
||||
className={clsx('w-[12px] h-[12px] rounded-full cursor-pointer', {
|
||||
className={clsx('w-[12px] h-[12px] rounded-full', {
|
||||
'bg-red-400': props.mode == 'close',
|
||||
'bg-green-400': props.mode == 'fullscreen',
|
||||
'bg-yellow-400': props.mode == 'minimize'
|
||||
|
|
|
@ -14,8 +14,8 @@ const variants = {
|
|||
shadow-sm
|
||||
hover:bg-gray-100
|
||||
active:bg-gray-50
|
||||
dark:bg-gray-800
|
||||
dark:hover:bg-gray-700
|
||||
dark:bg-gray-650
|
||||
dark:hover:bg-gray-650
|
||||
dark:active:bg-gray-700
|
||||
dark:active:opacity-80
|
||||
|
||||
|
@ -84,7 +84,7 @@ export const Button: React.FC<ButtonProps> = ({ loading, ...props }) => {
|
|||
<button
|
||||
{...props}
|
||||
className={clsx(
|
||||
'flex border rounded-md transition-colors duration-100',
|
||||
'flex border rounded-md transition-colors duration-100 cursor-default',
|
||||
{ 'opacity-5': loading, '!p-1': props.noPadding },
|
||||
{ 'justify-center': !props.justifyLeft },
|
||||
sizes[props.size || 'default'],
|
||||
|
|
|
@ -9,7 +9,7 @@ export const Checkbox: React.FC<CheckboxProps> = (props) => {
|
|||
return (
|
||||
<label
|
||||
className={clsx(
|
||||
'flex items-center text-sm cursor-pointer font-medium text-gray-700 dark:text-gray-100',
|
||||
'flex items-center text-sm font-medium text-gray-700 dark:text-gray-100',
|
||||
props.containerClasname
|
||||
)}
|
||||
>
|
||||
|
@ -26,7 +26,6 @@ export const Checkbox: React.FC<CheckboxProps> = (props) => {
|
|||
dark:border-gray-700
|
||||
dark:hover:bg-gray-700
|
||||
dark:hover:border-gray-600
|
||||
cursor-pointer
|
||||
transition
|
||||
rounded
|
||||
mr-2
|
||||
|
|
|
@ -45,7 +45,7 @@ export const Dropdown: React.FC<DropdownProps> = (props) => {
|
|||
leaveFrom="transform opacity-100 scale-100"
|
||||
leaveTo="transform opacity-0 scale-95"
|
||||
>
|
||||
<Menu.Items className="absolute left-0 w-40 mt-1 origin-top-left bg-white dark:bg-gray-900 divide-y divide-gray-100 dark:divide-gray-700 rounded-md shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none">
|
||||
<Menu.Items className="absolute left-0 w-44 mt-1 origin-top-left bg-white dark:bg-gray-900 divide-y divide-gray-100 dark:divide-gray-700 border dark:border-gray-700 rounded-md shadow-2xl ring-1 ring-black ring-opacity-5 focus:outline-none z-50">
|
||||
{props.items.map((item, index) => (
|
||||
<div key={index} className="px-1 py-1">
|
||||
{item.map((button, index) => (
|
||||
|
@ -53,9 +53,10 @@ export const Dropdown: React.FC<DropdownProps> = (props) => {
|
|||
{({ active }) => (
|
||||
<button
|
||||
className={clsx(
|
||||
'text-sm group flex rounded-md items-center w-full px-2 py-1',
|
||||
'text-sm group flex rounded-md items-center w-full px-2 py-1 mb-[2px] dark:hover:bg-gray-750',
|
||||
{
|
||||
'bg-primary text-white': active,
|
||||
'bg-gray-300 dark:bg-gray-600 dark:hover:!bg-gray-750':
|
||||
active || button.selected,
|
||||
'text-gray-900 dark:text-gray-200': !active
|
||||
}
|
||||
)}
|
||||
|
|
|
@ -9,15 +9,15 @@ const variants = {
|
|||
focus:hover:bg-white
|
||||
focus:bg-white
|
||||
dark:bg-gray-800
|
||||
dark:hover:bg-gray-700
|
||||
dark:hover:bg-gray-750
|
||||
dark:focus:bg-gray-800
|
||||
dark:focus:hover:bg-gray-800
|
||||
|
||||
border-gray-100
|
||||
hover:border-gray-200
|
||||
focus:border-white
|
||||
dark:border-gray-700
|
||||
dark:hover:border-gray-700
|
||||
dark:border-gray-600
|
||||
dark:hover:border-gray-600
|
||||
dark:focus:border-gray-900
|
||||
|
||||
focus:ring-gray-100
|
||||
|
|
|
@ -11,7 +11,7 @@ export const Toggle = (props: { initialState: boolean }) => {
|
|||
checked={enabled}
|
||||
onChange={setEnabled}
|
||||
className={clsx(
|
||||
'relative inline-flex items-center h-6 rounded-full w-11 bg-gray-200 dark:bg-gray-700',
|
||||
'relative inline-flex items-center h-6 rounded-full w-11 bg-gray-200 dark:bg-gray-750',
|
||||
{
|
||||
'bg-primary-500 dark:bg-primary-500': enabled
|
||||
}
|
||||
|
|
|
@ -1,6 +1,15 @@
|
|||
@tailwind base;
|
||||
@tailwind components;
|
||||
@tailwind utilities;
|
||||
|
||||
a,
|
||||
button {
|
||||
@apply cursor-default;
|
||||
}
|
||||
|
||||
.blur-rr {
|
||||
-webkit-backdrop-filter: blur(10px);
|
||||
}
|
||||
/*
|
||||
.table-container {
|
||||
@apply w-full bg-gray-900;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
Arguments:
|
||||
/usr/local/bin/node /usr/local/Cellar/yarn/1.22.5/libexec/bin/yarn.js add react-error-boundry
|
||||
/usr/local/bin/node /usr/local/Cellar/yarn/1.22.5/libexec/bin/yarn.js add react-virtualized-auto-size
|
||||
|
||||
PATH:
|
||||
/Users/jamie/Library/Android/sdk/tools:/Users/jamie/Library/Android/sdk/platform-tools:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin:/Library/Apple/usr/bin:/Users/jamie/.cargo/bin
|
||||
|
@ -14,7 +14,7 @@ Platform:
|
|||
darwin x64
|
||||
|
||||
Trace:
|
||||
Error: https://registry.yarnpkg.com/react-error-boundry: Not found
|
||||
Error: https://registry.yarnpkg.com/react-virtualized-auto-size: Not found
|
||||
at Request.params.callback [as _callback] (/usr/local/Cellar/yarn/1.22.5/libexec/lib/cli.js:66988:18)
|
||||
at Request.self.callback (/usr/local/Cellar/yarn/1.22.5/libexec/lib/cli.js:140749:22)
|
||||
at Request.emit (events.js:315:20)
|
||||
|
@ -73,10 +73,12 @@ npm manifest:
|
|||
"react": "^17.0.2",
|
||||
"react-dom": "^17.0.2",
|
||||
"react-dropzone": "^11.3.4",
|
||||
"react-error-boundary": "^3.1.3",
|
||||
"react-hotkeys-hook": "^3.4.4",
|
||||
"react-router-dom": "^5.2.0",
|
||||
"react-spline": "^1.2.1",
|
||||
"react-virtualized": "^9.22.3",
|
||||
"react-window": "^1.8.6",
|
||||
"rooks": "^5.7.1",
|
||||
"tailwindcss": "^2.2.16",
|
||||
"vite": "^2.4.4",
|
||||
|
@ -298,6 +300,13 @@ Lockfile:
|
|||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.14.5"
|
||||
|
||||
"@babel/runtime@^7.0.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.7":
|
||||
version "7.15.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.4.tgz#fd17d16bfdf878e6dd02d19753a39fa8a8d9c84a"
|
||||
integrity sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==
|
||||
dependencies:
|
||||
regenerator-runtime "^0.13.4"
|
||||
|
||||
"@babel/runtime@^7.1.2", "@babel/runtime@^7.12.1":
|
||||
version "7.15.3"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.3.tgz#2e1c2880ca118e5b2f9988322bd8a7656a32502b"
|
||||
|
@ -305,13 +314,6 @@ Lockfile:
|
|||
dependencies:
|
||||
regenerator-runtime "^0.13.4"
|
||||
|
||||
"@babel/runtime@^7.7.2", "@babel/runtime@^7.8.7":
|
||||
version "7.15.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.4.tgz#fd17d16bfdf878e6dd02d19753a39fa8a8d9c84a"
|
||||
integrity sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==
|
||||
dependencies:
|
||||
regenerator-runtime "^0.13.4"
|
||||
|
||||
"@babel/template@^7.14.5":
|
||||
version "7.14.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.14.5.tgz#a9bc9d8b33354ff6e55a9c60d1109200a68974f4"
|
||||
|
@ -2761,6 +2763,11 @@ Lockfile:
|
|||
resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
|
||||
integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=
|
||||
|
||||
"memoize-one@>=3.1.1 <6":
|
||||
version "5.2.1"
|
||||
resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e"
|
||||
integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==
|
||||
|
||||
meow@^3.3.0:
|
||||
version "3.7.0"
|
||||
resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
|
||||
|
@ -3491,6 +3498,13 @@ Lockfile:
|
|||
file-selector "^0.2.2"
|
||||
prop-types "^15.7.2"
|
||||
|
||||
react-error-boundary@^3.1.3:
|
||||
version "3.1.3"
|
||||
resolved "https://registry.yarnpkg.com/react-error-boundary/-/react-error-boundary-3.1.3.tgz#276bfa05de8ac17b863587c9e0647522c25e2a0b"
|
||||
integrity sha512-A+F9HHy9fvt9t8SNDlonq01prnU8AmkjvGKV4kk8seB9kU3xMEO8J/PQlLVmoOIDODl5U2kufSBs4vrWIqhsAA==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.12.5"
|
||||
|
||||
react-hotkeys-hook@^3.4.4:
|
||||
version "3.4.4"
|
||||
resolved "https://registry.yarnpkg.com/react-hotkeys-hook/-/react-hotkeys-hook-3.4.4.tgz#52ba5d8ef5e47cc2e776c70a9036d518e0993d51"
|
||||
|
@ -3561,6 +3575,14 @@ Lockfile:
|
|||
prop-types "^15.7.2"
|
||||
react-lifecycles-compat "^3.0.4"
|
||||
|
||||
react-window@^1.8.6:
|
||||
version "1.8.6"
|
||||
resolved "https://registry.yarnpkg.com/react-window/-/react-window-1.8.6.tgz#d011950ac643a994118632665aad0c6382e2a112"
|
||||
integrity sha512-8VwEEYyjz6DCnGBsd+MgkD0KJ2/OXFULyDtorIiTz+QzwoP94tBoA7CnbtyXMm+cCeAUER5KJcPtWl9cpKbOBg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.0.0"
|
||||
memoize-one ">=3.1.1 <6"
|
||||
|
||||
react@^17.0.2:
|
||||
version "17.0.2"
|
||||
resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037"
|
||||
|
|
46
yarn.lock
46
yarn.lock
|
@ -206,6 +206,13 @@
|
|||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.14.5"
|
||||
|
||||
"@babel/runtime@^7.0.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.7":
|
||||
version "7.15.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.4.tgz#fd17d16bfdf878e6dd02d19753a39fa8a8d9c84a"
|
||||
integrity sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==
|
||||
dependencies:
|
||||
regenerator-runtime "^0.13.4"
|
||||
|
||||
"@babel/runtime@^7.1.2", "@babel/runtime@^7.12.1":
|
||||
version "7.15.3"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.3.tgz#2e1c2880ca118e5b2f9988322bd8a7656a32502b"
|
||||
|
@ -213,13 +220,6 @@
|
|||
dependencies:
|
||||
regenerator-runtime "^0.13.4"
|
||||
|
||||
"@babel/runtime@^7.12.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.7":
|
||||
version "7.15.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.4.tgz#fd17d16bfdf878e6dd02d19753a39fa8a8d9c84a"
|
||||
integrity sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==
|
||||
dependencies:
|
||||
regenerator-runtime "^0.13.4"
|
||||
|
||||
"@babel/template@^7.14.5":
|
||||
version "7.14.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.14.5.tgz#a9bc9d8b33354ff6e55a9c60d1109200a68974f4"
|
||||
|
@ -509,6 +509,13 @@
|
|||
dependencies:
|
||||
"@types/react" "*"
|
||||
|
||||
"@types/react-virtualized-auto-sizer@^1.0.1":
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.1.tgz#b3187dae1dfc4c15880c9cfc5b45f2719ea6ebd4"
|
||||
integrity sha512-GH8sAnBEM5GV9LTeiz56r4ZhMOUSrP43tAQNSRVxNexDjcNKLCEtnxusAItg1owFUFE6k0NslV26gqVClVvong==
|
||||
dependencies:
|
||||
"@types/react" "*"
|
||||
|
||||
"@types/react-virtualized@^9.21.14":
|
||||
version "9.21.14"
|
||||
resolved "https://registry.yarnpkg.com/@types/react-virtualized/-/react-virtualized-9.21.14.tgz#8d465aa54386a7bebc7b61f71afc588bb800b868"
|
||||
|
@ -517,6 +524,13 @@
|
|||
"@types/prop-types" "*"
|
||||
"@types/react" "*"
|
||||
|
||||
"@types/react-window@^1.8.5":
|
||||
version "1.8.5"
|
||||
resolved "https://registry.yarnpkg.com/@types/react-window/-/react-window-1.8.5.tgz#285fcc5cea703eef78d90f499e1457e9b5c02fc1"
|
||||
integrity sha512-V9q3CvhC9Jk9bWBOysPGaWy/Z0lxYcTXLtLipkt2cnRj1JOSFNF7wqGpkScSXMgBwC+fnVRg/7shwgddBG5ICw==
|
||||
dependencies:
|
||||
"@types/react" "*"
|
||||
|
||||
"@types/react@*", "@types/react@^17.0.18":
|
||||
version "17.0.18"
|
||||
resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.18.tgz#4109cbbd901be9582e5e39e3d77acd7b66bb7fbe"
|
||||
|
@ -2669,6 +2683,11 @@ map-obj@^1.0.0, map-obj@^1.0.1:
|
|||
resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
|
||||
integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=
|
||||
|
||||
"memoize-one@>=3.1.1 <6":
|
||||
version "5.2.1"
|
||||
resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e"
|
||||
integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==
|
||||
|
||||
meow@^3.3.0:
|
||||
version "3.7.0"
|
||||
resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
|
||||
|
@ -3464,6 +3483,11 @@ react-spline@^1.2.1:
|
|||
dependencies:
|
||||
three "0.123.0"
|
||||
|
||||
react-virtualized-auto-sizer@^1.0.6:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.6.tgz#66c5b1c9278064c5ef1699ed40a29c11518f97ca"
|
||||
integrity sha512-7tQ0BmZqfVF6YYEWcIGuoR3OdYe8I/ZFbNclFlGOC3pMqunkYF/oL30NCjSGl9sMEb17AnzixDz98Kqc3N76HQ==
|
||||
|
||||
react-virtualized@^9.22.3:
|
||||
version "9.22.3"
|
||||
resolved "https://registry.yarnpkg.com/react-virtualized/-/react-virtualized-9.22.3.tgz#f430f16beb0a42db420dbd4d340403c0de334421"
|
||||
|
@ -3476,6 +3500,14 @@ react-virtualized@^9.22.3:
|
|||
prop-types "^15.7.2"
|
||||
react-lifecycles-compat "^3.0.4"
|
||||
|
||||
react-window@^1.8.6:
|
||||
version "1.8.6"
|
||||
resolved "https://registry.yarnpkg.com/react-window/-/react-window-1.8.6.tgz#d011950ac643a994118632665aad0c6382e2a112"
|
||||
integrity sha512-8VwEEYyjz6DCnGBsd+MgkD0KJ2/OXFULyDtorIiTz+QzwoP94tBoA7CnbtyXMm+cCeAUER5KJcPtWl9cpKbOBg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.0.0"
|
||||
memoize-one ">=3.1.1 <6"
|
||||
|
||||
react@^17.0.2:
|
||||
version "17.0.2"
|
||||
resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037"
|
||||
|
|
Loading…
Reference in a new issue