Compare commits
13 Commits
4f434487cf
...
9fff7dfb85
Author | SHA1 | Date | |
---|---|---|---|
![]() |
9fff7dfb85 | ||
c540828463 | |||
a6b678c6ae | |||
6d35009593 | |||
dc735f1a2c | |||
c49acf8ab6 | |||
52fb808d45 | |||
d307ff6927 | |||
b7e2bbb46f | |||
3f38a9191f | |||
07476221c3 | |||
b1339e2ce9 | |||
ff73133e05 |
@ -2,8 +2,10 @@
|
||||
|
||||
'use client';
|
||||
|
||||
import { AbstractApi, } from '@/app/api/abstract-api';
|
||||
import { AbstractApi, } from '@/app/api/abstract-api';
|
||||
import { Group, GroupSerializer } from '@/app/lib/group';
|
||||
import { Guest, GuestSerializer } from '@/app/lib/guest';
|
||||
import AffinitiesFormDialog from '@/app/ui/components/affinities-form-dialog';
|
||||
import { classNames } from '@/app/ui/components/button';
|
||||
import GroupFormDialog from '@/app/ui/components/group-form-dialog';
|
||||
import GuestFormDialog from '@/app/ui/components/guest-form-dialog';
|
||||
@ -12,7 +14,6 @@ import SkeletonTable from '@/app/ui/guests/skeleton-row';
|
||||
import GuestsTable from '@/app/ui/guests/table';
|
||||
import { TabPanel, TabView } from 'primereact/tabview';
|
||||
import { Suspense, useState } from 'react';
|
||||
import { Group, GroupSerializer } from '@/app/lib/group';
|
||||
|
||||
|
||||
export default function Page() {
|
||||
@ -34,6 +35,8 @@ export default function Page() {
|
||||
const [groups, setGroups] = useState<Array<Group>>([]);
|
||||
const [groupBeingEdited, setGroupBeingEdited] = useState<Group | undefined>(undefined);
|
||||
|
||||
const [groupAffinitiesBeingEditted, setGroupAffinitiesBeingEditted] = useState<Group | undefined>(undefined);
|
||||
|
||||
const [guestsLoaded, setGuestsLoaded] = useState(false);
|
||||
const [guests, setGuests] = useState<Array<Guest>>([]);
|
||||
const [guestBeingEdited, setGuestBeingEdited] = useState<Guest | undefined>(undefined);
|
||||
@ -77,11 +80,19 @@ export default function Page() {
|
||||
onHide={() => { setGroupBeingEdited(undefined) }}
|
||||
/>
|
||||
|
||||
<AffinitiesFormDialog
|
||||
groups={groups}
|
||||
group={groupAffinitiesBeingEditted}
|
||||
visible={groupAffinitiesBeingEditted !== undefined}
|
||||
onHide={() => { setGroupAffinitiesBeingEditted(undefined) }}
|
||||
/>
|
||||
|
||||
<Suspense fallback={<SkeletonTable />}>
|
||||
<GroupsTable
|
||||
<GroupsTable
|
||||
groups={groups}
|
||||
onUpdate={refreshGroups}
|
||||
onEdit={(group) => setGroupBeingEdited(group)}
|
||||
onEditAffinities={(group) => setGroupAffinitiesBeingEditted(group)}
|
||||
/>
|
||||
</Suspense>
|
||||
</div>
|
||||
|
7
app/api/health/route.ts
Normal file
7
app/api/health/route.ts
Normal file
@ -0,0 +1,7 @@
|
||||
/* Copyright (C) 2024 Manuel Bustillo*/
|
||||
|
||||
import { NextResponse } from "next/server";
|
||||
|
||||
export function GET() {
|
||||
return NextResponse.json({});
|
||||
}
|
5
app/lib/affinities.tsx
Normal file
5
app/lib/affinities.tsx
Normal file
@ -0,0 +1,5 @@
|
||||
/* Copyright (C) 2024 Manuel Bustillo*/
|
||||
|
||||
export class Affinities {
|
||||
[key:string]: number;
|
||||
}
|
69
app/ui/components/affinities-form-dialog.tsx
Normal file
69
app/ui/components/affinities-form-dialog.tsx
Normal file
@ -0,0 +1,69 @@
|
||||
/* Copyright (C) 2024 Manuel Bustillo*/
|
||||
|
||||
'use client';
|
||||
|
||||
import { Affinities } from '@/app/lib/affinities';
|
||||
import { Group } from '@/app/lib/group';
|
||||
import { getCsrfToken, getSlug } from '@/app/lib/utils';
|
||||
import { classNames } from '@/app/ui/components/button';
|
||||
import { Dialog } from 'primereact/dialog';
|
||||
import { useEffect, useState } from 'react';
|
||||
import AffinitySlider from './form/affinitySlider';
|
||||
|
||||
export default function AffinitiesFormDialog({ groups, group, visible, onHide }: {
|
||||
groups: Group[],
|
||||
group?: Group,
|
||||
visible: boolean,
|
||||
onHide: () => void,
|
||||
}) {
|
||||
const [affinities, setAffinities] = useState<Affinities>({});
|
||||
const [isLoadingAffinities, setIsLoadingAffinities] = useState(true);
|
||||
|
||||
useEffect(() => {
|
||||
setIsLoadingAffinities(true);
|
||||
if (group?.id === undefined) {
|
||||
setAffinities({});
|
||||
setIsLoadingAffinities(false)
|
||||
} else {
|
||||
fetch(`/api/${getSlug()}/groups/${group?.id}/affinities`)
|
||||
.then((response) => response.json())
|
||||
.then((data) => {
|
||||
setAffinities(data);
|
||||
setIsLoadingAffinities(false)
|
||||
});
|
||||
}
|
||||
}, [group]);
|
||||
|
||||
function submitAffinities() {
|
||||
const formattedAffinities = Object.entries(affinities).map(([groupId, affinity]) => ({ group_id: groupId, affinity: affinity }));
|
||||
fetch(`/api/${getSlug()}/groups/${group?.id}/affinities/bulk_update`, {
|
||||
method: 'PUT',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
'X-CSRF-TOKEN': getCsrfToken(),
|
||||
},
|
||||
body: JSON.stringify({ affinities: formattedAffinities })
|
||||
}).then(() => {
|
||||
onHide();
|
||||
});
|
||||
}
|
||||
|
||||
return (
|
||||
<Dialog header="Update affinities" visible={visible} style={{ width: '60vw' }} onHide={onHide}>
|
||||
{!isLoadingAffinities && <div className="card justify-evenly py-5 bg-gray-200 flex flex-col">
|
||||
<span className="text-center p-4">Describe the affinity with the rest of the groups</span>
|
||||
|
||||
{
|
||||
groups.filter((currentGroup) => currentGroup.id !== group?.id).map((group) =>
|
||||
<div key={group.id} className="flex flex-row hover:bg-gray-300 px-3 py-2 items-center">
|
||||
<span className="w-1/3 text-right px-4">{group.name}</span>
|
||||
<AffinitySlider value={group.id && affinities[group.id] || 1} onChange={(value) => setAffinities({ ...affinities, [group.id || "default"]: value })} />
|
||||
</div>)
|
||||
}
|
||||
|
||||
<button className={classNames('primary')} onClick={submitAffinities} >Update</button>
|
||||
</div>
|
||||
}
|
||||
</Dialog>
|
||||
);
|
||||
}
|
40
app/ui/components/form/affinitySlider.tsx
Normal file
40
app/ui/components/form/affinitySlider.tsx
Normal file
@ -0,0 +1,40 @@
|
||||
/* Copyright (C) 2024 Manuel Bustillo*/
|
||||
|
||||
import { Slider } from 'primereact/slider';
|
||||
|
||||
export default function AffinitySlider({ value, onChange }: { value: number, onChange: (value: number) => void }) {
|
||||
|
||||
const toNumber = (value : number | [number, number]) => {
|
||||
if(value instanceof Array) {
|
||||
return value[0];
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
const label = (value: number) => {
|
||||
if (value < 0.2) {
|
||||
return 'Nemesis';
|
||||
} else if (value < 0.5) {
|
||||
return 'Enemies';
|
||||
} else if (value < 0.9) {
|
||||
return 'Bad vibes';
|
||||
} else if (value < 1.1) {
|
||||
return 'Neutral';
|
||||
} else if (value < 1.5) {
|
||||
return 'Good vibes';
|
||||
} else if (value < 1.8) {
|
||||
return 'Good friends';
|
||||
} else {
|
||||
return 'Besties';
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<>
|
||||
<Slider value={value} min={0} max={2} step={.1} onChange={(e) => onChange(toNumber(e.value))} className='w-80 bg-gray-400' />
|
||||
<span className="px-4 w-1/5">
|
||||
{label(value)}
|
||||
</span>
|
||||
</>
|
||||
)
|
||||
}
|
@ -2,18 +2,17 @@
|
||||
|
||||
'use client';
|
||||
|
||||
import { AbstractApi } from '@/app/api/abstract-api';
|
||||
import { Group, GroupSerializer } from '@/app/lib/group';
|
||||
import { classNames } from '@/app/ui/components/button';
|
||||
import { Dialog } from 'primereact/dialog';
|
||||
import { ColorPicker } from 'primereact/colorpicker';
|
||||
import { Dialog } from 'primereact/dialog';
|
||||
import { Dropdown } from 'primereact/dropdown';
|
||||
import { FloatLabel } from 'primereact/floatlabel';
|
||||
import { InputText } from 'primereact/inputtext';
|
||||
import { useState } from 'react';
|
||||
import { Group, GroupSerializer } from '@/app/lib/group';
|
||||
import { ApiError } from 'next/dist/server/api-utils';
|
||||
import { AbstractApi } from '@/app/api/abstract-api';
|
||||
|
||||
export default function GroupFormDialog({groups, onCreate, onHide, group, visible }: {
|
||||
export default function GroupFormDialog({ groups, onCreate, onHide, group, visible }: {
|
||||
groups: Group[],
|
||||
onCreate?: () => void,
|
||||
onHide: () => void,
|
||||
|
@ -2,18 +2,18 @@
|
||||
|
||||
'use client';
|
||||
|
||||
import { Group, GroupSerializer } from '@/app/lib/group';
|
||||
import TableOfContents from '../components/table-of-contents';
|
||||
import { MapPinIcon, PencilIcon, TrashIcon } from '@heroicons/react/24/outline';
|
||||
import { AbstractApi } from '@/app/api/abstract-api';
|
||||
import { TreeTable } from 'primereact/treetable';
|
||||
import { Group, GroupSerializer } from '@/app/lib/group';
|
||||
import { AdjustmentsHorizontalIcon, PencilIcon, TrashIcon } from '@heroicons/react/24/outline';
|
||||
import { Column } from 'primereact/column';
|
||||
import { TreeNode } from 'primereact/treenode';
|
||||
import { TreeTable } from 'primereact/treetable';
|
||||
|
||||
export default function GroupsTable({ groups, onUpdate, onEdit }: {
|
||||
export default function GroupsTable({ groups, onUpdate, onEdit, onEditAffinities }: {
|
||||
groups: Group[],
|
||||
onUpdate: () => void,
|
||||
onEdit: (group: Group) => void,
|
||||
onEditAffinities: (group: Group) => void,
|
||||
}) {
|
||||
|
||||
const api = new AbstractApi<Group>();
|
||||
@ -23,6 +23,7 @@ export default function GroupsTable({ groups, onUpdate, onEdit }: {
|
||||
<div className="flex flex-row items-center">
|
||||
<TrashIcon className='size-6 cursor-pointer' onClick={() => { api.destroy(serializer, group, onUpdate) }} />
|
||||
<PencilIcon className='size-6 cursor-pointer' onClick={() => onEdit(group)} />
|
||||
<AdjustmentsHorizontalIcon className='size-6 cursor-pointer' onClick={() => onEditAffinities(group)} />
|
||||
</div>
|
||||
);
|
||||
|
||||
|
@ -16,7 +16,7 @@
|
||||
"postcss": "8.4.49",
|
||||
"primeicons": "^7.0.0",
|
||||
"primereact": "^10.8.2",
|
||||
"react": "19.0.0-rc-f38c22b244-20240704",
|
||||
"react": "19.0.0",
|
||||
"react-dom": "19.0.0-rc-f38c22b244-20240704",
|
||||
"tailwindcss": "3.4.17",
|
||||
"typescript": "5.7.2",
|
||||
@ -28,7 +28,7 @@
|
||||
"@playwright/test": "^1.46.0",
|
||||
"@types/bcrypt": "^5.0.2",
|
||||
"@types/node": "22.10.2",
|
||||
"@types/react": "18.3.18",
|
||||
"@types/react": "19.0.2",
|
||||
"@types/react-dom": "18.3.5"
|
||||
},
|
||||
"engines": {
|
||||
|
92
pnpm-lock.yaml
generated
92
pnpm-lock.yaml
generated
@ -10,7 +10,7 @@ importers:
|
||||
dependencies:
|
||||
'@heroicons/react':
|
||||
specifier: ^2.1.4
|
||||
version: 2.2.0(react@19.0.0-rc-f38c22b244-20240704)
|
||||
version: 2.2.0(react@19.0.0)
|
||||
'@tailwindcss/forms':
|
||||
specifier: ^0.5.7
|
||||
version: 0.5.9(tailwindcss@3.4.17)
|
||||
@ -25,10 +25,10 @@ importers:
|
||||
version: 2.1.1
|
||||
next:
|
||||
specifier: 15.1.2
|
||||
version: 15.1.2(@playwright/test@1.49.1)(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.0.0-rc-f38c22b244-20240704))(react@19.0.0-rc-f38c22b244-20240704)
|
||||
version: 15.1.2(@playwright/test@1.49.1)(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.0.0))(react@19.0.0)
|
||||
next-auth:
|
||||
specifier: 5.0.0-beta.25
|
||||
version: 5.0.0-beta.25(next@15.1.2(@playwright/test@1.49.1)(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.0.0-rc-f38c22b244-20240704))(react@19.0.0-rc-f38c22b244-20240704))(react@19.0.0-rc-f38c22b244-20240704)
|
||||
version: 5.0.0-beta.25(next@15.1.2(@playwright/test@1.49.1)(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.0.0))(react@19.0.0))(react@19.0.0)
|
||||
postcss:
|
||||
specifier: 8.4.49
|
||||
version: 8.4.49
|
||||
@ -37,13 +37,13 @@ importers:
|
||||
version: 7.0.0
|
||||
primereact:
|
||||
specifier: ^10.8.2
|
||||
version: 10.8.5(@types/react@18.3.18)(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.0.0-rc-f38c22b244-20240704))(react@19.0.0-rc-f38c22b244-20240704)
|
||||
version: 10.8.5(@types/react@19.0.2)(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.0.0))(react@19.0.0)
|
||||
react:
|
||||
specifier: 19.0.0-rc-f38c22b244-20240704
|
||||
version: 19.0.0-rc-f38c22b244-20240704
|
||||
specifier: 19.0.0
|
||||
version: 19.0.0
|
||||
react-dom:
|
||||
specifier: 19.0.0-rc-f38c22b244-20240704
|
||||
version: 19.0.0-rc-f38c22b244-20240704(react@19.0.0-rc-f38c22b244-20240704)
|
||||
version: 19.0.0-rc-f38c22b244-20240704(react@19.0.0)
|
||||
tailwindcss:
|
||||
specifier: 3.4.17
|
||||
version: 3.4.17
|
||||
@ -52,7 +52,7 @@ importers:
|
||||
version: 5.7.2
|
||||
use-debounce:
|
||||
specifier: ^10.0.1
|
||||
version: 10.0.4(react@19.0.0-rc-f38c22b244-20240704)
|
||||
version: 10.0.4(react@19.0.0)
|
||||
uuid:
|
||||
specifier: 11.0.3
|
||||
version: 11.0.3
|
||||
@ -70,11 +70,11 @@ importers:
|
||||
specifier: 22.10.2
|
||||
version: 22.10.2
|
||||
'@types/react':
|
||||
specifier: 18.3.18
|
||||
version: 18.3.18
|
||||
specifier: 19.0.2
|
||||
version: 19.0.2
|
||||
'@types/react-dom':
|
||||
specifier: 18.3.5
|
||||
version: 18.3.5(@types/react@18.3.18)
|
||||
version: 18.3.5(@types/react@19.0.2)
|
||||
|
||||
packages:
|
||||
|
||||
@ -334,9 +334,6 @@ packages:
|
||||
'@types/node@22.10.2':
|
||||
resolution: {integrity: sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==}
|
||||
|
||||
'@types/prop-types@15.7.12':
|
||||
resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==}
|
||||
|
||||
'@types/react-dom@18.3.5':
|
||||
resolution: {integrity: sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q==}
|
||||
peerDependencies:
|
||||
@ -345,8 +342,8 @@ packages:
|
||||
'@types/react-transition-group@4.4.11':
|
||||
resolution: {integrity: sha512-RM05tAniPZ5DZPzzNFP+DmrcOdD0efDUxMy3145oljWSl3x9ZV5vhme98gTxFrj2lhXvmGNnUiuDyJgY9IKkNA==}
|
||||
|
||||
'@types/react@18.3.18':
|
||||
resolution: {integrity: sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==}
|
||||
'@types/react@19.0.2':
|
||||
resolution: {integrity: sha512-USU8ZI/xyKJwFTpjSVIrSeHBVAGagkHQKPNbxeWwql/vDmnTIBgx+TJnhFnj1NXgz8XfprU0egV2dROLGpsBEg==}
|
||||
|
||||
abbrev@1.1.1:
|
||||
resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==}
|
||||
@ -940,8 +937,8 @@ packages:
|
||||
react: '>=16.6.0'
|
||||
react-dom: '>=16.6.0'
|
||||
|
||||
react@19.0.0-rc-f38c22b244-20240704:
|
||||
resolution: {integrity: sha512-OP8O6Oc1rdR9IdIKJRKaL1PYd4eGkn6f88VqiygWyyG4P4RmPPix5pp7MatqSt9TnBOcVT+lBMGoVxRgUFeudQ==}
|
||||
react@19.0.0:
|
||||
resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
read-cache@1.0.0:
|
||||
@ -1186,9 +1183,9 @@ snapshots:
|
||||
tslib: 2.6.3
|
||||
optional: true
|
||||
|
||||
'@heroicons/react@2.2.0(react@19.0.0-rc-f38c22b244-20240704)':
|
||||
'@heroicons/react@2.2.0(react@19.0.0)':
|
||||
dependencies:
|
||||
react: 19.0.0-rc-f38c22b244-20240704
|
||||
react: 19.0.0
|
||||
|
||||
'@img/sharp-darwin-arm64@0.33.5':
|
||||
optionalDependencies:
|
||||
@ -1374,19 +1371,16 @@ snapshots:
|
||||
dependencies:
|
||||
undici-types: 6.20.0
|
||||
|
||||
'@types/prop-types@15.7.12': {}
|
||||
|
||||
'@types/react-dom@18.3.5(@types/react@18.3.18)':
|
||||
'@types/react-dom@18.3.5(@types/react@19.0.2)':
|
||||
dependencies:
|
||||
'@types/react': 18.3.18
|
||||
'@types/react': 19.0.2
|
||||
|
||||
'@types/react-transition-group@4.4.11':
|
||||
dependencies:
|
||||
'@types/react': 18.3.18
|
||||
'@types/react': 19.0.2
|
||||
|
||||
'@types/react@18.3.18':
|
||||
'@types/react@19.0.2':
|
||||
dependencies:
|
||||
'@types/prop-types': 15.7.12
|
||||
csstype: 3.1.3
|
||||
|
||||
abbrev@1.1.1: {}
|
||||
@ -1741,13 +1735,13 @@ snapshots:
|
||||
|
||||
nanoid@3.3.7: {}
|
||||
|
||||
next-auth@5.0.0-beta.25(next@15.1.2(@playwright/test@1.49.1)(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.0.0-rc-f38c22b244-20240704))(react@19.0.0-rc-f38c22b244-20240704))(react@19.0.0-rc-f38c22b244-20240704):
|
||||
next-auth@5.0.0-beta.25(next@15.1.2(@playwright/test@1.49.1)(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.0.0))(react@19.0.0))(react@19.0.0):
|
||||
dependencies:
|
||||
'@auth/core': 0.37.2
|
||||
next: 15.1.2(@playwright/test@1.49.1)(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.0.0-rc-f38c22b244-20240704))(react@19.0.0-rc-f38c22b244-20240704)
|
||||
react: 19.0.0-rc-f38c22b244-20240704
|
||||
next: 15.1.2(@playwright/test@1.49.1)(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.0.0))(react@19.0.0)
|
||||
react: 19.0.0
|
||||
|
||||
next@15.1.2(@playwright/test@1.49.1)(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.0.0-rc-f38c22b244-20240704))(react@19.0.0-rc-f38c22b244-20240704):
|
||||
next@15.1.2(@playwright/test@1.49.1)(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.0.0))(react@19.0.0):
|
||||
dependencies:
|
||||
'@next/env': 15.1.2
|
||||
'@swc/counter': 0.1.3
|
||||
@ -1755,9 +1749,9 @@ snapshots:
|
||||
busboy: 1.6.0
|
||||
caniuse-lite: 1.0.30001651
|
||||
postcss: 8.4.31
|
||||
react: 19.0.0-rc-f38c22b244-20240704
|
||||
react-dom: 19.0.0-rc-f38c22b244-20240704(react@19.0.0-rc-f38c22b244-20240704)
|
||||
styled-jsx: 5.1.6(react@19.0.0-rc-f38c22b244-20240704)
|
||||
react: 19.0.0
|
||||
react-dom: 19.0.0-rc-f38c22b244-20240704(react@19.0.0)
|
||||
styled-jsx: 5.1.6(react@19.0.0)
|
||||
optionalDependencies:
|
||||
'@next/swc-darwin-arm64': 15.1.2
|
||||
'@next/swc-darwin-x64': 15.1.2
|
||||
@ -1889,14 +1883,14 @@ snapshots:
|
||||
|
||||
primeicons@7.0.0: {}
|
||||
|
||||
primereact@10.8.5(@types/react@18.3.18)(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.0.0-rc-f38c22b244-20240704))(react@19.0.0-rc-f38c22b244-20240704):
|
||||
primereact@10.8.5(@types/react@19.0.2)(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.0.0))(react@19.0.0):
|
||||
dependencies:
|
||||
'@types/react-transition-group': 4.4.11
|
||||
react: 19.0.0-rc-f38c22b244-20240704
|
||||
react-dom: 19.0.0-rc-f38c22b244-20240704(react@19.0.0-rc-f38c22b244-20240704)
|
||||
react-transition-group: 4.4.5(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.0.0-rc-f38c22b244-20240704))(react@19.0.0-rc-f38c22b244-20240704)
|
||||
react: 19.0.0
|
||||
react-dom: 19.0.0-rc-f38c22b244-20240704(react@19.0.0)
|
||||
react-transition-group: 4.4.5(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.0.0))(react@19.0.0)
|
||||
optionalDependencies:
|
||||
'@types/react': 18.3.18
|
||||
'@types/react': 19.0.2
|
||||
|
||||
prop-types@15.8.1:
|
||||
dependencies:
|
||||
@ -1906,23 +1900,23 @@ snapshots:
|
||||
|
||||
queue-microtask@1.2.3: {}
|
||||
|
||||
react-dom@19.0.0-rc-f38c22b244-20240704(react@19.0.0-rc-f38c22b244-20240704):
|
||||
react-dom@19.0.0-rc-f38c22b244-20240704(react@19.0.0):
|
||||
dependencies:
|
||||
react: 19.0.0-rc-f38c22b244-20240704
|
||||
react: 19.0.0
|
||||
scheduler: 0.25.0-rc-f38c22b244-20240704
|
||||
|
||||
react-is@16.13.1: {}
|
||||
|
||||
react-transition-group@4.4.5(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.0.0-rc-f38c22b244-20240704))(react@19.0.0-rc-f38c22b244-20240704):
|
||||
react-transition-group@4.4.5(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.0.0))(react@19.0.0):
|
||||
dependencies:
|
||||
'@babel/runtime': 7.26.0
|
||||
dom-helpers: 5.2.1
|
||||
loose-envify: 1.4.0
|
||||
prop-types: 15.8.1
|
||||
react: 19.0.0-rc-f38c22b244-20240704
|
||||
react-dom: 19.0.0-rc-f38c22b244-20240704(react@19.0.0-rc-f38c22b244-20240704)
|
||||
react: 19.0.0
|
||||
react-dom: 19.0.0-rc-f38c22b244-20240704(react@19.0.0)
|
||||
|
||||
react@19.0.0-rc-f38c22b244-20240704: {}
|
||||
react@19.0.0: {}
|
||||
|
||||
read-cache@1.0.0:
|
||||
dependencies:
|
||||
@ -2039,10 +2033,10 @@ snapshots:
|
||||
dependencies:
|
||||
ansi-regex: 6.0.1
|
||||
|
||||
styled-jsx@5.1.6(react@19.0.0-rc-f38c22b244-20240704):
|
||||
styled-jsx@5.1.6(react@19.0.0):
|
||||
dependencies:
|
||||
client-only: 0.0.1
|
||||
react: 19.0.0-rc-f38c22b244-20240704
|
||||
react: 19.0.0
|
||||
|
||||
sucrase@3.35.0:
|
||||
dependencies:
|
||||
@ -2123,9 +2117,9 @@ snapshots:
|
||||
escalade: 3.1.2
|
||||
picocolors: 1.1.1
|
||||
|
||||
use-debounce@10.0.4(react@19.0.0-rc-f38c22b244-20240704):
|
||||
use-debounce@10.0.4(react@19.0.0):
|
||||
dependencies:
|
||||
react: 19.0.0-rc-f38c22b244-20240704
|
||||
react: 19.0.0
|
||||
|
||||
util-deprecate@1.0.2: {}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user