From 02b85a44d67428531551074cc7268b42f23de3d8 Mon Sep 17 00:00:00 2001 From: Cody Bennett Date: Mon, 22 Apr 2024 19:40:07 -0500 Subject: [PATCH] experiment: test React 19 with v8 --- package.json | 16 +- packages/fiber/package.json | 12 +- packages/fiber/src/core/index.tsx | 16 +- packages/fiber/src/core/renderer.ts | 74 +++++-- packages/fiber/tests/native/canvas.test.tsx | 2 +- packages/test-renderer/package.json | 2 +- packages/test-renderer/src/fireEvent.ts | 7 +- packages/test-renderer/src/helpers/waitFor.ts | 4 +- packages/test-renderer/src/index.tsx | 8 +- yarn.lock | 200 +++++++++--------- 10 files changed, 194 insertions(+), 147 deletions(-) diff --git a/package.json b/package.json index a9ed12a92e..fe6d54824a 100644 --- a/package.json +++ b/package.json @@ -49,13 +49,13 @@ "@changesets/changelog-git": "^0.1.11", "@changesets/cli": "^2.22.0", "@preconstruct/cli": "^2.1.5", - "@testing-library/react": "^13.0.0-alpha.5", + "@testing-library/react": "^15.0.2", "@types/jest": "^29.2.5", - "@types/react": "^18.0.5", - "@types/react-dom": "^18.0.1", + "@types/react": "^18.2.79", + "@types/react-dom": "^18.2.25", "@types/react-native": "0.67.4", - "@types/react-test-renderer": "^17.0.1", - "@types/scheduler": "^0.16.2", + "@types/react-test-renderer": "^18.0.7", + "@types/scheduler": "^0.23.0", "@types/three": "^0.139.0", "@typescript-eslint/eslint-plugin": "^5.48.1", "@typescript-eslint/parser": "^5.48.1", @@ -76,10 +76,10 @@ "lint-staged": "^12.3.7", "prettier": "^2.6.1", "pretty-quick": "^3.1.3", - "react": "^18.0.0", - "react-dom": "^18.0.0", + "react": "19.0.0-canary-db913d8e17-20240422", + "react-dom": "19.0.0-canary-db913d8e17-20240422", "react-native": "0.67.4", - "react-test-renderer": "^18.0.0", + "react-test-renderer": "19.0.0-canary-db913d8e17-20240422", "regenerator-runtime": "^0.13.9", "three": "^0.139.0", "three-stdlib": "^2.8.11", diff --git a/packages/fiber/package.json b/packages/fiber/package.json index 0cbd20fd08..3910f96124 100644 --- a/packages/fiber/package.json +++ b/packages/fiber/package.json @@ -43,14 +43,14 @@ }, "dependencies": { "@babel/runtime": "^7.17.8", - "@types/react-reconciler": "^0.26.7", + "@types/react-reconciler": "^0.28.8", "@types/webxr": "*", "base64-js": "^1.5.1", "buffer": "^6.0.3", - "its-fine": "^1.0.6", - "react-reconciler": "^0.27.0", + "its-fine": "^1.2.5", + "react-reconciler": "0.31.0-canary-db913d8e17-20240422", "react-use-measure": "^2.1.1", - "scheduler": "^0.21.0", + "scheduler": "0.25.0-canary-db913d8e17-20240422", "suspend-react": "^0.1.3", "zustand": "^3.7.1" }, @@ -59,8 +59,8 @@ "expo-asset": ">=8.4", "expo-gl": ">=11.0", "expo-file-system": ">=11.0", - "react": ">=18.0", - "react-dom": ">=18.0", + "react": ">=19.0", + "react-dom": ">=19.0", "react-native": ">=0.64", "three": ">=0.133" }, diff --git a/packages/fiber/src/core/index.tsx b/packages/fiber/src/core/index.tsx index d92a7849ce..590326b14d 100644 --- a/packages/fiber/src/core/index.tsx +++ b/packages/fiber/src/core/index.tsx @@ -169,7 +169,19 @@ function createRoot(canvas: TCanvas): ReconcilerRoot(cb: () => Promise) => Promise = (React as any).act export * from './hooks' export { diff --git a/packages/fiber/src/core/renderer.ts b/packages/fiber/src/core/renderer.ts index 329036b04d..e4b4392a4d 100644 --- a/packages/fiber/src/core/renderer.ts +++ b/packages/fiber/src/core/renderer.ts @@ -2,7 +2,13 @@ import * as THREE from 'three' import { UseBoundStore } from 'zustand' import Reconciler from 'react-reconciler' import { unstable_IdlePriority as idlePriority, unstable_scheduleCallback as scheduleCallback } from 'scheduler' -import { DefaultEventPriority } from 'react-reconciler/constants' +import { + // @ts-ignore + NoEventPriority, + ContinuousEventPriority, + DiscreteEventPriority, + DefaultEventPriority, +} from 'react-reconciler/constants' import { is, prepare, @@ -47,7 +53,7 @@ interface HostConfig { suspenseInstance: Instance hydratableInstance: Instance publicInstance: Instance - hostContext: never + hostContext: {} updatePayload: Array childSet: never timeoutHandle: number | undefined @@ -305,6 +311,10 @@ function createRenderer(_roots: Map, _getEventPriority?: const handleTextInstance = () => console.warn('Text is not allowed in the R3F tree! This could be stray whitespace or characters.') + const NO_CONTEXT: HostConfig['hostContext'] = {} + + let currentUpdatePriority: number = NoEventPriority + const reconciler = Reconciler< HostConfig['type'], HostConfig['props'], @@ -329,7 +339,6 @@ function createRenderer(_roots: Map, _getEventPriority?: isPrimaryRenderer: false, supportsPersistence: false, supportsHydration: false, - noTimeout: -1, appendChildToContainer: (container, child) => { if (!child) return @@ -354,8 +363,8 @@ function createRenderer(_roots: Map, _getEventPriority?: insertBefore(scene, child, beforeChild) }, - getRootHostContext: () => null, - getChildHostContext: (parentHostContext) => parentHostContext, + getRootHostContext: () => NO_CONTEXT, + getChildHostContext: () => NO_CONTEXT, finalizeInitialChildren(instance) { const localState = instance?.__r3f ?? {} // https://github.com/facebook/react/issues/20271 @@ -386,11 +395,15 @@ function createRenderer(_roots: Map, _getEventPriority?: return null } }, - commitUpdate(instance, [reconstruct, diff]: [boolean, DiffSet], type, _oldProps, newProps, fiber) { + commitUpdate(instance, diff, type, _oldProps, newProps, fiber) { + if (!diff) return + + const [reconstruct, changedProps] = diff as [boolean, DiffSet] + // Reconstruct when args or (_roots: Map, _getEventPriority?: createTextInstance: handleTextInstance, hideTextInstance: handleTextInstance, unhideTextInstance: handleTextInstance, - // https://github.com/pmndrs/react-three-fiber/pull/2360#discussion_r916356874 - // @ts-ignore - getCurrentEventPriority: () => (_getEventPriority ? _getEventPriority() : DefaultEventPriority), - beforeActiveInstanceBlur: () => {}, - afterActiveInstanceBlur: () => {}, - detachDeletedInstance: () => {}, - now: - typeof performance !== 'undefined' && is.fun(performance.now) - ? performance.now - : is.fun(Date.now) - ? Date.now - : () => 0, - // https://github.com/pmndrs/react-three-fiber/pull/2360#discussion_r920883503 scheduleTimeout: (is.fun(setTimeout) ? setTimeout : undefined) as any, cancelTimeout: (is.fun(clearTimeout) ? clearTimeout : undefined) as any, + noTimeout: -1, + getInstanceFromNode: () => null, + beforeActiveInstanceBlur() {}, + afterActiveInstanceBlur() {}, + detachDeletedInstance() {}, + // @ts-ignore untyped react-experimental options inspired by react-art + // TODO: add shell types for these and upstream to DefinitelyTyped + // https://github.com/facebook/react/blob/main/packages/react-art/src/ReactFiberConfigART.js + shouldAttemptEagerTransition() { + return false + }, + requestPostPaintCallback() {}, + maySuspendCommit() { + return false + }, + preloadInstance() { + return true // true indicates already loaded + }, + startSuspendingCommit() {}, + suspendInstance() {}, + waitForCommitToBeReady() { + return null + }, + NotPendingTransition: null, + setCurrentUpdatePriority(newPriority: number) { + currentUpdatePriority = newPriority + }, + getCurrentUpdatePriority() { + return currentUpdatePriority + }, + resolveUpdatePriority() { + if (currentUpdatePriority) return currentUpdatePriority + return _getEventPriority ? _getEventPriority() : DefaultEventPriority + }, }) return { reconciler, applyProps } diff --git a/packages/fiber/tests/native/canvas.test.tsx b/packages/fiber/tests/native/canvas.test.tsx index d7fc3a4b6d..5c4bba9b17 100644 --- a/packages/fiber/tests/native/canvas.test.tsx +++ b/packages/fiber/tests/native/canvas.test.tsx @@ -44,6 +44,6 @@ describe('native Canvas', () => { ) }) - expect(() => renderer.unmount()).not.toThrow() + expect(async () => await act(async () => renderer.unmount())).not.toThrow() }) }) diff --git a/packages/test-renderer/package.json b/packages/test-renderer/package.json index 1589204b31..3132146956 100644 --- a/packages/test-renderer/package.json +++ b/packages/test-renderer/package.json @@ -22,7 +22,7 @@ ] }, "peerDependencies": { - "react": ">=17.0", + "react": ">=19.0", "@react-three/fiber": ">=8.0.0", "three": ">=0.126" } diff --git a/packages/test-renderer/src/fireEvent.ts b/packages/test-renderer/src/fireEvent.ts index 8f0fd3dd27..e9493e0f9e 100644 --- a/packages/test-renderer/src/fireEvent.ts +++ b/packages/test-renderer/src/fireEvent.ts @@ -1,4 +1,4 @@ -import ReactReconciler from 'react-reconciler' +import { act } from '@react-three/fiber' import { toEventHandlerName } from './helpers/strings' @@ -7,10 +7,7 @@ import { ReactThreeTestInstance } from './createTestInstance' import type { MockSyntheticEvent } from './types/public' import type { MockUseStoreState, MockEventData } from './types/internal' -export const createEventFirer = ( - act: ReactReconciler.Reconciler['act'], - store: MockUseStoreState, -) => { +export const createEventFirer = (store: MockUseStoreState) => { const findEventHandler = ( element: ReactThreeTestInstance, eventName: string, diff --git a/packages/test-renderer/src/helpers/waitFor.ts b/packages/test-renderer/src/helpers/waitFor.ts index d80d2aec30..1cb20c8361 100644 --- a/packages/test-renderer/src/helpers/waitFor.ts +++ b/packages/test-renderer/src/helpers/waitFor.ts @@ -1,6 +1,4 @@ -import * as React from 'react' - -const act: (cb: () => Promise) => Promise = (React as any).unstable_act +import { act } from '@react-three/fiber' export interface WaitOptions { interval?: number diff --git a/packages/test-renderer/src/index.tsx b/packages/test-renderer/src/index.tsx index 810f867396..c928a78942 100644 --- a/packages/test-renderer/src/index.tsx +++ b/packages/test-renderer/src/index.tsx @@ -1,7 +1,7 @@ import * as React from 'react' import * as THREE from 'three' -import { extend, _roots as mockRoots, createRoot, reconciler, act as _act } from '@react-three/fiber' +import { extend, _roots as mockRoots, createRoot, reconciler, act } from '@react-three/fiber' import { toTree } from './helpers/tree' import { toGraph } from './helpers/graph' @@ -11,15 +11,13 @@ import { createCanvas } from './createTestCanvas' import { createEventFirer } from './fireEvent' import type { MockScene } from './types/internal' -import type { CreateOptions, Renderer, Act } from './types/public' +import type { CreateOptions, Renderer } from './types/public' import { wrapFiber } from './createTestInstance' import { waitFor, WaitOptions } from './helpers/waitFor' // Extend catalogue for render API in tests. extend(THREE) -const act = _act as unknown as Act - const create = async (element: React.ReactNode, options?: Partial): Promise => { const canvas = createCanvas(options) @@ -68,7 +66,7 @@ const create = async (element: React.ReactNode, options?: Partial toGraph() { return toGraph(scene) }, - fireEvent: createEventFirer(act, _store), + fireEvent: createEventFirer(_store), async advanceFrames(frames: number, delta: number | number[] = 1) { const state = _store.getState() const storeSubscribers = state.internal.subscribers diff --git a/yarn.lock b/yarn.lock index 78c25d47de..fb59c5937e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2718,27 +2718,27 @@ dependencies: "@sinonjs/commons" "^1.7.0" -"@testing-library/dom@^8.5.0": - version "8.13.0" - resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.13.0.tgz#bc00bdd64c7d8b40841e27a70211399ad3af46f5" - integrity sha512-9VHgfIatKNXQNaZTtLnalIy0jNZzY35a4S3oi08YAt9Hv1VsfZ/DfA45lM8D/UhtHBGJ4/lGwp0PZkVndRkoOQ== +"@testing-library/dom@^10.0.0": + version "10.0.0" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-10.0.0.tgz#ae1ab88aad35a728a38264041163174cafd7e8dd" + integrity sha512-PmJPnogldqoVFf+EwbHvbBJ98MmqASV8kLrBYgsDNxQcFMeIS7JFL48sfyXvuMtgmWO/wMhh25odr+8VhDmn4g== dependencies: "@babel/code-frame" "^7.10.4" "@babel/runtime" "^7.12.5" - "@types/aria-query" "^4.2.0" - aria-query "^5.0.0" + "@types/aria-query" "^5.0.1" + aria-query "5.3.0" chalk "^4.1.0" dom-accessibility-api "^0.5.9" - lz-string "^1.4.4" + lz-string "^1.5.0" pretty-format "^27.0.2" -"@testing-library/react@^13.0.0-alpha.5": - version "13.0.1" - resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-13.0.1.tgz#00d223e182923d341a9610590561fb9dd1324110" - integrity sha512-zeHx3PohYYp+4bTJwrixQY8zSBZjWUGwYc7OhD1EpWTHS92RleApLoP72NdwaWxOrM1P1Uezt3XvGf6t2XSWPQ== +"@testing-library/react@^15.0.2": + version "15.0.2" + resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-15.0.2.tgz#d0fd7e9c41b819557639acf5f18e4cd1007ec295" + integrity sha512-5mzIpuytB1ctpyywvyaY2TAAUQVCZIGqwiqFQf6u9lvj/SJQepGUzNV18Xpk+NLCaCE2j7CWrZE0tEf9xLZYiQ== dependencies: "@babel/runtime" "^7.12.5" - "@testing-library/dom" "^8.5.0" + "@testing-library/dom" "^10.0.0" "@types/react-dom" "^18.0.0" "@tootallnate/once@1": @@ -2766,10 +2766,10 @@ resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== -"@types/aria-query@^4.2.0": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.2.tgz#ed4e0ad92306a704f9fb132a0cfcf77486dbe2bc" - integrity sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig== +"@types/aria-query@^5.0.1": + version "5.0.4" + resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-5.0.4.tgz#1a31c3d378850d2778dabb6374d036dcba4ba708" + integrity sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw== "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": version "7.1.19" @@ -2947,13 +2947,20 @@ resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== -"@types/react-dom@^18.0.0", "@types/react-dom@^18.0.1": +"@types/react-dom@^18.0.0": version "18.0.1" resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.1.tgz#cb3cc10ea91141b12c71001fede1017acfbce4db" integrity sha512-jCwTXvHtRLiyVvKm9aEdHXs8rflVOGd5Sl913JZrPshfXjn8NYsTNZOz70bCsA31IR0TOqwi3ad+X4tSCBoMTw== dependencies: "@types/react" "*" +"@types/react-dom@^18.2.25": + version "18.2.25" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.25.tgz#2946a30081f53e7c8d585eb138277245caedc521" + integrity sha512-o/V48vf4MQh7juIKZU2QGDfli6p1+OOi5oXx36Hffpc9adsHeXjVp8rHuPkjd8VT8sOJ2Zp05HR7CdpGTIUFUA== + dependencies: + "@types/react" "*" + "@types/react-native@0.67.4": version "0.67.4" resolved "https://registry.yarnpkg.com/@types/react-native/-/react-native-0.67.4.tgz#97a8d3cff2a7606f247008e93d9fe2a3879bc84e" @@ -2961,13 +2968,6 @@ dependencies: "@types/react" "*" -"@types/react-reconciler@^0.26.7": - version "0.26.7" - resolved "https://registry.yarnpkg.com/@types/react-reconciler/-/react-reconciler-0.26.7.tgz#0c4643f30821ae057e401b0d9037e03e8e9b2a36" - integrity sha512-mBDYl8x+oyPX/VBb3E638N0B7xG+SPk/EAMcVPeexqus/5aTpTphQi0curhhshOqRrc9t6OPoJfEUkbymse/lQ== - dependencies: - "@types/react" "*" - "@types/react-reconciler@^0.28.0": version "0.28.0" resolved "https://registry.yarnpkg.com/@types/react-reconciler/-/react-reconciler-0.28.0.tgz#513acbed173140e958c909041ca14eb40412077f" @@ -2975,14 +2975,21 @@ dependencies: "@types/react" "*" -"@types/react-test-renderer@^17.0.1": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@types/react-test-renderer/-/react-test-renderer-17.0.2.tgz#5f800a39b12ac8d2a2149e7e1885215bcf4edbbf" - integrity sha512-+F1KONQTBHDBBhbHuT2GNydeMpPuviduXIVJRB7Y4nma4NR5DrTJfMMZ+jbhEHbpwL+Uqhs1WXh4KHiyrtYTPg== +"@types/react-reconciler@^0.28.8": + version "0.28.8" + resolved "https://registry.yarnpkg.com/@types/react-reconciler/-/react-reconciler-0.28.8.tgz#e51710572bcccf214306833c2438575d310b3e98" + integrity sha512-SN9c4kxXZonFhbX4hJrZy37yw9e7EIxcpHCxQv5JUS18wDE5ovkQKlqQEkufdJCCMfuI9BnjUJvhYeJ9x5Ra7g== dependencies: - "@types/react" "^17" + "@types/react" "*" -"@types/react@*", "@types/react@^18.0.5": +"@types/react-test-renderer@^18.0.7": + version "18.0.7" + resolved "https://registry.yarnpkg.com/@types/react-test-renderer/-/react-test-renderer-18.0.7.tgz#2cfe657adb3688cdf543995eceb2e062b5a68728" + integrity sha512-1+ANPOWc6rB3IkSnElhjv6VLlKg2dSv/OWClUyZimbLsQyBn8Js9Vtdsi3UICJ2rIQ3k2la06dkB+C92QfhKmg== + dependencies: + "@types/react" "*" + +"@types/react@*": version "18.0.5" resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.5.tgz#1a4d4b705ae6af5aed369dec22800b20f89f5301" integrity sha512-UPxNGInDCIKlfqBrm8LDXYWNfLHwIdisWcsH5GpMyGjhEDLFgTtlRBaoWuCua9HcyuE0rMkmAeZ3FXV1pYLIYQ== @@ -2991,15 +2998,6 @@ "@types/scheduler" "*" csstype "^3.0.2" -"@types/react@^17": - version "17.0.44" - resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.44.tgz#c3714bd34dd551ab20b8015d9d0dbec812a51ec7" - integrity sha512-Ye0nlw09GeMp2Suh8qoOv0odfgCoowfM/9MG6WeRD60Gq9wS90bdkdRtYbRkNhXOpG4H+YXGvj4wOWhAC0LJ1g== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - csstype "^3.0.2" - "@types/react@^18.2.47": version "18.2.47" resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.47.tgz#85074b27ab563df01fbc3f68dc64bf7050b0af40" @@ -3009,6 +3007,14 @@ "@types/scheduler" "*" csstype "^3.0.2" +"@types/react@^18.2.79": + version "18.2.79" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.79.tgz#c40efb4f255711f554d47b449f796d1c7756d865" + integrity sha512-RwGAGXPl9kSXwdNTafkOEuFrTBD5SA2B3iEB96xi8+xu5ddUa/cpvyVCSNn+asgLCTHkb5ZxN8gbuibYJi4s1w== + dependencies: + "@types/prop-types" "*" + csstype "^3.0.2" + "@types/resolve@1.17.1": version "1.17.1" resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" @@ -3016,11 +3022,16 @@ dependencies: "@types/node" "*" -"@types/scheduler@*", "@types/scheduler@^0.16.2": +"@types/scheduler@*": version "0.16.2" resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== +"@types/scheduler@^0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.23.0.tgz#0a6655b3e2708eaabca00b7372fafd7a792a7b09" + integrity sha512-YIoDCTH3Af6XM5VuwGG/QL/CJqga1Zm3NkU3HZ4ZHK2fRMPYP1VczsTUqtsf43PH/iJNVlPHAo2oWX7BSdB2Hw== + "@types/semver@^6.0.0": version "6.2.3" resolved "https://registry.yarnpkg.com/@types/semver/-/semver-6.2.3.tgz#5798ecf1bec94eaa64db39ee52808ec0693315aa" @@ -3411,10 +3422,12 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -aria-query@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.0.0.tgz#210c21aaf469613ee8c9a62c7f86525e058db52c" - integrity sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg== +aria-query@5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" + integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== + dependencies: + dequal "^2.0.3" arr-diff@^4.0.0: version "4.0.0" @@ -4563,6 +4576,11 @@ depd@2.0.0: resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== +dequal@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + destroy@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" @@ -6227,10 +6245,10 @@ istanbul-reports@^3.1.3: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -its-fine@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/its-fine/-/its-fine-1.0.6.tgz#087b14d71137816dab676d8b57c35a6cd5d2b021" - integrity sha512-VZJZPwVT2kxe5KQv+TxCjojfLiUIut8zXDNLTxcM7gJ/xQ/bSPk5M0neZ+j3myy45KKkltY1mm1jyJgx3Fxsdg== +its-fine@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/its-fine/-/its-fine-1.2.5.tgz#5466c287f86a0a73e772c8d8d515626c97195dc9" + integrity sha512-fXtDA0X0t0eBYAGLVM5YsgJGsJ5jEmqZEPrGbzdf5awjv0xE7nqv3TVnvtUF060Tkes15DbDAKW/I48vsb6SyA== dependencies: "@types/react-reconciler" "^0.28.0" @@ -7486,10 +7504,10 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -lz-string@^1.4.4: - version "1.4.4" - resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26" - integrity sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY= +lz-string@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" + integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== maath@^0.10.7: version "0.10.7" @@ -8785,13 +8803,12 @@ react-devtools-core@4.19.1: shell-quote "^1.6.1" ws "^7" -react-dom@^18.0.0: - version "18.0.0" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.0.0.tgz#26b88534f8f1dbb80853e1eabe752f24100d8023" - integrity sha512-XqX7uzmFo0pUceWFCt7Gff6IyIMzFUn7QMZrbrQfGxtaxXZIcGQzoNpRLE3fQLnS4XzLLPMZX2T9TRcSrasicw== +react-dom@19.0.0-canary-db913d8e17-20240422: + version "19.0.0-canary-db913d8e17-20240422" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-19.0.0-canary-db913d8e17-20240422.tgz#606831aa157749c4f556a7d40645a3fae9245440" + integrity sha512-+LmfcPoEv38BcToZ76NWbPgyAqFzZb9ONYVn1F7p6cZmtJerNjmwTBOGZ06h/tugQwg0+dU2igpS3veF5l9E3g== dependencies: - loose-envify "^1.1.0" - scheduler "^0.21.0" + scheduler "0.25.0-canary-db913d8e17-20240422" react-dom@^18.2.0: version "18.2.0" @@ -8801,10 +8818,10 @@ react-dom@^18.2.0: loose-envify "^1.1.0" scheduler "^0.23.0" -"react-is@^16.12.0 || ^17.0.0 || ^18.0.0", react-is@^18.0.0: - version "18.0.0" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.0.0.tgz#026f6c4a27dbe33bf4a35655b9e1327c4e55e3f5" - integrity sha512-yUcBYdBBbo3QiPsgYDcfQcIkGZHfxOaoE6HLSnr1sPzMhdyxusbfKOSUbSd/ocGi32dxcj366PsTj+5oggeKKw== +react-is@19.0.0-canary-db913d8e17-20240422: + version "19.0.0-canary-db913d8e17-20240422" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-19.0.0-canary-db913d8e17-20240422.tgz#1f15e650099ec0788a76f1a3e66776b71c1de7ec" + integrity sha512-ZSZ90UgszfitZsO8JPad+I04BVdrE2bGAGQQjNX8m5jdkcPCITsb3GUt90iesxHUDRbyHoaY/MgmhSGe/s3TeA== react-is@^16.13.1, react-is@^16.7.0: version "16.13.1" @@ -8816,6 +8833,11 @@ react-is@^17.0.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== +react-is@^18.0.0: + version "18.0.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.0.0.tgz#026f6c4a27dbe33bf4a35655b9e1327c4e55e3f5" + integrity sha512-yUcBYdBBbo3QiPsgYDcfQcIkGZHfxOaoE6HLSnr1sPzMhdyxusbfKOSUbSd/ocGi32dxcj366PsTj+5oggeKKw== + react-merge-refs@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/react-merge-refs/-/react-merge-refs-1.1.0.tgz#73d88b892c6c68cbb7a66e0800faa374f4c38b06" @@ -8871,13 +8893,12 @@ react-native@0.67.4: whatwg-fetch "^3.0.0" ws "^6.1.4" -react-reconciler@^0.27.0: - version "0.27.0" - resolved "https://registry.yarnpkg.com/react-reconciler/-/react-reconciler-0.27.0.tgz#360124fdf2d76447c7491ee5f0e04503ed9acf5b" - integrity sha512-HmMDKciQjYmBRGuuhIaKA1ba/7a+UsM5FzOZsMO2JYHt9Jh8reCb7j1eDC95NOyUlKM9KRyvdx0flBuDvYSBoA== +react-reconciler@0.31.0-canary-db913d8e17-20240422: + version "0.31.0-canary-db913d8e17-20240422" + resolved "https://registry.yarnpkg.com/react-reconciler/-/react-reconciler-0.31.0-canary-db913d8e17-20240422.tgz#8affff80b1f9b11a20137f31ee121958a5808bb2" + integrity sha512-XkzNO6to+Zb69H2DY/rsZ8qfQRr7HhS2L+mLXK/WaEkCGHRfdHA5AihHqyw7RpkaGqhiInUY+lKICdWcWNmIPA== dependencies: - loose-envify "^1.1.0" - scheduler "^0.21.0" + scheduler "0.25.0-canary-db913d8e17-20240422" react-refresh@^0.10.0: version "0.10.0" @@ -8894,22 +8915,13 @@ react-refresh@^0.4.0: resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.4.3.tgz#966f1750c191672e76e16c2efa569150cc73ab53" integrity sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA== -react-shallow-renderer@^16.13.1: - version "16.15.0" - resolved "https://registry.yarnpkg.com/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz#48fb2cf9b23d23cde96708fe5273a7d3446f4457" - integrity sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA== +react-test-renderer@19.0.0-canary-db913d8e17-20240422: + version "19.0.0-canary-db913d8e17-20240422" + resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-19.0.0-canary-db913d8e17-20240422.tgz#6a86e3f870f2add0c9f32d347ba28a1be53f8b77" + integrity sha512-fEqDuPnDn4D96bPjJsWu13mqh1TjWvSyawDsLYctoJNd1c5s5Bt6u1XLKy1OMNVZp2cIbH05v22RU4lWBQM/PQ== dependencies: - object-assign "^4.1.1" - react-is "^16.12.0 || ^17.0.0 || ^18.0.0" - -react-test-renderer@^18.0.0: - version "18.0.0" - resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-18.0.0.tgz#fa403d625ea9478a70ace43db88833f6c3a5bb4c" - integrity sha512-SyZTP/FSkwfiKOZuTZiISzsrC8A80KNlQ8PyyoGoOq+VzMAab6Em1POK/CiX3+XyXG6oiJa1C53zYDbdrJu9fw== - dependencies: - react-is "^18.0.0" - react-shallow-renderer "^16.13.1" - scheduler "^0.21.0" + react-is "19.0.0-canary-db913d8e17-20240422" + scheduler "0.25.0-canary-db913d8e17-20240422" react-use-measure@^2.1.1: version "2.1.1" @@ -8923,12 +8935,10 @@ react-use-refs@^1.0.1: resolved "https://registry.yarnpkg.com/react-use-refs/-/react-use-refs-1.0.1.tgz#44cab5f4764b3fa4a112189c0058fc8752d1eb2c" integrity sha512-zVmPRY5DJhzjGgmlIWw9pkdCNlIdrfsEXgdzcSau3MSpKPVuwRQU6DoviwH5f9n5Hc+M2HWW7mkRWbX+4eyC8w== -react@^18.0.0: - version "18.0.0" - resolved "https://registry.yarnpkg.com/react/-/react-18.0.0.tgz#b468736d1f4a5891f38585ba8e8fb29f91c3cb96" - integrity sha512-x+VL6wbT4JRVPm7EGxXhZ8w8LTROaxPXOqhlGyVSrv0sB1jkyFGgXxJ8LVoPRLvPR6/CIZGFmfzqUa2NYeMr2A== - dependencies: - loose-envify "^1.1.0" +react@19.0.0-canary-db913d8e17-20240422: + version "19.0.0-canary-db913d8e17-20240422" + resolved "https://registry.yarnpkg.com/react/-/react-19.0.0-canary-db913d8e17-20240422.tgz#cbf02302e5c082da6c4deefce59525a92972d3ee" + integrity sha512-6D1y1MWw586E1LRbKTZWTGUk8ONtdwu1zPN7EGMiJb0XDcXrLDjvA9dCmXWyRfivV6z+PRJh9YpS3DZjpq24Bg== react@^18.2.0: version "18.2.0" @@ -9310,6 +9320,11 @@ saxes@^5.0.1: dependencies: xmlchars "^2.2.0" +scheduler@0.25.0-canary-db913d8e17-20240422: + version "0.25.0-canary-db913d8e17-20240422" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.25.0-canary-db913d8e17-20240422.tgz#93e0c376902c1faeb461c4777348873945f8d036" + integrity sha512-UOxM9t/xYfVfbM4zT4QmAMSBqP9/D9pUGPkrB4F0q3vTkIAGfTEE9qvRpAetAD+3zU0s9Ow30fG57VgvscNZYw== + scheduler@^0.20.2: version "0.20.2" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" @@ -9318,13 +9333,6 @@ scheduler@^0.20.2: loose-envify "^1.1.0" object-assign "^4.1.1" -scheduler@^0.21.0: - version "0.21.0" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.21.0.tgz#6fd2532ff5a6d877b6edb12f00d8ab7e8f308820" - integrity sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ== - dependencies: - loose-envify "^1.1.0" - scheduler@^0.23.0: version "0.23.0" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe"