From 8f6adb13d43463e85fb040461010198e631c3d13 Mon Sep 17 00:00:00 2001 From: moonrailgun Date: Mon, 19 Sep 2022 19:51:07 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E5=8D=87=E7=BA=A7=E4=BE=9D?= =?UTF-8?q?=E8=B5=96:=20react18=E4=B8=8Ereact-router=20v6=20=E4=BB=A5?= =?UTF-8?q?=E5=8F=8A=E5=85=B6=E4=BB=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cli/package.json | 4 +- cli/src/app/App.tsx | 5 +- .../design/components/AutoFolder/index.tsx | 10 +- .../design/components/Highlight/index.tsx | 4 +- client/packages/design/package.json | 12 +- client/shared/cache/Provider.tsx | 32 +- .../shared/components/Portal/buildPortal.tsx | 12 +- client/shared/components/Provider.tsx | 4 +- client/shared/contexts/ChatBoxContext.tsx | 35 +- client/shared/contexts/ColorSchemeContext.tsx | 31 +- client/shared/contexts/GroupInfoContext.tsx | 10 +- client/shared/i18n/index.ts | 33 +- client/shared/i18n/language.ts | 5 +- client/shared/index.tsx | 1 + client/shared/model/group.ts | 2 +- client/shared/package.json | 17 +- client/web/package.json | 18 +- .../plugins/com.msgbyte.bbcode/package.json | 4 +- .../web/plugins/com.msgbyte.draw/package.json | 2 +- .../plugins/com.msgbyte.genshin/package.json | 2 +- .../src/MainPanel/useOpenAppList.ts | 6 +- client/web/src/App.tsx | 63 +- client/web/src/components/AvatarPicker.tsx | 4 +- client/web/src/components/AvatarUploader.tsx | 14 +- .../ChatBox/ChatInputBox/context.tsx | 4 +- .../src/components/CommonSidebarWrapper.tsx | 4 +- client/web/src/components/DevContainer.tsx | 4 +- client/web/src/components/ErrorBoundary.tsx | 4 +- client/web/src/components/FileSelector.tsx | 4 +- .../src/components/FullModal/CommonTitle.tsx | 4 +- client/web/src/components/FullModal/index.tsx | 11 +- client/web/src/components/GroupSection.tsx | 10 +- .../src/components/InviteCodeExpiredAt.tsx | 6 +- client/web/src/components/LanguageSelect.tsx | 3 +- client/web/src/components/Loading.tsx | 1 + client/web/src/components/LoadingOnFirst.tsx | 1 + client/web/src/components/Modal.tsx | 21 +- client/web/src/components/NotFound.tsx | 15 + .../src/components/Panel/common/Header.tsx | 4 +- .../src/components/Panel/common/Wrapper.tsx | 4 +- .../src/components/Panel/group/TextPanel.tsx | 4 +- .../src/components/Panel/group/Wrapper.tsx | 4 +- .../useQuickSwitcherActionContext.tsx | 11 +- client/web/src/components/SectionHeader.tsx | 6 +- client/web/src/components/SidebarView.tsx | 14 +- client/web/src/components/SplitPanel.tsx | 4 +- client/web/src/components/TcPopover.tsx | 2 +- .../src/components/UserProfileContainer.tsx | 63 +- .../components/modals/CreateDMConverse.tsx | 6 +- .../web/src/components/modals/CreateGroup.tsx | 6 +- .../GroupDetail/Panel/GroupPanelTree.tsx | 2 +- .../Panel/useGroupPanelTreeDrag.tsx | 11 +- .../modals/GroupDetail/Role/RoleItem.tsx | 12 +- .../components/modals/GroupDetail/index.tsx | 2 +- .../modals/SettingsView/Account.tsx | 6 +- .../components/modals/SettingsView/index.tsx | 2 +- client/web/src/context/SocketContext.tsx | 19 +- client/web/src/index.tsx | 9 +- client/web/src/plugin/common/index.ts | 2 +- client/web/src/routes/Entry/GuestView.tsx | 8 +- client/web/src/routes/Entry/LoginView.tsx | 10 +- client/web/src/routes/Entry/RegisterView.tsx | 8 +- client/web/src/routes/Entry/index.tsx | 20 +- client/web/src/routes/Entry/utils.ts | 9 +- client/web/src/routes/Invite/JoinBtn.tsx | 6 +- client/web/src/routes/Invite/SuccessModal.tsx | 7 +- client/web/src/routes/Invite/index.tsx | 2 +- .../Main/Content/Group/PanelRedirect.tsx | 12 +- .../src/routes/Main/Content/Group/Sidebar.tsx | 6 +- .../src/routes/Main/Content/Group/index.tsx | 16 +- .../Content/Group/useGroupHeaderAction.tsx | 8 +- .../src/routes/Main/Content/Group/utils.ts | 3 +- .../src/routes/Main/Content/PageContent.tsx | 141 +- .../Main/Content/Personal/Converse/index.tsx | 11 +- .../Content/Personal/Friends/FriendList.tsx | 6 +- .../routes/Main/Content/Personal/Sidebar.tsx | 10 +- .../routes/Main/Content/Personal/index.tsx | 24 +- client/web/src/routes/Main/Content/index.tsx | 15 +- client/web/src/routes/Main/Navbar/NavItem.tsx | 22 +- client/web/src/routes/Main/Provider.tsx | 13 +- client/web/src/routes/Main/SidebarContext.tsx | 37 +- client/web/src/routes/Panel/index.tsx | 42 +- client/web/tsconfig.json | 3 +- pnpm-lock.yaml | 1533 +++++++++-------- .../plugins/com.msgbyte.meeting/package.json | 4 +- .../com.msgbyte.simplenotify/package.json | 4 +- 86 files changed, 1449 insertions(+), 1146 deletions(-) create mode 100644 client/web/src/components/NotFound.tsx diff --git a/cli/package.json b/cli/package.json index 00ea85b2..ea0ef780 100644 --- a/cli/package.json +++ b/cli/package.json @@ -47,7 +47,7 @@ "p-series": "2.1.0", "plop": "^3.0.5", "pretty-ms": "7.0.1", - "react": "17.0.2", + "react": "18.2.0", "tailchat-server-sdk": "^0.0.12", "tailchat-shared": "workspace:*", "yargs": "^17.4.0" @@ -57,7 +57,7 @@ "@types/inquirer": "^8.2.1", "@types/lodash": "^4.14.170", "@types/node": "16.11.7", - "@types/react": "^17.0.39", + "@types/react": "18.0.20", "@types/yargs": "^17.0.10", "ts-node": "^10.7.0", "typescript": "^4.6.3" diff --git a/cli/src/app/App.tsx b/cli/src/app/App.tsx index 5e61b17b..9b09e275 100644 --- a/cli/src/app/App.tsx +++ b/cli/src/app/App.tsx @@ -31,12 +31,13 @@ export const App: React.FC = React.memo(() => { {}}> - + {/* 因为react版本问题暂时注释 */} + {/* Foo Bar - + */} diff --git a/client/packages/design/components/AutoFolder/index.tsx b/client/packages/design/components/AutoFolder/index.tsx index e191feb1..1d451142 100644 --- a/client/packages/design/components/AutoFolder/index.tsx +++ b/client/packages/design/components/AutoFolder/index.tsx @@ -1,6 +1,12 @@ -import React, { useEffect, useMemo, useRef, useState } from 'react'; +import React, { + PropsWithChildren, + useEffect, + useMemo, + useRef, + useState, +} from 'react'; -interface AutoFolderProps { +interface AutoFolderProps extends PropsWithChildren { maxHeight: number; showFullText?: React.ReactNode; backgroundColor?: string; diff --git a/client/packages/design/components/Highlight/index.tsx b/client/packages/design/components/Highlight/index.tsx index ce46cc78..64e62f3e 100644 --- a/client/packages/design/components/Highlight/index.tsx +++ b/client/packages/design/components/Highlight/index.tsx @@ -1,7 +1,7 @@ -import React from 'react'; +import React, { PropsWithChildren } from 'react'; import styles from './index.module.less'; -export const Highlight: React.FC = React.memo((props) => { +export const Highlight: React.FC = React.memo((props) => { return {props.children}; }); Highlight.displayName = 'Highlight'; diff --git a/client/packages/design/package.json b/client/packages/design/package.json index 0ea31e06..a793fd26 100644 --- a/client/packages/design/package.json +++ b/client/packages/design/package.json @@ -39,16 +39,16 @@ "@storybook/react": "^6.4.22", "@storybook/testing-library": "^0.0.11", "@types/lodash": "^4.14.170", - "@types/react": "^17.0.39", - "@types/react-dom": "^17.0.8", + "@types/react": "18.0.20", + "@types/react-dom": "18.0.6", "babel-loader": "^8.2.5", - "react": "17.0.2", - "react-dom": "17.0.2", + "react": "18.2.0", + "react-dom": "18.2.0", "typescript": "^4.5.2", "webpack": "^5.72.0" }, "peerDependencies": { - "react": "17.0.2", - "react-dom": "17.0.2" + "react": "18.2.0", + "react-dom": "18.2.0" } } diff --git a/client/shared/cache/Provider.tsx b/client/shared/cache/Provider.tsx index 9230362a..3c11ec26 100644 --- a/client/shared/cache/Provider.tsx +++ b/client/shared/cache/Provider.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { PropsWithChildren } from 'react'; import { QueryClientProvider } from '@tanstack/react-query'; import { ReactQueryDevtools } from '@tanstack/react-query-devtools'; import { isDevelopment } from '../utils/environment'; @@ -7,19 +7,21 @@ import { queryClient } from './'; /** * 缓存上下文 */ -export const CacheProvider: React.FC = React.memo((props) => { - return ( - - {props.children} +export const CacheProvider: React.FC = React.memo( + (props) => { + return ( + + {props.children} - {/* TODO: 待放到web上 */} - {isDevelopment && ( - - )} - - ); -}); + {/* TODO: 待放到web上 */} + {isDevelopment && ( + + )} + + ); + } +); CacheProvider.displayName = 'CacheProvider'; diff --git a/client/shared/components/Portal/buildPortal.tsx b/client/shared/components/Portal/buildPortal.tsx index 747ceb2c..e771e4e4 100644 --- a/client/shared/components/Portal/buildPortal.tsx +++ b/client/shared/components/Portal/buildPortal.tsx @@ -1,4 +1,10 @@ -import React, { useCallback, useRef, Fragment, useContext } from 'react'; +import React, { + useCallback, + useRef, + Fragment, + useContext, + PropsWithChildren, +} from 'react'; import { useEffect } from 'react'; import { PortalManager } from './Manager'; import { createPortalContext } from './context'; @@ -64,7 +70,7 @@ export function buildPortal(options: BuildPortalOptions) { const PortalContext = createPortalContext(hostName); - const PortalHost = React.memo((props) => { + const PortalHost: React.FC = React.memo((props) => { const managerRef = useRef(); const nextKeyRef = useRef(0); const queueRef = useRef([]); @@ -180,7 +186,7 @@ export function buildPortal(options: BuildPortalOptions) { }); PortalHost.displayName = 'PortalHost-' + hostName; - const PortalRender = React.memo((props) => { + const PortalRender: React.FC = React.memo((props) => { const manager = useContext(PortalContext); if (_isNil(manager)) { diff --git a/client/shared/components/Provider.tsx b/client/shared/components/Provider.tsx index 6d52e783..70a06037 100644 --- a/client/shared/components/Provider.tsx +++ b/client/shared/components/Provider.tsx @@ -1,8 +1,8 @@ -import React from 'react'; +import React, { PropsWithChildren } from 'react'; import { CacheProvider } from '../cache/Provider'; import { ColorSchemeContextProvider } from '../contexts/ColorSchemeContext'; -export const TcProvider: React.FC = React.memo((props) => { +export const TcProvider: React.FC = React.memo((props) => { return ( {props.children} diff --git a/client/shared/contexts/ChatBoxContext.tsx b/client/shared/contexts/ChatBoxContext.tsx index a5403734..4c662943 100644 --- a/client/shared/contexts/ChatBoxContext.tsx +++ b/client/shared/contexts/ChatBoxContext.tsx @@ -1,4 +1,9 @@ -import React, { useCallback, useContext, useState } from 'react'; +import React, { + PropsWithChildren, + useCallback, + useContext, + useState, +} from 'react'; import _noop from 'lodash/noop'; import type { ReplyMsgType } from '../utils/message-helper'; @@ -16,20 +21,22 @@ const ChatBoxContext = React.createContext({ }); ChatBoxContext.displayName = 'ChatBoxContext'; -export const ChatBoxContextProvider: React.FC = React.memo((props) => { - const [replyMsg, setReplyMsg] = useState(null); +export const ChatBoxContextProvider: React.FC = React.memo( + (props) => { + const [replyMsg, setReplyMsg] = useState(null); - return ( - - {props.children} - - ); -}); + return ( + + {props.children} + + ); + } +); ChatBoxContextProvider.displayName = 'ChatBoxContextProvider'; export function useChatBoxContext(): ChatBoxContextProps & { diff --git a/client/shared/contexts/ColorSchemeContext.tsx b/client/shared/contexts/ColorSchemeContext.tsx index 0c53e03a..eaac91a6 100644 --- a/client/shared/contexts/ColorSchemeContext.tsx +++ b/client/shared/contexts/ColorSchemeContext.tsx @@ -1,4 +1,4 @@ -import React, { useContext, useEffect } from 'react'; +import React, { PropsWithChildren, useContext, useEffect } from 'react'; import { parseColorScheme } from '../utils/color-scheme-helper'; import { sharedEvent } from '../event'; import { useStorage } from '../manager/storage'; @@ -15,22 +15,23 @@ const ColorSchemeContext = React.createContext<{ }); ColorSchemeContext.displayName = 'ColorSchemeContext'; -export const ColorSchemeContextProvider: React.FC = React.memo((props) => { - const [colorScheme = 'dark', { save: setColorScheme }] = useStorage( - 'colorScheme', - 'dark' - ); +export const ColorSchemeContextProvider: React.FC = + React.memo((props) => { + const [colorScheme = 'dark', { save: setColorScheme }] = useStorage( + 'colorScheme', + 'dark' + ); - useEffect(() => { - sharedEvent.emit('loadColorScheme', colorScheme); - }, [colorScheme]); + useEffect(() => { + sharedEvent.emit('loadColorScheme', colorScheme); + }, [colorScheme]); - return ( - - {props.children} - - ); -}); + return ( + + {props.children} + + ); + }); ColorSchemeContextProvider.displayName = 'ColorSchemeContextProvider'; export function useColorScheme() { diff --git a/client/shared/contexts/GroupInfoContext.tsx b/client/shared/contexts/GroupInfoContext.tsx index c1b112fd..571eb80f 100644 --- a/client/shared/contexts/GroupInfoContext.tsx +++ b/client/shared/contexts/GroupInfoContext.tsx @@ -1,4 +1,4 @@ -import React, { useContext } from 'react'; +import React, { PropsWithChildren, useContext } from 'react'; import type { GroupInfo } from '..'; /** @@ -13,9 +13,11 @@ const GroupInfoContext = React.createContext({ }); GroupInfoContext.displayName = 'GroupInfoContext'; -export const GroupInfoContextProvider: React.FC<{ - groupInfo: GroupInfo; -}> = React.memo((props) => { +export const GroupInfoContextProvider: React.FC< + PropsWithChildren<{ + groupInfo: GroupInfo; + }> +> = React.memo((props) => { return ( (key: TKeys): string; + < + TResult extends TFunctionResult = string, + TKeys extends TFunctionKeys = string, + TInterpolationMap extends object = StringMap + >( + key: TKeys, + options?: TOptions | string + ): TResult; + // overloaded usage + < + TResult extends TFunctionResult = string, + TKeys extends TFunctionKeys = string, + TInterpolationMap extends object = StringMap + >( + key: TKeys, + defaultValue?: string, + options?: TOptions | string + ): TResult; +} + /** * 国际化翻译 */ diff --git a/client/shared/i18n/language.ts b/client/shared/i18n/language.ts index 9a2e5d24..b4c4d4c7 100644 --- a/client/shared/i18n/language.ts +++ b/client/shared/i18n/language.ts @@ -18,7 +18,10 @@ async function getLanguage(): Promise { * 当前语言管理hook */ export function useLanguage() { - const [language, { save }] = useStorage(LANGUAGE_KEY, defaultLanguage); + const [language, { save }] = useStorage( + LANGUAGE_KEY, + defaultLanguage + ); const originLanguageRef = useRef(); diff --git a/client/shared/index.tsx b/client/shared/index.tsx index 5a840881..acae8170 100644 --- a/client/shared/index.tsx +++ b/client/shared/index.tsx @@ -43,6 +43,7 @@ export { getLanguage, useTranslation, } from './i18n'; +export type { AllowedLanguage } from './i18n'; export { Trans } from './i18n/Trans'; export { useLanguage } from './i18n/language'; diff --git a/client/shared/model/group.ts b/client/shared/model/group.ts index 2a6987f4..82be7091 100644 --- a/client/shared/model/group.ts +++ b/client/shared/model/group.ts @@ -69,7 +69,7 @@ export interface GroupBasicInfo { name: string; avatar?: string; owner: string; - memberCount: GroupMember[]; + memberCount: number; } export interface GroupInvite { diff --git a/client/shared/package.json b/client/shared/package.json index 1a8cab31..8b493054 100644 --- a/client/shared/package.json +++ b/client/shared/package.json @@ -17,12 +17,12 @@ "filesize": "^8.0.7", "flatted": "^3.2.4", "formik": "^2.2.9", - "i18next": "^20.3.2", - "i18next-http-backend": "^1.2.6", + "i18next": "^21.9.2", + "i18next-http-backend": "^1.4.1", "lodash": "^4.17.21", - "react-i18next": "^11.15.1", + "react-i18next": "^11.18.6", "react-native-storage": "npm:@trpgengine/react-native-storage@^1.0.1", - "react-redux": "^7.2.6", + "react-redux": "^8.0.2", "regenerator-runtime": "^0.13.9", "socket.io-client": "^4.1.2", "url-regex": "^5.0.0", @@ -31,12 +31,11 @@ "devDependencies": { "@types/crc": "^3.4.0", "@types/lodash": "^4.14.170", - "@types/react": "^17.0.39", - "@types/react-redux": "^7.1.24", - "react": "17.0.2" + "@types/react": "18.0.20", + "react": "18.2.0" }, "peerDependencies": { - "react": "17.0.2", - "react-dom": "17.0.2" + "react": "18.2.0", + "react-dom": "18.2.0" } } diff --git a/client/web/package.json b/client/web/package.json index deee03ae..5322f028 100644 --- a/client/web/package.json +++ b/client/web/package.json @@ -42,14 +42,14 @@ "p-min-delay": "^4.0.0", "qs": "^6.10.3", "rc-tree": "^5.3.6", - "react": "17.0.2", - "react-dom": "17.0.2", + "react": "18.2.0", + "react-dom": "18.2.0", "react-easy-crop": "^3.5.2", "react-helmet": "^6.1.0", "react-markdown": "6", "react-mentions": "^4.3.1", - "react-router": "^5.2.0", - "react-router-dom": "^5.2.0", + "react-router": "^6.4.0", + "react-router-dom": "^6.4.0", "react-split": "^2.0.14", "react-transition-group": "^4.4.2", "react-use-gesture": "^9.1.3", @@ -72,19 +72,19 @@ "@types/emoji-mart": "^3.0.8", "@types/fs-extra": "^9.0.13", "@types/is-hotkey": "^0.1.5", - "@types/jest": "^27.0.3", + "@types/jest": "^29.0.3", "@types/loadable__component": "^5.13.4", "@types/lodash": "^4.14.170", "@types/mini-css-extract-plugin": "^1.4.3", "@types/minimatch": "^3.0.5", "@types/node": "^15.12.5", "@types/qs": "^6.9.7", - "@types/react": "^17.0.39", - "@types/react-dom": "^17.0.8", + "@types/react": "18.0.20", + "@types/react-dom": "18.0.6", "@types/react-helmet": "^6.1.2", "@types/react-mentions": "^4.1.5", - "@types/react-router": "^5.1.15", - "@types/react-router-dom": "^5.1.7", + "@types/react-router": "^5.1.19", + "@types/react-router-dom": "^5.3.3", "@types/react-transition-group": "^4.4.2", "@types/react-virtualized": "^9.21.14", "@types/react-virtualized-auto-sizer": "^1.0.1", diff --git a/client/web/plugins/com.msgbyte.bbcode/package.json b/client/web/plugins/com.msgbyte.bbcode/package.json index 7acbb658..3d888dd5 100644 --- a/client/web/plugins/com.msgbyte.bbcode/package.json +++ b/client/web/plugins/com.msgbyte.bbcode/package.json @@ -11,7 +11,7 @@ }, "devDependencies": { "@types/react-highlight": "^0.12.5", - "react": "17.0.2", - "react-dom": "17.0.2" + "react": "18.2.0", + "react-dom": "18.2.0" } } diff --git a/client/web/plugins/com.msgbyte.draw/package.json b/client/web/plugins/com.msgbyte.draw/package.json index 0a319d4b..f82c4d28 100644 --- a/client/web/plugins/com.msgbyte.draw/package.json +++ b/client/web/plugins/com.msgbyte.draw/package.json @@ -8,6 +8,6 @@ }, "devDependencies": { "@types/react-canvas-draw": "^1.1.1", - "react": "17.0.2" + "react": "18.2.0" } } diff --git a/client/web/plugins/com.msgbyte.genshin/package.json b/client/web/plugins/com.msgbyte.genshin/package.json index ee4be083..6c061acd 100644 --- a/client/web/plugins/com.msgbyte.genshin/package.json +++ b/client/web/plugins/com.msgbyte.genshin/package.json @@ -8,6 +8,6 @@ "html-react-parser": "^1.4.5" }, "devDependencies": { - "react": "17.0.2" + "react": "18.2.0" } } diff --git a/client/web/plugins/com.msgbyte.openapi/src/MainPanel/useOpenAppList.ts b/client/web/plugins/com.msgbyte.openapi/src/MainPanel/useOpenAppList.ts index b7d83415..d8afec1f 100644 --- a/client/web/plugins/com.msgbyte.openapi/src/MainPanel/useOpenAppList.ts +++ b/client/web/plugins/com.msgbyte.openapi/src/MainPanel/useOpenAppList.ts @@ -2,7 +2,7 @@ import { postRequest, appendUrlSearch, useAsyncRefresh, - useHistory, + useLocation, urlSearchParse, isValidStr, } from '@capital/common'; @@ -24,11 +24,11 @@ export function useOpenAppList() { return data ?? []; }, []); - const history = useHistory(); + const location = useLocation(); useEffect(() => { // 仅初始化的时候才处理 - const { appId } = urlSearchParse(history.location.search, { + const { appId } = urlSearchParse(location.search, { ignoreQueryPrefix: true, }); diff --git a/client/web/src/App.tsx b/client/web/src/App.tsx index e420ffb3..8db41972 100644 --- a/client/web/src/App.tsx +++ b/client/web/src/App.tsx @@ -1,10 +1,10 @@ -import React, { Suspense } from 'react'; +import React, { PropsWithChildren, Suspense } from 'react'; import { BrowserRouter, HashRouter, - Redirect, + Navigate, Route, - Switch, + Routes, } from 'react-router-dom'; import { TcProvider, useColorScheme, useLanguage } from 'tailchat-shared'; import clsx from 'clsx'; @@ -28,7 +28,7 @@ const PanelRoute = Loadable(() => import('./routes/Panel')); const InviteRoute = Loadable(() => import('./routes/Invite')); -const AppProvider: React.FC = React.memo((props) => { +const AppProvider: React.FC = React.memo((props) => { return ( }> @@ -43,7 +43,7 @@ const AppProvider: React.FC = React.memo((props) => { }); AppProvider.displayName = 'AppProvider'; -const AppContainer: React.FC = React.memo((props) => { +const AppContainer: React.FC = React.memo((props) => { const { isDarkMode, extraSchemeName } = useColorScheme(); return ( @@ -83,29 +83,36 @@ export const App: React.FC = React.memo(() => { - - - - - - - - - - - - {/* NOTICE: Switch里不能出现动态路由 */} - {pluginRootRoute.map((r, i) => ( - - ))} - - - - + + + + + } + /> + } /> + } /> + } /> + + {pluginRootRoute.map((r, i) => ( + // NOTICE: Switch里不能出现动态路由 + + ))} + + } + /> + + } /> + ); diff --git a/client/web/src/components/AvatarPicker.tsx b/client/web/src/components/AvatarPicker.tsx index e8bfa61b..45ef20cf 100644 --- a/client/web/src/components/AvatarPicker.tsx +++ b/client/web/src/components/AvatarPicker.tsx @@ -1,4 +1,4 @@ -import React, { useRef, useState } from 'react'; +import React, { PropsWithChildren, useRef, useState } from 'react'; import { closeModal, openModal } from './Modal'; import { showToasts, t } from 'tailchat-shared'; import { Avatar } from 'antd'; @@ -6,7 +6,7 @@ import { Icon } from '@/components/Icon'; import { ModalAvatarCropper } from './modals/AvatarCropper'; import { isGIF } from '@/utils/file-helper'; -interface AvatarPickerProps { +interface AvatarPickerProps extends PropsWithChildren { className?: string; imageUrl?: string; // 初始image url, 仅children为空时生效 onChange?: (blobUrl: string) => void; diff --git a/client/web/src/components/AvatarUploader.tsx b/client/web/src/components/AvatarUploader.tsx index cdf83a96..24cdb622 100644 --- a/client/web/src/components/AvatarUploader.tsx +++ b/client/web/src/components/AvatarUploader.tsx @@ -1,15 +1,17 @@ import { blobUrlToFile } from '@/utils/file-helper'; import { Icon } from '@/components/Icon'; import clsx from 'clsx'; -import React, { useState } from 'react'; +import React, { PropsWithChildren, useState } from 'react'; import { uploadFile, UploadFileResult, useAsyncRequest } from 'tailchat-shared'; import { AvatarPicker } from './AvatarPicker'; -export const AvatarUploader: React.FC<{ - circle?: boolean; - className?: string; - onUploadSuccess: (fileInfo: UploadFileResult) => void; -}> = React.memo((props) => { +export const AvatarUploader: React.FC< + PropsWithChildren<{ + circle?: boolean; + className?: string; + onUploadSuccess: (fileInfo: UploadFileResult) => void; + }> +> = React.memo((props) => { const [uploadProgress, setUploadProgress] = useState(0); // 0 - 100 const [{ loading }, handlePickImage] = useAsyncRequest( async (blobUrl: string) => { diff --git a/client/web/src/components/ChatBox/ChatInputBox/context.tsx b/client/web/src/components/ChatBox/ChatInputBox/context.tsx index 65f75de8..c7220a4d 100644 --- a/client/web/src/components/ChatBox/ChatInputBox/context.tsx +++ b/client/web/src/components/ChatBox/ChatInputBox/context.tsx @@ -1,4 +1,4 @@ -import React, { useContext } from 'react'; +import React, { PropsWithChildren, useContext } from 'react'; import type { SuggestionDataItem } from 'react-mentions'; import { useShallowObject } from 'tailchat-shared'; @@ -22,7 +22,7 @@ export function useChatInputActionContext() { /** * Input Mentions */ -interface ChatInputMentionsContextProps { +interface ChatInputMentionsContextProps extends PropsWithChildren { users: SuggestionDataItem[]; placeholder?: string; disabled?: boolean; diff --git a/client/web/src/components/CommonSidebarWrapper.tsx b/client/web/src/components/CommonSidebarWrapper.tsx index 819b5866..ac53f281 100644 --- a/client/web/src/components/CommonSidebarWrapper.tsx +++ b/client/web/src/components/CommonSidebarWrapper.tsx @@ -1,6 +1,6 @@ -import React from 'react'; +import React, { PropsWithChildren } from 'react'; -interface CommonSidebarProps { +interface CommonSidebarProps extends PropsWithChildren { ['data-tc-role']?: string; } export const CommonSidebarWrapper: React.FC = React.memo( diff --git a/client/web/src/components/DevContainer.tsx b/client/web/src/components/DevContainer.tsx index 12efe5ec..c1ee06d7 100644 --- a/client/web/src/components/DevContainer.tsx +++ b/client/web/src/components/DevContainer.tsx @@ -1,11 +1,11 @@ -import React, { Fragment } from 'react'; +import React, { Fragment, PropsWithChildren } from 'react'; import { isDevelopment } from 'tailchat-shared'; /** * 开发中容器 * 在容器下的组件在生产环境下不会被渲染 */ -export const DevContainer: React.FC = React.memo((props) => { +export const DevContainer: React.FC = React.memo((props) => { return isDevelopment ? {props.children} : null; }); DevContainer.displayName = 'DevContainer'; diff --git a/client/web/src/components/ErrorBoundary.tsx b/client/web/src/components/ErrorBoundary.tsx index e77fe406..e313bb14 100644 --- a/client/web/src/components/ErrorBoundary.tsx +++ b/client/web/src/components/ErrorBoundary.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { PropsWithChildren } from 'react'; import { t } from 'tailchat-shared'; import { Problem } from './Problem'; @@ -8,7 +8,7 @@ interface ErrorBoundaryProps { } export class ErrorBoundary extends React.Component< - ErrorBoundaryProps, + PropsWithChildren, { error?: Error | null; info: { diff --git a/client/web/src/components/FileSelector.tsx b/client/web/src/components/FileSelector.tsx index 20b292bc..4283a8d9 100644 --- a/client/web/src/components/FileSelector.tsx +++ b/client/web/src/components/FileSelector.tsx @@ -1,4 +1,4 @@ -import React, { useCallback, useRef } from 'react'; +import React, { PropsWithChildren, useCallback, useRef } from 'react'; import _isFunction from 'lodash/isFunction'; import _isNil from 'lodash/isNil'; @@ -6,7 +6,7 @@ import _isNil from 'lodash/isNil'; * 文件选择器 */ -interface FileSelectorProps { +interface FileSelectorProps extends PropsWithChildren { fileProps?: React.DetailedHTMLProps< React.InputHTMLAttributes, HTMLInputElement diff --git a/client/web/src/components/FullModal/CommonTitle.tsx b/client/web/src/components/FullModal/CommonTitle.tsx index 57992669..e84c78e2 100644 --- a/client/web/src/components/FullModal/CommonTitle.tsx +++ b/client/web/src/components/FullModal/CommonTitle.tsx @@ -1,6 +1,6 @@ -import React from 'react'; +import React, { PropsWithChildren } from 'react'; -interface FullModalCommonTitleProps { +interface FullModalCommonTitleProps extends PropsWithChildren { extra?: React.ReactNode; } export const FullModalCommonTitle: React.FC = diff --git a/client/web/src/components/FullModal/index.tsx b/client/web/src/components/FullModal/index.tsx index bfee2d22..12f709c5 100644 --- a/client/web/src/components/FullModal/index.tsx +++ b/client/web/src/components/FullModal/index.tsx @@ -1,12 +1,17 @@ -import React, { useCallback, useEffect, useRef } from 'react'; +import React, { + PropsWithChildren, + useCallback, + useEffect, + useRef, +} from 'react'; import _isFunction from 'lodash/isFunction'; -import { Icon } from '@/components/Icon'; +import { Icon } from 'tailchat-design'; import clsx from 'clsx'; /** * 全屏模态框 */ -interface FullModalProps { +interface FullModalProps extends PropsWithChildren { visible?: boolean; onChangeVisible?: (visible: boolean) => void; } diff --git a/client/web/src/components/GroupSection.tsx b/client/web/src/components/GroupSection.tsx index 67474b17..fa4828cd 100644 --- a/client/web/src/components/GroupSection.tsx +++ b/client/web/src/components/GroupSection.tsx @@ -1,10 +1,12 @@ import { Icon } from '@/components/Icon'; -import React from 'react'; +import React, { PropsWithChildren } from 'react'; import { useReducer } from 'react'; -export const GroupSection: React.FC<{ - header: string; -}> = React.memo((props) => { +export const GroupSection: React.FC< + PropsWithChildren<{ + header: string; + }> +> = React.memo((props) => { const [isShow, switchShow] = useReducer((v) => !v, true); return ( diff --git a/client/web/src/components/InviteCodeExpiredAt.tsx b/client/web/src/components/InviteCodeExpiredAt.tsx index 8834926d..ee786e07 100644 --- a/client/web/src/components/InviteCodeExpiredAt.tsx +++ b/client/web/src/components/InviteCodeExpiredAt.tsx @@ -16,11 +16,11 @@ export const InviteCodeExpiredAt: React.FC = const { invite } = props; if (!invite.expiredAt) { - return t('该邀请码永不过期'); + return {t('该邀请码永不过期')}; } if (new Date(invite.expiredAt).valueOf() < Date.now()) { - return t('该邀请码已过期'); + return {t('该邀请码已过期')}; } return ( @@ -28,7 +28,7 @@ export const InviteCodeExpiredAt: React.FC = 该邀请将于{' '} - {{ date: datetimeFromNow(invite.expiredAt) }} + {{ date: datetimeFromNow(invite.expiredAt) } as any} {' '} 过期 diff --git a/client/web/src/components/LanguageSelect.tsx b/client/web/src/components/LanguageSelect.tsx index a4c17284..521b4f77 100644 --- a/client/web/src/components/LanguageSelect.tsx +++ b/client/web/src/components/LanguageSelect.tsx @@ -1,6 +1,7 @@ import { Select, SelectProps } from 'antd'; import React, { useCallback } from 'react'; import { showToasts, t, useLanguage } from 'tailchat-shared'; +import type { AllowedLanguage } from 'tailchat-shared'; type LanguageSelectProps = Omit; @@ -12,7 +13,7 @@ export const LanguageSelect: React.FC = React.memo( const { language, setLanguage } = useLanguage(); const handleChangeLanguage = useCallback( - (newLang: string) => { + (newLang: AllowedLanguage) => { showToasts(t('刷新页面后生效'), 'info'); setLanguage(newLang); }, diff --git a/client/web/src/components/Loading.tsx b/client/web/src/components/Loading.tsx index 5ca5392a..7f6c2816 100644 --- a/client/web/src/components/Loading.tsx +++ b/client/web/src/components/Loading.tsx @@ -6,6 +6,7 @@ export interface LoadingProps { spinning: boolean; className?: string; style?: React.CSSProperties; + children?: React.ReactNode; } export const Loading: React.FC = React.memo((props) => { const { spinning = false, className, style } = props; diff --git a/client/web/src/components/LoadingOnFirst.tsx b/client/web/src/components/LoadingOnFirst.tsx index 0ad184fd..a847220e 100644 --- a/client/web/src/components/LoadingOnFirst.tsx +++ b/client/web/src/components/LoadingOnFirst.tsx @@ -5,6 +5,7 @@ interface LoadingOnFirstProps extends LoadingProps { spinning: boolean; className?: string; style?: React.CSSProperties; + children?: React.ReactNode; } /** * 类似于 但是只会触发一次 diff --git a/client/web/src/components/Modal.tsx b/client/web/src/components/Modal.tsx index 3745ce58..5608a4e0 100644 --- a/client/web/src/components/Modal.tsx +++ b/client/web/src/components/Modal.tsx @@ -1,4 +1,9 @@ -import React, { useCallback, useContext, useState } from 'react'; +import React, { + PropsWithChildren, + useCallback, + useContext, + useState, +} from 'react'; import _isFunction from 'lodash/isFunction'; import _isNil from 'lodash/isNil'; import _last from 'lodash/last'; @@ -30,7 +35,7 @@ const ModalContext = React.createContext<{ closeModal: _noop, }); -interface ModalProps { +interface ModalProps extends PropsWithChildren { visible?: boolean; onChangeVisible?: (visible: boolean) => void; @@ -241,11 +246,13 @@ export function useModalContext() { /** * 标准模态框包装器 */ -export const ModalWrapper: React.FC<{ - title?: string; - className?: string; - style?: React.CSSProperties; -}> = React.memo((props) => { +export const ModalWrapper: React.FC< + PropsWithChildren<{ + title?: string; + className?: string; + style?: React.CSSProperties; + }> +> = React.memo((props) => { const isMobile = useIsMobile(); const title = _isString(props.title) ? ( diff --git a/client/web/src/components/NotFound.tsx b/client/web/src/components/NotFound.tsx new file mode 100644 index 00000000..fcf6df11 --- /dev/null +++ b/client/web/src/components/NotFound.tsx @@ -0,0 +1,15 @@ +import React from 'react'; +import { Empty } from 'antd'; +import { t } from 'tailchat-shared'; + +interface NotFoundProps { + message?: string; +} + +/** + * 没有数据或没找到数据 + */ +export const NotFound: React.FC = React.memo((props) => { + return ; +}); +NotFound.displayName = 'NotFound'; diff --git a/client/web/src/components/Panel/common/Header.tsx b/client/web/src/components/Panel/common/Header.tsx index 533091dc..690d2f8e 100644 --- a/client/web/src/components/Panel/common/Header.tsx +++ b/client/web/src/components/Panel/common/Header.tsx @@ -1,8 +1,8 @@ import { SectionHeader } from '@/components/SectionHeader'; import { Space } from 'antd'; -import React from 'react'; +import React, { PropsWithChildren } from 'react'; -interface PanelCommonHeaderProps { +interface PanelCommonHeaderProps extends PropsWithChildren { prefix?: React.ReactNode; suffix?: React.ReactNode; actions?: React.ReactNode[]; diff --git a/client/web/src/components/Panel/common/Wrapper.tsx b/client/web/src/components/Panel/common/Wrapper.tsx index fef2b209..a27c44c4 100644 --- a/client/web/src/components/Panel/common/Wrapper.tsx +++ b/client/web/src/components/Panel/common/Wrapper.tsx @@ -1,4 +1,4 @@ -import React, { useState } from 'react'; +import React, { PropsWithChildren, useState } from 'react'; import { PanelCommonHeader } from '../common/Header'; import clsx from 'clsx'; import { useIsMobile } from '@/hooks/useIsMobile'; @@ -12,7 +12,7 @@ interface RightPanelType { /** * 面板通用包装器 */ -interface CommonPanelWrapperProps { +interface CommonPanelWrapperProps extends PropsWithChildren { header: React.ReactNode; actions?: ( setRightPanel: (info: RightPanelType) => void diff --git a/client/web/src/components/Panel/group/TextPanel.tsx b/client/web/src/components/Panel/group/TextPanel.tsx index 8ecda401..660f739b 100644 --- a/client/web/src/components/Panel/group/TextPanel.tsx +++ b/client/web/src/components/Panel/group/TextPanel.tsx @@ -29,11 +29,11 @@ function useChatInputInfo(groupId: string) { if (muteUntil) { setPlaceholder( muteUntil - ? t('禁言中, 还剩 {{remain}}', { + ? (t('禁言中, 还剩 {{remain}}', { remain: humanizeMsDuration( new Date().valueOf() - new Date(muteUntil).valueOf() ), - }) + }) as string) : undefined ); } else { diff --git a/client/web/src/components/Panel/group/Wrapper.tsx b/client/web/src/components/Panel/group/Wrapper.tsx index 030ccc0b..1cca8835 100644 --- a/client/web/src/components/Panel/group/Wrapper.tsx +++ b/client/web/src/components/Panel/group/Wrapper.tsx @@ -1,4 +1,4 @@ -import React, { useEffect } from 'react'; +import React, { PropsWithChildren, useEffect } from 'react'; import { t, useGroupPanelInfo } from 'tailchat-shared'; import _isNil from 'lodash/isNil'; import { MembersPanel } from './MembersPanel'; @@ -31,7 +31,7 @@ function useRecordGroupPanel(groupId: string, panelId: string) { /** * 群组面板通用包装器 */ -interface GroupPanelWrapperProps { +interface GroupPanelWrapperProps extends PropsWithChildren { groupId: string; panelId: string; diff --git a/client/web/src/components/QuickSwitcher/useQuickSwitcherActionContext.tsx b/client/web/src/components/QuickSwitcher/useQuickSwitcherActionContext.tsx index 408f53ab..40c50c2c 100644 --- a/client/web/src/components/QuickSwitcher/useQuickSwitcherActionContext.tsx +++ b/client/web/src/components/QuickSwitcher/useQuickSwitcherActionContext.tsx @@ -1,17 +1,16 @@ -import { useHistory } from 'react-router'; +import { NavigateOptions, To, useNavigate } from 'react-router'; export interface QuickActionContext { - navigate: (url: string) => void; + navigate: (to: To, options?: NavigateOptions) => void; } /** * 快速切换操作上下文信息 */ export function useQuickSwitcherActionContext(): QuickActionContext { - const history = useHistory(); + const navigate = useNavigate(); + return { - navigate: (url) => { - history.push(url); - }, + navigate, }; } diff --git a/client/web/src/components/SectionHeader.tsx b/client/web/src/components/SectionHeader.tsx index ae6f3704..a699fc61 100644 --- a/client/web/src/components/SectionHeader.tsx +++ b/client/web/src/components/SectionHeader.tsx @@ -1,9 +1,9 @@ -import React, { useState } from 'react'; +import React, { PropsWithChildren, useState } from 'react'; import { Dropdown } from 'antd'; -import { Icon } from '@/components/Icon'; +import { Icon } from 'tailchat-design'; import clsx from 'clsx'; -interface SectionHeaderProps { +interface SectionHeaderProps extends PropsWithChildren { menu?: React.ReactElement; 'data-testid'?: string; } diff --git a/client/web/src/components/SidebarView.tsx b/client/web/src/components/SidebarView.tsx index 263774ad..a80d748e 100644 --- a/client/web/src/components/SidebarView.tsx +++ b/client/web/src/components/SidebarView.tsx @@ -1,4 +1,4 @@ -import React, { useState, useContext } from 'react'; +import React, { useState, useContext, PropsWithChildren } from 'react'; import _get from 'lodash/get'; import { DevContainer } from './DevContainer'; import clsx from 'clsx'; @@ -26,11 +26,13 @@ interface SidebarViewLinkType { isDanger?: boolean; } -const SidebarViewMenuItemTitle: React.FC<{ - active?: boolean; - isDanger?: boolean; - onClick: () => void; -}> = (props) => ( +const SidebarViewMenuItemTitle: React.FC< + PropsWithChildren<{ + active?: boolean; + isDanger?: boolean; + onClick: () => void; + }> +> = (props) => (
= React.memo((props) => { diff --git a/client/web/src/components/TcPopover.tsx b/client/web/src/components/TcPopover.tsx index 1ab5e3e7..a6a28042 100644 --- a/client/web/src/components/TcPopover.tsx +++ b/client/web/src/components/TcPopover.tsx @@ -14,7 +14,7 @@ export const TcPopover: React.FC = React.memo((props) => { const [visible, setVisible] = useState(false); const handleVisibleChange = useCallback( - (v) => { + (v: boolean) => { setVisible(v); typeof props.onVisibleChange === 'function' && props.onVisibleChange(v); diff --git a/client/web/src/components/UserProfileContainer.tsx b/client/web/src/components/UserProfileContainer.tsx index 20c2dd5b..f8d06e13 100644 --- a/client/web/src/components/UserProfileContainer.tsx +++ b/client/web/src/components/UserProfileContainer.tsx @@ -1,42 +1,43 @@ import { fetchImagePrimaryColor } from '@/utils/image-helper'; -import React from 'react'; +import React, { PropsWithChildren } from 'react'; import { AvatarWithPreview, getTextColorHex } from 'tailchat-design'; import { useAsync, UserBaseInfo } from 'tailchat-shared'; /** * 用户信息容器 */ -export const UserProfileContainer: React.FC<{ userInfo: UserBaseInfo }> = - React.memo((props) => { - const { userInfo } = props; - const { value: bannerColor } = useAsync(async () => { - if (!userInfo.avatar) { - return getTextColorHex(userInfo.nickname); - } +export const UserProfileContainer: React.FC< + PropsWithChildren<{ userInfo: UserBaseInfo }> +> = React.memo((props) => { + const { userInfo } = props; + const { value: bannerColor } = useAsync(async () => { + if (!userInfo.avatar) { + return getTextColorHex(userInfo.nickname); + } - const rgba = await fetchImagePrimaryColor(userInfo.avatar); - return `rgba(${rgba.r}, ${rgba.g}, ${rgba.b}, ${rgba.a})`; - }, [userInfo.avatar]); - return ( -
-
- -
- -
+ const rgba = await fetchImagePrimaryColor(userInfo.avatar); + return `rgba(${rgba.r}, ${rgba.g}, ${rgba.b}, ${rgba.a})`; + }, [userInfo.avatar]); + return ( +
+
-
{props.children}
+
+
- ); - }); + +
{props.children}
+
+ ); +}); UserProfileContainer.displayName = 'UserProfileContainer'; diff --git a/client/web/src/components/modals/CreateDMConverse.tsx b/client/web/src/components/modals/CreateDMConverse.tsx index 228749bd..17ab1a25 100644 --- a/client/web/src/components/modals/CreateDMConverse.tsx +++ b/client/web/src/components/modals/CreateDMConverse.tsx @@ -1,6 +1,6 @@ import { Button } from 'antd'; import React, { useState } from 'react'; -import { useHistory } from 'react-router'; +import { useNavigate } from 'react-router'; import { createDMConverse, t, useAsyncRequest } from 'tailchat-shared'; import { FriendPicker } from '../UserPicker/FriendPicker'; import { closeModal, ModalWrapper } from '../Modal'; @@ -17,7 +17,7 @@ export const CreateDMConverse: React.FC = React.memo( (props) => { const { hiddenUserIds = [] } = props; const [selectedFriendIds, setSelectedFriendIds] = useState([]); - const history = useHistory(); + const navigate = useNavigate(); const [{ loading }, handleCreate] = useAsyncRequest(async () => { const converse = await createDMConverse([ @@ -25,7 +25,7 @@ export const CreateDMConverse: React.FC = React.memo( ...selectedFriendIds, ]); closeModal(); - history.push(`/main/personal/converse/${converse._id}`); + navigate(`/main/personal/converse/${converse._id}`); }, [selectedFriendIds]); return ( diff --git a/client/web/src/components/modals/CreateGroup.tsx b/client/web/src/components/modals/CreateGroup.tsx index 7cb9114a..50a59500 100644 --- a/client/web/src/components/modals/CreateGroup.tsx +++ b/client/web/src/components/modals/CreateGroup.tsx @@ -12,7 +12,7 @@ import type { GroupPanel } from 'tailchat-shared'; import { Avatar } from '../Avatar'; import { closeModal, ModalWrapper } from '../Modal'; import { Slides, SlidesRef } from '../Slides'; -import { useHistory } from 'react-router'; +import { useNavigate } from 'react-router'; import { applyDefaultFallbackGroupPermission } from 'tailchat-shared'; const panelTemplate: { @@ -78,7 +78,7 @@ export const ModalCreateGroup: React.FC = React.memo(() => { const [panels, setPanels] = useState([]); const [name, setName] = useState(''); const dispatch = useAppDispatch(); - const history = useHistory(); + const navigate = useNavigate(); const handleSelectTemplate = useCallback((panels: GroupPanel[]) => { setPanels(panels); @@ -94,7 +94,7 @@ export const ModalCreateGroup: React.FC = React.memo(() => { dispatch(groupActions.appendGroups([data])); - history.push(`/main/group/${data._id}`); // 创建完成后跳转到新建的群组 + navigate(`/main/group/${data._id}`); // 创建完成后跳转到新建的群组 // 应用默认权限 await applyDefaultFallbackGroupPermission(String(data._id)); diff --git a/client/web/src/components/modals/GroupDetail/Panel/GroupPanelTree.tsx b/client/web/src/components/modals/GroupDetail/Panel/GroupPanelTree.tsx index c705a69b..e9337ddf 100644 --- a/client/web/src/components/modals/GroupDetail/Panel/GroupPanelTree.tsx +++ b/client/web/src/components/modals/GroupDetail/Panel/GroupPanelTree.tsx @@ -60,7 +60,7 @@ export const GroupPanelTree: React.FC = React.memo((props) => { (node: DataNode): React.ReactNode => { return (
- {node.title} + {node.title as string}
(null); - const handleDragStart = useCallback( - (info: NodeDragEventParams) => { - draggingNode.current = info.node; - }, - [] - ); + const handleDragStart = useCallback((info: NodeDragEventParams) => { + draggingNode.current = info.node; + }, []); const handleDragEnd = useCallback(() => { draggingNode.current = null; @@ -49,7 +46,7 @@ export function useGroupPanelTreeDrag( const handleDrop = useCallback( ( info: NodeDragEventParams & { - dragNode: EventDataNode; + dragNode: EventDataNode; dragNodesKeys: Key[]; dropPosition: number; dropToGap: boolean; diff --git a/client/web/src/components/modals/GroupDetail/Role/RoleItem.tsx b/client/web/src/components/modals/GroupDetail/Role/RoleItem.tsx index 0c6ad761..e188c5e5 100644 --- a/client/web/src/components/modals/GroupDetail/Role/RoleItem.tsx +++ b/client/web/src/components/modals/GroupDetail/Role/RoleItem.tsx @@ -1,10 +1,12 @@ import clsx from 'clsx'; -import React from 'react'; +import React, { PropsWithChildren } from 'react'; -export const RoleItem: React.FC<{ - active: boolean; - onClick?: () => void; -}> = React.memo((props) => { +export const RoleItem: React.FC< + PropsWithChildren<{ + active: boolean; + onClick?: () => void; + }> +> = React.memo((props) => { return (
= React.memo((props) => { const groupId = props.groupId; const handleChangeVisible = useCallback( - (visible) => { + (visible: boolean) => { if (visible === false && typeof props.onClose === 'function') { props.onClose(); } diff --git a/client/web/src/components/modals/SettingsView/Account.tsx b/client/web/src/components/modals/SettingsView/Account.tsx index ec14986d..45993055 100644 --- a/client/web/src/components/modals/SettingsView/Account.tsx +++ b/client/web/src/components/modals/SettingsView/Account.tsx @@ -11,7 +11,7 @@ import { setUserJWT } from '@/utils/jwt-helper'; import { setGlobalUserLoginInfo } from '@/utils/user-helper'; import { Button, Divider, Typography } from 'antd'; import React, { useCallback } from 'react'; -import { useHistory } from 'react-router'; +import { useNavigate } from 'react-router'; import { modifyUserField, showToasts, @@ -27,7 +27,7 @@ import { ModifyPassword } from '../ModifyPassword'; export const SettingsAccount: React.FC = React.memo(() => { const userInfo = useUserInfo(); const dispatch = useAppDispatch(); - const history = useHistory(); + const navigate = useNavigate(); const [, handleUserAvatarChange] = useAsyncRequest( async (fileInfo: UploadFileResult) => { @@ -66,7 +66,7 @@ export const SettingsAccount: React.FC = React.memo(() => { await setUserJWT(null); getGlobalSocket()?.disconnect(); setGlobalUserLoginInfo(null); - history.push('/'); + navigate('/'); }, []); if (!userInfo) { diff --git a/client/web/src/components/modals/SettingsView/index.tsx b/client/web/src/components/modals/SettingsView/index.tsx index e541a9f8..b79577c8 100644 --- a/client/web/src/components/modals/SettingsView/index.tsx +++ b/client/web/src/components/modals/SettingsView/index.tsx @@ -19,7 +19,7 @@ interface SettingsViewProps { } export const SettingsView: React.FC = React.memo((props) => { const handleChangeVisible = useCallback( - (visible) => { + (visible: boolean) => { if (visible === false && typeof props.onClose === 'function') { props.onClose(); } diff --git a/client/web/src/context/SocketContext.tsx b/client/web/src/context/SocketContext.tsx index 93a486aa..07fa2242 100644 --- a/client/web/src/context/SocketContext.tsx +++ b/client/web/src/context/SocketContext.tsx @@ -1,17 +1,18 @@ -import React, { useContext } from 'react'; +import React, { PropsWithChildren, useContext } from 'react'; import type { AppSocket } from 'tailchat-shared'; const SocketContext = React.createContext({} as AppSocket); SocketContext.displayName = 'SocketContext'; -export const SocketContextProvider: React.FC<{ socket: AppSocket }> = - React.memo((props) => { - return ( - - {props.children} - - ); - }); +export const SocketContextProvider: React.FC< + PropsWithChildren<{ socket: AppSocket }> +> = React.memo((props) => { + return ( + + {props.children} + + ); +}); SocketContextProvider.displayName = 'SocketContextProvider'; export function useSocketContext(): AppSocket { diff --git a/client/web/src/index.tsx b/client/web/src/index.tsx index f6c7ed53..4bfb8745 100644 --- a/client/web/src/index.tsx +++ b/client/web/src/index.tsx @@ -1,7 +1,7 @@ import './init'; import './dev'; import React from 'react'; -import ReactDOM from 'react-dom'; +import { createRoot } from 'react-dom/client'; import { App } from './App'; import { initPlugins } from './plugin/loader'; import { installServiceWorker } from './utils/sw-helper'; @@ -13,11 +13,12 @@ installServiceWorker(); // 先加载插件再开启应用 initPlugins() .then(() => { - ReactDOM.render( + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const root = createRoot(document.querySelector('#app')!); + root.render( - , - document.querySelector('#app') + ); }) .catch(() => { diff --git a/client/web/src/plugin/common/index.ts b/client/web/src/plugin/common/index.ts index 64123181..edc6263d 100644 --- a/client/web/src/plugin/common/index.ts +++ b/client/web/src/plugin/common/index.ts @@ -50,7 +50,7 @@ export { sendMessage, } from 'tailchat-shared'; -export { useLocation, useHistory } from 'react-router'; +export { useLocation, useNavigate } from 'react-router'; export { /** diff --git a/client/web/src/routes/Entry/GuestView.tsx b/client/web/src/routes/Entry/GuestView.tsx index 8e10b7ef..549fbcd6 100644 --- a/client/web/src/routes/Entry/GuestView.tsx +++ b/client/web/src/routes/Entry/GuestView.tsx @@ -4,7 +4,7 @@ import { setUserJWT } from '@/utils/jwt-helper'; import { setGlobalUserLoginInfo } from '@/utils/user-helper'; import { Icon } from '@/components/Icon'; import React, { useState } from 'react'; -import { useHistory } from 'react-router'; +import { useNavigate } from 'react-router'; import { createTemporaryUser, isValidStr, @@ -15,7 +15,7 @@ import { string } from 'yup'; import { useNavToView } from './utils'; export const GuestView: React.FC = React.memo(() => { - const history = useHistory(); + const navigate = useNavigate(); const navToView = useNavToView(); const navRedirect = useSearchParam('redirect'); const [nickname, setNickname] = useState(''); @@ -29,9 +29,9 @@ export const GuestView: React.FC = React.memo(() => { await setUserJWT(data.token); if (isValidStr(navRedirect)) { - history.push(decodeURIComponent(navRedirect)); + navigate(decodeURIComponent(navRedirect)); } else { - history.push('/main'); + navigate('/main'); } }, [nickname, history, navRedirect]); diff --git a/client/web/src/routes/Entry/LoginView.tsx b/client/web/src/routes/Entry/LoginView.tsx index 8f936832..08d28c23 100644 --- a/client/web/src/routes/Entry/LoginView.tsx +++ b/client/web/src/routes/Entry/LoginView.tsx @@ -4,7 +4,7 @@ import { isValidStr, loginWithEmail, t, useAsyncFn } from 'tailchat-shared'; import React, { useEffect, useState } from 'react'; import { Spinner } from '../../components/Spinner'; import { string } from 'yup'; -import { useHistory } from 'react-router'; +import { useNavigate } from 'react-router'; import { setUserJWT } from '../../utils/jwt-helper'; import { setGlobalUserLoginInfo, tryAutoLogin } from '../../utils/user-helper'; import { useSearchParam } from '@/hooks/useSearchParam'; @@ -37,13 +37,13 @@ OAuthLoginView.displayName = 'OAuthLoginView'; export const LoginView: React.FC = React.memo(() => { const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); - const history = useHistory(); + const navigate = useNavigate(); const navRedirect = useSearchParam('redirect'); useEffect(() => { tryAutoLogin() .then(() => { - history.push('/main'); + navigate('/main'); }) .catch(() => {}); }, []); @@ -65,9 +65,9 @@ export const LoginView: React.FC = React.memo(() => { await setUserJWT(data.token); if (isValidStr(navRedirect)) { - history.push(decodeURIComponent(navRedirect)); + navigate(decodeURIComponent(navRedirect)); } else { - history.push('/main'); + navigate('/main'); } }, [email, password, history, navRedirect]); diff --git a/client/web/src/routes/Entry/RegisterView.tsx b/client/web/src/routes/Entry/RegisterView.tsx index 082a0889..6e255e21 100644 --- a/client/web/src/routes/Entry/RegisterView.tsx +++ b/client/web/src/routes/Entry/RegisterView.tsx @@ -3,7 +3,7 @@ import React, { useState } from 'react'; import { Spinner } from '../../components/Spinner'; import { string } from 'yup'; import { Icon } from '@/components/Icon'; -import { useHistory } from 'react-router'; +import { useNavigate } from 'react-router'; import { setUserJWT } from '../../utils/jwt-helper'; import { setGlobalUserLoginInfo } from '../../utils/user-helper'; import { useSearchParam } from '@/hooks/useSearchParam'; @@ -15,7 +15,7 @@ import { useNavToView } from './utils'; export const RegisterView: React.FC = React.memo(() => { const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); - const history = useHistory(); + const navigate = useNavigate(); const navRedirect = useSearchParam('redirect'); const [{ loading, error }, handleRegister] = useAsyncFn(async () => { @@ -35,9 +35,9 @@ export const RegisterView: React.FC = React.memo(() => { await setUserJWT(data.token); if (isValidStr(navRedirect)) { - history.push(decodeURIComponent(navRedirect)); + navigate(decodeURIComponent(navRedirect)); } else { - history.push('/main'); + navigate('/main'); } }, [email, password, navRedirect]); diff --git a/client/web/src/routes/Entry/index.tsx b/client/web/src/routes/Entry/index.tsx index a8230273..bc7463e7 100644 --- a/client/web/src/routes/Entry/index.tsx +++ b/client/web/src/routes/Entry/index.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { Redirect, Route, Switch } from 'react-router-dom'; +import { Navigate, Route, Routes } from 'react-router-dom'; import { LoginView } from './LoginView'; import clsx from 'clsx'; import styles from './index.module.less'; @@ -21,14 +21,16 @@ const EntryRoute = React.memo(() => { )} style={{ backgroundImage: `url(${loginPatternUrl})` }} > - - - - - - - - + + } /> + } /> + } /> + } /> + } + /> +
diff --git a/client/web/src/routes/Entry/utils.ts b/client/web/src/routes/Entry/utils.ts index f09d146e..4c282689 100644 --- a/client/web/src/routes/Entry/utils.ts +++ b/client/web/src/routes/Entry/utils.ts @@ -1,17 +1,18 @@ import { useCallback } from 'react'; -import { useHistory } from 'react-router'; +import { useLocation, useNavigate } from 'react-router'; /** * 导航到特定视图 */ export function useNavToView() { - const history = useHistory(); + const navigate = useNavigate(); + const location = useLocation(); const navToView = useCallback( (pathname: string) => { // 携带上下文切换路由 - history.push({ - ...history.location, + navigate({ + ...location, pathname, }); }, diff --git a/client/web/src/routes/Invite/JoinBtn.tsx b/client/web/src/routes/Invite/JoinBtn.tsx index 75fe7688..f021b1c2 100644 --- a/client/web/src/routes/Invite/JoinBtn.tsx +++ b/client/web/src/routes/Invite/JoinBtn.tsx @@ -2,7 +2,7 @@ import { openModal } from '@/components/Modal'; import { getUserJWT } from '@/utils/jwt-helper'; import { Button } from 'antd'; import React, { useCallback, useState } from 'react'; -import { useHistory } from 'react-router'; +import { useNavigate } from 'react-router'; import { applyGroupInvite, checkTokenValid, @@ -18,7 +18,7 @@ interface Props { expired?: string; } export const JoinBtn: React.FC = React.memo((props) => { - const history = useHistory(); + const navigate = useNavigate(); const { loading, value: isTokenValid } = useAsync(async () => { const token = await getUserJWT(); if (!token) { @@ -31,7 +31,7 @@ export const JoinBtn: React.FC = React.memo((props) => { const [isJoined, setIsJoined] = useState(false); const handleRegister = useCallback(() => { - history.push( + navigate( `/entry/register?redirect=${encodeURIComponent(location.pathname)}` ); }, []); diff --git a/client/web/src/routes/Invite/SuccessModal.tsx b/client/web/src/routes/Invite/SuccessModal.tsx index 6574214e..331d85cb 100644 --- a/client/web/src/routes/Invite/SuccessModal.tsx +++ b/client/web/src/routes/Invite/SuccessModal.tsx @@ -1,7 +1,7 @@ import { ModalWrapper, useModalContext } from '@/components/Modal'; import { Button } from 'antd'; import React, { useCallback } from 'react'; -import { useHistory } from 'react-router'; +import { useNavigate } from 'react-router'; import { t } from 'tailchat-shared'; interface Props { @@ -9,10 +9,11 @@ interface Props { } export const SuccessModal: React.FC = React.memo((props) => { const { closeModal } = useModalContext(); - const history = useHistory(); + const navigate = useNavigate(); + const handleNav = useCallback(() => { closeModal(); - history.push(`/main/group/${props.groupId}`); + navigate(`/main/group/${props.groupId}`); }, [closeModal, props.groupId]); return ( diff --git a/client/web/src/routes/Invite/index.tsx b/client/web/src/routes/Invite/index.tsx index 9afa1b6c..ce423cbe 100644 --- a/client/web/src/routes/Invite/index.tsx +++ b/client/web/src/routes/Invite/index.tsx @@ -8,7 +8,7 @@ import { useRecordMeasure } from '@/utils/measure-helper'; * 邀请界面路由 */ const InviteRoute: React.FC = React.memo(() => { - const { inviteCode } = useParams<{ inviteCode: string }>(); + const { inviteCode = '' } = useParams<{ inviteCode: string }>(); useRecordMeasure('AppInviteRenderStart'); return ( diff --git a/client/web/src/routes/Main/Content/Group/PanelRedirect.tsx b/client/web/src/routes/Main/Content/Group/PanelRedirect.tsx index 0c8034f1..1e65671b 100644 --- a/client/web/src/routes/Main/Content/Group/PanelRedirect.tsx +++ b/client/web/src/routes/Main/Content/Group/PanelRedirect.tsx @@ -1,14 +1,14 @@ import React, { useEffect } from 'react'; -import { useHistory, useParams } from 'react-router'; +import { useNavigate, useParams } from 'react-router'; import { GroupPanelType, useGroupInfo, useUpdateRef } from 'tailchat-shared'; import _isNil from 'lodash/isNil'; import { useUserSessionPreference } from '@/hooks/useUserPreference'; export const GroupPanelRedirect: React.FC = React.memo(() => { - const { groupId } = useParams<{ + const { groupId = '' } = useParams<{ groupId: string; }>(); - const history = useHistory(); + const navigate = useNavigate(); const [lastVisitPanel] = useUserSessionPreference('groupLastVisitPanel'); const lastVisitPanelRef = useUpdateRef(lastVisitPanel); @@ -32,7 +32,7 @@ export const GroupPanelRedirect: React.FC = React.memo(() => { */ const panelExist = panels.some((p) => p.id === lastVisitPanelId); if (panelExist) { - history.replace(`/main/group/${groupId}/${lastVisitPanelId}`); + navigate(`/main/group/${groupId}/${lastVisitPanelId}`, { replace: true }); return; } @@ -40,7 +40,9 @@ export const GroupPanelRedirect: React.FC = React.memo(() => { (panel) => panel.type !== GroupPanelType.GROUP ); if (!_isNil(firstAvailablePanel)) { - history.replace(`/main/group/${groupId}/${firstAvailablePanel.id}`); + navigate(`/main/group/${groupId}/${firstAvailablePanel.id}`, { + replace: true, + }); } }, [groupInfo]); diff --git a/client/web/src/routes/Main/Content/Group/Sidebar.tsx b/client/web/src/routes/Main/Content/Group/Sidebar.tsx index 5373f524..35edfc47 100644 --- a/client/web/src/routes/Main/Content/Group/Sidebar.tsx +++ b/client/web/src/routes/Main/Content/Group/Sidebar.tsx @@ -6,15 +6,11 @@ import { GroupSection } from '@/components/GroupSection'; import { CommonSidebarWrapper } from '@/components/CommonSidebarWrapper'; import { SidebarItem } from './SidebarItem'; -interface GroupParams { - groupId: string; -} - /** * 群组面板侧边栏组件 */ export const Sidebar: React.FC = React.memo(() => { - const { groupId } = useParams(); + const { groupId = '' } = useParams<{ groupId: string }>(); const groupInfo = useGroupInfo(groupId); const groupPanels = groupInfo?.panels ?? []; diff --git a/client/web/src/routes/Main/Content/Group/index.tsx b/client/web/src/routes/Main/Content/Group/index.tsx index 0e7de6bc..5ea3d382 100644 --- a/client/web/src/routes/Main/Content/Group/index.tsx +++ b/client/web/src/routes/Main/Content/Group/index.tsx @@ -2,7 +2,7 @@ import { LoadingSpinner } from '@/components/LoadingSpinner'; import { SplitPanel } from '@/components/SplitPanel'; import { GroupIdContextProvider } from '@/context/GroupIdContext'; import React from 'react'; -import { Route, Switch, useParams } from 'react-router-dom'; +import { Route, Routes, useParams } from 'react-router-dom'; import { isValidStr, useGroupInfo } from 'tailchat-shared'; import { PageContent } from '../PageContent'; import { GroupPanelRender, GroupPanelRoute } from './Panel'; @@ -10,7 +10,7 @@ import { GroupPanelRedirect } from './PanelRedirect'; import { Sidebar } from './Sidebar'; export const Group: React.FC = React.memo(() => { - const { groupId } = useParams<{ + const { groupId = '' } = useParams<{ groupId: string; }>(); const groupInfo = useGroupInfo(groupId); @@ -22,14 +22,10 @@ export const Group: React.FC = React.memo(() => { const pinnedPanelId = groupInfo.pinnedPanelId; const routeMatch = ( - - - - + + } /> + } /> + ); return ( diff --git a/client/web/src/routes/Main/Content/Group/useGroupHeaderAction.tsx b/client/web/src/routes/Main/Content/Group/useGroupHeaderAction.tsx index 6b2273d4..c7b9697d 100644 --- a/client/web/src/routes/Main/Content/Group/useGroupHeaderAction.tsx +++ b/client/web/src/routes/Main/Content/Group/useGroupHeaderAction.tsx @@ -3,7 +3,7 @@ import { GroupDetail } from '@/components/modals/GroupDetail'; import { CreateGroupInvite } from '@/components/modals/CreateGroupInvite'; import React from 'react'; import { useCallback } from 'react'; -import { useHistory } from 'react-router'; +import { useNavigate } from 'react-router'; import { quitGroup, showAlert, t, useIsGroupOwner } from 'tailchat-shared'; import { useLocationNav } from '@/hooks/useHistoryNav'; @@ -12,7 +12,7 @@ import { useLocationNav } from '@/hooks/useHistoryNav'; */ export function useGroupHeaderAction(groupId: string) { const isOwner = useIsGroupOwner(groupId); - const history = useHistory(); + const navigate = useNavigate(); const handleShowGroupDetail = useCallback(() => { const key = openModal( @@ -36,7 +36,9 @@ export function useGroupHeaderAction(groupId: string) { : t('确定要退出群组么?'), async onConfirm() { await quitGroup(groupId); - history.replace('/main'); // 返回到主页 + navigate('/main', { + replace: true, + }); // 返回到主页 }, }); }, [groupId, isOwner]); diff --git a/client/web/src/routes/Main/Content/Group/utils.ts b/client/web/src/routes/Main/Content/Group/utils.ts index 617d9070..7ba58f66 100644 --- a/client/web/src/routes/Main/Content/Group/utils.ts +++ b/client/web/src/routes/Main/Content/Group/utils.ts @@ -1,5 +1,4 @@ import { useParams } from 'react-router'; -import { GroupPanel, useGroupPanelInfo } from 'tailchat-shared'; /** * 获取群组面板的参数 @@ -8,7 +7,7 @@ export function useGroupPanelParams(): { groupId: string; panelId: string; } { - const { groupId, panelId } = useParams<{ + const { groupId = '', panelId = '' } = useParams<{ groupId: string; panelId: string; }>(); diff --git a/client/web/src/routes/Main/Content/PageContent.tsx b/client/web/src/routes/Main/Content/PageContent.tsx index 9f64815b..e92feb16 100644 --- a/client/web/src/routes/Main/Content/PageContent.tsx +++ b/client/web/src/routes/Main/Content/PageContent.tsx @@ -1,4 +1,4 @@ -import React, { useCallback, useEffect } from 'react'; +import React, { PropsWithChildren, useCallback, useEffect } from 'react'; import { useSidebarContext } from '../SidebarContext'; import _isNil from 'lodash/isNil'; import { useDrag } from 'react-use-gesture'; @@ -6,11 +6,11 @@ import { useIsMobile } from '@/hooks/useIsMobile'; import clsx from 'clsx'; import { ErrorBoundary } from '@/components/ErrorBoundary'; -const PageContentRoot: React.FC = (props) => ( +const PageContentRoot: React.FC = (props) => (
{props.children}
); -const PageGestureWrapper: React.FC = React.memo((props) => { +const PageGestureWrapper: React.FC = React.memo((props) => { const { setShowSidebar } = useSidebarContext(); const bind = useDrag( @@ -40,82 +40,83 @@ interface PageContentProps { /** * 用于渲染实际页面的组件,即除了导航栏剩余的内容 */ -export const PageContent: React.FC = React.memo((props) => { - const { sidebar, children } = props; - const { showSidebar, setShowSidebar } = useSidebarContext(); - const isMobile = useIsMobile(); - const handleHideSidebar = useCallback( - (e: React.MouseEvent) => { - e.stopPropagation(); - e.preventDefault(); - setShowSidebar(false); - }, - [] - ); - - useEffect(() => { - if (isMobile === false) { - // 如果不为移动端, 则一定显示侧边栏 - setShowSidebar(true); - } - }, [isMobile]); - - const sidebarEl = _isNil(sidebar) ? null : ( -
- {props.sidebar} -
- ); - - // 是否显示遮罩层 - const showMask = - isMobile === true && showSidebar === true && !_isNil(sidebarEl); - - const contentMaskEl = showMask ? ( -
- ) : null; - - const contentEl = children; +export const PageContent: React.FC> = + React.memo((props) => { + const { sidebar, children } = props; + const { showSidebar, setShowSidebar } = useSidebarContext(); + const isMobile = useIsMobile(); + const handleHideSidebar = useCallback( + (e: React.MouseEvent) => { + e.stopPropagation(); + e.preventDefault(); + setShowSidebar(false); + }, + [] + ); - const el = ( - - {sidebarEl} + useEffect(() => { + if (isMobile === false) { + // 如果不为移动端, 则一定显示侧边栏 + setShowSidebar(true); + } + }, [isMobile]); + const sidebarEl = _isNil(sidebar) ? null : (
-
+ {props.sidebar} +
+ ); + + // 是否显示遮罩层 + const showMask = + isMobile === true && showSidebar === true && !_isNil(sidebarEl); + + const contentMaskEl = showMask ? ( +
+ ) : null; + + const contentEl = children; + + const el = ( + + {sidebarEl}
- {contentMaskEl} - {contentEl} +
+ +
+ {contentMaskEl} + {contentEl} +
-
-
- ); + + ); - if (isMobile) { - return {el}; - } else { - return {el}; - } -}); + if (isMobile) { + return {el}; + } else { + return {el}; + } + }); PageContent.displayName = 'PageContent'; diff --git a/client/web/src/routes/Main/Content/Personal/Converse/index.tsx b/client/web/src/routes/Main/Content/Personal/Converse/index.tsx index 93da617c..9439ec10 100644 --- a/client/web/src/routes/Main/Content/Personal/Converse/index.tsx +++ b/client/web/src/routes/Main/Content/Personal/Converse/index.tsx @@ -1,13 +1,14 @@ +import { NotFound } from '@/components/NotFound'; import { ConversePanel } from '@/components/Panel/personal/ConversePanel'; import React from 'react'; import { useParams } from 'react-router'; -interface UserConversePanelParams { - converseId: string; -} - export const PersonalConverse: React.FC = React.memo(() => { - const params = useParams(); + const params = useParams<{ converseId: string }>(); + + if (!params.converseId) { + return ; + } return ; }); diff --git a/client/web/src/routes/Main/Content/Personal/Friends/FriendList.tsx b/client/web/src/routes/Main/Content/Personal/Friends/FriendList.tsx index 78034f26..a899767d 100644 --- a/client/web/src/routes/Main/Content/Personal/Friends/FriendList.tsx +++ b/client/web/src/routes/Main/Content/Personal/Friends/FriendList.tsx @@ -14,7 +14,7 @@ import { import { UserListItem } from '@/components/UserListItem'; import { IconBtn } from '@/components/IconBtn'; import { Button, Dropdown, Menu, Tooltip } from 'antd'; -import { useHistory } from 'react-router'; +import { useNavigate } from 'react-router'; import { Problem } from '@/components/Problem'; /** @@ -24,13 +24,13 @@ export const FriendList: React.FC<{ onSwitchToAddFriend: () => void; }> = React.memo((props) => { const friends = useAppSelector((state) => state.user.friends); - const history = useHistory(); + const navigate = useNavigate(); const dispatch = useAppDispatch(); const [, handleCreateConverse] = useAsyncRequest( async (targetId: string) => { const converse = await createDMConverse([targetId]); - history.push(`/main/personal/converse/${converse._id}`); + navigate(`/main/personal/converse/${converse._id}`); }, [history] ); diff --git a/client/web/src/routes/Main/Content/Personal/Sidebar.tsx b/client/web/src/routes/Main/Content/Personal/Sidebar.tsx index d40e2d8d..61a02709 100644 --- a/client/web/src/routes/Main/Content/Personal/Sidebar.tsx +++ b/client/web/src/routes/Main/Content/Personal/Sidebar.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { PropsWithChildren } from 'react'; import { Icon } from '@/components/Icon'; import { SidebarItem } from '../SidebarItem'; import { t, useDMConverseList, useUserInfo } from 'tailchat-shared'; @@ -10,9 +10,11 @@ import { SectionHeader } from '@/components/SectionHeader'; import { CommonSidebarWrapper } from '@/components/CommonSidebarWrapper'; import { pluginCustomPanel } from '@/plugin/common'; -const SidebarSection: React.FC<{ - action: React.ReactNode; -}> = React.memo((props) => { +const SidebarSection: React.FC< + PropsWithChildren<{ + action: React.ReactNode; + }> +> = React.memo((props) => { return (
diff --git a/client/web/src/routes/Main/Content/Personal/index.tsx b/client/web/src/routes/Main/Content/Personal/index.tsx index 635b0dc1..55999f58 100644 --- a/client/web/src/routes/Main/Content/Personal/index.tsx +++ b/client/web/src/routes/Main/Content/Personal/index.tsx @@ -1,7 +1,7 @@ import { ErrorBoundary } from '@/components/ErrorBoundary'; import { pluginCustomPanel } from '@/plugin/common'; import React from 'react'; -import { Redirect, Route, Switch } from 'react-router-dom'; +import { Navigate, Route, Routes } from 'react-router-dom'; import { PageContent } from '../PageContent'; import { PersonalConverse } from './Converse'; import { FriendPanel } from './Friends'; @@ -12,28 +12,22 @@ export const Personal: React.FC = React.memo(() => { return ( }> - - - - - - - + + } /> + } /> + } /> {pluginCustomPanel .filter((p) => p.position === 'personal') .map((p) => ( ))} - - + } /> + ); diff --git a/client/web/src/routes/Main/Content/index.tsx b/client/web/src/routes/Main/Content/index.tsx index efe6a8e6..ace833f2 100644 --- a/client/web/src/routes/Main/Content/index.tsx +++ b/client/web/src/routes/Main/Content/index.tsx @@ -1,15 +1,18 @@ import React from 'react'; import { Personal } from './Personal'; -import { Route, Switch, Redirect } from 'react-router-dom'; +import { Navigate, Route, Routes } from 'react-router-dom'; import { Group } from './Group'; export const MainContent: React.FC = React.memo(() => { return ( - - - - - + + } /> + } /> + } + /> + ); }); MainContent.displayName = 'MainContent'; diff --git a/client/web/src/routes/Main/Navbar/NavItem.tsx b/client/web/src/routes/Main/Navbar/NavItem.tsx index 892fc620..a3071006 100644 --- a/client/web/src/routes/Main/Navbar/NavItem.tsx +++ b/client/web/src/routes/Main/Navbar/NavItem.tsx @@ -1,19 +1,21 @@ import { Tooltip, Badge } from 'antd'; import type { ClassValue } from 'clsx'; import clsx from 'clsx'; -import React from 'react'; +import React, { PropsWithChildren } from 'react'; import { useLocation } from 'react-router'; import { Link } from 'react-router-dom'; -export const NavbarNavItem: React.FC<{ - name: string; - className?: ClassValue; - to?: string; - showPill?: boolean; - badge?: boolean; - onClick?: () => void; - ['data-testid']?: string; -}> = React.memo((props) => { +export const NavbarNavItem: React.FC< + PropsWithChildren<{ + name: string; + className?: ClassValue; + to?: string; + showPill?: boolean; + badge?: boolean; + onClick?: () => void; + ['data-testid']?: string; + }> +> = React.memo((props) => { const { name, className, to, showPill = false, badge = false } = props; const location = useLocation(); const isActive = typeof to === 'string' && location.pathname.startsWith(to); diff --git a/client/web/src/routes/Main/Provider.tsx b/client/web/src/routes/Main/Provider.tsx index b0f254a4..e5998156 100644 --- a/client/web/src/routes/Main/Provider.tsx +++ b/client/web/src/routes/Main/Provider.tsx @@ -8,11 +8,11 @@ import { ReduxProvider, UserLoginInfo, } from 'tailchat-shared'; -import React from 'react'; +import React, { PropsWithChildren } from 'react'; import { LoadingSpinner } from '@/components/LoadingSpinner'; import { tryAutoLogin } from '@/utils/user-helper'; import _isNil from 'lodash/isNil'; -import { useHistory } from 'react-router'; +import { useNavigate } from 'react-router'; import { SidebarContextProvider } from './SidebarContext'; import { PortalHost } from '@/components/Portal'; import { setGlobalSocket, setGlobalStore } from '@/utils/global-state-helper'; @@ -23,7 +23,7 @@ import { Problem } from '@/components/Problem'; * 应用状态管理hooks */ function useAppState() { - const history = useHistory(); + const navigate = useNavigate(); const { value, loading, error } = useAsync(async () => { let userLoginInfo: UserLoginInfo; @@ -31,8 +31,9 @@ function useAppState() { userLoginInfo = await tryAutoLogin(); } catch (e) { // 当前 Token 不存在或已过期 - history.replace( - `/entry/login?redirect=${encodeURIComponent(location.pathname)}` + navigate( + `/entry/login?redirect=${encodeURIComponent(location.pathname)}`, + { replace: true } ); return; } @@ -63,7 +64,7 @@ function useAppState() { * 主页面核心数据Provider * 在主页存在 */ -export const MainProvider: React.FC = React.memo((props) => { +export const MainProvider: React.FC = React.memo((props) => { const { loading, store, error, socket } = useAppState(); if (loading) { diff --git a/client/web/src/routes/Main/SidebarContext.tsx b/client/web/src/routes/Main/SidebarContext.tsx index 074cece0..2d5e2499 100644 --- a/client/web/src/routes/Main/SidebarContext.tsx +++ b/client/web/src/routes/Main/SidebarContext.tsx @@ -1,4 +1,9 @@ -import React, { useContext, useState, useCallback } from 'react'; +import React, { + useContext, + useState, + useCallback, + PropsWithChildren, +} from 'react'; import _noop from 'lodash/noop'; interface SidebarContextProps { @@ -13,22 +18,24 @@ const SidebarContext = React.createContext({ }); SidebarContext.displayName = 'SidebarContext'; -export const SidebarContextProvider: React.FC = React.memo((props) => { - const [showSidebar, setShowSidebar] = useState(true); +export const SidebarContextProvider: React.FC = React.memo( + (props) => { + const [showSidebar, setShowSidebar] = useState(true); - // 切换 - const switchSidebar = useCallback(() => { - setShowSidebar(!showSidebar); - }, [showSidebar]); + // 切换 + const switchSidebar = useCallback(() => { + setShowSidebar(!showSidebar); + }, [showSidebar]); - return ( - - {props.children} - - ); -}); + return ( + + {props.children} + + ); + } +); SidebarContextProvider.displayName = 'SidebarContextProvider'; export function useSidebarContext(): SidebarContextProps { diff --git a/client/web/src/routes/Panel/index.tsx b/client/web/src/routes/Panel/index.tsx index d6748766..4f7a967d 100644 --- a/client/web/src/routes/Panel/index.tsx +++ b/client/web/src/routes/Panel/index.tsx @@ -1,11 +1,24 @@ import { useRecordMeasure } from '@/utils/measure-helper'; import React from 'react'; -import { Route, Switch } from 'react-router'; +import { Route, Routes } from 'react-router'; import { MainProvider } from '../Main/Provider'; import { t } from 'tailchat-shared'; import { PersonalConverse } from '../Main/Content/Personal/Converse'; import { GroupPanelRoute } from '../Main/Content/Group/Panel'; import { GroupDetail } from '@/components/modals/GroupDetail'; +import { useParams } from 'react-router'; +import { NotFound } from '@/components/NotFound'; + +const GroupDetailRoute = React.memo(() => { + const { groupId } = useParams<{ groupId: string }>(); + + if (!groupId) { + return ; + } + + return {}} />; +}); +GroupDetailRoute.displayName = 'GroupDetailRoute'; const PanelRoute: React.FC = React.memo(() => { useRecordMeasure('AppRouteRenderStart'); @@ -13,30 +26,19 @@ const PanelRoute: React.FC = React.memo(() => { return (
- - + ( - {}} - /> - )} + path="/personal/converse/:converseId" + element={} /> + } /> } /> - {t('未知的面板')} - + +
); diff --git a/client/web/tsconfig.json b/client/web/tsconfig.json index 31e4771f..b32637ef 100644 --- a/client/web/tsconfig.json +++ b/client/web/tsconfig.json @@ -7,7 +7,8 @@ "@test/*": ["./test/*"], "@assets/*": ["./assets/*"], "tailchat-design": ["../packages/design/components"] - } + }, + "typeRoots": ["./node_modules/@types", "./types"] }, "exclude": ["e2e", "plugins"] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3f3a3108..6444cb90 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -62,7 +62,7 @@ importers: '@types/inquirer': ^8.2.1 '@types/lodash': ^4.14.170 '@types/node': 16.11.7 - '@types/react': ^17.0.39 + '@types/react': 18.0.20 '@types/yargs': ^17.0.10 dotenv: ^16.0.0 fs-extra: ^10.1.0 @@ -78,7 +78,7 @@ importers: p-series: 2.1.0 plop: ^3.0.5 pretty-ms: 7.0.1 - react: 17.0.2 + react: 18.2.0 tailchat-server-sdk: ^0.0.12 tailchat-shared: workspace:* ts-node: ^10.7.0 @@ -88,9 +88,9 @@ importers: dotenv: 16.0.2 fs-extra: 10.1.0 got: 11.8.5 - ink: 3.2.0_skqlhrap4das3cz5b6iqdn2lqi - ink-tab: 4.2.0_ink@3.2.0+react@17.0.2 - ink-text-input: 4.0.3_ink@3.2.0+react@17.0.2 + ink: 3.2.0_w5j4k42lgipnm43s3brx6h3c34 + ink-tab: 4.2.0_ink@3.2.0+react@18.2.0 + ink-text-input: 4.0.3_ink@3.2.0+react@18.2.0 inquirer: 8.2.4 lodash: 4.17.21 node-plop: 0.26.3 @@ -99,7 +99,7 @@ importers: p-series: 2.1.0 plop: 3.1.1 pretty-ms: 7.0.1 - react: 17.0.2 + react: 18.2.0 tailchat-server-sdk: link:../server/packages/sdk tailchat-shared: link:../client/shared yargs: 17.5.1 @@ -108,7 +108,7 @@ importers: '@types/inquirer': 8.2.3 '@types/lodash': 4.14.184 '@types/node': 16.11.7 - '@types/react': 17.0.48 + '@types/react': 18.0.20 '@types/yargs': 17.0.12 ts-node: 10.9.1_rk33jgomelnuriwr3foeinccb4 typescript: 4.8.2 @@ -124,41 +124,41 @@ importers: '@storybook/react': ^6.4.22 '@storybook/testing-library': ^0.0.11 '@types/lodash': ^4.14.170 - '@types/react': ^17.0.39 - '@types/react-dom': ^17.0.8 + '@types/react': 18.0.20 + '@types/react-dom': 18.0.6 ahooks: ^3.7.1 antd: ^4.19.5 babel-loader: ^8.2.5 clsx: ^1.1.1 lodash: ^4.17.21 - react: 17.0.2 - react-dom: 17.0.2 + react: 18.2.0 + react-dom: 18.2.0 react-fastify-form: 1.0.10 str2int: ^1.1.0 typescript: ^4.5.2 webpack: ^5.72.0 dependencies: - '@iconify/react': 3.2.2_react@17.0.2 - ahooks: 3.7.1_react@17.0.2 - antd: 4.22.8_sfoxds7t5ydpegc3knd667wn6m + '@iconify/react': 3.2.2_react@18.2.0 + ahooks: 3.7.1_react@18.2.0 + antd: 4.22.8_biqbaboplfbrettd7655fr4n2y clsx: 1.2.1 lodash: 4.17.21 - react-fastify-form: 1.0.10_react@17.0.2 + react-fastify-form: 1.0.10_react@18.2.0 str2int: 1.1.0 devDependencies: '@babel/core': 7.18.13 - '@storybook/addon-actions': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/addon-essentials': 6.5.10_syz2u4gb4ghy424l3cvhntynam - '@storybook/addon-interactions': 6.5.10_dscil3oxjefkmogs52lepurcyi - '@storybook/addon-links': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/react': 6.5.10_d6mkdkfnct6ha2zsg6gmc4s2je - '@storybook/testing-library': 0.0.11_sfoxds7t5ydpegc3knd667wn6m + '@storybook/addon-actions': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/addon-essentials': 6.5.10_mlovdwii52utbxpe4cy7chdr7u + '@storybook/addon-interactions': 6.5.10_c2daxqjlqzcqoaozjw55oq2dvq + '@storybook/addon-links': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/react': 6.5.10_jfnhpnggha6g774l6rshgax3nq + '@storybook/testing-library': 0.0.11_biqbaboplfbrettd7655fr4n2y '@types/lodash': 4.14.184 - '@types/react': 17.0.48 - '@types/react-dom': 17.0.17 + '@types/react': 18.0.20 + '@types/react-dom': 18.0.6 babel-loader: 8.2.5_tb6moc662p5idmcg3l5ipbhpta - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 typescript: 4.7.4 webpack: 5.74.0 @@ -210,8 +210,7 @@ importers: '@tanstack/react-query-devtools': ^4.3.5 '@types/crc': ^3.4.0 '@types/lodash': ^4.14.170 - '@types/react': ^17.0.39 - '@types/react-redux': ^7.1.24 + '@types/react': 18.0.20 axios: ^0.21.1 crc: ^3.8.0 dayjs: ^1.10.6 @@ -219,34 +218,34 @@ importers: filesize: ^8.0.7 flatted: ^3.2.4 formik: ^2.2.9 - i18next: ^20.3.2 - i18next-http-backend: ^1.2.6 + i18next: ^21.9.2 + i18next-http-backend: ^1.4.1 lodash: ^4.17.21 - react: 17.0.2 - react-i18next: ^11.15.1 + react: 18.2.0 + react-i18next: ^11.18.6 react-native-storage: npm:@trpgengine/react-native-storage@^1.0.1 - react-redux: ^7.2.6 + react-redux: ^8.0.2 regenerator-runtime: ^0.13.9 socket.io-client: ^4.1.2 url-regex: ^5.0.0 yup: ^0.32.9 dependencies: - '@reduxjs/toolkit': 1.8.5_bjryulbxll5jujtwpu5a2wm2cy - '@tanstack/react-query': 4.3.4_react@17.0.2 - '@tanstack/react-query-devtools': 4.3.5_yaxhdf5vepihlkpjucjyrgjj3u + '@reduxjs/toolkit': 1.8.5_kkwg4cbsojnjnupd3btipussee + '@tanstack/react-query': 4.3.4_react@18.2.0 + '@tanstack/react-query-devtools': 4.3.5_jkekd4jqbd6zkiapxsceyqr7ty axios: 0.21.4 crc: 3.8.0 dayjs: 1.11.5 events: 3.3.0 filesize: 8.0.7 flatted: 3.2.7 - formik: 2.2.9_react@17.0.2 - i18next: 20.6.1 + formik: 2.2.9_react@18.2.0 + i18next: 21.9.2 i18next-http-backend: 1.4.1 lodash: 4.17.21 - react-i18next: 11.18.5_fx4b3zen7tdcdwbld3lkpcycbu + react-i18next: 11.18.6_zmu7ama24qzo23juwg3r2jo7ii react-native-storage: /@trpgengine/react-native-storage/1.0.1 - react-redux: 7.2.8_react@17.0.2 + react-redux: 8.0.2_w5j4k42lgipnm43s3brx6h3c34 regenerator-runtime: 0.13.9 socket.io-client: 4.5.1 url-regex: 5.0.0 @@ -254,9 +253,8 @@ importers: devDependencies: '@types/crc': 3.8.0 '@types/lodash': 4.14.184 - '@types/react': 17.0.48 - '@types/react-redux': 7.1.24 - react: 17.0.2 + '@types/react': 18.0.20 + react: 18.2.0 client/web: specifiers: @@ -269,19 +267,19 @@ importers: '@types/emoji-mart': ^3.0.8 '@types/fs-extra': ^9.0.13 '@types/is-hotkey': ^0.1.5 - '@types/jest': ^27.0.3 + '@types/jest': ^29.0.3 '@types/loadable__component': ^5.13.4 '@types/lodash': ^4.14.170 '@types/mini-css-extract-plugin': ^1.4.3 '@types/minimatch': ^3.0.5 '@types/node': ^15.12.5 '@types/qs': ^6.9.7 - '@types/react': ^17.0.39 - '@types/react-dom': ^17.0.8 + '@types/react': 18.0.20 + '@types/react-dom': 18.0.6 '@types/react-helmet': ^6.1.2 '@types/react-mentions': ^4.1.5 - '@types/react-router': ^5.1.15 - '@types/react-router-dom': ^5.1.7 + '@types/react-router': ^5.1.19 + '@types/react-router-dom': ^5.3.3 '@types/react-transition-group': ^4.4.2 '@types/react-virtualized': ^9.21.14 '@types/react-virtualized-auto-sizer': ^1.0.1 @@ -324,14 +322,14 @@ importers: postcss-loader: ^6.1.0 qs: ^6.10.3 rc-tree: ^5.3.6 - react: 17.0.2 - react-dom: 17.0.2 + react: 18.2.0 + react-dom: 18.2.0 react-easy-crop: ^3.5.2 react-helmet: ^6.1.0 react-markdown: '6' react-mentions: ^4.3.1 - react-router: ^5.2.0 - react-router-dom: ^5.2.0 + react-router: ^6.4.0 + react-router-dom: ^6.4.0 react-split: ^2.0.14 react-transition-group: ^4.4.2 react-use-gesture: ^9.1.3 @@ -364,13 +362,13 @@ importers: workbox-webpack-plugin: ^6.5.1 yup: ^0.32.9 dependencies: - '@loadable/component': 5.15.2_react@17.0.2 - antd: 4.22.8_sfoxds7t5ydpegc3knd667wn6m + '@loadable/component': 5.15.2_react@18.2.0 + antd: 4.22.8_biqbaboplfbrettd7655fr4n2y axios: 0.21.4 clsx: 1.2.1 compressorjs: 1.1.1 copy-to-clipboard: 3.3.2 - emoji-mart: 3.0.1_react@17.0.2 + emoji-mart: 3.0.1_react@18.2.0 is-electron: 2.2.1 is-hotkey: 0.2.0 jsonschema: 1.4.1 @@ -381,20 +379,20 @@ importers: minimatch: 5.1.0 p-min-delay: 4.0.1 qs: 6.11.0 - rc-tree: 5.6.6_sfoxds7t5ydpegc3knd667wn6m - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - react-easy-crop: 3.5.3_sfoxds7t5ydpegc3knd667wn6m - react-helmet: 6.1.0_react@17.0.2 - react-markdown: 6.0.3_skqlhrap4das3cz5b6iqdn2lqi - react-mentions: 4.4.7_sfoxds7t5ydpegc3knd667wn6m - react-router: 5.3.3_react@17.0.2 - react-router-dom: 5.3.3_react@17.0.2 - react-split: 2.0.14_react@17.0.2 - react-transition-group: 4.4.5_sfoxds7t5ydpegc3knd667wn6m - react-use-gesture: 9.1.3_react@17.0.2 - react-virtualized-auto-sizer: 1.0.6_sfoxds7t5ydpegc3knd667wn6m - react-virtuoso: 2.18.0_sfoxds7t5ydpegc3knd667wn6m + rc-tree: 5.6.6_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + react-easy-crop: 3.5.3_biqbaboplfbrettd7655fr4n2y + react-helmet: 6.1.0_react@18.2.0 + react-markdown: 6.0.3_w5j4k42lgipnm43s3brx6h3c34 + react-mentions: 4.4.7_biqbaboplfbrettd7655fr4n2y + react-router: 6.4.0_react@18.2.0 + react-router-dom: 6.4.0_biqbaboplfbrettd7655fr4n2y + react-split: 2.0.14_react@18.2.0 + react-transition-group: 4.4.5_biqbaboplfbrettd7655fr4n2y + react-use-gesture: 9.1.3_react@18.2.0 + react-virtualized-auto-sizer: 1.0.6_biqbaboplfbrettd7655fr4n2y + react-virtuoso: 2.18.0_biqbaboplfbrettd7655fr4n2y socket.io-client: 4.5.1 source-ref-runtime: 1.0.7 tailchat-design: link:../packages/design @@ -404,25 +402,25 @@ importers: yup: 0.32.11 devDependencies: '@testing-library/jest-dom': 5.16.5 - '@testing-library/react': 12.1.5_sfoxds7t5ydpegc3knd667wn6m - '@testing-library/react-hooks': 7.0.2_sfoxds7t5ydpegc3knd667wn6m + '@testing-library/react': 12.1.5_biqbaboplfbrettd7655fr4n2y + '@testing-library/react-hooks': 7.0.2_biqbaboplfbrettd7655fr4n2y '@types/copy-webpack-plugin': 8.0.1_webpack-cli@4.10.0 '@types/dts-generator': 2.1.7 '@types/emoji-mart': 3.0.9 '@types/fs-extra': 9.0.13 '@types/is-hotkey': 0.1.7 - '@types/jest': 27.5.2 + '@types/jest': 29.0.3 '@types/loadable__component': 5.13.4 '@types/lodash': 4.14.184 '@types/mini-css-extract-plugin': 1.4.3_webpack-cli@4.10.0 '@types/minimatch': 3.0.5 '@types/node': 15.14.9 '@types/qs': 6.9.7 - '@types/react': 17.0.48 - '@types/react-dom': 17.0.17 + '@types/react': 18.0.20 + '@types/react-dom': 18.0.6 '@types/react-helmet': 6.1.5 '@types/react-mentions': 4.1.6 - '@types/react-router': 5.1.18 + '@types/react-router': 5.1.19 '@types/react-router-dom': 5.3.3 '@types/react-transition-group': 4.4.5 '@types/react-virtualized': 9.21.21 @@ -456,7 +454,7 @@ importers: source-ref-loader: 1.0.7 style-loader: 3.3.1_webpack@5.73.0 tailchat-plugin-declaration-generator: link:../packages/plugin-declaration-generator - ts-jest: 27.1.5_mqaoisgizytgigbr3gbjwvnjie + ts-jest: 27.1.5_siyob6oprabago5lwveopqxjxy ts-node: 10.9.1_bqee57coj3oib6dw4m24wknwqe tsconfig-paths: 3.14.1 tsconfig-paths-webpack-plugin: 3.5.2 @@ -474,41 +472,41 @@ importers: '@bbob/parser': ^2.7.0 '@types/react-highlight': ^0.12.5 highlight.js: ^11.5.1 - react: 17.0.2 - react-dom: 17.0.2 + react: 18.2.0 + react-dom: 18.2.0 react-highlight: ^0.14.0 url-regex: ^5.0.0 dependencies: '@bbob/parser': 2.8.1 highlight.js: 11.6.0 - react-highlight: 0.14.0_sfoxds7t5ydpegc3knd667wn6m + react-highlight: 0.14.0_biqbaboplfbrettd7655fr4n2y url-regex: 5.0.0 devDependencies: '@types/react-highlight': 0.12.5 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 client/web/plugins/com.msgbyte.draw: specifiers: '@types/react-canvas-draw': ^1.1.1 - react: 17.0.2 + react: 18.2.0 react-canvas-draw: ^1.2.1 dependencies: - react-canvas-draw: 1.2.1_react@17.0.2 + react-canvas-draw: 1.2.1_react@18.2.0 devDependencies: '@types/react-canvas-draw': 1.2.0 - react: 17.0.2 + react: 18.2.0 client/web/plugins/com.msgbyte.genshin: specifiers: genshin-gacha-kit: ^1.1.0 html-react-parser: ^1.4.5 - react: 17.0.2 + react: 18.2.0 dependencies: genshin-gacha-kit: 1.1.0 - html-react-parser: 1.4.14_react@17.0.2 + html-react-parser: 1.4.14_react@18.2.0 devDependencies: - react: 17.0.2 + react: 18.2.0 client/web/plugins/com.msgbyte.intro: specifiers: @@ -794,16 +792,16 @@ importers: server/plugins/com.msgbyte.meeting/web/plugins/com.msgbyte.meeting: specifiers: - '@types/react': ^17.0.38 + '@types/react': 18.0.20 '@types/react-router': ^5.1.18 - react: 17.0.2 + react: 18.2.0 tailchat-meeting-sdk: 1.2.4 dependencies: tailchat-meeting-sdk: 1.2.4 devDependencies: - '@types/react': 17.0.48 + '@types/react': 18.0.20 '@types/react-router': 5.1.18 - react: 17.0.2 + react: 18.2.0 server/plugins/com.msgbyte.simplenotify: specifiers: @@ -813,11 +811,11 @@ importers: server/plugins/com.msgbyte.simplenotify/web/plugins/com.msgbyte.simplenotify: specifiers: - '@types/react': ^17.0.38 - react: 17.0.2 + '@types/react': 18.0.20 + react: 18.2.0 devDependencies: - '@types/react': 17.0.48 - react: 17.0.2 + '@types/react': 18.0.20 + react: 18.2.0 server/plugins/com.msgbyte.tasks: specifiers: @@ -1013,7 +1011,7 @@ packages: resolution: {integrity: sha512-EB0iwlKDGpG93hW8f85CTJTs4SvMX7tt5ceupvhALp1IF44SeUFOMhKUOYqpsoYWQKAOuTRDMqn75rEaKDp0Xw==} dev: false - /@ant-design/icons/4.7.0_sfoxds7t5ydpegc3knd667wn6m: + /@ant-design/icons/4.7.0_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-aoB4Z7JA431rt6d4u+8xcNPPCrdufSRMUOpxa1ab6mz1JCQZOEVolj2WVs/tDFmN62zzK30mNelEsprLYsSF3g==} engines: {node: '>=8'} peerDependencies: @@ -1024,12 +1022,12 @@ packages: '@ant-design/icons-svg': 4.2.1 '@babel/runtime': 7.18.9 classnames: 2.3.1 - rc-util: 5.23.0_sfoxds7t5ydpegc3knd667wn6m - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + rc-util: 5.23.0_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 dev: false - /@ant-design/react-slick/0.29.2_react@17.0.2: + /@ant-design/react-slick/0.29.2_react@18.2.0: resolution: {integrity: sha512-kgjtKmkGHa19FW21lHnAfyyH9AAoh35pBdcJ53rHmQ3O+cfFHGHnUbj/HFrRNJ5vIts09FKJVAD8RpaC+RaWfA==} peerDependencies: react: '>=16.9.0' @@ -1038,7 +1036,7 @@ packages: classnames: 2.3.1 json2mq: 0.2.0 lodash: 4.17.21 - react: 17.0.2 + react: 18.2.0 resize-observer-polyfill: 1.5.1 dev: false @@ -2701,7 +2699,7 @@ packages: engines: {node: '>=10'} dev: false - /@design-systems/utils/2.12.0_sk3eihvpffgp52mstba5zhq3vu: + /@design-systems/utils/2.12.0_7ey2zzynotv32rpkwno45fsx4e: resolution: {integrity: sha512-Y/d2Zzr+JJfN6u1gbuBUb1ufBuLMJJRZQk+dRmw8GaTpqKx5uf7cGUYGTwN02dIb3I+Tf+cW8jcGBTRiFxdYFg==} peerDependencies: '@types/react': '*' @@ -2709,25 +2707,25 @@ packages: react-dom: '>= 16.8.6' dependencies: '@babel/runtime': 7.18.9 - '@types/react': 17.0.48 + '@types/react': 18.0.20 clsx: 1.2.1 focus-lock: 0.8.1 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 react-merge-refs: 1.1.0 dev: true - /@devtools-ds/object-inspector/1.2.0_sk3eihvpffgp52mstba5zhq3vu: + /@devtools-ds/object-inspector/1.2.0_7ey2zzynotv32rpkwno45fsx4e: resolution: {integrity: sha512-VztcwqVwScSvYdvJVZBJYsVO/2Pew3JPpFV3T9fuCHQLlHcLYOV3aU/kBS2ScuE2O1JN0ZbobLqFLa3vQF54Fw==} peerDependencies: react: '>= 16.8.6' dependencies: '@babel/runtime': 7.7.2 '@devtools-ds/object-parser': 1.2.0 - '@devtools-ds/themes': 1.2.0_sk3eihvpffgp52mstba5zhq3vu - '@devtools-ds/tree': 1.2.0_sk3eihvpffgp52mstba5zhq3vu + '@devtools-ds/themes': 1.2.0_7ey2zzynotv32rpkwno45fsx4e + '@devtools-ds/tree': 1.2.0_7ey2zzynotv32rpkwno45fsx4e clsx: 1.1.0 - react: 17.0.2 + react: 18.2.0 transitivePeerDependencies: - '@types/react' - react-dom @@ -2739,29 +2737,29 @@ packages: '@babel/runtime': 7.5.5 dev: true - /@devtools-ds/themes/1.2.0_sk3eihvpffgp52mstba5zhq3vu: + /@devtools-ds/themes/1.2.0_7ey2zzynotv32rpkwno45fsx4e: resolution: {integrity: sha512-LimEITorE6yWZWWuMc6OiBfLQgPrQqWbyMEmfRUDPa3PHXoAY4SpDxczfg31fgyRDUNWnZhjaJH5bBbu8VEbIw==} peerDependencies: react: '>= 16.8.6' dependencies: '@babel/runtime': 7.5.5 - '@design-systems/utils': 2.12.0_sk3eihvpffgp52mstba5zhq3vu + '@design-systems/utils': 2.12.0_7ey2zzynotv32rpkwno45fsx4e clsx: 1.1.0 - react: 17.0.2 + react: 18.2.0 transitivePeerDependencies: - '@types/react' - react-dom dev: true - /@devtools-ds/tree/1.2.0_sk3eihvpffgp52mstba5zhq3vu: + /@devtools-ds/tree/1.2.0_7ey2zzynotv32rpkwno45fsx4e: resolution: {integrity: sha512-hC4g4ocuo2eg7jsnzKdauxH0sDQiPW3KSM2+uK3kRgcmr9PzpBD5Kob+Y/WFSVKswFleftOGKL4BQLuRv0sPxA==} peerDependencies: react: '>= 16.8.6' dependencies: '@babel/runtime': 7.7.2 - '@devtools-ds/themes': 1.2.0_sk3eihvpffgp52mstba5zhq3vu + '@devtools-ds/themes': 1.2.0_7ey2zzynotv32rpkwno45fsx4e clsx: 1.1.0 - react: 17.0.2 + react: 18.2.0 transitivePeerDependencies: - '@types/react' - react-dom @@ -3563,12 +3561,12 @@ packages: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true - /@iconify/react/3.2.2_react@17.0.2: + /@iconify/react/3.2.2_react@18.2.0: resolution: {integrity: sha512-z3+Jno3VcJzgNHsN5mEvYMsgCkOZkydqdIwOxjXh45+i2Vs9RGH68Y52vt39izwFSfuYUXhaW+1u7m7+IhCn/g==} peerDependencies: react: '>=16' dependencies: - react: 17.0.2 + react: 18.2.0 dev: false /@istanbuljs/load-nyc-config/1.1.0: @@ -3654,6 +3652,13 @@ packages: jest-mock: 27.5.1 dev: true + /@jest/expect-utils/29.0.3: + resolution: {integrity: sha512-i1xUkau7K/63MpdwiRqaxgZOjxYs4f0WMTGJnYwUKubsNRZSeQbLorS7+I4uXVF9KQ5r61BUPAUMZ7Lf66l64Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.0.0 + dev: true + /@jest/fake-timers/27.5.1: resolution: {integrity: sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -3713,6 +3718,13 @@ packages: - supports-color dev: true + /@jest/schemas/29.0.0: + resolution: {integrity: sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.24.42 + dev: true + /@jest/source-map/27.5.1: resolution: {integrity: sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -3812,6 +3824,18 @@ packages: chalk: 4.1.2 dev: true + /@jest/types/29.0.3: + resolution: {integrity: sha512-coBJmOQvurXjN1Hh5PzF7cmsod0zLIOXpP8KD161mqNlroMhLcwpODiEzi7ZsRl5Z/AIuxpeNm8DCl43F4kz8A==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.0.0 + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 18.7.11 + '@types/yargs': 17.0.12 + chalk: 4.1.2 + dev: true + /@jridgewell/gen-mapping/0.1.1: resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} engines: {node: '>=6.0.0'} @@ -3866,7 +3890,7 @@ packages: /@leichtgewicht/ip-codec/2.0.4: resolution: {integrity: sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==} - /@loadable/component/5.15.2_react@17.0.2: + /@loadable/component/5.15.2_react@18.2.0: resolution: {integrity: sha512-ryFAZOX5P2vFkUdzaAtTG88IGnr9qxSdvLRvJySXcUA4B4xVWurUNADu3AnKPksxOZajljqTrDEDcYjeL4lvLw==} engines: {node: '>=8'} peerDependencies: @@ -3874,7 +3898,7 @@ packages: dependencies: '@babel/runtime': 7.18.9 hoist-non-react-statics: 3.3.2 - react: 17.0.2 + react: 18.2.0 react-is: 16.13.1 dev: false @@ -3909,6 +3933,15 @@ packages: react: ^16.13.1 || ^17.0.0 dependencies: react: 17.0.2 + dev: false + + /@mdx-js/react/1.6.22_react@18.2.0: + resolution: {integrity: sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==} + peerDependencies: + react: ^16.13.1 || ^17.0.0 + dependencies: + react: 18.2.0 + dev: true /@mdx-js/util/1.6.22: resolution: {integrity: sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==} @@ -4038,7 +4071,7 @@ packages: resolution: {integrity: sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==} dev: false - /@reduxjs/toolkit/1.8.5_bjryulbxll5jujtwpu5a2wm2cy: + /@reduxjs/toolkit/1.8.5_kkwg4cbsojnjnupd3btipussee: resolution: {integrity: sha512-f4D5EXO7A7Xq35T0zRbWq5kJQyXzzscnHKmjnu2+37B3rwHU6mX9PYlbfXdnxcY6P/7zfmjhgan0Z+yuOfeBmA==} peerDependencies: react: ^16.9.0 || ^17.0.0 || ^18 @@ -4050,13 +4083,18 @@ packages: optional: true dependencies: immer: 9.0.15 - react: 17.0.2 - react-redux: 7.2.8_react@17.0.2 + react: 18.2.0 + react-redux: 8.0.2_w5j4k42lgipnm43s3brx6h3c34 redux: 4.2.0 redux-thunk: 2.4.1_redux@4.2.0 reselect: 4.1.6 dev: false + /@remix-run/router/1.0.0: + resolution: {integrity: sha512-SCR1cxRSMNKjaVYptCzBApPDqGwa3FGdjVHc+rOToocNPHQdIYLZBfv/3f+KvYuXDkUGVIW9IAzmPNZDRL1I4A==} + engines: {node: '>=14'} + dev: false + /@rollup/plugin-babel/5.3.1_2uin6pbxavst3oir53roxbd5qi: resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} engines: {node: '>= 10.0.0'} @@ -4199,6 +4237,10 @@ packages: /@sideway/pinpoint/2.0.0: resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} + /@sinclair/typebox/0.24.42: + resolution: {integrity: sha512-d+2AtrHGyWek2u2ITF0lHRIv6Tt7X0dEHW+0rP+5aDCEjC3fiN2RBjrLD0yU0at52BcZbRGxLbAtXiR0hFCjYw==} + dev: true + /@sindresorhus/is/0.14.0: resolution: {integrity: sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==} engines: {node: '>=6'} @@ -4254,7 +4296,7 @@ packages: - supports-color dev: false - /@storybook/addon-actions/6.5.10_sfoxds7t5ydpegc3knd667wn6m: + /@storybook/addon-actions/6.5.10_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-vpCnEu81fmtYzOf0QsRYoDuf9wXgVVl2VysE1dWRebRhIUDU0JurrthTnw322e38D4FzaoNGqZE7wnBYBohzZA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -4265,22 +4307,22 @@ packages: react-dom: optional: true dependencies: - '@storybook/addons': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/api': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/addons': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/api': 6.5.10_biqbaboplfbrettd7655fr4n2y '@storybook/client-logger': 6.5.10 - '@storybook/components': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/components': 6.5.10_biqbaboplfbrettd7655fr4n2y '@storybook/core-events': 6.5.10 '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@storybook/theming': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/theming': 6.5.10_biqbaboplfbrettd7655fr4n2y core-js: 3.25.0 fast-deep-equal: 3.1.3 global: 4.4.0 lodash: 4.17.21 polished: 4.2.2 prop-types: 15.8.1 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - react-inspector: 5.1.1_react@17.0.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + react-inspector: 5.1.1_react@18.2.0 regenerator-runtime: 0.13.9 telejson: 6.0.8 ts-dedent: 2.2.0 @@ -4288,7 +4330,7 @@ packages: uuid-browser: 3.1.0 dev: true - /@storybook/addon-backgrounds/6.5.10_sfoxds7t5ydpegc3knd667wn6m: + /@storybook/addon-backgrounds/6.5.10_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-5uzQda3dh891h7BL8e9Ymk7BI+QgkkzDJXuA4mHjOXfIiD3S3efhJI8amXuBC2ZpIr6zmVit0MqZVyoVve46cQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -4299,24 +4341,24 @@ packages: react-dom: optional: true dependencies: - '@storybook/addons': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/api': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/addons': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/api': 6.5.10_biqbaboplfbrettd7655fr4n2y '@storybook/client-logger': 6.5.10 - '@storybook/components': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/components': 6.5.10_biqbaboplfbrettd7655fr4n2y '@storybook/core-events': 6.5.10 '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@storybook/theming': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/theming': 6.5.10_biqbaboplfbrettd7655fr4n2y core-js: 3.25.0 global: 4.4.0 memoizerific: 1.11.3 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 regenerator-runtime: 0.13.9 ts-dedent: 2.2.0 util-deprecate: 1.0.2 dev: true - /@storybook/addon-controls/6.5.10_3tgeifm2vmwrlpqlopppsnjtcu: + /@storybook/addon-controls/6.5.10_xrxvbtylmve4l2tr3vmmqgfp7q: resolution: {integrity: sha512-lC2y3XcolmQAJwFurIyGrynAHPWmfNtTCdu3rQBTVGwyxCoNwdOOeC2jV0BRqX2+CW6OHzJr9frNWXPSaZ8c4w==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -4327,19 +4369,19 @@ packages: react-dom: optional: true dependencies: - '@storybook/addons': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/api': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/addons': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/api': 6.5.10_biqbaboplfbrettd7655fr4n2y '@storybook/client-logger': 6.5.10 - '@storybook/components': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/core-common': 6.5.10_3tgeifm2vmwrlpqlopppsnjtcu + '@storybook/components': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/core-common': 6.5.10_xrxvbtylmve4l2tr3vmmqgfp7q '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/node-logger': 6.5.10 - '@storybook/store': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/theming': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/store': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/theming': 6.5.10_biqbaboplfbrettd7655fr4n2y core-js: 3.25.0 lodash: 4.17.21 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 ts-dedent: 2.2.0 transitivePeerDependencies: - eslint @@ -4350,7 +4392,7 @@ packages: - webpack-command dev: true - /@storybook/addon-docs/6.5.10_syz2u4gb4ghy424l3cvhntynam: + /@storybook/addon-docs/6.5.10_mlovdwii52utbxpe4cy7chdr7u: resolution: {integrity: sha512-1kgjo3f0vL6GN8fTwLL05M/q/kDdzvuqwhxPY/v5hubFb3aQZGr2yk9pRBaLAbs4bez0yG0ASXcwhYnrEZUppg==} peerDependencies: '@storybook/mdx2-csf': ^0.0.3 @@ -4367,28 +4409,28 @@ packages: '@babel/plugin-transform-react-jsx': 7.18.10_@babel+core@7.18.13 '@babel/preset-env': 7.18.10_@babel+core@7.18.13 '@jest/transform': 26.6.2 - '@mdx-js/react': 1.6.22_react@17.0.2 - '@storybook/addons': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/api': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/components': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/core-common': 6.5.10_3tgeifm2vmwrlpqlopppsnjtcu + '@mdx-js/react': 1.6.22_react@18.2.0 + '@storybook/addons': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/api': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/components': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/core-common': 6.5.10_xrxvbtylmve4l2tr3vmmqgfp7q '@storybook/core-events': 6.5.10 '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@storybook/docs-tools': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/docs-tools': 6.5.10_biqbaboplfbrettd7655fr4n2y '@storybook/mdx1-csf': 0.0.1_@babel+core@7.18.13 '@storybook/node-logger': 6.5.10 '@storybook/postinstall': 6.5.10 - '@storybook/preview-web': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/source-loader': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/store': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/theming': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/preview-web': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/source-loader': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/store': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/theming': 6.5.10_biqbaboplfbrettd7655fr4n2y babel-loader: 8.2.5_tb6moc662p5idmcg3l5ipbhpta core-js: 3.25.0 fast-deep-equal: 3.1.3 global: 4.4.0 lodash: 4.17.21 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 regenerator-runtime: 0.13.9 remark-external-links: 8.0.0 remark-slug: 6.1.0 @@ -4405,7 +4447,7 @@ packages: - webpack-command dev: true - /@storybook/addon-essentials/6.5.10_syz2u4gb4ghy424l3cvhntynam: + /@storybook/addon-essentials/6.5.10_mlovdwii52utbxpe4cy7chdr7u: resolution: {integrity: sha512-PT2aiR4vgAyB0pl3HNBUa4/a7NDRxASxAazz7zt9ZDirkipDKfxwdcLeRoJzwSngVDWEhuz5/paN5x4eNp4Hww==} peerDependencies: '@babel/core': ^7.9.6 @@ -4463,21 +4505,21 @@ packages: optional: true dependencies: '@babel/core': 7.18.13 - '@storybook/addon-actions': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/addon-backgrounds': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/addon-controls': 6.5.10_3tgeifm2vmwrlpqlopppsnjtcu - '@storybook/addon-docs': 6.5.10_syz2u4gb4ghy424l3cvhntynam - '@storybook/addon-measure': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/addon-outline': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/addon-toolbars': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/addon-viewport': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/addons': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/api': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/core-common': 6.5.10_3tgeifm2vmwrlpqlopppsnjtcu + '@storybook/addon-actions': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/addon-backgrounds': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/addon-controls': 6.5.10_xrxvbtylmve4l2tr3vmmqgfp7q + '@storybook/addon-docs': 6.5.10_mlovdwii52utbxpe4cy7chdr7u + '@storybook/addon-measure': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/addon-outline': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/addon-toolbars': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/addon-viewport': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/addons': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/api': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/core-common': 6.5.10_xrxvbtylmve4l2tr3vmmqgfp7q '@storybook/node-logger': 6.5.10 core-js: 3.25.0 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 regenerator-runtime: 0.13.9 ts-dedent: 2.2.0 webpack: 5.74.0 @@ -4491,7 +4533,7 @@ packages: - webpack-command dev: true - /@storybook/addon-interactions/6.5.10_dscil3oxjefkmogs52lepurcyi: + /@storybook/addon-interactions/6.5.10_c2daxqjlqzcqoaozjw55oq2dvq: resolution: {integrity: sha512-+O/ZuQjonpFmTdFRqjCimQTx4S4c1+S3dYCn6gD/E4xzqlQn1BQaER3paX/aBUKb3oRaSO9RUQ+uxePM4zBEwA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -4502,22 +4544,22 @@ packages: react-dom: optional: true dependencies: - '@devtools-ds/object-inspector': 1.2.0_sk3eihvpffgp52mstba5zhq3vu - '@storybook/addons': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/api': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@devtools-ds/object-inspector': 1.2.0_7ey2zzynotv32rpkwno45fsx4e + '@storybook/addons': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/api': 6.5.10_biqbaboplfbrettd7655fr4n2y '@storybook/client-logger': 6.5.10 - '@storybook/components': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/core-common': 6.5.10_3tgeifm2vmwrlpqlopppsnjtcu + '@storybook/components': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/core-common': 6.5.10_xrxvbtylmve4l2tr3vmmqgfp7q '@storybook/core-events': 6.5.10 '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@storybook/instrumenter': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/theming': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/instrumenter': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/theming': 6.5.10_biqbaboplfbrettd7655fr4n2y core-js: 3.25.0 global: 4.4.0 jest-mock: 27.5.1 polished: 4.2.2 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' @@ -4529,7 +4571,7 @@ packages: - webpack-command dev: true - /@storybook/addon-links/6.5.10_sfoxds7t5ydpegc3knd667wn6m: + /@storybook/addon-links/6.5.10_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-r3WzYIPz7WjHiaPObC2Tg6bHuZRBb/Kt/X+Eitw+jTqBel7ksvkO36tn81q8Eyj61qIdNQmUWAaX/0aewT0kLA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -4540,23 +4582,23 @@ packages: react-dom: optional: true dependencies: - '@storybook/addons': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/addons': 6.5.10_biqbaboplfbrettd7655fr4n2y '@storybook/client-logger': 6.5.10 '@storybook/core-events': 6.5.10 '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@storybook/router': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/router': 6.5.10_biqbaboplfbrettd7655fr4n2y '@types/qs': 6.9.7 core-js: 3.25.0 global: 4.4.0 prop-types: 15.8.1 qs: 6.11.0 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 regenerator-runtime: 0.13.9 ts-dedent: 2.2.0 dev: true - /@storybook/addon-measure/6.5.10_sfoxds7t5ydpegc3knd667wn6m: + /@storybook/addon-measure/6.5.10_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-ss7L1H5K5hXygDIoVwj+QyVXbve5V67x7CofLiLCgQYuJzfO16+sPGjiTGWMpTb4ijox2uKWnTkpilt5bCjXgw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -4567,19 +4609,19 @@ packages: react-dom: optional: true dependencies: - '@storybook/addons': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/api': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/addons': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/api': 6.5.10_biqbaboplfbrettd7655fr4n2y '@storybook/client-logger': 6.5.10 - '@storybook/components': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/components': 6.5.10_biqbaboplfbrettd7655fr4n2y '@storybook/core-events': 6.5.10 '@storybook/csf': 0.0.2--canary.4566f4d.1 core-js: 3.25.0 global: 4.4.0 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 dev: true - /@storybook/addon-outline/6.5.10_sfoxds7t5ydpegc3knd667wn6m: + /@storybook/addon-outline/6.5.10_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-AjdaeQ+/iBKmGrAqRW4niwMB6AkgGnYmSzVs5Cf6F/Sb4Dp+vzgLNOwLABD9qs8Ri8dvHl5J4QpVwQKUhYZaOQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -4590,21 +4632,21 @@ packages: react-dom: optional: true dependencies: - '@storybook/addons': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/api': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/addons': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/api': 6.5.10_biqbaboplfbrettd7655fr4n2y '@storybook/client-logger': 6.5.10 - '@storybook/components': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/components': 6.5.10_biqbaboplfbrettd7655fr4n2y '@storybook/core-events': 6.5.10 '@storybook/csf': 0.0.2--canary.4566f4d.1 core-js: 3.25.0 global: 4.4.0 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 regenerator-runtime: 0.13.9 ts-dedent: 2.2.0 dev: true - /@storybook/addon-toolbars/6.5.10_sfoxds7t5ydpegc3knd667wn6m: + /@storybook/addon-toolbars/6.5.10_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-S0Ljc6Wv+bPbx2e0iTveJ6bBDqjsemu+FZD4qDLsHreoI7DAcqyrF5Def1l8xNohixIVpx8dQpYXRtyzNlXekg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -4615,18 +4657,18 @@ packages: react-dom: optional: true dependencies: - '@storybook/addons': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/api': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/addons': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/api': 6.5.10_biqbaboplfbrettd7655fr4n2y '@storybook/client-logger': 6.5.10 - '@storybook/components': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/theming': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/components': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/theming': 6.5.10_biqbaboplfbrettd7655fr4n2y core-js: 3.25.0 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 regenerator-runtime: 0.13.9 dev: true - /@storybook/addon-viewport/6.5.10_sfoxds7t5ydpegc3knd667wn6m: + /@storybook/addon-viewport/6.5.10_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-RFMd+4kZljyuJjR9OJ2bFXHrSG7VTi5FDZYWEU+4W1sBxzC+JhnVnUP+HJH3gUxEFIRQC5neRzwWRE9RUUoALQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -4637,43 +4679,43 @@ packages: react-dom: optional: true dependencies: - '@storybook/addons': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/api': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/addons': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/api': 6.5.10_biqbaboplfbrettd7655fr4n2y '@storybook/client-logger': 6.5.10 - '@storybook/components': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/components': 6.5.10_biqbaboplfbrettd7655fr4n2y '@storybook/core-events': 6.5.10 - '@storybook/theming': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/theming': 6.5.10_biqbaboplfbrettd7655fr4n2y core-js: 3.25.0 global: 4.4.0 memoizerific: 1.11.3 prop-types: 15.8.1 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 regenerator-runtime: 0.13.9 dev: true - /@storybook/addons/6.5.10_sfoxds7t5ydpegc3knd667wn6m: + /@storybook/addons/6.5.10_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-VD4tBCQ23PkSeDoxuHcKy0RfhIs3oMYjBacOZx7d0bvOzK9WjPyvE2ysDAh7r/ceqnwmWHAScIpE+I1RU7gl+g==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@storybook/api': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/api': 6.5.10_biqbaboplfbrettd7655fr4n2y '@storybook/channels': 6.5.10 '@storybook/client-logger': 6.5.10 '@storybook/core-events': 6.5.10 '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@storybook/router': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/theming': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/router': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/theming': 6.5.10_biqbaboplfbrettd7655fr4n2y '@types/webpack-env': 1.18.0 core-js: 3.25.0 global: 4.4.0 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 regenerator-runtime: 0.13.9 dev: true - /@storybook/api/6.5.10_sfoxds7t5ydpegc3knd667wn6m: + /@storybook/api/6.5.10_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-AkmgSPNEGdKp4oZA4KQ+RJsacw7GwfvjsVDnCkcXqS9zmSr/RNL0fhpcd60KKkmx/hGKPTDFpK3ZayxDrJ/h4A==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -4683,16 +4725,16 @@ packages: '@storybook/client-logger': 6.5.10 '@storybook/core-events': 6.5.10 '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@storybook/router': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/router': 6.5.10_biqbaboplfbrettd7655fr4n2y '@storybook/semver': 7.3.2 - '@storybook/theming': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/theming': 6.5.10_biqbaboplfbrettd7655fr4n2y core-js: 3.25.0 fast-deep-equal: 3.1.3 global: 4.4.0 lodash: 4.17.21 memoizerific: 1.11.3 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 regenerator-runtime: 0.13.9 store2: 2.14.2 telejson: 6.0.8 @@ -4700,7 +4742,7 @@ packages: util-deprecate: 1.0.2 dev: true - /@storybook/builder-webpack4/6.5.10_3tgeifm2vmwrlpqlopppsnjtcu: + /@storybook/builder-webpack4/6.5.10_xrxvbtylmve4l2tr3vmmqgfp7q: resolution: {integrity: sha512-AoKjsCNoQQoZXYwBDxO8s+yVEd5FjBJAaysEuUTHq2fb81jwLrGcEOo6hjw4jqfugZQIzYUEjPazlvubS78zpw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -4711,22 +4753,22 @@ packages: optional: true dependencies: '@babel/core': 7.18.13 - '@storybook/addons': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/api': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/addons': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/api': 6.5.10_biqbaboplfbrettd7655fr4n2y '@storybook/channel-postmessage': 6.5.10 '@storybook/channels': 6.5.10 - '@storybook/client-api': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/client-api': 6.5.10_biqbaboplfbrettd7655fr4n2y '@storybook/client-logger': 6.5.10 - '@storybook/components': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/core-common': 6.5.10_3tgeifm2vmwrlpqlopppsnjtcu + '@storybook/components': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/core-common': 6.5.10_xrxvbtylmve4l2tr3vmmqgfp7q '@storybook/core-events': 6.5.10 '@storybook/node-logger': 6.5.10 - '@storybook/preview-web': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/router': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/preview-web': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/router': 6.5.10_biqbaboplfbrettd7655fr4n2y '@storybook/semver': 7.3.2 - '@storybook/store': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/theming': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/ui': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/store': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/theming': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/ui': 6.5.10_biqbaboplfbrettd7655fr4n2y '@types/node': 16.11.7 '@types/webpack': 4.41.32 autoprefixer: 9.8.8 @@ -4746,8 +4788,8 @@ packages: postcss-flexbugs-fixes: 4.2.1 postcss-loader: 4.3.0_gzaxsinx64nntyd3vmdqwl7coe raw-loader: 4.0.2_webpack@4.46.0 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 stable: 0.1.8 style-loader: 1.3.0_webpack@4.46.0 terser-webpack-plugin: 4.2.3_webpack@4.46.0 @@ -4799,19 +4841,19 @@ packages: util-deprecate: 1.0.2 dev: true - /@storybook/client-api/6.5.10_sfoxds7t5ydpegc3knd667wn6m: + /@storybook/client-api/6.5.10_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-3wBWZl3NvMFgMovgEh+euiARAT2FXzpvTF4Q1gerGMNNDlrGxHnFvSuy4FHg/irtOGLa4yLz43ULFbYtpKw0Lg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@storybook/addons': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/addons': 6.5.10_biqbaboplfbrettd7655fr4n2y '@storybook/channel-postmessage': 6.5.10 '@storybook/channels': 6.5.10 '@storybook/client-logger': 6.5.10 '@storybook/core-events': 6.5.10 '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@storybook/store': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/store': 6.5.10_biqbaboplfbrettd7655fr4n2y '@types/qs': 6.9.7 '@types/webpack-env': 1.18.0 core-js: 3.25.0 @@ -4820,8 +4862,8 @@ packages: lodash: 4.17.21 memoizerific: 1.11.3 qs: 6.11.0 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 regenerator-runtime: 0.13.9 store2: 2.14.2 synchronous-promise: 2.0.15 @@ -4836,7 +4878,7 @@ packages: global: 4.4.0 dev: true - /@storybook/components/6.5.10_sfoxds7t5ydpegc3knd667wn6m: + /@storybook/components/6.5.10_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-9OhgB8YQfGwOKjo/N96N5mrtJ6qDVVoEM1zuhea32tJUd2eYf0aSWpryA9VnOM0V1q/8DAoCg5rPBMYWMBU5uw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -4844,17 +4886,17 @@ packages: dependencies: '@storybook/client-logger': 6.5.10 '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@storybook/theming': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/theming': 6.5.10_biqbaboplfbrettd7655fr4n2y core-js: 3.25.0 memoizerific: 1.11.3 qs: 6.11.0 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 regenerator-runtime: 0.13.9 util-deprecate: 1.0.2 dev: true - /@storybook/core-client/6.5.10_4sdqlsoxym7xacxzegmrxhkig4: + /@storybook/core-client/6.5.10_c3hoyc4loabfhtyuh36vjkyyai: resolution: {integrity: sha512-THsIjNrOrampTl0Lgfjvfjk1JnktKb4CQLOM80KpQb4cjDqorBjJmErzUkUQ2y3fXvrDmQ/kUREkShET4XEdtA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -4865,33 +4907,33 @@ packages: typescript: optional: true dependencies: - '@storybook/addons': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/addons': 6.5.10_biqbaboplfbrettd7655fr4n2y '@storybook/channel-postmessage': 6.5.10 '@storybook/channel-websocket': 6.5.10 - '@storybook/client-api': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/client-api': 6.5.10_biqbaboplfbrettd7655fr4n2y '@storybook/client-logger': 6.5.10 '@storybook/core-events': 6.5.10 '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@storybook/preview-web': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/store': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/ui': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/preview-web': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/store': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/ui': 6.5.10_biqbaboplfbrettd7655fr4n2y airbnb-js-shims: 2.2.1 ansi-to-html: 0.6.15 core-js: 3.25.0 global: 4.4.0 lodash: 4.17.21 qs: 6.11.0 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 regenerator-runtime: 0.13.9 ts-dedent: 2.2.0 typescript: 4.7.4 unfetch: 4.2.0 util-deprecate: 1.0.2 - webpack: 5.74.0 + webpack: 4.46.0 dev: true - /@storybook/core-client/6.5.10_nr3pgmx2h5zpdn254wkqohm3sy: + /@storybook/core-client/6.5.10_qyk6idcafspi7uz7vy6757spbm: resolution: {integrity: sha512-THsIjNrOrampTl0Lgfjvfjk1JnktKb4CQLOM80KpQb4cjDqorBjJmErzUkUQ2y3fXvrDmQ/kUREkShET4XEdtA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -4902,33 +4944,33 @@ packages: typescript: optional: true dependencies: - '@storybook/addons': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/addons': 6.5.10_biqbaboplfbrettd7655fr4n2y '@storybook/channel-postmessage': 6.5.10 '@storybook/channel-websocket': 6.5.10 - '@storybook/client-api': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/client-api': 6.5.10_biqbaboplfbrettd7655fr4n2y '@storybook/client-logger': 6.5.10 '@storybook/core-events': 6.5.10 '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@storybook/preview-web': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/store': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/ui': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/preview-web': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/store': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/ui': 6.5.10_biqbaboplfbrettd7655fr4n2y airbnb-js-shims: 2.2.1 ansi-to-html: 0.6.15 core-js: 3.25.0 global: 4.4.0 lodash: 4.17.21 qs: 6.11.0 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 regenerator-runtime: 0.13.9 ts-dedent: 2.2.0 typescript: 4.7.4 unfetch: 4.2.0 util-deprecate: 1.0.2 - webpack: 4.46.0 + webpack: 5.74.0 dev: true - /@storybook/core-common/6.5.10_3tgeifm2vmwrlpqlopppsnjtcu: + /@storybook/core-common/6.5.10_xrxvbtylmve4l2tr3vmmqgfp7q: resolution: {integrity: sha512-Bx+VKkfWdrAmD8T51Sjq/mMhRaiapBHcpG4cU5bc3DMbg+LF2/yrgqv/cjVu+m5gHAzYCac5D7gqzBgvG7Myww==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -4982,8 +5024,8 @@ packages: picomatch: 2.3.1 pkg-dir: 5.0.0 pretty-hrtime: 1.0.3 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 resolve-from: 5.0.0 slash: 3.0.0 telejson: 6.0.8 @@ -5005,7 +5047,7 @@ packages: core-js: 3.25.0 dev: true - /@storybook/core-server/6.5.10_3tgeifm2vmwrlpqlopppsnjtcu: + /@storybook/core-server/6.5.10_xrxvbtylmve4l2tr3vmmqgfp7q: resolution: {integrity: sha512-jqwpA0ccA8X5ck4esWBid04+cEIVqirdAcqJeNb9IZAD+bRreO4Im8ilzr7jc5AmQ9fkqHs2NByFKh9TITp8NQ==} peerDependencies: '@storybook/builder-webpack5': '*' @@ -5022,17 +5064,17 @@ packages: optional: true dependencies: '@discoveryjs/json-ext': 0.5.7 - '@storybook/builder-webpack4': 6.5.10_3tgeifm2vmwrlpqlopppsnjtcu - '@storybook/core-client': 6.5.10_nr3pgmx2h5zpdn254wkqohm3sy - '@storybook/core-common': 6.5.10_3tgeifm2vmwrlpqlopppsnjtcu + '@storybook/builder-webpack4': 6.5.10_xrxvbtylmve4l2tr3vmmqgfp7q + '@storybook/core-client': 6.5.10_c3hoyc4loabfhtyuh36vjkyyai + '@storybook/core-common': 6.5.10_xrxvbtylmve4l2tr3vmmqgfp7q '@storybook/core-events': 6.5.10 '@storybook/csf': 0.0.2--canary.4566f4d.1 '@storybook/csf-tools': 6.5.10 - '@storybook/manager-webpack4': 6.5.10_3tgeifm2vmwrlpqlopppsnjtcu + '@storybook/manager-webpack4': 6.5.10_xrxvbtylmve4l2tr3vmmqgfp7q '@storybook/node-logger': 6.5.10 '@storybook/semver': 7.3.2 - '@storybook/store': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/telemetry': 6.5.10_3tgeifm2vmwrlpqlopppsnjtcu + '@storybook/store': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/telemetry': 6.5.10_xrxvbtylmve4l2tr3vmmqgfp7q '@types/node': 16.11.7 '@types/node-fetch': 2.6.2 '@types/pretty-hrtime': 1.0.1 @@ -5056,8 +5098,8 @@ packages: open: 8.4.0 pretty-hrtime: 1.0.3 prompts: 2.4.2 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 regenerator-runtime: 0.13.9 serve-favicon: 2.5.0 slash: 3.0.0 @@ -5082,7 +5124,7 @@ packages: - webpack-command dev: true - /@storybook/core/6.5.10_4sdqlsoxym7xacxzegmrxhkig4: + /@storybook/core/6.5.10_qyk6idcafspi7uz7vy6757spbm: resolution: {integrity: sha512-K86yYa0tYlMxADlwQTculYvPROokQau09SCVqpsLg3wJCTvYFL4+SIqcYoyBSbFmHOdnYbJgPydjN33MYLiOZQ==} peerDependencies: '@storybook/builder-webpack5': '*' @@ -5099,10 +5141,10 @@ packages: typescript: optional: true dependencies: - '@storybook/core-client': 6.5.10_4sdqlsoxym7xacxzegmrxhkig4 - '@storybook/core-server': 6.5.10_3tgeifm2vmwrlpqlopppsnjtcu - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + '@storybook/core-client': 6.5.10_qyk6idcafspi7uz7vy6757spbm + '@storybook/core-server': 6.5.10_xrxvbtylmve4l2tr3vmmqgfp7q + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 typescript: 4.7.4 webpack: 5.74.0 transitivePeerDependencies: @@ -5150,12 +5192,12 @@ packages: lodash: 4.17.21 dev: true - /@storybook/docs-tools/6.5.10_sfoxds7t5ydpegc3knd667wn6m: + /@storybook/docs-tools/6.5.10_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-/bvYgOO+CxMEcHifkjJg0A60OTGOhcjGxnsB1h0gJuxMrqA/7Qwc108bFmPiX0eiD1BovFkZLJV4O6OY7zP5Vw==} dependencies: '@babel/core': 7.18.13 '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@storybook/store': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/store': 6.5.10_biqbaboplfbrettd7655fr4n2y core-js: 3.25.0 doctrine: 3.0.0 lodash: 4.17.21 @@ -5166,10 +5208,10 @@ packages: - supports-color dev: true - /@storybook/instrumenter/6.5.10_sfoxds7t5ydpegc3knd667wn6m: + /@storybook/instrumenter/6.5.10_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-3yKJW68wTnGYEts2mJQG6M7ZE+fe54fuy5lBBzRtvWnC15uWTxuaiFp2kxH5b+stSCi4m71ws45RNiEafdBgEQ==} dependencies: - '@storybook/addons': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/addons': 6.5.10_biqbaboplfbrettd7655fr4n2y '@storybook/client-logger': 6.5.10 '@storybook/core-events': 6.5.10 core-js: 3.25.0 @@ -5179,7 +5221,7 @@ packages: - react-dom dev: true - /@storybook/manager-webpack4/6.5.10_3tgeifm2vmwrlpqlopppsnjtcu: + /@storybook/manager-webpack4/6.5.10_xrxvbtylmve4l2tr3vmmqgfp7q: resolution: {integrity: sha512-N/TlNDhuhARuFipR/ZJ/xEVESz23iIbCsZ4VNehLHm8PpiGlQUehk+jMjWmz5XV0bJItwjRclY+CU3GjZKblfQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -5192,12 +5234,12 @@ packages: '@babel/core': 7.18.13 '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.18.13 '@babel/preset-react': 7.18.6_@babel+core@7.18.13 - '@storybook/addons': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/core-client': 6.5.10_nr3pgmx2h5zpdn254wkqohm3sy - '@storybook/core-common': 6.5.10_3tgeifm2vmwrlpqlopppsnjtcu + '@storybook/addons': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/core-client': 6.5.10_c3hoyc4loabfhtyuh36vjkyyai + '@storybook/core-common': 6.5.10_xrxvbtylmve4l2tr3vmmqgfp7q '@storybook/node-logger': 6.5.10 - '@storybook/theming': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/ui': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/theming': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/ui': 6.5.10_biqbaboplfbrettd7655fr4n2y '@types/node': 16.11.7 '@types/webpack': 4.41.32 babel-loader: 8.2.5_li4tts7salxwv3rbqjnooz7t7e @@ -5212,8 +5254,8 @@ packages: html-webpack-plugin: 4.5.2_webpack@4.46.0 node-fetch: 2.6.7 pnp-webpack-plugin: 1.6.4_typescript@4.7.4 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 read-pkg-up: 7.0.1 regenerator-runtime: 0.13.9 resolve-from: 5.0.0 @@ -5272,25 +5314,25 @@ packages: core-js: 3.25.0 dev: true - /@storybook/preview-web/6.5.10_sfoxds7t5ydpegc3knd667wn6m: + /@storybook/preview-web/6.5.10_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-sTC/o5gkvALOtcNgtApGKGN9EavvSxRHBeBh+5BQjV2qQ8ap+26RsfUizNBECAa2Jrn4osaDYn9HRhJLFL69WA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@storybook/addons': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/addons': 6.5.10_biqbaboplfbrettd7655fr4n2y '@storybook/channel-postmessage': 6.5.10 '@storybook/client-logger': 6.5.10 '@storybook/core-events': 6.5.10 '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@storybook/store': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/store': 6.5.10_biqbaboplfbrettd7655fr4n2y ansi-to-html: 0.6.15 core-js: 3.25.0 global: 4.4.0 lodash: 4.17.21 qs: 6.11.0 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 regenerator-runtime: 0.13.9 synchronous-promise: 2.0.15 ts-dedent: 2.2.0 @@ -5317,7 +5359,7 @@ packages: - supports-color dev: true - /@storybook/react/6.5.10_d6mkdkfnct6ha2zsg6gmc4s2je: + /@storybook/react/6.5.10_jfnhpnggha6g774l6rshgax3nq: resolution: {integrity: sha512-m8S1qQrwA7pDGwdKEvL6LV3YKvSzVUY297Fq+xcTU3irnAy4sHDuFoLqV6Mi1510mErK1r8+rf+0R5rEXB219g==} engines: {node: '>=10.13.0'} hasBin: true @@ -5349,16 +5391,16 @@ packages: '@babel/preset-flow': 7.18.6_@babel+core@7.18.13 '@babel/preset-react': 7.18.6_@babel+core@7.18.13 '@pmmmwh/react-refresh-webpack-plugin': 0.5.7_metx475lqcp4j5c75za4zf7xbi - '@storybook/addons': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/addons': 6.5.10_biqbaboplfbrettd7655fr4n2y '@storybook/client-logger': 6.5.10 - '@storybook/core': 6.5.10_4sdqlsoxym7xacxzegmrxhkig4 - '@storybook/core-common': 6.5.10_3tgeifm2vmwrlpqlopppsnjtcu + '@storybook/core': 6.5.10_qyk6idcafspi7uz7vy6757spbm + '@storybook/core-common': 6.5.10_xrxvbtylmve4l2tr3vmmqgfp7q '@storybook/csf': 0.0.2--canary.4566f4d.1 - '@storybook/docs-tools': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/docs-tools': 6.5.10_biqbaboplfbrettd7655fr4n2y '@storybook/node-logger': 6.5.10 '@storybook/react-docgen-typescript-plugin': 1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0_xnp4kzegbjokq62cajex2ovgkm '@storybook/semver': 7.3.2 - '@storybook/store': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/store': 6.5.10_biqbaboplfbrettd7655fr4n2y '@types/estree': 0.0.51 '@types/node': 16.11.7 '@types/webpack-env': 1.18.0 @@ -5374,9 +5416,9 @@ packages: html-tags: 3.2.0 lodash: 4.17.21 prop-types: 15.8.1 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - react-element-to-jsx-string: 14.3.4_sfoxds7t5ydpegc3knd667wn6m + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + react-element-to-jsx-string: 14.3.4_biqbaboplfbrettd7655fr4n2y react-refresh: 0.11.0 read-pkg-up: 7.0.1 regenerator-runtime: 0.13.9 @@ -5406,7 +5448,7 @@ packages: - webpack-plugin-serve dev: true - /@storybook/router/6.5.10_sfoxds7t5ydpegc3knd667wn6m: + /@storybook/router/6.5.10_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-O+vNW/eEpYFF8eCg5jZjNQ6q2DKQVxqDRPCy9pJdEbvavMDZn6AFYgVK+VJe5F4211WW2yncOu922xObCxXJYg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -5416,8 +5458,8 @@ packages: core-js: 3.25.0 memoizerific: 1.11.3 qs: 6.11.0 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 regenerator-runtime: 0.13.9 dev: true @@ -5430,13 +5472,13 @@ packages: find-up: 4.1.0 dev: true - /@storybook/source-loader/6.5.10_sfoxds7t5ydpegc3knd667wn6m: + /@storybook/source-loader/6.5.10_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-1RxxRumpjs8VUUwES9LId+cuNQnixhZAcwCxd6jaKkTZbjiQCtAhXX6DBTjJGV1u/JnCsqEp5b1wB8j/EioNHw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@storybook/addons': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/addons': 6.5.10_biqbaboplfbrettd7655fr4n2y '@storybook/client-logger': 6.5.10 '@storybook/csf': 0.0.2--canary.4566f4d.1 core-js: 3.25.0 @@ -5445,18 +5487,18 @@ packages: loader-utils: 2.0.2 lodash: 4.17.21 prettier: 2.3.0 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 regenerator-runtime: 0.13.9 dev: true - /@storybook/store/6.5.10_sfoxds7t5ydpegc3knd667wn6m: + /@storybook/store/6.5.10_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-RswrSYh2IiKkytFPxP9AvP+hekjrvHK2ILvyDk2ZgduCN4n5ivsekOb+N3M2t+dq1eLuW9or5n2T4OWwAwjxxQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@storybook/addons': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/addons': 6.5.10_biqbaboplfbrettd7655fr4n2y '@storybook/client-logger': 6.5.10 '@storybook/core-events': 6.5.10 '@storybook/csf': 0.0.2--canary.4566f4d.1 @@ -5465,8 +5507,8 @@ packages: global: 4.4.0 lodash: 4.17.21 memoizerific: 1.11.3 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 regenerator-runtime: 0.13.9 slash: 3.0.0 stable: 0.1.8 @@ -5475,11 +5517,11 @@ packages: util-deprecate: 1.0.2 dev: true - /@storybook/telemetry/6.5.10_3tgeifm2vmwrlpqlopppsnjtcu: + /@storybook/telemetry/6.5.10_xrxvbtylmve4l2tr3vmmqgfp7q: resolution: {integrity: sha512-+M5HILDFS8nDumLxeSeAwi1MTzIuV6UWzV4yB2wcsEXOBTdplcl9oYqFKtlst78oOIdGtpPYxYfivDlqxC2K4g==} dependencies: '@storybook/client-logger': 6.5.10 - '@storybook/core-common': 6.5.10_3tgeifm2vmwrlpqlopppsnjtcu + '@storybook/core-common': 6.5.10_xrxvbtylmve4l2tr3vmmqgfp7q chalk: 4.1.2 core-js: 3.25.0 detect-package-manager: 2.0.1 @@ -5502,11 +5544,11 @@ packages: - webpack-command dev: true - /@storybook/testing-library/0.0.11_sfoxds7t5ydpegc3knd667wn6m: + /@storybook/testing-library/0.0.11_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-8KbKx3s1e+uF3oWlPdyXRpZa6xtCsCHtXh1nCTisMA6P5YcSDaCg59NXIOVIQCAwKvjRomlqMJH8JL1WyOzeVg==} dependencies: '@storybook/client-logger': 6.5.10 - '@storybook/instrumenter': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/instrumenter': 6.5.10_biqbaboplfbrettd7655fr4n2y '@testing-library/dom': 8.17.1 '@testing-library/user-event': 13.5.0_wl4iynrlixafokvgqnhzlvigei ts-dedent: 2.2.0 @@ -5515,7 +5557,7 @@ packages: - react-dom dev: true - /@storybook/theming/6.5.10_sfoxds7t5ydpegc3knd667wn6m: + /@storybook/theming/6.5.10_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-BvTQBBcSEwKKcsVmF+Ol6v0RIQUr+bxP7gb10wtfBd23mZTEFA0C1N5FnZr/dDeiBKG1pvf1UKvoYA731y0BsA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -5524,31 +5566,31 @@ packages: '@storybook/client-logger': 6.5.10 core-js: 3.25.0 memoizerific: 1.11.3 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 regenerator-runtime: 0.13.9 dev: true - /@storybook/ui/6.5.10_sfoxds7t5ydpegc3knd667wn6m: + /@storybook/ui/6.5.10_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-6iaoaRAiTqB1inTw35vao+5hjcDE0Qa0A3a9ZIeNa6yHvpB1k0lO/N/0PMrRdVvySYpXVD1iry4z4QYdo1rU+w==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@storybook/addons': 6.5.10_sfoxds7t5ydpegc3knd667wn6m - '@storybook/api': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/addons': 6.5.10_biqbaboplfbrettd7655fr4n2y + '@storybook/api': 6.5.10_biqbaboplfbrettd7655fr4n2y '@storybook/channels': 6.5.10 '@storybook/client-logger': 6.5.10 - '@storybook/components': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/components': 6.5.10_biqbaboplfbrettd7655fr4n2y '@storybook/core-events': 6.5.10 - '@storybook/router': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/router': 6.5.10_biqbaboplfbrettd7655fr4n2y '@storybook/semver': 7.3.2 - '@storybook/theming': 6.5.10_sfoxds7t5ydpegc3knd667wn6m + '@storybook/theming': 6.5.10_biqbaboplfbrettd7655fr4n2y core-js: 3.25.0 memoizerific: 1.11.3 qs: 6.11.0 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 regenerator-runtime: 0.13.9 resolve-from: 5.0.0 dev: true @@ -5846,7 +5888,7 @@ packages: resolution: {integrity: sha512-NLAe3j5Vk1yYEtoPP5fPGPjRzkZPx67KUM3f14L3InziJZJ0wVecCh7uKfgYkbRKJSeq6PlbND7iuCGdTplN6Q==} dev: false - /@tanstack/react-query-devtools/4.3.5_yaxhdf5vepihlkpjucjyrgjj3u: + /@tanstack/react-query-devtools/4.3.5_jkekd4jqbd6zkiapxsceyqr7ty: resolution: {integrity: sha512-Jb3HywQmvQDmyixNOzjv8xjksngguG9WjmJlBWjSBCcUFIm3GQGpeJYm62EnJmJ+lHMgDNWDr61UV7Fya8TVTA==} peerDependencies: '@tanstack/react-query': 4.3.4 @@ -5854,12 +5896,12 @@ packages: react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@tanstack/match-sorter-utils': 8.1.1 - '@tanstack/react-query': 4.3.4_react@17.0.2 - react: 17.0.2 - use-sync-external-store: 1.2.0_react@17.0.2 + '@tanstack/react-query': 4.3.4_react@18.2.0 + react: 18.2.0 + use-sync-external-store: 1.2.0_react@18.2.0 dev: false - /@tanstack/react-query/4.3.4_react@17.0.2: + /@tanstack/react-query/4.3.4_react@18.2.0: resolution: {integrity: sha512-IiAo+B8bxphEpO7xwLQaCptd2rY4Ef3pW1q9J3pT66G+J/st4QpGQ+cSm9iESp9ccRy1YNUk3klk/hQtWewl6g==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -5872,8 +5914,8 @@ packages: optional: true dependencies: '@tanstack/query-core': 4.3.4 - react: 17.0.2 - use-sync-external-store: 1.2.0_react@17.0.2 + react: 18.2.0 + use-sync-external-store: 1.2.0_react@18.2.0 dev: false /@testing-library/dom/8.17.1: @@ -5905,7 +5947,7 @@ packages: redent: 3.0.0 dev: true - /@testing-library/react-hooks/7.0.2_sfoxds7t5ydpegc3knd667wn6m: + /@testing-library/react-hooks/7.0.2_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-dYxpz8u9m4q1TuzfcUApqi8iFfR6R0FaMbr2hjZJy1uC8z+bO/K4v8Gs9eogGKYQop7QsrBTFkv/BCF7MzD2Cg==} engines: {node: '>=12'} peerDependencies: @@ -5920,14 +5962,14 @@ packages: dependencies: '@babel/runtime': 7.18.9 '@types/react': 18.0.20 - '@types/react-dom': 17.0.17 + '@types/react-dom': 18.0.6 '@types/react-test-renderer': 18.0.0 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - react-error-boundary: 3.1.4_react@17.0.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + react-error-boundary: 3.1.4_react@18.2.0 dev: true - /@testing-library/react/12.1.5_sfoxds7t5ydpegc3knd667wn6m: + /@testing-library/react/12.1.5_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-OfTXCJUFgjd/digLUuPxa0+/3ZxsQmE7ub9kcbW/wi96Bh3o/p5vrETcBGfP17NWPGqeYYl5LTRpwyGoMC4ysg==} engines: {node: '>=12'} peerDependencies: @@ -5937,8 +5979,8 @@ packages: '@babel/runtime': 7.18.9 '@testing-library/dom': 8.17.1 '@types/react-dom': 17.0.17 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 dev: true /@testing-library/user-event/13.5.0_wl4iynrlixafokvgqnhzlvigei: @@ -6235,6 +6277,7 @@ packages: dependencies: '@types/react': 18.0.20 hoist-non-react-statics: 3.3.2 + dev: false /@types/html-minifier-terser/5.1.2: resolution: {integrity: sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w==} @@ -6315,11 +6358,11 @@ packages: pretty-format: 26.6.2 dev: true - /@types/jest/27.5.2: - resolution: {integrity: sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==} + /@types/jest/29.0.3: + resolution: {integrity: sha512-F6ukyCTwbfsEX5F2YmVYmM5TcTHy1q9P5rWlRbrk56KyMh3v9xRGUO3aa8+SkvMi0SHXtASJv1283enXimC0Og==} dependencies: - jest-matcher-utils: 27.5.1 - pretty-format: 27.5.1 + expect: 29.0.3 + pretty-format: 29.0.3 dev: true /@types/js-cookie/2.2.7: @@ -6517,7 +6560,7 @@ packages: /@types/react-canvas-draw/1.2.0: resolution: {integrity: sha512-ZrGtORZSsF5ErpRiWw2/Yqwkf7CyCgcNfLnABb6kjCTsx8AjcepO3pkKOOYS7MqGyLHALB6GLuSALl1PtEpRhA==} dependencies: - '@types/react': 18.0.17 + '@types/react': 18.0.20 dev: true /@types/react-dom/17.0.17: @@ -6526,6 +6569,12 @@ packages: '@types/react': 17.0.48 dev: true + /@types/react-dom/18.0.6: + resolution: {integrity: sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA==} + dependencies: + '@types/react': 18.0.20 + dev: true + /@types/react-helmet/6.1.5: resolution: {integrity: sha512-/ICuy7OHZxR0YCAZLNg9r7I9aijWUWvxaPR6uTuyxe8tAj5RL4Sw1+R6NhXUtOsarkGYPmaHdBDvuXh2DIN/uA==} dependencies: @@ -6535,7 +6584,7 @@ packages: /@types/react-highlight/0.12.5: resolution: {integrity: sha512-P8+mTxltxDdQ+99l+pjn40clziSbNrZy5d5zmvG+j3jKzokAhCoCZlIRmmnFgETTYubuqwKjvXSlvesBZcTfvQ==} dependencies: - '@types/react': 18.0.17 + '@types/react': 18.0.20 dev: true /@types/react-mentions/4.1.6: @@ -6544,14 +6593,6 @@ packages: '@types/react': 18.0.20 dev: true - /@types/react-redux/7.1.24: - resolution: {integrity: sha512-7FkurKcS1k0FHZEtdbbgN8Oc6b+stGSfZYjQGicofJ0j4U0qIn/jaSvnP2pLwZKiai3/17xqqxkkrxTgN8UNbQ==} - dependencies: - '@types/hoist-non-react-statics': 3.3.1 - '@types/react': 18.0.17 - hoist-non-react-statics: 3.3.2 - redux: 4.2.0 - /@types/react-router-config/5.0.6: resolution: {integrity: sha512-db1mx37a1EJDf1XeX8jJN7R3PZABmJQXR8r28yUjVMFSjkmnQo6X6pOEEmNl+Tp2gYQOGPdYbFIipBtdElZ3Yg==} dependencies: @@ -6564,13 +6605,19 @@ packages: dependencies: '@types/history': 4.7.11 '@types/react': 18.0.20 - '@types/react-router': 5.1.18 + '@types/react-router': 5.1.19 /@types/react-router/5.1.18: resolution: {integrity: sha512-YYknwy0D0iOwKQgz9v8nOzt2J6l4gouBmDnWqUUznltOTaon+r8US8ky8HvN0tXvc38U9m6z/t2RsVsnd1zM0g==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.0.17 + '@types/react': 18.0.20 + + /@types/react-router/5.1.19: + resolution: {integrity: sha512-Fv/5kb2STAEMT3wHzdKQK2z8xKq38EDIGVrutYLmQVVLe+4orDFquU52hQrULnEHinMKv9FSA6lf9+uNT1ITtA==} + dependencies: + '@types/history': 4.7.11 + '@types/react': 18.0.20 /@types/react-test-renderer/18.0.0: resolution: {integrity: sha512-C7/5FBJ3g3sqUahguGi03O79b8afNeSD6T8/GU50oQrJCU0bVCCGQHaGKUbg2Ce8VQEEqTw8/HiS6lXHHdgkdQ==} @@ -6604,13 +6651,6 @@ packages: '@types/scheduler': 0.16.2 csstype: 3.1.0 - /@types/react/18.0.17: - resolution: {integrity: sha512-38ETy4tL+rn4uQQi7mB81G7V1g0u2ryquNmsVIOKUAEIDK+3CUjZ6rSRpdvS99dNBnkLFL83qfmtLacGOTIhwQ==} - dependencies: - '@types/prop-types': 15.7.5 - '@types/scheduler': 0.16.2 - csstype: 3.1.0 - /@types/react/18.0.20: resolution: {integrity: sha512-MWul1teSPxujEHVwZl4a5HxQ9vVNsjTchVA+xRqv/VYGCuKGAU6UhfrTdF5aBefwD1BHUD8i/zq+O/vyCm/FrA==} dependencies: @@ -6678,7 +6718,7 @@ packages: /@types/testing-library__jest-dom/5.14.5: resolution: {integrity: sha512-SBwbxYoyPIvxHbeHxTZX2Pe/74F/tX2/D3mMvzabdeJ25bBojfW0TyB8BHrbq/9zaaKICJZjLP+8r6AeZMFCuQ==} dependencies: - '@types/jest': 27.5.2 + '@types/jest': 29.0.3 dev: true /@types/through/0.0.30: @@ -6699,6 +6739,10 @@ packages: /@types/unist/2.0.6: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} + /@types/use-sync-external-store/0.0.3: + resolution: {integrity: sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==} + dev: false + /@types/webidl-conversions/6.1.1: resolution: {integrity: sha512-XAahCdThVuCFDQLT7R7Pk/vqeObFNL3YqRyFZg+AqAP/W1/w3xHaIxuW7WszQqTbIBOPRcItYJIou3i/mppu3Q==} @@ -6928,14 +6972,14 @@ packages: eslint-visitor-keys: 3.3.0 dev: true - /@virtuoso.dev/react-urx/0.2.13_react@17.0.2: + /@virtuoso.dev/react-urx/0.2.13_react@18.2.0: resolution: {integrity: sha512-MY0ugBDjFb5Xt8v2HY7MKcRGqw/3gTpMlLXId2EwQvYJoC8sP7nnXjAxcBtTB50KTZhO0SbzsFimaZ7pSdApwA==} engines: {node: '>=10'} peerDependencies: react: '>=16' dependencies: '@virtuoso.dev/urx': 0.2.13 - react: 17.0.2 + react: 18.2.0 dev: false /@virtuoso.dev/urx/0.2.13: @@ -7382,7 +7426,7 @@ packages: resolution: {integrity: sha512-V7uUvAwnimu6eh/PED4mCDjE7tokeZQLKlxg9lCTMPhN+NjsSbtdacByVlR1oluXQzD3MOw55wylDmQo4+S9ZQ==} dev: false - /ahooks/3.7.1_react@17.0.2: + /ahooks/3.7.1_react@18.2.0: resolution: {integrity: sha512-9fooKjhScNyJaIPnlWd13LkY1gQYqv3BqwSA9ynHg1ZUtDqAICuCRoedV97ylrEL6QqI4zeq3bO3lQxkfWVNcg==} engines: {node: '>=8.0.0'} peerDependencies: @@ -7394,7 +7438,7 @@ packages: intersection-observer: 0.12.2 js-cookie: 2.2.1 lodash: 4.17.21 - react: 17.0.2 + react: 18.2.0 resize-observer-polyfill: 1.5.1 screenfull: 5.2.0 dev: false @@ -7586,15 +7630,15 @@ packages: entities: 2.2.0 dev: true - /antd/4.22.8_sfoxds7t5ydpegc3knd667wn6m: + /antd/4.22.8_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-mqHuCg9itZX+z6wk+mvRBcfz/U9iiIXS4LoNkyo8X/UBgdN8CoetFmrdvA1UQy1BuWa0/n62LiS1LatdvoTuHw==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: '@ant-design/colors': 6.0.0 - '@ant-design/icons': 4.7.0_sfoxds7t5ydpegc3knd667wn6m - '@ant-design/react-slick': 0.29.2_react@17.0.2 + '@ant-design/icons': 4.7.0_biqbaboplfbrettd7655fr4n2y + '@ant-design/react-slick': 0.29.2_react@18.2.0 '@babel/runtime': 7.18.9 '@ctrl/tinycolor': 3.4.1 classnames: 2.3.1 @@ -7602,41 +7646,41 @@ packages: lodash: 4.17.21 memoize-one: 6.0.0 moment: 2.29.4 - rc-cascader: 3.6.2_sfoxds7t5ydpegc3knd667wn6m - rc-checkbox: 2.3.2_sfoxds7t5ydpegc3knd667wn6m - rc-collapse: 3.3.1_sfoxds7t5ydpegc3knd667wn6m - rc-dialog: 8.9.0_sfoxds7t5ydpegc3knd667wn6m - rc-drawer: 5.1.0_sfoxds7t5ydpegc3knd667wn6m - rc-dropdown: 4.0.1_sfoxds7t5ydpegc3knd667wn6m - rc-field-form: 1.27.1_sfoxds7t5ydpegc3knd667wn6m - rc-image: 5.7.1_sfoxds7t5ydpegc3knd667wn6m - rc-input: 0.0.1-alpha.7_sfoxds7t5ydpegc3knd667wn6m - rc-input-number: 7.3.6_sfoxds7t5ydpegc3knd667wn6m - rc-mentions: 1.9.2_sfoxds7t5ydpegc3knd667wn6m - rc-menu: 9.6.3_sfoxds7t5ydpegc3knd667wn6m - rc-motion: 2.6.2_sfoxds7t5ydpegc3knd667wn6m - rc-notification: 4.6.0_sfoxds7t5ydpegc3knd667wn6m - rc-pagination: 3.1.17_sfoxds7t5ydpegc3knd667wn6m - rc-picker: 2.6.10_sfoxds7t5ydpegc3knd667wn6m - rc-progress: 3.3.3_sfoxds7t5ydpegc3knd667wn6m - rc-rate: 2.9.2_sfoxds7t5ydpegc3knd667wn6m - rc-resize-observer: 1.2.0_sfoxds7t5ydpegc3knd667wn6m - rc-segmented: 2.1.0_sfoxds7t5ydpegc3knd667wn6m - rc-select: 14.1.9_sfoxds7t5ydpegc3knd667wn6m - rc-slider: 10.0.1_sfoxds7t5ydpegc3knd667wn6m - rc-steps: 4.1.4_sfoxds7t5ydpegc3knd667wn6m - rc-switch: 3.2.2_sfoxds7t5ydpegc3knd667wn6m - rc-table: 7.25.3_sfoxds7t5ydpegc3knd667wn6m - rc-tabs: 11.16.1_sfoxds7t5ydpegc3knd667wn6m - rc-textarea: 0.3.7_sfoxds7t5ydpegc3knd667wn6m - rc-tooltip: 5.2.2_sfoxds7t5ydpegc3knd667wn6m - rc-tree: 5.6.6_sfoxds7t5ydpegc3knd667wn6m - rc-tree-select: 5.4.1_sfoxds7t5ydpegc3knd667wn6m - rc-trigger: 5.3.1_sfoxds7t5ydpegc3knd667wn6m - rc-upload: 4.3.4_sfoxds7t5ydpegc3knd667wn6m - rc-util: 5.23.0_sfoxds7t5ydpegc3knd667wn6m - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + rc-cascader: 3.6.2_biqbaboplfbrettd7655fr4n2y + rc-checkbox: 2.3.2_biqbaboplfbrettd7655fr4n2y + rc-collapse: 3.3.1_biqbaboplfbrettd7655fr4n2y + rc-dialog: 8.9.0_biqbaboplfbrettd7655fr4n2y + rc-drawer: 5.1.0_biqbaboplfbrettd7655fr4n2y + rc-dropdown: 4.0.1_biqbaboplfbrettd7655fr4n2y + rc-field-form: 1.27.1_biqbaboplfbrettd7655fr4n2y + rc-image: 5.7.1_biqbaboplfbrettd7655fr4n2y + rc-input: 0.0.1-alpha.7_biqbaboplfbrettd7655fr4n2y + rc-input-number: 7.3.6_biqbaboplfbrettd7655fr4n2y + rc-mentions: 1.9.2_biqbaboplfbrettd7655fr4n2y + rc-menu: 9.6.3_biqbaboplfbrettd7655fr4n2y + rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y + rc-notification: 4.6.0_biqbaboplfbrettd7655fr4n2y + rc-pagination: 3.1.17_biqbaboplfbrettd7655fr4n2y + rc-picker: 2.6.10_biqbaboplfbrettd7655fr4n2y + rc-progress: 3.3.3_biqbaboplfbrettd7655fr4n2y + rc-rate: 2.9.2_biqbaboplfbrettd7655fr4n2y + rc-resize-observer: 1.2.0_biqbaboplfbrettd7655fr4n2y + rc-segmented: 2.1.0_biqbaboplfbrettd7655fr4n2y + rc-select: 14.1.9_biqbaboplfbrettd7655fr4n2y + rc-slider: 10.0.1_biqbaboplfbrettd7655fr4n2y + rc-steps: 4.1.4_biqbaboplfbrettd7655fr4n2y + rc-switch: 3.2.2_biqbaboplfbrettd7655fr4n2y + rc-table: 7.25.3_biqbaboplfbrettd7655fr4n2y + rc-tabs: 11.16.1_biqbaboplfbrettd7655fr4n2y + rc-textarea: 0.3.7_biqbaboplfbrettd7655fr4n2y + rc-tooltip: 5.2.2_biqbaboplfbrettd7655fr4n2y + rc-tree: 5.6.6_biqbaboplfbrettd7655fr4n2y + rc-tree-select: 5.4.1_biqbaboplfbrettd7655fr4n2y + rc-trigger: 5.3.1_biqbaboplfbrettd7655fr4n2y + rc-upload: 4.3.4_biqbaboplfbrettd7655fr4n2y + rc-util: 5.23.0_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 scroll-into-view-if-needed: 2.2.29 dev: false @@ -10823,6 +10867,11 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dev: true + /diff-sequences/29.0.0: + resolution: {integrity: sha512-7Qe/zd1wxSDL4D/X/FPjOMB+ZMDt71W94KYaq05I2l0oQqgXgs7s4ftYYmV38gBSrPz2vcygxfs1xn0FT+rKNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + /diff/4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} @@ -11107,14 +11156,14 @@ packages: engines: {node: '>=10'} dev: true - /emoji-mart/3.0.1_react@17.0.2: + /emoji-mart/3.0.1_react@18.2.0: resolution: {integrity: sha512-sxpmMKxqLvcscu6mFn9ITHeZNkGzIvD0BSNFE/LJESPbCA8s1jM6bCDPjWbV31xHq7JXaxgpHxLB54RCbBZSlg==} peerDependencies: react: ^0.14.0 || ^15.0.0-0 || ^16.0.0 || ^17.0.0 dependencies: '@babel/runtime': 7.18.9 prop-types: 15.8.1 - react: 17.0.2 + react: 18.2.0 dev: false /emoji-regex/7.0.3: @@ -11241,6 +11290,7 @@ packages: /errno/0.1.8: resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} hasBin: true + requiresBuild: true dependencies: prr: 1.0.1 dev: true @@ -12192,6 +12242,17 @@ packages: jest-message-util: 27.5.1 dev: true + /expect/29.0.3: + resolution: {integrity: sha512-t8l5DTws3212VbmPL+tBFXhjRHLmctHB0oQbL8eUc6S7NzZtYUhycrFO9mkxA0ZUC6FAWdNi7JchJSkODtcu1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/expect-utils': 29.0.3 + jest-get-type: 29.0.0 + jest-matcher-utils: 29.0.3 + jest-message-util: 29.0.3 + jest-util: 29.0.3 + dev: true + /express/4.18.1: resolution: {integrity: sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==} engines: {node: '>= 0.10.0'} @@ -12857,7 +12918,7 @@ packages: mime-types: 2.1.35 dev: true - /formik/2.2.9_react@17.0.2: + /formik/2.2.9_react@18.2.0: resolution: {integrity: sha512-LQLcISMmf1r5at4/gyJigGn0gOwFbeEAlji+N9InZF6LIMXnFNkO42sCI8Jt84YZggpD4cPWObAZaxpEFtSzNA==} peerDependencies: react: '>=16.8.0' @@ -12866,7 +12927,7 @@ packages: hoist-non-react-statics: 3.3.2 lodash: 4.17.21 lodash-es: 4.17.21 - react: 17.0.2 + react: 18.2.0 react-fast-compare: 2.0.4 tiny-warning: 1.0.3 tslib: 1.14.1 @@ -13733,6 +13794,7 @@ packages: resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} dependencies: react-is: 16.13.1 + dev: false /homedir-polyfill/1.0.3: resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} @@ -13820,14 +13882,14 @@ packages: void-elements: 3.1.0 dev: false - /html-react-parser/1.4.14_react@17.0.2: + /html-react-parser/1.4.14_react@18.2.0: resolution: {integrity: sha512-pxhNWGie8Y+DGDpSh8cTa0k3g8PsDcwlfolA+XxYo1AGDeB6e2rdlyv4ptU9bOTiZ2i3fID+6kyqs86MN0FYZQ==} peerDependencies: react: 0.14 || 15 || 16 || 17 || 18 dependencies: domhandler: 4.3.1 html-dom-parser: 1.2.0 - react: 17.0.2 + react: 18.2.0 react-property: 2.0.0 style-to-js: 1.1.1 dev: false @@ -14098,6 +14160,12 @@ packages: '@babel/runtime': 7.18.9 dev: true + /i18next/21.9.2: + resolution: {integrity: sha512-00fVrLQOwy45nm3OtC9l1WiLK3nJlIYSljgCt0qzTaAy65aciMdRy9GsuW+a2AtKtdg9/njUGfRH30LRupV7ZQ==} + dependencies: + '@babel/runtime': 7.18.9 + dev: false + /iconv-lite/0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -14257,18 +14325,18 @@ packages: engines: {node: '>=10'} dev: false - /ink-tab/4.2.0_ink@3.2.0+react@17.0.2: + /ink-tab/4.2.0_ink@3.2.0+react@18.2.0: resolution: {integrity: sha512-KrvNWrebGCXWbGf74QE0XYKYGUCa0dEgHGa3B4VJK3PQh8+wXycQeGnl1s/kq3OokWOmMyfkc/BTPgulxjXspQ==} peerDependencies: ink: ^3.0.0 react: ^16.8.0 dependencies: - ink: 3.2.0_skqlhrap4das3cz5b6iqdn2lqi + ink: 3.2.0_w5j4k42lgipnm43s3brx6h3c34 prop-types: 15.8.1 - react: 17.0.2 + react: 18.2.0 dev: false - /ink-text-input/4.0.3_ink@3.2.0+react@17.0.2: + /ink-text-input/4.0.3_ink@3.2.0+react@18.2.0: resolution: {integrity: sha512-eQD01ik9ltmNoHmkeQ2t8LszYkv2XwuPSUz3ie/85qer6Ll/j0QSlSaLNl6ENHZakBHdCBVZY04iOXcLLXA0PQ==} engines: {node: '>=10'} peerDependencies: @@ -14276,12 +14344,12 @@ packages: react: ^16.5.2 || ^17.0.0 dependencies: chalk: 4.1.2 - ink: 3.2.0_skqlhrap4das3cz5b6iqdn2lqi - react: 17.0.2 + ink: 3.2.0_w5j4k42lgipnm43s3brx6h3c34 + react: 18.2.0 type-fest: 0.15.1 dev: false - /ink/3.2.0_skqlhrap4das3cz5b6iqdn2lqi: + /ink/3.2.0_w5j4k42lgipnm43s3brx6h3c34: resolution: {integrity: sha512-firNp1q3xxTzoItj/eOOSZQnYSlyrWks5llCTVX37nJ59K3eXbQ8PtzCguqo8YI19EELo5QxaKnJd4VxzhU8tg==} engines: {node: '>=10'} peerDependencies: @@ -14291,7 +14359,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 17.0.48 + '@types/react': 18.0.20 ansi-escapes: 4.3.2 auto-bind: 4.0.0 chalk: 4.1.2 @@ -14303,9 +14371,9 @@ packages: is-ci: 2.0.0 lodash: 4.17.21 patch-console: 1.0.0 - react: 17.0.2 + react: 18.2.0 react-devtools-core: 4.25.0 - react-reconciler: 0.26.2_react@17.0.2 + react-reconciler: 0.26.2_react@18.2.0 scheduler: 0.20.2 signal-exit: 3.0.7 slice-ansi: 3.0.0 @@ -15230,7 +15298,7 @@ packages: pretty-format: 27.5.1 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1_t4lrjbt3sxauai4t5o275zsepa + ts-node: 10.9.1_bqee57coj3oib6dw4m24wknwqe transitivePeerDependencies: - bufferutil - canvas @@ -15258,6 +15326,16 @@ packages: pretty-format: 27.5.1 dev: true + /jest-diff/29.0.3: + resolution: {integrity: sha512-+X/AIF5G/vX9fWK+Db9bi9BQas7M9oBME7egU7psbn4jlszLFCu0dW63UgeE6cs/GANq4fLaT+8sGHQQ0eCUfg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + diff-sequences: 29.0.0 + jest-get-type: 29.0.0 + pretty-format: 29.0.3 + dev: true + /jest-docblock/27.5.1: resolution: {integrity: sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -15316,6 +15394,11 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dev: true + /jest-get-type/29.0.0: + resolution: {integrity: sha512-83X19z/HuLKYXYHskZlBAShO7UfLFXu/vWajw9ZNJASN32li8yHMaVGAQqxFW1RCFOkB7cubaL6FaJVQqqJLSw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + /jest-haste-map/26.6.2: resolution: {integrity: sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==} engines: {node: '>= 10.14.2'} @@ -15402,6 +15485,16 @@ packages: pretty-format: 27.5.1 dev: true + /jest-matcher-utils/29.0.3: + resolution: {integrity: sha512-RsR1+cZ6p1hDV4GSCQTg+9qjeotQCgkaleIKLK7dm+U4V/H2bWedU3RAtLm8+mANzZ7eDV33dMar4pejd7047w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + jest-diff: 29.0.3 + jest-get-type: 29.0.0 + pretty-format: 29.0.3 + dev: true + /jest-message-util/27.5.1: resolution: {integrity: sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -15417,6 +15510,21 @@ packages: stack-utils: 2.0.5 dev: true + /jest-message-util/29.0.3: + resolution: {integrity: sha512-7T8JiUTtDfppojosORAflABfLsLKMLkBHSWkjNQrjIltGoDzNGn7wEPOSfjqYAGTYME65esQzMJxGDjuLBKdOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/code-frame': 7.18.6 + '@jest/types': 29.0.3 + '@types/stack-utils': 2.0.1 + chalk: 4.1.2 + graceful-fs: 4.2.10 + micromatch: 4.0.5 + pretty-format: 29.0.3 + slash: 3.0.0 + stack-utils: 2.0.5 + dev: true + /jest-mock/27.5.1: resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -15606,6 +15714,18 @@ packages: picomatch: 2.3.1 dev: true + /jest-util/29.0.3: + resolution: {integrity: sha512-Q0xaG3YRG8QiTC4R6fHjHQPaPpz9pJBEi0AeOE4mQh/FuWOijFjGXMMOfQEaU9i3z76cNR7FobZZUQnL6IyfdQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.0.3 + '@types/node': 18.7.11 + chalk: 4.1.2 + ci-info: 3.3.2 + graceful-fs: 4.2.10 + picomatch: 2.3.1 + dev: true + /jest-validate/27.5.1: resolution: {integrity: sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -16490,6 +16610,7 @@ packages: /make-dir/2.1.0: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} engines: {node: '>=6'} + requiresBuild: true dependencies: pify: 4.0.1 semver: 5.7.1 @@ -19652,6 +19773,15 @@ packages: react-is: 17.0.2 dev: true + /pretty-format/29.0.3: + resolution: {integrity: sha512-cHudsvQr1K5vNVLbvYF/nv3Qy/F/BcEKxGuIeMiVMRHxPOO1RxXooP8g/ZrwAp7Dx+KdMZoOc7NxLHhMrP2f9Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.0.0 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: true + /pretty-hrtime/1.0.3: resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} engines: {node: '>= 0.8'} @@ -19973,7 +20103,7 @@ packages: webpack: 4.46.0 dev: true - /rc-align/4.0.12_sfoxds7t5ydpegc3knd667wn6m: + /rc-align/4.0.12_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-3DuwSJp8iC/dgHzwreOQl52soj40LchlfUHtgACOUtwGuoFIOVh6n/sCpfqCU8kO5+iz6qR0YKvjgB8iPdE3aQ==} peerDependencies: react: '>=16.9.0' @@ -19983,13 +20113,13 @@ packages: classnames: 2.3.1 dom-align: 1.12.3 lodash: 4.17.21 - rc-util: 5.23.0_sfoxds7t5ydpegc3knd667wn6m - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + rc-util: 5.23.0_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 resize-observer-polyfill: 1.5.1 dev: false - /rc-cascader/3.6.2_sfoxds7t5ydpegc3knd667wn6m: + /rc-cascader/3.6.2_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-sf2otpazlROTzkD3nZVfIzXmfBLiEOBTXA5wxozGXBpS902McDpvF0bdcYBu5hN+rviEAm6Mh9cLXNQ1Ty8wKQ==} peerDependencies: react: '>=16.9.0' @@ -19998,14 +20128,14 @@ packages: '@babel/runtime': 7.18.9 array-tree-filter: 2.1.0 classnames: 2.3.1 - rc-select: 14.1.9_sfoxds7t5ydpegc3knd667wn6m - rc-tree: 5.6.6_sfoxds7t5ydpegc3knd667wn6m - rc-util: 5.23.0_sfoxds7t5ydpegc3knd667wn6m - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + rc-select: 14.1.9_biqbaboplfbrettd7655fr4n2y + rc-tree: 5.6.6_biqbaboplfbrettd7655fr4n2y + rc-util: 5.23.0_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 dev: false - /rc-checkbox/2.3.2_sfoxds7t5ydpegc3knd667wn6m: + /rc-checkbox/2.3.2_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-afVi1FYiGv1U0JlpNH/UaEXdh6WUJjcWokj/nUN2TgG80bfG+MDdbfHKlLcNNba94mbjy2/SXJ1HDgrOkXGAjg==} peerDependencies: react: '>=16.9.0' @@ -20013,11 +20143,11 @@ packages: dependencies: '@babel/runtime': 7.18.9 classnames: 2.3.1 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 dev: false - /rc-collapse/3.3.1_sfoxds7t5ydpegc3knd667wn6m: + /rc-collapse/3.3.1_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-cOJfcSe3R8vocrF8T+PgaHDrgeA1tX+lwfhwSj60NX9QVRidsILIbRNDLD6nAzmcvVC5PWiIRiR4S1OobxdhCg==} peerDependencies: react: '>=16.9.0' @@ -20025,14 +20155,14 @@ packages: dependencies: '@babel/runtime': 7.18.9 classnames: 2.3.1 - rc-motion: 2.6.2_sfoxds7t5ydpegc3knd667wn6m - rc-util: 5.23.0_sfoxds7t5ydpegc3knd667wn6m - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.23.0_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 shallowequal: 1.1.0 dev: false - /rc-dialog/8.9.0_sfoxds7t5ydpegc3knd667wn6m: + /rc-dialog/8.9.0_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-Cp0tbJnrvPchJfnwIvOMWmJ4yjX3HWFatO6oBFD1jx8QkgsQCR0p8nUWAKdd3seLJhEC39/v56kZaEjwp9muoQ==} peerDependencies: react: '>=16.9.0' @@ -20040,13 +20170,13 @@ packages: dependencies: '@babel/runtime': 7.18.9 classnames: 2.3.1 - rc-motion: 2.6.2_sfoxds7t5ydpegc3knd667wn6m - rc-util: 5.23.0_sfoxds7t5ydpegc3knd667wn6m - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.23.0_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 dev: false - /rc-drawer/5.1.0_sfoxds7t5ydpegc3knd667wn6m: + /rc-drawer/5.1.0_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-pU3Tsn99pxGdYowXehzZbdDVE+4lDXSGb7p8vA9mSmr569oc2Izh4Zw5vLKSe/Xxn2p5MSNbLVqD4tz+pK6SOw==} peerDependencies: react: '>=16.9.0' @@ -20054,13 +20184,13 @@ packages: dependencies: '@babel/runtime': 7.18.9 classnames: 2.3.1 - rc-motion: 2.6.2_sfoxds7t5ydpegc3knd667wn6m - rc-util: 5.23.0_sfoxds7t5ydpegc3knd667wn6m - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.23.0_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 dev: false - /rc-dropdown/4.0.1_sfoxds7t5ydpegc3knd667wn6m: + /rc-dropdown/4.0.1_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-OdpXuOcme1rm45cR0Jzgfl1otzmU4vuBVb+etXM8vcaULGokAKVpKlw8p6xzspG7jGd/XxShvq+N3VNEfk/l5g==} peerDependencies: react: '>=16.11.0' @@ -20068,13 +20198,13 @@ packages: dependencies: '@babel/runtime': 7.18.9 classnames: 2.3.1 - rc-trigger: 5.3.1_sfoxds7t5ydpegc3knd667wn6m - rc-util: 5.23.0_sfoxds7t5ydpegc3knd667wn6m - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + rc-trigger: 5.3.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.23.0_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 dev: false - /rc-field-form/1.27.1_sfoxds7t5ydpegc3knd667wn6m: + /rc-field-form/1.27.1_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-RShegnwFu6TH8tl2olCxn+B4Wyh5EiQH8c/7wucbkLNyue05YiH5gomUAg1vbZjp71yFKwegClctsEG5CNBWAA==} engines: {node: '>=8.x'} peerDependencies: @@ -20083,12 +20213,12 @@ packages: dependencies: '@babel/runtime': 7.18.9 async-validator: 4.2.5 - rc-util: 5.23.0_sfoxds7t5ydpegc3knd667wn6m - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + rc-util: 5.23.0_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 dev: false - /rc-image/5.7.1_sfoxds7t5ydpegc3knd667wn6m: + /rc-image/5.7.1_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-QyMfdhoUfb5W14plqXSisaYwpdstcLYnB0MjX5ccIK2rydQM9sDPuekQWu500DDGR2dBaIF5vx9XbWkNFK17Fg==} peerDependencies: react: '>=16.9.0' @@ -20096,13 +20226,13 @@ packages: dependencies: '@babel/runtime': 7.18.9 classnames: 2.3.1 - rc-dialog: 8.9.0_sfoxds7t5ydpegc3knd667wn6m - rc-util: 5.23.0_sfoxds7t5ydpegc3knd667wn6m - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + rc-dialog: 8.9.0_biqbaboplfbrettd7655fr4n2y + rc-util: 5.23.0_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 dev: false - /rc-input-number/7.3.6_sfoxds7t5ydpegc3knd667wn6m: + /rc-input-number/7.3.6_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-Se62oMOBn9HwF/gSag+YtAYyKZsjJzEsqmyAJHAnAvPfjZJOu7dLMlQRwBbTtELbKXM/Y5Fztcq8CW2Y9f49qA==} peerDependencies: react: '>=16.9.0' @@ -20110,12 +20240,12 @@ packages: dependencies: '@babel/runtime': 7.18.9 classnames: 2.3.1 - rc-util: 5.23.0_sfoxds7t5ydpegc3knd667wn6m - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + rc-util: 5.23.0_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 dev: false - /rc-input/0.0.1-alpha.7_sfoxds7t5ydpegc3knd667wn6m: + /rc-input/0.0.1-alpha.7_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-eozaqpCYWSY5LBMwlHgC01GArkVEP+XlJ84OMvdkwUnJBSv83Yxa15pZpn7vACAj84uDC4xOA2CoFdbLuqB08Q==} peerDependencies: react: '>=16.0.0' @@ -20123,12 +20253,12 @@ packages: dependencies: '@babel/runtime': 7.18.9 classnames: 2.3.1 - rc-util: 5.23.0_sfoxds7t5ydpegc3knd667wn6m - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + rc-util: 5.23.0_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 dev: false - /rc-mentions/1.9.2_sfoxds7t5ydpegc3knd667wn6m: + /rc-mentions/1.9.2_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-uxb/lzNnEGmvraKWNGE6KXMVXvt8RQv9XW8R0Dqi3hYsyPiAZeHRCHQKdLARuk5YBhFhZ6ga55D/8XuY367g3g==} peerDependencies: react: '>=16.9.0' @@ -20136,15 +20266,15 @@ packages: dependencies: '@babel/runtime': 7.18.9 classnames: 2.3.1 - rc-menu: 9.6.3_sfoxds7t5ydpegc3knd667wn6m - rc-textarea: 0.3.7_sfoxds7t5ydpegc3knd667wn6m - rc-trigger: 5.3.1_sfoxds7t5ydpegc3knd667wn6m - rc-util: 5.23.0_sfoxds7t5ydpegc3knd667wn6m - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + rc-menu: 9.6.3_biqbaboplfbrettd7655fr4n2y + rc-textarea: 0.3.7_biqbaboplfbrettd7655fr4n2y + rc-trigger: 5.3.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.23.0_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 dev: false - /rc-menu/9.6.3_sfoxds7t5ydpegc3knd667wn6m: + /rc-menu/9.6.3_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-KY9QilKWgkJZ0JSpOBgIpQF2wMRRodRxpIMYyIJ3Nd5N6xfVLOxXCxevHcBplt+Ez7MhUF+I03MuAKqWQJLZgw==} peerDependencies: react: '>=16.9.0' @@ -20152,16 +20282,16 @@ packages: dependencies: '@babel/runtime': 7.18.9 classnames: 2.3.1 - rc-motion: 2.6.2_sfoxds7t5ydpegc3knd667wn6m - rc-overflow: 1.2.8_sfoxds7t5ydpegc3knd667wn6m - rc-trigger: 5.3.1_sfoxds7t5ydpegc3knd667wn6m - rc-util: 5.23.0_sfoxds7t5ydpegc3knd667wn6m - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y + rc-overflow: 1.2.8_biqbaboplfbrettd7655fr4n2y + rc-trigger: 5.3.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.23.0_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 shallowequal: 1.1.0 dev: false - /rc-motion/2.6.2_sfoxds7t5ydpegc3knd667wn6m: + /rc-motion/2.6.2_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-4w1FaX3dtV749P8GwfS4fYnFG4Rb9pxvCYPc/b2fw1cmlHJWNNgOFIz7ysiD+eOrzJSvnLJWlNQQncpNMXwwpg==} peerDependencies: react: '>=16.9.0' @@ -20169,12 +20299,12 @@ packages: dependencies: '@babel/runtime': 7.18.9 classnames: 2.3.1 - rc-util: 5.23.0_sfoxds7t5ydpegc3knd667wn6m - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + rc-util: 5.23.0_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 dev: false - /rc-notification/4.6.0_sfoxds7t5ydpegc3knd667wn6m: + /rc-notification/4.6.0_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-xF3MKgIoynzjQAO4lqsoraiFo3UXNYlBfpHs0VWvwF+4pimen9/H1DYLN2mfRWhHovW6gRpla73m2nmyIqAMZQ==} engines: {node: '>=8.x'} peerDependencies: @@ -20183,13 +20313,13 @@ packages: dependencies: '@babel/runtime': 7.18.9 classnames: 2.3.1 - rc-motion: 2.6.2_sfoxds7t5ydpegc3knd667wn6m - rc-util: 5.23.0_sfoxds7t5ydpegc3knd667wn6m - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.23.0_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 dev: false - /rc-overflow/1.2.8_sfoxds7t5ydpegc3knd667wn6m: + /rc-overflow/1.2.8_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-QJ0UItckWPQ37ZL1dMEBAdY1dhfTXFL9k6oTTcyydVwoUNMnMqCGqnRNA98axSr/OeDKqR6DVFyi8eA5RQI/uQ==} peerDependencies: react: '>=16.9.0' @@ -20197,13 +20327,13 @@ packages: dependencies: '@babel/runtime': 7.18.9 classnames: 2.3.1 - rc-resize-observer: 1.2.0_sfoxds7t5ydpegc3knd667wn6m - rc-util: 5.23.0_sfoxds7t5ydpegc3knd667wn6m - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + rc-resize-observer: 1.2.0_biqbaboplfbrettd7655fr4n2y + rc-util: 5.23.0_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 dev: false - /rc-pagination/3.1.17_sfoxds7t5ydpegc3knd667wn6m: + /rc-pagination/3.1.17_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-/BQ5UxcBnW28vFAcP2hfh+Xg15W0QZn8TWYwdCApchMH1H0CxiaUUcULP8uXcFM1TygcdKWdt3JqsL9cTAfdkQ==} peerDependencies: react: '>=16.9.0' @@ -20211,11 +20341,11 @@ packages: dependencies: '@babel/runtime': 7.18.9 classnames: 2.3.1 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 dev: false - /rc-picker/2.6.10_sfoxds7t5ydpegc3knd667wn6m: + /rc-picker/2.6.10_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-9wYtw0DFWs9FO92Qh2D76P0iojUr8ZhLOtScUeOit6ks/F+TBLrOC1uze3IOu+u9gbDAjmosNWLKbBzx/Yuv2w==} engines: {node: '>=8.x'} peerDependencies: @@ -20227,14 +20357,14 @@ packages: date-fns: 2.29.2 dayjs: 1.11.5 moment: 2.29.4 - rc-trigger: 5.3.1_sfoxds7t5ydpegc3knd667wn6m - rc-util: 5.23.0_sfoxds7t5ydpegc3knd667wn6m - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + rc-trigger: 5.3.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.23.0_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 shallowequal: 1.1.0 dev: false - /rc-progress/3.3.3_sfoxds7t5ydpegc3knd667wn6m: + /rc-progress/3.3.3_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-MDVNVHzGanYtRy2KKraEaWeZLri2ZHWIRyaE1a9MQ2MuJ09m+Wxj5cfcaoaR6z5iRpHpA59YeUxAlpML8N4PJw==} peerDependencies: react: '>=16.9.0' @@ -20242,12 +20372,12 @@ packages: dependencies: '@babel/runtime': 7.18.9 classnames: 2.3.1 - rc-util: 5.23.0_sfoxds7t5ydpegc3knd667wn6m - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + rc-util: 5.23.0_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 dev: false - /rc-rate/2.9.2_sfoxds7t5ydpegc3knd667wn6m: + /rc-rate/2.9.2_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-SaiZFyN8pe0Fgphv8t3+kidlej+cq/EALkAJAc3A0w0XcPaH2L1aggM8bhe1u6GAGuQNAoFvTLjw4qLPGRKV5g==} engines: {node: '>=8.x'} peerDependencies: @@ -20256,12 +20386,12 @@ packages: dependencies: '@babel/runtime': 7.18.9 classnames: 2.3.1 - rc-util: 5.23.0_sfoxds7t5ydpegc3knd667wn6m - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + rc-util: 5.23.0_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 dev: false - /rc-resize-observer/1.2.0_sfoxds7t5ydpegc3knd667wn6m: + /rc-resize-observer/1.2.0_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-6W+UzT3PyDM0wVCEHfoW3qTHPTvbdSgiA43buiy8PzmeMnfgnDeb9NjdimMXMl3/TcrvvWl5RRVdp+NqcR47pQ==} peerDependencies: react: '>=16.9.0' @@ -20269,13 +20399,13 @@ packages: dependencies: '@babel/runtime': 7.18.9 classnames: 2.3.1 - rc-util: 5.23.0_sfoxds7t5ydpegc3knd667wn6m - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + rc-util: 5.23.0_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 resize-observer-polyfill: 1.5.1 dev: false - /rc-segmented/2.1.0_sfoxds7t5ydpegc3knd667wn6m: + /rc-segmented/2.1.0_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-hUlonro+pYoZcwrH6Vm56B2ftLfQh046hrwif/VwLIw1j3zGt52p5mREBwmeVzXnSwgnagpOpfafspzs1asjGw==} peerDependencies: react: '>=16.0.0' @@ -20283,13 +20413,13 @@ packages: dependencies: '@babel/runtime': 7.18.9 classnames: 2.3.1 - rc-motion: 2.6.2_sfoxds7t5ydpegc3knd667wn6m - rc-util: 5.23.0_sfoxds7t5ydpegc3knd667wn6m - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.23.0_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 dev: false - /rc-select/14.1.9_sfoxds7t5ydpegc3knd667wn6m: + /rc-select/14.1.9_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-DK01+Q7oCWr5jVPiEp/BTQ8xCB4rI4LfXzZtSmBWJhOMuibyZD1Vlz/DlVKCUFmtBM4SzG4/SltGHoGlcbCqiw==} engines: {node: '>=8.x'} peerDependencies: @@ -20298,16 +20428,16 @@ packages: dependencies: '@babel/runtime': 7.18.9 classnames: 2.3.1 - rc-motion: 2.6.2_sfoxds7t5ydpegc3knd667wn6m - rc-overflow: 1.2.8_sfoxds7t5ydpegc3knd667wn6m - rc-trigger: 5.3.1_sfoxds7t5ydpegc3knd667wn6m - rc-util: 5.23.0_sfoxds7t5ydpegc3knd667wn6m - rc-virtual-list: 3.4.8_sfoxds7t5ydpegc3knd667wn6m - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y + rc-overflow: 1.2.8_biqbaboplfbrettd7655fr4n2y + rc-trigger: 5.3.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.23.0_biqbaboplfbrettd7655fr4n2y + rc-virtual-list: 3.4.8_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 dev: false - /rc-slider/10.0.1_sfoxds7t5ydpegc3knd667wn6m: + /rc-slider/10.0.1_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-igTKF3zBet7oS/3yNiIlmU8KnZ45npmrmHlUUio8PNbIhzMcsh+oE/r2UD42Y6YD2D/s+kzCQkzQrPD6RY435Q==} engines: {node: '>=8.x'} peerDependencies: @@ -20316,13 +20446,13 @@ packages: dependencies: '@babel/runtime': 7.18.9 classnames: 2.3.1 - rc-util: 5.23.0_sfoxds7t5ydpegc3knd667wn6m - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + rc-util: 5.23.0_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 shallowequal: 1.1.0 dev: false - /rc-steps/4.1.4_sfoxds7t5ydpegc3knd667wn6m: + /rc-steps/4.1.4_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-qoCqKZWSpkh/b03ASGx1WhpKnuZcRWmvuW+ZUu4mvMdfvFzVxblTwUM+9aBd0mlEUFmt6GW8FXhMpHkK3Uzp3w==} engines: {node: '>=8.x'} peerDependencies: @@ -20331,12 +20461,12 @@ packages: dependencies: '@babel/runtime': 7.18.9 classnames: 2.3.1 - rc-util: 5.23.0_sfoxds7t5ydpegc3knd667wn6m - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + rc-util: 5.23.0_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 dev: false - /rc-switch/3.2.2_sfoxds7t5ydpegc3knd667wn6m: + /rc-switch/3.2.2_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-+gUJClsZZzvAHGy1vZfnwySxj+MjLlGRyXKXScrtCTcmiYNPzxDFOxdQ/3pK1Kt/0POvwJ/6ALOR8gwdXGhs+A==} peerDependencies: react: '>=16.9.0' @@ -20344,12 +20474,12 @@ packages: dependencies: '@babel/runtime': 7.18.9 classnames: 2.3.1 - rc-util: 5.23.0_sfoxds7t5ydpegc3knd667wn6m - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + rc-util: 5.23.0_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 dev: false - /rc-table/7.25.3_sfoxds7t5ydpegc3knd667wn6m: + /rc-table/7.25.3_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-McsLJ2rg8EEpRBRYN4Pf9gT7ZNYnjvF9zrBpUBBbUX/fxk+eGi5ff1iPIhMyiHsH71/BmTUzX9nc9XqupD0nMg==} engines: {node: '>=8.x'} peerDependencies: @@ -20358,14 +20488,14 @@ packages: dependencies: '@babel/runtime': 7.18.9 classnames: 2.3.1 - rc-resize-observer: 1.2.0_sfoxds7t5ydpegc3knd667wn6m - rc-util: 5.23.0_sfoxds7t5ydpegc3knd667wn6m - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + rc-resize-observer: 1.2.0_biqbaboplfbrettd7655fr4n2y + rc-util: 5.23.0_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 shallowequal: 1.1.0 dev: false - /rc-tabs/11.16.1_sfoxds7t5ydpegc3knd667wn6m: + /rc-tabs/11.16.1_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-bR7Dap23YyfzZQwtKomhiFEFzZuE7WaKWo+ypNRSGB9PDKSc6tM12VP8LWYkvmmQHthgwP0WRN8nFbSJWuqLYw==} engines: {node: '>=8.x'} peerDependencies: @@ -20374,15 +20504,15 @@ packages: dependencies: '@babel/runtime': 7.18.9 classnames: 2.3.1 - rc-dropdown: 4.0.1_sfoxds7t5ydpegc3knd667wn6m - rc-menu: 9.6.3_sfoxds7t5ydpegc3knd667wn6m - rc-resize-observer: 1.2.0_sfoxds7t5ydpegc3knd667wn6m - rc-util: 5.23.0_sfoxds7t5ydpegc3knd667wn6m - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + rc-dropdown: 4.0.1_biqbaboplfbrettd7655fr4n2y + rc-menu: 9.6.3_biqbaboplfbrettd7655fr4n2y + rc-resize-observer: 1.2.0_biqbaboplfbrettd7655fr4n2y + rc-util: 5.23.0_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 dev: false - /rc-textarea/0.3.7_sfoxds7t5ydpegc3knd667wn6m: + /rc-textarea/0.3.7_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-yCdZ6binKmAQB13hc/oehh0E/QRwoPP1pjF21aHBxlgXO3RzPF6dUu4LG2R4FZ1zx/fQd2L1faktulrXOM/2rw==} peerDependencies: react: '>=16.9.0' @@ -20390,14 +20520,14 @@ packages: dependencies: '@babel/runtime': 7.18.9 classnames: 2.3.1 - rc-resize-observer: 1.2.0_sfoxds7t5ydpegc3knd667wn6m - rc-util: 5.23.0_sfoxds7t5ydpegc3knd667wn6m - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + rc-resize-observer: 1.2.0_biqbaboplfbrettd7655fr4n2y + rc-util: 5.23.0_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 shallowequal: 1.1.0 dev: false - /rc-tooltip/5.2.2_sfoxds7t5ydpegc3knd667wn6m: + /rc-tooltip/5.2.2_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-jtQzU/18S6EI3lhSGoDYhPqNpWajMtS5VV/ld1LwyfrDByQpYmw/LW6U7oFXXLukjfDHQ7Ju705A82PRNFWYhg==} peerDependencies: react: '>=16.9.0' @@ -20405,12 +20535,12 @@ packages: dependencies: '@babel/runtime': 7.18.9 classnames: 2.3.1 - rc-trigger: 5.3.1_sfoxds7t5ydpegc3knd667wn6m - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + rc-trigger: 5.3.1_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 dev: false - /rc-tree-select/5.4.1_sfoxds7t5ydpegc3knd667wn6m: + /rc-tree-select/5.4.1_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-xhXnKP8Stu2Q7wTcjJaSzSOLd4wmFtUZOwmy1cioaWyPbpiKlYdnALXA/9U49HOaV3KFXdRHE9Yi0KYED7yOAQ==} peerDependencies: react: '*' @@ -20418,14 +20548,14 @@ packages: dependencies: '@babel/runtime': 7.18.9 classnames: 2.3.1 - rc-select: 14.1.9_sfoxds7t5ydpegc3knd667wn6m - rc-tree: 5.6.6_sfoxds7t5ydpegc3knd667wn6m - rc-util: 5.23.0_sfoxds7t5ydpegc3knd667wn6m - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + rc-select: 14.1.9_biqbaboplfbrettd7655fr4n2y + rc-tree: 5.6.6_biqbaboplfbrettd7655fr4n2y + rc-util: 5.23.0_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 dev: false - /rc-tree/5.6.6_sfoxds7t5ydpegc3knd667wn6m: + /rc-tree/5.6.6_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-HI/q4D4AHOp48OZcBUvJFWkI5OfnZivvGYI0xzI0dy0Mita2KcTGZv7/Yl6Aq3bL3od3x5AqAXq/7qxR3x4Kkg==} engines: {node: '>=10.x'} peerDependencies: @@ -20434,14 +20564,14 @@ packages: dependencies: '@babel/runtime': 7.18.9 classnames: 2.3.1 - rc-motion: 2.6.2_sfoxds7t5ydpegc3knd667wn6m - rc-util: 5.23.0_sfoxds7t5ydpegc3knd667wn6m - rc-virtual-list: 3.4.8_sfoxds7t5ydpegc3knd667wn6m - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.23.0_biqbaboplfbrettd7655fr4n2y + rc-virtual-list: 3.4.8_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 dev: false - /rc-trigger/5.3.1_sfoxds7t5ydpegc3knd667wn6m: + /rc-trigger/5.3.1_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-5gaFbDkYSefZ14j2AdzucXzlWgU2ri5uEjkHvsf1ynRhdJbKxNOnw4PBZ9+FVULNGFiDzzlVF8RJnR9P/xrnKQ==} engines: {node: '>=8.x'} peerDependencies: @@ -20450,14 +20580,14 @@ packages: dependencies: '@babel/runtime': 7.18.9 classnames: 2.3.1 - rc-align: 4.0.12_sfoxds7t5ydpegc3knd667wn6m - rc-motion: 2.6.2_sfoxds7t5ydpegc3knd667wn6m - rc-util: 5.23.0_sfoxds7t5ydpegc3knd667wn6m - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + rc-align: 4.0.12_biqbaboplfbrettd7655fr4n2y + rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.23.0_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 dev: false - /rc-upload/4.3.4_sfoxds7t5ydpegc3knd667wn6m: + /rc-upload/4.3.4_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-uVbtHFGNjHG/RyAfm9fluXB6pvArAGyAx8z7XzXXyorEgVIWj6mOlriuDm0XowDHYz4ycNK0nE0oP3cbFnzxiQ==} peerDependencies: react: '>=16.9.0' @@ -20465,25 +20595,25 @@ packages: dependencies: '@babel/runtime': 7.18.9 classnames: 2.3.1 - rc-util: 5.23.0_sfoxds7t5ydpegc3knd667wn6m - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + rc-util: 5.23.0_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 dev: false - /rc-util/5.23.0_sfoxds7t5ydpegc3knd667wn6m: + /rc-util/5.23.0_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-lgm6diJ/pLgyfoZY59Vz7sW4mSoQCgozqbBye9IJ7/mb5w5h4T7h+i2JpXAx/UBQxscBZe68q0sP7EW+qfkKUg==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: '@babel/runtime': 7.18.9 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 react-is: 16.13.1 shallowequal: 1.1.0 dev: false - /rc-virtual-list/3.4.8_sfoxds7t5ydpegc3knd667wn6m: + /rc-virtual-list/3.4.8_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-qSN+Rv4i/E7RCTvTMr1uZo7f3crJJg/5DekoCagydo9zsXrxj07zsFSxqizqW+ldGA16lwa8So/bIbV9Ofjddg==} engines: {node: '>=8.x'} peerDependencies: @@ -20491,10 +20621,10 @@ packages: react-dom: '*' dependencies: classnames: 2.3.1 - rc-resize-observer: 1.2.0_sfoxds7t5ydpegc3knd667wn6m - rc-util: 5.23.0_sfoxds7t5ydpegc3knd667wn6m - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + rc-resize-observer: 1.2.0_biqbaboplfbrettd7655fr4n2y + rc-util: 5.23.0_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 dev: false /rc/1.2.8: @@ -20515,7 +20645,7 @@ packages: pure-color: 1.3.0 dev: false - /react-canvas-draw/1.2.1_react@17.0.2: + /react-canvas-draw/1.2.1_react@18.2.0: resolution: {integrity: sha512-mCHE+Q91a26gUhyraHONedmbCI7dF/4BKdOxba7s4538QNfFWv/NfzLXWZrmjAQ4tO1vTvO+axX5YGIFjGc6uw==} peerDependencies: react: 16.x || 17.x @@ -20523,7 +20653,7 @@ packages: catenary-curve: 1.0.1 lazy-brush: 1.0.1 prop-types: 15.8.1 - react: 17.0.2 + react: 18.2.0 resize-observer-polyfill: 1.5.1 dev: false @@ -20616,19 +20746,28 @@ packages: react: 17.0.2 scheduler: 0.20.2 - /react-easy-crop/3.5.3_sfoxds7t5ydpegc3knd667wn6m: + /react-dom/18.2.0_react@18.2.0: + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + peerDependencies: + react: ^18.2.0 + dependencies: + loose-envify: 1.4.0 + react: 18.2.0 + scheduler: 0.23.0 + + /react-easy-crop/3.5.3_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-ApTbh+lzKAvKqYW81ihd5J6ZTNN3vPDwi6ncFuUrHPI4bko2DlYOESkRm+0NYoW0H8YLaD7bxox+Z3EvIzAbUA==} peerDependencies: react: '>=16.4.0' react-dom: '>=16.4.0' dependencies: normalize-wheel: 1.0.1 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 tslib: 2.0.1 dev: false - /react-element-to-jsx-string/14.3.4_sfoxds7t5ydpegc3knd667wn6m: + /react-element-to-jsx-string/14.3.4_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-t4ZwvV6vwNxzujDQ+37bspnLwA4JlgUPWhLjBJWsNIDceAf6ZKUTCjdm08cN6WeZ5pTMKiCJkmAYnpmR4Bm+dg==} peerDependencies: react: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 @@ -20636,19 +20775,19 @@ packages: dependencies: '@base2/pretty-print-object': 1.0.1 is-plain-object: 5.0.0 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 react-is: 17.0.2 dev: true - /react-error-boundary/3.1.4_react@17.0.2: + /react-error-boundary/3.1.4_react@18.2.0: resolution: {integrity: sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==} engines: {node: '>=10', npm: '>=6'} peerDependencies: react: '>=16.13.1' dependencies: '@babel/runtime': 7.18.9 - react: 17.0.2 + react: 18.2.0 dev: true /react-error-overlay/6.0.11: @@ -20662,14 +20801,14 @@ packages: /react-fast-compare/3.2.0: resolution: {integrity: sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==} - /react-fastify-form/1.0.10_react@17.0.2: + /react-fastify-form/1.0.10_react@18.2.0: resolution: {integrity: sha512-eEInsE5SJg6pbPaaeqgcFFydy6CPgSv/D3IqxGOp52oSPGSpYrW9RhI4W9RBDlO+LVtJBqcWWz3loBLkuLvIEQ==} peerDependencies: react: ^16.14.0 dependencies: - formik: 2.2.9_react@17.0.2 + formik: 2.2.9_react@18.2.0 lodash: 4.17.21 - react: 17.0.2 + react: 18.2.0 yup: 0.32.11 dev: false @@ -20687,31 +20826,31 @@ packages: react-fast-compare: 3.2.0 shallowequal: 1.1.0 - /react-helmet/6.1.0_react@17.0.2: + /react-helmet/6.1.0_react@18.2.0: resolution: {integrity: sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw==} peerDependencies: react: '>=16.3.0' dependencies: object-assign: 4.1.1 prop-types: 15.8.1 - react: 17.0.2 + react: 18.2.0 react-fast-compare: 3.2.0 - react-side-effect: 2.1.2_react@17.0.2 + react-side-effect: 2.1.2_react@18.2.0 dev: false - /react-highlight/0.14.0_sfoxds7t5ydpegc3knd667wn6m: + /react-highlight/0.14.0_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-kWE+KXOXidS7SABhVopOgMnowbI3RAfeGZbnrduLNlWrYAED8sycL9l/Fvw3w0PFpIIawB7mRDnyhDcM/cIIGA==} peerDependencies: react: ^15.0.0 || ^16.0.0 || ^17.0.0 react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: highlight.js: 10.7.3 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 dev: false - /react-i18next/11.18.5_fx4b3zen7tdcdwbld3lkpcycbu: - resolution: {integrity: sha512-cKcyuuzIv0YUZ4l9WORflVNuhISPAqQShOAsxwFyYuJoCA7HlLmHm7XnvO6hfAGmGpDNRhJHoBX8hG49Cb2xZQ==} + /react-i18next/11.18.6_zmu7ama24qzo23juwg3r2jo7ii: + resolution: {integrity: sha512-yHb2F9BiT0lqoQDt8loZ5gWP331GwctHz9tYQ8A2EIEUu+CcEdjBLQWli1USG3RdWQt3W+jqQLg/d4rrQR96LA==} peerDependencies: i18next: '>= 19.0.0' react: '>= 16.8.0' @@ -20725,11 +20864,11 @@ packages: dependencies: '@babel/runtime': 7.18.9 html-parse-stringify: 3.0.1 - i18next: 20.6.1 - react: 17.0.2 + i18next: 21.9.2 + react: 18.2.0 dev: false - /react-inspector/5.1.1_react@17.0.2: + /react-inspector/5.1.1_react@18.2.0: resolution: {integrity: sha512-GURDaYzoLbW8pMGXwYPDBIv6nqei4kK7LPRZ9q9HCZF54wqXz/dnylBp/kfE9XmekBhHvLDdcYeyIwSrvtOiWg==} peerDependencies: react: ^16.8.4 || ^17.0.0 @@ -20737,7 +20876,7 @@ packages: '@babel/runtime': 7.18.9 is-dom: 1.1.0 prop-types: 15.8.1 - react: 17.0.2 + react: 18.2.0 dev: true /react-is/16.13.1: @@ -20746,6 +20885,9 @@ packages: /react-is/17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + /react-is/18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + /react-json-view/1.21.3_sk3eihvpffgp52mstba5zhq3vu: resolution: {integrity: sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw==} peerDependencies: @@ -20779,19 +20921,19 @@ packages: webpack: 5.74.0 dev: false - /react-markdown/6.0.3_skqlhrap4das3cz5b6iqdn2lqi: + /react-markdown/6.0.3_w5j4k42lgipnm43s3brx6h3c34: resolution: {integrity: sha512-kQbpWiMoBHnj9myLlmZG9T1JdoT/OEyHK7hqM6CqFT14MAkgWiWBUYijLyBmxbntaN6dCDicPcUhWhci1QYodg==} peerDependencies: '@types/react': '>=16' react: '>=16' dependencies: '@types/hast': 2.3.4 - '@types/react': 17.0.48 + '@types/react': 18.0.20 '@types/unist': 2.0.6 comma-separated-tokens: 1.0.8 prop-types: 15.8.1 property-information: 5.6.0 - react: 17.0.2 + react: 18.2.0 react-is: 17.0.2 remark-parse: 9.0.0 remark-rehype: 8.1.0 @@ -20804,7 +20946,7 @@ packages: - supports-color dev: false - /react-mentions/4.4.7_sfoxds7t5ydpegc3knd667wn6m: + /react-mentions/4.4.7_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-VNriu2h/uOB+RS0mwZgPG2Vf+UtdDvRh5zbXa2TNc1WqacKuNDgTdhlbo9LEOZRBxRzIeTUYQmYJ7p9M9rDHqQ==} peerDependencies: react: '>=16.8.3' @@ -20813,9 +20955,9 @@ packages: '@babel/runtime': 7.4.5 invariant: 2.2.4 prop-types: 15.8.1 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - substyle: 9.4.1_react@17.0.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + substyle: 9.4.1_react@18.2.0 dev: false /react-merge-refs/1.1.0: @@ -20826,7 +20968,7 @@ packages: resolution: {integrity: sha512-kzmNjIgU32mO4mmH5+iUyrqlpFQhF8K2k7eZ4fdLSOPFrD1XgEuSBv9LDEgxRXTMBqMd8ppT0x6TIzqE5pdGdw==} dev: false - /react-reconciler/0.26.2_react@17.0.2: + /react-reconciler/0.26.2_react@18.2.0: resolution: {integrity: sha512-nK6kgY28HwrMNwDnMui3dvm3rCFjZrcGiuwLc5COUipBK5hWHLOxMJhSnSomirqWwjPBJKV1QcbkI0VJr7Gl1Q==} engines: {node: '>=0.10.0'} peerDependencies: @@ -20834,29 +20976,39 @@ packages: dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 - react: 17.0.2 + react: 18.2.0 scheduler: 0.20.2 dev: false - /react-redux/7.2.8_react@17.0.2: - resolution: {integrity: sha512-6+uDjhs3PSIclqoCk0kd6iX74gzrGc3W5zcAjbrFgEdIjRSQObdIwfx80unTkVUYvbQ95Y8Av3OvFHq1w5EOUw==} + /react-redux/8.0.2_w5j4k42lgipnm43s3brx6h3c34: + resolution: {integrity: sha512-nBwiscMw3NoP59NFCXFf02f8xdo+vSHT/uZ1ldDwF7XaTpzm+Phk97VT4urYBl5TYAPNVaFm12UHAEyzkpNzRA==} peerDependencies: - react: ^16.8.3 || ^17 || ^18 - react-dom: '*' - react-native: '*' + '@types/react': ^16.8 || ^17.0 || ^18.0 + '@types/react-dom': ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + react-native: '>=0.59' + redux: ^4 peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true react-dom: optional: true react-native: optional: true + redux: + optional: true dependencies: '@babel/runtime': 7.18.9 - '@types/react-redux': 7.1.24 + '@types/hoist-non-react-statics': 3.3.1 + '@types/react': 18.0.20 + '@types/use-sync-external-store': 0.0.3 hoist-non-react-statics: 3.3.2 - loose-envify: 1.4.0 - prop-types: 15.8.1 - react: 17.0.2 - react-is: 17.0.2 + react: 18.2.0 + react-is: 18.2.0 + use-sync-external-store: 1.2.0_react@18.2.0 dev: false /react-refresh/0.11.0: @@ -20890,6 +21042,18 @@ packages: tiny-warning: 1.0.3 dev: false + /react-router-dom/6.4.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-4Aw1xmXKeleYYQ3x0Lcl2undHR6yMjXZjd9DKZd53SGOYqirrUThyUb0wwAX5VZAyvSuzjNJmZlJ3rR9+/vzqg==} + engines: {node: '>=14'} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + dependencies: + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + react-router: 6.4.0_react@18.2.0 + dev: false + /react-router/5.3.3_react@17.0.2: resolution: {integrity: sha512-mzQGUvS3bM84TnbtMYR8ZjKnuPJ71IjSzR+DE6UkUqvN4czWIqEs17yLL8xkAycv4ev0AiN+IGrWu88vJs/p2w==} peerDependencies: @@ -20908,21 +21072,31 @@ packages: tiny-warning: 1.0.3 dev: false - /react-side-effect/2.1.2_react@17.0.2: + /react-router/6.4.0_react@18.2.0: + resolution: {integrity: sha512-B+5bEXFlgR1XUdHYR6P94g299SjrfCBMmEDJNcFbpAyRH1j1748yt9NdDhW3++nw1lk3zQJ6aOO66zUx3KlTZg==} + engines: {node: '>=14'} + peerDependencies: + react: '>=16.8' + dependencies: + '@remix-run/router': 1.0.0 + react: 18.2.0 + dev: false + + /react-side-effect/2.1.2_react@18.2.0: resolution: {integrity: sha512-PVjOcvVOyIILrYoyGEpDN3vmYNLdy1CajSFNt4TDsVQC5KpTijDvWVoR+/7Rz2xT978D8/ZtFceXxzsPwZEDvw==} peerDependencies: react: ^16.3.0 || ^17.0.0 || ^18.0.0 dependencies: - react: 17.0.2 + react: 18.2.0 dev: false - /react-split/2.0.14_react@17.0.2: + /react-split/2.0.14_react@18.2.0: resolution: {integrity: sha512-bKWydgMgaKTg/2JGQnaJPg51T6dmumTWZppFgEbbY0Fbme0F5TuatAScCLaqommbGQQf/ZT1zaejuPDriscISA==} peerDependencies: react: '*' dependencies: prop-types: 15.8.1 - react: 17.0.2 + react: 18.2.0 split.js: 1.6.5 dev: false @@ -20940,7 +21114,7 @@ packages: - '@types/react' dev: false - /react-transition-group/4.4.5_sfoxds7t5ydpegc3knd667wn6m: + /react-transition-group/4.4.5_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} peerDependencies: react: '>=16.6.0' @@ -20950,41 +21124,41 @@ packages: dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 dev: false - /react-use-gesture/9.1.3_react@17.0.2: + /react-use-gesture/9.1.3_react@18.2.0: resolution: {integrity: sha512-CdqA2SmS/fj3kkS2W8ZU8wjTbVBAIwDWaRprX7OKaj7HlGwBasGEFggmk5qNklknqk9zK/h8D355bEJFTpqEMg==} deprecated: This package is no longer maintained. Please use @use-gesture/react instead peerDependencies: react: '>= 16.8.0' dependencies: - react: 17.0.2 + react: 18.2.0 dev: false - /react-virtualized-auto-sizer/1.0.6_sfoxds7t5ydpegc3knd667wn6m: + /react-virtualized-auto-sizer/1.0.6_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-7tQ0BmZqfVF6YYEWcIGuoR3OdYe8I/ZFbNclFlGOC3pMqunkYF/oL30NCjSGl9sMEb17AnzixDz98Kqc3N76HQ==} engines: {node: '>8.0.0'} peerDependencies: react: ^15.3.0 || ^16.0.0-alpha || ^17.0.0 react-dom: ^15.3.0 || ^16.0.0-alpha || ^17.0.0 dependencies: - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 dev: false - /react-virtuoso/2.18.0_sfoxds7t5ydpegc3knd667wn6m: + /react-virtuoso/2.18.0_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-BxMW9as2dPOP4YFkry/oNjQMEn3cOgEjHLb7Fg8oubOgRAfiukp1Co41QFD9ZMXZBNBZNTI2E5BwC5pol31mTg==} engines: {node: '>=10'} peerDependencies: react: '>=16 || >=17 || >= 18' react-dom: '>=16 || >=17 || >= 18' dependencies: - '@virtuoso.dev/react-urx': 0.2.13_react@17.0.2 + '@virtuoso.dev/react-urx': 0.2.13_react@18.2.0 '@virtuoso.dev/urx': 0.2.13 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 dev: false /react/17.0.2: @@ -20994,6 +21168,12 @@ packages: loose-envify: 1.4.0 object-assign: 4.1.1 + /react/18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + /read-pkg-up/1.0.1: resolution: {integrity: sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==} engines: {node: '>=0.10.0'} @@ -21162,6 +21342,7 @@ packages: resolution: {integrity: sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA==} dependencies: '@babel/runtime': 7.18.9 + dev: false /reflect-metadata/0.1.13: resolution: {integrity: sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==} @@ -21861,6 +22042,11 @@ packages: loose-envify: 1.4.0 object-assign: 4.1.1 + /scheduler/0.23.0: + resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + dependencies: + loose-envify: 1.4.0 + /schema-utils/1.0.0: resolution: {integrity: sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==} engines: {node: '>= 4'} @@ -22946,14 +23132,14 @@ packages: postcss-selector-parser: 6.0.10 dev: false - /substyle/9.4.1_react@17.0.2: + /substyle/9.4.1_react@18.2.0: resolution: {integrity: sha512-VOngeq/W1/UkxiGzeqVvDbGDPM8XgUyJVWjrqeh+GgKqspEPiLYndK+XRcsKUHM5Muz/++1ctJ1QCF/OqRiKWA==} peerDependencies: react: '>=16.8.3' dependencies: '@babel/runtime': 7.4.5 invariant: 2.2.4 - react: 17.0.2 + react: 18.2.0 dev: false /superstruct/0.8.3: @@ -23598,7 +23784,7 @@ packages: engines: {node: '>=6.10'} dev: true - /ts-jest/27.1.5_mqaoisgizytgigbr3gbjwvnjie: + /ts-jest/27.1.5_r5n7iohbfbguzk5ispbdybm75m: resolution: {integrity: sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} hasBin: true @@ -23619,7 +23805,7 @@ packages: esbuild: optional: true dependencies: - '@types/jest': 27.5.2 + '@types/jest': 26.0.24 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 jest: 27.5.1_ts-node@10.9.1 @@ -23632,7 +23818,7 @@ packages: yargs-parser: 20.2.9 dev: true - /ts-jest/27.1.5_r5n7iohbfbguzk5ispbdybm75m: + /ts-jest/27.1.5_siyob6oprabago5lwveopqxjxy: resolution: {integrity: sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} hasBin: true @@ -23653,7 +23839,7 @@ packages: esbuild: optional: true dependencies: - '@types/jest': 26.0.24 + '@types/jest': 29.0.3 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 jest: 27.5.1_ts-node@10.9.1 @@ -23793,6 +23979,7 @@ packages: typescript: 4.7.4 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 + dev: false /ts-pnp/1.2.0_typescript@4.7.4: resolution: {integrity: sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==} @@ -24398,12 +24585,12 @@ packages: use-isomorphic-layout-effect: 1.1.2_skqlhrap4das3cz5b6iqdn2lqi dev: false - /use-sync-external-store/1.2.0_react@17.0.2: + /use-sync-external-store/1.2.0_react@18.2.0: resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - react: 17.0.2 + react: 18.2.0 dev: false /use/3.1.1: diff --git a/server/plugins/com.msgbyte.meeting/web/plugins/com.msgbyte.meeting/package.json b/server/plugins/com.msgbyte.meeting/web/plugins/com.msgbyte.meeting/package.json index 32168431..d18e42a1 100644 --- a/server/plugins/com.msgbyte.meeting/web/plugins/com.msgbyte.meeting/package.json +++ b/server/plugins/com.msgbyte.meeting/web/plugins/com.msgbyte.meeting/package.json @@ -8,8 +8,8 @@ "tailchat-meeting-sdk": "1.2.4" }, "devDependencies": { - "@types/react": "^17.0.38", + "@types/react": "18.0.20", "@types/react-router": "^5.1.18", - "react": "17.0.2" + "react": "18.2.0" } } diff --git a/server/plugins/com.msgbyte.simplenotify/web/plugins/com.msgbyte.simplenotify/package.json b/server/plugins/com.msgbyte.simplenotify/web/plugins/com.msgbyte.simplenotify/package.json index b19df69a..c5271764 100644 --- a/server/plugins/com.msgbyte.simplenotify/web/plugins/com.msgbyte.simplenotify/package.json +++ b/server/plugins/com.msgbyte.simplenotify/web/plugins/com.msgbyte.simplenotify/package.json @@ -4,7 +4,7 @@ "version": "0.0.0", "private": true, "devDependencies": { - "@types/react": "^17.0.38", - "react": "17.0.2" + "@types/react": "18.0.20", + "react": "18.2.0" } }