diff --git a/package.json b/package.json index 13a535db0d..8a9c0e5062 100644 --- a/package.json +++ b/package.json @@ -67,9 +67,9 @@ "package-json": "^7.0.0", "parse-env-string": "^1.0.1", "prettier": "^3.6.2", - "react": "^16.14.0", - "react-dom": "^16.14.0", - "react-mosaic-component": "^4.1.1", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "react-mosaic-component": "^6.1.1", "react-window": "^1.8.10", "semver": "^7.3.4", "shell-env": "^3.0.1", @@ -94,7 +94,7 @@ "@reforged/maker-appimage": "^5.1.0", "@testing-library/dom": "^10.4.0", "@testing-library/jest-dom": "^6.6.3", - "@testing-library/react": "^12.1.5", + "@testing-library/react": "^16.1.0", "@testing-library/user-event": "^14.5.2", "@tsconfig/node22": "^22.0.2", "@types/classnames": "^2.2.11", @@ -102,8 +102,8 @@ "@types/getos": "^3.0.1", "@types/node": "^22.19.1", "@types/parse-env-string": "^1.0.2", - "@types/react": "^16.14.0", - "@types/react-dom": "^16.9.11", + "@types/react": "^18.3.0", + "@types/react-dom": "^18.3.0", "@types/react-window": "^1.8.8", "@types/semver": "^7.3.4", "@types/tmp": "0.2.0", @@ -162,7 +162,8 @@ }, "resolutions": { "@electron-forge/maker-base": "8.0.0-alpha.3", - "@electron-forge/shared-types": "8.0.0-alpha.3" + "@electron-forge/shared-types": "8.0.0-alpha.3", + "@types/react": "^18.3.0" }, "packageManager": "yarn@4.10.3+sha512.c38cafb5c7bb273f3926d04e55e1d8c9dfa7d9c3ea1f36a4868fa028b9e5f72298f0b7f401ad5eb921749eb012eb1c3bb74bf7503df3ee43fd600d14a018266f", "dependenciesMeta": { diff --git a/rtl-spec/components/commands-address-bar.spec.tsx b/rtl-spec/components/commands-address-bar.spec.tsx index 326c857936..66194f9817 100644 --- a/rtl-spec/components/commands-address-bar.spec.tsx +++ b/rtl-spec/components/commands-address-bar.spec.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import { render } from '@testing-library/react'; +import { render, waitFor } from '@testing-library/react'; import { userEvent } from '@testing-library/user-event'; import { runInAction } from 'mobx'; import { beforeEach, describe, expect, it } from 'vitest'; @@ -76,7 +76,9 @@ describe('AddressBar component', () => { runInAction(() => { store.activeGistAction = action; }); - const btn = getByRole('button'); - expect(btn).toBeDisabled(); + await waitFor(() => { + const btn = getByRole('button'); + expect(btn).toBeDisabled(); + }); }); }); diff --git a/rtl-spec/components/commands-publish-button.spec.tsx b/rtl-spec/components/commands-publish-button.spec.tsx index f8de7c79a2..3b270958ae 100644 --- a/rtl-spec/components/commands-publish-button.spec.tsx +++ b/rtl-spec/components/commands-publish-button.spec.tsx @@ -1,4 +1,5 @@ import { Octokit } from '@octokit/rest'; +import { act, waitFor } from '@testing-library/react'; import { beforeEach, describe, expect, it, vi } from 'vitest'; import { @@ -273,7 +274,7 @@ describe('Action button component', () => { // create a button that's primed to update gistId state.gistId = gistId; ({ instance } = createActionButton()); - instance.setState({ actionType: GistActionType.update }); + act(() => instance.setState({ actionType: GistActionType.update })); mocktokit.gists.get.mockImplementation(() => { return { @@ -316,7 +317,7 @@ describe('Action button component', () => { // create a button primed to delete gistId ({ instance } = createActionButton()); - instance.setState({ actionType: GistActionType.delete }); + act(() => instance.setState({ actionType: GistActionType.delete })); }); it('attempts to delete an existing Gist', async () => { @@ -349,11 +350,19 @@ describe('Action button component', () => { } = createActionButton(); expect(container.querySelector('fieldset')).not.toBeDisabled(); - state.activeGistAction = gistActionState; - expect(container.querySelector('fieldset')).toBeDisabled(); + act(() => { + state.activeGistAction = gistActionState; + }); + await waitFor(() => { + expect(container.querySelector('fieldset')).toBeDisabled(); + }); - state.activeGistAction = GistActionState.none; - expect(container.querySelector('fieldset')).not.toBeDisabled(); + act(() => { + state.activeGistAction = GistActionState.none; + }); + await waitFor(() => { + expect(container.querySelector('fieldset')).not.toBeDisabled(); + }); } it('while publishing', async () => { diff --git a/rtl-spec/components/editors-toolbar-button.spec.tsx b/rtl-spec/components/editors-toolbar-button.spec.tsx index 14bd2222c2..df3128f71f 100644 --- a/rtl-spec/components/editors-toolbar-button.spec.tsx +++ b/rtl-spec/components/editors-toolbar-button.spec.tsx @@ -46,6 +46,7 @@ describe('Editor toolbar button component', () => { getRoot: vi.fn(), }, mosaicId: 'test', + blueprintNamespace: 'bp3', }; ({ state: store } = window.app); diff --git a/src/blueprint-react18.d.ts b/src/blueprint-react18.d.ts new file mode 100644 index 0000000000..bb10842318 --- /dev/null +++ b/src/blueprint-react18.d.ts @@ -0,0 +1,42 @@ +/** + * Type augmentations for Blueprint.js v3 components to work with React 18. + * + * React 18 removed implicit `children` from React.Component props. + * Blueprint v3 class components don't declare `children` in their prop types, + * so they fail type-checking with \@types/react 18. + * + * This file adds `children` to the affected Blueprint component props. + * It can be removed when Blueprint is replaced with shadcn/ui. + */ + +import { ReactNode } from 'react'; + +declare module '@blueprintjs/core' { + interface IAlertProps { + children?: ReactNode; + } + interface IDialogProps { + children?: ReactNode; + } + interface IFormGroupProps { + children?: ReactNode; + } + interface IRadioGroupProps { + children?: ReactNode; + } +} + +declare module '@blueprintjs/select' { + interface ISelectProps { + children?: ReactNode; + } +} + +declare module '@blueprintjs/popover2' { + interface IPopover2Props { + children?: ReactNode; + } + interface ITooltip2Props { + children?: ReactNode; + } +} diff --git a/src/renderer/app.tsx b/src/renderer/app.tsx index 54d31f2321..09585f3f62 100644 --- a/src/renderer/app.tsx +++ b/src/renderer/app.tsx @@ -114,7 +114,7 @@ export class App { * Initial setup call, loading Monaco and kicking off the React * render process. */ - public async setup(): Promise { + public async setup(): Promise { if (this.state.isUsingSystemTheme) { await this.loadTheme(getCurrentTheme().file); } else { @@ -123,13 +123,13 @@ export class App { const [ { default: React }, - { render }, + { createRoot }, { Dialogs }, { OutputEditorsWrapper }, { Header }, ] = await Promise.all([ import('react'), - import('react-dom'), + import('react-dom/client'), import('./components/dialogs.js'), import('./components/output-editors-wrapper.js'), import('./components/header.js'), @@ -147,7 +147,8 @@ export class App { ); - const rendered = render(app, document.getElementById('app')); + const root = createRoot(document.getElementById('app')!); + root.render(app); this.setupResizeListener(); this.setupOfflineListener(); @@ -161,8 +162,6 @@ export class App { window.ElectronFiddle.addEventListener('set-show-me-template', () => { window.ElectronFiddle.setShowMeTemplate(this.state.templateName); }); - - return rendered; } private setupTypeListeners() { diff --git a/src/renderer/components/settings-electron.tsx b/src/renderer/components/settings-electron.tsx index 87fa84f1c6..79be0396eb 100644 --- a/src/renderer/components/settings-electron.tsx +++ b/src/renderer/components/settings-electron.tsx @@ -204,13 +204,14 @@ export const ElectronSettings = observer( * Handles a change in which channels should be displayed. */ public handleChannelChange(event: React.FormEvent) { - const { id, checked } = event.currentTarget; + const { id } = event.currentTarget; const { appState } = this.props; + const channel = id as ElectronReleaseChannel; - if (!checked) { - appState.hideChannels([id as ElectronReleaseChannel]); + if (appState.channelsToShow.includes(channel)) { + appState.hideChannels([channel]); } else { - appState.showChannels([id as ElectronReleaseChannel]); + appState.showChannels([channel]); } } diff --git a/tests/renderer/app-spec.tsx b/tests/renderer/app-spec.tsx index ea96ce6af1..f995d09637 100644 --- a/tests/renderer/app-spec.tsx +++ b/tests/renderer/app-spec.tsx @@ -1,3 +1,4 @@ +import { act } from '@testing-library/react'; import * as semver from 'semver'; import { beforeAll, beforeEach, describe, expect, it, vi } from 'vitest'; @@ -59,10 +60,15 @@ describe('App component', () => { it('renders the app', async () => { vi.useFakeTimers(); - const result = (await app.setup()) as HTMLDivElement; - vi.runAllTimers(); + await act(async () => { + await app.setup(); + await vi.advanceTimersByTimeAsync(100); + }); - expect(result.innerHTML).toBe('Header;OutputEditorsWrapper;Dialogs;'); + const appEl = document.getElementById('app')!; + expect(appEl.innerHTML).toContain('Header;'); + expect(appEl.innerHTML).toContain('OutputEditorsWrapper;'); + expect(appEl.innerHTML).toContain('Dialogs;'); vi.useRealTimers(); }); diff --git a/yarn.lock b/yarn.lock index fe45157e9b..f121503170 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2523,24 +2523,24 @@ __metadata: languageName: node linkType: hard -"@react-dnd/asap@npm:^4.0.0": - version: 4.0.0 - resolution: "@react-dnd/asap@npm:4.0.0" - checksum: 10c0/9775776461b0b8f99bb1397135df7c534b9c94aa75368d50b4ae1ef972a9d45fdc7d4ed6832bd49242071a08197f81907640d1ba2a951ff0bd70cfdb5fbdee0c +"@react-dnd/asap@npm:^5.0.1": + version: 5.0.2 + resolution: "@react-dnd/asap@npm:5.0.2" + checksum: 10c0/0063db616db9801c9be18f11a912c3e214f87e714b1e4bf9462952af7ead65cba0b43e1f7c34bc8748811b6926e74d929e5e126f85ebb91b870faf809ceb5177 languageName: node linkType: hard -"@react-dnd/invariant@npm:^2.0.0": - version: 2.0.0 - resolution: "@react-dnd/invariant@npm:2.0.0" - checksum: 10c0/32219873b096a4bc6bfab9e9ca3007f90770ad4365deee2277eed303413f9936fd828ec46884aae31267df8dde16edf9bffc99c149a38b0fee829380670fadef +"@react-dnd/invariant@npm:^4.0.1": + version: 4.0.2 + resolution: "@react-dnd/invariant@npm:4.0.2" + checksum: 10c0/b303cc53fc5074cefb2a76b45b9c73ebb5d35630b18f5dc282ed9a9ac9b0287b9da1f6ac63acfdea2341b8f8187f615afc12d5eb14ec6015964f5c1b167332e2 languageName: node linkType: hard -"@react-dnd/shallowequal@npm:^2.0.0": - version: 2.0.0 - resolution: "@react-dnd/shallowequal@npm:2.0.0" - checksum: 10c0/3251e70e2575d18aaadf995066341c04ed6a1e692895fa71a925fd34daaeca294e7565daf9151dee7fd992de65ed36ba75517c73bc504ddd0d0adfdc59854cc4 +"@react-dnd/shallowequal@npm:^4.0.1": + version: 4.0.2 + resolution: "@react-dnd/shallowequal@npm:4.0.2" + checksum: 10c0/9a352fd176752e5d9c2797d598aca034b7829111ae0c992d80f40d5f068fcd6a039b1841c741dfa1ab67a36a00664310aec4f0ce216e4112f80875c9fe6fd8dc languageName: node linkType: hard @@ -2907,22 +2907,6 @@ __metadata: languageName: node linkType: hard -"@testing-library/dom@npm:^8.0.0": - version: 8.13.0 - resolution: "@testing-library/dom@npm:8.13.0" - dependencies: - "@babel/code-frame": "npm:^7.10.4" - "@babel/runtime": "npm:^7.12.5" - "@types/aria-query": "npm:^4.2.0" - aria-query: "npm:^5.0.0" - chalk: "npm:^4.1.0" - dom-accessibility-api: "npm:^0.5.9" - lz-string: "npm:^1.4.4" - pretty-format: "npm:^27.0.2" - checksum: 10c0/f44edebe5e0ee30678f40255371c542d119c901e9aca86e58804ba81583c302ee0d970f32f09a00598db87af24a631727acb3efdf7fe140d3f824faed0210bfb - languageName: node - linkType: hard - "@testing-library/jest-dom@npm:^6.6.3": version: 6.6.3 resolution: "@testing-library/jest-dom@npm:6.6.3" @@ -2938,17 +2922,23 @@ __metadata: languageName: node linkType: hard -"@testing-library/react@npm:^12.1.5": - version: 12.1.5 - resolution: "@testing-library/react@npm:12.1.5" +"@testing-library/react@npm:^16.1.0": + version: 16.3.2 + resolution: "@testing-library/react@npm:16.3.2" dependencies: "@babel/runtime": "npm:^7.12.5" - "@testing-library/dom": "npm:^8.0.0" - "@types/react-dom": "npm:<18.0.0" peerDependencies: - react: <18.0.0 - react-dom: <18.0.0 - checksum: 10c0/3c2433d2fdb6535261f62cd85d79657989cebd96f9072da03c098a1cfa56dec4dfec83d7c2e93633a3ccebdb178ea8578261533d11551600966edab77af00c8b + "@testing-library/dom": ^10.0.0 + "@types/react": ^18.0.0 || ^19.0.0 + "@types/react-dom": ^18.0.0 || ^19.0.0 + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 10c0/f9c7f0915e1b5f7b750e6c7d8b51f091b8ae7ea99bacb761d7b8505ba25de9cfcb749a0f779f1650fb268b499dd79165dc7e1ee0b8b4cb63430d3ddc81ffe044 languageName: node linkType: hard @@ -2975,13 +2965,6 @@ __metadata: languageName: node linkType: hard -"@types/aria-query@npm:^4.2.0": - version: 4.2.2 - resolution: "@types/aria-query@npm:4.2.2" - checksum: 10c0/6dc0d94890c2c7c2e347148ea32215b73bf480e0f0888a9bbfb7b531285a3daf0b95e600db5be1c03d6e5f825d63cf8c2aabc5db93d8d1fd47ce3211f73e8d66 - languageName: node - linkType: hard - "@types/aria-query@npm:^5.0.1": version: 5.0.1 resolution: "@types/aria-query@npm:5.0.1" @@ -3152,16 +3135,6 @@ __metadata: languageName: node linkType: hard -"@types/hoist-non-react-statics@npm:^3.3.1": - version: 3.3.1 - resolution: "@types/hoist-non-react-statics@npm:3.3.1" - dependencies: - "@types/react": "npm:*" - hoist-non-react-statics: "npm:^3.3.0" - checksum: 10c0/5ed808e5fbf0979fe07acd631147420c30319383f4388a57e0fb811c6ff30abef286e937a84c7b00f4647ca7f1ab390cc42af0bfc7547a87d2e59e0e7072d92b - languageName: node - linkType: hard - "@types/html-minifier-terser@npm:^6.0.0": version: 6.1.0 resolution: "@types/html-minifier-terser@npm:6.1.0" @@ -3377,21 +3350,12 @@ __metadata: languageName: node linkType: hard -"@types/react-dom@npm:<18.0.0": - version: 17.0.16 - resolution: "@types/react-dom@npm:17.0.16" - dependencies: - "@types/react": "npm:^17" - checksum: 10c0/57d3d12d4dcde5019ac282d178e58dc8fa82926337272eb2cb5dc492545883d4eef5fac6156d94c0ac76f0c1f1f8d0bf91d455d56184bad5365b759efa3e04f2 - languageName: node - linkType: hard - -"@types/react-dom@npm:^16.9.11": - version: 16.9.12 - resolution: "@types/react-dom@npm:16.9.12" - dependencies: - "@types/react": "npm:^16" - checksum: 10c0/f44b712e0f1e973a899bf2aee8bbf7d5d5fe367e411320b2d4db899823487fe6712d177a13f0be1736b75dbdc0397c024b3e36873a37be0abad9ae3583007fdc +"@types/react-dom@npm:^18.3.0": + version: 18.3.7 + resolution: "@types/react-dom@npm:18.3.7" + peerDependencies: + "@types/react": ^18.0.0 + checksum: 10c0/8bd309e2c3d1604a28a736a24f96cbadf6c05d5288cfef8883b74f4054c961b6b3a5e997fd5686e492be903c8f3380dba5ec017eff3906b1256529cd2d39603e languageName: node linkType: hard @@ -3404,25 +3368,13 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:*, @types/react@npm:^17": - version: 17.0.44 - resolution: "@types/react@npm:17.0.44" - dependencies: - "@types/prop-types": "npm:*" - "@types/scheduler": "npm:*" - csstype: "npm:^3.0.2" - checksum: 10c0/d83d6999582a17620ac208be392a1713f3d16acd6a0f0e4d5f661e43e35297eb05c89d67ea90e04fc1f1ebf92e7b6cc4353253bbee35ae1695aedf944b9af8dc - languageName: node - linkType: hard - -"@types/react@npm:^16, @types/react@npm:^16.14.0": - version: 16.14.6 - resolution: "@types/react@npm:16.14.6" +"@types/react@npm:^18.3.0": + version: 18.3.27 + resolution: "@types/react@npm:18.3.27" dependencies: "@types/prop-types": "npm:*" - "@types/scheduler": "npm:*" - csstype: "npm:^3.0.2" - checksum: 10c0/c2c7ef4848e4b4027f7f01407763e8e8c5249058849fbad12d95b19e81cb031ce1ad449217b6b16b0e5c91f7ee3b3d2ee103c55bd022c6943e3b28920a41f4fa + csstype: "npm:^3.2.2" + checksum: 10c0/a761d2f58de03d0714806cc65d32bb3d73fb33a08dd030d255b47a295e5fff2a775cf1c20b786824d8deb6454eaccce9bc6998d9899c14fc04bbd1b0b0b72897 languageName: node linkType: hard @@ -3442,13 +3394,6 @@ __metadata: languageName: node linkType: hard -"@types/scheduler@npm:*": - version: 0.16.1 - resolution: "@types/scheduler@npm:0.16.1" - checksum: 10c0/78aa5a8b19b42b7b6dc1dc3fb64c1ef2cb87b685292a0951d06d15ac4de8926c9a219bd027f438c3cb701cf525cf1f233bc09a90af5488ae8b98af2ec84b656a - languageName: node - linkType: hard - "@types/semver@npm:^7.3.12, @types/semver@npm:^7.3.4": version: 7.5.0 resolution: "@types/semver@npm:7.5.0" @@ -5013,6 +4958,13 @@ __metadata: languageName: node linkType: hard +"classnames@npm:^2.3.2": + version: 2.5.1 + resolution: "classnames@npm:2.5.1" + checksum: 10c0/afff4f77e62cea2d79c39962980bf316bacb0d7c49e13a21adaadb9221e1c6b9d3cdb829d8bb1b23c406f4e740507f37e1dcf506f7e3b7113d17c5bab787aa69 + languageName: node + linkType: hard + "clean-css@npm:^5.2.2": version: 5.3.2 resolution: "clean-css@npm:5.3.2" @@ -5526,13 +5478,20 @@ __metadata: languageName: node linkType: hard -"csstype@npm:^3.0.10, csstype@npm:^3.0.2": +"csstype@npm:^3.0.10": version: 3.1.3 resolution: "csstype@npm:3.1.3" checksum: 10c0/80c089d6f7e0c5b2bd83cf0539ab41474198579584fa10d86d0cafe0642202343cbc119e076a0b1aece191989477081415d66c9fefbf3c957fc2fc4b7009f248 languageName: node linkType: hard +"csstype@npm:^3.2.2": + version: 3.2.3 + resolution: "csstype@npm:3.2.3" + checksum: 10c0/cd29c51e70fa822f1cecd8641a1445bed7063697469d35633b516e60fe8c1bde04b08f6c5b6022136bb669b64c63d4173af54864510fbb4ee23281801841a3ce + languageName: node + linkType: hard + "data-urls@npm:^5.0.0": version: 5.0.0 resolution: "data-urls@npm:5.0.0" @@ -5849,21 +5808,23 @@ __metadata: languageName: node linkType: hard -"dnd-core@npm:^10.0.2": - version: 10.0.2 - resolution: "dnd-core@npm:10.0.2" +"dnd-core@npm:^16.0.1": + version: 16.0.1 + resolution: "dnd-core@npm:16.0.1" dependencies: - "@react-dnd/asap": "npm:^4.0.0" - "@react-dnd/invariant": "npm:^2.0.0" - redux: "npm:^4.0.4" - checksum: 10c0/f4f95b5620bda03dd7918884d18ddb60667819805f9019791e692675101f83b137f2251751d94738ad96aaf8dbe09fd248c5cd02460dcd463f0ed8b93dcfe889 + "@react-dnd/asap": "npm:^5.0.1" + "@react-dnd/invariant": "npm:^4.0.1" + redux: "npm:^4.2.0" + checksum: 10c0/6b852c576c88b0a42e618efb37e046334f5e9914b8d38ad139933dd9595b6caf2a484953a6301094d23119c17479549553d71e92fd77fa37318122ea1e579f65 languageName: node linkType: hard -"dnd-multi-backend@npm:^5.1.1": - version: 5.1.1 - resolution: "dnd-multi-backend@npm:5.1.1" - checksum: 10c0/f40c7ac1640b25fc920d9ceb55e69cdf1b710342cc9cfbe29349afa1298e85126770ee659b06f6408f31aed613fc1b2f70d61f984cb4f560c734a66736709701 +"dnd-multi-backend@npm:^8.1.2": + version: 8.1.2 + resolution: "dnd-multi-backend@npm:8.1.2" + peerDependencies: + dnd-core: ^16.0.1 + checksum: 10c0/f66c55d36ef601797e01c149c0f1b28c45c435374984df5d271ae5137f2b1b45475706ef7242907bf0f8aa364b158e4363f163a51e3a4c113e2202f9684e7e4f languageName: node linkType: hard @@ -6043,7 +6004,7 @@ __metadata: "@sentry/electron": "npm:^5.11.0" "@testing-library/dom": "npm:^10.4.0" "@testing-library/jest-dom": "npm:^6.6.3" - "@testing-library/react": "npm:^12.1.5" + "@testing-library/react": "npm:^16.1.0" "@testing-library/user-event": "npm:^14.5.2" "@tsconfig/node22": "npm:^22.0.2" "@types/classnames": "npm:^2.2.11" @@ -6051,8 +6012,8 @@ __metadata: "@types/getos": "npm:^3.0.1" "@types/node": "npm:^22.19.1" "@types/parse-env-string": "npm:^1.0.2" - "@types/react": "npm:^16.14.0" - "@types/react-dom": "npm:^16.9.11" + "@types/react": "npm:^18.3.0" + "@types/react-dom": "npm:^18.3.0" "@types/react-window": "npm:^1.8.8" "@types/semver": "npm:^7.3.4" "@types/tmp": "npm:0.2.0" @@ -6100,9 +6061,9 @@ __metadata: postcss: "npm:^8.4.25" postcss-less: "npm:^6.0.0" prettier: "npm:^3.6.2" - react: "npm:^16.14.0" - react-dom: "npm:^16.14.0" - react-mosaic-component: "npm:^4.1.1" + react: "npm:^18.3.1" + react-dom: "npm:^18.3.1" + react-mosaic-component: "npm:^6.1.1" react-window: "npm:^1.8.10" resolve-url-loader: "npm:^5.0.0" semver: "npm:^7.3.4" @@ -8075,7 +8036,7 @@ __metadata: languageName: node linkType: hard -"hoist-non-react-statics@npm:^3.3.0": +"hoist-non-react-statics@npm:^3.3.2": version: 3.3.2 resolution: "hoist-non-react-statics@npm:3.3.2" dependencies: @@ -8425,7 +8386,7 @@ __metadata: languageName: node linkType: hard -"immutability-helper@npm:^3.0.1": +"immutability-helper@npm:^3.1.1": version: 3.1.1 resolution: "immutability-helper@npm:3.1.1" checksum: 10c0/daf4f3a696b8735c5d2c9b1bac42908b66bfc18ea5484bccf6658f3e622e1486663b5ef781e1a407ee81183e16942e8b2596cc859ea94d522ba07731c2845f0e @@ -9539,7 +9500,7 @@ __metadata: languageName: node linkType: hard -"lodash@npm:^4.17.11, lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.17.4": +"lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.17.4": version: 4.17.23 resolution: "lodash@npm:4.17.23" checksum: 10c0/1264a90469f5bb95d4739c43eb6277d15b6d9e186df4ac68c3620443160fc669e2f14c11e7d8b2ccf078b81d06147c01a8ccced9aab9f9f63d50dcf8cace6bf6 @@ -9672,7 +9633,7 @@ __metadata: languageName: node linkType: hard -"lz-string@npm:^1.4.4, lz-string@npm:^1.5.0": +"lz-string@npm:^1.5.0": version: 1.5.0 resolution: "lz-string@npm:1.5.0" bin: @@ -11986,7 +11947,7 @@ __metadata: languageName: node linkType: hard -"prop-types@npm:^15.6.1, prop-types@npm:^15.6.2, prop-types@npm:^15.7.2, prop-types@npm:^15.8.1": +"prop-types@npm:^15.6.1, prop-types@npm:^15.6.2, prop-types@npm:^15.8.1": version: 15.8.1 resolution: "prop-types@npm:15.8.1" dependencies: @@ -12110,6 +12071,17 @@ __metadata: languageName: node linkType: hard +"rdndmb-html5-to-touch@npm:^8.0.0": + version: 8.1.2 + resolution: "rdndmb-html5-to-touch@npm:8.1.2" + dependencies: + dnd-multi-backend: "npm:^8.1.2" + react-dnd-html5-backend: "npm:^16.0.1" + react-dnd-touch-backend: "npm:^16.0.1" + checksum: 10c0/13319c5efee5c362e6d1a5251193d2aa68238e695f2437e330345c53de5b06915df53966ea3c8b89fa4bd26cf788f93a98d302b4edd33073d8cc7e5043fe5ea9 + languageName: node + linkType: hard + "react-base16-styling@npm:~0.9.0": version: 0.9.1 resolution: "react-base16-styling@npm:0.9.1" @@ -12125,79 +12097,84 @@ __metadata: languageName: node linkType: hard -"react-dnd-html5-backend@npm:^10.0.2": - version: 10.0.2 - resolution: "react-dnd-html5-backend@npm:10.0.2" +"react-dnd-html5-backend@npm:^16.0.1": + version: 16.0.1 + resolution: "react-dnd-html5-backend@npm:16.0.1" dependencies: - dnd-core: "npm:^10.0.2" - checksum: 10c0/62a8e242a784d321a54e2dc6fae552ed32d4191fd76b2f01ea87f26fae2aca855b6ecbdf086f2c248f1e6aa77f92dcacb0c3019c0d4e772d92994457e818ddb5 + dnd-core: "npm:^16.0.1" + checksum: 10c0/6e4b632a11e20211d71f5f3bedadf13ecec2fa73372fde388619838294b1375f15b717d1ce128e12c872ff7b15c32d26761d2026b33c14fc55e4fd5477c15289 languageName: node linkType: hard -"react-dnd-multi-backend@npm:^5.0.0": - version: 5.1.1 - resolution: "react-dnd-multi-backend@npm:5.1.1" +"react-dnd-multi-backend@npm:^8.0.0": + version: 8.1.2 + resolution: "react-dnd-multi-backend@npm:8.1.2" dependencies: - dnd-multi-backend: "npm:^5.1.1" - prop-types: "npm:^15.7.2" - react-dnd-preview: "npm:^5.1.1" + dnd-multi-backend: "npm:^8.1.2" + react-dnd-preview: "npm:^8.1.2" peerDependencies: - react: ^16.13 - react-dnd-html5-backend: ^10.0.2 - react-dnd-touch-backend: ^10.0.2 - react-dom: ^16.13 - checksum: 10c0/7acbdee62af9379153ffce3f29a7c0c1d8bcad87d71d0de261a7f38f84364f4cd1ca7ec046aa092c5ecacab9511fef0c61d3870cf3ecbf10efad0abf21398d96 + dnd-core: ^16.0.1 + react: ^16.14.0 || ^17.0.2 || ^18.0.0 + react-dnd: ^16.0.1 + react-dom: ^16.14.0 || ^17.0.2 || ^18.0.0 + checksum: 10c0/26e96ce327e47cb75d3f5a20996a6be7bd7b04abfbe52861b5514d6382b215df8365a287c037faeaf7351200eed168784ddb1ba3746186a445fc9b61ed2caaf5 languageName: node linkType: hard -"react-dnd-preview@npm:^5.1.1": - version: 5.1.1 - resolution: "react-dnd-preview@npm:5.1.1" - dependencies: - prop-types: "npm:^15.7.2" +"react-dnd-preview@npm:^8.1.2": + version: 8.1.2 + resolution: "react-dnd-preview@npm:8.1.2" peerDependencies: - react: ^16.13.1 - react-dnd: ^10.0.2 - checksum: 10c0/b17e802494c22f54ba6685862a17591b7a7ba6cd64df8451f97a76ad567f9a823273f43ffa159acfbe039bd50adab90d5d7447ef34d529d8e1c35688a83f51f0 + react: ^16.14.0 || ^17.0.2 || ^18.0.0 + react-dnd: ^16.0.1 + checksum: 10c0/26b1b74caf53bb8ba66b7e4ac665cb1db8ffc4ac99793f3502ca1ab0e1520e63e4268b9696a0e82fb723c55384bd34b15c9a232598581b3e47ed015cd03f51e8 languageName: node linkType: hard -"react-dnd-touch-backend@npm:^10.0.2": - version: 10.0.2 - resolution: "react-dnd-touch-backend@npm:10.0.2" +"react-dnd-touch-backend@npm:^16.0.1": + version: 16.0.1 + resolution: "react-dnd-touch-backend@npm:16.0.1" dependencies: - "@react-dnd/invariant": "npm:^2.0.0" - dnd-core: "npm:^10.0.2" - checksum: 10c0/55c1801515a815efed646bbf2c0c9fe2bd0fd62287b4753bf551a849b5ea015bac002758cf60508ea718d0941a21e8c57e479837806338bdeb4810373eab5079 + "@react-dnd/invariant": "npm:^4.0.1" + dnd-core: "npm:^16.0.1" + checksum: 10c0/88096146939a0466d43b9b4e33a3761284e36f40e82d2dbd1ab1130d81b40110b45492fb828db7857f3822cd44f604f646de0a2285f18ccb0697b5b088fa4b22 languageName: node linkType: hard -"react-dnd@npm:^10.0.2": - version: 10.0.2 - resolution: "react-dnd@npm:10.0.2" +"react-dnd@npm:^16.0.1": + version: 16.0.1 + resolution: "react-dnd@npm:16.0.1" dependencies: - "@react-dnd/shallowequal": "npm:^2.0.0" - "@types/hoist-non-react-statics": "npm:^3.3.1" - dnd-core: "npm:^10.0.2" - hoist-non-react-statics: "npm:^3.3.0" + "@react-dnd/invariant": "npm:^4.0.1" + "@react-dnd/shallowequal": "npm:^4.0.1" + dnd-core: "npm:^16.0.1" + fast-deep-equal: "npm:^3.1.3" + hoist-non-react-statics: "npm:^3.3.2" peerDependencies: - react: ">= 16.8" - react-dom: ">= 16.8" - checksum: 10c0/0d8e68b470a9776c5529760a1a178f23d1ccfb508e14b0bcdccd5fc37db31184985cfa1b42181214a7ce122a668c77edd855ca4e84d33f93f4340a45d2984024 + "@types/hoist-non-react-statics": ">= 3.3.1" + "@types/node": ">= 12" + "@types/react": ">= 16" + react: ">= 16.14" + peerDependenciesMeta: + "@types/hoist-non-react-statics": + optional: true + "@types/node": + optional: true + "@types/react": + optional: true + checksum: 10c0/d069435750f0d6653cfa2b951cac8abb3583fb144ff134a20176608877d9c5964c63384ebbacaa0fdeef819b592a103de0d8e06f3b742311d64a029ffed0baa3 languageName: node linkType: hard -"react-dom@npm:^16.14.0": - version: 16.14.0 - resolution: "react-dom@npm:16.14.0" +"react-dom@npm:^18.3.1": + version: 18.3.1 + resolution: "react-dom@npm:18.3.1" dependencies: loose-envify: "npm:^1.1.0" - object-assign: "npm:^4.1.1" - prop-types: "npm:^15.6.2" - scheduler: "npm:^0.19.1" + scheduler: "npm:^0.23.2" peerDependencies: - react: ^16.14.0 - checksum: 10c0/ca146e780631672a2d57c8d77775d38f394a6cd67db30c6af7964d0b3574ef7edccb1de8d592e990b98f4f5f8d1c8460b0691f04e7a45799962a51dcbaaa1371 + react: ^18.3.1 + checksum: 10c0/a752496c1941f958f2e8ac56239172296fcddce1365ce45222d04a1947e0cc5547df3e8447f855a81d6d39f008d7c32eab43db3712077f09e3f67c4874973e85 languageName: node linkType: hard @@ -12240,22 +12217,23 @@ __metadata: languageName: node linkType: hard -"react-mosaic-component@npm:^4.1.1": - version: 4.1.1 - resolution: "react-mosaic-component@npm:4.1.1" +"react-mosaic-component@npm:^6.1.1": + version: 6.1.1 + resolution: "react-mosaic-component@npm:6.1.1" dependencies: - classnames: "npm:^2.2.6" - immutability-helper: "npm:^3.0.1" - lodash: "npm:^4.17.11" - prop-types: "npm:^15.7.2" - react-dnd: "npm:^10.0.2" - react-dnd-html5-backend: "npm:^10.0.2" - react-dnd-multi-backend: "npm:^5.0.0" - react-dnd-touch-backend: "npm:^10.0.2" - uuid: "npm:^3.3.2" + classnames: "npm:^2.3.2" + immutability-helper: "npm:^3.1.1" + lodash: "npm:^4.17.21" + prop-types: "npm:^15.8.1" + rdndmb-html5-to-touch: "npm:^8.0.0" + react-dnd: "npm:^16.0.1" + react-dnd-html5-backend: "npm:^16.0.1" + react-dnd-multi-backend: "npm:^8.0.0" + react-dnd-touch-backend: "npm:^16.0.1" + uuid: "npm:^9.0.0" peerDependencies: - react: ^16.3.0 - checksum: 10c0/664f5c2ffa7a895193f220a2794b1857546576f69c78844603e1f28dbc6c2966870ad49ddb629749c6c9c3b87132a3ceb4e3715718e3ade69368a804a397d081 + react: ">=16" + checksum: 10c0/31a31b64f2b49f758127e64eb6e3a700d1d05bb5b5ef538b6394a4bd6f3c53f80d9d3cb67e87ea559ed99ab8ed3a423d60ad1ba19ca52a1c82013e1641272d99 languageName: node linkType: hard @@ -12330,14 +12308,12 @@ __metadata: languageName: node linkType: hard -"react@npm:^16.14.0": - version: 16.14.0 - resolution: "react@npm:16.14.0" +"react@npm:^18.3.1": + version: 18.3.1 + resolution: "react@npm:18.3.1" dependencies: loose-envify: "npm:^1.1.0" - object-assign: "npm:^4.1.1" - prop-types: "npm:^15.6.2" - checksum: 10c0/df8faae43e01387013900e8f8fb3c4ce9935b7edbcbaa77e12999c913eb958000a0a8750bf9a0886dae0ad768dd4a4ee983752d5bade8d840adbe0ce890a2438 + checksum: 10c0/283e8c5efcf37802c9d1ce767f302dd569dd97a70d9bb8c7be79a789b9902451e0d16334b05d73299b20f048cbc3c7d288bbbde10b701fa194e2089c237dbea3 languageName: node linkType: hard @@ -12477,12 +12453,12 @@ __metadata: languageName: node linkType: hard -"redux@npm:^4.0.4": - version: 4.1.0 - resolution: "redux@npm:4.1.0" +"redux@npm:^4.2.0": + version: 4.2.1 + resolution: "redux@npm:4.2.1" dependencies: "@babel/runtime": "npm:^7.9.2" - checksum: 10c0/e61546d7bdb4eccbf6cdca9f4515932b7f8851893075adc304dc830f586e8fcd0dfaf5a07609b05149f46091106ea2039f723632d5ea000beb75e0af7123dd0b + checksum: 10c0/136d98b3d5dbed1cd6279c8c18a6a74c416db98b8a432a46836bdd668475de6279a2d4fd9d1363f63904e00f0678a8a3e7fa532c897163340baf1e71bb42c742 languageName: node linkType: hard @@ -12943,13 +12919,12 @@ __metadata: languageName: node linkType: hard -"scheduler@npm:^0.19.1": - version: 0.19.1 - resolution: "scheduler@npm:0.19.1" +"scheduler@npm:^0.23.2": + version: 0.23.2 + resolution: "scheduler@npm:0.23.2" dependencies: loose-envify: "npm:^1.1.0" - object-assign: "npm:^4.1.1" - checksum: 10c0/9658932a73148a93d791c064b331d9690ddfecc4de25bcd6c9b89f5f1166e3d23d9c31c1595d66565e5ffbb34d47035cb14841aba6444bc266bfcd215cefe9c0 + checksum: 10c0/26383305e249651d4c58e6705d5f8425f153211aef95f15161c151f7b8de885f24751b377e4a0b3dd42cce09aad3f87a61dab7636859c0d89b7daf1a1e2a5c78 languageName: node linkType: hard @@ -14652,15 +14627,6 @@ __metadata: languageName: node linkType: hard -"uuid@npm:^3.3.2": - version: 3.4.0 - resolution: "uuid@npm:3.4.0" - bin: - uuid: ./bin/uuid - checksum: 10c0/1c13950df865c4f506ebfe0a24023571fa80edf2e62364297a537c80af09c618299797bbf2dbac6b1f8ae5ad182ba474b89db61e0e85839683991f7e08795347 - languageName: node - linkType: hard - "uuid@npm:^8.3.2": version: 8.3.2 resolution: "uuid@npm:8.3.2" @@ -14670,6 +14636,15 @@ __metadata: languageName: node linkType: hard +"uuid@npm:^9.0.0": + version: 9.0.1 + resolution: "uuid@npm:9.0.1" + bin: + uuid: dist/bin/uuid + checksum: 10c0/1607dd32ac7fc22f2d8f77051e6a64845c9bce5cd3dd8aa0070c074ec73e666a1f63c7b4e0f4bf2bc8b9d59dc85a15e17807446d9d2b17c8485fbc2147b27f9b + languageName: node + linkType: hard + "validate-npm-package-license@npm:^3.0.1": version: 3.0.4 resolution: "validate-npm-package-license@npm:3.0.4"