diff --git a/.all-contributorsrc b/.all-contributorsrc index 8993984505..4b1cc35879 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -12,6 +12,16 @@ "contributorsPerLine": 7, "badgeTemplate": "\n[all-contributors-badge]: https://img.shields.io/badge/all_contributors-<%= contributors.length %>-orange.svg?style=flat-square\n", "contributors": [ + { + "login": "doodlewind", + "name": "Yifeng Wang", + "avatar_url": "https://avatars.githubusercontent.com/u/7312949?v=4", + "profile": "https://github.com/doodlewind", + "contributions": [ + "code", + "doc" + ] + }, { "login": "darkskygit", "name": "DarkSky", @@ -303,6 +313,15 @@ "contributions": [ "code" ] + }, + { + "login": "felixonmars", + "name": "Felix Yan", + "avatar_url": "https://avatars.githubusercontent.com/u/1006477?v=4", + "profile": "https://felixc.at/", + "contributions": [ + "code" + ] } ] } diff --git a/.vscode/settings.json b/.vscode/settings.json index e69da8bc93..18f956c613 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -5,6 +5,7 @@ "editor.codeActionsOnSave": ["source.fixAll", "source.organizeImports"], "prettier.prettierPath": "./node_modules/prettier", "cSpell.words": [ + "aboutus", "AUTOINCREMENT", "Backlinks", "blockdb", diff --git a/README.md b/README.md index b2507efa5b..d4f92bc519 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ See https://github.com/all-?/all-contributors/issues/361#issuecomment-637166066 --> -[all-contributors-badge]: https://img.shields.io/badge/all_contributors-31-orange.svg?style=flat-square +[all-contributors-badge]: https://img.shields.io/badge/all_contributors-33-orange.svg?style=flat-square @@ -58,9 +58,8 @@ See https://github.com/all-?/all-contributors/issues/361#issuecomment-637166066 [![affine.pro](https://img.shields.io/static/v1?label=Try%20it%20Online&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAhpJREFUWEdjZEACtnl3MxgY/0YzMjAaMzAwcCLLUYH9/T/D/7MM/5mXHp6kPANmHiOI4Zx9Xfg3C+tKBob/zlSwiAgjGPey/vkdvneq5luwA+zy7+yhn+Vwv+89NFHFhREU7IyM/6YT4WyqK/n/nymT0Tb/1mFGBkYbqptOhIH/Gf4fYbTLv/2NBgmOCOvBSr6DHPCfWNW0UEe2A2x1uRlakiXBbtpx6jND+7KXZLmPbAdURokzeJjxwi31rrzH8OX7P5IdQbYDtnUoMXBzMMEt7Fj2imH7qU/0cQBy8MNsPHL5K0P13Of0cQB68MNsJScaSI4CHk4mhq3tSnCf3n36k0FZmh3Mn7L+DcPqgx9ICgWSHeBpxsdQESUGtgRk+eqDH+H8O09/MiR3P6atA1qTJRlsdLnhPgYlPOQQCW96wPDi3R+iHUFSCKAHP8wydEeREg0kOQA9+JOgwR1qL8CQEygC9jWp0UCSA+aVysIT3JqDHxgmr38DtlRCiIVhZZ0CPNhB6QDkEGIA0Q4gZAkuxxFyBNEOQA7ml+/+MIQ1PUAxG1kelAhB6YMYQLQDCPmQUAjhcgxRDiDWcEKOxOYIohyQGyjCEGIvANaPLfhhBiNHA6hmBBXNhABRDgCV/aBQAAFQpYMrn4PUgNTCACiXEMoNRDmAkC8okR8UDhjYRumAN8sHvGMCSkAD2jUDOWDAO6ewbDQQ3XMAy/oxKownQR0AAAAASUVORK5CYII=&message=%E2%86%92&style=for-the-badge)](https://affine.pro) No installation or registration required! Head over to our website and try it out now. -Want to deploy it yourself? AFFiNE can run just about anywhere. Check our -[documentation](#documentation) -for more information. +Want to deploy it yourself? AFFiNE can run just about anywhere.
+You can refer to our documentation which can be found from the [useful links](#useful-links) section - where you will also find ways to help contribute to the project and join our communities.

⚠️ Please note that AFFiNE is still under active development and is not yet ready for production use. ⚠️ @@ -119,7 +118,7 @@ That's why we are making AFFiNE. Some of the most important features are: - Data is always stored locally by default - CRDTs are applied so that peer-to-peer collaboration is possible. -We appreciate the ideas of Monday, Airtable, and Notion databases. They have inspired us and shaped our product, helping us get it right when it comes to task management. But we also do things differently. We don't like doing things again and again. It's easy to set a todo with Markdown, but then why do you need to repeat and recreate data for a kanban or other databases. This is the power of AFFiNE. With AFFiNE, every block group has infinite views, for you to keep your single source of data, a signle source of truth. +We appreciate the ideas of Monday, Airtable, and Notion databases. They have inspired us and shaped our product, helping us get it right when it comes to task management. But we also do things differently. We don't like doing things again and again. It's easy to set a todo with Markdown, but then why do you need to repeat and recreate data for a kanban or other databases. This is the power of AFFiNE. With AFFiNE, every block group has infinite views, for you to keep your single source of data, a single source of truth. We would like to give special thanks to the innovators and pioneers who greatly inspired us: @@ -148,45 +147,47 @@ Thanks a lot to the community for providing such powerful and simple libraries, + - + - + - + - + +

Yifeng Wang

💻 📖

DarkSky

💻 📖

Chi Zhang

💻 📖

wang xinglong

💻 📖

DiamondThree

💻 📖

Whitewater

💻 📖

xiaodong zuo

💻 📖

MingLIang Wang

💻 📖

MingLIang Wang

💻 📖

Qi

💻 📖

mitsuhatu

💻 📖

Austaras

💻 📖

Jin Yao

💻 📖

HeJiachen-PM

📖

Yipei Wei

📖

fanjing22

🎨

fanjing22

🎨

Svaney

🎨

Guozhu Liu

🎨

fyZheng07

📋 📓

CJSS

📖

Carlos Rafael

💻

Caleb OLeary

💻

JimmFly

💻

JimmFly

💻

Weston Graham

📖

pointmax

📖

Bryan Lee

💻

Simon Li

💻

Bob Hu

💻

Quavo

📖

子瞻 Luci

💻

子瞻 Luci

💻

Horus

💻 📦

Super.x

💻

Wang Yu

💻

Felix Yan

💻
diff --git a/apps/ligo-virgo/package.json b/apps/ligo-virgo/package.json index 5bb0d78eaa..e8a18e071c 100644 --- a/apps/ligo-virgo/package.json +++ b/apps/ligo-virgo/package.json @@ -13,7 +13,7 @@ "@mui/icons-material": "^5.8.4" }, "devDependencies": { - "firebase": "^9.9.2", + "firebase": "^9.9.3", "mini-css-extract-plugin": "^2.6.1", "webpack": "^5.74.0" } diff --git a/apps/ligo-virgo/src/pages/workspace/docs/Page.tsx b/apps/ligo-virgo/src/pages/workspace/docs/Page.tsx index a2440a1757..ba1897cc4a 100644 --- a/apps/ligo-virgo/src/pages/workspace/docs/Page.tsx +++ b/apps/ligo-virgo/src/pages/workspace/docs/Page.tsx @@ -22,16 +22,23 @@ import { type BlockEditor } from '@toeverything/components/editor-core'; import { useFlag } from '@toeverything/datasource/feature-flags'; import { CollapsiblePageTree } from './collapsible-page-tree'; import { Tabs } from './components/tabs'; +import { TabMap, TAB_TITLE } from './components/tabs/Tabs'; +import { TOC } from './components/toc'; import { WorkspaceName } from './workspace-name'; + type PageProps = { workspace: string; }; export function Page(props: PageProps) { + const [activeTab, setActiveTab] = useState( + TabMap.get(TAB_TITLE.PAGES).value + ); const { page_id } = useParams(); const { showSpaceSidebar, fixedDisplay, setSpaceSidebarVisible } = useShowSpaceSidebar(); const dailyNotesFlag = useFlag('BooleanDailyNotes', false); + const onTabChange = v => setActiveTab(v); return ( @@ -50,31 +57,37 @@ export function Page(props: PageProps) { > - + -
- {dailyNotesFlag && ( + {activeTab === TabMap.get(TAB_TITLE.PAGES).value && ( +
+ {dailyNotesFlag && ( +
+ + + +
+ )}
- - + +
- )} -
- - - +
+ + {page_id ? : null} + +
-
- - {page_id ? : null} - -
-
+ )} + + {activeTab === TabMap.get(TAB_TITLE.TOC).value && ( + + )} @@ -105,6 +118,7 @@ const EditorContainer = ({ const obv = new ResizeObserver(e => { setPageClientWidth(e[0].contentRect.width); }); + obv.observe(scrollContainer); return () => obv.disconnect(); } @@ -175,7 +189,7 @@ const WorkspaceSidebar = styled('div')(({ theme }) => ({ width: 300, minWidth: 300, borderRadius: '0px 10px 10px 0px', - boxShadow: theme.affine.shadows.shadow1, + boxShadow: theme.affine.shadows.shadow2, backgroundColor: '#FFFFFF', transitionProperty: 'left', transitionDuration: '0.35s', diff --git a/apps/ligo-virgo/src/pages/workspace/docs/components/tabs/Tabs.tsx b/apps/ligo-virgo/src/pages/workspace/docs/components/tabs/Tabs.tsx index 74a8dcc5ae..aea0c88374 100644 --- a/apps/ligo-virgo/src/pages/workspace/docs/components/tabs/Tabs.tsx +++ b/apps/ligo-virgo/src/pages/workspace/docs/components/tabs/Tabs.tsx @@ -1,6 +1,5 @@ import { styled } from '@toeverything/components/ui'; import type { ValueOf } from '@toeverything/utils'; -import { useState } from 'react'; const StyledTabs = styled('div')(({ theme }) => { return { @@ -56,32 +55,35 @@ const StyledTabTitle = styled('div')<{ } `; -const TAB_TITLE = { - PAGES: 'pages', - GALLERY: 'gallery', - TOC: 'toc', +export const TAB_TITLE = { + PAGES: 'PAGES', + GALLERY: 'GALLERY', + TOC: 'TOC', } as const; -const TabMap = new Map([ - ['PAGES', { value: 'pages' }], - ['GALLERY', { value: 'gallery', disabled: true }], - ['TOC', { value: 'toc' }], +export const TabMap = new Map< + TabValue, + { value: TabValue; disabled?: boolean } +>([ + [TAB_TITLE.PAGES, { value: TAB_TITLE.PAGES }], + [TAB_TITLE.GALLERY, { value: TAB_TITLE.GALLERY, disabled: true }], + [TAB_TITLE.TOC, { value: TAB_TITLE.TOC }], ]); -type TabKey = keyof typeof TAB_TITLE; type TabValue = ValueOf; -const Tabs = () => { - const [activeValue, setActiveTab] = useState(TAB_TITLE.PAGES); +interface Props { + activeTab: TabValue; + onTabChange: (v: TabValue) => void; +} - const onClick = (v: TabValue) => { - setActiveTab(v); - }; +const Tabs = (props: Props) => { + const { activeTab, onTabChange } = props; return ( {[...TabMap.entries()].map(([k, { value, disabled = false }]) => { - const isActive = activeValue === value; + const isActive = activeTab === value; return ( { className={isActive ? 'active' : ''} isActive={isActive} isDisabled={disabled} - onClick={() => onClick(value)} + onClick={() => onTabChange(value)} > {k} diff --git a/apps/ligo-virgo/src/pages/workspace/docs/components/toc/TOC.tsx b/apps/ligo-virgo/src/pages/workspace/docs/components/toc/TOC.tsx new file mode 100644 index 0000000000..0a5c442590 --- /dev/null +++ b/apps/ligo-virgo/src/pages/workspace/docs/components/toc/TOC.tsx @@ -0,0 +1,202 @@ +import type { Virgo } from '@toeverything/components/editor-core'; +import { styled } from '@toeverything/components/ui'; +import { Protocol } from '@toeverything/datasource/db-service'; +import { useCurrentEditors } from '@toeverything/datasource/state'; +import { + createContext, + useCallback, + useContext, + useEffect, + useRef, + useState, +} from 'react'; +import { useParams } from 'react-router'; +import { BLOCK_TYPES } from './toc-enum'; +import { + destroyEventList, + getContentByAsyncBlocks, + getPageTOC, +} from './toc-util'; +import type { ListenerMap, TOCType } from './types'; + +const StyledTOCItem = styled('a')<{ type?: string; isActive?: boolean }>( + ({ type, isActive }) => { + const common = { + height: '32px', + display: 'flex', + alignItems: 'center', + cursor: 'pointer', + color: isActive ? '#3E6FDB' : '#4C6275', + }; + + if (type === BLOCK_TYPES.HEADING1) { + return { + ...common, + padding: '0 12px', + fontWeight: '600', + fontSize: '16px', + }; + } + + if (type === BLOCK_TYPES.HEADING2) { + return { + ...common, + padding: '0 32px', + fontSize: '14px', + }; + } + + if (type === BLOCK_TYPES.HEADING3) { + return { + ...common, + padding: '0 52px', + fontSize: '12px', + }; + } + + if (type === BLOCK_TYPES.GROUP) { + return { + ...common, + margin: '6px 0px', + height: '46px', + padding: '6px 12px', + fontWeight: '600', + fontSize: '16px', + borderTop: '0.5px solid #E0E6EB', + borderBottom: '0.5px solid #E0E6EB', + color: isActive ? '#3E6FDB' : '#98ACBD', + }; + } + + return {}; + } +); + +const StyledItem = styled('div')(props => { + return { + overflow: 'hidden', + textOverflow: 'ellipsis', + whiteSpace: 'nowrap', + }; +}); + +const TOCContext = createContext(null); + +const TOCItem = props => { + const { activeBlockId, onClick } = useContext(TOCContext); + const { id, type, text } = props; + const isActive = id === activeBlockId; + + return ( + onClick(id)} + > + {text} + + ); +}; + +const renderTOCContent = tocDataSource => { + return ( + <> + {tocDataSource.map(tocItem => { + if (tocItem?.length) { + return renderTOCContent(tocItem); + } + + const { id, type, text } = tocItem; + + return ; + })} + + ); +}; + +export const TOC = () => { + const { page_id } = useParams(); + const [tocDataSource, setTocDataSource] = useState([]); + const [activeBlockId, setActiveBlockId] = useState(''); + + /* store page/block unmount-listener */ + const listenerMapRef = useRef(new Map()); + + const { currentEditors } = useCurrentEditors(); + const editor = currentEditors[page_id] as Virgo; + + const updateTocDataSource = useCallback(async () => { + if (!editor) { + return null; + } + + const listenerMap = listenerMapRef.current; + + /* page listener: trigger update-notice when add new group */ + const pageAsyncBlock = (await editor.getBlockByIds([page_id]))?.[0]; + if (!listenerMap.has(pageAsyncBlock.id)) { + listenerMap.set( + pageAsyncBlock.id, + pageAsyncBlock.onUpdate(updateTocDataSource) + ); + } + + /* block listener: trigger update-notice when change block content */ + const { children = [] } = + (await editor.queryByPageId(page_id))?.[0] || {}; + const asyncBlocks = (await editor.getBlockByIds(children)) || []; + const { tocContents } = await getContentByAsyncBlocks( + asyncBlocks, + updateTocDataSource, + listenerMap + ); + + /* toc: flat content */ + const tocDataSource = getPageTOC(asyncBlocks, tocContents); + setTocDataSource(tocDataSource); + }, [editor, page_id]); + + /* init toc and add page/block update-listener & unmount-listener */ + useEffect(() => { + (async () => { + await updateTocDataSource(); + })(); + + /* remove listener when unmount component */ + return () => destroyEventList(listenerMapRef.current); + }, [updateTocDataSource]); + + const onClick = async (blockId?: string) => { + setActiveBlockId(blockId); + const block = await editor.getBlockById(blockId); + await editor.scrollManager.scrollIntoViewByBlockId(blockId); + + if (!block || block.type === Protocol.Block.Type.group) { + // the group block has its own background + return; + } + // See https://developer.mozilla.org/en-US/docs/Web/API/Element/animate + block.dom?.animate( + [ + { + backgroundColor: 'rgba(152, 172, 189, 0.1)', + }, + { + backgroundColor: 'rgba(152, 172, 189, 0)', + }, + ], + { + delay: 500, + duration: 700, + easing: 'linear', + } + ); + }; + + return ( + +
{renderTOCContent(tocDataSource)}
+
+ ); +}; diff --git a/apps/ligo-virgo/src/pages/workspace/docs/components/toc/index.ts b/apps/ligo-virgo/src/pages/workspace/docs/components/toc/index.ts new file mode 100644 index 0000000000..e603af8242 --- /dev/null +++ b/apps/ligo-virgo/src/pages/workspace/docs/components/toc/index.ts @@ -0,0 +1 @@ +export { TOC } from './TOC'; diff --git a/apps/ligo-virgo/src/pages/workspace/docs/components/toc/toc-enum.ts b/apps/ligo-virgo/src/pages/workspace/docs/components/toc/toc-enum.ts new file mode 100644 index 0000000000..5c9ad0c59e --- /dev/null +++ b/apps/ligo-virgo/src/pages/workspace/docs/components/toc/toc-enum.ts @@ -0,0 +1,6 @@ +export enum BLOCK_TYPES { + GROUP = 'group', + HEADING1 = 'heading1', + HEADING2 = 'heading2', + HEADING3 = 'heading3', +} diff --git a/apps/ligo-virgo/src/pages/workspace/docs/components/toc/toc-util.ts b/apps/ligo-virgo/src/pages/workspace/docs/components/toc/toc-util.ts new file mode 100644 index 0000000000..aa1154a944 --- /dev/null +++ b/apps/ligo-virgo/src/pages/workspace/docs/components/toc/toc-util.ts @@ -0,0 +1,96 @@ +import { AsyncBlock } from '@toeverything/components/editor-core'; +import { BLOCK_TYPES } from './toc-enum'; +import type { ListenerMap, TOCType } from './types'; + +/* 😞😞sorry, I don't know how to define unlimited dimensions array */ +const getContentByAsyncBlocks = async ( + asyncBlocks: AsyncBlock[] = [], + callback: () => void, + listenerMap: ListenerMap +): Promise<{ + tocContents: any[]; +}> => { + const collect = async (asyncBlocks): Promise => { + /* maybe should recast it to tail recursion */ + return await Promise.all( + asyncBlocks.map(async (asyncBlock: AsyncBlock) => { + const asyncBlocks = await asyncBlock?.children(); + + if (asyncBlocks?.length) { + return collect(asyncBlocks); + } + + /* add only once event listener for every block */ + if (!listenerMap.has(asyncBlock?.id)) { + /* get update notice */ + const destroyHandler = asyncBlock?.onUpdate(callback); + + /* collect destroy handlers */ + listenerMap.set(asyncBlock?.id, destroyHandler); + } + + const { id, type } = asyncBlock; + + switch (type) { + case BLOCK_TYPES.GROUP: + case BLOCK_TYPES.HEADING1: + case BLOCK_TYPES.HEADING2: + case BLOCK_TYPES.HEADING3: { + const properties = await asyncBlock?.getProperties(); + + return { + id, + type, + text: properties?.text?.value?.[0]?.text || '', + }; + } + default: + return null; + } + }) + ); + }; + + return { + tocContents: await collect(asyncBlocks), + }; +}; + +/** + * get flat toc + * @param asyncBlocks + * @param tocContents + */ +const getPageTOC = (asyncBlocks: AsyncBlock[], tocContents): TOCType[] => { + return tocContents + .reduce((tocGroupContent, tocContent, index) => { + const { id, type } = asyncBlocks[index]; + const groupContent = { + id, + type, + text: 'Untitled Group', + }; + + tocGroupContent.push( + !tocContent.flat(Infinity).filter(Boolean).length + ? groupContent + : tocContent + ); + + return tocGroupContent; + }, []) + .flat(Infinity) + .filter(Boolean); +}; + +/* destroy page/block update-listener */ +const destroyEventList = (listenerMap: ListenerMap) => { + const eventListeners = listenerMap.values(); + listenerMap.clear(); + + for (const eventListener of eventListeners) { + eventListener?.(); + } +}; + +export { getPageTOC, getContentByAsyncBlocks, destroyEventList }; diff --git a/apps/ligo-virgo/src/pages/workspace/docs/components/toc/types.ts b/apps/ligo-virgo/src/pages/workspace/docs/components/toc/types.ts new file mode 100644 index 0000000000..9d84eec52a --- /dev/null +++ b/apps/ligo-virgo/src/pages/workspace/docs/components/toc/types.ts @@ -0,0 +1,7 @@ +export type TOCType = { + id: string; + type: string; + text: string; +}; + +export type ListenerMap = Map void>; diff --git a/apps/ligo-virgo/webpack.config.js b/apps/ligo-virgo/webpack.config.js index 4bf721409c..11be2e1c76 100644 --- a/apps/ligo-virgo/webpack.config.js +++ b/apps/ligo-virgo/webpack.config.js @@ -43,6 +43,7 @@ module.exports = function (webpackConfig) { ...config.output, filename: '[name].[contenthash:8].js', chunkFilename: '[name].[chunkhash:8].js', + hashDigestLength: 8, hashFunction: undefined, }; config.optimization = { @@ -67,21 +68,21 @@ module.exports = function (webpackConfig) { chunks: 'all', enforce: true, }, - auth: { - test: /[\\/]node_modules[\\/](@authing|@?firebase)/, - name: 'auth', - priority: -5, - chunks: 'all', - }, + // auth: { + // test: /[\\/]node_modules[\\/](@authing|@?firebase)/, + // name: 'auth', + // priority: -5, + // chunks: 'all', + // }, edgeless: { test: /(libs\/components\/board-|[\\/]node_modules[\\/]@tldraw)/, name: 'edgeless', priority: -7, chunks: 'all', }, - editor: { + paper: { test: /(libs\/framework\/(ligo|virgo|editor)|[\\/]node_modules[\\/](@codemirror|@lezer|slate))/, - name: 'editor', + name: 'paper', priority: -8, chunks: 'all', }, @@ -176,7 +177,11 @@ module.exports = function (webpackConfig) { publicPath: '/', }), new Style9Plugin(), - isProd && new MiniCssExtractPlugin(), + isProd && + new MiniCssExtractPlugin({ + filename: '[name].[contenthash:8].css', + chunkFilename: '[id].[chunkhash:8].css', + }), isProd && new CompressionPlugin({ test: /\.(js|css|html|svg|ttf|woff)$/, diff --git a/apps/venus/package.json b/apps/venus/package.json index 321da2b80d..87065b9d79 100644 --- a/apps/venus/package.json +++ b/apps/venus/package.json @@ -9,13 +9,15 @@ "dependencies": { "@emotion/react": "^11.10.0", "@emotion/styled": "^11.10.0", - "@mui/joy": "^5.0.0-alpha.39", + "@mui/joy": "^5.0.0-alpha.42", "i18next": "^21.9.1", "lozad": "^1.16.0", "react-i18next": "^11.18.4" }, "devDependencies": { - "image-minimizer-webpack-plugin": "^3.2.3", + "@mdx-js/loader": "^2.1.3", + "github-markdown-css": "^5.1.0", + "image-minimizer-webpack-plugin": "^3.3.0", "imagemin": "^8.0.1", "imagemin-optipng": "^8.0.0", "mini-css-extract-plugin": "^2.6.1", diff --git a/apps/venus/src/app/AboutUs.tsx b/apps/venus/src/app/AboutUs.tsx new file mode 100644 index 0000000000..b20420a556 --- /dev/null +++ b/apps/venus/src/app/AboutUs.tsx @@ -0,0 +1,110 @@ +import { useTranslation } from 'react-i18next'; +import { useNavigate } from 'react-router-dom'; + +import { Box, Grid, Typography } from '@mui/joy'; +// eslint-disable-next-line no-restricted-imports +import { useMediaQuery } from '@mui/material'; +import 'github-markdown-css'; +import AboutText from './about.mdx'; +import { AFFiNEFooter, AFFiNEHeader, AFFiNEImage } from './Common'; +import KeepUpdate from './keeupdate.png'; +export const AboutUs = () => { + const matches = useMediaQuery('(max-width: 1024px)'); + const navigate = useNavigate(); + const { i18n } = useTranslation(); + + const changeLanguage = (event: any) => { + i18n.changeLanguage(event); + }; + return ( + <> + + + + + To Shape, not to adapt. + + + + + + + Deliver Building Blocks for Future SaaS Applications. + + + + + + + + + + + + window.open( + 'https://github.com/toeverything/AFFiNE' + ) + } + /> + + + + + ); +}; diff --git a/apps/venus/src/app/App.tsx b/apps/venus/src/app/App.tsx new file mode 100644 index 0000000000..df1e8be681 --- /dev/null +++ b/apps/venus/src/app/App.tsx @@ -0,0 +1,600 @@ +/* eslint-disable max-lines */ +/* eslint-disable @typescript-eslint/naming-convention */ +import clsx from 'clsx'; +import { useEffect, useMemo, useState } from 'react'; +import { useTranslation } from 'react-i18next'; +import { useNavigate } from 'react-router-dom'; + +import { Box, Button, Grid, Typography } from '@mui/joy'; +import { styled } from '@mui/joy/styles'; +import { LogoIcon } from '@toeverything/components/icons'; +// eslint-disable-next-line no-restricted-imports +import { useMediaQuery } from '@mui/material'; + +import CollaborationImage from './collaboration.png'; +import { AFFiNEFooter, AFFiNEHeader, AFFiNEImage } from './Common'; +import { GitHub } from './Icons'; +import PageImage from './page.png'; +import ShapeImage from './shape.png'; +import TaskImage from './task.png'; + +const Alternatives = styled(Box)<{ width: string }>(({ width }) => ({ + position: 'relative', + width: '24em', + height: '128px', + transform: 'translateY(-8px)', + overflowY: 'hidden', + '@media (max-width: 1024px)': { + width, + height: '48px', + transform: 'translateY(0)', + }, + '& .scroll-element': { + width: 'inherit', + height: 'inherit', + position: 'absolute', + left: '0%', + top: '0%', + lineHeight: '96px', + '@media (max-width: 1024px)': { + lineHeight: '32px', + }, + }, + '& .scroll-element.active': { + animation: 'primary 500ms linear infinite', + }, + '.primary.active': { + animation: 'primary 500ms linear infinite', + }, + '.secondary.active': { + animation: 'secondary 500ms linear infinite', + }, + '@keyframes primary': { + from: { + top: '0%', + }, + to: { + top: '-100%', + }, + }, + '@keyframes secondary': { + from: { + top: '100%', + }, + to: { + top: '0%', + }, + }, +})); + +const _alternatives = ['Notion', 'Miro', 'Monday']; +const _alternativesSize = [8, 6, 10]; + +const Product = () => { + const [idx, setIdx] = useState(0); + const [last, current] = useMemo( + () => [ + _alternatives[idx], + _alternatives[idx + 1] ? _alternatives[idx + 1] : _alternatives[0], + ], + [idx] + ); + const maxWidth = useMemo(() => _alternativesSize[idx], [idx]); + const [active, setActive] = useState(false); + const matches = useMediaQuery('(max-width: 1024px)'); + + useEffect(() => { + const handle = setInterval(() => { + setActive(true); + setTimeout( + () => { + setIdx(idx => (_alternatives[idx + 1] ? idx + 1 : 0)); + setActive(false); + }, + matches ? 450 : 380 + ); + }, 2000); + return () => clearInterval(handle); + }, [matches]); + + return ( + + + + {last} + + + + + {current} + + + + ); +}; + +const AFFiNEOnline = (props: { center?: boolean; flat?: boolean }) => { + const matches = useMediaQuery('(max-width: 1024px)'); + const { t } = useTranslation(); + return ( + + ); +}; + +export function App() { + const matches = useMediaQuery('(max-width: 1024px)'); + const navigate = useNavigate(); + const { t, i18n } = useTranslation(); + + const changeLanguage = (event: any) => { + i18n.changeLanguage(event); + }; + return ( + <> + + + + + {t('Open Source')}, + + + {t('Privacy First')} + + + + + + + + {t('Alternative')} + + + + + + + {t('description1.part1')} + + + + + + + + + + + + + + + + + + {t('description1.part2')} + + + + + + + {t('description1.part3')} + + + {t('description1.part4')} + + + + + + + + {t('description2.part1')} + + + {t('description2.part2')} + + + {t('description2.part3')} + + + + + + + + + + + + + + {t('description3.part1')} + + + {t('description3.part2')} + + + {t('description3.part3')} + + + {t('description3.part4')} + + + + + + + + + + + + + {t('description4.part1')} + + + {t('description4.part2')} + + + {t('description4.part3')} + + + + + + + + + + + ); +} diff --git a/apps/venus/src/app/Common.tsx b/apps/venus/src/app/Common.tsx new file mode 100644 index 0000000000..87347f4fa1 --- /dev/null +++ b/apps/venus/src/app/Common.tsx @@ -0,0 +1,426 @@ +/* eslint-disable @typescript-eslint/naming-convention */ +import { useTranslation } from 'react-i18next'; +import { useNavigate } from 'react-router-dom'; + +import { Box, Button, Grid, Typography } from '@mui/joy'; +import Option from '@mui/joy/Option'; +import Select from '@mui/joy/Select'; +import { styled } from '@mui/joy/styles'; +// eslint-disable-next-line no-restricted-imports +import { useMediaQuery } from '@mui/material'; + +import GitHubIcon from '@mui/icons-material/GitHub'; +import RedditIcon from '@mui/icons-material/Reddit'; +import TelegramIcon from '@mui/icons-material/Telegram'; +import { options } from './i18n'; +import { DiscordIcon, GitHub } from './Icons'; +// eslint-disable-next-line no-restricted-imports +import LogoImage from './logo.png'; + +export const AFFiNEImage = styled('img')({ + maxWidth: '100%', + objectFit: 'contain', +}); + +export const AFFiNEFooter = ({ + keepupdate = true, +}: { + keepupdate?: boolean; +}) => { + const { t } = useTranslation(); + + return ( + <> + {keepupdate ? ( + <> + + + + + + + + + {t('BuildFor')} + + + + + + + + + {t('KeepUpdated')} + + + + + + + ) : null} + + + + {t('Join')} + + + + + + + + + + + + + + + + + + + + + AFFiNE is an + + #OpenSource + + company + + + + + + + Copyright © 2022 AFFiNE. + + + + + ); +}; + +export const AFFiNEHeader = () => { + const matches = useMediaQuery('(max-width: 1024px)'); + const navigate = useNavigate(); + const { i18n } = useTranslation(); + + const changeLanguage = (event: any) => { + i18n.changeLanguage(event); + }; + const matchesIPAD = useMediaQuery('(max-width: 768px)'); + return ( + + + + + + + + + + + + ); +}; diff --git a/apps/venus/src/app/Icons.tsx b/apps/venus/src/app/Icons.tsx new file mode 100644 index 0000000000..ec30f2067c --- /dev/null +++ b/apps/venus/src/app/Icons.tsx @@ -0,0 +1,75 @@ +/* eslint-disable max-lines */ +/* eslint-disable @typescript-eslint/naming-convention */ +import GitHubIcon from '@mui/icons-material/GitHub'; +import { Button, SvgIcon } from '@mui/joy'; +// eslint-disable-next-line no-restricted-imports +import { useMediaQuery } from '@mui/material'; +import { useTranslation } from 'react-i18next'; + +export const DiscordIcon = (props: any) => { + return ( + + + + + + + + + + + ); +}; + +export const GitHub = (props: { center?: boolean; flat?: boolean }) => { + const matches = useMediaQuery('(max-width: 1024px)'); + const { t } = useTranslation(); + + return ( + + ); +}; diff --git a/apps/venus/src/app/MdxMarks.tsx b/apps/venus/src/app/MdxMarks.tsx new file mode 100644 index 0000000000..1e3890cae1 --- /dev/null +++ b/apps/venus/src/app/MdxMarks.tsx @@ -0,0 +1,45 @@ +import { Box, Typography } from '@mui/joy'; + +type NameProps = { + name: string; + link: string; + title: string; + description?: string; +}; + +export const Name = (props: NameProps) => { + return ( + <> + + + + {props.name} + + + + {' | '} + {props.title} + + + {props.description ? ( + + {props.description} + + ) : null} + + ); +}; + +export const Padding = () => { + return
; +}; diff --git a/apps/venus/src/app/about.mdx b/apps/venus/src/app/about.mdx new file mode 100644 index 0000000000..d05c285003 --- /dev/null +++ b/apps/venus/src/app/about.mdx @@ -0,0 +1,88 @@ +import { Name, Padding } from './MdxMarks'; + + + +## Do Contact US if you + +- Want to know more about AFFiNE as a collaborative knowledge base; +- Want to join us; +- Want to build your own block-based applications. + +General contact: [contact@toeverything.info](mailto:contact@toeverything.info) + +Send Resume to: [hr@toeverything.info](mailto:hr@toeverything.info) + + + +## Team Member + +### Founder & Co-founders + + + + + + + + + +### Architectural Developers + + + + + + + + + +## The Philosophy of AFFiNE + +People need better building blocks for future applications. And it should not be so hard to develop collaborative, transferable, smart spreadsheets or block editors. + +Timothy Berners-Lee once taught us about the idea of the semantic web, where all the data can be interpreted in any form while the "truth" is kept. This gives our best image of an ideal knowledge base by far, that sorting of information, planning of project and goals as well as creating of knowledge can be all together. + +We have witnessed waves of paradigm shift so many times. At first, everything was noted on office-like apps or DSL like LaTeX, then we found todo-list apps and WYSIWYG markdown editors better for writing and planning. + +Finally, here comes Notion and Miro, who take advantage of the idea of blocks to further liberate our creativity. It is all perfect... without waste operations and redundant information. And, we insist that privacy first should always be given by default. That's why we are making AFFiNE. diff --git a/apps/venus/src/app/i18n/resources/en.json b/apps/venus/src/app/i18n/resources/en.json index cd7a377352..2cffda93bd 100644 --- a/apps/venus/src/app/i18n/resources/en.json +++ b/apps/venus/src/app/i18n/resources/en.json @@ -1,5 +1,7 @@ { "translation": { + "Blog": "Blog", + "AboutUs": "About AboutUs", "Open Source": "Open Source", "Privacy First": "Privacy First", "Alternative": "Alternative", diff --git a/apps/venus/src/app/i18n/resources/zh.json b/apps/venus/src/app/i18n/resources/zh.json index eb4cf432dd..ca0a060072 100644 --- a/apps/venus/src/app/i18n/resources/zh.json +++ b/apps/venus/src/app/i18n/resources/zh.json @@ -1,5 +1,7 @@ { "translation": { + "Blog": "博客", + "AboutUs": "关于我们", "Open Source": "开源", "Privacy First": "隐私第一", "Alternative": "的另一种选择", diff --git a/apps/venus/src/app/index.tsx b/apps/venus/src/app/index.tsx index e4d9c7854e..8464ca5b4a 100644 --- a/apps/venus/src/app/index.tsx +++ b/apps/venus/src/app/index.tsx @@ -1,1050 +1,37 @@ -/* eslint-disable max-lines */ -/* eslint-disable @typescript-eslint/naming-convention */ -import clsx from 'clsx'; -import { useEffect, useMemo, useState } from 'react'; +import { Outlet, Route, Routes } from 'react-router-dom'; -import GitHubIcon from '@mui/icons-material/GitHub'; -import RedditIcon from '@mui/icons-material/Reddit'; -import TelegramIcon from '@mui/icons-material/Telegram'; -import { Box, Button, Container, Grid, SvgIcon, Typography } from '@mui/joy'; -import Option from '@mui/joy/Option'; -import Select from '@mui/joy/Select'; -import { CssVarsProvider, styled } from '@mui/joy/styles'; -import { LogoIcon } from '@toeverything/components/icons'; -// eslint-disable-next-line no-restricted-imports -import { useMediaQuery } from '@mui/material'; -import { useTranslation } from 'react-i18next'; -import CollaborationImage from './collaboration.png'; -import { options } from './i18n'; -import LogoImage from './logo.png'; -import PageImage from './page.png'; -import ShapeImage from './shape.png'; -import TaskImage from './task.png'; +import { Container } from '@mui/joy'; +import { CssVarsProvider } from '@mui/joy/styles'; -const DiscordIcon = (props: any) => { - return ( - - - - - - - - - - - ); -}; +import { AboutUs } from './AboutUs'; +import { App } from './App'; -const VenusContainer = styled(Container)({ - margin: '1em auto', -}); - -const Alternatives = styled(Box)<{ width: string }>(({ width }) => ({ - position: 'relative', - width: '24em', - height: '128px', - transform: 'translateY(-8px)', - overflowY: 'hidden', - '@media (max-width: 1024px)': { - width, - height: '48px', - transform: 'translateY(0)', - }, - '& .scroll-element': { - width: 'inherit', - height: 'inherit', - position: 'absolute', - left: '0%', - top: '0%', - lineHeight: '96px', - '@media (max-width: 1024px)': { - lineHeight: '32px', - }, - }, - '& .scroll-element.active': { - animation: 'primary 500ms linear infinite', - }, - '.primary.active': { - animation: 'primary 500ms linear infinite', - }, - '.secondary.active': { - animation: 'secondary 500ms linear infinite', - }, - '@keyframes primary': { - from: { - top: '0%', - }, - to: { - top: '-100%', - }, - }, - '@keyframes secondary': { - from: { - top: '100%', - }, - to: { - top: '0%', - }, - }, -})); - -const _alternatives = ['Notion', 'Miro', 'Monday']; -const _alternativesSize = [8, 6, 10]; - -const Product = () => { - const [idx, setIdx] = useState(0); - const [last, current] = useMemo( - () => [ - _alternatives[idx], - _alternatives[idx + 1] ? _alternatives[idx + 1] : _alternatives[0], - ], - [idx] - ); - const maxWidth = useMemo(() => _alternativesSize[idx], [idx]); - const [active, setActive] = useState(false); - const matches = useMediaQuery('(max-width: 1024px)'); - - useEffect(() => { - const handle = setInterval(() => { - setActive(true); - setTimeout( - () => { - setIdx(idx => (_alternatives[idx + 1] ? idx + 1 : 0)); - setActive(false); - }, - matches ? 450 : 380 - ); - }, 2000); - return () => clearInterval(handle); - }, [matches]); - - return ( - - - - {last} - - - - - {current} - - - - ); -}; - -const AffineImage = styled('img')({ - maxWidth: '100%', - objectFit: 'contain', -}); - -const GitHub = (props: { center?: boolean; flat?: boolean }) => { - const matches = useMediaQuery('(max-width: 1024px)'); - const { t } = useTranslation(); - - return ( - - ); -}; - -const AFFiNEOnline = (props: { center?: boolean; flat?: boolean }) => { - const matches = useMediaQuery('(max-width: 1024px)'); - const { t } = useTranslation(); - return ( - - ); -}; - -export function App() { - const matches = useMediaQuery('(max-width: 1024px)'); - const { t, i18n } = useTranslation(); - - const changeLanguage = (event: any) => { - i18n.changeLanguage(event); - }; +const VenusContainer = () => { return ( - div': { marginTop: '1em', }, }} > - - - - - - - - - - - - - - {t('Open Source')}, - - - {t('Privacy First')} - - - - - - - - {t('Alternative')} - - - - - - - {t('description1.part1')} - - - - - - - - - - - - - - - - - - {t('description1.part2')} - - - - - - - {t('description1.part3')} - - - {t('description1.part4')} - - - - - - - - {t('description2.part1')} - - - {t('description2.part2')} - - - {t('description2.part3')} - - - - - - - - - - - - - - {t('description3.part1')} - - - {t('description3.part2')} - - - {t('description3.part3')} - - - {t('description3.part4')} - - - - - - - - - - - - - {t('description4.part1')} - - - {t('description4.part2')} - - - {t('description4.part3')} - - - - - - - - - - - - - - - - - {t('BuildFor')} - - - - - - - - {t('KeepUpdated')} - - - - - - - - - {t('Join')} - - - - - - - - - - - - - - - - - - - - - AFFiNE is an - - #OpenSource - - company - - - - - - - Copyright © 2022 AFFiNE. - - - - + + ); -} +}; -export default App; +export function VenusRoutes() { + return ( + + }> + } /> + } /> + + + ); +} diff --git a/apps/venus/src/app/keeupdate.png b/apps/venus/src/app/keeupdate.png new file mode 100644 index 0000000000..7bdc36986b Binary files /dev/null and b/apps/venus/src/app/keeupdate.png differ diff --git a/apps/venus/src/assets/images/og.png b/apps/venus/src/assets/images/og.png new file mode 100644 index 0000000000..ad0ea8088c Binary files /dev/null and b/apps/venus/src/assets/images/og.png differ diff --git a/apps/venus/src/index.html b/apps/venus/src/index.html index 232e6299d1..b139b035ef 100644 --- a/apps/venus/src/index.html +++ b/apps/venus/src/index.html @@ -6,6 +6,27 @@ + + + + + + + + + + + + + + + diff --git a/apps/venus/src/index.tsx b/apps/venus/src/index.tsx index 5fdc926e59..2bd7c320cd 100644 --- a/apps/venus/src/index.tsx +++ b/apps/venus/src/index.tsx @@ -3,7 +3,7 @@ import { createRoot } from 'react-dom/client'; import { BrowserRouter } from 'react-router-dom'; import './app/i18n'; -import App from './app'; +import { VenusRoutes } from './app'; const container = document.getElementById('root'); if (!container) { @@ -13,7 +13,7 @@ const root = createRoot(container); root.render( - + ); diff --git a/apps/venus/src/mdx.d.ts b/apps/venus/src/mdx.d.ts new file mode 100644 index 0000000000..e6f1511e1d --- /dev/null +++ b/apps/venus/src/mdx.d.ts @@ -0,0 +1,4 @@ +declare module '*.mdx' { + let MDXComponent: (props: any) => JSX.Element; + export default MDXComponent; +} diff --git a/apps/venus/tsconfig.app.json b/apps/venus/tsconfig.app.json index 054e3ea559..a4f9eff7dc 100644 --- a/apps/venus/tsconfig.app.json +++ b/apps/venus/tsconfig.app.json @@ -19,5 +19,5 @@ "**/*.spec.jsx", "**/*.test.jsx" ], - "include": ["**/*.js", "**/*.jsx", "**/*.ts", "**/*.tsx"] + "include": ["**/*.js", "**/*.jsx", "**/*.ts", "**/*.tsx", "**/*.d.ts"] } diff --git a/apps/venus/webpack.config.js b/apps/venus/webpack.config.js index 88df817a12..57c78f9f3b 100644 --- a/apps/venus/webpack.config.js +++ b/apps/venus/webpack.config.js @@ -9,7 +9,6 @@ const CssMinimizerPlugin = require('css-minimizer-webpack-plugin'); const CompressionPlugin = require('compression-webpack-plugin'); const ImageMinimizerPlugin = require('image-minimizer-webpack-plugin'); const TerserPlugin = require('terser-webpack-plugin'); -const Style9Plugin = require('style9/webpack'); const enableBundleAnalyzer = process.env.BUNDLE_ANALYZER; @@ -18,15 +17,13 @@ module.exports = function (webpackConfig) { const isProd = config.mode === 'production'; - const style9 = { - test: /\.(tsx|ts|js|mjs|jsx)$/, + const mdx = { + test: /\.mdx?$/, use: [ { - loader: Style9Plugin.loader, - options: { - minifyProperties: isProd, - incrementalClassnames: isProd, - }, + loader: '@mdx-js/loader', + /** @type {import('@mdx-js/loader').Options} */ + options: {}, }, ], }; @@ -34,7 +31,6 @@ module.exports = function (webpackConfig) { config.experiments.topLevelAwait = true; if (isProd) { - config.module.rules.unshift(style9); config.entry = { main: [...config.entry.main, ...config.entry.polyfills], }; @@ -43,6 +39,7 @@ module.exports = function (webpackConfig) { ...config.output, filename: '[name].[contenthash:8].js', chunkFilename: '[name].[chunkhash:8].js', + hashDigestLength: 8, hashFunction: undefined, }; config.optimization = { @@ -102,24 +99,8 @@ module.exports = function (webpackConfig) { }, ], }); - config.module.rules.unshift({ - test: /\.scss$/i, - use: [ - 'style-loader', - { - loader: 'css-loader', - options: { - sourceMap: false, - }, - }, - { - loader: 'postcss-loader', - }, - ], - }); - config.module.rules.splice(6); + config.module.rules.splice(4); } else { - config.module.rules.push(style9); config.output = { ...config.output, publicPath: '/', @@ -138,6 +119,8 @@ module.exports = function (webpackConfig) { } } + config.module.rules.push(mdx); + addEmotionBabelPlugin(config); config.plugins = [ @@ -158,8 +141,11 @@ module.exports = function (webpackConfig) { template: path.resolve(__dirname, './src/template.html'), publicPath: '/', }), - new Style9Plugin(), - isProd && new MiniCssExtractPlugin(), + isProd && + new MiniCssExtractPlugin({ + filename: '[name].[contenthash:8].css', + chunkFilename: '[id].[chunkhash:8].css', + }), isProd && new CompressionPlugin({ test: /\.(js|css|html|svg|ttf|woff)$/, @@ -205,15 +191,6 @@ const addEmotionBabelPlugin = config => { // See https://github.com/mui/material-ui/issues/27380#issuecomment-928973157 // See https://github.com/emotion-js/emotion/tree/main/packages/babel-plugin#importmap importMap: { - '@toeverything/components/ui': { - styled: { - canonicalImport: ['@emotion/styled', 'default'], - styledBaseImport: [ - '@toeverything/components/ui', - 'styled', - ], - }, - }, '@mui/material': { styled: { canonicalImport: ['@emotion/styled', 'default'], diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index 94806e00f8..543f380686 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -2,7 +2,7 @@ Thank you for investing your time in contributing to our project! Any contribution you make will be reflected on our GitHub :sparkles:. -Read our [Code of Conduct](./CODE_OF_CONDUCT.md) to keep our community approachable and respectable. +Read our [Code of Conduct](./CODE_OF_CONDUCT.md) to keep our community approachable and respectable. Join our [Discord](https://discord.com/invite/yz6tGVsf5p) server for more. In this guide you will get an overview of the contribution workflow from opening an issue, creating a PR, reviewing, and merging the PR. @@ -63,6 +63,8 @@ For more information about using a codespace for working on GitHub documentation Commit the changes once you are happy with them. +Reach out the community members for necessary help. + Once your changes are ready, don't forget to self-review to speed up the review process:zap:. ### Pull Request @@ -81,6 +83,6 @@ When you're finished with the changes, create a pull request, also known as a PR Congratulations :tada::tada: The AFFiNE team thanks you :sparkles:. -Once your PR is merged, your contributions will be publicly visible on the our GitHub. +Once your PR is merged, your contributions will be publicly visible on our GitHub. Now that you are part of the AFFiNE community, see how else you can join and help over at [Gitbook](https://docs.affine.pro/affine/) diff --git a/libs/components/affine-board/src/Board.tsx b/libs/components/affine-board/src/Board.tsx index 101d54d37b..8c521705e7 100644 --- a/libs/components/affine-board/src/Board.tsx +++ b/libs/components/affine-board/src/Board.tsx @@ -5,10 +5,7 @@ import { getSession } from '@toeverything/components/board-sessions'; import { deepCopy, TldrawApp } from '@toeverything/components/board-state'; import { tools } from '@toeverything/components/board-tools'; import { TDShapeType } from '@toeverything/components/board-types'; -import { - getClipDataOfBlocksById, - RecastBlockProvider, -} from '@toeverything/components/editor-core'; +import { RecastBlockProvider } from '@toeverything/components/editor-core'; import { services } from '@toeverything/datasource/db-service'; import { AsyncBlock, BlockEditor } from '@toeverything/framework/virgo'; import { useEffect, useState } from 'react'; @@ -51,10 +48,10 @@ const AffineBoard = ({ }; }); - const { shapes, bindings } = useShapes(workspace, rootBlockId); + const { shapes } = useShapes(workspace, rootBlockId); useEffect(() => { if (app) { - app.replacePageContent(shapes || {}, bindings, {}); + app.replacePageContent(shapes || {}, {}, {}); } }, [app, shapes]); @@ -68,12 +65,14 @@ const AffineBoard = ({ onMount(app) { set_app(app); }, - + async onPaste(e, data) { + console.log('e,data: ', e, data); + }, async onCopy(e, groupIds) { - const clip = await getClipDataOfBlocksById( - editor, - groupIds - ); + const clip = + await editor.clipboard.clipboardUtils.getClipDataOfBlocksById( + groupIds + ); e.clipboardData?.setData( clip.getMimeType(), @@ -109,19 +108,6 @@ const AffineBoard = ({ }); } shape.affineId = block.id; - - Object.keys(bindings).forEach(bilingKey => { - if ( - bindings[bilingKey]?.fromId === shape.id - ) { - bindings[bilingKey].fromId = block.id; - } - if ( - bindings[bilingKey]?.toId === shape.id - ) { - bindings[bilingKey].toId = block.id; - } - }); return await services.api.editorBlock.update({ workspace: shape.workspace, id: block.id, @@ -134,29 +120,6 @@ const AffineBoard = ({ } }) ); - const pageBindingsString = ( - await services.api.editorBlock.get({ - workspace: workspace, - ids: [rootBlockId], - }) - )?.[0].properties.bindings?.value; - const pageBindings = JSON.parse(pageBindingsString ?? '{}'); - Object.keys(bindings).forEach(bindingsKey => { - if (!bindings[bindingsKey]) { - delete pageBindings[bindingsKey]; - } else { - Object.assign(pageBindings, bindings); - } - }); - services.api.editorBlock.update({ - workspace: workspace, - id: rootBlockId, - properties: { - bindings: { - value: JSON.stringify(pageBindings), - }, - }, - }); }, }} /> diff --git a/libs/components/affine-board/src/hooks/use-shapes.ts b/libs/components/affine-board/src/hooks/use-shapes.ts index beb8c50efa..23270b6c19 100644 --- a/libs/components/affine-board/src/hooks/use-shapes.ts +++ b/libs/components/affine-board/src/hooks/use-shapes.ts @@ -5,24 +5,12 @@ import { services } from '@toeverything/datasource/db-service'; import { usePageClientWidth } from '@toeverything/datasource/state'; import { useEffect, useState } from 'react'; -const getBindings = (workspace: string, rootBlockId: string) => { - return services.api.editorBlock - .get({ - workspace: workspace, - ids: [rootBlockId], - }) - .then(blcoks => { - return blcoks[0].properties.bindings?.value; - }); -}; - export const useShapes = (workspace: string, rootBlockId: string) => { const { pageClientWidth } = usePageClientWidth(); // page padding left and right total 300px const editorShapeInitSize = pageClientWidth - 300; const [blocks, setBlocks] = useState<{ shapes: [ReturnEditorBlock[]]; - bindings: string; }>(); useEffect(() => { Promise.all([ @@ -43,11 +31,8 @@ export const useShapes = (workspace: string, rootBlockId: string) => { return shapes; }), ]).then(shapes => { - getBindings(workspace, rootBlockId).then(bindings => { - setBlocks({ - shapes, - bindings: bindings, - }); + setBlocks({ + shapes: shapes, }); }); @@ -65,11 +50,8 @@ export const useShapes = (workspace: string, rootBlockId: string) => { return childBlock; }) ).then(shapes => { - getBindings(workspace, rootBlockId).then(bindings => { - setBlocks({ - shapes: [shapes], - bindings: bindings, - }); + setBlocks({ + shapes: [shapes], }); }); }) @@ -104,8 +86,8 @@ export const useShapes = (workspace: string, rootBlockId: string) => { return acc; }, {} as Record); + return { shapes: blocksShapes, - bindings: JSON.parse(blocks?.bindings ?? '{}'), }; }; diff --git a/libs/components/affine-editor/src/Editor.tsx b/libs/components/affine-editor/src/Editor.tsx index c280bea984..f1edb2ce74 100644 --- a/libs/components/affine-editor/src/Editor.tsx +++ b/libs/components/affine-editor/src/Editor.tsx @@ -1,7 +1,6 @@ import { forwardRef, useEffect, useImperativeHandle, useRef } from 'react'; import { - RenderBlock, RenderRoot, type BlockEditor, } from '@toeverything/components/editor-core'; @@ -88,9 +87,7 @@ export const AffineEditor = forwardRef( editor={editor} editorElement={AffineEditor as any} scrollBlank={scrollBlank} - > - - + /> ); } ); diff --git a/libs/components/board-draw/src/TlDraw.tsx b/libs/components/board-draw/src/TlDraw.tsx index 1961367235..a1444b76c0 100644 --- a/libs/components/board-draw/src/TlDraw.tsx +++ b/libs/components/board-draw/src/TlDraw.tsx @@ -362,7 +362,7 @@ const InnerTldraw = memo(function InnerTldraw({ // Hide bounds when not using the select tool, or when the only selected shape has handles const hideBounds = - (isInSession && app.session?.constructor.name !== 'BrushSession') || + (isInSession && app.session?.constructor.name === 'BrushSession') || !isSelecting || isHideBoundsShape || !!pageState.editingId; diff --git a/libs/components/board-draw/src/components/align-panel/index.tsx b/libs/components/board-draw/src/components/align-panel/index.tsx index d0ff48390d..ddc43b1254 100644 --- a/libs/components/board-draw/src/components/align-panel/index.tsx +++ b/libs/components/board-draw/src/components/align-panel/index.tsx @@ -56,7 +56,8 @@ const SelectableContainer = styled('div')<{ selected?: boolean }>( borderRadius: '5px', overflow: 'hidden', margin: '5px', - padding: '3px', + width: '24px', + height: '24px', cursor: 'pointer', boxSizing: 'border-box', '&:hover': { diff --git a/libs/components/board-draw/src/components/command-panel/ArrowTo.tsx b/libs/components/board-draw/src/components/command-panel/ArrowTo.tsx index 21f37a9fbc..84ef142ef0 100644 --- a/libs/components/board-draw/src/components/command-panel/ArrowTo.tsx +++ b/libs/components/board-draw/src/components/command-panel/ArrowTo.tsx @@ -21,6 +21,9 @@ export const ArrowTo = ({ app, shapes }: GroupAndUnGroupProps) => { let activeShape = shapes[0]; let toNextShapBindings: ArrowBinding[] = []; let bindingId = ''; + if (!activeShape) { + return; + } Object.keys(bindings).forEach(key => { if (bindings[key].toId === activeShape.id) { bindingId = bindings[key].fromId; @@ -35,7 +38,6 @@ export const ArrowTo = ({ app, shapes }: GroupAndUnGroupProps) => { toNextShapBindings.forEach(binding => { if (binding.toId !== activeShape.id) { allShape.forEach(item => { - console.log(item); if (item.id === binding.toId) { ArrowToArr.push(item); } @@ -44,7 +46,7 @@ export const ArrowTo = ({ app, shapes }: GroupAndUnGroupProps) => { }); setarrowToArr(ArrowToArr); return () => {}; - }, [app.page.bindings, app.shapes]); + }, [app.page.bindings]); const jumpToNextShap = (shape: TDShape) => { app.zoomToShapes([shape]); }; @@ -68,7 +70,7 @@ export const ArrowTo = ({ app, shapes }: GroupAndUnGroupProps) => {
} > - + diff --git a/libs/components/board-draw/src/components/command-panel/CommandPanel.tsx b/libs/components/board-draw/src/components/command-panel/CommandPanel.tsx index 94e28bdc2f..031d4240a6 100644 --- a/libs/components/board-draw/src/components/command-panel/CommandPanel.tsx +++ b/libs/components/board-draw/src/components/command-panel/CommandPanel.tsx @@ -2,7 +2,6 @@ import { TLDR, TldrawApp } from '@toeverything/components/board-state'; import { Divider, Popover, styled } from '@toeverything/components/ui'; import { Fragment } from 'react'; import { AlignOperation } from './AlignOperation'; -import { ArrowTo } from './ArrowTo'; import { BorderColorConfig } from './BorderColorConfig'; import { DeleteShapes } from './DeleteOperation'; import { FillColorConfig } from './FillColorConfig'; @@ -107,12 +106,12 @@ export const CommandPanel = ({ app }: { app: TldrawApp }) => { shapes={config.deleteShapes.selectedShapes} > ) : null, - toNextShap: ( - - ), + // toNextShap: ( + // + // ), }; const nodes = Object.entries(configNodes).filter(([key, node]) => !!node); diff --git a/libs/components/board-shapes/src/arrow-util/arrow-util.tsx b/libs/components/board-shapes/src/arrow-util/arrow-util.tsx index 42045918f4..dace7eeb38 100644 --- a/libs/components/board-shapes/src/arrow-util/arrow-util.tsx +++ b/libs/components/board-shapes/src/arrow-util/arrow-util.tsx @@ -42,7 +42,7 @@ type E = HTMLDivElement; export class ArrowUtil extends TDShapeUtil { type = TDShapeType.Arrow as const; - override hideBounds = true; + override hideBounds = false; override canEdit = true; diff --git a/libs/components/board-shapes/src/rectangle-util/components/DashedRectangle.tsx b/libs/components/board-shapes/src/rectangle-util/components/DashedRectangle.tsx index 77ee2cec6a..36d4475b92 100644 --- a/libs/components/board-shapes/src/rectangle-util/components/DashedRectangle.tsx +++ b/libs/components/board-shapes/src/rectangle-util/components/DashedRectangle.tsx @@ -1,6 +1,8 @@ import { Utils } from '@tldraw/core'; -import type { ShapeStyles } from '@toeverything/components/board-types'; -import { BINDING_DISTANCE } from '@toeverything/components/board-types'; +import { + BINDING_DISTANCE, + ShapeStyles, +} from '@toeverything/components/board-types'; import * as React from 'react'; import { getShapeStyle } from '../../shared'; @@ -56,23 +58,20 @@ export const DashedRectangle = React.memo(function DashedRectangle({ return ( <> {style.isFilled && ( diff --git a/libs/components/board-state/src/tldraw-app.ts b/libs/components/board-state/src/tldraw-app.ts index 34a392db72..1e95912db5 100644 --- a/libs/components/board-state/src/tldraw-app.ts +++ b/libs/components/board-state/src/tldraw-app.ts @@ -175,6 +175,10 @@ interface TDCallbacks { * (optional) A callback to run when the shape is copied. */ onCopy?: (e: ClipboardEvent, ids: string[]) => void; + /** + * (optional) A callback to run when the shape is paste. + */ + onPaste?: (e: ClipboardEvent, data: any) => void; } export interface TldrawAppCtorProps { @@ -626,7 +630,7 @@ export class TldrawApp extends StateManager { private prev_bindings = this.page.bindings; private prev_assets = this.document.assets; - private _broadcastPageChanges = () => { + private _broadcastPageChanges = async () => { const visited = new Set(); const changedShapes: Record = {}; @@ -683,7 +687,7 @@ export class TldrawApp extends StateManager { Object.keys(changedAssets).length > 0 ) { this.just_sent = true; - this.callbacks.onChangePage?.( + await this.callbacks.onChangePage?.( this, changedShapes, changedBindings, @@ -1956,6 +1960,53 @@ export class TldrawApp extends StateManager { paste = async (point?: number[], e?: ClipboardEvent) => { if (this.readOnly) return; + if (e) { + const data = e.clipboardData?.getData('text/html'); + const paste_as_html = (html: string) => { + try { + const maybeJson = html.match(/(.*)<\/tldraw>/)?.[1]; + + if (!maybeJson) return; + + const json: { + type: string; + shapes: TDShape[]; + bindings: TDBinding[]; + assets: TDAsset[]; + } = JSON.parse(maybeJson); + return json; + } catch (e) { + return; + } + }; + this.callbacks.onPaste?.(e, paste_as_html(data)); + return this; + } + + const paste_as_html = (html: string) => { + try { + const maybeJson = html.match(/(.*)<\/tldraw>/)?.[1]; + + if (!maybeJson) return; + + const json: { + type: string; + shapes: TDShape[]; + bindings: TDBinding[]; + assets: TDAsset[]; + } = JSON.parse(maybeJson); + + if (json.type === 'tldr/clipboard') { + pasteInCurrentPage(json.shapes, json.bindings, json.assets); + return; + } else { + throw Error('Not tldraw data!'); + } + } catch (e) { + pasteTextAsShape(html); + return; + } + }; const pasteInCurrentPage = ( shapes: TDShape[], bindings: TDBinding[], @@ -2107,31 +2158,6 @@ export class TldrawApp extends StateManager { // this.select(shapeId); }; - const paste_as_html = (html: string) => { - try { - const maybeJson = html.match(/(.*)<\/tldraw>/)?.[1]; - - if (!maybeJson) return; - - const json: { - type: string; - shapes: TDShape[]; - bindings: TDBinding[]; - assets: TDAsset[]; - } = JSON.parse(maybeJson); - - if (json.type === 'tldr/clipboard') { - pasteInCurrentPage(json.shapes, json.bindings, json.assets); - return; - } else { - throw Error('Not tldraw data!'); - } - } catch (e) { - pasteTextAsShape(html); - return; - } - }; - if (e !== undefined) { const items: DataTransferItemList = e.clipboardData?.items ?? ({} as DataTransferItemList); diff --git a/libs/components/common/src/lib/text/EditableText.tsx b/libs/components/common/src/lib/text/EditableText.tsx index 8637246d7d..b2b2229fec 100644 --- a/libs/components/common/src/lib/text/EditableText.tsx +++ b/libs/components/common/src/lib/text/EditableText.tsx @@ -804,7 +804,7 @@ const EditorLeaf = ({ attributes, children, leaf }: any) => { backgroundColor: '#F2F5F9', borderRadius: '5px', color: '#3A4C5C', - padding: '3px 8px', + padding: '1px 8px', margin: '0 2px', }} > diff --git a/libs/components/common/src/lib/text/slate-utils.ts b/libs/components/common/src/lib/text/slate-utils.ts index fd1de5f674..f44d573e64 100644 --- a/libs/components/common/src/lib/text/slate-utils.ts +++ b/libs/components/common/src/lib/text/slate-utils.ts @@ -968,7 +968,41 @@ class SlateUtils { } public getNodeByPath(path: Path) { - Editor.node(this.editor, path); + return Editor.node(this.editor, path); + } + + public getNodeByRange(range: Range) { + return Editor.node(this.editor, range); + } + + // This may should write with logic of render slate + public convertLeaf2Html(textValue: any) { + const { text, fontColor, fontBgColor } = textValue; + + const style = `style="${fontColor ? `color: ${fontColor};` : ''}${ + fontBgColor ? `backgroundColor: ${fontBgColor};` : '' + }"`; + if (textValue.bold) { + return `${text}`; + } + if (textValue.italic) { + return `${text}`; + } + if (textValue.underline) { + return `${text}`; + } + if (textValue.inlinecode) { + return `${text}`; + } + if (textValue.strikethrough) { + return `${text}`; + } + if (textValue.type === 'link') { + return `${this.convertLeaf2Html( + textValue.children + )}`; + } + return `${text}`; } public getStartSelection() { diff --git a/libs/components/editor-blocks/package.json b/libs/components/editor-blocks/package.json index d9b9c66f72..04d8e0e544 100644 --- a/libs/components/editor-blocks/package.json +++ b/libs/components/editor-blocks/package.json @@ -38,7 +38,7 @@ "react-window": "^1.8.7", "slate": "^0.81.1", "slate-react": "^0.81.0", - "style9": "^0.13.3" + "style9": "^0.14.0" }, "devDependencies": { "@types/codemirror": "^5.60.5", diff --git a/libs/components/editor-blocks/src/blocks/bullet/BulletView.tsx b/libs/components/editor-blocks/src/blocks/bullet/BulletView.tsx index 9f77eda6cb..0bdbd7ca5b 100644 --- a/libs/components/editor-blocks/src/blocks/bullet/BulletView.tsx +++ b/libs/components/editor-blocks/src/blocks/bullet/BulletView.tsx @@ -1,29 +1,28 @@ import type { TextProps } from '@toeverything/components/common'; import { ContentColumnValue, - services, Protocol, + services, } from '@toeverything/datasource/db-service'; import { type CreateView } from '@toeverything/framework/virgo'; import { useEffect, useRef, useState } from 'react'; +import { + BlockPendantProvider, + RenderBlockChildren, + supportChildren, + useOnSelect, +} from '@toeverything/components/editor-core'; +import { styled } from '@toeverything/components/ui'; +import { BlockContainer } from '../../components/BlockContainer'; +import { List } from '../../components/style-container'; import { TextManage, type ExtendedTextUtils, } from '../../components/text-manage'; import { tabBlock } from '../../utils/indent'; +import { BulletIcon, getChildrenType, NumberType } from './data'; import { BulletBlock, BulletProperties } from './types'; -import { - supportChildren, - RenderBlockChildren, - useOnSelect, - BlockPendantProvider, -} from '@toeverything/components/editor-core'; -import { List } from '../../components/style-container'; -import { getChildrenType, BulletIcon, NumberType } from './data'; -import { IndentWrapper } from '../../components/IndentWrapper'; -import { BlockContainer } from '../../components/BlockContainer'; -import { styled } from '@toeverything/components/ui'; export const defaultBulletProps: BulletProperties = { text: { value: [{ text: '' }] }, @@ -189,7 +188,7 @@ export const BulletView = ({ block, editor }: CreateView) => { return ( - + @@ -208,9 +207,7 @@ export const BulletView = ({ block, editor }: CreateView) => {
- - - + ); }; diff --git a/libs/components/editor-blocks/src/blocks/bullet/index.ts b/libs/components/editor-blocks/src/blocks/bullet/index.ts index 087afb3056..6044fdb4a8 100644 --- a/libs/components/editor-blocks/src/blocks/bullet/index.ts +++ b/libs/components/editor-blocks/src/blocks/bullet/index.ts @@ -1,18 +1,17 @@ +import { Protocol } from '@toeverything/datasource/db-service'; import { AsyncBlock, BaseView, - CreateView, - getTextProperties, - SelectBlock, - getTextHtml, + BlockEditor, + HTML2BlockResult, } from '@toeverything/framework/virgo'; + import { - Protocol, - DefaultColumnsValue, -} from '@toeverything/datasource/db-service'; -// import { withTreeViewChildren } from '../../utils/with-tree-view-children'; -import { defaultBulletProps, BulletView } from './BulletView'; -import { IndentWrapper } from '../../components/IndentWrapper'; + Block2HtmlProps, + commonBlock2HtmlContent, + commonHTML2block, +} from '../../utils/commonBlockClip'; +import { BulletView, defaultBulletProps } from './BulletView'; export class BulletBlock extends BaseView { public type = Protocol.Block.Type.bullet; @@ -27,66 +26,44 @@ export class BulletBlock extends BaseView { } return block; } + override async html2block({ + element, + editor, + }: { + element: Element; + editor: BlockEditor; + }): Promise { + if (element.tagName === 'UL') { + const firstList = element.querySelector('li'); - override getSelProperties( - block: AsyncBlock, - selectInfo: any - ): DefaultColumnsValue { - const properties = super.getSelProperties(block, selectInfo); - return getTextProperties(properties, selectInfo); - } - - override html2block( - el: Element, - parseEl: (el: Element) => any[] - ): any[] | null { - const tag_name = el.tagName; - if (tag_name === 'UL') { - const result = []; - for (let i = 0; i < el.children.length; i++) { - const blocks_info = parseEl(el.children[i]); - result.push(...blocks_info); + if (!firstList || firstList.innerText.startsWith('[ ] ')) { + return null; } - return result.length > 0 ? result : null; + const children = Array.from(element.children); + const childrenBlockInfos = ( + await Promise.all( + children.map(childElement => + this.html2block({ + editor, + element: childElement, + }) + ) + ) + ) + .flat() + .filter(v => v); + return childrenBlockInfos.length ? childrenBlockInfos : null; } - if (tag_name == 'LI' && !el.textContent.startsWith('[ ] ')) { - const childNodes = el.childNodes; - const texts = []; - const children = []; - for (let i = 0; i < childNodes.length; i++) { - const blocks_info = parseEl(childNodes[i] as Element); - for (let j = 0; j < blocks_info.length; j++) { - if (blocks_info[j].type === 'text') { - const block_texts = - blocks_info[j].properties.text.value; - texts.push(...block_texts); - } else { - children.push(blocks_info[j]); - } - } - } - return [ - { - type: this.type, - properties: { - text: { value: texts }, - }, - children: children, - }, - ]; - } - - return null; + return commonHTML2block({ + element, + editor, + type: this.type, + tagName: 'LI', + }); } - override async block2html( - block: AsyncBlock, - children: SelectBlock[], - generateHtml: (el: any[]) => Promise - ): Promise { - let content = getTextHtml(block); - content += await generateHtml(children); - return `
  • ${content}
`; + override async block2html(props: Block2HtmlProps) { + return `
  • ${await commonBlock2HtmlContent(props)}
`; } } diff --git a/libs/components/editor-blocks/src/blocks/code/CodeView.tsx b/libs/components/editor-blocks/src/blocks/code/CodeView.tsx index 2739c8a70c..f5b91d7fcf 100644 --- a/libs/components/editor-blocks/src/blocks/code/CodeView.tsx +++ b/libs/components/editor-blocks/src/blocks/code/CodeView.tsx @@ -1,58 +1,54 @@ -import { useState, useRef, useEffect } from 'react'; -import { StyleWithAtRules } from 'style9'; - -import { CreateView } from '@toeverything/framework/virgo'; -import CodeMirror, { ReactCodeMirrorRef } from './CodeMirror'; -import { styled } from '@toeverything/components/ui'; - -import { javascript } from '@codemirror/lang-javascript'; -import { html } from '@codemirror/lang-html'; -import { css } from '@codemirror/lang-css'; -import { json } from '@codemirror/lang-json'; -import { python } from '@codemirror/lang-python'; -import { markdown } from '@codemirror/lang-markdown'; -import { xml } from '@codemirror/lang-xml'; -import { sql, MySQL, PostgreSQL } from '@codemirror/lang-sql'; -import { java } from '@codemirror/lang-java'; -import { rust } from '@codemirror/lang-rust'; import { cpp } from '@codemirror/lang-cpp'; +import { css } from '@codemirror/lang-css'; +import { html } from '@codemirror/lang-html'; +import { java } from '@codemirror/lang-java'; +import { javascript } from '@codemirror/lang-javascript'; +import { json } from '@codemirror/lang-json'; import { lezer } from '@codemirror/lang-lezer'; +import { markdown } from '@codemirror/lang-markdown'; import { php } from '@codemirror/lang-php'; +import { python } from '@codemirror/lang-python'; +import { rust } from '@codemirror/lang-rust'; +import { MySQL, PostgreSQL, sql } from '@codemirror/lang-sql'; +import { xml } from '@codemirror/lang-xml'; import { StreamLanguage } from '@codemirror/language'; -import { go } from '@codemirror/legacy-modes/mode/go'; -import { ruby } from '@codemirror/legacy-modes/mode/ruby'; -import { shell } from '@codemirror/legacy-modes/mode/shell'; -import { lua } from '@codemirror/legacy-modes/mode/lua'; -import { swift } from '@codemirror/legacy-modes/mode/swift'; -import { tcl } from '@codemirror/legacy-modes/mode/tcl'; -import { yaml } from '@codemirror/legacy-modes/mode/yaml'; -import { vb } from '@codemirror/legacy-modes/mode/vb'; -import { powerShell } from '@codemirror/legacy-modes/mode/powershell'; import { brainfuck } from '@codemirror/legacy-modes/mode/brainfuck'; -import { stylus } from '@codemirror/legacy-modes/mode/stylus'; -import { erlang } from '@codemirror/legacy-modes/mode/erlang'; -import { elixir } from 'codemirror-lang-elixir'; -import { nginx } from '@codemirror/legacy-modes/mode/nginx'; -import { perl } from '@codemirror/legacy-modes/mode/perl'; -import { pascal } from '@codemirror/legacy-modes/mode/pascal'; -import { liveScript } from '@codemirror/legacy-modes/mode/livescript'; -import { scheme } from '@codemirror/legacy-modes/mode/scheme'; -import { toml } from '@codemirror/legacy-modes/mode/toml'; -import { vbScript } from '@codemirror/legacy-modes/mode/vbscript'; import { clojure } from '@codemirror/legacy-modes/mode/clojure'; import { coffeeScript } from '@codemirror/legacy-modes/mode/coffeescript'; import { dockerFile } from '@codemirror/legacy-modes/mode/dockerfile'; +import { erlang } from '@codemirror/legacy-modes/mode/erlang'; +import { go } from '@codemirror/legacy-modes/mode/go'; import { julia } from '@codemirror/legacy-modes/mode/julia'; +import { liveScript } from '@codemirror/legacy-modes/mode/livescript'; +import { lua } from '@codemirror/legacy-modes/mode/lua'; +import { nginx } from '@codemirror/legacy-modes/mode/nginx'; +import { pascal } from '@codemirror/legacy-modes/mode/pascal'; +import { perl } from '@codemirror/legacy-modes/mode/perl'; +import { powerShell } from '@codemirror/legacy-modes/mode/powershell'; import { r } from '@codemirror/legacy-modes/mode/r'; +import { ruby } from '@codemirror/legacy-modes/mode/ruby'; +import { scheme } from '@codemirror/legacy-modes/mode/scheme'; +import { shell } from '@codemirror/legacy-modes/mode/shell'; +import { stylus } from '@codemirror/legacy-modes/mode/stylus'; +import { swift } from '@codemirror/legacy-modes/mode/swift'; +import { tcl } from '@codemirror/legacy-modes/mode/tcl'; +import { toml } from '@codemirror/legacy-modes/mode/toml'; +import { vb } from '@codemirror/legacy-modes/mode/vb'; +import { vbScript } from '@codemirror/legacy-modes/mode/vbscript'; +import { yaml } from '@codemirror/legacy-modes/mode/yaml'; import { Extension } from '@codemirror/state'; -import { Option, Select } from '@toeverything/components/ui'; - import { - useOnSelect, BlockPendantProvider, + useOnSelect, } from '@toeverything/components/editor-core'; -import { copyToClipboard } from '@toeverything/utils'; import { DuplicateIcon } from '@toeverything/components/icons'; +import { Option, Select, styled } from '@toeverything/components/ui'; +import { CreateView } from '@toeverything/framework/virgo'; +import { copyToClipboard } from '@toeverything/utils'; +import { elixir } from 'codemirror-lang-elixir'; +import { useEffect, useRef, useState } from 'react'; +import { StyleWithAtRules } from 'style9'; +import CodeMirror, { ReactCodeMirrorRef } from './CodeMirror'; interface CreateCodeView extends CreateView { style9?: StyleWithAtRules; @@ -110,13 +106,15 @@ const CodeBlock = styled('div')(({ theme }) => ({ borderRadius: theme.affine.shape.borderRadius, '&:hover': { '.operation': { - display: 'flex', + opacity: 1, }, }, '.operation': { display: 'flex', flexWrap: 'wrap', justifyContent: 'space-between', + opacity: 0, + transition: 'opacity 1.5s', }, '.copy-block': { padding: '0px 10px', @@ -172,7 +170,7 @@ export const CodeView = ({ block, editor }: CreateCodeView) => { editor.selectionManager.activePreviousNode(block.id, 'start'); }; return ( - + { e.stopPropagation(); @@ -200,7 +198,8 @@ export const CodeView = ({ block, editor }: CreateCodeView) => {
- Copy + + Copy
diff --git a/libs/components/editor-blocks/src/blocks/code/index.ts b/libs/components/editor-blocks/src/blocks/code/index.ts index ce8d7badfb..4239add745 100644 --- a/libs/components/editor-blocks/src/blocks/code/index.ts +++ b/libs/components/editor-blocks/src/blocks/code/index.ts @@ -1,17 +1,16 @@ import { BaseView, AsyncBlock, - getTextProperties, - CreateView, - SelectBlock, - getTextHtml, + BlockEditor, + HTML2BlockResult, } from '@toeverything/framework/virgo'; -import { - Protocol, - DefaultColumnsValue, -} from '@toeverything/datasource/db-service'; +import { Protocol } from '@toeverything/datasource/db-service'; import { CodeView } from './CodeView'; -import { ComponentType } from 'react'; +import { + Block2HtmlProps, + commonBlock2HtmlContent, + commonHTML2block, +} from '../../utils/commonBlockClip'; export class CodeBlock extends BaseView { type = Protocol.Block.Type.code; @@ -28,56 +27,22 @@ export class CodeBlock extends BaseView { return block; } - override getSelProperties( - block: AsyncBlock, - selectInfo: any - ): DefaultColumnsValue { - const properties = super.getSelProperties(block, selectInfo); - return getTextProperties(properties, selectInfo); + override async html2block({ + element, + editor, + }: { + element: Element; + editor: BlockEditor; + }): Promise { + return commonHTML2block({ + element, + editor, + type: this.type, + tagName: 'CODE', + }); } - // TODO: internal format not implemented yet - override html2block( - el: Element, - parseEl: (el: Element) => any[] - ): any[] | null { - const tag_name = el.tagName; - if (tag_name === 'CODE') { - const childNodes = el.childNodes; - let text_value = ''; - for (let i = 0; i < childNodes.length; i++) { - const blocks_info = parseEl(childNodes[i] as Element); - for (let j = 0; j < blocks_info.length; j++) { - if (blocks_info[j].type === 'text') { - const block_texts = - blocks_info[j].properties.text.value; - if (block_texts.length > 0) { - text_value += block_texts[0].text; - } - } - } - } - return [ - { - type: this.type, - properties: { - text: { value: [{ text: text_value }] }, - }, - children: [], - }, - ]; - } - - return null; - } - - override async block2html( - block: AsyncBlock, - children: SelectBlock[], - generateHtml: (el: any[]) => Promise - ): Promise { - let content = getTextHtml(block); - content += await generateHtml(children); - return `${content}`; + override async block2html(props: Block2HtmlProps) { + return `${await commonBlock2HtmlContent(props)}`; } } diff --git a/libs/components/editor-blocks/src/blocks/divider/index.ts b/libs/components/editor-blocks/src/blocks/divider/index.ts index 6d67611cda..f77722838f 100644 --- a/libs/components/editor-blocks/src/blocks/divider/index.ts +++ b/libs/components/editor-blocks/src/blocks/divider/index.ts @@ -1,39 +1,35 @@ import { AsyncBlock, BaseView, + BlockEditor, + HTML2BlockResult, SelectBlock, } from '@toeverything/framework/virgo'; import { Protocol } from '@toeverything/datasource/db-service'; import { DividerView } from './divider-view'; +import { Block2HtmlProps, commonHTML2block } from '../../utils/commonBlockClip'; export class DividerBlock extends BaseView { type = Protocol.Block.Type.divider; View = DividerView; - override html2block( - el: Element, - parseEl: (el: Element) => any[] - ): any[] | null { - const tag_name = el.tagName; - if (tag_name === 'HR') { - return [ - { - type: this.type, - properties: { - text: {}, - }, - children: [], - }, - ]; - } - return null; + override async html2block({ + element, + editor, + }: { + element: Element; + editor: BlockEditor; + }): Promise { + return commonHTML2block({ + element, + editor, + type: this.type, + tagName: 'HR', + ignoreEmptyElement: false, + }); } - override async block2html( - block: AsyncBlock, - children: SelectBlock[], - generateHtml: (el: any[]) => Promise - ): Promise { - return `
`; + override async block2html(props: Block2HtmlProps) { + return `
`; } } diff --git a/libs/components/editor-blocks/src/blocks/embed-link/EmbedLinkView.tsx b/libs/components/editor-blocks/src/blocks/embed-link/EmbedLinkView.tsx index 86b43908d1..c3e7199c29 100644 --- a/libs/components/editor-blocks/src/blocks/embed-link/EmbedLinkView.tsx +++ b/libs/components/editor-blocks/src/blocks/embed-link/EmbedLinkView.tsx @@ -33,7 +33,7 @@ export const EmbedLinkView = (props: EmbedLinkView) => { }; return ( - + {embedLinkUrl ? ( any[] - ): any[] | null { - const tag_name = el.tagName; - if (tag_name === 'A' && el.parentElement?.childElementCount === 1) { - return [ - { - type: this.type, - properties: { - // TODO: Not sure what value to fill for name - embedLink: { - name: this.type, - value: el.getAttribute('href'), - }, - }, - children: [], - }, - ]; - } - - return null; - } - - override async block2html( - block: AsyncBlock, - children: SelectBlock[], - generateHtml: (el: any[]) => Promise - ): Promise { - const figma_url = block.getProperty('embedLink')?.value; - return `

${figma_url}

`; + override async block2html({ block }: Block2HtmlProps) { + const url = block.getProperty('embedLink')?.value; + return `

${url}

`; } } diff --git a/libs/components/editor-blocks/src/blocks/figma/FigmaView.tsx b/libs/components/editor-blocks/src/blocks/figma/FigmaView.tsx index 7375546dad..6949280646 100644 --- a/libs/components/editor-blocks/src/blocks/figma/FigmaView.tsx +++ b/libs/components/editor-blocks/src/blocks/figma/FigmaView.tsx @@ -1,13 +1,12 @@ -import { useState } from 'react'; -import { CreateView } from '@toeverything/framework/virgo'; import { - useOnSelect, BlockPendantProvider, + useOnSelect, } from '@toeverything/components/editor-core'; -import { Upload } from '../../components/upload/upload'; +import { CreateView } from '@toeverything/framework/virgo'; +import { useState } from 'react'; import { SourceView } from '../../components/source-view'; -import { styled } from '@toeverything/components/ui'; import { LinkContainer } from '../../components/style-container'; +import { Upload } from '../../components/upload/upload'; const MESSAGES = { ADD_FIGMA_LINK: 'Add figma link', @@ -30,7 +29,7 @@ export const FigmaView = ({ block, editor }: FigmaView) => { setIsSelect(isSelect); }); return ( - + {figmaUrl ? ( any[] - ): any[] | null { - const tag_name = el.tagName; - if (tag_name === 'A' && el.parentElement?.childElementCount === 1) { - const href = el.getAttribute('href'); - const allowedHosts = ['www.figma.com']; - const host = new URL(href).host; - - if (allowedHosts.includes(host)) { - return [ - { - type: this.type, - properties: { - // TODO: Not sure what value to fill for name - embedLink: { - name: this.type, - value: el.getAttribute('href'), - }, - }, - children: [], - }, - ]; - } - } - - return null; - } - - override async block2html( - block: AsyncBlock, - children: SelectBlock[], - generateHtml: (el: any[]) => Promise - ): Promise { - const figma_url = block.getProperty('embedLink')?.value; - return `

${figma_url}

`; + override async block2html({ block }: Block2HtmlProps) { + const figmaUrl = block.getProperty('embedLink')?.value; + return `

${figmaUrl}

`; } } diff --git a/libs/components/editor-blocks/src/blocks/file/index.ts b/libs/components/editor-blocks/src/blocks/file/index.ts index e3119e9a16..c2f12c0c6d 100644 --- a/libs/components/editor-blocks/src/blocks/file/index.ts +++ b/libs/components/editor-blocks/src/blocks/file/index.ts @@ -9,25 +9,22 @@ import { services, } from '@toeverything/datasource/db-service'; import { FileView } from './FileView'; +import { Block2HtmlProps } from '../../utils/commonBlockClip'; export class FileBlock extends BaseView { public override selectable = true; public override editable = false; type = Protocol.Block.Type.file; View = FileView; + override async block2html({ block }: Block2HtmlProps) { + const fileProperty = block.getProperty('file'); + const fileId = fileProperty?.value; + const fileInfo = fileId + ? await services.api.file.get(fileId, block.workspace) + : null; - override async block2html( - block: AsyncBlock, - children: SelectBlock[], - generateHtml: (el: any[]) => Promise - ): Promise { - const file_property = - block.getProperty('file') || ({} as FileColumnValue); - const file_id = file_property.value; - let file_info = null; - if (file_id) { - file_info = await services.api.file.get(file_id, block.workspace); - } - return `

${file_property?.name}

`; + return fileInfo + ? `

${fileProperty?.name}

` + : ''; } } diff --git a/libs/components/editor-blocks/src/blocks/grid-item/GridItemRender.tsx b/libs/components/editor-blocks/src/blocks/grid-item/GridItemRender.tsx index 3a598b3145..620a25dba6 100644 --- a/libs/components/editor-blocks/src/blocks/grid-item/GridItemRender.tsx +++ b/libs/components/editor-blocks/src/blocks/grid-item/GridItemRender.tsx @@ -1,4 +1,4 @@ -import { RenderBlock } from '@toeverything/components/editor-core'; +import { RenderBlockChildren } from '@toeverything/components/editor-core'; import { ChildrenView, CreateView } from '@toeverything/framework/virgo'; export const GridItemRender = function ( @@ -6,13 +6,7 @@ export const GridItemRender = function ( ) { const GridItem = function (props: CreateView) { const { block } = props; - const children = ( - <> - {block.childrenIds.map(id => { - return ; - })} - - ); + const children = ; return <>{creator({ ...props, children })}; }; return GridItem; diff --git a/libs/components/editor-blocks/src/blocks/grid/Grid.tsx b/libs/components/editor-blocks/src/blocks/grid/Grid.tsx index 4ecf47f3b5..a8e69125d0 100644 --- a/libs/components/editor-blocks/src/blocks/grid/Grid.tsx +++ b/libs/components/editor-blocks/src/blocks/grid/Grid.tsx @@ -1,16 +1,16 @@ -import { RenderBlock } from '@toeverything/components/editor-core'; -import { CreateView } from '@toeverything/framework/virgo'; -import React, { useEffect, useRef, useState } from 'react'; -import { GridHandle } from './GirdHandle'; +import { BlockRender } from '@toeverything/components/editor-core'; import { styled } from '@toeverything/components/ui'; +import { Protocol } from '@toeverything/datasource/db-service'; +import { CreateView } from '@toeverything/framework/virgo'; +import { debounce, domToRect, Point } from '@toeverything/utils'; +import clsx from 'clsx'; +import React, { useEffect, useRef, useState } from 'react'; import ReactDOM from 'react-dom'; import { GRID_ITEM_CLASS_NAME, GRID_ITEM_CONTENT_CLASS_NAME, } from '../grid-item/GridItem'; -import { debounce, domToRect, Point } from '@toeverything/utils'; -import clsx from 'clsx'; -import { Protocol } from '@toeverything/datasource/db-service'; +import { GridHandle } from './GirdHandle'; const DB_UPDATE_DELAY = 50; const GRID_ON_DRAG_CLASS = 'grid-layout-on-drag'; @@ -226,7 +226,7 @@ export const Grid = function (props: CreateView) { key={id} className={GRID_ITEM_CLASS_NAME} > - + handleDragGrid(event, i)} editor={editor} diff --git a/libs/components/editor-blocks/src/blocks/group/Group.tsx b/libs/components/editor-blocks/src/blocks/group/Group.tsx index 787c537f18..ea27bbbd38 100644 --- a/libs/components/editor-blocks/src/blocks/group/Group.tsx +++ b/libs/components/editor-blocks/src/blocks/group/Group.tsx @@ -6,6 +6,10 @@ import { SelectBlock, } from '@toeverything/framework/virgo'; import { GroupView } from './GroupView'; +import { + Block2HtmlProps, + commonBlock2HtmlContent, +} from '../../utils/commonBlockClip'; export class Group extends BaseView { public override selectable = true; @@ -25,13 +29,12 @@ export class Group extends BaseView { override async onCreate(block: AsyncBlock): Promise { return block; } - - override async block2html( - block: AsyncBlock, - children: SelectBlock[], - generateHtml: (el: any[]) => Promise - ): Promise { - const content = await generateHtml(children); - return `
${content}
`; + override async block2html({ editor, selectInfo, block }: Block2HtmlProps) { + const childrenHtml = + await editor.clipboard.clipboardUtils.convertBlock2HtmlBySelectInfos( + block, + selectInfo?.children + ); + return `
${childrenHtml}`; } } diff --git a/libs/components/editor-blocks/src/blocks/group/GroupView.tsx b/libs/components/editor-blocks/src/blocks/group/GroupView.tsx index 791059e36c..f0d6e56cc5 100644 --- a/libs/components/editor-blocks/src/blocks/group/GroupView.tsx +++ b/libs/components/editor-blocks/src/blocks/group/GroupView.tsx @@ -21,19 +21,6 @@ const SceneMap: Record> = { kanban: SceneKanban, } as const; -const GroupBox = styled('div')(({ theme }) => { - return { - '&:hover': { - // Workaround referring to other components - // See https://emotion.sh/docs/styled#targeting-another-emotion-component - // [GroupActionWrapper.toString()]: {}, - '& > *': { - visibility: 'visible', - }, - }, - }; -}); - const GroupActionWrapper = styled('div')(({ theme }) => ({ height: '30px', display: 'flex', @@ -59,6 +46,14 @@ const GroupActionWrapper = styled('div')(({ theme }) => ({ }, })); +const GroupBox = styled('div')({ + '&:hover': { + [GroupActionWrapper.toString()]: { + visibility: 'visible', + }, + }, +}); + const GroupContainer = styled('div')<{ isSelect?: boolean }>( ({ isSelect, theme }) => ({ background: theme.affine.palette.white, diff --git a/libs/components/editor-blocks/src/blocks/group/ScenePage.tsx b/libs/components/editor-blocks/src/blocks/group/ScenePage.tsx index 6145bec114..739927626d 100644 --- a/libs/components/editor-blocks/src/blocks/group/ScenePage.tsx +++ b/libs/components/editor-blocks/src/blocks/group/ScenePage.tsx @@ -2,5 +2,5 @@ import { RenderBlockChildren } from '@toeverything/components/editor-core'; import type { CreateView } from '@toeverything/framework/virgo'; export const ScenePage = ({ block }: CreateView) => { - return ; + return ; }; diff --git a/libs/components/editor-blocks/src/blocks/group/group-menu/AddViewMenu.tsx b/libs/components/editor-blocks/src/blocks/group/group-menu/AddViewMenu.tsx index a376785b52..e1cee48f30 100644 --- a/libs/components/editor-blocks/src/blocks/group/group-menu/AddViewMenu.tsx +++ b/libs/components/editor-blocks/src/blocks/group/group-menu/AddViewMenu.tsx @@ -41,7 +41,7 @@ export const AddViewMenu = () => { onClick={() => setActivePanel(!activePanel)} > - Add View + Add View {activePanel && ( @@ -66,10 +66,10 @@ export const AddViewMenu = () => { key={name} active={viewType === scene} onClick={() => { - if (scene === RecastScene.Table) { - // The table view is under progress - return; - } + // if (scene === RecastScene.Table) { + // // The table view is under progress + // return; + // } setViewType(scene); }} style={{ textTransform: 'uppercase' }} diff --git a/libs/components/editor-blocks/src/blocks/group/group-menu/MainMenu.tsx b/libs/components/editor-blocks/src/blocks/group/group-menu/MainMenu.tsx index 92aa53566e..43b819aabe 100644 --- a/libs/components/editor-blocks/src/blocks/group/group-menu/MainMenu.tsx +++ b/libs/components/editor-blocks/src/blocks/group/group-menu/MainMenu.tsx @@ -82,7 +82,7 @@ const GroupMenuWrapper = ({ content={ - + {/**/} { // // Closed beta period temporarily // filterSorterFlag && ( diff --git a/libs/components/editor-blocks/src/blocks/group/group-menu/ViewsMenu.tsx b/libs/components/editor-blocks/src/blocks/group/group-menu/ViewsMenu.tsx index 1fee99465e..273911a94d 100644 --- a/libs/components/editor-blocks/src/blocks/group/group-menu/ViewsMenu.tsx +++ b/libs/components/editor-blocks/src/blocks/group/group-menu/ViewsMenu.tsx @@ -20,7 +20,7 @@ export const ViewsMenu = () => { useRecastView(); const handleChange = (e: ChangeEvent) => { - setViewName(e.target.value.trim()); + setViewName(e.target.value); }; const handleKeyDown = (event: KeyboardEvent) => { @@ -36,7 +36,7 @@ export const ViewsMenu = () => { } await updateView({ ...activeView, - name: viewName, + name: viewName.trim(), type: viewType, }); setActiveView(null); @@ -99,10 +99,10 @@ export const ViewsMenu = () => { key={name} active={viewType === scene} onClick={() => { - if (scene === RecastScene.Table) { - // The table view is under progress - return; - } + // if (scene === RecastScene.Table) { + // // The table view is under progress + // return; + // } setViewType(scene); }} style={{ textTransform: 'uppercase' }} diff --git a/libs/components/editor-blocks/src/blocks/group/group-menu/constant.tsx b/libs/components/editor-blocks/src/blocks/group/group-menu/constant.tsx index 0f2a1887d4..7a057eccbd 100644 --- a/libs/components/editor-blocks/src/blocks/group/group-menu/constant.tsx +++ b/libs/components/editor-blocks/src/blocks/group/group-menu/constant.tsx @@ -1,9 +1,5 @@ import { RecastScene } from '@toeverything/components/editor-core'; -import { - KanBanIcon, - TableIcon, - TodoListIcon, -} from '@toeverything/components/icons'; +import { KanBanIcon, TodoListIcon } from '@toeverything/components/icons'; export const VIEW_LIST = [ { @@ -16,9 +12,9 @@ export const VIEW_LIST = [ scene: RecastScene.Kanban, icon: , }, - { - name: 'Table', - scene: RecastScene.Table, - icon: , - }, + // { + // name: 'Table', + // scene: RecastScene.Table, + // icon: , + // }, ] as const; diff --git a/libs/components/editor-blocks/src/blocks/group/scene-kanban/CardContext.tsx b/libs/components/editor-blocks/src/blocks/group/scene-kanban/CardContext.tsx index 13fcaa45e3..74afbe087d 100644 --- a/libs/components/editor-blocks/src/blocks/group/scene-kanban/CardContext.tsx +++ b/libs/components/editor-blocks/src/blocks/group/scene-kanban/CardContext.tsx @@ -1,12 +1,12 @@ -import { useCallback } from 'react'; -import { CardItem } from './CardItem'; -import { styled } from '@toeverything/components/ui'; -import { useKanban } from '@toeverything/components/editor-core'; -import { CardItemPanelWrapper } from './dndable/wrapper/CardItemPanelWrapper'; import type { KanbanCard, KanbanGroup, } from '@toeverything/components/editor-core'; +import { useKanban } from '@toeverything/components/editor-core'; +import { styled } from '@toeverything/components/ui'; +import { useCallback } from 'react'; +import { CardItem } from './CardItem'; +import { CardItemPanelWrapper } from './dndable/wrapper/CardItemPanelWrapper'; const AddCardWrapper = styled('div')({ display: 'flex', @@ -48,7 +48,7 @@ export const CardContext = (props: Props) => { item={item} active={activeId === id} > - + ); diff --git a/libs/components/editor-blocks/src/blocks/group/scene-kanban/CardItem.tsx b/libs/components/editor-blocks/src/blocks/group/scene-kanban/CardItem.tsx index 837772bed2..b527711217 100644 --- a/libs/components/editor-blocks/src/blocks/group/scene-kanban/CardItem.tsx +++ b/libs/components/editor-blocks/src/blocks/group/scene-kanban/CardItem.tsx @@ -1,6 +1,6 @@ import { + KanbanBlockRender, KanbanCard, - RenderBlock, useEditor, useKanban, } from '@toeverything/components/editor-core'; @@ -10,7 +10,6 @@ import { MuiClickAwayListener, styled, } from '@toeverything/components/ui'; -import { useFlag } from '@toeverything/datasource/feature-flags'; import { useState, type MouseEvent } from 'react'; import { useRefPage } from './RefPage'; @@ -82,41 +81,37 @@ const Overlay = styled('div')({ }, }); -export const CardItem = ({ - id, - block, -}: { - id: KanbanCard['id']; - block: KanbanCard['block']; -}) => { +export const CardItem = ({ block }: { block: KanbanCard['block'] }) => { const { addSubItem } = useKanban(); const { openSubPage } = useRefPage(); - const [editable, setEditable] = useState(false); - const showKanbanRefPageFlag = useFlag('ShowKanbanRefPage', false); + const [editableBlock, setEditableBlock] = useState(null); const { editor } = useEditor(); const onAddItem = async () => { - setEditable(true); - await addSubItem(block); + const newItem = await addSubItem(block); + setEditableBlock(newItem.id); }; const onClickCard = async () => { - openSubPage(id); + openSubPage(block.id); }; const onClickPen = (e: MouseEvent) => { e.stopPropagation(); - setEditable(true); + setEditableBlock(block.id); editor.selectionManager.activeNodeByNodeId(block.id); }; return ( - setEditable(false)}> + setEditableBlock(null)}> - + - {showKanbanRefPageFlag && !editable && ( + {!editableBlock && ( diff --git a/libs/components/editor-blocks/src/blocks/group/scene-kanban/RefPage.tsx b/libs/components/editor-blocks/src/blocks/group/scene-kanban/RefPage.tsx index 3d223d121d..34d6dbb583 100644 --- a/libs/components/editor-blocks/src/blocks/group/scene-kanban/RefPage.tsx +++ b/libs/components/editor-blocks/src/blocks/group/scene-kanban/RefPage.tsx @@ -21,13 +21,17 @@ const Modal = ({ open, children }: { open: boolean; children?: ReactNode }) => { return createPortal( void }) => { + // Prevent trigger the bottom editor's selection + e.stopPropagation(); + }} + onClick={closeSubPage} style={{ display: 'flex', flexDirection: 'column', background: 'rgba(58, 76, 92, 0.4)', zIndex: theme.affine.zIndex.popover, }} - onClick={closeSubPage} > void }) => { diff --git a/libs/components/editor-blocks/src/blocks/group/scene-kanban/dndable/drag-overlay/renderContainerDragOverlay.tsx b/libs/components/editor-blocks/src/blocks/group/scene-kanban/dndable/drag-overlay/renderContainerDragOverlay.tsx index 957ee8599f..b2b1382e5c 100644 --- a/libs/components/editor-blocks/src/blocks/group/scene-kanban/dndable/drag-overlay/renderContainerDragOverlay.tsx +++ b/libs/components/editor-blocks/src/blocks/group/scene-kanban/dndable/drag-overlay/renderContainerDragOverlay.tsx @@ -1,7 +1,6 @@ -import { CardItemWrapper } from '../wrapper/CardItemWrapper'; import { CardItem } from '../../CardItem'; -import type { KanbanCard } from '@toeverything/components/editor-core'; import type { DndableItems } from '../type'; +import { CardItemWrapper } from '../wrapper/CardItemWrapper'; export function renderContainerDragOverlay({ containerId, @@ -18,7 +17,7 @@ export function renderContainerDragOverlay({ return ( } + card={} index={index} /> ); diff --git a/libs/components/editor-blocks/src/blocks/groupDvider/index.ts b/libs/components/editor-blocks/src/blocks/groupDvider/index.ts index 4120f1a525..458ef2f708 100644 --- a/libs/components/editor-blocks/src/blocks/groupDvider/index.ts +++ b/libs/components/editor-blocks/src/blocks/groupDvider/index.ts @@ -5,35 +5,13 @@ import { } from '@toeverything/framework/virgo'; import { Protocol } from '@toeverything/datasource/db-service'; import { GroupDividerView } from './groupDividerView'; +import { Block2HtmlProps } from '../../utils/commonBlockClip'; export class GroupDividerBlock extends BaseView { type = Protocol.Block.Type.groupDivider; View = GroupDividerView; - override html2block( - el: Element, - parseEl: (el: Element) => any[] - ): any[] | null { - const tag_name = el.tagName; - if (tag_name === 'HR') { - return [ - { - type: this.type, - properties: { - text: {}, - }, - children: [], - }, - ]; - } - return null; - } - - override async block2html( - block: AsyncBlock, - children: SelectBlock[], - generateHtml: (el: any[]) => Promise - ): Promise { - return `
`; + override async block2html(props: Block2HtmlProps) { + return `
`; } } diff --git a/libs/components/editor-blocks/src/blocks/image/ImageView.tsx b/libs/components/editor-blocks/src/blocks/image/ImageView.tsx index 886c10fc97..3bc5435575 100644 --- a/libs/components/editor-blocks/src/blocks/image/ImageView.tsx +++ b/libs/components/editor-blocks/src/blocks/image/ImageView.tsx @@ -165,12 +165,10 @@ export const ImageView = ({ block, editor }: ImageView) => { }; return ( - +
- {!isSelect ? ( - - ) : null} + {!isSelect ? : null} {imgUrl ? (
{ diff --git a/libs/components/editor-blocks/src/blocks/image/index.ts b/libs/components/editor-blocks/src/blocks/image/index.ts index e5c33514e2..b170d44413 100644 --- a/libs/components/editor-blocks/src/blocks/image/index.ts +++ b/libs/components/editor-blocks/src/blocks/image/index.ts @@ -1,10 +1,12 @@ import { - AsyncBlock, BaseView, - SelectBlock, + BlockEditor, + HTML2BlockResult, } from '@toeverything/framework/virgo'; import { Protocol } from '@toeverything/datasource/db-service'; import { ImageView } from './ImageView'; +import { Block2HtmlProps } from '../../utils/commonBlockClip'; +import { getRandomString } from '@toeverything/components/common'; export class ImageBlock extends BaseView { public override selectable = true; @@ -13,42 +15,40 @@ export class ImageBlock extends BaseView { View = ImageView; // TODO: needs to download the image and then upload it to get a new link and then assign it - override html2block( - el: Element, - parseEl: (el: Element) => any[] - ): any[] | null { - const tag_name = el.tagName; - if (tag_name === 'IMG') { + override async html2block({ + element, + editor, + }: { + element: Element; + editor: BlockEditor; + }): Promise { + if (element.tagName === 'IMG') { return [ { type: this.type, properties: { - value: '', - url: el.getAttribute('src'), - name: el.getAttribute('src'), - size: 0, - type: 'link', + image: { + value: getRandomString('image'), + url: element.getAttribute('src'), + name: element.getAttribute('src'), + size: 0, + type: 'link', + }, }, children: [], }, ]; } - return null; } - // TODO: - override async block2html( - block: AsyncBlock, - children: SelectBlock[], - generateHtml: (el: any[]) => Promise - ): Promise { - const text = block.getProperty('text'); + override async block2html({ block, editor }: Block2HtmlProps) { + const textValue = block.getProperty('text'); const content = ''; - if (text) { - text.value.map(text => `${text}`).join(''); - } - // TODO: child - return `

`; + // TODO: text.value should export with style?? + const figcaption = (textValue?.value ?? []) + .map(({ text }) => `${text}`) + .join(''); + return `
${figcaption}
${figcaption}
`; } } diff --git a/libs/components/editor-blocks/src/blocks/numbered/NumberedView.tsx b/libs/components/editor-blocks/src/blocks/numbered/NumberedView.tsx index 38dac6fc75..c45321a138 100644 --- a/libs/components/editor-blocks/src/blocks/numbered/NumberedView.tsx +++ b/libs/components/editor-blocks/src/blocks/numbered/NumberedView.tsx @@ -1,8 +1,8 @@ import { TextProps } from '@toeverything/components/common'; import { ContentColumnValue, - services, Protocol, + services, } from '@toeverything/datasource/db-service'; import { type CreateView } from '@toeverything/framework/virgo'; import { useEffect, useRef, useState } from 'react'; @@ -11,18 +11,17 @@ import { type ExtendedTextUtils, } from '../../components/text-manage'; import { tabBlock } from '../../utils/indent'; -import { IndentWrapper } from '../../components/IndentWrapper'; import type { Numbered, NumberedAsyncBlock } from './types'; -import { getChildrenType, getNumber } from './data'; import { - supportChildren, - RenderBlockChildren, - useOnSelect, BlockPendantProvider, + RenderBlockChildren, + supportChildren, + useOnSelect, } from '@toeverything/components/editor-core'; -import { List } from '../../components/style-container'; import { BlockContainer } from '../../components/BlockContainer'; +import { List } from '../../components/style-container'; +import { getChildrenType, getNumber } from './data'; export const defaultTodoProps: Numbered = { text: { value: [{ text: '' }] }, @@ -184,7 +183,7 @@ export const NumberedView = ({ block, editor }: CreateView) => { return ( - +
{getNumber(properties.numberType, number)}. @@ -204,9 +203,7 @@ export const NumberedView = ({ block, editor }: CreateView) => { - - - + ); }; diff --git a/libs/components/editor-blocks/src/blocks/numbered/index.ts b/libs/components/editor-blocks/src/blocks/numbered/index.ts index b8b3c3dc0a..3dd6f74934 100644 --- a/libs/components/editor-blocks/src/blocks/numbered/index.ts +++ b/libs/components/editor-blocks/src/blocks/numbered/index.ts @@ -1,17 +1,16 @@ +import { Protocol } from '@toeverything/datasource/db-service'; import { AsyncBlock, BaseView, - getTextProperties, - SelectBlock, - getTextHtml, + BlockEditor, + HTML2BlockResult, } from '@toeverything/framework/virgo'; import { - Protocol, - DefaultColumnsValue, -} from '@toeverything/datasource/db-service'; -// import { withTreeViewChildren } from '../../utils/with-tree-view-children'; + Block2HtmlProps, + commonBlock2HtmlContent, + commonHTML2block, +} from '../../utils/commonBlockClip'; import { defaultTodoProps, NumberedView } from './NumberedView'; -import { IndentWrapper } from '../../components/IndentWrapper'; export class NumberedBlock extends BaseView { public type = Protocol.Block.Type.numbered; @@ -29,71 +28,39 @@ export class NumberedBlock extends BaseView { return block; } - override getSelProperties( - block: AsyncBlock, - selectInfo: any - ): DefaultColumnsValue { - const properties = super.getSelProperties(block, selectInfo); - return getTextProperties(properties, selectInfo); - } - - override html2block( - el: Element, - parseEl: (el: Element) => any[] - ): any[] | null { - const tag_name = el.tagName; - if (tag_name === 'OL') { - const result = []; - for (let i = 0; i < el.children.length; i++) { - const blocks_info = parseEl(el.children[i]); - result.push(...blocks_info); - } - return result.length > 0 ? result : null; + override async html2block({ + element, + editor, + }: { + element: Element; + editor: BlockEditor; + }): Promise { + if (element.tagName === 'OL') { + const children = Array.from(element.children); + const childrenBlockInfos = ( + await Promise.all( + children.map(childElement => + this.html2block({ + editor, + element: childElement, + }) + ) + ) + ) + .flat() + .filter(v => v); + return childrenBlockInfos.length ? childrenBlockInfos : null; } - if (tag_name == 'LI' && el.textContent.startsWith('[ ] ')) { - const childNodes = el.childNodes; - let texts = []; - const children = []; - for (let i = 0; i < childNodes.length; i++) { - const blocks_info = parseEl(childNodes[i] as Element); - for (let j = 0; j < blocks_info.length; j++) { - if (blocks_info[j].type === 'text') { - const block_texts = - blocks_info[j].properties.text.value; - texts.push(...block_texts); - } else { - children.push(blocks_info[j]); - } - } - } - if (texts.length > 0 && (texts[0].text || '').startsWith('[ ] ')) { - texts[0].text = texts[0].text.substring('[ ] '.length); - if (!texts[0].text) { - texts = texts.slice(1); - } - } - return [ - { - type: this.type, - properties: { - text: { value: texts }, - }, - children: children, - }, - ]; - } - - return null; + return commonHTML2block({ + element, + editor, + type: this.type, + tagName: 'LI', + }); } - override async block2html( - block: AsyncBlock, - children: SelectBlock[], - generateHtml: (el: any[]) => Promise - ): Promise { - let content = getTextHtml(block); - content += await generateHtml(children); - return `
  1. ${content}
`; + override async block2html(props: Block2HtmlProps) { + return `
  1. ${await commonBlock2HtmlContent(props)}
`; } } diff --git a/libs/components/editor-blocks/src/blocks/page/PageView.tsx b/libs/components/editor-blocks/src/blocks/page/PageView.tsx index 64fba3ca83..123021e361 100644 --- a/libs/components/editor-blocks/src/blocks/page/PageView.tsx +++ b/libs/components/editor-blocks/src/blocks/page/PageView.tsx @@ -1,14 +1,14 @@ -import { useRef, useEffect, useMemo, useState } from 'react'; +import { useEffect, useMemo, useRef, useState } from 'react'; import { useParams } from 'react-router'; import { BackLink, TextProps } from '@toeverything/components/common'; import { - RenderBlockChildren, BlockPendantProvider, + RenderBlockChildren, } from '@toeverything/components/editor-core'; +import { styled } from '@toeverything/components/ui'; import { ContentColumnValue } from '@toeverything/datasource/db-service'; import { CreateView } from '@toeverything/framework/virgo'; -import { Theme, styled } from '@toeverything/components/ui'; import { TextManage, @@ -81,7 +81,7 @@ export const PageView = ({ block, editor }: CreateView) => { return ( - + JSX.Element = props => - props.children; +import { Block2HtmlProps } from '../../utils/commonBlockClip'; export class PageBlock extends BaseView { type = Protocol.Block.Type.page; @@ -35,21 +23,17 @@ export class PageBlock extends BaseView { return this.get_decoration(content, 'text')?.value?.[0].text; } - override getSelProperties( - block: AsyncBlock, - selectInfo: any - ): DefaultColumnsValue { - const properties = super.getSelProperties(block, selectInfo); - return getTextProperties(properties, selectInfo); - } - - override async block2html( - block: AsyncBlock, - children: SelectBlock[], - generateHtml: (el: any[]) => Promise - ): Promise { - const content = getTextHtml(block); - const childrenContent = await generateHtml(children); - return `

${content}

${childrenContent}`; + override async block2html({ block, editor, selectInfo }: Block2HtmlProps) { + const header = + await editor.clipboard.clipboardUtils.convertTextValue2HtmlBySelectInfo( + block, + selectInfo + ); + const childrenHtml = + await editor.clipboard.clipboardUtils.convertBlock2HtmlBySelectInfos( + block, + selectInfo?.children + ); + return `

${header}

${childrenHtml}`; } } diff --git a/libs/components/editor-blocks/src/blocks/text/QuoteBlock.tsx b/libs/components/editor-blocks/src/blocks/text/QuoteBlock.tsx index f62dfae040..7789ec5f1c 100644 --- a/libs/components/editor-blocks/src/blocks/text/QuoteBlock.tsx +++ b/libs/components/editor-blocks/src/blocks/text/QuoteBlock.tsx @@ -1,15 +1,16 @@ -import { - DefaultColumnsValue, - Protocol, -} from '@toeverything/datasource/db-service'; +import { Protocol } from '@toeverything/datasource/db-service'; import { AsyncBlock, BaseView, + BlockEditor, CreateView, - getTextHtml, - getTextProperties, - SelectBlock, + HTML2BlockResult, } from '@toeverything/framework/virgo'; +import { + Block2HtmlProps, + commonBlock2HtmlContent, + commonHTML2block, +} from '../../utils/commonBlockClip'; import { TextView } from './TextView'; @@ -29,54 +30,25 @@ export class QuoteBlock extends BaseView { return block; } - override getSelProperties( - block: AsyncBlock, - selectInfo: any - ): DefaultColumnsValue { - const properties = super.getSelProperties(block, selectInfo); - return getTextProperties(properties, selectInfo); + override async html2block({ + element, + editor, + }: { + element: Element; + editor: BlockEditor; + }): Promise { + return commonHTML2block({ + element, + editor, + type: this.type, + tagName: 'BLOCKQUOTE', + }); } - override html2block( - el: Element, - parseEl: (el: Element) => any[] - ): any[] | null { - const tag_name = el.tagName; - if (tag_name === 'BLOCKQUOTE') { - const childNodes = el.childNodes; - const texts = []; - for (let i = 0; i < childNodes.length; i++) { - const blocks_info = parseEl(childNodes[i] as Element); - for (let j = 0; j < blocks_info.length; j++) { - if (blocks_info[j].type === 'text') { - const block_texts = - blocks_info[j].properties.text.value; - texts.push(...block_texts); - } - } - } - return [ - { - type: this.type, - properties: { - text: { value: texts }, - }, - children: [], - }, - ]; - } - - return null; - } - - override async block2html( - block: AsyncBlock, - children: SelectBlock[], - generateHtml: (el: any[]) => Promise - ): Promise { - let content = getTextHtml(block); - content += await generateHtml(children); - return `
${content}
`; + override async block2html(props: Block2HtmlProps) { + return `
${await commonBlock2HtmlContent( + props + )}
`; } } @@ -96,69 +68,22 @@ export class CalloutBlock extends BaseView { return block; } - override getSelProperties( - block: AsyncBlock, - selectInfo: any - ): DefaultColumnsValue { - const properties = super.getSelProperties(block, selectInfo); - return getTextProperties(properties, selectInfo); + override async html2block({ + element, + editor, + }: { + element: Element; + editor: BlockEditor; + }): Promise { + return commonHTML2block({ + element, + editor, + type: this.type, + tagName: 'ASIDE', + }); } - override html2block( - el: Element, - parseEl: (el: Element) => any[] - ): any[] | null { - const tag_name = el.tagName; - if ( - tag_name === 'ASIDE' || - el.firstChild?.nodeValue?.startsWith('
+ } + > + - {children.map(item => { - const { - name, - icon: ItemIcon, - onClick, - nameKey: itemNameKey, - } = item; - - const StyledIcon = withStylesForIcon(ItemIcon); - - return ( - - ); - })} +
+

{name}

+ {shortcut &&

{shortcut}

}
} + placement="top" + trigger="hover" > - -

{name}

- {shortcut &&

{shortcut}

} -
- } - placement="top" - trigger="hover" + - - - + + + + + ); }; diff --git a/libs/components/editor-plugins/src/menu/inline-menu/menu-item/IconItem.tsx b/libs/components/editor-plugins/src/menu/inline-menu/menu-item/IconItem.tsx index 5e97b4f746..c49efd82a9 100644 --- a/libs/components/editor-plugins/src/menu/inline-menu/menu-item/IconItem.tsx +++ b/libs/components/editor-plugins/src/menu/inline-menu/menu-item/IconItem.tsx @@ -1,9 +1,14 @@ import React, { useCallback } from 'react'; import style9 from 'style9'; -import type { IconItemType, WithEditorSelectionType } from '../types'; -import { inlineMenuNamesKeys, inlineMenuShortcuts } from '../config'; import { Tooltip } from '@toeverything/components/ui'; +import { uaHelper } from '@toeverything/utils'; +import { + inlineMenuNamesKeys, + MacInlineMenuShortcuts, + WinInlineMenuShortcuts, +} from '../config'; +import type { IconItemType, WithEditorSelectionType } from '../types'; type MenuIconItemProps = IconItemType & WithEditorSelectionType; export const MenuIconItem = ({ @@ -35,7 +40,11 @@ export const MenuIconItem = ({ ); //@ts-ignore - const shortcut = inlineMenuShortcuts[nameKey]; + const shortcut = uaHelper.isMacOs + ? //@ts-ignore + MacInlineMenuShortcuts[nameKey] + : //@ts-ignore + WinInlineMenuShortcuts[nameKey]; return ( v); export const textConvertMenuList = textTypeBlocks; - -export const ignoreBlockTypes: BlockFlavorKeys[] = [ - Protocol.Block.Type.workspace, - Protocol.Block.Type.page, - Protocol.Block.Type.group, - Protocol.Block.Type.title, - Protocol.Block.Type.grid, - Protocol.Block.Type.gridItem, -]; diff --git a/libs/components/layout/package.json b/libs/components/layout/package.json index 739ad7c56e..d7a0a26481 100644 --- a/libs/components/layout/package.json +++ b/libs/components/layout/package.json @@ -10,8 +10,10 @@ "@dnd-kit/utilities": "^3.2.0", "@mui/icons-material": "^5.8.4", "clsx": "^1.2.1", - "date-fns": "^2.28.0", - "jotai": "^1.7.4", + "date-fns": "^2.29.2", + "i18next": "^21.9.1", + "jotai": "^1.8.1", + "react-i18next": "^11.18.4", "tinycolor2": "^1.4.2", "turndown": "7.1.1" }, diff --git a/libs/components/layout/src/header/FileSystem.tsx b/libs/components/layout/src/header/FileSystem.tsx index 016b26d1c4..30c2b68816 100644 --- a/libs/components/layout/src/header/FileSystem.tsx +++ b/libs/components/layout/src/header/FileSystem.tsx @@ -4,7 +4,7 @@ import { CloseIcon } from '@toeverything/components/common'; import { IconButton, MuiSnackbar, styled } from '@toeverything/components/ui'; import { services } from '@toeverything/datasource/db-service'; import { useLocalTrigger } from '@toeverything/datasource/state'; - +import { useTranslation } from 'react-i18next'; const cleanupWorkspace = (workspace: string) => new Promise((resolve, reject) => { const req = indexedDB.deleteDatabase(workspace); @@ -75,7 +75,7 @@ export const FileSystem = () => { setError(true); setTimeout(() => setError(false), 3000); }, []); - + const { t } = useTranslation(); const apiSupported = useMemo(() => fsApiSupported(), []); if (apiSupported && !selected) { @@ -105,7 +105,7 @@ export const FileSystem = () => { } }} > - Sync to Disk + {t('Sync to Disk')} ); diff --git a/libs/components/layout/src/header/LayoutHeader.tsx b/libs/components/layout/src/header/LayoutHeader.tsx index 2d6913ac60..c9e7b7b8da 100644 --- a/libs/components/layout/src/header/LayoutHeader.tsx +++ b/libs/components/layout/src/header/LayoutHeader.tsx @@ -12,24 +12,26 @@ import { useShowSettingsSidebar, } from '@toeverything/datasource/state'; +import { useTranslation } from 'react-i18next'; import { EditorBoardSwitcher } from './EditorBoardSwitcher'; -import { FileSystem, fsApiSupported } from './FileSystem'; +import { fsApiSupported } from './FileSystem'; import { CurrentPageTitle } from './Title'; export const LayoutHeader = () => { const [isLocalWorkspace] = useLocalTrigger(); const { toggleSettingsSidebar: toggleInfoSidebar, showSettingsSidebar } = useShowSettingsSidebar(); + const { t } = useTranslation(); const warningTips = useMemo(() => { if (!fsApiSupported()) { - return 'Welcome to the AFFiNE demo. To begin saving changes you can SYNC DATA TO DISK with the latest version of Chromium based browser like Chrome/Edge'; + return t('WarningTips.IsNotfsApiSupported'); } else if (!isLocalWorkspace) { - return 'Welcome to the AFFiNE demo. To begin saving changes you can SYNC TO DISK.'; + return t('WarningTips.IsNotLocalWorkspace'); } else { - return 'AFFiNE is under active development and the current version is UNSTABLE. Please DO NOT store information or data'; + return t('WarningTips.DoNotStore'); } - }, [isLocalWorkspace]); + }, [isLocalWorkspace, t]); return ( @@ -42,8 +44,7 @@ export const LayoutHeader = () => { - - Share + {t('Share')}
{ - - {warningTips} - ); }; diff --git a/libs/components/layout/src/header/PageSettingPortal.tsx b/libs/components/layout/src/header/PageSettingPortal.tsx index 452734ff3c..115b5c95fd 100644 --- a/libs/components/layout/src/header/PageSettingPortal.tsx +++ b/libs/components/layout/src/header/PageSettingPortal.tsx @@ -58,8 +58,6 @@ function PageSettingPortal() { const navigate = useNavigate(); const { user } = useUserAndSpaces(); const BooleanFullWidthChecked = useFlag('BooleanFullWidthChecked', false); - const BooleanExportWorkspace = useFlag('BooleanExportWorkspace', false); - const BooleanImportWorkspace = useFlag('BooleanImportWorkspace', false); const BooleanExportHtml = useFlag('BooleanExportHtml', false); const BooleanExportPdf = useFlag('BooleanExportPdf', false); const BooleanExportMarkdown = useFlag('BooleanExportMarkdown', false); @@ -153,9 +151,7 @@ function PageSettingPortal() { const handleExportHtml = async () => { //@ts-ignore - const htmlContent = await virgo.clipboard - .getClipboardParse() - .page2html(); + const htmlContent = await virgo.clipboard.clipboardUtils.page2html(); const htmlTitle = pageBlock.title; FileExporter.exportHtml(htmlTitle, htmlContent); @@ -163,9 +159,7 @@ function PageSettingPortal() { const handleExportMarkdown = async () => { //@ts-ignore - const htmlContent = await virgo.clipboard - .getClipboardParse() - .page2html(); + const htmlContent = await virgo.clipboard.clipboardUtils.page2html(); const htmlTitle = pageBlock.title; FileExporter.exportMarkdown(htmlTitle, htmlContent); }; @@ -221,18 +215,14 @@ function PageSettingPortal() { /> )} - {BooleanImportWorkspace && ( - - )} - {BooleanExportWorkspace && ( - - )} + +

Last edited by {user && user.nickname} diff --git a/libs/components/layout/src/i18n/index.ts b/libs/components/layout/src/i18n/index.ts new file mode 100644 index 0000000000..20f4e2a3ce --- /dev/null +++ b/libs/components/layout/src/i18n/index.ts @@ -0,0 +1,40 @@ +import i18next from 'i18next'; +import { initReactI18next } from 'react-i18next'; +import en_US from './resources/en.json'; +import zh_CN from './resources/zh.json'; + +// See https://react.i18next.com/latest/typescript +declare module 'react-i18next' { + // and extend them! + interface CustomTypeOptions { + // custom namespace type if you changed it + defaultNS: 'ns1'; + // custom resources type + resources: { + en: typeof en_US.translation; + zh: typeof zh_CN.translation; + }; + } +} + +const resources = { + en: en_US, + zh: zh_CN, +} as const; + +i18next.use(initReactI18next).init({ + lng: 'en', + fallbackLng: 'en', + + resources, + interpolation: { + escapeValue: false, // not needed for react as it escapes by default + }, +}); + +export const options = [ + { value: 'en', text: 'English' }, + { value: 'zh', text: '简体中文' }, +] as const; + +export { i18next }; diff --git a/libs/components/layout/src/i18n/resources/en.json b/libs/components/layout/src/i18n/resources/en.json new file mode 100644 index 0000000000..4c6a714e9b --- /dev/null +++ b/libs/components/layout/src/i18n/resources/en.json @@ -0,0 +1,26 @@ +{ + "translation": { + "Sync to Disk": "Sync to Disk", + "Share": "Share", + "WarningTips": { + "IsNotfsApiSupported": "Welcome to the AFFiNE demo. To begin saving changes you can SYNC DATA TO DISK with the latest version of Chromium based browser like Chrome/Edge", + "IsNotLocalWorkspace": "Welcome to the AFFiNE demo. To begin saving changes you can SYNC TO DISK.", + "DoNotStore": "AFFiNE is under active development and the current version is UNSTABLE. Please DO NOT store information or data" + }, + "Layout": "Layout", + "Comment": "Comment", + "Settings": "Settings", + "ComingSoon": "Layout Settings Coming Soon...", + "Duplicate Page": "Duplicate Page", + "Copy Page Link": "Copy Page Link", + "Language": "Language", + "Clear Workspace": "Clear Workspace", + "Export As Markdown": "Export As Markdown", + "Export As HTML": "Export As HTML", + "Export As PDF (Unsupported)": "Export As PDF (Unsupported)", + "Import Workspace": "Import Workspace", + "Export Workspace": "Export Workspace", + "Last edited by": "Last edited by {{name}}", + "Logout": "Logout" + } +} diff --git a/libs/components/layout/src/i18n/resources/zh.json b/libs/components/layout/src/i18n/resources/zh.json new file mode 100644 index 0000000000..da86cef6b2 --- /dev/null +++ b/libs/components/layout/src/i18n/resources/zh.json @@ -0,0 +1,26 @@ +{ + "translation": { + "Sync to Disk": "同步到磁盘", + "Share": "分享", + "WarningTips": { + "IsNotfsApiSupported": "欢迎来到AFFiNE 的演示界面。您可以使用最新版本的基于Chrome的浏览器(如Chrome/Edge)将数据同步到磁盘来进行保存", + "IsNotLocalWorkspace": "欢迎来到AFFiNE 的演示界面,您可以同步到磁盘来进行保存操作。", + "DoNotStore": "AFFINE 正在积极开发中,当前版本不稳定。请不要存储信息或数据。" + }, + "ComingSoon": "布局设置即将到来", + "Layout": "布局", + "Comment": "评论", + "Settings": "设置", + "Duplicate Page": "复制页面", + "Copy Page Link": "复制页面链接", + "Language": "当前语言", + "Clear Workspace": "清空工作区域", + "Export As Markdown": "导出 markdown", + "Export As HTML": "导出 HTML", + "Export As PDF (Unsupported)": "导出 PDF (暂不支持)", + "Import Workspace": "导入 Workspace", + "Export Workspace": "导出 Workspace", + "Last edited by": "最后编辑者为 {{name}}", + "Logout": "退出登录" + } +} diff --git a/libs/components/layout/src/index.ts b/libs/components/layout/src/index.ts index 69a6d3ff72..1aee5a687f 100644 --- a/libs/components/layout/src/index.ts +++ b/libs/components/layout/src/index.ts @@ -1,3 +1,4 @@ export * from './header'; +export * from './i18n'; export * from './settings-sidebar'; export * from './workspace-sidebar'; diff --git a/libs/components/layout/src/settings-sidebar/ContainerTabs/ContainerTabs.tsx b/libs/components/layout/src/settings-sidebar/ContainerTabs/ContainerTabs.tsx index dc5320c19d..4503482d05 100644 --- a/libs/components/layout/src/settings-sidebar/ContainerTabs/ContainerTabs.tsx +++ b/libs/components/layout/src/settings-sidebar/ContainerTabs/ContainerTabs.tsx @@ -5,6 +5,7 @@ import { } from '@toeverything/components/icons'; import { styled } from '@toeverything/components/ui'; import { cloneElement, useCallback, useMemo, type ReactElement } from 'react'; +import { useTranslation } from 'react-i18next'; import { Comments } from '../Comments'; import { useActiveComment } from '../Comments/use-comments'; import { LayoutSettings } from '../Layout'; @@ -16,12 +17,13 @@ const _defaultTabsKeys = ['layout', 'comment', 'settings'] as const; export const ContainerTabs = () => { const { activeCommentId, resolveComment } = useActiveComment(); + const { t } = useTranslation(); const getSettingsTabsData = useCallback((): SettingsTabItemType[] => { return [ { type: 'layout', - text: 'Layout', + text: t('Layout'), icon: ( @@ -31,7 +33,7 @@ export const ContainerTabs = () => { }, { type: 'comment', - text: 'Comment', + text: t('Comment'), icon: ( @@ -48,7 +50,7 @@ export const ContainerTabs = () => { }, { type: 'settings', - text: 'Settings', + text: t('Settings'), icon: ( @@ -57,7 +59,7 @@ export const ContainerTabs = () => { panel: , }, ]; - }, [activeCommentId, resolveComment]); + }, [activeCommentId, resolveComment, t]); const settingsTabsData = useMemo(() => { return getSettingsTabsData(); @@ -67,7 +69,6 @@ export const ContainerTabs = () => { _defaultTabsKeys as unknown as string[], 'settings' ); - return ( <> diff --git a/libs/components/layout/src/settings-sidebar/Settings/SettingsList.tsx b/libs/components/layout/src/settings-sidebar/Settings/SettingsList.tsx index 57e4a2fbf0..f462ccf572 100644 --- a/libs/components/layout/src/settings-sidebar/Settings/SettingsList.tsx +++ b/libs/components/layout/src/settings-sidebar/Settings/SettingsList.tsx @@ -1,8 +1,21 @@ -import { Divider, ListItem, styled, Switch } from '@toeverything/components/ui'; +import { + Divider, + ListItem, + Option, + Select, + styled, + Switch, +} from '@toeverything/components/ui'; +import { useTranslation } from 'react-i18next'; +import { options } from '../../i18n'; import { useSettings } from './use-settings'; export const SettingsList = () => { const settings = useSettings(); + const { i18n } = useTranslation(); + const changeLanguage = event => { + i18n.changeLanguage(event); + }; return ( @@ -15,7 +28,7 @@ export const SettingsList = () => { if (type === 'switch') { return ( { item.onChange(!item.value); }} @@ -31,8 +44,25 @@ export const SettingsList = () => { } return ( - item.onClick()}> + item.onClick()}> {item.name} + {item.key === 'Language' ? ( +

+ +
+ ) : null} ); })} diff --git a/libs/components/layout/src/settings-sidebar/Settings/footer/LastModified.tsx b/libs/components/layout/src/settings-sidebar/Settings/footer/LastModified.tsx index 1bcf8a83be..0c0b5c2efd 100644 --- a/libs/components/layout/src/settings-sidebar/Settings/footer/LastModified.tsx +++ b/libs/components/layout/src/settings-sidebar/Settings/footer/LastModified.tsx @@ -1,6 +1,7 @@ import { styled, Typography } from '@toeverything/components/ui'; import { useUserAndSpaces } from '@toeverything/datasource/state'; import format from 'date-fns/format'; +import { useTranslation } from 'react-i18next'; import { usePageLastUpdated, useWorkspaceAndPageId } from '../util'; export const LastModified = () => { @@ -9,12 +10,12 @@ export const LastModified = () => { const { workspaceId, pageId } = useWorkspaceAndPageId(); const lastModified = usePageLastUpdated({ workspaceId, pageId }); const formatLastModified = format(lastModified, 'MM/dd/yyyy hh:mm'); + const { t } = useTranslation(); return (
- Last edited by - {username} + {t('Last edited by', { name: username })}
diff --git a/libs/components/layout/src/settings-sidebar/Settings/footer/Logout.tsx b/libs/components/layout/src/settings-sidebar/Settings/footer/Logout.tsx index a168f25b6d..3dfc7dffb9 100644 --- a/libs/components/layout/src/settings-sidebar/Settings/footer/Logout.tsx +++ b/libs/components/layout/src/settings-sidebar/Settings/footer/Logout.tsx @@ -2,6 +2,7 @@ import { MoveToIcon } from '@toeverything/components/icons'; import { ListItem, styled, Typography } from '@toeverything/components/ui'; import { LOGOUT_COOKIES, LOGOUT_LOCAL_STORAGE } from '@toeverything/utils'; import { getAuth, signOut } from 'firebase/auth'; +import { useTranslation } from 'react-i18next'; const logout = () => { LOGOUT_LOCAL_STORAGE.forEach(name => localStorage.removeItem(name)); @@ -16,10 +17,11 @@ const logout = () => { }; export const Logout = () => { + const { t } = useTranslation(); return ( - Logout + {t('Logout')} ); }; diff --git a/libs/components/layout/src/settings-sidebar/Settings/use-setting-flags.ts b/libs/components/layout/src/settings-sidebar/Settings/use-setting-flags.ts index e0a7fb697c..532417de03 100644 --- a/libs/components/layout/src/settings-sidebar/Settings/use-setting-flags.ts +++ b/libs/components/layout/src/settings-sidebar/Settings/use-setting-flags.ts @@ -2,8 +2,6 @@ import { useFlag } from '@toeverything/datasource/feature-flags'; export const useSettingFlags = () => { const booleanFullWidthChecked = useFlag('BooleanFullWidthChecked', false); - const booleanExportWorkspace = useFlag('BooleanExportWorkspace', false); - const booleanImportWorkspace = useFlag('BooleanImportWorkspace', false); const booleanExportHtml = useFlag('BooleanExportHtml', false); const booleanExportPdf = useFlag('BooleanExportPdf', false); const booleanExportMarkdown = useFlag('BooleanExportMarkdown', false); @@ -11,8 +9,6 @@ export const useSettingFlags = () => { return { booleanFullWidthChecked, - booleanExportWorkspace, - booleanImportWorkspace, booleanExportHtml, booleanExportPdf, booleanExportMarkdown, diff --git a/libs/components/layout/src/settings-sidebar/Settings/use-settings.ts b/libs/components/layout/src/settings-sidebar/Settings/use-settings.ts index 0dd9413c89..53b075db74 100644 --- a/libs/components/layout/src/settings-sidebar/Settings/use-settings.ts +++ b/libs/components/layout/src/settings-sidebar/Settings/use-settings.ts @@ -1,9 +1,10 @@ import { message } from '@toeverything/components/ui'; import { copyToClipboard } from '@toeverything/utils'; +import { useTranslation } from 'react-i18next'; import { useNavigate } from 'react-router-dom'; import { useSettingFlags, type SettingFlags } from './use-setting-flags'; + import { - // useReadingMode, clearWorkspace, duplicatePage, exportHtml, @@ -16,6 +17,7 @@ import { interface BaseSettingItem { flag?: keyof SettingFlags; + key: string; } interface SwitchItem extends BaseSettingItem { @@ -64,6 +66,7 @@ export const useSettings = (): SettingItem[] => { const { workspaceId, pageId } = useWorkspaceAndPageId(); const navigate = useNavigate(); const settingFlags = useSettingFlags(); + const { t } = useTranslation(); // const { toggleReadingMode, readingMode } = useReadingMode(); const settings: SettingItem[] = [ @@ -80,7 +83,8 @@ export const useSettings = (): SettingItem[] => { // }, { type: 'button', - name: 'Duplicate Page', + name: t('Duplicate Page'), + key: 'Duplicate Page', onClick: async () => { const newPageInfo = await duplicatePage({ workspaceId, @@ -91,18 +95,29 @@ export const useSettings = (): SettingItem[] => { }, { type: 'button', - name: 'Copy Page Link', + name: t('Copy Page Link'), + key: 'Copy Page Link', onClick: () => { copyToClipboard(window.location.href); message.success('Page link copied successfully'); }, }, + { + type: 'button', + name: t('Language'), + key: 'Language', + onClick: () => { + // Do noting + }, + }, { type: 'separator', + key: 'separator1', }, { type: 'button', - name: 'Export As Markdown', + name: t('Export As Markdown'), + key: 'Export As Markdown', onClick: async () => { const title = await getPageTitle({ workspaceId, pageId }); exportMarkdown({ workspaceId, rootBlockId: pageId, title }); @@ -111,7 +126,8 @@ export const useSettings = (): SettingItem[] => { }, { type: 'button', - name: 'Export As HTML', + name: t('Export As HTML'), + key: 'Export As HTML', onClick: async () => { const title = await getPageTitle({ workspaceId, pageId }); exportHtml({ workspaceId, rootBlockId: pageId, title }); @@ -120,31 +136,34 @@ export const useSettings = (): SettingItem[] => { }, { type: 'button', - name: 'Export As PDF (Unsupported)', + name: t('Export As PDF (Unsupported)'), + key: 'Export As PDF (Unsupported)', onClick: () => console.log('Export As PDF'), flag: 'booleanExportPdf', }, { type: 'separator', + key: 'separator2', }, { type: 'button', - name: 'Import Workspace', - onClick: () => importWorkspace(workspaceId), - flag: 'booleanImportWorkspace', - }, - { - type: 'button', - name: 'Export Workspace', - onClick: () => exportWorkspace(), - flag: 'booleanExportWorkspace', - }, - { - type: 'button', - name: 'Clear Workspace', + name: t('Clear Workspace'), + key: 'Clear Workspace', onClick: () => clearWorkspace(workspaceId), flag: 'booleanClearWorkspace', }, + { + type: 'button', + name: t('Import Workspace'), + key: 'Import Workspace', + onClick: () => importWorkspace(), + }, + { + type: 'button', + name: t('Export Workspace'), + key: 'Export Workspace', + onClick: () => exportWorkspace(), + }, ]; return filterSettings(settings, settingFlags); diff --git a/libs/components/layout/src/settings-sidebar/Settings/util/handle-export.ts b/libs/components/layout/src/settings-sidebar/Settings/util/handle-export.ts index fe284b986c..d329701f25 100644 --- a/libs/components/layout/src/settings-sidebar/Settings/util/handle-export.ts +++ b/libs/components/layout/src/settings-sidebar/Settings/util/handle-export.ts @@ -1,5 +1,4 @@ import { createEditor } from '@toeverything/components/affine-editor'; -import { ClipboardParse } from '@toeverything/components/editor-core'; import { fileExporter } from './file-exporter'; interface CreateClipboardParseProps { @@ -7,13 +6,12 @@ interface CreateClipboardParseProps { rootBlockId: string; } -const createClipboardParse = ({ +const createClipboardUtils = ({ workspaceId, rootBlockId, }: CreateClipboardParseProps) => { const editor = createEditor(workspaceId, rootBlockId); - - return new ClipboardParse(editor); + return editor.clipboard.clipboardUtils; }; interface ExportHandlerProps extends CreateClipboardParseProps { @@ -25,9 +23,8 @@ export const exportHtml = async ({ rootBlockId, title, }: ExportHandlerProps) => { - const clipboardParse = createClipboardParse({ workspaceId, rootBlockId }); - const htmlContent = await clipboardParse.page2html(); - fileExporter.exportHtml(title, htmlContent); + const clipboardUtils = createClipboardUtils({ workspaceId, rootBlockId }); + fileExporter.exportHtml(title, await clipboardUtils.page2html()); }; export const exportMarkdown = async ({ @@ -35,7 +32,6 @@ export const exportMarkdown = async ({ rootBlockId, title, }: ExportHandlerProps) => { - const clipboardParse = createClipboardParse({ workspaceId, rootBlockId }); - const htmlContent = await clipboardParse.page2html(); - fileExporter.exportMarkdown(title, htmlContent); + const clipboardUtils = createClipboardUtils({ workspaceId, rootBlockId }); + fileExporter.exportMarkdown(title, await clipboardUtils.page2html()); }; diff --git a/libs/components/layout/src/settings-sidebar/Settings/util/inspector-workspace.ts b/libs/components/layout/src/settings-sidebar/Settings/util/inspector-workspace.ts index ee851dc90c..c1edd95c65 100644 --- a/libs/components/layout/src/settings-sidebar/Settings/util/inspector-workspace.ts +++ b/libs/components/layout/src/settings-sidebar/Settings/util/inspector-workspace.ts @@ -1,14 +1,15 @@ /** * @deprecated debugging method, deprecated */ -export const importWorkspace = (workspaceId: string) => { - //@ts-ignore - window.client - .inspector() - .load() - .then(() => { - window.location.href = `/${workspaceId}/`; - }); +export const importWorkspace = async () => { + if (window.confirm('Your currently open data will be lost.')) { + //@ts-ignore + const status = await window.client.inspector().load(); + + if (status) { + window.location.reload(); + } + } }; /** diff --git a/libs/components/ui/package.json b/libs/components/ui/package.json index 6df3065fa9..a4b562991e 100644 --- a/libs/components/ui/package.json +++ b/libs/components/ui/package.json @@ -13,7 +13,7 @@ "@mui/x-date-pickers": "^5.0.0-alpha.7", "@mui/x-date-pickers-pro": "^5.0.0-alpha.7", "@types/react-date-range": "^1.4.4", - "clsx": "^1.2.0", + "clsx": "^1.2.1", "notistack": "^2.0.5", "react-date-range": "^1.4.0" } diff --git a/libs/components/ui/src/list/ListItem.tsx b/libs/components/ui/src/list/ListItem.tsx index 39c3d90492..411a9ddb94 100644 --- a/libs/components/ui/src/list/ListItem.tsx +++ b/libs/components/ui/src/list/ListItem.tsx @@ -32,4 +32,5 @@ const Container = styled(Clickable)({ display: 'flex', alignItems: 'center', padding: '6px 12px', + whiteSpace: 'nowrap', }); diff --git a/libs/components/ui/src/select/Select.tsx b/libs/components/ui/src/select/Select.tsx index 7dcfcdc45a..c11ee9f3b4 100644 --- a/libs/components/ui/src/select/Select.tsx +++ b/libs/components/ui/src/select/Select.tsx @@ -1,5 +1,6 @@ import { forwardRef, + useState, type CSSProperties, type ForwardedRef, type ReactNode, @@ -39,6 +40,7 @@ export const Select = forwardRef(function CustomSelect( props: ExtendSelectProps & SelectUnstyledProps, ref: ForwardedRef ) { + const [isOpen, setIsOpen] = useState(false); const { width = '100%', style, listboxStyle, placeholder } = props; const components: SelectUnstyledProps['components'] = { // Root: generateStyledRoot({ width, ...style }), @@ -76,7 +78,21 @@ export const Select = forwardRef(function CustomSelect( ...props.components, }; - return ; + return ( + { + setIsOpen(true); + }} + {...props} + onChange={v => { + setIsOpen(false); + props.onChange && props.onChange(v); + }} + ref={ref} + components={components} + /> + ); }) as ( props: ExtendSelectProps & SelectUnstyledProps & diff --git a/libs/components/ui/src/theme/theme.ts b/libs/components/ui/src/theme/theme.ts index 76d42e3a0a..ce05c7b54d 100644 --- a/libs/components/ui/src/theme/theme.ts +++ b/libs/components/ui/src/theme/theme.ts @@ -233,7 +233,10 @@ export const Theme = { }, shadows: { none: 'none', - shadow1: '0px 1px 5px rgba(152, 172, 189, 0.2)', + shadow1: + '0px 1px 10px -6px rgba(24, 39, 75, 0.08), 0px 3px 16px -6px rgba(24, 39, 75, 0.04)', + shadow2: + '0px 6px 16px -8px rgba(0,0,0,0.08), 0px 9px 14px 0px rgba(0,0,0,0.05), 0px 12px 24px 16px rgba(0,0,0,0.03)', }, border: ['none'], spacing: { diff --git a/libs/datasource/db-service/src/index.ts b/libs/datasource/db-service/src/index.ts index 3d4ffb01a9..c9e7cc2e86 100644 --- a/libs/datasource/db-service/src/index.ts +++ b/libs/datasource/db-service/src/index.ts @@ -42,6 +42,7 @@ export { type TemplateMeta, } from './services/editor-block/templates'; export type { Template } from './services/editor-block/templates/types'; +export { containerFlavor } from './services/editor-block/types'; export { DEFAULT_COLUMN_KEYS } from './services/editor-block/utils/column/default-config'; const api = new Proxy({} as DbServicesMap, { diff --git a/libs/datasource/db-service/src/services/database/index.ts b/libs/datasource/db-service/src/services/database/index.ts index 4ea5bbbace..dbbe23bb9e 100644 --- a/libs/datasource/db-service/src/services/database/index.ts +++ b/libs/datasource/db-service/src/services/database/index.ts @@ -39,7 +39,7 @@ async function _getCurrentToken() { const _enabled = { demo: [], - AFFiNE: ['sqlite'], + AFFiNE: ['idb'], } as any; async function _getBlockDatabase( @@ -168,6 +168,7 @@ export class Database { block.on('children', observer_name, listener); block.on('content', observer_name, listener); block.on('parent', observer_name, listener); + // block.on('cascade', observer_name, listener); } this.#observers.setStatus(observer_name, 'observing'); @@ -188,6 +189,7 @@ export class Database { block.off('children', observer_name); block.off('content', observer_name); block.off('parent', observer_name); + // block.off('cascade', observer_name); } } } diff --git a/libs/datasource/db-service/src/services/editor-block/templates/get-started-group2.json b/libs/datasource/db-service/src/services/editor-block/templates/get-started-group2.json index b98c0e2fcb..fc6f534086 100644 --- a/libs/datasource/db-service/src/services/editor-block/templates/get-started-group2.json +++ b/libs/datasource/db-service/src/services/editor-block/templates/get-started-group2.json @@ -111,7 +111,9 @@ "type": "text", "properties": { "text": { - "value": [{ "text": "Type @ to mention people" }] + "value": [ + { "text": " Open Tag App`AFFiNE` to mention people" } + ] }, "recastValues": { "bNjVwBq8YLxvmvr7": { diff --git a/libs/datasource/db-service/src/services/editor-block/types.ts b/libs/datasource/db-service/src/services/editor-block/types.ts index e2bb7922b2..5c7ab2a2dd 100644 --- a/libs/datasource/db-service/src/services/editor-block/types.ts +++ b/libs/datasource/db-service/src/services/editor-block/types.ts @@ -4,6 +4,15 @@ import { Column, DefaultColumnsValue } from './utils/column'; export type BlockFlavors = typeof Protocol.Block.Type; export type BlockFlavorKeys = keyof typeof Protocol.Block.Type; +export const containerFlavor: BlockFlavorKeys[] = [ + Protocol.Block.Type.workspace, + Protocol.Block.Type.page, + Protocol.Block.Type.group, + Protocol.Block.Type.title, + Protocol.Block.Type.grid, + Protocol.Block.Type.gridItem, +]; + export interface CreateEditorBlock { workspace: string; type: keyof BlockFlavors; diff --git a/libs/datasource/db-service/src/services/workspace/user-config.ts b/libs/datasource/db-service/src/services/workspace/user-config.ts index 5a52581c21..7251659314 100644 --- a/libs/datasource/db-service/src/services/workspace/user-config.ts +++ b/libs/datasource/db-service/src/services/workspace/user-config.ts @@ -36,7 +36,7 @@ export class UserConfig extends ServiceBaseClass { } const db = await this.database.getDatabase(workspace); - const newPage = await db.get('page'); + const newPage = await db.getNamedBlock('start-page'); await this.get_dependency(PageTree).addPage(workspace, newPage.id); await this.addRecentPage(workspace, userId, newPage.id); diff --git a/libs/datasource/jwt/src/block/abstract.ts b/libs/datasource/jwt/src/block/abstract.ts index 55249514b3..d67c92bb68 100644 --- a/libs/datasource/jwt/src/block/abstract.ts +++ b/libs/datasource/jwt/src/block/abstract.ts @@ -21,6 +21,7 @@ const logger_debug = getLogger('debug:BlockDB:block'); const _GET_BLOCK = Symbol('GET_BLOCK'); const _SET_PARENT = Symbol('SET_PARENT'); +const _EMIT_EVENT = Symbol('EMIT_EVENT'); export class AbstractBlock< B extends BlockInstance, @@ -30,7 +31,12 @@ export class AbstractBlock< private readonly _block: BlockInstance; private readonly _history: HistoryManager; private readonly _root: AbstractBlock | undefined; - private readonly _parentListener: Map; + private readonly _listeners: { + cascade: Map; + children: Map; + content: Map; + parent: Map; + }; private _parent: AbstractBlock | undefined; private _changeParent?: () => void; @@ -45,7 +51,19 @@ export class AbstractBlock< this._history = this._block.scopedHistory([this._id]); this._root = root; - this._parentListener = new Map(); + this._listeners = { + cascade: new Map(), + children: new Map(), + content: new Map(), + parent: new Map(), + }; + + this._block.on('content', 'internal', states => + this[_EMIT_EVENT]('content', states) + ); + this._block.on('children', 'internal', states => + this[_EMIT_EVENT]('children', states) + ); JWT_DEV && logger_debug(`init: exists ${this._id}`); if (parent) { @@ -79,23 +97,18 @@ export class AbstractBlock< } public on( - event: 'content' | 'children' | 'parent', + event: 'cascade' | 'content' | 'children' | 'parent', name: string, callback: BlockListener ) { - if (event === 'parent') { - this._parentListener.set(name, callback); - } else { - this._block.on(event, name, callback); - } + this._listeners[event]?.set(name, callback); } - public off(event: 'content' | 'children' | 'parent', name: string) { - if (event === 'parent') { - this._parentListener.delete(name); - } else { - this._block.off(event, name); - } + public off( + event: 'cascade' | 'content' | 'children' | 'parent', + name: string + ) { + this._listeners[event]?.delete(name); } public addChildrenListener(name: string, listener: BlockListener) { @@ -189,8 +202,22 @@ export class AbstractBlock< const states: Map = new Map([ [parentId, type], ]); - for (const listener of this._parentListener.values()) { - listener(states); + this[_EMIT_EVENT]('parent', states); + } + + [_EMIT_EVENT]( + event: 'cascade' | 'content' | 'children' | 'parent', + states: Parameters[0] + ) { + const listeners = this._listeners[event]; + if (listeners) { + for (const listener of listeners.values()) { + listener(states); + } + } + + if (['children', 'content'].includes(event)) { + this._parent?.[_EMIT_EVENT]('cascade', states); } } diff --git a/libs/datasource/jwt/src/block/indexer.ts b/libs/datasource/jwt/src/block/indexer.ts index ed57465dbc..cd430ce6d6 100644 --- a/libs/datasource/jwt/src/block/indexer.ts +++ b/libs/datasource/jwt/src/block/indexer.ts @@ -123,8 +123,8 @@ export class BlockIndexer< constructor( adapter: A, workspace: string, - block_builder: (block: BlockInstance) => Promise>, - event_bus: BlockEventBus + blockBuilder: (block: BlockInstance) => Promise>, + eventBus: BlockEventBus ) { this._adapter = adapter; this._idb = initIndexIdb(workspace); @@ -144,8 +144,8 @@ export class BlockIndexer< ttl: 1000 * 60 * 30, }); - this._blockBuilder = block_builder; - this._eventBus = event_bus; + this._blockBuilder = blockBuilder; + this._eventBus = eventBus; this._delayIndex = { documents: new Map() }; diff --git a/libs/datasource/jwt/src/index.ts b/libs/datasource/jwt/src/index.ts index e08bdc1e16..626e6a3c89 100644 --- a/libs/datasource/jwt/src/index.ts +++ b/libs/datasource/jwt/src/index.ts @@ -357,7 +357,7 @@ export class BlockClient< * @param name block name * @returns block instance */ - private async get_named_block( + public async getNamedBlock( name: string, options?: { workspace?: boolean } ): Promise> { @@ -376,7 +376,7 @@ export class BlockClient< */ public async getWorkspace() { if (!this._root.node) { - this._root.node = await this.get_named_block(this._workspace, { + this._root.node = await this.getNamedBlock(this._workspace, { workspace: true, }); } @@ -679,7 +679,7 @@ export type { ReadableContentExporter as BlockContentExporter, } from './block'; export { BlockTypes, BucketBackend as BlockBackend } from './types'; -export type { BlockTypeKeys } from './types'; +export type { BlockFlavorKeys, BlockTypeKeys } from './types'; export { isBlock } from './utils'; export type { ArrayOperation, diff --git a/libs/datasource/jwt/src/yjs/binary.ts b/libs/datasource/jwt/src/yjs/binary.ts index c156452c78..5af3deefff 100644 --- a/libs/datasource/jwt/src/yjs/binary.ts +++ b/libs/datasource/jwt/src/yjs/binary.ts @@ -1,15 +1,16 @@ import { Array as YArray, Map as YMap } from 'yjs'; -import { RemoteKvService } from '@toeverything/datasource/remote-kv'; +import type { RemoteKvService } from '@toeverything/datasource/remote-kv'; export class YjsRemoteBinaries { private readonly _binaries: YMap>; // binary instance private readonly _remoteStorage?: RemoteKvService; - constructor(binaries: YMap>, remote_token?: string) { + constructor(binaries: YMap>, remoteToken?: string) { this._binaries = binaries; - if (remote_token) { - this._remoteStorage = new RemoteKvService(remote_token); + if (remoteToken) { + // TODO: remote kv need to refactor, we may use cloudflare kv + // this._remoteStorage = new RemoteKvService(remote_token); } else { console.warn(`Remote storage is not ready`); } diff --git a/libs/datasource/jwt/src/yjs/index.ts b/libs/datasource/jwt/src/yjs/index.ts index 7d0f30e4e3..76db288ad3 100644 --- a/libs/datasource/jwt/src/yjs/index.ts +++ b/libs/datasource/jwt/src/yjs/index.ts @@ -56,6 +56,7 @@ type YjsProviders = { connListener: { listeners?: ConnectivityListener }; userId: string; remoteToken: string | undefined; // remote storage token + providers: unknown[]; }; const _yjsDatabaseInstance = new Map(); @@ -107,19 +108,25 @@ async function _initYjsDatabase( ); const connListener: { listeners?: ConnectivityListener } = {}; + let providers: unknown[] = []; if (options.provider) { const emitState = (c: Connectivity) => connListener.listeners?.(workspace, c); - await Promise.all( - Object.entries(options.provider).flatMap(([, p]) => [ - p({ awareness, doc, token, workspace, emitState }), + providers = await Promise.all( + Object.entries(options.provider).flatMap(([name, p]) => [ + p({ awareness, doc, token, workspace, emitState }).then(p => { + console.log(p); + return { + [name]: p, + }; + }), p({ awareness, doc: binaries, token, workspace: `${workspace}_binaries`, emitState, - }), + }).then(p => ({ [`${name}_binaries`]: p })), ]) ); } @@ -128,7 +135,7 @@ async function _initYjsDatabase( binaries, doc, gatekeeper, - + providers, connListener, userId, remoteToken: token, @@ -324,53 +331,63 @@ export class YjsAdapter implements AsyncDatabaseAdapter { const binary = encodeStateAsUpdate(this._doc); saveAs( new Blob([binary]), - `affine_workspace_${new Date().toDateString()}.apk` + `affine_workspace_${new Date().toDateString()}.affine` ); }, load: async () => { - const handles = await window.showOpenFilePicker({ - types: [ - { - description: 'AFFiNE Package', - accept: { - // eslint-disable-next-line @typescript-eslint/naming-convention - 'application/affine': ['.apk'], + try { + const handles = await window.showOpenFilePicker({ + types: [ + { + description: 'AFFiNE Package', + accept: { + // eslint-disable-next-line @typescript-eslint/naming-convention + 'application/affine': ['.affine'], + }, }, - }, - ], - }); - const [file] = (await fromEvent(handles)) as File[]; - const binary = await file?.arrayBuffer(); - // await this._provider.idb.clearData(); - const doc = new Doc({ autoLoad: true, shouldLoad: true }); - let updated = 0; - let isUpdated = false; - doc.on('update', () => { - isUpdated = true; - updated += 1; - }); - setInterval(() => { - if (updated > 0) { - updated -= 1; - } - }, 500); - - const update_check = new Promise(resolve => { - const check = async () => { - while (!isUpdated || updated > 0) { - await sleep(); + ], + }); + const [file] = (await fromEvent(handles)) as File[]; + const binary = await file?.arrayBuffer(); + console.log(this._provider.providers); + let { indexeddb } = ( + this._provider.providers as any[] + ).find(p => p.indexeddb); + await indexeddb?.idb?.clearData(); + const doc = new Doc({ autoLoad: true, shouldLoad: true }); + let updated = 0; + let isUpdated = false; + doc.on('update', () => { + isUpdated = true; + updated += 1; + }); + setInterval(() => { + if (updated > 0) { + updated -= 1; } - resolve(); - }; - check(); - }); - // await new IndexedDBProvider(this._provider.idb.name, doc) - // .whenSynced; - if (binary) { - applyUpdate(doc, new Uint8Array(binary)); - await update_check; + }, 500); + + const update_check = new Promise(resolve => { + const check = async () => { + while (!isUpdated || updated > 0) { + await sleep(); + } + resolve(); + }; + check(); + }); + await new indexeddb.ctor(indexeddb.idb.name, doc) + .whenSynced; + if (binary) { + applyUpdate(doc, new Uint8Array(binary)); + await update_check; + } + + return true; + } catch (err) { + console.log(err); + return false; } - console.log('load success'); }, parse: () => this._doc.toJSON(), // eslint-disable-next-line @typescript-eslint/naming-convention diff --git a/libs/datasource/jwt/src/yjs/provider.ts b/libs/datasource/jwt/src/yjs/provider.ts index 99a09fd69c..0dab4244c0 100644 --- a/libs/datasource/jwt/src/yjs/provider.ts +++ b/libs/datasource/jwt/src/yjs/provider.ts @@ -18,7 +18,9 @@ type YjsDefaultInstances = { emitState: (connectivity: Connectivity) => void; }; -export type YjsProvider = (instances: YjsDefaultInstances) => Promise; +export type YjsProvider = ( + instances: YjsDefaultInstances +) => Promise; type ProviderType = 'idb' | 'sqlite' | 'ws'; @@ -38,9 +40,12 @@ export const getYjsProviders = ( return { indexeddb: async (instances: YjsDefaultInstances) => { if (options.enabled.includes('idb')) { - await new IndexedDBProvider(instances.workspace, instances.doc) - .whenSynced; + return new IndexedDBProvider( + instances.workspace, + instances.doc + ).whenSynced.then(idb => ({ idb, ctor: IndexedDBProvider })); } + return undefined; }, sqlite: async (instances: YjsDefaultInstances) => { if (options.enabled.includes('sqlite')) { diff --git a/libs/datasource/state/package.json b/libs/datasource/state/package.json index a1a92d478b..20bdf4c8ce 100644 --- a/libs/datasource/state/package.json +++ b/libs/datasource/state/package.json @@ -3,9 +3,9 @@ "version": "0.0.1", "license": "MIT", "dependencies": { - "jotai": "^1.7.4" + "jotai": "^1.8.1" }, "devDependencies": { - "firebase": "^9.9.2" + "firebase": "^9.9.3" } } diff --git a/libs/datasource/state/src/page.ts b/libs/datasource/state/src/page.ts index 093ee78398..e1706e508e 100644 --- a/libs/datasource/state/src/page.ts +++ b/libs/datasource/state/src/page.ts @@ -1,5 +1,4 @@ import { atom, useAtom } from 'jotai'; -import { useEffect } from 'react'; import { useLocation, useParams } from 'react-router-dom'; // import { Virgo } from '@toeverything/components/editor-core'; @@ -14,12 +13,13 @@ export const useCurrentEditors = () => { const { pathname } = useLocation(); const [currentEditors, setCurrentEditors] = useAtom(_currentEditors); - useEffect(() => { - if (!workspaceId || !pageId) return; - if (pathname.split('/').length >= 3) { - setCurrentEditors({}); - } - }, [pageId, pathname, setCurrentEditors, workspaceId]); + /* not useful: 2022.8.25 */ + // useEffect(() => { + // if (!workspaceId || !pageId) return; + // if (pathname.split('/').length >= 3) { + // setCurrentEditors({}); + // } + // }, [pageId, pathname, setCurrentEditors, workspaceId]); return { currentEditors, diff --git a/libs/datasource/state/src/user.ts b/libs/datasource/state/src/user.ts index 61893471de..063f9f7f04 100644 --- a/libs/datasource/state/src/user.ts +++ b/libs/datasource/state/src/user.ts @@ -71,44 +71,20 @@ const _useUserAndSpacesForFreeLogin = () => { useEffect(() => { if (loading) { - if (location.pathname.startsWith('/local')) { - navigate('/local'); - } else { - navigate('/demo'); - } + navigate(`/${BRAND_ID}`); setLoading(false); } }, []); useEffect(() => { - if (localTrigger) { - setUser({ - photo: '', - id: BRAND_ID, - username: BRAND_ID, - nickname: BRAND_ID, - email: '', - }); - } else { - if (location.pathname.startsWith('/local')) { - setUser({ - photo: '', - id: 'local', - username: 'local', - nickname: 'local', - email: '', - }); - } else { - setUser({ - photo: '', - id: 'demo', - username: 'demo', - nickname: 'demo', - email: '', - }); - } - } - }, [localTrigger, location, setLoading, setUser]); + setUser({ + photo: '', + id: BRAND_ID, + username: BRAND_ID, + nickname: BRAND_ID, + email: '', + }); + }, [setUser]); const currentSpaceId: string | undefined = useMemo(() => user?.id, [user]); diff --git a/libs/rollup-ts-checker.config.cjs b/libs/rollup-ts-checker.config.cjs index 4dd39b2f89..cbc98039e7 100644 --- a/libs/rollup-ts-checker.config.cjs +++ b/libs/rollup-ts-checker.config.cjs @@ -12,6 +12,12 @@ module.exports = config => { padding.push(postcss); nxConfig.plugins.splice(postcssIndex, 1); + const jsonIndex = nxConfig.plugins.findIndex(p => p?.name === 'json'); + if (jsonIndex !== -1) { + padding.push(nxConfig.plugins[jsonIndex]); + nxConfig.plugins.splice(jsonIndex, 1); + } + const style9Plugin = style9({ minifyProperties: true, incrementalClassnames: true, diff --git a/libs/rollup.config.cjs b/libs/rollup.config.cjs index 630ef60635..a76c121315 100644 --- a/libs/rollup.config.cjs +++ b/libs/rollup.config.cjs @@ -12,6 +12,12 @@ module.exports = config => { padding.push(postcss); nxConfig.plugins.splice(postcssIndex, 1); + const jsonIndex = nxConfig.plugins.findIndex(p => p?.name === 'json'); + if (jsonIndex !== -1) { + padding.push(nxConfig.plugins[jsonIndex]); + nxConfig.plugins.splice(jsonIndex, 1); + } + const style9Plugin = style9({ minifyProperties: true, incrementalClassnames: true, diff --git a/package.json b/package.json index a0e060199e..88f5c1264e 100644 --- a/package.json +++ b/package.json @@ -51,13 +51,20 @@ "@mui/material", "babel-loader", "jest-environment-node", + "mobx", "rollup", "webpack", "react", "react-dom", "reflect-metadata", "rxjs" - ] + ], + "allowedVersions": { + "@types/react": "18", + "react": "18", + "react-dom": "18", + "react-test-renderer": "18" + } } }, "dependencies": { @@ -66,9 +73,9 @@ "@mui/icons-material": "^5.8.4", "@mui/material": "^5.8.6", "assert": "^2.0.0", - "clsx": "^1.2.0", - "core-js": "^3.23.3", - "got": "^12.1.0", + "clsx": "^1.2.1", + "core-js": "^3.25.0", + "got": "^12.3.1", "level": "^8.0.0", "level-read-stream": "1.1.0", "react": "^18.2.0", @@ -76,38 +83,36 @@ "react-router": "^6.3.0", "react-router-dom": "^6.3.0", "regenerator-runtime": "^0.13.9", - "rxjs": "^7.5.5", - "style9": "^0.13.3", + "rxjs": "^7.5.6", + "style9": "^0.14.0", "tslib": "^2.4.0" }, "devDependencies": { "@firebase/auth": "^0.20.5", - "@headlessui/react": "^1.6.5", - "@heroicons/react": "^1.0.6", - "@nrwl/cli": "^14.4.0", - "@nrwl/cypress": "^14.4.0", - "@nrwl/eslint-plugin-nx": "^14.4.0", - "@nrwl/jest": "^14.4.0", - "@nrwl/js": "^14.4.0", - "@nrwl/linter": "^14.4.0", - "@nrwl/node": "^14.4.0", - "@nrwl/nx-cloud": "^14.2.0", - "@nrwl/react": "^14.4.0", - "@nrwl/tao": "^14.4.0", - "@nrwl/web": "^14.4.0", - "@nrwl/workspace": "^14.4.0", + "@nrwl/cli": "^14.5.10", + "@nrwl/cypress": "^14.5.10", + "@nrwl/eslint-plugin-nx": "^14.5.10", + "@nrwl/jest": "^14.5.10", + "@nrwl/js": "^14.5.10", + "@nrwl/linter": "^14.5.10", + "@nrwl/node": "^14.5.10", + "@nrwl/nx-cloud": "^14.5.4", + "@nrwl/react": "^14.5.10", + "@nrwl/tao": "^14.5.10", + "@nrwl/web": "^14.5.10", + "@nrwl/workspace": "^14.5.10", "@portabletext/react": "^1.0.6", - "@svgr/core": "^6.2.1", + "@svgr/core": "^6.3.1", "@swc/cli": "^0.1.57", - "@swc/core": "^1.2.208", - "@swc/helpers": "^0.4.3", - "@swc/jest": "^0.2.21", + "@swc/core": "^1.2.244", + "@swc/helpers": "^0.4.11", + "@swc/jest": "^0.2.22", "@testing-library/react": "^13.3.0", "@testing-library/react-hooks": "^8.0.1", - "@types/jest": "^28.1.4", - "@types/node": "^18.0.1", - "@types/react": "^18.0.14", - "@types/react-dom": "^18.0.5", + "@types/jest": "^28.1.8", + "@types/node": "^18.7.13", + "@types/react": "^18.0.17", + "@types/react-dom": "^18.0.6", "@types/react-router-dom": "^5.3.3", "@typescript-eslint/eslint-plugin": "^5.30.4", "@typescript-eslint/parser": "^5.30.4", @@ -128,13 +133,13 @@ "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-react": "^7.30.1", "eslint-plugin-react-hooks": "^4.6.0", - "firebase": "^9.9.2", + "firebase": "^9.9.3", "fs-extra": "^10.1.0", "html-webpack-plugin": "^5.5.0", "husky": "^8.0.1", "jest": "^28.1.2", "lint-staged": "^13.0.3", - "nx": "^14.4.0", + "nx": "^14.5.10", "prettier": "^2.7.1", "react-test-renderer": "^18.2.0", "svgo": "^2.8.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e9f182f211..cc6501e0a8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,34 +7,32 @@ importers: '@emotion/react': ^11.9.3 '@emotion/styled': ^11.9.3 '@firebase/auth': ^0.20.5 - '@headlessui/react': ^1.6.5 - '@heroicons/react': ^1.0.6 '@mui/icons-material': ^5.8.4 '@mui/material': ^5.8.6 - '@nrwl/cli': ^14.4.0 - '@nrwl/cypress': ^14.4.0 - '@nrwl/eslint-plugin-nx': ^14.4.0 - '@nrwl/jest': ^14.4.0 - '@nrwl/js': ^14.4.0 - '@nrwl/linter': ^14.4.0 - '@nrwl/node': ^14.4.0 - '@nrwl/nx-cloud': ^14.2.0 - '@nrwl/react': ^14.4.0 - '@nrwl/tao': ^14.4.0 - '@nrwl/web': ^14.4.0 - '@nrwl/workspace': ^14.4.0 + '@nrwl/cli': ^14.5.10 + '@nrwl/cypress': ^14.5.10 + '@nrwl/eslint-plugin-nx': ^14.5.10 + '@nrwl/jest': ^14.5.10 + '@nrwl/js': ^14.5.10 + '@nrwl/linter': ^14.5.10 + '@nrwl/node': ^14.5.10 + '@nrwl/nx-cloud': ^14.5.4 + '@nrwl/react': ^14.5.10 + '@nrwl/tao': ^14.5.10 + '@nrwl/web': ^14.5.10 + '@nrwl/workspace': ^14.5.10 '@portabletext/react': ^1.0.6 - '@svgr/core': ^6.2.1 + '@svgr/core': ^6.3.1 '@swc/cli': ^0.1.57 - '@swc/core': ^1.2.208 - '@swc/helpers': ^0.4.3 - '@swc/jest': ^0.2.21 + '@swc/core': ^1.2.244 + '@swc/helpers': ^0.4.11 + '@swc/jest': ^0.2.22 '@testing-library/react': ^13.3.0 '@testing-library/react-hooks': ^8.0.1 - '@types/jest': ^28.1.4 - '@types/node': ^18.0.1 - '@types/react': ^18.0.14 - '@types/react-dom': ^18.0.5 + '@types/jest': ^28.1.8 + '@types/node': ^18.7.13 + '@types/react': ^18.0.17 + '@types/react-dom': ^18.0.6 '@types/react-router-dom': ^5.3.3 '@typescript-eslint/eslint-plugin': ^5.30.4 '@typescript-eslint/parser': ^5.30.4 @@ -42,9 +40,9 @@ importers: babel-jest: ^28.1.2 babel-plugin-open-source: ^1.3.4 change-case: ^4.1.2 - clsx: ^1.2.0 + clsx: ^1.2.1 compression-webpack-plugin: ^10.0.0 - core-js: ^3.23.3 + core-js: ^3.25.0 cross-env: ^7.0.3 css-minimizer-webpack-plugin: ^4.0.0 cz-customizable: ^5.3.0 @@ -58,16 +56,16 @@ importers: eslint-plugin-prettier: ^4.2.1 eslint-plugin-react: ^7.30.1 eslint-plugin-react-hooks: ^4.6.0 - firebase: ^9.9.2 + firebase: ^9.9.3 fs-extra: ^10.1.0 - got: ^12.1.0 + got: ^12.3.1 html-webpack-plugin: ^5.5.0 husky: ^8.0.1 jest: ^28.1.2 level: ^8.0.0 level-read-stream: 1.1.0 lint-staged: ^13.0.3 - nx: ^14.4.0 + nx: ^14.5.10 prettier: ^2.7.1 react: ^18.2.0 react-dom: ^18.2.0 @@ -75,8 +73,8 @@ importers: react-router-dom: ^6.3.0 react-test-renderer: ^18.2.0 regenerator-runtime: ^0.13.9 - rxjs: ^7.5.5 - style9: ^0.13.3 + rxjs: ^7.5.6 + style9: ^0.14.0 svgo: ^2.8.0 terser-webpack-plugin: ^5.3.3 ts-jest: ^28.0.5 @@ -86,14 +84,14 @@ importers: webpack: ^5.74.0 webpack-bundle-analyzer: ^4.5.0 dependencies: - '@emotion/react': 11.9.3_4jaruczdv2uxjj3lb2xbkiuci4 - '@emotion/styled': 11.9.3_toiz7tndcw4z2b7gxmmeo5fkcu - '@mui/icons-material': 5.8.4_vdnh4jyrnjwcar5vg6k35n5t6e - '@mui/material': 5.8.7_h2u6a3oivtyocvjxeke7xcvlfa + '@emotion/react': 11.9.3_aev5mndowrsc2o4rquiaswzsei + '@emotion/styled': 11.9.3_lzq4tq5osthlqcqhyhuicy5gfy + '@mui/icons-material': 5.8.4_wip2cf6yrkxu2zuyrl3lmpbdaa + '@mui/material': 5.8.7_mugunlselc52kyz7qt5aa5ixva assert: 2.0.0 - clsx: 1.2.0 - core-js: 3.23.3 - got: 12.1.0 + clsx: 1.2.1 + core-js: 3.25.0 + got: 12.3.1 level: 8.0.0 level-read-stream: 1.1.0 react: 18.2.0 @@ -101,36 +99,34 @@ importers: react-router: 6.3.0_react@18.2.0 react-router-dom: 6.3.0_biqbaboplfbrettd7655fr4n2y regenerator-runtime: 0.13.9 - rxjs: 7.5.5 - style9: 0.13.3_3dhnqjc63a233tfpt3a625zcdq + rxjs: 7.5.6 + style9: 0.14.0_3dhnqjc63a233tfpt3a625zcdq tslib: 2.4.0 devDependencies: - '@firebase/auth': 0.20.5_@firebase+app@0.7.30 - '@headlessui/react': 1.6.5_biqbaboplfbrettd7655fr4n2y - '@heroicons/react': 1.0.6_react@18.2.0 - '@nrwl/cli': 14.4.2_@swc+core@1.2.210 - '@nrwl/cypress': 14.4.2_gtbxvtmh5ipj3piki3xg57n5fe - '@nrwl/eslint-plugin-nx': 14.4.2_afsbewstkdex5d4fc6xnpjlnau - '@nrwl/jest': 14.4.2_dltevkctzdxkrvyldbyepwbdle - '@nrwl/js': 14.4.2_gtbxvtmh5ipj3piki3xg57n5fe - '@nrwl/linter': 14.4.2_jqnzvbaca4rx3byobgjku3onji - '@nrwl/node': 14.4.2_ehspof47b5bphcyk4536mwaw4u - '@nrwl/nx-cloud': 14.2.0 - '@nrwl/react': 14.4.2_46t6z7wulh2zjyi5wmxujdm57y - '@nrwl/tao': 14.4.2_@swc+core@1.2.210 - '@nrwl/web': 14.4.2_7ggz7ibmlwrqtwusxeq53zzcym - '@nrwl/workspace': 14.4.2_a22ftc74wzukohhtmp6cnnvzoq + '@firebase/auth': 0.20.5_@firebase+app@0.7.31 + '@nrwl/cli': 14.5.10_@swc+core@1.2.244 + '@nrwl/cypress': 14.5.10_fh4vayvykx4so2ggxmjmy42o7q + '@nrwl/eslint-plugin-nx': 14.5.10_givxt7oldssnfrhy2ogb3txvmu + '@nrwl/jest': 14.5.10_mxnt7yjwrufofllb6rm3srb2gy + '@nrwl/js': 14.5.10_fh4vayvykx4so2ggxmjmy42o7q + '@nrwl/linter': 14.5.10_nccbbaajqjy3rznvgrrzaevqwe + '@nrwl/node': 14.5.10_b7xqi4yfwax4wnal77xdlkadre + '@nrwl/nx-cloud': 14.5.4 + '@nrwl/react': 14.5.10_o5732ev3g42bu2r3ngh6yfrgia + '@nrwl/tao': 14.5.10_@swc+core@1.2.244 + '@nrwl/web': 14.5.10_tpw7pltx5fafq53de536pruocy + '@nrwl/workspace': 14.5.10_eva5qnqrnaa26adtrypogyveky '@portabletext/react': 1.0.6_react@18.2.0 - '@svgr/core': 6.2.1 - '@swc/cli': 0.1.57_@swc+core@1.2.210 - '@swc/core': 1.2.210 - '@swc/helpers': 0.4.3 - '@swc/jest': 0.2.21_@swc+core@1.2.210 + '@svgr/core': 6.3.1 + '@swc/cli': 0.1.57_@swc+core@1.2.244 + '@swc/core': 1.2.244 + '@swc/helpers': 0.4.11 + '@swc/jest': 0.2.22_@swc+core@1.2.244 '@testing-library/react': 13.3.0_biqbaboplfbrettd7655fr4n2y - '@testing-library/react-hooks': 8.0.1_5qggqhesezyescxqnsg4rpj6qa - '@types/jest': 28.1.4 - '@types/node': 18.0.1 - '@types/react': 18.0.14 + '@testing-library/react-hooks': 8.0.1_y6lpz2mvcoua7qihahug4ke22i + '@types/jest': 28.1.8 + '@types/node': 18.7.13 + '@types/react': 18.0.17 '@types/react-dom': 18.0.6 '@types/react-router-dom': 5.3.3 '@typescript-eslint/eslint-plugin': 5.30.5_6zdoc3rn4mpiddqwhppni2mnnm @@ -152,21 +148,21 @@ importers: eslint-plugin-prettier: 4.2.1_7uxdfn2xinezdgvmbammh6ev5i eslint-plugin-react: 7.30.1_eslint@8.19.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.19.0 - firebase: 9.9.2 + firebase: 9.9.3 fs-extra: 10.1.0 html-webpack-plugin: 5.5.0_webpack@5.74.0 husky: 8.0.1 - jest: 28.1.2_hxaxlvfys2pc3hefxwkmyo5cpq + jest: 28.1.2_3glepa5322b7j342guju4hszoy lint-staged: 13.0.3 - nx: 14.4.2_@swc+core@1.2.210 + nx: 14.5.10_@swc+core@1.2.244 prettier: 2.7.1 react-test-renderer: 18.2.0_react@18.2.0 svgo: 2.8.0 - terser-webpack-plugin: 5.3.3_vwzmvoh3samqo2nn3x7mqt365m + terser-webpack-plugin: 5.3.3_5yvlrjpud4kvfyyr2mesgpo47e ts-jest: 28.0.5_dvf3gqad2lwurck7yyca7j3d3i - ts-node: 10.8.2_y42jqzo3jkzuv3kp7opavo2xbi + ts-node: 10.8.2_hixnfb2jfw56u6pahjg3ndp4oy typescript: 4.7.4 - webpack: 5.74.0_@swc+core@1.2.210 + webpack: 5.74.0_@swc+core@1.2.244 webpack-bundle-analyzer: 4.5.0 apps/keck: @@ -184,7 +180,7 @@ importers: yjs: ^13.5.41 dependencies: authing-js-sdk: 4.23.35 - firebase-admin: 11.0.1 + firebase-admin: 11.0.1_@firebase+app-types@0.7.0 lib0: 0.2.52 lru-cache: 7.13.2 nanoid: 4.0.0 @@ -199,13 +195,13 @@ importers: apps/ligo-virgo: specifiers: '@mui/icons-material': ^5.8.4 - firebase: ^9.9.2 + firebase: ^9.9.3 mini-css-extract-plugin: ^2.6.1 webpack: ^5.74.0 dependencies: '@mui/icons-material': 5.8.4 devDependencies: - firebase: 9.9.2 + firebase: 9.9.3 mini-css-extract-plugin: 2.6.1_webpack@5.74.0 webpack: 5.74.0 @@ -219,9 +215,11 @@ importers: specifiers: '@emotion/react': ^11.10.0 '@emotion/styled': ^11.10.0 - '@mui/joy': ^5.0.0-alpha.39 + '@mdx-js/loader': ^2.1.3 + '@mui/joy': ^5.0.0-alpha.42 + github-markdown-css: ^5.1.0 i18next: ^21.9.1 - image-minimizer-webpack-plugin: ^3.2.3 + image-minimizer-webpack-plugin: ^3.3.0 imagemin: ^8.0.1 imagemin-optipng: ^8.0.0 lozad: ^1.16.0 @@ -231,12 +229,14 @@ importers: dependencies: '@emotion/react': 11.10.0 '@emotion/styled': 11.10.0_@emotion+react@11.10.0 - '@mui/joy': 5.0.0-alpha.39_72v32ofbtgpmxm7mhvtx474vfu + '@mui/joy': 5.0.0-alpha.42_72v32ofbtgpmxm7mhvtx474vfu i18next: 21.9.1 lozad: 1.16.0 react-i18next: 11.18.4_i18next@21.9.1 devDependencies: - image-minimizer-webpack-plugin: 3.2.3_5emixpjl54fjyhdvj76qjbw4py + '@mdx-js/loader': 2.1.3_webpack@5.74.0 + github-markdown-css: 5.1.0 + image-minimizer-webpack-plugin: 3.3.0_5emixpjl54fjyhdvj76qjbw4py imagemin: 8.0.1 imagemin-optipng: 8.0.0 mini-css-extract-plugin: 2.6.1_webpack@5.74.0 @@ -260,7 +260,7 @@ importers: '@tldraw/intersect': ^1.7.1 '@tldraw/vec': ^1.7.0 dependencies: - '@tldraw/core': 1.14.1_mobx@6.6.1 + '@tldraw/core': 1.14.1 '@tldraw/intersect': 1.7.1 '@tldraw/vec': 1.7.1 @@ -358,7 +358,7 @@ importers: '@emotion/styled': 11.9.3_@emotion+react@11.9.3 '@mui/icons-material': 5.8.4_@mui+material@5.8.7 '@mui/material': 5.8.7_d6menda4vqwq6peqnkbe7mkj4i - '@mui/x-data-grid': 5.12.3_7ff6pt5vb3e5jymp4h3bl3mztq + '@mui/x-data-grid': 5.12.3_d23hrjcoore4j5fpg35ldaa7fa is-hotkey: 0.2.0 is-url: 1.2.4 slate: 0.81.1 @@ -409,22 +409,22 @@ importers: react-window: ^1.8.7 slate: ^0.81.1 slate-react: ^0.81.0 - style9: ^0.13.3 + style9: ^0.14.0 dependencies: '@codemirror/commands': 6.0.1 '@codemirror/lang-cpp': 6.0.1 - '@codemirror/lang-css': 6.0.0 - '@codemirror/lang-html': 6.1.0 + '@codemirror/lang-css': 6.0.0_bmjizg7gr5ieupmvn5u62mbipm + '@codemirror/lang-html': 6.1.0_@codemirror+view@6.2.0 '@codemirror/lang-java': 6.0.0 '@codemirror/lang-javascript': 6.0.2 '@codemirror/lang-json': 6.0.0 '@codemirror/lang-lezer': 6.0.0 '@codemirror/lang-markdown': 6.0.1 - '@codemirror/lang-php': 6.0.0 + '@codemirror/lang-php': 6.0.0_@codemirror+view@6.2.0 '@codemirror/lang-python': 6.0.1 '@codemirror/lang-rust': 6.0.0 - '@codemirror/lang-sql': 6.1.0 - '@codemirror/lang-xml': 6.0.0 + '@codemirror/lang-sql': 6.1.0_bmjizg7gr5ieupmvn5u62mbipm + '@codemirror/lang-xml': 6.0.0_@codemirror+view@6.2.0 '@codemirror/language': 6.2.1 '@codemirror/legacy-modes': 6.1.0 '@codemirror/next': 0.16.0 @@ -438,7 +438,7 @@ importers: '@emotion/styled': 11.9.3_dc5dh2wp562rsjxvguwi2i3yzq '@mui/system': 5.8.7_d6menda4vqwq6peqnkbe7mkj4i code-example: 3.3.6 - codemirror: 6.0.1 + codemirror: 6.0.1_@lezer+common@1.0.0 codemirror-lang-elixir: 3.0.0_@codemirror+language@6.2.1 keymap: link:@codemirror/next/keymap nanoid: 4.0.0 @@ -446,7 +446,7 @@ importers: react-window: 1.8.7 slate: 0.81.1 slate-react: 0.81.0_slate@0.81.1 - style9: 0.13.3 + style9: 0.14.0 devDependencies: '@types/codemirror': 5.60.5 '@types/react-resizable': 3.0.1 @@ -455,32 +455,39 @@ importers: libs/components/editor-core: specifiers: '@mui/icons-material': ^5.8.4 - date-fns: ^2.28.0 + '@types/html-escaper': ^3.0.0 + date-fns: ^2.29.2 eventemitter3: ^4.0.7 hotkeys-js: ^3.9.4 + html-escaper: ^3.0.3 lru-cache: ^7.10.1 + marked: ^4.0.19 nanoid: ^4.0.0 slate: ^0.81.0 - style9: ^0.13.3 + style9: ^0.14.0 dependencies: '@mui/icons-material': 5.8.4 - date-fns: 2.28.0 + date-fns: 2.29.2 eventemitter3: 4.0.7 hotkeys-js: 3.9.4 + html-escaper: 3.0.3 lru-cache: 7.12.0 + marked: 4.0.19 nanoid: 4.0.0 slate: 0.81.1 - style9: 0.13.3 + style9: 0.14.0 + devDependencies: + '@types/html-escaper': 3.0.0 libs/components/editor-plugins: specifiers: '@mui/icons-material': ^5.8.4 - date-fns: ^2.28.0 - style9: ^0.13.3 + date-fns: ^2.29.2 + style9: ^0.14.0 dependencies: '@mui/icons-material': 5.8.4 - date-fns: 2.28.0 - style9: 0.13.3 + date-fns: 2.29.2 + style9: 0.14.0 libs/components/icons: specifiers: {} @@ -496,20 +503,24 @@ importers: '@types/tinycolor2': ^1.4.3 '@types/turndown': ^5.0.1 clsx: ^1.2.1 - date-fns: ^2.28.0 - jotai: ^1.7.4 + date-fns: ^2.29.2 + i18next: ^21.9.1 + jotai: ^1.8.1 + react-i18next: ^11.18.4 tinycolor2: ^1.4.2 turndown: 7.1.1 dependencies: - '@date-io/date-fns': 2.14.0_date-fns@2.28.0 + '@date-io/date-fns': 2.14.0_date-fns@2.29.2 '@dnd-kit/core': 6.0.5 '@dnd-kit/modifiers': 6.0.0_@dnd-kit+core@6.0.5 '@dnd-kit/sortable': 7.0.1_@dnd-kit+core@6.0.5 '@dnd-kit/utilities': 3.2.0 '@mui/icons-material': 5.8.4 clsx: 1.2.1 - date-fns: 2.28.0 - jotai: 1.7.4 + date-fns: 2.29.2 + i18next: 21.9.1 + jotai: 1.8.1 + react-i18next: 11.18.4_i18next@21.9.1 tinycolor2: 1.4.2 turndown: 7.1.1 devDependencies: @@ -528,7 +539,7 @@ importers: '@mui/x-date-pickers': ^5.0.0-alpha.7 '@mui/x-date-pickers-pro': ^5.0.0-alpha.7 '@types/react-date-range': ^1.4.4 - clsx: ^1.2.0 + clsx: ^1.2.1 notistack: ^2.0.5 react-date-range: ^1.4.0 dependencies: @@ -539,12 +550,12 @@ importers: '@mui/base': 5.0.0-alpha.88 '@mui/material': 5.8.7_d6menda4vqwq6peqnkbe7mkj4i '@mui/system': 5.8.7_d6menda4vqwq6peqnkbe7mkj4i - '@mui/x-date-pickers': 5.0.0-alpha.7_3ze6eywwrphmf4xmeajh7ll6xm - '@mui/x-date-pickers-pro': 5.0.0-alpha.7_3ze6eywwrphmf4xmeajh7ll6xm + '@mui/x-date-pickers': 5.0.0-alpha.7_k34ytkg6gx4xxob5q3piijp2ce + '@mui/x-date-pickers-pro': 5.0.0-alpha.7_k34ytkg6gx4xxob5q3piijp2ce '@types/react-date-range': 1.4.4 - clsx: 1.2.0 + clsx: 1.2.1 notistack: 2.0.5_5ejcbl776hpy2drdn6qveocmsu - react-date-range: 1.4.0_date-fns@2.28.0 + react-date-range: 1.4.0_date-fns@2.29.2 libs/datasource/commands: specifiers: {} @@ -566,9 +577,6 @@ importers: dependencies: ffc-js-client-side-sdk: 1.1.5 - libs/datasource/jwst/pkg: - specifiers: {} - libs/datasource/jwt: specifiers: '@types/debug': ^4.1.7 @@ -650,12 +658,12 @@ importers: libs/datasource/state: specifiers: - firebase: ^9.9.2 - jotai: ^1.7.4 + firebase: ^9.9.3 + jotai: ^1.8.1 dependencies: - jotai: 1.7.4 + jotai: 1.8.1 devDependencies: - firebase: 9.9.2 + firebase: 9.9.3 libs/framework/virgo: specifiers: {} @@ -2257,8 +2265,13 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@codemirror/autocomplete/6.0.3: + /@codemirror/autocomplete/6.0.3_nq4pwfkqi5icglf26kczcr4s2i: resolution: {integrity: sha512-JTSBDC4tUyR8iRmCwQJaYpTXtOZmRn4gKjw1Fu4xIatFPqTJ7m0QRCdkdbzlvMovzjTiuHp4a8WUEB1c/LtiHg==} + peerDependencies: + '@codemirror/language': ^6.0.0 + '@codemirror/state': ^6.0.0 + '@codemirror/view': ^6.0.0 + '@lezer/common': ^1.0.0 dependencies: '@codemirror/language': 6.2.1 '@codemirror/state': 6.1.1 @@ -2282,25 +2295,30 @@ packages: '@lezer/cpp': 1.0.0 dev: false - /@codemirror/lang-css/6.0.0: + /@codemirror/lang-css/6.0.0_bmjizg7gr5ieupmvn5u62mbipm: resolution: {integrity: sha512-jBqc+BTuwhNOTlrimFghLlSrN6iFuE44HULKWoR4qKYObhOIl9Lci1iYj6zMIte1XTQmZguNvjXMyr43LUKwSw==} dependencies: - '@codemirror/autocomplete': 6.0.3 + '@codemirror/autocomplete': 6.0.3_nq4pwfkqi5icglf26kczcr4s2i '@codemirror/language': 6.2.1 '@codemirror/state': 6.1.1 '@lezer/css': 1.0.0 + transitivePeerDependencies: + - '@codemirror/view' + - '@lezer/common' dev: false - /@codemirror/lang-html/6.1.0: + /@codemirror/lang-html/6.1.0_@codemirror+view@6.2.0: resolution: {integrity: sha512-gA7NmJxqvnhwza05CvR7W/39Ap9r/4Vs9uiC0IeFYo1hSlJzc/8N6Evviz6vTW1x8SpHcRYyqKOf6rpl6LfWtg==} dependencies: - '@codemirror/autocomplete': 6.0.3 - '@codemirror/lang-css': 6.0.0 + '@codemirror/autocomplete': 6.0.3_nq4pwfkqi5icglf26kczcr4s2i + '@codemirror/lang-css': 6.0.0_bmjizg7gr5ieupmvn5u62mbipm '@codemirror/lang-javascript': 6.0.2 '@codemirror/language': 6.2.1 '@codemirror/state': 6.1.1 '@lezer/common': 1.0.0 '@lezer/html': 1.0.0 + transitivePeerDependencies: + - '@codemirror/view' dev: false /@codemirror/lang-java/6.0.0: @@ -2313,7 +2331,7 @@ packages: /@codemirror/lang-javascript/6.0.2: resolution: {integrity: sha512-BZRJ9u/zl16hLkSpDAWm73mrfIR7HJrr0lvnhoSOCQVea5BglguWI/slxexhvUb0CB5cXgKWuo2bM+N9EhIaZw==} dependencies: - '@codemirror/autocomplete': 6.0.3 + '@codemirror/autocomplete': 6.0.3_nq4pwfkqi5icglf26kczcr4s2i '@codemirror/language': 6.2.1 '@codemirror/lint': 6.0.0 '@codemirror/state': 6.1.1 @@ -2341,7 +2359,7 @@ packages: /@codemirror/lang-markdown/6.0.1: resolution: {integrity: sha512-pHPQuRwf9cUrmkmsTHRjtS9ZnGu3fA9YzAdh2++d+L9wbfnC2XbKh0Xvm/0YiUjdCnoCx9wDFEoCuAnkqKWLIw==} dependencies: - '@codemirror/lang-html': 6.1.0 + '@codemirror/lang-html': 6.1.0_@codemirror+view@6.2.0 '@codemirror/language': 6.2.1 '@codemirror/state': 6.1.1 '@codemirror/view': 6.2.0 @@ -2349,14 +2367,16 @@ packages: '@lezer/markdown': 1.0.1 dev: false - /@codemirror/lang-php/6.0.0: + /@codemirror/lang-php/6.0.0_@codemirror+view@6.2.0: resolution: {integrity: sha512-96CEjq0xEgbzc6bdFPwILPfZ6m8917JRbh2oPszZJABlYxG4Y+eYjtYkUTDb4yuyjQKyigHoeGC6zoIOYA1NWA==} dependencies: - '@codemirror/lang-html': 6.1.0 + '@codemirror/lang-html': 6.1.0_@codemirror+view@6.2.0 '@codemirror/language': 6.2.1 '@codemirror/state': 6.1.1 '@lezer/common': 1.0.0 '@lezer/php': 1.0.0 + transitivePeerDependencies: + - '@codemirror/view' dev: false /@codemirror/lang-python/6.0.1: @@ -2373,24 +2393,29 @@ packages: '@lezer/rust': 1.0.0 dev: false - /@codemirror/lang-sql/6.1.0: + /@codemirror/lang-sql/6.1.0_bmjizg7gr5ieupmvn5u62mbipm: resolution: {integrity: sha512-eTNTP0+uNHqYClCvJ3QGE7mn1S96QJFNsK76dB4c1pYAQjbgVVjy5DqtD3//A44rp2kuRkgBccRaPKrWDzBdNQ==} dependencies: - '@codemirror/autocomplete': 6.0.3 + '@codemirror/autocomplete': 6.0.3_nq4pwfkqi5icglf26kczcr4s2i '@codemirror/language': 6.2.1 '@codemirror/state': 6.1.1 '@lezer/highlight': 1.0.0 '@lezer/lr': 1.2.0 + transitivePeerDependencies: + - '@codemirror/view' + - '@lezer/common' dev: false - /@codemirror/lang-xml/6.0.0: + /@codemirror/lang-xml/6.0.0_@codemirror+view@6.2.0: resolution: {integrity: sha512-M/HLWxIiP956xGjtrxkeHkCmDGVQGKu782x8pOH5CLJIMkWtiB1DWfDoDHqpFjdEE9dkfcqPWvYfVi6GbhuXEg==} dependencies: - '@codemirror/autocomplete': 6.0.3 + '@codemirror/autocomplete': 6.0.3_nq4pwfkqi5icglf26kczcr4s2i '@codemirror/language': 6.2.1 '@codemirror/state': 6.1.1 '@lezer/common': 1.0.0 '@lezer/xml': 1.0.0 + transitivePeerDependencies: + - '@codemirror/view' dev: false /@codemirror/language/6.2.1: @@ -2529,7 +2554,7 @@ packages: bluebird: 3.7.1 debug: 4.3.4 lodash: 4.17.21 - webpack: 5.74.0_@swc+core@1.2.210 + webpack: 5.74.0_@swc+core@1.2.244 transitivePeerDependencies: - supports-color dev: true @@ -2547,7 +2572,7 @@ packages: resolution: {integrity: sha512-qFN64hiFjmlDHJhu+9xMkdfDG2jLsggNxKXglnekUpXSq8faiqZgtHm2lsHCUuaPDTV6wuXHcCl8J1GQ5wLmPw==} dev: false - /@date-io/date-fns/2.14.0_date-fns@2.28.0: + /@date-io/date-fns/2.14.0_date-fns@2.29.2: resolution: {integrity: sha512-4fJctdVyOd5cKIKGaWUM+s3MUXMuzkZaHuTY15PH70kU1YTMrCoauA7hgQVx9qj0ZEbGrH9VSPYJYnYro7nKiA==} peerDependencies: date-fns: ^2.0.0 @@ -2556,7 +2581,7 @@ packages: optional: true dependencies: '@date-io/core': 2.14.0 - date-fns: 2.28.0 + date-fns: 2.29.2 dev: false /@date-io/dayjs/2.14.0: @@ -2595,7 +2620,7 @@ packages: /@dnd-kit/accessibility/3.0.1: resolution: {integrity: sha512-HXRrwS9YUYQO9lFRc/49uO/VICbM+O+ZRpFDe9Pd1rwVv2PCNkRiTZRdxrDgng/UkvdC3Re9r2vwPpXXrWeFzg==} peerDependencies: - react: '>=16.8.0' + react: '>=16.8.0 || 18' peerDependenciesMeta: react: optional: true @@ -2606,8 +2631,8 @@ packages: /@dnd-kit/core/6.0.5: resolution: {integrity: sha512-3nL+Zy5cT+1XwsWdlXIvGIFvbuocMyB4NBxTN74DeBaBqeWdH9JsnKwQv7buZQgAHmAH+eIENfS1ginkvW6bCw==} peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' + react: '>=16.8.0 || 18' + react-dom: '>=16.8.0 || 18' peerDependenciesMeta: react: optional: true @@ -2635,7 +2660,7 @@ packages: resolution: {integrity: sha512-n77qAzJQtMMywu25sJzhz3gsHnDOUlEjTtnRl8A87rWIhnu32zuP+7zmFjwGgvqfXmRufqiHOSlH7JPC/tnJ8Q==} peerDependencies: '@dnd-kit/core': ^6.0.4 - react: '>=16.8.0' + react: '>=16.8.0 || 18' peerDependenciesMeta: react: optional: true @@ -2648,7 +2673,7 @@ packages: /@dnd-kit/utilities/3.2.0: resolution: {integrity: sha512-h65/pn2IPCCIWwdlR2BMLqRkDxpTEONA+HQW3n765HBijLYGyrnTCLa2YQt8VVjjSQD6EfFlTE6aS2Q/b6nb2g==} peerDependencies: - react: '>=16.8.0' + react: '>=16.8.0 || 18' peerDependenciesMeta: react: optional: true @@ -2776,7 +2801,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0 '@types/react': '*' - react: '>=16.8.0' + react: '>=16.8.0 || 18' peerDependenciesMeta: '@babel/core': optional: true @@ -2799,7 +2824,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0 '@types/react': '*' - react: '>=16.8.0' + react: '>=16.8.0 || 18' peerDependenciesMeta: '@babel/core': optional: true @@ -2817,38 +2842,12 @@ packages: hoist-non-react-statics: 3.3.2 dev: false - /@emotion/react/11.9.3_4jaruczdv2uxjj3lb2xbkiuci4: - resolution: {integrity: sha512-g9Q1GcTOlzOEjqwuLF/Zd9LC+4FljjPjDfxSM7KmEakm+hsHXk+bYZ2q+/hTJzr0OUNkujo72pXLQvXj6H+GJQ==} - peerDependencies: - '@babel/core': ^7.0.0 - '@types/react': '*' - react: '>=16.8.0' - peerDependenciesMeta: - '@babel/core': - optional: true - '@types/react': - optional: true - react: - optional: true - dependencies: - '@babel/core': 7.18.6 - '@babel/runtime': 7.18.6 - '@emotion/babel-plugin': 11.9.2_@babel+core@7.18.6 - '@emotion/cache': 11.9.3 - '@emotion/serialize': 1.0.4 - '@emotion/utils': 1.1.0 - '@emotion/weak-memoize': 0.2.5 - '@types/react': 18.0.14 - hoist-non-react-statics: 3.3.2 - react: 18.2.0 - dev: false - /@emotion/react/11.9.3_@babel+core@7.18.6: resolution: {integrity: sha512-g9Q1GcTOlzOEjqwuLF/Zd9LC+4FljjPjDfxSM7KmEakm+hsHXk+bYZ2q+/hTJzr0OUNkujo72pXLQvXj6H+GJQ==} peerDependencies: '@babel/core': ^7.0.0 '@types/react': '*' - react: '>=16.8.0' + react: '>=16.8.0 || 18' peerDependenciesMeta: '@babel/core': optional: true @@ -2867,6 +2866,32 @@ packages: hoist-non-react-statics: 3.3.2 dev: false + /@emotion/react/11.9.3_aev5mndowrsc2o4rquiaswzsei: + resolution: {integrity: sha512-g9Q1GcTOlzOEjqwuLF/Zd9LC+4FljjPjDfxSM7KmEakm+hsHXk+bYZ2q+/hTJzr0OUNkujo72pXLQvXj6H+GJQ==} + peerDependencies: + '@babel/core': ^7.0.0 + '@types/react': '*' + react: '>=16.8.0 || 18' + peerDependenciesMeta: + '@babel/core': + optional: true + '@types/react': + optional: true + react: + optional: true + dependencies: + '@babel/core': 7.18.6 + '@babel/runtime': 7.18.6 + '@emotion/babel-plugin': 11.9.2_@babel+core@7.18.6 + '@emotion/cache': 11.9.3 + '@emotion/serialize': 1.0.4 + '@emotion/utils': 1.1.0 + '@emotion/weak-memoize': 0.2.5 + '@types/react': 18.0.17 + hoist-non-react-statics: 3.3.2 + react: 18.2.0 + dev: false + /@emotion/serialize/1.0.4: resolution: {integrity: sha512-1JHamSpH8PIfFwAMryO2bNka+y8+KA5yga5Ocf2d7ZEiJjb7xlLW7aknBGZqJLajuLOvJ+72vN+IBSwPlXD1Pg==} dependencies: @@ -2901,7 +2926,7 @@ packages: '@babel/core': ^7.0.0 '@emotion/react': ^11.0.0-rc.0 '@types/react': '*' - react: '>=16.8.0' + react: '>=16.8.0 || 18' peerDependenciesMeta: '@babel/core': optional: true @@ -2926,7 +2951,7 @@ packages: '@babel/core': ^7.0.0 '@emotion/react': ^11.0.0-rc.0 '@types/react': '*' - react: '>=16.8.0' + react: '>=16.8.0 || 18' peerDependenciesMeta: '@babel/core': optional: true @@ -2950,7 +2975,7 @@ packages: '@babel/core': ^7.0.0 '@emotion/react': ^11.0.0-rc.0 '@types/react': '*' - react: '>=16.8.0' + react: '>=16.8.0 || 18' peerDependenciesMeta: '@babel/core': optional: true @@ -2975,7 +3000,7 @@ packages: '@babel/core': ^7.0.0 '@emotion/react': ^11.0.0-rc.0 '@types/react': '*' - react: '>=16.8.0' + react: '>=16.8.0 || 18' peerDependenciesMeta: '@babel/core': optional: true @@ -2995,13 +3020,13 @@ packages: '@emotion/utils': 1.1.0 dev: false - /@emotion/styled/11.9.3_toiz7tndcw4z2b7gxmmeo5fkcu: + /@emotion/styled/11.9.3_lzq4tq5osthlqcqhyhuicy5gfy: resolution: {integrity: sha512-o3sBNwbtoVz9v7WB1/Y/AmXl69YHmei2mrVnK7JgyBJ//Rst5yqPZCecEJlMlJrFeWHp+ki/54uN265V2pEcXA==} peerDependencies: '@babel/core': ^7.0.0 '@emotion/react': ^11.0.0-rc.0 '@types/react': '*' - react: '>=16.8.0' + react: '>=16.8.0 || 18' peerDependenciesMeta: '@babel/core': optional: true @@ -3016,10 +3041,10 @@ packages: '@babel/runtime': 7.18.6 '@emotion/babel-plugin': 11.9.2_@babel+core@7.18.6 '@emotion/is-prop-valid': 1.1.3 - '@emotion/react': 11.9.3_4jaruczdv2uxjj3lb2xbkiuci4 + '@emotion/react': 11.9.3_aev5mndowrsc2o4rquiaswzsei '@emotion/serialize': 1.0.4 '@emotion/utils': 1.1.0 - '@types/react': 18.0.14 + '@types/react': 18.0.17 react: 18.2.0 dev: false @@ -3071,14 +3096,14 @@ packages: text-decoding: 1.0.0 dev: false - /@firebase/analytics-compat/0.1.13_ntdu3hfexp42gsr3dmzonffheq: + /@firebase/analytics-compat/0.1.13_kowmy6vzi2xcdysg3n6ul4qaae: resolution: {integrity: sha512-QC1DH/Dwc8fBihn0H+jocBWyE17GF1fOCpCrpAiQ2u16F/NqsVDVG4LjIqdhq963DXaXneNY7oDwa25Up682AA==} peerDependencies: '@firebase/app-compat': 0.x dependencies: - '@firebase/analytics': 0.8.0_@firebase+app@0.7.30 + '@firebase/analytics': 0.8.0_@firebase+app@0.7.31 '@firebase/analytics-types': 0.7.0 - '@firebase/app-compat': 0.1.31 + '@firebase/app-compat': 0.1.32 '@firebase/component': 0.5.17 '@firebase/util': 1.6.3 tslib: 2.4.0 @@ -3090,27 +3115,27 @@ packages: resolution: {integrity: sha512-DNE2Waiwy5+zZnCfintkDtBfaW6MjIG883474v6Z0K1XZIvl76cLND4iv0YUb48leyF+PJK1KO2XrgHb/KpmhQ==} dev: true - /@firebase/analytics/0.8.0_@firebase+app@0.7.30: + /@firebase/analytics/0.8.0_@firebase+app@0.7.31: resolution: {integrity: sha512-wkcwainNm8Cu2xkJpDSHfhBSdDJn86Q1TZNmLWc67VrhZUHXIKXxIqb65/tNUVE+I8+sFiDDNwA+9R3MqTQTaA==} peerDependencies: '@firebase/app': 0.x dependencies: - '@firebase/app': 0.7.30 + '@firebase/app': 0.7.31 '@firebase/component': 0.5.17 - '@firebase/installations': 0.5.12_@firebase+app@0.7.30 + '@firebase/installations': 0.5.12_@firebase+app@0.7.31 '@firebase/logger': 0.3.3 '@firebase/util': 1.6.3 tslib: 2.4.0 dev: true - /@firebase/app-check-compat/0.2.12_ntdu3hfexp42gsr3dmzonffheq: + /@firebase/app-check-compat/0.2.12_kowmy6vzi2xcdysg3n6ul4qaae: resolution: {integrity: sha512-GFppNLlUyMN9Iq31ME/+GkjRVKlc+MeanzUKQ9UaR73ZsYH3oX3Ja+xjoYgixaVJDDG+ofBYR7ZXTkkQdSR/pw==} peerDependencies: '@firebase/app-compat': 0.x dependencies: - '@firebase/app-check': 0.5.12_@firebase+app@0.7.30 + '@firebase/app-check': 0.5.12_@firebase+app@0.7.31 '@firebase/app-check-types': 0.4.0 - '@firebase/app-compat': 0.1.31 + '@firebase/app-compat': 0.1.32 '@firebase/component': 0.5.17 '@firebase/logger': 0.3.3 '@firebase/util': 1.6.3 @@ -3127,22 +3152,22 @@ packages: resolution: {integrity: sha512-SsWafqMABIOu7zLgWbmwvHGOeQQVQlwm42kwwubsmfLmL4Sf5uGpBfDhQ0CAkpi7bkJ/NwNFKafNDL9prRNP0Q==} dev: true - /@firebase/app-check/0.5.12_@firebase+app@0.7.30: + /@firebase/app-check/0.5.12_@firebase+app@0.7.31: resolution: {integrity: sha512-l+MmvupSGT/F+I5ei7XjhEfpoL4hLVJr0vUwcG5NEf2hAkQnySli9fnbl9fZu1BJaQ2kthrMmtg1gcbcM9BUCQ==} peerDependencies: '@firebase/app': 0.x dependencies: - '@firebase/app': 0.7.30 + '@firebase/app': 0.7.31 '@firebase/component': 0.5.17 '@firebase/logger': 0.3.3 '@firebase/util': 1.6.3 tslib: 2.4.0 dev: true - /@firebase/app-compat/0.1.31: - resolution: {integrity: sha512-oH3F4Pf0/Q0WTyNynMlaoM1qjUTTu7ofDdAWUOgr9BH9gftIClqeCulltXSQH3DO3XUE61pIIpIakAWQ7zzumA==} + /@firebase/app-compat/0.1.32: + resolution: {integrity: sha512-dChnJsnHxih0MYQxCWBPAruqK2M4ba/t+DvKu8IcRpd4FkcUQ8FO19Z963nCdXyu2T6cxPcwCopKWaWlymBVVA==} dependencies: - '@firebase/app': 0.7.30 + '@firebase/app': 0.7.31 '@firebase/component': 0.5.17 '@firebase/logger': 0.3.3 '@firebase/util': 1.6.3 @@ -3152,8 +3177,8 @@ packages: /@firebase/app-types/0.7.0: resolution: {integrity: sha512-6fbHQwDv2jp/v6bXhBw2eSRbNBpxHcd1NBF864UksSMVIqIyri9qpJB1Mn6sGZE+bnDsSQBC5j2TbMxYsJQkQg==} - /@firebase/app/0.7.30: - resolution: {integrity: sha512-uJRMShpCWCrW6eO+/UuN0ExgztPMpK/w/AUryHJh7Ll4lFkc71pqE9P/XlfE+XXi0zkWoXVgPeLAQDkUJwgmMA==} + /@firebase/app/0.7.31: + resolution: {integrity: sha512-pqCkY2wC5pRBVH1oYliD9E0aSW6qisuMy7meaCtGzwaVcE8AFMhW9xhxHuBMpX1291+2iimUZWnCxSL9DaUUGA==} dependencies: '@firebase/component': 0.5.17 '@firebase/logger': 0.3.3 @@ -3162,13 +3187,13 @@ packages: tslib: 2.4.0 dev: true - /@firebase/auth-compat/0.2.18_53yvy43rwpg2c45kgeszsxtrca: + /@firebase/auth-compat/0.2.18_kg6iqletipudcxzgqetrtqyldy: resolution: {integrity: sha512-Fw2PJS0G/tGrfyEBcYJQ42sfy5+sANrK5xd7tuzgV7zLFW5rYkHUIZngXjuOBwLOcfO2ixa/FavfeJle3oJ38Q==} peerDependencies: '@firebase/app-compat': 0.x dependencies: - '@firebase/app-compat': 0.1.31 - '@firebase/auth': 0.20.5_@firebase+app@0.7.30 + '@firebase/app-compat': 0.1.32 + '@firebase/auth': 0.20.5_@firebase+app@0.7.31 '@firebase/auth-types': 0.11.0_pbfwexsq7uf6mrzcwnikj3g37m '@firebase/component': 0.5.17 '@firebase/util': 1.6.3 @@ -3183,15 +3208,6 @@ packages: - utf-8-validate dev: true - /@firebase/auth-interop-types/0.1.6_@firebase+util@1.6.3: - resolution: {integrity: sha512-etIi92fW3CctsmR9e3sYM3Uqnoq861M0Id9mdOPF6PWIg38BXL5k4upCNBggGUpLIS0H1grMOvy/wn1xymwe2g==} - peerDependencies: - '@firebase/app-types': 0.x - '@firebase/util': 1.x - dependencies: - '@firebase/util': 1.6.3 - dev: false - /@firebase/auth-interop-types/0.1.6_pbfwexsq7uf6mrzcwnikj3g37m: resolution: {integrity: sha512-etIi92fW3CctsmR9e3sYM3Uqnoq861M0Id9mdOPF6PWIg38BXL5k4upCNBggGUpLIS0H1grMOvy/wn1xymwe2g==} peerDependencies: @@ -3200,7 +3216,6 @@ packages: dependencies: '@firebase/app-types': 0.7.0 '@firebase/util': 1.6.3 - dev: true /@firebase/auth-types/0.11.0_pbfwexsq7uf6mrzcwnikj3g37m: resolution: {integrity: sha512-q7Bt6cx+ySj9elQHTsKulwk3+qDezhzRBFC9zlQ1BjgMueUOnGMcvqmU0zuKlQ4RhLSH7MNAdBV2znVaoN3Vxw==} @@ -3212,12 +3227,12 @@ packages: '@firebase/util': 1.6.3 dev: true - /@firebase/auth/0.20.5_@firebase+app@0.7.30: + /@firebase/auth/0.20.5_@firebase+app@0.7.31: resolution: {integrity: sha512-SbKj7PCAuL0lXEToUOoprc1im2Lr/bzOePXyPC7WWqVgdVBt0qovbfejlzKYwJLHUAPg9UW1y3XYe3IlbXr77w==} peerDependencies: '@firebase/app': 0.x dependencies: - '@firebase/app': 0.7.30 + '@firebase/app': 0.7.31 '@firebase/component': 0.5.17 '@firebase/logger': 0.3.3 '@firebase/util': 1.6.3 @@ -3236,11 +3251,11 @@ packages: '@firebase/util': 1.6.3 tslib: 2.4.0 - /@firebase/database-compat/0.2.4: + /@firebase/database-compat/0.2.4_@firebase+app-types@0.7.0: resolution: {integrity: sha512-VtsGixO5mTjNMJn6PwxAJEAR70fj+3blCXIdQKel3q+eYGZAfdqxox1+tzZDnf9NWBJpaOgAHPk3JVDxEo9NFQ==} dependencies: '@firebase/component': 0.5.17 - '@firebase/database': 0.13.4 + '@firebase/database': 0.13.4_@firebase+app-types@0.7.0 '@firebase/database-types': 0.9.12 '@firebase/logger': 0.3.3 '@firebase/util': 1.6.3 @@ -3249,12 +3264,12 @@ packages: - '@firebase/app-types' dev: false - /@firebase/database-compat/0.2.4_@firebase+app-types@0.7.0: - resolution: {integrity: sha512-VtsGixO5mTjNMJn6PwxAJEAR70fj+3blCXIdQKel3q+eYGZAfdqxox1+tzZDnf9NWBJpaOgAHPk3JVDxEo9NFQ==} + /@firebase/database-compat/0.2.5_@firebase+app-types@0.7.0: + resolution: {integrity: sha512-fj88gwtNJMcJBDjcTMbCuYEiVzuGb76rTOaaiAOqxR+unzvvbs2KU5KbFyl83jcpIjY6NIt+xXNrCXpzo7Zp3g==} dependencies: '@firebase/component': 0.5.17 - '@firebase/database': 0.13.4_@firebase+app-types@0.7.0 - '@firebase/database-types': 0.9.12 + '@firebase/database': 0.13.5_@firebase+app-types@0.7.0 + '@firebase/database-types': 0.9.13 '@firebase/logger': 0.3.3 '@firebase/util': 1.6.3 tslib: 2.4.0 @@ -3274,22 +3289,30 @@ packages: dependencies: '@firebase/app-types': 0.7.0 '@firebase/util': 1.6.3 - - /@firebase/database/0.13.4: - resolution: {integrity: sha512-NW7bOoiaC4sJCj6DY/m9xHoFNa0CK32YPMCh6FiMweLCDQbOZM8Ql/Kn6yyuxCb7K7ypz9eSbRlCWQJsJRQjhg==} - dependencies: - '@firebase/auth-interop-types': 0.1.6_@firebase+util@1.6.3 - '@firebase/component': 0.5.17 - '@firebase/logger': 0.3.3 - '@firebase/util': 1.6.3 - faye-websocket: 0.11.4 - tslib: 2.4.0 - transitivePeerDependencies: - - '@firebase/app-types' dev: false + /@firebase/database-types/0.9.13: + resolution: {integrity: sha512-dIJ1zGe3EHMhwcvukTOPzYlFYFIG1Et5Znl7s7y/ZTN2/toARRNnsv1qCKvqevIMYKvIrRsYOYfOXDS8l1YIJA==} + dependencies: + '@firebase/app-types': 0.7.0 + '@firebase/util': 1.6.3 + dev: true + /@firebase/database/0.13.4_@firebase+app-types@0.7.0: resolution: {integrity: sha512-NW7bOoiaC4sJCj6DY/m9xHoFNa0CK32YPMCh6FiMweLCDQbOZM8Ql/Kn6yyuxCb7K7ypz9eSbRlCWQJsJRQjhg==} + dependencies: + '@firebase/auth-interop-types': 0.1.6_pbfwexsq7uf6mrzcwnikj3g37m + '@firebase/component': 0.5.17 + '@firebase/logger': 0.3.3 + '@firebase/util': 1.6.3 + faye-websocket: 0.11.4 + tslib: 2.4.0 + transitivePeerDependencies: + - '@firebase/app-types' + dev: false + + /@firebase/database/0.13.5_@firebase+app-types@0.7.0: + resolution: {integrity: sha512-QmX73yi8URk36NAbykXeuAcJCjDtx3BzuxKJO3sL9B4CtjNFAfpWawVxoaaThocDWNAyMJxFhiL1kkaVraH7Lg==} dependencies: '@firebase/auth-interop-types': 0.1.6_pbfwexsq7uf6mrzcwnikj3g37m '@firebase/component': 0.5.17 @@ -3301,14 +3324,14 @@ packages: - '@firebase/app-types' dev: true - /@firebase/firestore-compat/0.1.23_53yvy43rwpg2c45kgeszsxtrca: + /@firebase/firestore-compat/0.1.23_kg6iqletipudcxzgqetrtqyldy: resolution: {integrity: sha512-QfcuyMAavp//fQnjSfCEpnbWi7spIdKaXys1kOLu7395fLr+U6ykmto1HUMCSz8Yus9cEr/03Ujdi2SUl2GUAA==} peerDependencies: '@firebase/app-compat': 0.x dependencies: - '@firebase/app-compat': 0.1.31 + '@firebase/app-compat': 0.1.32 '@firebase/component': 0.5.17 - '@firebase/firestore': 3.4.14_@firebase+app@0.7.30 + '@firebase/firestore': 3.4.14_@firebase+app@0.7.31 '@firebase/firestore-types': 2.5.0_pbfwexsq7uf6mrzcwnikj3g37m '@firebase/util': 1.6.3 tslib: 2.4.0 @@ -3328,13 +3351,13 @@ packages: '@firebase/util': 1.6.3 dev: true - /@firebase/firestore/3.4.14_@firebase+app@0.7.30: + /@firebase/firestore/3.4.14_@firebase+app@0.7.31: resolution: {integrity: sha512-F4Pqd5OUBtJaAWWC39C0vrMLIdZtx7jsO7sARFHSiOZY/8bikfH9YovIRkpxk7OSs3HT/SgVdK0B1vISGNSnJA==} engines: {node: '>=10.10.0'} peerDependencies: '@firebase/app': 0.x dependencies: - '@firebase/app': 0.7.30 + '@firebase/app': 0.7.31 '@firebase/component': 0.5.17 '@firebase/logger': 0.3.3 '@firebase/util': 1.6.3 @@ -3347,14 +3370,14 @@ packages: - encoding dev: true - /@firebase/functions-compat/0.2.4_53yvy43rwpg2c45kgeszsxtrca: + /@firebase/functions-compat/0.2.4_kg6iqletipudcxzgqetrtqyldy: resolution: {integrity: sha512-Crfn6il1yXGuXkjSd8nKrqR4XxPvuP19g64bXpM6Ix67qOkQg676kyOuww0FF17xN0NSXHfG8Pyf+CUrx8wJ5g==} peerDependencies: '@firebase/app-compat': 0.x dependencies: - '@firebase/app-compat': 0.1.31 + '@firebase/app-compat': 0.1.32 '@firebase/component': 0.5.17 - '@firebase/functions': 0.8.4_54flq6t3lt2vkv56b3wekvuqsq + '@firebase/functions': 0.8.4_lwgt3sk4yfjgasfpmvix4ixi2u '@firebase/functions-types': 0.5.0 '@firebase/util': 1.6.3 tslib: 2.4.0 @@ -3368,12 +3391,12 @@ packages: resolution: {integrity: sha512-qza0M5EwX+Ocrl1cYI14zoipUX4gI/Shwqv0C1nB864INAD42Dgv4v94BCyxGHBg2kzlWy8PNafdP7zPO8aJQA==} dev: true - /@firebase/functions/0.8.4_54flq6t3lt2vkv56b3wekvuqsq: + /@firebase/functions/0.8.4_lwgt3sk4yfjgasfpmvix4ixi2u: resolution: {integrity: sha512-o1bB0xMyQKe+b246zGnjwHj4R6BH4mU2ZrSaa/3QvTpahUQ3hqYfkZPLOXCU7+vEFxHb3Hd4UUjkFhxoAcPqLA==} peerDependencies: '@firebase/app': 0.x dependencies: - '@firebase/app': 0.7.30 + '@firebase/app': 0.7.31 '@firebase/app-check-interop-types': 0.1.0 '@firebase/auth-interop-types': 0.1.6_pbfwexsq7uf6mrzcwnikj3g37m '@firebase/component': 0.5.17 @@ -3386,14 +3409,14 @@ packages: - encoding dev: true - /@firebase/installations-compat/0.1.12_53yvy43rwpg2c45kgeszsxtrca: + /@firebase/installations-compat/0.1.12_kg6iqletipudcxzgqetrtqyldy: resolution: {integrity: sha512-BIhFpWIn/GkuOa+jnXkp3SDJT2RLYJF6MWpinHIBKFJs7MfrgYZ3zQ1AlhobDEql+bkD1dK4dB5sNcET2T+EyA==} peerDependencies: '@firebase/app-compat': 0.x dependencies: - '@firebase/app-compat': 0.1.31 + '@firebase/app-compat': 0.1.32 '@firebase/component': 0.5.17 - '@firebase/installations': 0.5.12_@firebase+app@0.7.30 + '@firebase/installations': 0.5.12_@firebase+app@0.7.31 '@firebase/installations-types': 0.4.0_@firebase+app-types@0.7.0 '@firebase/util': 1.6.3 tslib: 2.4.0 @@ -3410,12 +3433,12 @@ packages: '@firebase/app-types': 0.7.0 dev: true - /@firebase/installations/0.5.12_@firebase+app@0.7.30: + /@firebase/installations/0.5.12_@firebase+app@0.7.31: resolution: {integrity: sha512-Zq43fCE0PB5tGJ3ojzx5RNQzKdej1188qgAk22rwjuhP7npaG/PlJqDG1/V0ZjTLRePZ1xGrfXSPlA17c/vtNw==} peerDependencies: '@firebase/app': 0.x dependencies: - '@firebase/app': 0.7.30 + '@firebase/app': 0.7.31 '@firebase/component': 0.5.17 '@firebase/util': 1.6.3 idb: 7.0.1 @@ -3427,14 +3450,14 @@ packages: dependencies: tslib: 2.4.0 - /@firebase/messaging-compat/0.1.16_ntdu3hfexp42gsr3dmzonffheq: + /@firebase/messaging-compat/0.1.16_kowmy6vzi2xcdysg3n6ul4qaae: resolution: {integrity: sha512-uG7rWcXJzU8vvlEBFpwG1ndw/GURrrmKcwsHopEWbsPGjMRaVWa7XrdKbvIR7IZohqPzcC/V9L8EeqF4Q4lz8w==} peerDependencies: '@firebase/app-compat': 0.x dependencies: - '@firebase/app-compat': 0.1.31 + '@firebase/app-compat': 0.1.32 '@firebase/component': 0.5.17 - '@firebase/messaging': 0.9.16_@firebase+app@0.7.30 + '@firebase/messaging': 0.9.16_@firebase+app@0.7.31 '@firebase/util': 1.6.3 tslib: 2.4.0 transitivePeerDependencies: @@ -3445,29 +3468,29 @@ packages: resolution: {integrity: sha512-DbvUl/rXAZpQeKBnwz0NYY5OCqr2nFA0Bj28Fmr3NXGqR4PAkfTOHuQlVtLO1Nudo3q0HxAYLa68ZDAcuv2uKQ==} dev: true - /@firebase/messaging/0.9.16_@firebase+app@0.7.30: + /@firebase/messaging/0.9.16_@firebase+app@0.7.31: resolution: {integrity: sha512-Yl9gGrAvJF6C1gg3+Cr2HxlL6APsDEkrorkFafmSP1l+rg1epZKoOAcKJbSF02Vtb50wfb9FqGGy8tzodgETxg==} peerDependencies: '@firebase/app': 0.x dependencies: - '@firebase/app': 0.7.30 + '@firebase/app': 0.7.31 '@firebase/component': 0.5.17 - '@firebase/installations': 0.5.12_@firebase+app@0.7.30 + '@firebase/installations': 0.5.12_@firebase+app@0.7.31 '@firebase/messaging-interop-types': 0.1.0 '@firebase/util': 1.6.3 idb: 7.0.1 tslib: 2.4.0 dev: true - /@firebase/performance-compat/0.1.12_ntdu3hfexp42gsr3dmzonffheq: + /@firebase/performance-compat/0.1.12_kowmy6vzi2xcdysg3n6ul4qaae: resolution: {integrity: sha512-IBORzUeGY1MGdZnsix9Mu5z4+C3WHIwalu0usxvygL0EZKHztGG8bppYPGH/b5vvg8QyHs9U+Pn1Ot2jZhffQQ==} peerDependencies: '@firebase/app-compat': 0.x dependencies: - '@firebase/app-compat': 0.1.31 + '@firebase/app-compat': 0.1.32 '@firebase/component': 0.5.17 '@firebase/logger': 0.3.3 - '@firebase/performance': 0.5.12_@firebase+app@0.7.30 + '@firebase/performance': 0.5.12_@firebase+app@0.7.31 '@firebase/performance-types': 0.1.0 '@firebase/util': 1.6.3 tslib: 2.4.0 @@ -3479,36 +3502,28 @@ packages: resolution: {integrity: sha512-6p1HxrH0mpx+622Ql6fcxFxfkYSBpE3LSuwM7iTtYU2nw91Hj6THC8Bc8z4nboIq7WvgsT/kOTYVVZzCSlXl8w==} dev: true - /@firebase/performance/0.5.12_@firebase+app@0.7.30: + /@firebase/performance/0.5.12_@firebase+app@0.7.31: resolution: {integrity: sha512-MPVTkOkGrm2SMQgI1FPNBm85y2pPqlPb6VDjIMCWkVpAr6G1IZzUT24yEMySRcIlK/Hh7/Qu1Nu5ASRzRuX6+Q==} peerDependencies: '@firebase/app': 0.x dependencies: - '@firebase/app': 0.7.30 + '@firebase/app': 0.7.31 '@firebase/component': 0.5.17 - '@firebase/installations': 0.5.12_@firebase+app@0.7.30 + '@firebase/installations': 0.5.12_@firebase+app@0.7.31 '@firebase/logger': 0.3.3 '@firebase/util': 1.6.3 tslib: 2.4.0 dev: true - /@firebase/polyfill/0.3.36: - resolution: {integrity: sha512-zMM9oSJgY6cT2jx3Ce9LYqb0eIpDE52meIzd/oe/y70F+v9u1LDqk5kUF5mf16zovGBWMNFmgzlsh6Wj0OsFtg==} - dependencies: - core-js: 3.6.5 - promise-polyfill: 8.1.3 - whatwg-fetch: 2.0.4 - dev: true - - /@firebase/remote-config-compat/0.1.12_ntdu3hfexp42gsr3dmzonffheq: + /@firebase/remote-config-compat/0.1.12_kowmy6vzi2xcdysg3n6ul4qaae: resolution: {integrity: sha512-Yz7Gtb2rLa7ykXZX9DnSTId8CXd++jFFLW3foUImrYwJEtWgLJc7gwkRfd1M73IlKGNuQAY+DpUNF0n1dLbecA==} peerDependencies: '@firebase/app-compat': 0.x dependencies: - '@firebase/app-compat': 0.1.31 + '@firebase/app-compat': 0.1.32 '@firebase/component': 0.5.17 '@firebase/logger': 0.3.3 - '@firebase/remote-config': 0.3.11_@firebase+app@0.7.30 + '@firebase/remote-config': 0.3.11_@firebase+app@0.7.31 '@firebase/remote-config-types': 0.2.0 '@firebase/util': 1.6.3 tslib: 2.4.0 @@ -3520,27 +3535,27 @@ packages: resolution: {integrity: sha512-hqK5sCPeZvcHQ1D6VjJZdW6EexLTXNMJfPdTwbD8NrXUw6UjWC4KWhLK/TSlL0QPsQtcKRkaaoP+9QCgKfMFPw==} dev: true - /@firebase/remote-config/0.3.11_@firebase+app@0.7.30: + /@firebase/remote-config/0.3.11_@firebase+app@0.7.31: resolution: {integrity: sha512-qA84dstrvVpO7rWT/sb2CLv1kjHVmz59SRFPKohJJYFBcPOGK4Pe4FWWhKAE9yg1Gnl0qYAGkahOwNawq3vE0g==} peerDependencies: '@firebase/app': 0.x dependencies: - '@firebase/app': 0.7.30 + '@firebase/app': 0.7.31 '@firebase/component': 0.5.17 - '@firebase/installations': 0.5.12_@firebase+app@0.7.30 + '@firebase/installations': 0.5.12_@firebase+app@0.7.31 '@firebase/logger': 0.3.3 '@firebase/util': 1.6.3 tslib: 2.4.0 dev: true - /@firebase/storage-compat/0.1.17_53yvy43rwpg2c45kgeszsxtrca: + /@firebase/storage-compat/0.1.17_kg6iqletipudcxzgqetrtqyldy: resolution: {integrity: sha512-nOYmnpI0gwoz5nROseMi9WbmHGf+xumfsOvdPyMZAjy0VqbDnpKIwmTUZQBdR+bLuB5oIkHQsvw9nbb1SH+PzQ==} peerDependencies: '@firebase/app-compat': 0.x dependencies: - '@firebase/app-compat': 0.1.31 + '@firebase/app-compat': 0.1.32 '@firebase/component': 0.5.17 - '@firebase/storage': 0.9.9_@firebase+app@0.7.30 + '@firebase/storage': 0.9.9_@firebase+app@0.7.31 '@firebase/storage-types': 0.6.0_pbfwexsq7uf6mrzcwnikj3g37m '@firebase/util': 1.6.3 tslib: 2.4.0 @@ -3560,12 +3575,12 @@ packages: '@firebase/util': 1.6.3 dev: true - /@firebase/storage/0.9.9_@firebase+app@0.7.30: + /@firebase/storage/0.9.9_@firebase+app@0.7.31: resolution: {integrity: sha512-Zch7srLT2SIh9y2nCVv/4Kne0HULn7OPkmreY70BJTUJ+g5WLRjggBq6x9fV5ls9V38iqMWfn4prxzX8yIc08A==} peerDependencies: '@firebase/app': 0.x dependencies: - '@firebase/app': 0.7.30 + '@firebase/app': 0.7.31 '@firebase/component': 0.5.17 '@firebase/util': 1.6.3 node-fetch: 2.6.7 @@ -3684,33 +3699,6 @@ packages: protobufjs: 6.11.3 yargs: 16.2.0 - /@headlessui/react/1.6.5_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-3VkKteDxlxf3fE0KbfO9t60KC1lM7YNpZggLpwzVNg1J/zwL+h+4N7MBlFDVpInZI3rKlZGpNx0PWsG/9c2vQg==} - engines: {node: '>=10'} - peerDependencies: - react: ^16 || ^17 || ^18 - react-dom: ^16 || ^17 || ^18 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - dependencies: - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - dev: true - - /@heroicons/react/1.0.6_react@18.2.0: - resolution: {integrity: sha512-JJCXydOFWMDpCP4q13iEplA503MQO3xLoZiKum+955ZCtHINWnx26CUxVxxFQu/uLb4LW3ge15ZpzIkXKkJ8oQ==} - peerDependencies: - react: '>= 16' - peerDependenciesMeta: - react: - optional: true - dependencies: - react: 18.2.0 - dev: true - /@humanwhocodes/config-array/0.9.5: resolution: {integrity: sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==} engines: {node: '>=10.10.0'} @@ -3747,7 +3735,7 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 18.0.1 + '@types/node': 18.7.13 chalk: 4.1.2 jest-message-util: 27.5.1 jest-util: 27.5.1 @@ -3759,7 +3747,7 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@jest/types': 28.1.1 - '@types/node': 18.0.1 + '@types/node': 18.7.13 chalk: 4.1.2 jest-message-util: 28.1.1 jest-util: 28.1.1 @@ -3780,14 +3768,14 @@ packages: '@jest/test-result': 28.1.1 '@jest/transform': 28.1.2 '@jest/types': 28.1.1 - '@types/node': 18.0.1 + '@types/node': 18.7.13 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.3.2 exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 28.0.2 - jest-config: 28.1.2_hxaxlvfys2pc3hefxwkmyo5cpq + jest-config: 28.1.2_3glepa5322b7j342guju4hszoy jest-haste-map: 28.1.1 jest-message-util: 28.1.1 jest-regex-util: 28.0.2 @@ -3822,7 +3810,7 @@ packages: dependencies: '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.0.1 + '@types/node': 18.7.13 jest-mock: 27.5.1 dev: true @@ -3832,7 +3820,7 @@ packages: dependencies: '@jest/fake-timers': 28.1.2 '@jest/types': 28.1.1 - '@types/node': 18.0.1 + '@types/node': 18.7.13 jest-mock: 28.1.1 dev: true @@ -3859,7 +3847,7 @@ packages: dependencies: '@jest/types': 27.5.1 '@sinonjs/fake-timers': 8.1.0 - '@types/node': 18.0.1 + '@types/node': 18.7.13 jest-message-util: 27.5.1 jest-mock: 27.5.1 jest-util: 27.5.1 @@ -3871,7 +3859,7 @@ packages: dependencies: '@jest/types': 28.1.1 '@sinonjs/fake-timers': 9.1.2 - '@types/node': 18.0.1 + '@types/node': 18.7.13 jest-message-util: 28.1.1 jest-mock: 28.1.1 jest-util: 28.1.1 @@ -3911,8 +3899,8 @@ packages: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.0.1 - chalk: 4.1.0 + '@types/node': 18.7.13 + chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 glob: 7.2.3 @@ -3950,7 +3938,7 @@ packages: '@jest/transform': 28.1.2 '@jest/types': 28.1.1 '@jridgewell/trace-mapping': 0.3.14 - '@types/node': 18.0.1 + '@types/node': 18.7.13 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -4092,7 +4080,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.0.1 + '@types/node': 18.7.13 '@types/yargs': 16.0.4 chalk: 4.1.2 dev: true @@ -4104,7 +4092,7 @@ packages: '@jest/schemas': 28.0.2 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.0.1 + '@types/node': 18.7.13 '@types/yargs': 17.0.10 chalk: 4.1.2 dev: true @@ -4258,13 +4246,52 @@ packages: '@lezer/lr': 1.2.0 dev: false + /@mdx-js/loader/2.1.3_webpack@5.74.0: + resolution: {integrity: sha512-7LtklcfzZC9aWWFREop0ivemhwcp/cke2tICHEhnDyGn+hTg7LIbWCfSos68kJv9w7Z47KYfNcg9/8zBD+8eXA==} + peerDependencies: + webpack: '>=4' + peerDependenciesMeta: + webpack: + optional: true + dependencies: + '@mdx-js/mdx': 2.1.3 + source-map: 0.7.4 + webpack: 5.74.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@mdx-js/mdx/2.1.3: + resolution: {integrity: sha512-ahbb47HJIJ4xnifaL06tDJiSyLEy1EhFAStO7RZIm3GTa7yGW3NGhZaj+GUCveFgl5oI54pY4BgiLmYm97y+zg==} + dependencies: + '@types/estree-jsx': 1.0.0 + '@types/mdx': 2.0.2 + estree-util-build-jsx: 2.2.0 + estree-util-is-identifier-name: 2.0.1 + estree-util-to-js: 1.1.0 + estree-walker: 3.0.1 + hast-util-to-estree: 2.1.0 + markdown-extensions: 1.1.1 + periscopic: 3.0.4 + remark-mdx: 2.1.3 + remark-parse: 10.0.1 + remark-rehype: 10.1.0 + unified: 10.1.2 + unist-util-position-from-estree: 1.1.1 + unist-util-stringify-position: 3.0.2 + unist-util-visit: 4.1.1 + vfile: 5.3.4 + transitivePeerDependencies: + - supports-color + dev: true + /@mui/base/5.0.0-alpha.88: resolution: {integrity: sha512-uL7ej2F/3GUnZewsDQSHUVHoSBT3AQcTIdfdy6QeCHy7X26mtbcIvTRcjl2PzbbNQplppavSTibPiQG/giJ+ng==} engines: {node: '>=12.0.0'} peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 + '@types/react': ^17.0.0 || ^18.0.0 || 18 + react: ^17.0.0 || ^18.0.0 || 18 + react-dom: ^17.0.0 || ^18.0.0 || 18 peerDependenciesMeta: '@types/react': optional: true @@ -4278,18 +4305,18 @@ packages: '@mui/types': 7.1.4 '@mui/utils': 5.8.6 '@popperjs/core': 2.11.5 - clsx: 1.2.0 + clsx: 1.2.1 prop-types: 15.8.1 react-is: 17.0.2 dev: false - /@mui/base/5.0.0-alpha.88_twyhzqqpkwvvgrmyeapdo6i4my: + /@mui/base/5.0.0-alpha.88_zxljzmqdrxwnuenbkrz77w74uy: resolution: {integrity: sha512-uL7ej2F/3GUnZewsDQSHUVHoSBT3AQcTIdfdy6QeCHy7X26mtbcIvTRcjl2PzbbNQplppavSTibPiQG/giJ+ng==} engines: {node: '>=12.0.0'} peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 + '@types/react': ^17.0.0 || ^18.0.0 || 18 + react: ^17.0.0 || ^18.0.0 || 18 + react-dom: ^17.0.0 || ^18.0.0 || 18 peerDependenciesMeta: '@types/react': optional: true @@ -4300,24 +4327,24 @@ packages: dependencies: '@babel/runtime': 7.18.6 '@emotion/is-prop-valid': 1.1.3 - '@mui/types': 7.1.4_@types+react@18.0.14 + '@mui/types': 7.1.4_@types+react@18.0.17 '@mui/utils': 5.8.6_react@18.2.0 '@popperjs/core': 2.11.5 - '@types/react': 18.0.14 - clsx: 1.2.0 + '@types/react': 18.0.17 + clsx: 1.2.1 prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 react-is: 17.0.2 dev: false - /@mui/base/5.0.0-alpha.92: - resolution: {integrity: sha512-ZgnSLrTXL4iUdLQhjp01dAOTQPQlnwrqjZRwDT3E6LZXEYn6cMv1MY6LZkWcF/zxrUnyasnsyMAgZ5d8AXS7bA==} + /@mui/base/5.0.0-alpha.94: + resolution: {integrity: sha512-IJXmgTF07H1Iv5zjDV7zJZGUmb9cN8ERzd2dgA1akh6NWZgwyIGyQx+Au9+QSDoM5vN3FqZvU/0YCU6inUwgeQ==} engines: {node: '>=12.0.0'} peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 + '@types/react': ^17.0.0 || ^18.0.0 || 18 + react: ^17.0.0 || ^18.0.0 || 18 + react-dom: ^17.0.0 || ^18.0.0 || 18 peerDependenciesMeta: '@types/react': optional: true @@ -4330,19 +4357,23 @@ packages: '@emotion/is-prop-valid': 1.2.0 '@mui/types': 7.1.5 '@mui/utils': 5.9.3 - '@popperjs/core': 2.11.5 + '@popperjs/core': 2.11.6 clsx: 1.2.1 prop-types: 15.8.1 react-is: 18.2.0 dev: false + /@mui/core-downloads-tracker/5.10.2: + resolution: {integrity: sha512-1guoGvL3QZ7VjA3y9zye9Rpm+jz18rVZIo3AauTGyW5ntDMxr/cR0M18nuc/NH2KqpMt+coh4NwPEO1uPuKM5w==} + dev: false + /@mui/icons-material/5.8.4: resolution: {integrity: sha512-9Z/vyj2szvEhGWDvb+gG875bOGm8b8rlHBKOD1+nA3PcgC3fV6W1AU6pfOorPeBfH2X4mb9Boe97vHvaSndQvA==} engines: {node: '>=12.0.0'} peerDependencies: '@mui/material': ^5.0.0 - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 + '@types/react': ^17.0.0 || ^18.0.0 || 18 + react: ^17.0.0 || ^18.0.0 || 18 peerDependenciesMeta: '@mui/material': optional: true @@ -4359,8 +4390,8 @@ packages: engines: {node: '>=12.0.0'} peerDependencies: '@mui/material': ^5.0.0 - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 + '@types/react': ^17.0.0 || ^18.0.0 || 18 + react: ^17.0.0 || ^18.0.0 || 18 peerDependenciesMeta: '@mui/material': optional: true @@ -4373,13 +4404,13 @@ packages: '@mui/material': 5.8.7_d6menda4vqwq6peqnkbe7mkj4i dev: false - /@mui/icons-material/5.8.4_vdnh4jyrnjwcar5vg6k35n5t6e: + /@mui/icons-material/5.8.4_wip2cf6yrkxu2zuyrl3lmpbdaa: resolution: {integrity: sha512-9Z/vyj2szvEhGWDvb+gG875bOGm8b8rlHBKOD1+nA3PcgC3fV6W1AU6pfOorPeBfH2X4mb9Boe97vHvaSndQvA==} engines: {node: '>=12.0.0'} peerDependencies: '@mui/material': ^5.0.0 - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 + '@types/react': ^17.0.0 || ^18.0.0 || 18 + react: ^17.0.0 || ^18.0.0 || 18 peerDependenciesMeta: '@mui/material': optional: true @@ -4389,20 +4420,20 @@ packages: optional: true dependencies: '@babel/runtime': 7.18.6 - '@mui/material': 5.8.7_h2u6a3oivtyocvjxeke7xcvlfa - '@types/react': 18.0.14 + '@mui/material': 5.8.7_mugunlselc52kyz7qt5aa5ixva + '@types/react': 18.0.17 react: 18.2.0 dev: false - /@mui/joy/5.0.0-alpha.39_72v32ofbtgpmxm7mhvtx474vfu: - resolution: {integrity: sha512-F/cjEwvH9UFxIRJ30P8fuGOEDtgDBJCd++yTq8JYXARGCSlUMtbpijkPvnYFz69j3BtHCDhSaz3JA0cxcwVjaQ==} + /@mui/joy/5.0.0-alpha.42_72v32ofbtgpmxm7mhvtx474vfu: + resolution: {integrity: sha512-9AvkBuGWIPB8v4kaa3hde5saGgUo8chpczVC6TCpWIoFAuQsLM+QWQzW7TpXD0j72FhOgcwsIaj8LSiJVTjbRQ==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 '@emotion/styled': ^11.3.0 - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 + '@types/react': ^17.0.0 || ^18.0.0 || 18 + react: ^17.0.0 || ^18.0.0 || 18 + react-dom: ^17.0.0 || ^18.0.0 || 18 peerDependenciesMeta: '@emotion/react': optional: true @@ -4418,8 +4449,9 @@ packages: '@babel/runtime': 7.18.6 '@emotion/react': 11.10.0 '@emotion/styled': 11.10.0_@emotion+react@11.10.0 - '@mui/base': 5.0.0-alpha.92 - '@mui/system': 5.9.3_72v32ofbtgpmxm7mhvtx474vfu + '@mui/base': 5.0.0-alpha.94 + '@mui/core-downloads-tracker': 5.10.2 + '@mui/system': 5.10.2_72v32ofbtgpmxm7mhvtx474vfu '@mui/types': 7.1.5 '@mui/utils': 5.9.3 clsx: 1.2.1 @@ -4434,9 +4466,9 @@ packages: peerDependencies: '@emotion/react': ^11.5.0 '@emotion/styled': ^11.3.0 - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 + '@types/react': ^17.0.0 || ^18.0.0 || 18 + react: ^17.0.0 || ^18.0.0 || 18 + react-dom: ^17.0.0 || ^18.0.0 || 18 peerDependenciesMeta: '@emotion/react': optional: true @@ -4457,22 +4489,22 @@ packages: '@mui/types': 7.1.4 '@mui/utils': 5.8.6 '@types/react-transition-group': 4.4.5 - clsx: 1.2.0 + clsx: 1.2.1 csstype: 3.1.0 prop-types: 15.8.1 react-is: 17.0.2 react-transition-group: 4.4.2 dev: false - /@mui/material/5.8.7_h2u6a3oivtyocvjxeke7xcvlfa: + /@mui/material/5.8.7_mugunlselc52kyz7qt5aa5ixva: resolution: {integrity: sha512-Oo62UhrgEi+BMLr3nUEASJgScE2/hhq14CbBUmrVV3GQlEGtqMZsy26Vb0AqEmphFeN3TXlsbM9aeW5yq8ZFlw==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 '@emotion/styled': ^11.3.0 - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 + '@types/react': ^17.0.0 || ^18.0.0 || 18 + react: ^17.0.0 || ^18.0.0 || 18 + react-dom: ^17.0.0 || ^18.0.0 || 18 peerDependenciesMeta: '@emotion/react': optional: true @@ -4486,15 +4518,15 @@ packages: optional: true dependencies: '@babel/runtime': 7.18.6 - '@emotion/react': 11.9.3_4jaruczdv2uxjj3lb2xbkiuci4 - '@emotion/styled': 11.9.3_toiz7tndcw4z2b7gxmmeo5fkcu - '@mui/base': 5.0.0-alpha.88_twyhzqqpkwvvgrmyeapdo6i4my - '@mui/system': 5.8.7_2n63gx4a5hafw7crejwh35wbou - '@mui/types': 7.1.4_@types+react@18.0.14 + '@emotion/react': 11.9.3_aev5mndowrsc2o4rquiaswzsei + '@emotion/styled': 11.9.3_lzq4tq5osthlqcqhyhuicy5gfy + '@mui/base': 5.0.0-alpha.88_zxljzmqdrxwnuenbkrz77w74uy + '@mui/system': 5.8.7_q75tbj2u2psqs4y633sohfsc6i + '@mui/types': 7.1.4_@types+react@18.0.17 '@mui/utils': 5.8.6_react@18.2.0 - '@types/react': 18.0.14 + '@types/react': 18.0.17 '@types/react-transition-group': 4.4.5 - clsx: 1.2.0 + clsx: 1.2.1 csstype: 3.1.0 prop-types: 15.8.1 react: 18.2.0 @@ -4507,8 +4539,8 @@ packages: resolution: {integrity: sha512-yHsJk1qU9r/q0DlnxGRJPHyM0Y/nUv8FTNgDTiI9I58GWuVuZqeTUr7JRvPh6ybeP/FLtW5eXEavRK9wxVk4uQ==} engines: {node: '>=12.0.0'} peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 + '@types/react': ^17.0.0 || ^18.0.0 || 18 + react: ^17.0.0 || ^18.0.0 || 18 peerDependenciesMeta: '@types/react': optional: true @@ -4520,12 +4552,12 @@ packages: prop-types: 15.8.1 dev: false - /@mui/private-theming/5.8.6_luyos4mouogwq6z3wafb3re4ce: + /@mui/private-theming/5.8.6_ug65io7jkbhmo4fihdmbrh3ina: resolution: {integrity: sha512-yHsJk1qU9r/q0DlnxGRJPHyM0Y/nUv8FTNgDTiI9I58GWuVuZqeTUr7JRvPh6ybeP/FLtW5eXEavRK9wxVk4uQ==} engines: {node: '>=12.0.0'} peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 + '@types/react': ^17.0.0 || ^18.0.0 || 18 + react: ^17.0.0 || ^18.0.0 || 18 peerDependenciesMeta: '@types/react': optional: true @@ -4534,7 +4566,7 @@ packages: dependencies: '@babel/runtime': 7.18.6 '@mui/utils': 5.8.6_react@18.2.0 - '@types/react': 18.0.14 + '@types/react': 18.0.17 prop-types: 15.8.1 react: 18.2.0 dev: false @@ -4543,8 +4575,8 @@ packages: resolution: {integrity: sha512-Ys3WO39WqoGciGX9k5AIi/k2zJhlydv4FzlEEwtw9OqdMaV0ydK/TdZekKzjP9sTI/JcdAP3H5DWtUaPLQJjWg==} engines: {node: '>=12.0.0'} peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 + '@types/react': ^17.0.0 || ^18.0.0 || 18 + react: ^17.0.0 || ^18.0.0 || 18 peerDependenciesMeta: '@types/react': optional: true @@ -4556,13 +4588,13 @@ packages: prop-types: 15.8.1 dev: false - /@mui/styled-engine/5.8.7_72v32ofbtgpmxm7mhvtx474vfu: - resolution: {integrity: sha512-tVqtowjbYmiRq+qcqXK731L9eWoL9H8xTRhuTgaDGKdch1zlt4I2UwInUe1w2N9N/u3/jHsFbLcl1Un3uOwpQg==} + /@mui/styled-engine/5.10.2_72v32ofbtgpmxm7mhvtx474vfu: + resolution: {integrity: sha512-YqnptNQ2E0cWwOTmLCEvrddiiR/neUfn2AD/4TDUXZu8B2n7NfDb9d3bAUfWZV+KmulQdAedoaZDqyXBFGLdbQ==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.4.1 '@emotion/styled': ^11.3.0 - react: ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 || 18 peerDependenciesMeta: '@emotion/react': optional: true @@ -4572,20 +4604,43 @@ packages: optional: true dependencies: '@babel/runtime': 7.18.6 - '@emotion/cache': 11.9.3 + '@emotion/cache': 11.10.1 '@emotion/react': 11.10.0 '@emotion/styled': 11.10.0_@emotion+react@11.10.0 csstype: 3.1.0 prop-types: 15.8.1 dev: false + /@mui/styled-engine/5.10.2_d6menda4vqwq6peqnkbe7mkj4i: + resolution: {integrity: sha512-YqnptNQ2E0cWwOTmLCEvrddiiR/neUfn2AD/4TDUXZu8B2n7NfDb9d3bAUfWZV+KmulQdAedoaZDqyXBFGLdbQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.4.1 + '@emotion/styled': ^11.3.0 + react: ^17.0.0 || ^18.0.0 || 18 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + react: + optional: true + dependencies: + '@babel/runtime': 7.18.6 + '@emotion/cache': 11.10.1 + '@emotion/react': 11.9.3 + '@emotion/styled': 11.9.3_@emotion+react@11.9.3 + csstype: 3.1.0 + prop-types: 15.8.1 + dev: false + /@mui/styled-engine/5.8.7_d6menda4vqwq6peqnkbe7mkj4i: resolution: {integrity: sha512-tVqtowjbYmiRq+qcqXK731L9eWoL9H8xTRhuTgaDGKdch1zlt4I2UwInUe1w2N9N/u3/jHsFbLcl1Un3uOwpQg==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.4.1 '@emotion/styled': ^11.3.0 - react: ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 || 18 peerDependenciesMeta: '@emotion/react': optional: true @@ -4596,8 +4651,8 @@ packages: dependencies: '@babel/runtime': 7.18.6 '@emotion/cache': 11.9.3 - '@emotion/react': 11.9.3 - '@emotion/styled': 11.9.3_@emotion+react@11.9.3 + '@emotion/react': 11.9.3_@babel+core@7.18.6 + '@emotion/styled': 11.9.3_dc5dh2wp562rsjxvguwi2i3yzq csstype: 3.1.0 prop-types: 15.8.1 dev: false @@ -4608,7 +4663,7 @@ packages: peerDependencies: '@emotion/react': ^11.4.1 '@emotion/styled': ^11.3.0 - react: ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 || 18 peerDependenciesMeta: '@emotion/react': optional: true @@ -4619,21 +4674,21 @@ packages: dependencies: '@babel/runtime': 7.18.6 '@emotion/cache': 11.9.3 - '@emotion/react': 11.9.3_4jaruczdv2uxjj3lb2xbkiuci4 - '@emotion/styled': 11.9.3_toiz7tndcw4z2b7gxmmeo5fkcu + '@emotion/react': 11.9.3_aev5mndowrsc2o4rquiaswzsei + '@emotion/styled': 11.9.3_lzq4tq5osthlqcqhyhuicy5gfy csstype: 3.1.0 prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/system/5.8.7_2n63gx4a5hafw7crejwh35wbou: - resolution: {integrity: sha512-yFoFbfO42FWeSUDrFPixYjpqySQMqVMOSbSlAxiKnwFpvXGGn/bkfQTboCRNO31fvES29FJLQd4mwwMHd5mXng==} + /@mui/system/5.10.2_72v32ofbtgpmxm7mhvtx474vfu: + resolution: {integrity: sha512-YudwJhLcEoQiwCAmzeMr9P3ISiVGNsxBIIPzFxaGwJ8+mMrx3qoPVOV2sfm0ZuNiQuABshEw4KqHa5ftNC+pOQ==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 '@emotion/styled': ^11.3.0 - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 + '@types/react': ^17.0.0 || ^18.0.0 || 18 + react: ^17.0.0 || ^18.0.0 || 18 peerDependenciesMeta: '@emotion/react': optional: true @@ -4645,17 +4700,45 @@ packages: optional: true dependencies: '@babel/runtime': 7.18.6 - '@emotion/react': 11.9.3_4jaruczdv2uxjj3lb2xbkiuci4 - '@emotion/styled': 11.9.3_toiz7tndcw4z2b7gxmmeo5fkcu - '@mui/private-theming': 5.8.6_luyos4mouogwq6z3wafb3re4ce - '@mui/styled-engine': 5.8.7_fdnqutfacy7v3gmlcm66flps3q - '@mui/types': 7.1.4_@types+react@18.0.14 - '@mui/utils': 5.8.6_react@18.2.0 - '@types/react': 18.0.14 - clsx: 1.2.0 + '@emotion/react': 11.10.0 + '@emotion/styled': 11.10.0_@emotion+react@11.10.0 + '@mui/private-theming': 5.9.3 + '@mui/styled-engine': 5.10.2_72v32ofbtgpmxm7mhvtx474vfu + '@mui/types': 7.1.5 + '@mui/utils': 5.9.3 + clsx: 1.2.1 + csstype: 3.1.0 + prop-types: 15.8.1 + dev: false + + /@mui/system/5.10.2_d6menda4vqwq6peqnkbe7mkj4i: + resolution: {integrity: sha512-YudwJhLcEoQiwCAmzeMr9P3ISiVGNsxBIIPzFxaGwJ8+mMrx3qoPVOV2sfm0ZuNiQuABshEw4KqHa5ftNC+pOQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.5.0 + '@emotion/styled': ^11.3.0 + '@types/react': ^17.0.0 || ^18.0.0 || 18 + react: ^17.0.0 || ^18.0.0 || 18 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + '@types/react': + optional: true + react: + optional: true + dependencies: + '@babel/runtime': 7.18.6 + '@emotion/react': 11.9.3 + '@emotion/styled': 11.9.3_@emotion+react@11.9.3 + '@mui/private-theming': 5.9.3 + '@mui/styled-engine': 5.10.2_d6menda4vqwq6peqnkbe7mkj4i + '@mui/types': 7.1.5 + '@mui/utils': 5.9.3 + clsx: 1.2.1 csstype: 3.1.0 prop-types: 15.8.1 - react: 18.2.0 dev: false /@mui/system/5.8.7_d6menda4vqwq6peqnkbe7mkj4i: @@ -4664,8 +4747,8 @@ packages: peerDependencies: '@emotion/react': ^11.5.0 '@emotion/styled': ^11.3.0 - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 + '@types/react': ^17.0.0 || ^18.0.0 || 18 + react: ^17.0.0 || ^18.0.0 || 18 peerDependenciesMeta: '@emotion/react': optional: true @@ -4688,14 +4771,14 @@ packages: prop-types: 15.8.1 dev: false - /@mui/system/5.9.3_72v32ofbtgpmxm7mhvtx474vfu: - resolution: {integrity: sha512-EXQV2POwncstHLYII+G4VSYdEFun1TjBbQSBDK76DbIkug8nPjtjAZ+3Kgk3/NoFIigW+vQ9cDVUZtlbRH6YMQ==} + /@mui/system/5.8.7_q75tbj2u2psqs4y633sohfsc6i: + resolution: {integrity: sha512-yFoFbfO42FWeSUDrFPixYjpqySQMqVMOSbSlAxiKnwFpvXGGn/bkfQTboCRNO31fvES29FJLQd4mwwMHd5mXng==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 '@emotion/styled': ^11.3.0 - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 + '@types/react': ^17.0.0 || ^18.0.0 || 18 + react: ^17.0.0 || ^18.0.0 || 18 peerDependenciesMeta: '@emotion/react': optional: true @@ -4707,45 +4790,17 @@ packages: optional: true dependencies: '@babel/runtime': 7.18.6 - '@emotion/react': 11.10.0 - '@emotion/styled': 11.10.0_@emotion+react@11.10.0 - '@mui/private-theming': 5.9.3 - '@mui/styled-engine': 5.8.7_72v32ofbtgpmxm7mhvtx474vfu - '@mui/types': 7.1.5 - '@mui/utils': 5.9.3 - clsx: 1.2.1 - csstype: 3.1.0 - prop-types: 15.8.1 - dev: false - - /@mui/system/5.9.3_d6menda4vqwq6peqnkbe7mkj4i: - resolution: {integrity: sha512-EXQV2POwncstHLYII+G4VSYdEFun1TjBbQSBDK76DbIkug8nPjtjAZ+3Kgk3/NoFIigW+vQ9cDVUZtlbRH6YMQ==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@emotion/react': ^11.5.0 - '@emotion/styled': ^11.3.0 - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@emotion/react': - optional: true - '@emotion/styled': - optional: true - '@types/react': - optional: true - react: - optional: true - dependencies: - '@babel/runtime': 7.18.6 - '@emotion/react': 11.9.3 - '@emotion/styled': 11.9.3_@emotion+react@11.9.3 - '@mui/private-theming': 5.9.3 - '@mui/styled-engine': 5.8.7_d6menda4vqwq6peqnkbe7mkj4i - '@mui/types': 7.1.5 - '@mui/utils': 5.9.3 - clsx: 1.2.1 + '@emotion/react': 11.9.3_aev5mndowrsc2o4rquiaswzsei + '@emotion/styled': 11.9.3_lzq4tq5osthlqcqhyhuicy5gfy + '@mui/private-theming': 5.8.6_ug65io7jkbhmo4fihdmbrh3ina + '@mui/styled-engine': 5.8.7_fdnqutfacy7v3gmlcm66flps3q + '@mui/types': 7.1.4_@types+react@18.0.17 + '@mui/utils': 5.8.6_react@18.2.0 + '@types/react': 18.0.17 + clsx: 1.2.0 csstype: 3.1.0 prop-types: 15.8.1 + react: 18.2.0 dev: false /@mui/types/7.1.4: @@ -4757,7 +4812,7 @@ packages: optional: true dev: false - /@mui/types/7.1.4_@types+react@18.0.14: + /@mui/types/7.1.4_@types+react@18.0.17: resolution: {integrity: sha512-uveM3byMbthO+6tXZ1n2zm0W3uJCQYtwt/v5zV5I77v2v18u0ITkb8xwhsDD2i3V2Kye7SaNR6FFJ6lMuY/WqQ==} peerDependencies: '@types/react': '*' @@ -4765,7 +4820,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.0.14 + '@types/react': 18.0.17 dev: false /@mui/types/7.1.5: @@ -4781,7 +4836,7 @@ packages: resolution: {integrity: sha512-QM2Sd1xZo2jOt2Vz5Rmro+pi2FLJyiv4+OjxkUwXR3oUM65KSMAMLl/KNYU55s3W3DLRFP5MVwE4FhAbHseHAg==} engines: {node: '>=12.0.0'} peerDependencies: - react: ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 || 18 peerDependenciesMeta: react: optional: true @@ -4797,7 +4852,7 @@ packages: resolution: {integrity: sha512-QM2Sd1xZo2jOt2Vz5Rmro+pi2FLJyiv4+OjxkUwXR3oUM65KSMAMLl/KNYU55s3W3DLRFP5MVwE4FhAbHseHAg==} engines: {node: '>=12.0.0'} peerDependencies: - react: ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 || 18 peerDependenciesMeta: react: optional: true @@ -4814,7 +4869,7 @@ packages: resolution: {integrity: sha512-l0N5bcrenE9hnwZ/jPecpIRqsDFHkPXoFUcmkgysaJwVZzJ3yQkGXB47eqmXX5yyGrSc6HksbbqXEaUya+siew==} engines: {node: '>=12.0.0'} peerDependencies: - react: ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 || 18 peerDependenciesMeta: react: optional: true @@ -4826,14 +4881,14 @@ packages: react-is: 18.2.0 dev: false - /@mui/x-data-grid/5.12.3_7ff6pt5vb3e5jymp4h3bl3mztq: + /@mui/x-data-grid/5.12.3_d23hrjcoore4j5fpg35ldaa7fa: resolution: {integrity: sha512-57A2MkRR/uUNC/dECFV0YDJvi1Q+gQgmgw1OHmZ1uSnKh29PcHpswkdapO0LueLpxAy8tfH+fTtnnPDmYgJeUg==} engines: {node: '>=12.0.0'} peerDependencies: '@mui/material': ^5.4.1 '@mui/system': ^5.4.1 - react: ^17.0.2 || ^18.0.0 - react-dom: ^17.0.2 || ^18.0.0 + react: ^17.0.2 || ^18.0.0 || 18 + react-dom: ^17.0.2 || ^18.0.0 || 18 peerDependenciesMeta: '@mui/material': optional: true @@ -4844,14 +4899,14 @@ packages: dependencies: '@babel/runtime': 7.18.6 '@mui/material': 5.8.7_d6menda4vqwq6peqnkbe7mkj4i - '@mui/system': 5.9.3_d6menda4vqwq6peqnkbe7mkj4i + '@mui/system': 5.10.2_d6menda4vqwq6peqnkbe7mkj4i '@mui/utils': 5.8.6 clsx: 1.2.0 prop-types: 15.8.1 reselect: 4.1.6 dev: false - /@mui/x-date-pickers-pro/5.0.0-alpha.7_3ze6eywwrphmf4xmeajh7ll6xm: + /@mui/x-date-pickers-pro/5.0.0-alpha.7_k34ytkg6gx4xxob5q3piijp2ce: resolution: {integrity: sha512-Ni244FQNYmiPCGUS47E9FE5YYSTJZ4BxjUmQ8h2Mz0Ob+n+q2zXN+q2KzRjtuhBcH3w+VGjFD1zxvKxyAZkgbg==} engines: {node: '>=12.0.0'} peerDependencies: @@ -4861,7 +4916,7 @@ packages: dayjs: ^1.10.7 luxon: ^1.28.0 || ^2.0.0 moment: ^2.29.1 - react: ^17.0.2 || ^18.0.0 + react: ^17.0.2 || ^18.0.0 || 18 peerDependenciesMeta: '@mui/material': optional: true @@ -4877,17 +4932,17 @@ packages: optional: true dependencies: '@babel/runtime': 7.18.6 - '@date-io/date-fns': 2.14.0_date-fns@2.28.0 + '@date-io/date-fns': 2.14.0_date-fns@2.29.2 '@date-io/dayjs': 2.14.0 '@date-io/luxon': 2.14.0 '@date-io/moment': 2.14.0 '@mui/material': 5.8.7_d6menda4vqwq6peqnkbe7mkj4i '@mui/system': 5.8.7_d6menda4vqwq6peqnkbe7mkj4i '@mui/utils': 5.8.6 - '@mui/x-date-pickers': 5.0.0-alpha.7_3ze6eywwrphmf4xmeajh7ll6xm + '@mui/x-date-pickers': 5.0.0-alpha.7_k34ytkg6gx4xxob5q3piijp2ce '@mui/x-license-pro': 5.12.1 - clsx: 1.2.0 - date-fns: 2.28.0 + clsx: 1.2.1 + date-fns: 2.29.2 prop-types: 15.8.1 react-transition-group: 4.4.2 rifm: 0.12.1 @@ -4897,7 +4952,7 @@ packages: - react-dom dev: false - /@mui/x-date-pickers/5.0.0-alpha.7_3ze6eywwrphmf4xmeajh7ll6xm: + /@mui/x-date-pickers/5.0.0-alpha.7_k34ytkg6gx4xxob5q3piijp2ce: resolution: {integrity: sha512-y+RAkuC9riyoPD8mt2/Y9nV3+MxwCYfUOh2o09nFVnIKUSud37hhOMiX8BzAbQRO/2JoRByN5jEj2zuWPW2zuw==} engines: {node: '>=12.0.0'} peerDependencies: @@ -4909,7 +4964,7 @@ packages: dayjs: ^1.10.7 luxon: ^1.28.0 || ^2.0.0 moment: ^2.29.1 - react: ^17.0.2 || ^18.0.0 + react: ^17.0.2 || ^18.0.0 || 18 peerDependenciesMeta: '@emotion/react': optional: true @@ -4929,7 +4984,7 @@ packages: optional: true dependencies: '@babel/runtime': 7.18.6 - '@date-io/date-fns': 2.14.0_date-fns@2.28.0 + '@date-io/date-fns': 2.14.0_date-fns@2.29.2 '@date-io/dayjs': 2.14.0 '@date-io/luxon': 2.14.0 '@date-io/moment': 2.14.0 @@ -4938,8 +4993,8 @@ packages: '@mui/material': 5.8.7_d6menda4vqwq6peqnkbe7mkj4i '@mui/system': 5.8.7_d6menda4vqwq6peqnkbe7mkj4i '@mui/utils': 5.8.6 - clsx: 1.2.0 - date-fns: 2.28.0 + clsx: 1.2.1 + date-fns: 2.29.2 prop-types: 15.8.1 react-transition-group: 4.4.2 rifm: 0.12.1 @@ -4952,7 +5007,7 @@ packages: engines: {node: '>=12.0.0'} hasBin: true peerDependencies: - react: ^17.0.2 || ^18.0.0 + react: ^17.0.2 || ^18.0.0 || 18 peerDependenciesMeta: react: optional: true @@ -4984,25 +5039,25 @@ packages: fastq: 1.13.0 dev: true - /@nrwl/cli/14.4.2: - resolution: {integrity: sha512-JNV4kP9goZD4BlTQGKdKhCRc1bhiWYp1TaDJHdk4ZfhiLt1NzXNxxgc/eX2obFZ3Hw+KdM/gM5F7KfWBbtSGSw==} + /@nrwl/cli/14.5.10: + resolution: {integrity: sha512-GpnnKGO3+HwlMmZSStbq1MOyoDJg2I0HN4nBqM3ltaQkfxGZv3erwRMOAT+8mba2MWbJJ2QQgASAYvTscNYjOQ==} dependencies: - nx: 14.4.2_@swc+core@1.2.210 + nx: 14.5.10_@swc+core@1.2.244 dev: true - /@nrwl/cli/14.4.2_@swc+core@1.2.210: - resolution: {integrity: sha512-JNV4kP9goZD4BlTQGKdKhCRc1bhiWYp1TaDJHdk4ZfhiLt1NzXNxxgc/eX2obFZ3Hw+KdM/gM5F7KfWBbtSGSw==} + /@nrwl/cli/14.5.10_@swc+core@1.2.244: + resolution: {integrity: sha512-GpnnKGO3+HwlMmZSStbq1MOyoDJg2I0HN4nBqM3ltaQkfxGZv3erwRMOAT+8mba2MWbJJ2QQgASAYvTscNYjOQ==} dependencies: - nx: 14.4.2_@swc+core@1.2.210 + nx: 14.5.10_@swc+core@1.2.244 transitivePeerDependencies: - '@swc-node/register' - '@swc/core' dev: true - /@nrwl/cypress/14.4.2_gtbxvtmh5ipj3piki3xg57n5fe: - resolution: {integrity: sha512-vek4tJYzaJwnLgeJLAJKWuCmtE+XWCq6IgmCl/4G/lWxTWGzlJ19ZK8MoCEiJqbnNYeoHZPxoaAGwyBAbVuO3w==} + /@nrwl/cypress/14.5.10_7nv76pmmfazpmc5mincnwvnlka: + resolution: {integrity: sha512-NymwWehtpgCNZBLV/jwvKFCHWz4mw8+YG70uAheyO4ybkCmA2ghvaOG3shni9MG9mOMfRGz5Cc23/ScIekxA2w==} peerDependencies: - cypress: '>= 3 < 10' + cypress: '>= 3 < 11' peerDependenciesMeta: cypress: optional: true @@ -5010,19 +5065,21 @@ packages: '@babel/core': 7.18.6 '@babel/preset-env': 7.18.6_@babel+core@7.18.6 '@cypress/webpack-preprocessor': 5.12.0_kbhwel7in52p4dlvjkqlq5ojfi - '@nrwl/devkit': 14.4.2_nx@14.4.2 - '@nrwl/linter': 14.4.2_jqnzvbaca4rx3byobgjku3onji - '@nrwl/workspace': 14.4.2_a22ftc74wzukohhtmp6cnnvzoq + '@nrwl/devkit': 14.5.10_friigstnlhuirqu4wr7dfbyroa + '@nrwl/linter': 14.5.10_z5rj2yvzo55d4uujwqo5vfieea + '@nrwl/workspace': 14.5.10_cx6aw7aax7s3eyq3oi6a2zoeoi + '@phenomnomnominal/tsquery': 4.1.1_typescript@4.7.4 babel-loader: 8.2.5_m3opitmgss2x7fiy6klia7uvaa chalk: 4.1.0 + dotenv: 10.0.0 enhanced-resolve: 5.10.0 - fork-ts-checker-webpack-plugin: 6.2.10_wln64xm7gyszy6wbwhdijmigya + fork-ts-checker-webpack-plugin: 7.2.13_xnp4kzegbjokq62cajex2ovgkm rxjs: 6.6.7 ts-loader: 9.3.1_xnp4kzegbjokq62cajex2ovgkm tsconfig-paths: 3.14.1 tsconfig-paths-webpack-plugin: 3.5.2 tslib: 2.4.0 - webpack: 5.74.0_@swc+core@1.2.210 + webpack: 5.74.0_@swc+core@1.2.244 webpack-node-externals: 3.0.0 transitivePeerDependencies: - '@swc-node/register' @@ -5043,21 +5100,69 @@ packages: - webpack-cli dev: true - /@nrwl/devkit/14.4.2_nx@14.4.2: - resolution: {integrity: sha512-CJCczAbnZ7w6XZeOMHhb4aTQeDzU0pJOAAJvNU1EAzbj/nkP+QILn/sX+WQR6z94UT2Y9SMamnE4TjQC2F48vQ==} + /@nrwl/cypress/14.5.10_fh4vayvykx4so2ggxmjmy42o7q: + resolution: {integrity: sha512-NymwWehtpgCNZBLV/jwvKFCHWz4mw8+YG70uAheyO4ybkCmA2ghvaOG3shni9MG9mOMfRGz5Cc23/ScIekxA2w==} + peerDependencies: + cypress: '>= 3 < 11' + peerDependenciesMeta: + cypress: + optional: true + dependencies: + '@babel/core': 7.18.6 + '@babel/preset-env': 7.18.6_@babel+core@7.18.6 + '@cypress/webpack-preprocessor': 5.12.0_kbhwel7in52p4dlvjkqlq5ojfi + '@nrwl/devkit': 14.5.10_friigstnlhuirqu4wr7dfbyroa + '@nrwl/linter': 14.5.10_nccbbaajqjy3rznvgrrzaevqwe + '@nrwl/workspace': 14.5.10_eva5qnqrnaa26adtrypogyveky + '@phenomnomnominal/tsquery': 4.1.1_typescript@4.7.4 + babel-loader: 8.2.5_m3opitmgss2x7fiy6klia7uvaa + chalk: 4.1.0 + dotenv: 10.0.0 + enhanced-resolve: 5.10.0 + fork-ts-checker-webpack-plugin: 7.2.13_xnp4kzegbjokq62cajex2ovgkm + rxjs: 6.6.7 + ts-loader: 9.3.1_xnp4kzegbjokq62cajex2ovgkm + tsconfig-paths: 3.14.1 + tsconfig-paths-webpack-plugin: 3.5.2 + tslib: 2.4.0 + webpack: 5.74.0_@swc+core@1.2.244 + webpack-node-externals: 3.0.0 + transitivePeerDependencies: + - '@swc-node/register' + - '@swc/core' + - bufferutil + - canvas + - esbuild + - eslint + - node-notifier + - nx + - prettier + - supports-color + - ts-node + - typescript + - uglify-js + - utf-8-validate + - vue-template-compiler + - webpack-cli + dev: true + + /@nrwl/devkit/14.5.10_friigstnlhuirqu4wr7dfbyroa: + resolution: {integrity: sha512-YVT0MRvyXwe0uczUZK4XUi1f2iLAqklFMfAoqwfgcgWToH8xN06NSlyUphD4eLHFgem3Sd0kimAJVsnse/PTlA==} peerDependencies: nx: '>= 13.10 <= 15' dependencies: + '@phenomnomnominal/tsquery': 4.1.1_typescript@4.7.4 ejs: 3.1.8 ignore: 5.2.0 - nx: 14.4.2_@swc+core@1.2.210 - rxjs: 6.6.7 + nx: 14.5.10_@swc+core@1.2.244 semver: 7.3.4 tslib: 2.4.0 + transitivePeerDependencies: + - typescript dev: true - /@nrwl/eslint-plugin-nx/14.4.2_afsbewstkdex5d4fc6xnpjlnau: - resolution: {integrity: sha512-lYePXOoBWDbnzv/ltkT/ueE0rm30wJTaHaSJAZwI+csHR5Oj61l0zaCdXz4GlDOl6ZJLbS98/oOgufCnOSdMhw==} + /@nrwl/eslint-plugin-nx/14.5.10_givxt7oldssnfrhy2ogb3txvmu: + resolution: {integrity: sha512-YKXgnY8UzHfsw7Hzut7aO02t/8midI/vagUpwGCs08k8oWLZJ50CsTfnEgh61V6VAQWEpm8iPTaubAVLPLwtlg==} peerDependencies: '@typescript-eslint/parser': ^5.29.0 eslint-config-prettier: ^8.1.0 @@ -5065,10 +5170,10 @@ packages: eslint-config-prettier: optional: true dependencies: - '@nrwl/devkit': 14.4.2_nx@14.4.2 - '@nrwl/workspace': 14.4.2_a22ftc74wzukohhtmp6cnnvzoq - '@typescript-eslint/experimental-utils': 5.30.5_4x5o4skxv6sl53vpwefgt23khm + '@nrwl/devkit': 14.5.10_friigstnlhuirqu4wr7dfbyroa + '@nrwl/workspace': 14.5.10_eva5qnqrnaa26adtrypogyveky '@typescript-eslint/parser': 5.30.5_4x5o4skxv6sl53vpwefgt23khm + '@typescript-eslint/utils': 5.30.5_4x5o4skxv6sl53vpwefgt23khm chalk: 4.1.0 confusing-browser-globals: 1.0.11 eslint-config-prettier: 8.5.0_eslint@8.19.0 @@ -5088,14 +5193,15 @@ packages: - utf-8-validate dev: true - /@nrwl/jest/14.4.2_dltevkctzdxkrvyldbyepwbdle: - resolution: {integrity: sha512-5BIbkChVRmJQ0ngNBdL1Fy3oSLm20zR1ec9XgBAktPDQ4ZMPz3ZWk9c5kKX2H2tOvyu98hbOqZ0HLbPXAbt/Ew==} + /@nrwl/jest/14.5.10_mxnt7yjwrufofllb6rm3srb2gy: + resolution: {integrity: sha512-gGqghwDcpBhk8TNK2Gfp/5PWqnnAPUjNfSCOz39kk9ZBtsyloozGwjg/VEF3k2p9uCifRfAyZOpDrSdALxBpdA==} dependencies: '@jest/reporters': 27.5.1 '@jest/test-result': 27.5.1 - '@nrwl/devkit': 14.4.2_nx@14.4.2 + '@nrwl/devkit': 14.5.10_friigstnlhuirqu4wr7dfbyroa '@phenomnomnominal/tsquery': 4.1.1_typescript@4.7.4 chalk: 4.1.0 + dotenv: 10.0.0 identity-obj-proxy: 3.0.0 jest-config: 27.5.1_ts-node@10.8.2 jest-resolve: 27.5.1 @@ -5114,13 +5220,40 @@ packages: - utf-8-validate dev: true - /@nrwl/js/14.4.2_gtbxvtmh5ipj3piki3xg57n5fe: - resolution: {integrity: sha512-kVi+DAm1iaEZ8XQ8+dViDlK9/2ZM4Eq0fhWXtWisvuVmgoTdWQ88DDzXyINbzv4cWtpMnKHeIWJeM/WMWAX36w==} + /@nrwl/jest/14.5.10_oqd6w67pqggug57az6damxqvgm: + resolution: {integrity: sha512-gGqghwDcpBhk8TNK2Gfp/5PWqnnAPUjNfSCOz39kk9ZBtsyloozGwjg/VEF3k2p9uCifRfAyZOpDrSdALxBpdA==} dependencies: - '@nrwl/devkit': 14.4.2_nx@14.4.2 - '@nrwl/jest': 14.4.2_dltevkctzdxkrvyldbyepwbdle - '@nrwl/linter': 14.4.2_jqnzvbaca4rx3byobgjku3onji - '@nrwl/workspace': 14.4.2_a22ftc74wzukohhtmp6cnnvzoq + '@jest/reporters': 27.5.1 + '@jest/test-result': 27.5.1 + '@nrwl/devkit': 14.5.10_friigstnlhuirqu4wr7dfbyroa + '@phenomnomnominal/tsquery': 4.1.1_typescript@4.7.4 + chalk: 4.1.0 + dotenv: 10.0.0 + identity-obj-proxy: 3.0.0 + jest-config: 27.5.1_ts-node@10.9.1 + jest-resolve: 27.5.1 + jest-util: 27.5.1 + resolve.exports: 1.1.0 + rxjs: 6.6.7 + tslib: 2.4.0 + transitivePeerDependencies: + - bufferutil + - canvas + - node-notifier + - nx + - supports-color + - ts-node + - typescript + - utf-8-validate + dev: true + + /@nrwl/js/14.5.10_7nv76pmmfazpmc5mincnwvnlka: + resolution: {integrity: sha512-UNLGI1kP2YoWCraDaSDQOqQSgj3S5+qpvnqWBkDMl+augJmNEDBSWi/bNXMQgQqKDvLHF65iJeAuFSFhtdksAA==} + dependencies: + '@nrwl/devkit': 14.5.10_friigstnlhuirqu4wr7dfbyroa + '@nrwl/jest': 14.5.10_oqd6w67pqggug57az6damxqvgm + '@nrwl/linter': 14.5.10_z5rj2yvzo55d4uujwqo5vfieea + '@nrwl/workspace': 14.5.10_cx6aw7aax7s3eyq3oi6a2zoeoi '@parcel/watcher': 2.0.4 chalk: 4.1.0 fast-glob: 3.2.7 @@ -5145,19 +5278,50 @@ packages: - utf-8-validate dev: true - /@nrwl/linter/14.4.2_jqnzvbaca4rx3byobgjku3onji: - resolution: {integrity: sha512-K44C+mwwbq0Q3IECNqxO9WGB9J7vSKoyaOzx0BH0HgKtfTSTyALHuM6ylzZ9y9pNK0CDbkVraKoFwDZ42GtzCQ==} + /@nrwl/js/14.5.10_fh4vayvykx4so2ggxmjmy42o7q: + resolution: {integrity: sha512-UNLGI1kP2YoWCraDaSDQOqQSgj3S5+qpvnqWBkDMl+augJmNEDBSWi/bNXMQgQqKDvLHF65iJeAuFSFhtdksAA==} + dependencies: + '@nrwl/devkit': 14.5.10_friigstnlhuirqu4wr7dfbyroa + '@nrwl/jest': 14.5.10_mxnt7yjwrufofllb6rm3srb2gy + '@nrwl/linter': 14.5.10_nccbbaajqjy3rznvgrrzaevqwe + '@nrwl/workspace': 14.5.10_eva5qnqrnaa26adtrypogyveky + '@parcel/watcher': 2.0.4 + chalk: 4.1.0 + fast-glob: 3.2.7 + fs-extra: 10.1.0 + ignore: 5.2.0 + js-tokens: 4.0.0 + minimatch: 3.0.5 + source-map-support: 0.5.19 + tree-kill: 1.2.2 + transitivePeerDependencies: + - '@swc-node/register' + - '@swc/core' + - bufferutil + - canvas + - eslint + - node-notifier + - nx + - prettier + - supports-color + - ts-node + - typescript + - utf-8-validate + dev: true + + /@nrwl/linter/14.5.10_nccbbaajqjy3rznvgrrzaevqwe: + resolution: {integrity: sha512-3c6KhSLJmt8wMkYZw+f/KayPHkM+KV/z+QaYQL59XY5o9DdYyq6jHjnvu/CuW2JzU97yHkacYbwkSFQlDKCyIg==} peerDependencies: eslint: ^8.0.0 peerDependenciesMeta: eslint: optional: true dependencies: - '@nrwl/devkit': 14.4.2_nx@14.4.2 - '@nrwl/jest': 14.4.2_dltevkctzdxkrvyldbyepwbdle + '@nrwl/devkit': 14.5.10_friigstnlhuirqu4wr7dfbyroa + '@nrwl/jest': 14.5.10_mxnt7yjwrufofllb6rm3srb2gy '@phenomnomnominal/tsquery': 4.1.1_typescript@4.7.4 eslint: 8.19.0 - nx: 14.4.2_@swc+core@1.2.210 + nx: 14.5.10_@swc+core@1.2.244 tmp: 0.2.1 tslib: 2.4.0 transitivePeerDependencies: @@ -5172,32 +5336,59 @@ packages: - utf-8-validate dev: true - /@nrwl/node/14.4.2_ehspof47b5bphcyk4536mwaw4u: - resolution: {integrity: sha512-YMolQH3R/DTyPap3fQFWXvBaKJQG6l+msAUqzHp5OML3lPDg+zBYGW2kD1IsXpYq/ccpaot1ePS5K0JDpbZ8zQ==} + /@nrwl/linter/14.5.10_z5rj2yvzo55d4uujwqo5vfieea: + resolution: {integrity: sha512-3c6KhSLJmt8wMkYZw+f/KayPHkM+KV/z+QaYQL59XY5o9DdYyq6jHjnvu/CuW2JzU97yHkacYbwkSFQlDKCyIg==} + peerDependencies: + eslint: ^8.0.0 + peerDependenciesMeta: + eslint: + optional: true dependencies: - '@nrwl/devkit': 14.4.2_nx@14.4.2 - '@nrwl/jest': 14.4.2_dltevkctzdxkrvyldbyepwbdle - '@nrwl/js': 14.4.2_gtbxvtmh5ipj3piki3xg57n5fe - '@nrwl/linter': 14.4.2_jqnzvbaca4rx3byobgjku3onji - '@nrwl/workspace': 14.4.2_a22ftc74wzukohhtmp6cnnvzoq + '@nrwl/devkit': 14.5.10_friigstnlhuirqu4wr7dfbyroa + '@nrwl/jest': 14.5.10_oqd6w67pqggug57az6damxqvgm + '@phenomnomnominal/tsquery': 4.1.1_typescript@4.7.4 + eslint: 8.19.0 + nx: 14.5.10_@swc+core@1.2.244 + tmp: 0.2.1 + tslib: 2.4.0 + transitivePeerDependencies: + - '@swc-node/register' + - '@swc/core' + - bufferutil + - canvas + - node-notifier + - supports-color + - ts-node + - typescript + - utf-8-validate + dev: true + + /@nrwl/node/14.5.10_b7xqi4yfwax4wnal77xdlkadre: + resolution: {integrity: sha512-d/2QSLyOe19/GddWExA2YeRu97r1jyjFpqpQGjJQ/PzdAMuAXWw8fOvhM5iq8XDlWi0IoQMmU5r/OoPDzRtbLg==} + dependencies: + '@nrwl/devkit': 14.5.10_friigstnlhuirqu4wr7dfbyroa + '@nrwl/jest': 14.5.10_oqd6w67pqggug57az6damxqvgm + '@nrwl/js': 14.5.10_7nv76pmmfazpmc5mincnwvnlka + '@nrwl/linter': 14.5.10_z5rj2yvzo55d4uujwqo5vfieea + '@nrwl/workspace': 14.5.10_cx6aw7aax7s3eyq3oi6a2zoeoi chalk: 4.1.0 - copy-webpack-plugin: 9.1.0_webpack@5.74.0 + copy-webpack-plugin: 10.2.4_webpack@5.74.0 + dotenv: 10.0.0 enhanced-resolve: 5.10.0 - fork-ts-checker-webpack-plugin: 6.2.10_wln64xm7gyszy6wbwhdijmigya + fork-ts-checker-webpack-plugin: 7.2.13_xnp4kzegbjokq62cajex2ovgkm fs-extra: 10.1.0 glob: 7.1.4 license-webpack-plugin: 4.0.2_webpack@5.74.0 rxjs: 6.6.7 - rxjs-for-await: 0.0.2_rxjs@6.6.7 source-map-support: 0.5.19 - terser-webpack-plugin: 5.3.3_vwzmvoh3samqo2nn3x7mqt365m + terser-webpack-plugin: 5.3.3_5yvlrjpud4kvfyyr2mesgpo47e tree-kill: 1.2.2 ts-loader: 9.3.1_xnp4kzegbjokq62cajex2ovgkm - ts-node: 10.8.2_y42jqzo3jkzuv3kp7opavo2xbi + ts-node: 10.9.1_hixnfb2jfw56u6pahjg3ndp4oy tsconfig-paths: 3.14.1 tsconfig-paths-webpack-plugin: 3.5.2 tslib: 2.4.0 - webpack: 5.74.0_@swc+core@1.2.210 + webpack: 5.74.0_@swc+core@1.2.244 webpack-merge: 5.8.0 webpack-node-externals: 3.0.0 transitivePeerDependencies: @@ -5220,44 +5411,46 @@ packages: - webpack-cli dev: true - /@nrwl/nx-cloud/14.2.0: - resolution: {integrity: sha512-KnrNFDCII9mbLwFp0HgyKVlhMTXoN90CQzGgdtCNPPBP/Wg84pttcpynGdWyupkrBJxdqMNTJEC7HGib0ipxew==} + /@nrwl/nx-cloud/14.5.4: + resolution: {integrity: sha512-fuKsx+2jvpL5OAuwSUsODEydzt01qiPJwZslbCtMWXRGva5KNbT4udNwl0C1M/W9RFVYmFbD7n4Ewz3oho531A==} hasBin: true dependencies: axios: 0.21.4 chalk: 4.1.0 + dotenv: 10.0.0 node-machine-id: 1.1.12 strip-json-comments: 3.1.1 tar: 6.1.11 + yargs-parser: 21.0.1 transitivePeerDependencies: - debug dev: true - /@nrwl/react/14.4.2_46t6z7wulh2zjyi5wmxujdm57y: - resolution: {integrity: sha512-5OlTpa5wRgADkNuP55Ii0myZLqzcefwR+lMRSBFquwOzxQ5VEU9JCyZVeO4pBdVr1ibbIJoj1EfO+NnVpCtELg==} + /@nrwl/react/14.5.10_o5732ev3g42bu2r3ngh6yfrgia: + resolution: {integrity: sha512-cdMWs9BKu1mkKg+/UisOSxAIxD13kbKY565+mqIRKzsdN8LvP7Xe6iDCfGtIpg1esrZxVZbcMm38L3rn6x+4hQ==} dependencies: '@babel/core': 7.18.6 '@babel/preset-react': 7.18.6_@babel+core@7.18.6 - '@nrwl/cypress': 14.4.2_gtbxvtmh5ipj3piki3xg57n5fe - '@nrwl/devkit': 14.4.2_nx@14.4.2 - '@nrwl/jest': 14.4.2_dltevkctzdxkrvyldbyepwbdle - '@nrwl/js': 14.4.2_gtbxvtmh5ipj3piki3xg57n5fe - '@nrwl/linter': 14.4.2_jqnzvbaca4rx3byobgjku3onji - '@nrwl/storybook': 14.4.2_brofqo76x5gdh2qufyuyzjmfne - '@nrwl/web': 14.4.2_7ggz7ibmlwrqtwusxeq53zzcym - '@nrwl/workspace': 14.4.2_a22ftc74wzukohhtmp6cnnvzoq + '@nrwl/cypress': 14.5.10_fh4vayvykx4so2ggxmjmy42o7q + '@nrwl/devkit': 14.5.10_friigstnlhuirqu4wr7dfbyroa + '@nrwl/jest': 14.5.10_mxnt7yjwrufofllb6rm3srb2gy + '@nrwl/js': 14.5.10_fh4vayvykx4so2ggxmjmy42o7q + '@nrwl/linter': 14.5.10_nccbbaajqjy3rznvgrrzaevqwe + '@nrwl/storybook': 14.5.10_cu63rkszloo7pn4oqbb7oabdnu + '@nrwl/web': 14.5.10_tpw7pltx5fafq53de536pruocy + '@nrwl/workspace': 14.5.10_eva5qnqrnaa26adtrypogyveky '@pmmmwh/react-refresh-webpack-plugin': 0.5.7_bgbvhssx5jbdjtmrq4m55itcsu - '@storybook/node-logger': 6.1.20 '@svgr/webpack': 6.2.1 chalk: 4.1.0 eslint-plugin-import: 2.26.0_iom7pm3yknyiblqpw2vvqvxs5i eslint-plugin-jsx-a11y: 6.6.0_eslint@8.19.0 eslint-plugin-react: 7.30.0_eslint@8.19.0 eslint-plugin-react-hooks: 4.6.0_eslint@8.19.0 + minimatch: 3.0.5 react-refresh: 0.10.0 semver: 7.3.4 url-loader: 4.1.1_webpack@5.74.0 - webpack: 5.74.0_@swc+core@1.2.210 + webpack: 5.74.0_@swc+core@1.2.244 webpack-merge: 5.8.0 transitivePeerDependencies: - '@parcel/css' @@ -5300,14 +5493,15 @@ packages: - webpack-plugin-serve dev: true - /@nrwl/storybook/14.4.2_brofqo76x5gdh2qufyuyzjmfne: - resolution: {integrity: sha512-G6h3jQT+pIY0RAEbeclguEFSAIXsToRVKEeRyq1bk6fWJHy7y//bCeJrINL9xPf9zk12cWyKkjJvwsOcy0Z1Mw==} + /@nrwl/storybook/14.5.10_cu63rkszloo7pn4oqbb7oabdnu: + resolution: {integrity: sha512-CIeVgxYvkEvVDo3RaHS49bbqm97Mpv+g3iM8lFU11yz5ImJdnJkjZOF8AHl1jLJpyFj1nAXdmWtbTzULAObgTw==} dependencies: - '@nrwl/cypress': 14.4.2_gtbxvtmh5ipj3piki3xg57n5fe - '@nrwl/devkit': 14.4.2_nx@14.4.2 - '@nrwl/linter': 14.4.2_jqnzvbaca4rx3byobgjku3onji - '@nrwl/workspace': 14.4.2_a22ftc74wzukohhtmp6cnnvzoq - core-js: 3.23.3 + '@nrwl/cypress': 14.5.10_fh4vayvykx4so2ggxmjmy42o7q + '@nrwl/devkit': 14.5.10_friigstnlhuirqu4wr7dfbyroa + '@nrwl/linter': 14.5.10_nccbbaajqjy3rznvgrrzaevqwe + '@nrwl/workspace': 14.5.10_eva5qnqrnaa26adtrypogyveky + core-js: 3.25.0 + dotenv: 10.0.0 semver: 7.3.4 ts-loader: 9.3.1_xnp4kzegbjokq62cajex2ovgkm tsconfig-paths-webpack-plugin: 3.5.2 @@ -5332,18 +5526,18 @@ packages: - webpack-cli dev: true - /@nrwl/tao/14.4.2_@swc+core@1.2.210: - resolution: {integrity: sha512-Ygw3skKZfFhi4MBHZKQ8A67pDQxeyDdY78tFWViMN0SEn9ExL41Q8V9aSMfir8VZYGca6ZOXX5MRhbeHdcgMLQ==} + /@nrwl/tao/14.5.10_@swc+core@1.2.244: + resolution: {integrity: sha512-eWORRba0HlTNmOQFUxHqki0Z5yiRIq1Hl0taprmZpz2lgDXuzPIjGfAi5/ETy5+G5gkEyxFnCq7+SiMilPokwA==} hasBin: true dependencies: - nx: 14.4.2_@swc+core@1.2.210 + nx: 14.5.10_@swc+core@1.2.244 transitivePeerDependencies: - '@swc-node/register' - '@swc/core' dev: true - /@nrwl/web/14.4.2_7ggz7ibmlwrqtwusxeq53zzcym: - resolution: {integrity: sha512-x00dE67yDRC3zmVEdO1HdtIbPezZ5gSKmNmEL2++PrA6AUz3a+f7/Ahhs4ALxnEPx1oDRLzM5OxRb5w6kLmGfw==} + /@nrwl/web/14.5.10_tpw7pltx5fafq53de536pruocy: + resolution: {integrity: sha512-mMlHRgywmSJIRfKyfDfVbOt0NnAPf+tV2gEAYnXt8GF0SfcQhG1xpn3A6oQgl36fpZ78FzO2Z+txw4OiKk+lrw==} dependencies: '@babel/core': 7.18.6 '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.18.6 @@ -5353,12 +5547,12 @@ packages: '@babel/preset-env': 7.18.6_@babel+core@7.18.6 '@babel/preset-typescript': 7.18.6_@babel+core@7.18.6 '@babel/runtime': 7.18.6 - '@nrwl/cypress': 14.4.2_gtbxvtmh5ipj3piki3xg57n5fe - '@nrwl/devkit': 14.4.2_nx@14.4.2 - '@nrwl/jest': 14.4.2_dltevkctzdxkrvyldbyepwbdle - '@nrwl/js': 14.4.2_gtbxvtmh5ipj3piki3xg57n5fe - '@nrwl/linter': 14.4.2_jqnzvbaca4rx3byobgjku3onji - '@nrwl/workspace': 14.4.2_a22ftc74wzukohhtmp6cnnvzoq + '@nrwl/cypress': 14.5.10_7nv76pmmfazpmc5mincnwvnlka + '@nrwl/devkit': 14.5.10_friigstnlhuirqu4wr7dfbyroa + '@nrwl/jest': 14.5.10_oqd6w67pqggug57az6damxqvgm + '@nrwl/js': 14.5.10_7nv76pmmfazpmc5mincnwvnlka + '@nrwl/linter': 14.5.10_z5rj2yvzo55d4uujwqo5vfieea + '@nrwl/workspace': 14.5.10_cx6aw7aax7s3eyq3oi6a2zoeoi '@pmmmwh/react-refresh-webpack-plugin': 0.5.7_obbju5ecoedcc2mvvgblbzwdca '@rollup/plugin-babel': 5.3.1_fb3qe53zzddvqjqqltveoanfhe '@rollup/plugin-commonjs': 20.0.0_rollup@2.75.7 @@ -5376,13 +5570,13 @@ packages: caniuse-lite: 1.0.30001363 chalk: 4.1.0 chokidar: 3.5.3 - copy-webpack-plugin: 9.1.0_webpack@5.74.0 - core-js: 3.23.3 + copy-webpack-plugin: 10.2.4_webpack@5.74.0 + core-js: 3.25.0 css-loader: 6.7.1_webpack@5.74.0 css-minimizer-webpack-plugin: 3.4.1_webpack@5.74.0 enhanced-resolve: 5.10.0 file-loader: 6.2.0_webpack@5.74.0 - fork-ts-checker-webpack-plugin: 6.2.10_wln64xm7gyszy6wbwhdijmigya + fork-ts-checker-webpack-plugin: 7.2.13_xnp4kzegbjokq62cajex2ovgkm fs-extra: 10.1.0 http-server: 14.1.0 identity-obj-proxy: 3.0.0 @@ -5402,10 +5596,9 @@ packages: rollup: 2.75.7 rollup-plugin-copy: 3.4.0 rollup-plugin-peer-deps-external: 2.2.4_rollup@2.75.7 - rollup-plugin-postcss: 4.0.2_i7duc3lt6p42geuj2nwruihc6u + rollup-plugin-postcss: 4.0.2_pe6iykxod2v7i2uk6okjazxzki rollup-plugin-typescript2: 0.31.2_okefoyb4o5sittgqayreuhurei rxjs: 6.6.7 - rxjs-for-await: 0.0.2_rxjs@6.6.7 sass: 1.53.0 sass-loader: 12.6.0_sass@1.53.0+webpack@5.74.0 semver: 7.3.4 @@ -5414,13 +5607,13 @@ packages: style-loader: 3.3.1_webpack@5.74.0 stylus: 0.55.0 stylus-loader: 6.2.0_772wava6yveehcyvgfd527qm3q - terser-webpack-plugin: 5.3.3_vwzmvoh3samqo2nn3x7mqt365m + terser-webpack-plugin: 5.3.3_5yvlrjpud4kvfyyr2mesgpo47e ts-loader: 9.3.1_xnp4kzegbjokq62cajex2ovgkm - ts-node: 10.8.2_y42jqzo3jkzuv3kp7opavo2xbi + ts-node: 10.9.1_hixnfb2jfw56u6pahjg3ndp4oy tsconfig-paths: 3.14.1 tsconfig-paths-webpack-plugin: 3.5.2 tslib: 2.4.0 - webpack: 5.74.0_@swc+core@1.2.210 + webpack: 5.74.0_@swc+core@1.2.244 webpack-dev-server: 4.9.3_webpack@5.74.0 webpack-merge: 5.8.0 webpack-sources: 3.2.3 @@ -5460,17 +5653,17 @@ packages: - webpack-plugin-serve dev: true - /@nrwl/workspace/14.4.2_a22ftc74wzukohhtmp6cnnvzoq: - resolution: {integrity: sha512-D3EXkeg/39V3OeKINvymeOsr5QVRLZFwYOWHfvVcJh8iKpVrev/zMFOm6rSrHmdlpoLkJVAOW2QI+1MYl92Gig==} + /@nrwl/workspace/14.5.10_cx6aw7aax7s3eyq3oi6a2zoeoi: + resolution: {integrity: sha512-bJK2O5NcIYhU7z1mmWoONo2+tOt1VUYyOQUUrAcI00hiBhMJPOTwPPN+W5BbJsue95ndH6mRLo2UhTz20U2tNA==} peerDependencies: prettier: ^2.6.2 peerDependenciesMeta: prettier: optional: true dependencies: - '@nrwl/devkit': 14.4.2_nx@14.4.2 - '@nrwl/jest': 14.4.2_dltevkctzdxkrvyldbyepwbdle - '@nrwl/linter': 14.4.2_jqnzvbaca4rx3byobgjku3onji + '@nrwl/devkit': 14.5.10_friigstnlhuirqu4wr7dfbyroa + '@nrwl/jest': 14.5.10_oqd6w67pqggug57az6damxqvgm + '@nrwl/linter': 14.5.10_z5rj2yvzo55d4uujwqo5vfieea '@parcel/watcher': 2.0.4 chalk: 4.1.0 chokidar: 3.5.3 @@ -5485,7 +5678,54 @@ packages: ignore: 5.2.0 minimatch: 3.0.5 npm-run-path: 4.0.1 - nx: 14.4.2_@swc+core@1.2.210 + nx: 14.5.10_@swc+core@1.2.244 + open: 8.4.0 + prettier: 2.7.1 + rxjs: 6.6.7 + semver: 7.3.4 + tmp: 0.2.1 + tslib: 2.4.0 + yargs: 17.5.1 + yargs-parser: 21.0.1 + transitivePeerDependencies: + - '@swc-node/register' + - '@swc/core' + - bufferutil + - canvas + - eslint + - node-notifier + - supports-color + - ts-node + - typescript + - utf-8-validate + dev: true + + /@nrwl/workspace/14.5.10_eva5qnqrnaa26adtrypogyveky: + resolution: {integrity: sha512-bJK2O5NcIYhU7z1mmWoONo2+tOt1VUYyOQUUrAcI00hiBhMJPOTwPPN+W5BbJsue95ndH6mRLo2UhTz20U2tNA==} + peerDependencies: + prettier: ^2.6.2 + peerDependenciesMeta: + prettier: + optional: true + dependencies: + '@nrwl/devkit': 14.5.10_friigstnlhuirqu4wr7dfbyroa + '@nrwl/jest': 14.5.10_mxnt7yjwrufofllb6rm3srb2gy + '@nrwl/linter': 14.5.10_nccbbaajqjy3rznvgrrzaevqwe + '@parcel/watcher': 2.0.4 + chalk: 4.1.0 + chokidar: 3.5.3 + cli-cursor: 3.1.0 + cli-spinners: 2.6.1 + dotenv: 10.0.0 + enquirer: 2.3.6 + figures: 3.2.0 + flat: 5.0.2 + fs-extra: 10.1.0 + glob: 7.1.4 + ignore: 5.2.0 + minimatch: 3.0.5 + npm-run-path: 4.0.1 + nx: 14.5.10_@swc+core@1.2.244 open: 8.4.0 prettier: 2.7.1 rxjs: 6.6.7 @@ -5568,7 +5808,7 @@ packages: react-refresh: 0.10.0 schema-utils: 3.1.1 source-map: 0.7.4 - webpack: 5.74.0_@swc+core@1.2.210 + webpack: 5.74.0_@swc+core@1.2.244 dev: true /@pmmmwh/react-refresh-webpack-plugin/0.5.7_obbju5ecoedcc2mvvgblbzwdca: @@ -5609,7 +5849,7 @@ packages: react-refresh: 0.10.0 schema-utils: 3.1.1 source-map: 0.7.4 - webpack: 5.74.0_@swc+core@1.2.210 + webpack: 5.74.0_@swc+core@1.2.244 webpack-dev-server: 4.9.3_webpack@5.74.0 dev: true @@ -5621,10 +5861,14 @@ packages: resolution: {integrity: sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw==} dev: false + /@popperjs/core/2.11.6: + resolution: {integrity: sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==} + dev: false + /@portabletext/react/1.0.6_react@18.2.0: resolution: {integrity: sha512-j6BprLiwFz3zr1Lo6BxM2sQ1b3g1JIjGwePeuxqSfbBiEYbGXn2izEckMJ02hSa1f7+RCEUJ+Bojvtzz6BBUaw==} peerDependencies: - react: ^17 || ^18 + react: ^17 || ^18 || 18 peerDependenciesMeta: react: optional: true @@ -5807,9 +6051,9 @@ packages: engines: {node: '>=4'} dev: true - /@sindresorhus/is/4.6.0: - resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} - engines: {node: '>=10'} + /@sindresorhus/is/5.3.0: + resolution: {integrity: sha512-CX6t4SYQ37lzxicAqsBtxA3OseeoVrh9cSJ5PFYam0GksYlupRfy1A+Q4aYD3zvcfECLc0zO2u+ZnR2UYKvCrw==} + engines: {node: '>=14.16'} dev: false /@sinonjs/commons/1.8.3: @@ -5830,18 +6074,8 @@ packages: '@sinonjs/commons': 1.8.3 dev: true - /@storybook/node-logger/6.1.20: - resolution: {integrity: sha512-Z6337htb1mxIccvCx2Ai0v9LPDlBlmXzeWhap3q2Y6hg8g1p4+0W5Y6bG9RmXqJoXLaT1trO8uAXgGO7AN92yg==} - dependencies: - '@types/npmlog': 4.1.4 - chalk: 4.1.0 - core-js: 3.23.3 - npmlog: 4.1.2 - pretty-hrtime: 1.0.3 - dev: true - - /@svgr/babel-plugin-add-jsx-attribute/6.0.0_@babel+core@7.18.6: - resolution: {integrity: sha512-MdPdhdWLtQsjd29Wa4pABdhWbaRMACdM1h31BY+c6FghTZqNGT7pEYdBoaGeKtdTOBC/XNFQaKVj+r/Ei2ryWA==} + /@svgr/babel-plugin-add-jsx-attribute/6.3.1_@babel+core@7.18.6: + resolution: {integrity: sha512-jDBKArXYO1u0B1dmd2Nf8Oy6aTF5vLDfLoO9Oon/GLkqZ/NiggYWZA+a2HpUMH4ITwNqS3z43k8LWApB8S583w==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -5852,8 +6086,8 @@ packages: '@babel/core': 7.18.6 dev: true - /@svgr/babel-plugin-remove-jsx-attribute/6.0.0_@babel+core@7.18.6: - resolution: {integrity: sha512-aVdtfx9jlaaxc3unA6l+M9YRnKIZjOhQPthLKqmTXC8UVkBLDRGwPKo+r8n3VZN8B34+yVajzPTZ+ptTSuZZCw==} + /@svgr/babel-plugin-remove-jsx-attribute/6.3.1_@babel+core@7.18.6: + resolution: {integrity: sha512-dQzyJ4prwjcFd929T43Z8vSYiTlTu8eafV40Z2gO7zy/SV5GT+ogxRJRBIKWomPBOiaVXFg3jY4S5hyEN3IBjQ==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -5864,8 +6098,8 @@ packages: '@babel/core': 7.18.6 dev: true - /@svgr/babel-plugin-remove-jsx-empty-expression/6.0.0_@babel+core@7.18.6: - resolution: {integrity: sha512-Ccj42ApsePD451AZJJf1QzTD1B/BOU392URJTeXFxSK709i0KUsGtbwyiqsKu7vsYxpTM0IA5clAKDyf9RCZyA==} + /@svgr/babel-plugin-remove-jsx-empty-expression/6.3.1_@babel+core@7.18.6: + resolution: {integrity: sha512-HBOUc1XwSU67fU26V5Sfb8MQsT0HvUyxru7d0oBJ4rA2s4HW3PhyAPC7fV/mdsSGpAvOdd8Wpvkjsr0fWPUO7A==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -5876,8 +6110,8 @@ packages: '@babel/core': 7.18.6 dev: true - /@svgr/babel-plugin-replace-jsx-attribute-value/6.0.0_@babel+core@7.18.6: - resolution: {integrity: sha512-88V26WGyt1Sfd1emBYmBJRWMmgarrExpKNVmI9vVozha4kqs6FzQJ/Kp5+EYli1apgX44518/0+t9+NU36lThQ==} + /@svgr/babel-plugin-replace-jsx-attribute-value/6.3.1_@babel+core@7.18.6: + resolution: {integrity: sha512-C12e6aN4BXAolRrI601gPn5MDFCRHO7C4TM8Kks+rDtl8eEq+NN1sak0eAzJu363x3TmHXdZn7+Efd2nr9I5dA==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -5888,8 +6122,8 @@ packages: '@babel/core': 7.18.6 dev: true - /@svgr/babel-plugin-svg-dynamic-title/6.0.0_@babel+core@7.18.6: - resolution: {integrity: sha512-F7YXNLfGze+xv0KMQxrl2vkNbI9kzT9oDK55/kUuymh1ACyXkMV+VZWX1zEhSTfEKh7VkHVZGmVtHg8eTZ6PRg==} + /@svgr/babel-plugin-svg-dynamic-title/6.3.1_@babel+core@7.18.6: + resolution: {integrity: sha512-6NU55Mmh3M5u2CfCCt6TX29/pPneutrkJnnDCHbKZnjukZmmgUAZLtZ2g6ZoSPdarowaQmAiBRgAHqHmG0vuqA==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -5900,8 +6134,8 @@ packages: '@babel/core': 7.18.6 dev: true - /@svgr/babel-plugin-svg-em-dimensions/6.0.0_@babel+core@7.18.6: - resolution: {integrity: sha512-+rghFXxdIqJNLQK08kwPBD3Z22/0b2tEZ9lKiL/yTfuyj1wW8HUXu4bo/XkogATIYuXSghVQOOCwURXzHGKyZA==} + /@svgr/babel-plugin-svg-em-dimensions/6.3.1_@babel+core@7.18.6: + resolution: {integrity: sha512-HV1NGHYTTe1vCNKlBgq/gKuCSfaRlKcHIADn7P8w8U3Zvujdw1rmusutghJ1pZJV7pDt3Gt8ws+SVrqHnBO/Qw==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -5912,8 +6146,8 @@ packages: '@babel/core': 7.18.6 dev: true - /@svgr/babel-plugin-transform-react-native-svg/6.0.0_@babel+core@7.18.6: - resolution: {integrity: sha512-VaphyHZ+xIKv5v0K0HCzyfAaLhPGJXSk2HkpYfXIOKb7DjLBv0soHDxNv6X0vr2titsxE7klb++u7iOf7TSrFQ==} + /@svgr/babel-plugin-transform-react-native-svg/6.3.1_@babel+core@7.18.6: + resolution: {integrity: sha512-2wZhSHvTolFNeKDAN/ZmIeSz2O9JSw72XD+o2bNp2QAaWqa8KGpn5Yk5WHso6xqfSAiRzAE+GXlsrBO4UP9LLw==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -5924,8 +6158,8 @@ packages: '@babel/core': 7.18.6 dev: true - /@svgr/babel-plugin-transform-svg-component/6.2.0_@babel+core@7.18.6: - resolution: {integrity: sha512-bhYIpsORb++wpsp91fymbFkf09Z/YEKR0DnFjxvN+8JHeCUD2unnh18jIMKnDJTWtvpTaGYPXELVe4OOzFI0xg==} + /@svgr/babel-plugin-transform-svg-component/6.3.1_@babel+core@7.18.6: + resolution: {integrity: sha512-cZ8Tr6ZAWNUFfDeCKn/pGi976iWSkS8ijmEYKosP+6ktdZ7lW9HVLHojyusPw3w0j8PI4VBeWAXAmi/2G7owxw==} engines: {node: '>=12'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -5936,8 +6170,8 @@ packages: '@babel/core': 7.18.6 dev: true - /@svgr/babel-preset/6.2.0_@babel+core@7.18.6: - resolution: {integrity: sha512-4WQNY0J71JIaL03DRn0vLiz87JXx0b9dYm2aA8XHlQJQoixMl4r/soYHm8dsaJZ3jWtkCiOYy48dp9izvXhDkQ==} + /@svgr/babel-preset/6.3.1_@babel+core@7.18.6: + resolution: {integrity: sha512-tQtWtzuMMQ3opH7je+MpwfuRA1Hf3cKdSgTtAYwOBDfmhabP7rcTfBi3E7V3MuwJNy/Y02/7/RutvwS1W4Qv9g==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -5946,57 +6180,57 @@ packages: optional: true dependencies: '@babel/core': 7.18.6 - '@svgr/babel-plugin-add-jsx-attribute': 6.0.0_@babel+core@7.18.6 - '@svgr/babel-plugin-remove-jsx-attribute': 6.0.0_@babel+core@7.18.6 - '@svgr/babel-plugin-remove-jsx-empty-expression': 6.0.0_@babel+core@7.18.6 - '@svgr/babel-plugin-replace-jsx-attribute-value': 6.0.0_@babel+core@7.18.6 - '@svgr/babel-plugin-svg-dynamic-title': 6.0.0_@babel+core@7.18.6 - '@svgr/babel-plugin-svg-em-dimensions': 6.0.0_@babel+core@7.18.6 - '@svgr/babel-plugin-transform-react-native-svg': 6.0.0_@babel+core@7.18.6 - '@svgr/babel-plugin-transform-svg-component': 6.2.0_@babel+core@7.18.6 + '@svgr/babel-plugin-add-jsx-attribute': 6.3.1_@babel+core@7.18.6 + '@svgr/babel-plugin-remove-jsx-attribute': 6.3.1_@babel+core@7.18.6 + '@svgr/babel-plugin-remove-jsx-empty-expression': 6.3.1_@babel+core@7.18.6 + '@svgr/babel-plugin-replace-jsx-attribute-value': 6.3.1_@babel+core@7.18.6 + '@svgr/babel-plugin-svg-dynamic-title': 6.3.1_@babel+core@7.18.6 + '@svgr/babel-plugin-svg-em-dimensions': 6.3.1_@babel+core@7.18.6 + '@svgr/babel-plugin-transform-react-native-svg': 6.3.1_@babel+core@7.18.6 + '@svgr/babel-plugin-transform-svg-component': 6.3.1_@babel+core@7.18.6 dev: true - /@svgr/core/6.2.1: - resolution: {integrity: sha512-NWufjGI2WUyrg46mKuySfviEJ6IxHUOm/8a3Ph38VCWSp+83HBraCQrpEM3F3dB6LBs5x8OElS8h3C0oOJaJAA==} + /@svgr/core/6.3.1: + resolution: {integrity: sha512-Sm3/7OdXbQreemf9aO25keerZSbnKMpGEfmH90EyYpj1e8wMD4TuwJIb3THDSgRMWk1kYJfSRulELBy4gVgZUA==} engines: {node: '>=10'} dependencies: - '@svgr/plugin-jsx': 6.2.1_@svgr+core@6.2.1 + '@svgr/plugin-jsx': 6.3.1_@svgr+core@6.3.1 camelcase: 6.3.0 cosmiconfig: 7.0.1 transitivePeerDependencies: - supports-color dev: true - /@svgr/hast-util-to-babel-ast/6.2.1: - resolution: {integrity: sha512-pt7MMkQFDlWJVy9ULJ1h+hZBDGFfSCwlBNW1HkLnVi7jUhyEXUaGYWi1x6bM2IXuAR9l265khBT4Av4lPmaNLQ==} + /@svgr/hast-util-to-babel-ast/6.3.1: + resolution: {integrity: sha512-NgyCbiTQIwe3wHe/VWOUjyxmpUmsrBjdoIxKpXt3Nqc3TN30BpJG22OxBvVzsAh9jqep0w0/h8Ywvdk3D9niNQ==} engines: {node: '>=10'} dependencies: '@babel/types': 7.18.7 - entities: 3.0.1 + entities: 4.3.1 dev: true - /@svgr/plugin-jsx/6.2.1_@svgr+core@6.2.1: - resolution: {integrity: sha512-u+MpjTsLaKo6r3pHeeSVsh9hmGRag2L7VzApWIaS8imNguqoUwDq/u6U/NDmYs/KAsrmtBjOEaAAPbwNGXXp1g==} + /@svgr/plugin-jsx/6.3.1_@svgr+core@6.3.1: + resolution: {integrity: sha512-r9+0mYG3hD4nNtUgsTXWGYJomv/bNd7kC16zvsM70I/bGeoCi/3lhTmYqeN6ChWX317OtQCSZZbH4wq9WwoXbw==} engines: {node: '>=10'} peerDependencies: '@svgr/core': ^6.0.0 dependencies: '@babel/core': 7.18.6 - '@svgr/babel-preset': 6.2.0_@babel+core@7.18.6 - '@svgr/core': 6.2.1 - '@svgr/hast-util-to-babel-ast': 6.2.1 + '@svgr/babel-preset': 6.3.1_@babel+core@7.18.6 + '@svgr/core': 6.3.1 + '@svgr/hast-util-to-babel-ast': 6.3.1 svg-parser: 2.0.4 transitivePeerDependencies: - supports-color dev: true - /@svgr/plugin-svgo/6.2.0_@svgr+core@6.2.1: + /@svgr/plugin-svgo/6.2.0_@svgr+core@6.3.1: resolution: {integrity: sha512-oDdMQONKOJEbuKwuy4Np6VdV6qoaLLvoY86hjvQEgU82Vx1MSWRyYms6Sl0f+NtqxLI/rDVufATbP/ev996k3Q==} engines: {node: '>=10'} peerDependencies: '@svgr/core': ^6.0.0 dependencies: - '@svgr/core': 6.2.1 + '@svgr/core': 6.3.1 cosmiconfig: 7.0.1 deepmerge: 4.2.2 svgo: 2.8.0 @@ -6011,14 +6245,14 @@ packages: '@babel/preset-env': 7.18.6_@babel+core@7.18.6 '@babel/preset-react': 7.18.6_@babel+core@7.18.6 '@babel/preset-typescript': 7.18.6_@babel+core@7.18.6 - '@svgr/core': 6.2.1 - '@svgr/plugin-jsx': 6.2.1_@svgr+core@6.2.1 - '@svgr/plugin-svgo': 6.2.0_@svgr+core@6.2.1 + '@svgr/core': 6.3.1 + '@svgr/plugin-jsx': 6.3.1_@svgr+core@6.3.1 + '@svgr/plugin-svgo': 6.2.0_@svgr+core@6.3.1 transitivePeerDependencies: - supports-color dev: true - /@swc/cli/0.1.57_@swc+core@1.2.210: + /@swc/cli/0.1.57_@swc+core@1.2.244: resolution: {integrity: sha512-HxM8TqYHhAg+zp7+RdTU69bnkl4MWdt1ygyp6BDIPjTiaJVH6Dizn2ezbgDS8mnFZI1FyhKvxU/bbaUs8XhzQg==} engines: {node: '>= 12.13'} hasBin: true @@ -6029,152 +6263,175 @@ packages: chokidar: optional: true dependencies: - '@swc/core': 1.2.210 + '@swc/core': 1.2.244 commander: 7.2.0 fast-glob: 3.2.11 slash: 3.0.0 source-map: 0.7.4 dev: true - /@swc/core-android-arm-eabi/1.2.210: - resolution: {integrity: sha512-JGPcCM9XixJIbCHP/fbI79pXTuU9C3V6AxolTy0zEhgNe7r59CiSVcGWN5t5dgkEuwApAxN2iNjJRmz4z+ALAg==} + /@swc/core-android-arm-eabi/1.2.244: + resolution: {integrity: sha512-bQN6SY78bFIm6lz46ss4+ZDU9owevVjF95Cm+3KB/13ZOPF+m5Pdm8WQLoBYTLgJ0r4/XukEe9XXjba/6Kf8kw==} engines: {node: '>=10'} cpu: [arm] os: [android] requiresBuild: true + dependencies: + '@swc/wasm': 1.2.122 optional: true - /@swc/core-android-arm64/1.2.210: - resolution: {integrity: sha512-oP2b8LjZiMNrzOnoC/mVomksSiqQDrIsm4LxPAGTK1fWnbtITLF/Wj/St1wnUu98jZf5kvQP9AH3p2d3J6UaDA==} + /@swc/core-android-arm64/1.2.244: + resolution: {integrity: sha512-CJeL/EeOIzrH+77otNT6wfGF8uadOHo4rEaBN/xvmtnpdADjYJ8Wt85X4nRK0G929bMke/QdJm5ilPNJdmgCTg==} engines: {node: '>=10'} cpu: [arm64] os: [android] requiresBuild: true + dependencies: + '@swc/wasm': 1.2.130 optional: true - /@swc/core-darwin-arm64/1.2.210: - resolution: {integrity: sha512-7PEHF1AHRpVcMtttfOVtyjZq73VUVaLsBnTWUqdFv1toRu42n+CmnXm3brmnSwyi7TTtCU/nahunWNmBbJeG8A==} + /@swc/core-darwin-arm64/1.2.244: + resolution: {integrity: sha512-ZhRK8L/lpPCerUxtrW48cRJtpsUG5xVTUXu3N0TrYuxRzzapHgK+61g1JdtcwdNvEV7l00X4vfCBRYO0S2nsmw==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] requiresBuild: true optional: true - /@swc/core-darwin-x64/1.2.210: - resolution: {integrity: sha512-FEPSgnzRy7X9SaDWtAQKfoodttG90GOyTKqBC/915SPhvuprSf3/PpX2NP63E44/GVgEoNzmNGGiUzbL5k70Dg==} + /@swc/core-darwin-x64/1.2.244: + resolution: {integrity: sha512-4mY8Gkq2ZMUpXYCLceGp7w0Jnxp75N1gQswNFhMBU4k90ElDuBtPoUSnB1v8MwlQtK7WA25MdvwFnBaEJnfxOg==} engines: {node: '>=10'} cpu: [x64] os: [darwin] requiresBuild: true optional: true - /@swc/core-freebsd-x64/1.2.210: - resolution: {integrity: sha512-nehrNTikTfY4H08VUjp20/U5/bt4PC/hi8Zthjz1A0evcIdA0WHajByFj0um/0lYmdF1K6T7A9UuaoOwPEAZ0A==} + /@swc/core-freebsd-x64/1.2.244: + resolution: {integrity: sha512-k/NEZfkgtZ4S96woYArZ89jwJ/L1zyxihTgFFu7SxDt+WRE1EPmY42Gt4y874zi1JiSEFSRHiiueDUfRPu7C0Q==} engines: {node: '>=10'} cpu: [x64] os: [freebsd] requiresBuild: true + dependencies: + '@swc/wasm': 1.2.130 optional: true - /@swc/core-linux-arm-gnueabihf/1.2.210: - resolution: {integrity: sha512-vbSQxZcPBJC2WqVWHZhZIPpv+8xoNug/Qv6FLFPcl735MeNRzgciKC1LlXuy6DNA0RqoCPPyzaK2jnwJyq4bSw==} + /@swc/core-linux-arm-gnueabihf/1.2.244: + resolution: {integrity: sha512-tE9b/oZWhMXwoXHkgHFckMrLrlczvG7HgQAdtDuA6g30Xd/3XmdVzC4NbXR+1HoaGVDh7cf0EFE3aKdfPvPQwA==} engines: {node: '>=10'} cpu: [arm] os: [linux] requiresBuild: true + dependencies: + '@swc/wasm': 1.2.130 optional: true - /@swc/core-linux-arm64-gnu/1.2.210: - resolution: {integrity: sha512-gfItagFmC06q5Uu7WHf/O3n1yKhA7uAo9VPUcNDKKrOh/WSkMI2dxtoeo4u5xOuJWKWedGCcdyJw46uhpYST0w==} + /@swc/core-linux-arm64-gnu/1.2.244: + resolution: {integrity: sha512-zrpVKUeQxZnzorOp3aXhjK1X2/6xuVZcdyxAUDzItP6G4nLbgPBEQLUi6aUjOjquFiihokXoKWaMPQjF/LqH+g==} engines: {node: '>=10'} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@swc/core-linux-arm64-musl/1.2.210: - resolution: {integrity: sha512-3nlNHIYiuppJBB+bbaxLfGN/mnofaVvKVEwUQ9HPtghY87zFIsKl1RfNQtxcOlcarcWya1XAMSk9NXv2dFHWDg==} + /@swc/core-linux-arm64-musl/1.2.244: + resolution: {integrity: sha512-gI6bntk+HDe2witOsQgBDyDDpRmF5dfxbygvVsEdCI+Ko9yj5S9aCsc8WhhbtdcEG1Fo3v/sM/F/9pGatCAwzQ==} engines: {node: '>=10'} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@swc/core-linux-x64-gnu/1.2.210: - resolution: {integrity: sha512-BmhfneSvUzIufUhPaql3YvoWlSrNZiAhpL3c5fPrfQxADywkZLljgh0kckxpeCi5R8iWIUlNSPFmo589QS2Jsg==} + /@swc/core-linux-x64-gnu/1.2.244: + resolution: {integrity: sha512-hwJ5HrDj7asmVGjzaT6SFdhPVxVUIYm9LCuE3yu89+6C5aR9YrCXvpgIjGcHJvEO2PLAtff72FsX7sbXbzzYGQ==} engines: {node: '>=10'} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@swc/core-linux-x64-musl/1.2.210: - resolution: {integrity: sha512-0VT7FeF4Vc/u0oxVLplF/0hcApE+fwC4Njf49SFyvszgAMc9a+fyUNBX2NSqIrTQFwmifRcpQOeXDT8Edy0g6w==} + /@swc/core-linux-x64-musl/1.2.244: + resolution: {integrity: sha512-P8d4AIVN63xaS3t5WhOo0Ejy/X7XaDxXe9sJpEbGQP7CGofhURvgXwe8Q6uhPeWC9AwEPu35ArFQ0ZUmOCY0rg==} engines: {node: '>=10'} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@swc/core-win32-arm64-msvc/1.2.210: - resolution: {integrity: sha512-MwM35TtzMX7GS424y/Bk0CrwWsYRfZ/WX15QAi/Yz+fnPCDLtFNknRC7gAaTpDeqywu6dsXUFyErzK1FC8l8YA==} + /@swc/core-win32-arm64-msvc/1.2.244: + resolution: {integrity: sha512-PZUhgooqPDo+NUo+tIxWI1jKnYVV2ACs8eUkSE++Qf7E4/9Igy79XHbG4/G5ERlCudhdcw4XkYiRN8GJQg6P5w==} engines: {node: '>=10'} cpu: [arm64] os: [win32] requiresBuild: true + dependencies: + '@swc/wasm': 1.2.130 optional: true - /@swc/core-win32-ia32-msvc/1.2.210: - resolution: {integrity: sha512-KpofYa0wqd8urFLrdsz0yQU2YkF7NEDU3+IzqUNnxwamlaEFg/C3l6rTgmiihHXIZuYQS9di4YwykyMVVXutOA==} + /@swc/core-win32-ia32-msvc/1.2.244: + resolution: {integrity: sha512-w7v8fND4E8wOHoVVNJIDjOh8EQiedI9HCsCTEDM/z/dVPsk/rxi6iHYnZG6gv+X/d0aCLeZQOkW9khfyy128cg==} engines: {node: '>=10'} cpu: [ia32] os: [win32] requiresBuild: true + dependencies: + '@swc/wasm': 1.2.130 optional: true - /@swc/core-win32-x64-msvc/1.2.210: - resolution: {integrity: sha512-bUhY0bK8s+B6LSdbNu9L0RKrO/rWrXICtIZyHZolUZKo326hfQ0Iwx+N/xuh6jYpON0RaY9pR0HAyaCDHugoRA==} + /@swc/core-win32-x64-msvc/1.2.244: + resolution: {integrity: sha512-/A9ssLtqXEQrdHnJ9SvZSBF7zQM/0ydz8B3p5BT9kUbAhmNqbfE4/Wy3d2zd7nrF16n6tRm4giCzcIdzd/7mvw==} engines: {node: '>=10'} cpu: [x64] os: [win32] requiresBuild: true optional: true - /@swc/core/1.2.210: - resolution: {integrity: sha512-euiCxnx+dCnE6iDGM04hIvcLS2LADVgIDo0OGnxqRce4SwUNHZi/KcRxIT04YtJd3BdO5v+l4K8RHIx4jvn+TA==} + /@swc/core/1.2.244: + resolution: {integrity: sha512-/UguNMvKgVeR8wGFb53h+Y9hFSiEpeUhC4Cr1neN15wvWZD3lfvN4qAdqNifZiiPKXrCwYy8NTKlHVtHMYzpXw==} engines: {node: '>=10'} hasBin: true + requiresBuild: true optionalDependencies: - '@swc/core-android-arm-eabi': 1.2.210 - '@swc/core-android-arm64': 1.2.210 - '@swc/core-darwin-arm64': 1.2.210 - '@swc/core-darwin-x64': 1.2.210 - '@swc/core-freebsd-x64': 1.2.210 - '@swc/core-linux-arm-gnueabihf': 1.2.210 - '@swc/core-linux-arm64-gnu': 1.2.210 - '@swc/core-linux-arm64-musl': 1.2.210 - '@swc/core-linux-x64-gnu': 1.2.210 - '@swc/core-linux-x64-musl': 1.2.210 - '@swc/core-win32-arm64-msvc': 1.2.210 - '@swc/core-win32-ia32-msvc': 1.2.210 - '@swc/core-win32-x64-msvc': 1.2.210 + '@swc/core-android-arm-eabi': 1.2.244 + '@swc/core-android-arm64': 1.2.244 + '@swc/core-darwin-arm64': 1.2.244 + '@swc/core-darwin-x64': 1.2.244 + '@swc/core-freebsd-x64': 1.2.244 + '@swc/core-linux-arm-gnueabihf': 1.2.244 + '@swc/core-linux-arm64-gnu': 1.2.244 + '@swc/core-linux-arm64-musl': 1.2.244 + '@swc/core-linux-x64-gnu': 1.2.244 + '@swc/core-linux-x64-musl': 1.2.244 + '@swc/core-win32-arm64-msvc': 1.2.244 + '@swc/core-win32-ia32-msvc': 1.2.244 + '@swc/core-win32-x64-msvc': 1.2.244 - /@swc/helpers/0.4.3: - resolution: {integrity: sha512-6JrF+fdUK2zbGpJIlN7G3v966PQjyx/dPt1T9km2wj+EUBqgrxCk3uX4Kct16MIm9gGxfKRcfax2hVf5jvlTzA==} + /@swc/helpers/0.4.11: + resolution: {integrity: sha512-rEUrBSGIoSFuYxwBYtlUFMlE2CwGhmW+w9355/5oduSw8e5h2+Tj4UrAGNNgP9915++wj5vkQo0UuOBqOAq4nw==} dependencies: tslib: 2.4.0 dev: true - /@swc/jest/0.2.21_@swc+core@1.2.210: - resolution: {integrity: sha512-/+NcExiZbxXANNhNPnIdFuGq62CeumulLS1bngwqIXd8H7d96LFUfrYzdt8tlTwLMel8tFtQ5aRjzVkyOTyPDw==} + /@swc/jest/0.2.22_@swc+core@1.2.244: + resolution: {integrity: sha512-PIUIk9IdB1oAVfF9zNIfYoMBoEhahrrSvyryFANas7swC1cF0L5HR0f9X4qfet46oyCHCBtNcSpN0XJEOFIKlw==} engines: {npm: '>= 7.0.0'} peerDependencies: '@swc/core': '*' dependencies: '@jest/create-cache-key-function': 27.5.1 - '@swc/core': 1.2.210 + '@swc/core': 1.2.244 dev: true + /@swc/wasm/1.2.122: + resolution: {integrity: sha512-sM1VCWQxmNhFtdxME+8UXNyPNhxNu7zdb6ikWpz0YKAQQFRGT5ThZgJrubEpah335SUToNg8pkdDF7ibVCjxbQ==} + requiresBuild: true + optional: true + + /@swc/wasm/1.2.130: + resolution: {integrity: sha512-rNcJsBxS70+pv8YUWwf5fRlWX6JoY/HJc25HD/F8m6Kv7XhJdqPPMhyX6TKkUBPAG7TWlZYoxa+rHAjPy4Cj3Q==} + requiresBuild: true + optional: true + /@szmarczak/http-timer/5.0.1: resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} engines: {node: '>=14.16'} @@ -6196,14 +6453,14 @@ packages: pretty-format: 27.5.1 dev: true - /@testing-library/react-hooks/8.0.1_5qggqhesezyescxqnsg4rpj6qa: + /@testing-library/react-hooks/8.0.1_y6lpz2mvcoua7qihahug4ke22i: resolution: {integrity: sha512-Aqhl2IVmLt8IovEVarNDFuJDVWVvhnr9/GCU6UUnrYXwgDFF9h2L2o2P9KBni1AST5sT6riAyoukFLyjQUgD/g==} engines: {node: '>=12'} peerDependencies: - '@types/react': ^16.9.0 || ^17.0.0 - react: ^16.9.0 || ^17.0.0 - react-dom: ^16.9.0 || ^17.0.0 - react-test-renderer: ^16.9.0 || ^17.0.0 + '@types/react': ^16.9.0 || ^17.0.0 || 18 + react: ^16.9.0 || ^17.0.0 || 18 + react-dom: ^16.9.0 || ^17.0.0 || 18 + react-test-renderer: ^16.9.0 || ^17.0.0 || 18 peerDependenciesMeta: '@types/react': optional: true @@ -6215,7 +6472,7 @@ packages: optional: true dependencies: '@babel/runtime': 7.18.6 - '@types/react': 18.0.14 + '@types/react': 18.0.17 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 react-error-boundary: 3.1.4_react@18.2.0 @@ -6226,8 +6483,8 @@ packages: resolution: {integrity: sha512-DB79aA426+deFgGSjnf5grczDPiL4taK3hFaa+M5q7q20Kcve9eQottOG5kZ74KEr55v0tU2CQormSSDK87zYQ==} engines: {node: '>=12'} peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 + react: ^18.0.0 || 18 + react-dom: ^18.0.0 || 18 peerDependenciesMeta: react: optional: true @@ -6244,8 +6501,8 @@ packages: /@tldraw/core/1.14.1: resolution: {integrity: sha512-FAiX/TD/tl5eMvTk0IHhFUSmldCe/UTTOnLL5aWQHqhicF/iTP5m3H12L6kyjN60yfssN8U9g4E/7y70TY7JxA==} peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' + react: '>=16.8 || 18' + react-dom: '>=16.8 || 18' peerDependenciesMeta: react: optional: true @@ -6266,8 +6523,8 @@ packages: /@tldraw/core/1.14.1_mobx@6.6.1: resolution: {integrity: sha512-FAiX/TD/tl5eMvTk0IHhFUSmldCe/UTTOnLL5aWQHqhicF/iTP5m3H12L6kyjN60yfssN8U9g4E/7y70TY7JxA==} peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' + react: '>=16.8 || 18' + react-dom: '>=16.8 || 18' peerDependenciesMeta: react: optional: true @@ -6331,6 +6588,12 @@ packages: resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} dev: true + /@types/acorn/4.0.6: + resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} + dependencies: + '@types/estree': 1.0.0 + dev: true + /@types/aria-query/4.2.2: resolution: {integrity: sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==} dev: true @@ -6373,7 +6636,7 @@ packages: /@types/bonjour/3.5.10: resolution: {integrity: sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==} dependencies: - '@types/node': 18.0.1 + '@types/node': 18.7.13 dev: true /@types/cacheable-request/6.0.2: @@ -6381,7 +6644,7 @@ packages: dependencies: '@types/http-cache-semantics': 4.0.1 '@types/keyv': 3.1.4 - '@types/node': 18.0.1 + '@types/node': 18.7.13 '@types/responselike': 1.0.0 dev: false @@ -6395,7 +6658,7 @@ packages: resolution: {integrity: sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==} dependencies: '@types/express-serve-static-core': 4.17.29 - '@types/node': 18.0.1 + '@types/node': 18.7.13 dev: true /@types/connect/3.4.35: @@ -6429,6 +6692,12 @@ packages: '@types/estree': 0.0.52 '@types/json-schema': 7.0.11 + /@types/estree-jsx/1.0.0: + resolution: {integrity: sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ==} + dependencies: + '@types/estree': 0.0.52 + dev: true + /@types/estree/0.0.39: resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} @@ -6438,6 +6707,10 @@ packages: /@types/estree/0.0.52: resolution: {integrity: sha512-BZWrtCU0bMVAIliIV+HJO1f1PR41M7NKjfxrFJwwhKI1KwhwOxYw1SXg9ao+CIMt774nFuGiG6eU+udtbEI9oQ==} + /@types/estree/1.0.0: + resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} + dev: true + /@types/express-serve-static-core/4.17.29: resolution: {integrity: sha512-uMd++6dMKS32EOuw1Uli3e3BPgdLIXmezcfHv7N4c1s3gkhikBplORPpMq3fuWkxncZN1reb16d5n8yhQ80x7Q==} dependencies: @@ -6464,26 +6737,36 @@ packages: /@types/fs-extra/8.1.2: resolution: {integrity: sha512-SvSrYXfWSc7R4eqnOzbQF4TZmfpNSM9FrSWLU3EUnWBuyZqNBOrv1B1JA3byUDPUl9z4Ab3jeZG2eDdySlgNMg==} dependencies: - '@types/node': 18.0.1 + '@types/node': 18.7.13 dev: true /@types/glob/7.2.0: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 3.0.5 - '@types/node': 18.0.1 + '@types/node': 18.7.13 dev: true /@types/graceful-fs/4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: - '@types/node': 18.0.1 + '@types/node': 18.7.13 + dev: true + + /@types/hast/2.3.4: + resolution: {integrity: sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==} + dependencies: + '@types/unist': 2.0.6 dev: true /@types/history/4.7.11: resolution: {integrity: sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==} dev: true + /@types/html-escaper/3.0.0: + resolution: {integrity: sha512-OcJcvP3Yk8mjYwf/IdXZtTE1tb/u0WF0qa29ER07ZHCYUBZXSN29Z1mBS+/96+kNMGTFUAbSz9X+pHmHpZrTCw==} + dev: true + /@types/html-minifier-terser/6.1.0: resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} dev: true @@ -6495,7 +6778,7 @@ packages: /@types/http-proxy/1.17.9: resolution: {integrity: sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==} dependencies: - '@types/node': 18.0.1 + '@types/node': 18.7.13 dev: true /@types/is-hotkey/0.1.7: @@ -6521,10 +6804,10 @@ packages: '@types/istanbul-lib-report': 3.0.0 dev: true - /@types/jest/28.1.4: - resolution: {integrity: sha512-telv6G5N7zRJiLcI3Rs3o+ipZ28EnE+7EvF0pSrt2pZOMnAVI/f+6/LucDxOvcBcTeTL3JMF744BbVQAVBUQRA==} + /@types/jest/28.1.8: + resolution: {integrity: sha512-8TJkV++s7B6XqnDrzR1m/TT0A0h948Pnl/097veySPN67VRAgQ4gZ7n2KfJo2rVq6njQjdxU3GCCyDvAeuHoiw==} dependencies: - jest-matcher-utils: 28.1.1 + expect: 28.1.1 pretty-format: 28.1.1 dev: true @@ -6562,6 +6845,20 @@ packages: /@types/long/4.0.2: resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} + /@types/mdast/3.0.10: + resolution: {integrity: sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==} + dependencies: + '@types/unist': 2.0.6 + dev: true + + /@types/mdurl/1.0.2: + resolution: {integrity: sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==} + dev: true + + /@types/mdx/2.0.2: + resolution: {integrity: sha512-mJGfgj4aWpiKb8C0nnJJchs1sHBHn0HugkVfqqyQi7Wn6mBRksLeQsPOFvih/Pu8L1vlDzfe/LidhVHBeUk3aQ==} + dev: true + /@types/mime/1.3.2: resolution: {integrity: sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==} @@ -6580,9 +6877,8 @@ packages: /@types/node/18.0.1: resolution: {integrity: sha512-CmR8+Tsy95hhwtZBKJBs0/FFq4XX7sDZHlGGf+0q+BRZfMbOTkzkj0AFAuTyXbObDIoanaBBW0+KEW+m3N16Wg==} - /@types/npmlog/4.1.4: - resolution: {integrity: sha512-WKG4gTr8przEZBiJ5r3s8ZIAoMXNbOgQ+j/d5O4X3x6kZJRLNvyUJuUK/KoG3+8BaOHPhp2m7WC6JKKeovDSzQ==} - dev: true + /@types/node/18.7.13: + resolution: {integrity: sha512-46yIhxSe5xEaJZXWdIBP7GU4HDTG8/eo0qd9atdiL+lFpA03y8KS+lkTN834TWJj5767GbWv4n/P6efyTFt1Dw==} /@types/parse-json/4.0.0: resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} @@ -6610,7 +6906,7 @@ packages: /@types/react-dom/18.0.6: resolution: {integrity: sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA==} dependencies: - '@types/react': 18.0.14 + '@types/react': 18.0.17 dev: true /@types/react-is/17.0.3: @@ -6629,7 +6925,7 @@ packages: resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.0.14 + '@types/react': 18.0.17 '@types/react-router': 5.1.18 dev: true @@ -6637,13 +6933,13 @@ packages: resolution: {integrity: sha512-YYknwy0D0iOwKQgz9v8nOzt2J6l4gouBmDnWqUUznltOTaon+r8US8ky8HvN0tXvc38U9m6z/t2RsVsnd1zM0g==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.0.14 + '@types/react': 18.0.17 dev: true /@types/react-transition-group/4.4.5: resolution: {integrity: sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==} dependencies: - '@types/react': 18.0.14 + '@types/react': 18.0.17 dev: false /@types/react-window/1.8.5: @@ -6659,6 +6955,13 @@ 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/readable-stream/2.3.14: resolution: {integrity: sha512-8jQ5Mp7bsDJEnW/69i6nAaQMoLwAVJVc7ZRAVTrdh/o6XueQsX38TEvKuYyoQj76/mg7WdlRfMrtl9pDLCJWsg==} dependencies: @@ -6669,7 +6972,7 @@ packages: /@types/resolve/1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: - '@types/node': 18.0.1 + '@types/node': 18.7.13 dev: true /@types/responselike/1.0.0: @@ -6707,7 +7010,7 @@ packages: /@types/sockjs/0.3.33: resolution: {integrity: sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==} dependencies: - '@types/node': 18.0.1 + '@types/node': 18.7.13 dev: true /@types/sql.js/1.4.3: @@ -6735,6 +7038,10 @@ packages: resolution: {integrity: sha512-N8Ad4e3oJxh9n9BiZx9cbe/0M3kqDpOTm2wzj13wdDUxDPjfjloWIJaquZzWE1cYTAHpjOH3rcTnXQdpEfS/SQ==} dev: true + /@types/unist/2.0.6: + resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} + dev: true + /@types/uuid/8.3.4: resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} dev: true @@ -6800,19 +7107,6 @@ packages: - supports-color dev: true - /@typescript-eslint/experimental-utils/5.30.5_4x5o4skxv6sl53vpwefgt23khm: - resolution: {integrity: sha512-lsOedOkwAHWiJyvQsv9DtvWnANWecf28eO/L1EPNxLIBRoB7UCDa0uZF61IikZHYubGnDLLHDQ/6KFWl4Nrnjg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - '@typescript-eslint/utils': 5.30.5_4x5o4skxv6sl53vpwefgt23khm - eslint: 8.19.0 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - /@typescript-eslint/parser/5.30.5_4x5o4skxv6sl53vpwefgt23khm: resolution: {integrity: sha512-zj251pcPXI8GO9NDKWWmygP6+UjwWmrdf9qMW/L/uQJBM/0XbU2inxe5io/234y/RCvwpKEYjZ6c1YrXERkK4Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -6919,7 +7213,7 @@ packages: /@use-gesture/react/10.2.16: resolution: {integrity: sha512-kkWi97SHzj/F6XqRXSyrk5pLoSiuRgqvnQl2Bawmf05dWo2q6DL7v5LhnnyPNZRVkCm+WEb3e1nsR+iVza1vmg==} peerDependencies: - react: '>= 16.8.0' + react: '>= 16.8.0 || 18' peerDependenciesMeta: react: optional: true @@ -7123,8 +7417,10 @@ packages: indent-string: 4.0.0 dev: true - /ajv-formats/2.1.1: + /ajv-formats/2.1.1_ajv@8.11.0: resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 peerDependenciesMeta: ajv: optional: true @@ -7188,11 +7484,6 @@ packages: hasBin: true dev: true - /ansi-regex/2.1.1: - resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} - engines: {node: '>=0.10.0'} - dev: true - /ansi-regex/3.0.1: resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==} engines: {node: '>=4'} @@ -7242,10 +7533,6 @@ packages: picomatch: 2.3.1 dev: true - /aproba/1.2.0: - resolution: {integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==} - dev: true - /arch/2.2.0: resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} dev: true @@ -7257,13 +7544,6 @@ packages: file-type: 4.4.0 dev: true - /are-we-there-yet/1.1.7: - resolution: {integrity: sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==} - dependencies: - delegates: 1.0.0 - readable-stream: 2.3.7 - dev: true - /arg/4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} dev: true @@ -7375,6 +7655,11 @@ packages: engines: {node: '>=8'} dev: true + /astring/1.8.3: + resolution: {integrity: sha512-sRpyiNrx2dEYIMmUXprS8nlpRg2Drs8m9ElX9vVEXaCB4XEAJhKfs7IcX0IwShjuOAjLR6wzIrgoptz1n19i1A==} + hasBin: true + dev: true + /async-retry/1.3.3: resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} dependencies: @@ -7551,7 +7836,7 @@ packages: loader-utils: 2.0.2 make-dir: 3.1.0 schema-utils: 2.7.1 - webpack: 5.74.0_@swc+core@1.2.210 + webpack: 5.74.0_@swc+core@1.2.244 dev: true /babel-plugin-const-enum/1.2.0_@babel+core@7.18.6: @@ -7743,6 +8028,10 @@ packages: babel-preset-current-node-syntax: 1.0.1_@babel+core@7.18.6 dev: true + /bail/2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + dev: true + /balanced-match/1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: true @@ -8108,6 +8397,10 @@ packages: url-to-options: 1.0.1 dev: true + /ccount/2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + dev: true + /chalk/2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -8154,6 +8447,22 @@ packages: engines: {node: '>=10'} dev: true + /character-entities-html4/2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + dev: true + + /character-entities-legacy/3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + dev: true + + /character-entities/2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + dev: true + + /character-reference-invalid/2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + dev: true + /chardet/0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} dev: true @@ -8311,11 +8620,6 @@ packages: resolution: {integrity: sha512-JN7Fa6iwAUPyJC/h8myT4Dm+/Weu2TvaPzKcyl1qJ9yX7pmQsEszbF2D+23oFlR7jngCeU2KRkUiakbFTOobRA==} dev: false - /code-point-at/1.1.0: - resolution: {integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==} - engines: {node: '>=0.10.0'} - dev: true - /codemirror-lang-elixir/3.0.0_@codemirror+language@6.2.1: resolution: {integrity: sha512-Liy5MDxf+xw7aFqNfhLfntSK6vsRkI0lSlyytw23P1hWSrb0Bw5WunEB3iKJ49iUu8Kj2dx+vvMqD8I5ms7rSQ==} peerDependencies: @@ -8324,16 +8628,18 @@ packages: '@codemirror/language': 6.2.1 dev: false - /codemirror/6.0.1: + /codemirror/6.0.1_@lezer+common@1.0.0: resolution: {integrity: sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==} dependencies: - '@codemirror/autocomplete': 6.0.3 + '@codemirror/autocomplete': 6.0.3_nq4pwfkqi5icglf26kczcr4s2i '@codemirror/commands': 6.0.1 '@codemirror/language': 6.2.1 '@codemirror/lint': 6.0.0 '@codemirror/search': 6.0.0 '@codemirror/state': 6.1.1 '@codemirror/view': 6.2.0 + transitivePeerDependencies: + - '@lezer/common' dev: false /collect-v8-coverage/1.0.1: @@ -8376,6 +8682,10 @@ packages: delayed-stream: 1.0.0 dev: true + /comma-separated-tokens/2.0.2: + resolution: {integrity: sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg==} + dev: true + /commander/2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -8442,7 +8752,7 @@ packages: dependencies: schema-utils: 4.0.0 serialize-javascript: 6.0.0 - webpack: 5.74.0_@swc+core@1.2.210 + webpack: 5.74.0_@swc+core@1.2.244 dev: true /compression/1.7.4: @@ -8490,10 +8800,6 @@ packages: engines: {node: '>=0.8'} dev: true - /console-control-strings/1.1.0: - resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - dev: true - /constant-case/3.0.4: resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} dependencies: @@ -8534,9 +8840,9 @@ packages: toggle-selection: 1.0.6 dev: false - /copy-webpack-plugin/9.1.0_webpack@5.74.0: - resolution: {integrity: sha512-rxnR7PaGigJzhqETHGmAcxKnLZSR5u1Y3/bcIv/1FnqXedcL/E2ewK7ZCNrArJKCiSv8yVXhTqetJh8inDvfsA==} - engines: {node: '>= 12.13.0'} + /copy-webpack-plugin/10.2.4_webpack@5.74.0: + resolution: {integrity: sha512-xFVltahqlsRcyyJqQbDY6EYTtyQZF9rf+JPjwHObLdPFMEISqkFkr7mFoVOC6BfYS/dNThyoQKvziugm+OnwBg==} + engines: {node: '>= 12.20.0'} peerDependencies: webpack: ^5.1.0 peerDependenciesMeta: @@ -8545,11 +8851,11 @@ packages: dependencies: fast-glob: 3.2.11 glob-parent: 6.0.2 - globby: 11.1.0 + globby: 12.2.0 normalize-path: 3.0.0 - schema-utils: 3.1.1 + schema-utils: 4.0.0 serialize-javascript: 6.0.0 - webpack: 5.74.0_@swc+core@1.2.210 + webpack: 5.74.0_@swc+core@1.2.244 dev: true /core-js-compat/3.23.3: @@ -8564,16 +8870,10 @@ packages: requiresBuild: true dev: true - /core-js/3.23.3: - resolution: {integrity: sha512-oAKwkj9xcWNBAvGbT//WiCdOMpb9XQG92/Fe3ABFM/R16BsHgePG00mFOgKf7IsCtfj8tA1kHtf/VwErhriz5Q==} + /core-js/3.25.0: + resolution: {integrity: sha512-CVU1xvJEfJGhyCpBrzzzU1kjCfgsGUxhEvwUV2e/cOedYWHdmluamx+knDnmhqALddMG16fZvIqvs9aijsHHaA==} requiresBuild: true - /core-js/3.6.5: - resolution: {integrity: sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==} - deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. - requiresBuild: true - dev: true - /core-util-is/1.0.2: resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} dev: true @@ -8681,7 +8981,7 @@ packages: postcss-modules-values: 4.0.0_postcss@8.4.14 postcss-value-parser: 4.2.0 semver: 7.3.7 - webpack: 5.74.0_@swc+core@1.2.210 + webpack: 5.74.0_@swc+core@1.2.244 dev: true /css-minimizer-webpack-plugin/3.4.1_webpack@5.74.0: @@ -8711,7 +9011,7 @@ packages: schema-utils: 4.0.0 serialize-javascript: 6.0.0 source-map: 0.6.1 - webpack: 5.74.0_@swc+core@1.2.210 + webpack: 5.74.0_@swc+core@1.2.244 dev: true /css-minimizer-webpack-plugin/4.0.0_webpack@5.74.0: @@ -8741,7 +9041,7 @@ packages: schema-utils: 4.0.0 serialize-javascript: 6.0.0 source-map: 0.6.1 - webpack: 5.74.0_@swc+core@1.2.210 + webpack: 5.74.0_@swc+core@1.2.244 dev: true /css-select/4.3.0: @@ -8950,6 +9250,11 @@ packages: engines: {node: '>=0.11'} dev: false + /date-fns/2.29.2: + resolution: {integrity: sha512-0VNbwmWJDS/G3ySwFSJA3ayhbURMTJLtwM2DTxf9CWondCnh6DTNlO9JgRSq6ibf4eD0lfMJNBxUdEAHHix+bA==} + engines: {node: '>=0.11'} + dev: false + /dayjs/1.11.3: resolution: {integrity: sha512-xxwlswWOlGhzgQ4TKzASQkUhqERI3egRNqgV4ScR8wlANA/A9tZ7miXa44vTTKEq5l7vWoL5G57bG3zA+Kow0A==} dev: true @@ -9026,6 +9331,12 @@ packages: resolution: {integrity: sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==} dev: true + /decode-named-character-reference/1.0.2: + resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} + dependencies: + character-entities: 2.0.2 + dev: true + /decode-uri-component/0.2.0: resolution: {integrity: sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==} engines: {node: '>=0.10'} @@ -9140,10 +9451,6 @@ packages: engines: {node: '>=0.4.0'} dev: true - /delegates/1.0.0: - resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - dev: true - /depd/1.1.2: resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} engines: {node: '>= 0.6'} @@ -9154,6 +9461,11 @@ packages: engines: {node: '>= 0.8'} dev: true + /dequal/2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + dev: true + /destroy/1.2.0: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} @@ -9186,7 +9498,6 @@ packages: /diff/5.1.0: resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} engines: {node: '>=0.3.1'} - dev: false /dir-glob/3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} @@ -9445,8 +9756,8 @@ packages: resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} dev: true - /entities/3.0.1: - resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==} + /entities/4.3.1: + resolution: {integrity: sha512-o4q/dYJlmyjP2zfnaWDUC6A3BQFmVTX+tZPezK7k0GLSU9QYCauscf5Y+qcEPzKL+EixVouYDgLQK5H9GrLpkg==} engines: {node: '>=0.12'} dev: true @@ -9875,6 +10186,39 @@ packages: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} + /estree-util-attach-comments/2.1.0: + resolution: {integrity: sha512-rJz6I4L0GaXYtHpoMScgDIwM0/Vwbu5shbMeER596rB2D1EWF6+Gj0e0UKzJPZrpoOc87+Q2kgVFHfjAymIqmw==} + dependencies: + '@types/estree': 1.0.0 + dev: true + + /estree-util-build-jsx/2.2.0: + resolution: {integrity: sha512-apsfRxF9uLrqosApvHVtYZjISPvTJ+lBiIydpC+9wE6cF6ssbhnjyQLqaIjgzGxvC2Hbmec1M7g91PoBayYoQQ==} + dependencies: + '@types/estree-jsx': 1.0.0 + estree-util-is-identifier-name: 2.0.1 + estree-walker: 3.0.1 + dev: true + + /estree-util-is-identifier-name/2.0.1: + resolution: {integrity: sha512-rxZj1GkQhY4x1j/CSnybK9cGuMFQYFPLq0iNyopqf14aOVLFtMv7Esika+ObJWPWiOHuMOAHz3YkWoLYYRnzWQ==} + dev: true + + /estree-util-to-js/1.1.0: + resolution: {integrity: sha512-490lbfCcpLk+ofK6HCgqDfYs4KAfq6QVvDw3+Bm1YoKRgiOjKiKYGAVQE1uwh7zVxBgWhqp4FDtp5SqunpUk1A==} + dependencies: + '@types/estree-jsx': 1.0.0 + astring: 1.8.3 + source-map: 0.7.4 + dev: true + + /estree-util-visit/1.2.0: + resolution: {integrity: sha512-wdsoqhWueuJKsh5hqLw3j8lwFqNStm92VcwtAOAny8g/KS/l5Y8RISjR4k5W6skCj3Nirag/WUCMS0Nfy3sgsg==} + dependencies: + '@types/estree-jsx': 1.0.0 + '@types/unist': 2.0.6 + dev: true + /estree-walker/0.6.1: resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==} dev: true @@ -9886,6 +10230,10 @@ packages: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} dev: true + /estree-walker/3.0.1: + resolution: {integrity: sha512-woY0RUD87WzMBUiZLx8NsYr23N5BKsOMZHhu2hoNRVh6NXGfoiT1KOL8G3UHlJAnEDGmfa5ubNA/AacfG+Kb0g==} + dev: true + /esutils/2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} @@ -10230,7 +10578,7 @@ packages: dependencies: loader-utils: 2.0.2 schema-utils: 3.1.1 - webpack: 5.74.0_@swc+core@1.2.210 + webpack: 5.74.0_@swc+core@1.2.244 dev: true /file-saver/2.0.5: @@ -10373,12 +10721,12 @@ packages: semver-regex: 2.0.0 dev: true - /firebase-admin/11.0.1: + /firebase-admin/11.0.1_@firebase+app-types@0.7.0: resolution: {integrity: sha512-rL3wlZbi2Kb/KJgcmj1YHlD4ZhfmhfgRO2YJialxAllm0tj1IQea878hHuBLGmv4DpbW9t9nLvX9kddNR2Y65Q==} engines: {node: '>=14'} dependencies: '@fastify/busboy': 1.1.0 - '@firebase/database-compat': 0.2.4 + '@firebase/database-compat': 0.2.4_@firebase+app-types@0.7.0 '@firebase/database-types': 0.9.10 '@types/node': 18.0.1 jsonwebtoken: 8.5.1 @@ -10394,35 +10742,34 @@ packages: - supports-color dev: false - /firebase/9.9.2: - resolution: {integrity: sha512-zhWUEyBQbwWhLEYhULwZ0A6eRuHP/EP2bpwASpHkI1QQgO1GVqkyCZEpp/feGSDve0COhv9oWC1wOuAzrQrV6g==} + /firebase/9.9.3: + resolution: {integrity: sha512-lU1FstWqfVZQfz4+TWCZvqJYbwZMyoyP0X/xD/YIfrtXgquOMEDTpoasH4P79N9y3I8iV+6gQHuVmpK+AX2elg==} dependencies: - '@firebase/analytics': 0.8.0_@firebase+app@0.7.30 - '@firebase/analytics-compat': 0.1.13_ntdu3hfexp42gsr3dmzonffheq - '@firebase/app': 0.7.30 - '@firebase/app-check': 0.5.12_@firebase+app@0.7.30 - '@firebase/app-check-compat': 0.2.12_ntdu3hfexp42gsr3dmzonffheq - '@firebase/app-compat': 0.1.31 + '@firebase/analytics': 0.8.0_@firebase+app@0.7.31 + '@firebase/analytics-compat': 0.1.13_kowmy6vzi2xcdysg3n6ul4qaae + '@firebase/app': 0.7.31 + '@firebase/app-check': 0.5.12_@firebase+app@0.7.31 + '@firebase/app-check-compat': 0.2.12_kowmy6vzi2xcdysg3n6ul4qaae + '@firebase/app-compat': 0.1.32 '@firebase/app-types': 0.7.0 - '@firebase/auth': 0.20.5_@firebase+app@0.7.30 - '@firebase/auth-compat': 0.2.18_53yvy43rwpg2c45kgeszsxtrca - '@firebase/database': 0.13.4_@firebase+app-types@0.7.0 - '@firebase/database-compat': 0.2.4_@firebase+app-types@0.7.0 - '@firebase/firestore': 3.4.14_@firebase+app@0.7.30 - '@firebase/firestore-compat': 0.1.23_53yvy43rwpg2c45kgeszsxtrca - '@firebase/functions': 0.8.4_54flq6t3lt2vkv56b3wekvuqsq - '@firebase/functions-compat': 0.2.4_53yvy43rwpg2c45kgeszsxtrca - '@firebase/installations': 0.5.12_@firebase+app@0.7.30 - '@firebase/installations-compat': 0.1.12_53yvy43rwpg2c45kgeszsxtrca - '@firebase/messaging': 0.9.16_@firebase+app@0.7.30 - '@firebase/messaging-compat': 0.1.16_ntdu3hfexp42gsr3dmzonffheq - '@firebase/performance': 0.5.12_@firebase+app@0.7.30 - '@firebase/performance-compat': 0.1.12_ntdu3hfexp42gsr3dmzonffheq - '@firebase/polyfill': 0.3.36 - '@firebase/remote-config': 0.3.11_@firebase+app@0.7.30 - '@firebase/remote-config-compat': 0.1.12_ntdu3hfexp42gsr3dmzonffheq - '@firebase/storage': 0.9.9_@firebase+app@0.7.30 - '@firebase/storage-compat': 0.1.17_53yvy43rwpg2c45kgeszsxtrca + '@firebase/auth': 0.20.5_@firebase+app@0.7.31 + '@firebase/auth-compat': 0.2.18_kg6iqletipudcxzgqetrtqyldy + '@firebase/database': 0.13.5_@firebase+app-types@0.7.0 + '@firebase/database-compat': 0.2.5_@firebase+app-types@0.7.0 + '@firebase/firestore': 3.4.14_@firebase+app@0.7.31 + '@firebase/firestore-compat': 0.1.23_kg6iqletipudcxzgqetrtqyldy + '@firebase/functions': 0.8.4_lwgt3sk4yfjgasfpmvix4ixi2u + '@firebase/functions-compat': 0.2.4_kg6iqletipudcxzgqetrtqyldy + '@firebase/installations': 0.5.12_@firebase+app@0.7.31 + '@firebase/installations-compat': 0.1.12_kg6iqletipudcxzgqetrtqyldy + '@firebase/messaging': 0.9.16_@firebase+app@0.7.31 + '@firebase/messaging-compat': 0.1.16_kowmy6vzi2xcdysg3n6ul4qaae + '@firebase/performance': 0.5.12_@firebase+app@0.7.31 + '@firebase/performance-compat': 0.1.12_kowmy6vzi2xcdysg3n6ul4qaae + '@firebase/remote-config': 0.3.11_@firebase+app@0.7.31 + '@firebase/remote-config-compat': 0.1.12_kowmy6vzi2xcdysg3n6ul4qaae + '@firebase/storage': 0.9.9_@firebase+app@0.7.31 + '@firebase/storage-compat': 0.1.17_kg6iqletipudcxzgqetrtqyldy '@firebase/util': 1.6.3 transitivePeerDependencies: - bufferutil @@ -10480,42 +10827,38 @@ packages: resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} dev: true - /fork-ts-checker-webpack-plugin/6.2.10_wln64xm7gyszy6wbwhdijmigya: - resolution: {integrity: sha512-HveFCHWSH2WlYU1tU3PkrupvW8lNFMTfH3Jk0TfC2mtktE9ibHGcifhCsCFvj+kqlDfNIlwmNLiNqR9jnSA7OQ==} - engines: {node: '>=10', yarn: '>=1.0.0'} + /fork-ts-checker-webpack-plugin/7.2.13_xnp4kzegbjokq62cajex2ovgkm: + resolution: {integrity: sha512-fR3WRkOb4bQdWB/y7ssDUlVdrclvwtyCUIHCfivAoYxq9dF7XfrDKbMdZIfwJ7hxIAqkYSGeU7lLJE6xrxIBdg==} + engines: {node: '>=12.13.0', yarn: '>=1.0.0'} peerDependencies: - eslint: '>= 6' - typescript: '>= 2.7' + typescript: '>3.6.0' vue-template-compiler: '*' - webpack: '>= 4' + webpack: ^5.11.0 peerDependenciesMeta: - eslint: - optional: true vue-template-compiler: optional: true webpack: optional: true dependencies: '@babel/code-frame': 7.18.6 - '@types/json-schema': 7.0.11 chalk: 4.1.2 chokidar: 3.5.3 - cosmiconfig: 6.0.0 + cosmiconfig: 7.0.1 deepmerge: 4.2.2 - eslint: 8.19.0 - fs-extra: 9.1.0 - glob: 7.2.3 + fs-extra: 10.1.0 memfs: 3.4.7 minimatch: 3.1.2 - schema-utils: 2.7.0 + node-abort-controller: 3.0.1 + schema-utils: 3.1.1 semver: 7.3.7 - tapable: 1.1.3 + tapable: 2.2.1 typescript: 4.7.4 - webpack: 5.74.0_@swc+core@1.2.210 + webpack: 5.74.0_@swc+core@1.2.244 dev: true - /form-data-encoder/1.7.1: - resolution: {integrity: sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg==} + /form-data-encoder/2.1.0: + resolution: {integrity: sha512-njK60LnfhfDWy+AEUIf9ZQNRAcmXCdDfiNOm2emuPtzwh7U9k/mo9F3S54aPiaZ3vhqUjikVLfcPg2KuBddskQ==} + engines: {node: '>= 14.17'} dev: false /form-data/2.3.3: @@ -10629,19 +10972,6 @@ packages: /functions-have-names/1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - /gauge/2.7.4: - resolution: {integrity: sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==} - dependencies: - aproba: 1.2.0 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - object-assign: 4.1.1 - signal-exit: 3.0.7 - string-width: 1.0.2 - strip-ansi: 3.0.1 - wide-align: 1.1.5 - dev: true - /gaxios/4.3.3: resolution: {integrity: sha512-gSaYYIO1Y3wUtdfHmjDUZ8LWaxJQpiavzbF5Kq53akSzvmVg0RfyOcFDbO1KJ/KCGRFz2qG+lS81F0nkr7cRJA==} engines: {node: '>=10'} @@ -10790,6 +11120,10 @@ packages: ini: 1.3.8 dev: true + /github-markdown-css/5.1.0: + resolution: {integrity: sha512-QLtORwHHtUHhPMHu7i4GKfP6Vx5CWZn+NKQXe+cBhslY1HEt0CTEkP4d/vSROKV0iIJSpl4UtlQ16AD8C6lMug==} + dev: true + /glob-parent/5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -10965,18 +11299,18 @@ packages: dev: false optional: true - /got/12.1.0: - resolution: {integrity: sha512-hBv2ty9QN2RdbJJMK3hesmSkFTjVIHyIDDbssCKnSmq62edGgImJWD10Eb1k77TiV1bxloxqcFAVK8+9pkhOig==} + /got/12.3.1: + resolution: {integrity: sha512-tS6+JMhBh4iXMSXF6KkIsRxmloPln31QHDlcb6Ec3bzxjjFJFr/8aXdpyuLmVc9I4i2HyBHYw1QU5K1ruUdpkw==} engines: {node: '>=14.16'} dependencies: - '@sindresorhus/is': 4.6.0 + '@sindresorhus/is': 5.3.0 '@szmarczak/http-timer': 5.0.1 '@types/cacheable-request': 6.0.2 '@types/responselike': 1.0.0 cacheable-lookup: 6.0.4 cacheable-request: 7.0.2 decompress-response: 6.0.0 - form-data-encoder: 1.7.1 + form-data-encoder: 2.1.0 get-stream: 6.0.1 http2-wrapper: 2.1.11 lowercase-keys: 3.0.0 @@ -11111,16 +11445,38 @@ packages: dependencies: has-symbols: 1.0.3 - /has-unicode/2.0.1: - resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} - dev: true - /has/1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.1 + /hast-util-to-estree/2.1.0: + resolution: {integrity: sha512-Vwch1etMRmm89xGgz+voWXvVHba2iiMdGMKmaMfYt35rbVtFDq8JNwwAIvi8zHMkO6Gvqo9oTMwJTmzVRfXh4g==} + dependencies: + '@types/estree': 1.0.0 + '@types/estree-jsx': 1.0.0 + '@types/hast': 2.3.4 + '@types/unist': 2.0.6 + comma-separated-tokens: 2.0.2 + estree-util-attach-comments: 2.1.0 + estree-util-is-identifier-name: 2.0.1 + hast-util-whitespace: 2.0.0 + mdast-util-mdx-expression: 1.3.0 + mdast-util-mdxjs-esm: 1.3.0 + property-information: 6.1.1 + space-separated-tokens: 2.0.1 + style-to-object: 0.3.0 + unist-util-position: 4.0.3 + zwitch: 2.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /hast-util-whitespace/2.0.0: + resolution: {integrity: sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==} + dev: true + /he/1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true @@ -11184,6 +11540,10 @@ packages: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true + /html-escaper/3.0.3: + resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==} + dev: false + /html-minifier-terser/6.1.0: resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} engines: {node: '>=12'} @@ -11218,7 +11578,7 @@ packages: lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.2.1 - webpack: 5.74.0_@swc+core@1.2.210 + webpack: 5.74.0_@swc+core@1.2.244 dev: true /htmlparser2/6.1.0: @@ -11451,18 +11811,21 @@ packages: engines: {node: '>= 4'} dev: true - /image-minimizer-webpack-plugin/3.2.3_5emixpjl54fjyhdvj76qjbw4py: - resolution: {integrity: sha512-a8mG+lTvIGLFnlU4BpDqbw2tr0IC+R2T57Lx+xGNCR5R6WccZ/gmL8P3y8ic0bOYL1azmh2L6+PptccdjIYqqw==} + /image-minimizer-webpack-plugin/3.3.0_5emixpjl54fjyhdvj76qjbw4py: + resolution: {integrity: sha512-WFLJoOhF2f3c2K4NqpqnJdsBkGcBz/i9+qnhS50qQvC+5FEPQZxcsyKaYrUjvIpox6d3kIoEdip3GbxXwHAEpA==} engines: {node: '>= 12.13.0'} peerDependencies: '@squoosh/lib': '*' imagemin: '*' + sharp: '*' webpack: ^5.1.0 peerDependenciesMeta: '@squoosh/lib': optional: true imagemin: optional: true + sharp: + optional: true webpack: optional: true dependencies: @@ -11586,6 +11949,10 @@ packages: resolution: {integrity: sha512-FBxbgh1+ziiPFA09s0JgYtB7gRYfbfVrcO1sTv2JnPwbbz0M35zSYVUR3oyrTfLo/S+sbY4JG1W16hY91Hbh/Q==} dev: false + /inline-style-parser/0.1.1: + resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} + dev: true + /inquirer/6.5.2: resolution: {integrity: sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==} engines: {node: '>=6.0.0'} @@ -11631,6 +11998,17 @@ packages: engines: {node: '>= 10'} dev: true + /is-alphabetical/2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + dev: true + + /is-alphanumerical/2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + dependencies: + is-alphabetical: 2.0.1 + is-decimal: 2.0.1 + dev: true + /is-arguments/1.1.1: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} @@ -11664,7 +12042,6 @@ packages: /is-buffer/2.0.5: resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} engines: {node: '>=4'} - dev: false /is-builtin-module/3.1.0: resolution: {integrity: sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg==} @@ -11695,6 +12072,10 @@ packages: dependencies: has-tostringtag: 1.0.0 + /is-decimal/2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + dev: true + /is-docker/2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} @@ -11706,13 +12087,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /is-fullwidth-code-point/1.0.0: - resolution: {integrity: sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==} - engines: {node: '>=0.10.0'} - dependencies: - number-is-nan: 1.0.1 - dev: true - /is-fullwidth-code-point/2.0.0: resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} engines: {node: '>=4'} @@ -11746,6 +12120,10 @@ packages: is-extglob: 2.1.1 dev: true + /is-hexadecimal/2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + dev: true + /is-hotkey/0.1.8: resolution: {integrity: sha512-qs3NZ1INIS+H+yeo7cD9pDfwYV/jqRh1JG9S9zYrNudkoUQg7OL7ziXqRKu+InFjUIDoP2o6HIkLYMh1pcWgyQ==} dev: false @@ -11812,6 +12190,11 @@ packages: engines: {node: '>=10'} dev: true + /is-plain-obj/4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + dev: true + /is-plain-object/2.0.4: resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} engines: {node: '>=0.10.0'} @@ -11844,6 +12227,12 @@ packages: '@types/estree': 0.0.52 dev: true + /is-reference/3.0.0: + resolution: {integrity: sha512-Eo1W3wUoHWoCoVM4GVl/a+K0IgiqE5aIo4kJABFyMum1ZORlPkC+UC357sSQUL5w5QCE5kCC9upl75b7+7CY/Q==} + dependencies: + '@types/estree': 0.0.52 + dev: true + /is-regex/1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} @@ -12027,7 +12416,7 @@ packages: '@jest/environment': 27.5.1 '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.0.1 + '@types/node': 18.7.13 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -12055,7 +12444,7 @@ packages: '@jest/expect': 28.1.2 '@jest/test-result': 28.1.1 '@jest/types': 28.1.1 - '@types/node': 18.0.1 + '@types/node': 18.7.13 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -12074,7 +12463,7 @@ packages: - supports-color dev: true - /jest-cli/28.1.2_hxaxlvfys2pc3hefxwkmyo5cpq: + /jest-cli/28.1.2_3glepa5322b7j342guju4hszoy: resolution: {integrity: sha512-l6eoi5Do/IJUXAFL9qRmDiFpBeEJAnjJb1dcd9i/VWfVWbp3mJhuH50dNtX67Ali4Ecvt4eBkWb4hXhPHkAZTw==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} hasBin: true @@ -12091,7 +12480,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.10 import-local: 3.1.0 - jest-config: 28.1.2_hxaxlvfys2pc3hefxwkmyo5cpq + jest-config: 28.1.2_3glepa5322b7j342guju4hszoy jest-util: 28.1.1 jest-validate: 28.1.1 prompts: 2.4.2 @@ -12115,7 +12504,7 @@ packages: '@jest/test-sequencer': 27.5.1 '@jest/types': 27.5.1 babel-jest: 27.5.1_@babel+core@7.18.6 - chalk: 4.1.0 + chalk: 4.1.2 ci-info: 3.3.2 deepmerge: 4.2.2 glob: 7.2.3 @@ -12135,7 +12524,7 @@ packages: pretty-format: 27.5.1 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.8.2_y42jqzo3jkzuv3kp7opavo2xbi + ts-node: 10.8.2_hixnfb2jfw56u6pahjg3ndp4oy transitivePeerDependencies: - bufferutil - canvas @@ -12143,7 +12532,48 @@ packages: - utf-8-validate dev: true - /jest-config/28.1.2_hxaxlvfys2pc3hefxwkmyo5cpq: + /jest-config/27.5.1_ts-node@10.9.1: + resolution: {integrity: sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + peerDependencies: + ts-node: '>=9.0.0' + peerDependenciesMeta: + ts-node: + optional: true + dependencies: + '@babel/core': 7.18.6 + '@jest/test-sequencer': 27.5.1 + '@jest/types': 27.5.1 + babel-jest: 27.5.1_@babel+core@7.18.6 + chalk: 4.1.2 + ci-info: 3.3.2 + deepmerge: 4.2.2 + glob: 7.2.3 + graceful-fs: 4.2.10 + jest-circus: 27.5.1 + jest-environment-jsdom: 27.5.1 + jest-environment-node: 27.5.1 + jest-get-type: 27.5.1 + jest-jasmine2: 27.5.1 + jest-regex-util: 27.5.1 + jest-resolve: 27.5.1 + jest-runner: 27.5.1 + jest-util: 27.5.1 + jest-validate: 27.5.1 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 27.5.1 + slash: 3.0.0 + strip-json-comments: 3.1.1 + ts-node: 10.9.1_hixnfb2jfw56u6pahjg3ndp4oy + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + dev: true + + /jest-config/28.1.2_3glepa5322b7j342guju4hszoy: resolution: {integrity: sha512-g6EfeRqddVbjPVBVY4JWpUY4IvQoFRIZcv4V36QkqzE0IGhEC/VkugFeBMAeUE7PRgC8KJF0yvJNDeQRbamEVA==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} peerDependencies: @@ -12158,7 +12588,7 @@ packages: '@babel/core': 7.18.6 '@jest/test-sequencer': 28.1.1 '@jest/types': 28.1.1 - '@types/node': 18.0.1 + '@types/node': 18.7.13 babel-jest: 28.1.2_@babel+core@7.18.6 chalk: 4.1.2 ci-info: 3.3.2 @@ -12178,7 +12608,7 @@ packages: pretty-format: 28.1.1 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.8.2_y42jqzo3jkzuv3kp7opavo2xbi + ts-node: 10.8.2_hixnfb2jfw56u6pahjg3ndp4oy transitivePeerDependencies: - supports-color dev: true @@ -12246,7 +12676,7 @@ packages: '@jest/environment': 27.5.1 '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.0.1 + '@types/node': 18.7.13 jest-mock: 27.5.1 jest-util: 27.5.1 jsdom: 16.7.0 @@ -12264,7 +12694,7 @@ packages: '@jest/environment': 27.5.1 '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.0.1 + '@types/node': 18.7.13 jest-mock: 27.5.1 jest-util: 27.5.1 dev: true @@ -12276,7 +12706,7 @@ packages: '@jest/environment': 28.1.2 '@jest/fake-timers': 28.1.2 '@jest/types': 28.1.1 - '@types/node': 18.0.1 + '@types/node': 18.7.13 jest-mock: 28.1.1 jest-util: 28.1.1 dev: true @@ -12297,7 +12727,7 @@ packages: dependencies: '@jest/types': 27.5.1 '@types/graceful-fs': 4.1.5 - '@types/node': 18.0.1 + '@types/node': 18.7.13 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -12317,7 +12747,7 @@ packages: dependencies: '@jest/types': 28.1.1 '@types/graceful-fs': 4.1.5 - '@types/node': 18.0.1 + '@types/node': 18.7.13 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -12338,7 +12768,7 @@ packages: '@jest/source-map': 27.5.1 '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.0.1 + '@types/node': 18.7.13 chalk: 4.1.2 co: 4.6.0 expect: 27.5.1 @@ -12426,7 +12856,7 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 18.0.1 + '@types/node': 18.7.13 dev: true /jest-mock/28.1.1: @@ -12434,7 +12864,7 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@jest/types': 28.1.1 - '@types/node': 18.0.1 + '@types/node': 18.7.13 dev: true /jest-pnp-resolver/1.2.2_jest-resolve@27.5.1: @@ -12486,7 +12916,7 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - chalk: 4.1.0 + chalk: 4.1.2 graceful-fs: 4.2.10 jest-haste-map: 27.5.1 jest-pnp-resolver: 1.2.2_jest-resolve@27.5.1 @@ -12521,7 +12951,7 @@ packages: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 18.0.1 + '@types/node': 18.7.13 chalk: 4.1.2 emittery: 0.8.1 graceful-fs: 4.2.10 @@ -12553,7 +12983,7 @@ packages: '@jest/test-result': 28.1.1 '@jest/transform': 28.1.2 '@jest/types': 28.1.1 - '@types/node': 18.0.1 + '@types/node': 18.7.13 chalk: 4.1.2 emittery: 0.10.2 graceful-fs: 4.2.10 @@ -12637,7 +13067,7 @@ packages: resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@types/node': 18.0.1 + '@types/node': 18.7.13 graceful-fs: 4.2.10 dev: true @@ -12707,8 +13137,8 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 18.0.1 - chalk: 4.1.0 + '@types/node': 18.7.13 + chalk: 4.1.2 ci-info: 3.3.2 graceful-fs: 4.2.10 picomatch: 2.3.1 @@ -12719,7 +13149,7 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@jest/types': 28.1.1 - '@types/node': 18.0.1 + '@types/node': 18.7.13 chalk: 4.1.2 ci-info: 3.3.2 graceful-fs: 4.2.10 @@ -12756,7 +13186,7 @@ packages: dependencies: '@jest/test-result': 28.1.1 '@jest/types': 28.1.1 - '@types/node': 18.0.1 + '@types/node': 18.7.13 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.10.2 @@ -12768,7 +13198,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.0.1 + '@types/node': 18.7.13 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -12776,12 +13206,12 @@ packages: resolution: {integrity: sha512-Au7slXB08C6h+xbJPp7VIb6U0XX5Kc9uel/WFc6/rcTzGiaVCBRngBExSYuXSLFPULPSYU3cJ3ybS988lNFQhQ==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@types/node': 18.0.1 + '@types/node': 18.7.13 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest/28.1.2_hxaxlvfys2pc3hefxwkmyo5cpq: + /jest/28.1.2_3glepa5322b7j342guju4hszoy: resolution: {integrity: sha512-Tuf05DwLeCh2cfWCQbcz9UxldoDyiR1E9Igaei5khjonKncYdc6LDfynKCEWozK0oLE3GD+xKAo2u8x/0s6GOg==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} hasBin: true @@ -12794,7 +13224,7 @@ packages: '@jest/core': 28.1.2_ts-node@10.8.2 '@jest/types': 28.1.1 import-local: 3.1.0 - jest-cli: 28.1.2_hxaxlvfys2pc3hefxwkmyo5cpq + jest-cli: 28.1.2_3glepa5322b7j342guju4hszoy transitivePeerDependencies: - '@types/node' - supports-color @@ -12813,17 +13243,17 @@ packages: '@panva/asn1.js': 1.0.0 dev: false - /jotai/1.7.4: - resolution: {integrity: sha512-PvkjL6DA4I0GFNFWt/1MKouTpN6Ohj0qyfuV4LoYGBHQRlf38qF6cPILozYsYZi2Nfeap9MdzWVGSYu1qBElKQ==} + /jotai/1.8.1: + resolution: {integrity: sha512-ZhZ15z+94E95aMYpH9MfwFFYP5m8TuFKkEN/6+3P4SC3dXnQc5s+DbMl+kA4RC63OcUlfi9C0nJU3YDnJfqLIg==} engines: {node: '>=12.7.0'} peerDependencies: '@babel/core': '*' '@babel/template': '*' + '@tanstack/query-core': '*' '@urql/core': '*' immer: '*' optics-ts: '*' - react: '>=16.8' - react-query: '*' + react: '>=16.8 || 18' valtio: '*' wonka: '*' xstate: '*' @@ -12832,6 +13262,8 @@ packages: optional: true '@babel/template': optional: true + '@tanstack/query-core': + optional: true '@urql/core': optional: true immer: @@ -12840,8 +13272,6 @@ packages: optional: true react: optional: true - react-query: - optional: true valtio: optional: true wonka: @@ -13131,6 +13561,11 @@ packages: engines: {node: '>=6'} dev: true + /kleur/4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + dev: true + /klona/2.0.5: resolution: {integrity: sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==} engines: {node: '>= 8'} @@ -13167,7 +13602,7 @@ packages: dependencies: klona: 2.0.5 less: 3.12.2 - webpack: 5.74.0_@swc+core@1.2.210 + webpack: 5.74.0_@swc+core@1.2.244 dev: true /less/3.12.2: @@ -13339,7 +13774,7 @@ packages: webpack-sources: optional: true dependencies: - webpack: 5.74.0_@swc+core@1.2.210 + webpack: 5.74.0_@swc+core@1.2.244 webpack-sources: 3.2.3 dev: true @@ -13418,7 +13853,7 @@ packages: log-update: 4.0.0 p-map: 4.0.0 rfdc: 1.3.0 - rxjs: 7.5.5 + rxjs: 7.5.6 through: 2.3.8 wrap-ansi: 7.0.0 dev: true @@ -13558,6 +13993,10 @@ packages: /long/4.0.0: resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==} + /longest-streak/3.0.1: + resolution: {integrity: sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==} + dev: true + /loose-envify/1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true @@ -13673,10 +14112,133 @@ packages: tmpl: 1.0.5 dev: true + /markdown-extensions/1.1.1: + resolution: {integrity: sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==} + engines: {node: '>=0.10.0'} + dev: true + + /marked/4.0.19: + resolution: {integrity: sha512-rgQF/OxOiLcvgUAj1Q1tAf4Bgxn5h5JZTp04Fx4XUkVhs7B+7YA9JEWJhJpoO8eJt8MkZMwqLCNeNqj1bCREZQ==} + engines: {node: '>= 12'} + hasBin: true + dev: false + + /mdast-util-definitions/5.1.1: + resolution: {integrity: sha512-rQ+Gv7mHttxHOBx2dkF4HWTg+EE+UR78ptQWDylzPKaQuVGdG4HIoY3SrS/pCp80nZ04greFvXbVFHT+uf0JVQ==} + dependencies: + '@types/mdast': 3.0.10 + '@types/unist': 2.0.6 + unist-util-visit: 4.1.1 + dev: true + + /mdast-util-from-markdown/1.2.0: + resolution: {integrity: sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q==} + dependencies: + '@types/mdast': 3.0.10 + '@types/unist': 2.0.6 + decode-named-character-reference: 1.0.2 + mdast-util-to-string: 3.1.0 + micromark: 3.0.10 + micromark-util-decode-numeric-character-reference: 1.0.0 + micromark-util-decode-string: 1.0.2 + micromark-util-normalize-identifier: 1.0.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + unist-util-stringify-position: 3.0.2 + uvu: 0.5.6 + transitivePeerDependencies: + - supports-color + dev: true + + /mdast-util-mdx-expression/1.3.0: + resolution: {integrity: sha512-9kTO13HaL/ChfzVCIEfDRdp1m5hsvsm6+R8yr67mH+KS2ikzZ0ISGLPTbTswOFpLLlgVHO9id3cul4ajutCvCA==} + dependencies: + '@types/estree-jsx': 1.0.0 + '@types/hast': 2.3.4 + '@types/mdast': 3.0.10 + mdast-util-from-markdown: 1.2.0 + mdast-util-to-markdown: 1.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /mdast-util-mdx-jsx/2.1.0: + resolution: {integrity: sha512-KzgzfWMhdteDkrY4mQtyvTU5bc/W4ppxhe9SzelO6QUUiwLAM+Et2Dnjjprik74a336kHdo0zKm7Tp+n6FFeRg==} + dependencies: + '@types/estree-jsx': 1.0.0 + '@types/hast': 2.3.4 + '@types/mdast': 3.0.10 + ccount: 2.0.1 + mdast-util-to-markdown: 1.3.0 + parse-entities: 4.0.0 + stringify-entities: 4.0.3 + unist-util-remove-position: 4.0.1 + unist-util-stringify-position: 3.0.2 + vfile-message: 3.1.2 + dev: true + + /mdast-util-mdx/2.0.0: + resolution: {integrity: sha512-M09lW0CcBT1VrJUaF/PYxemxxHa7SLDHdSn94Q9FhxjCQfuW7nMAWKWimTmA3OyDMSTH981NN1csW1X+HPSluw==} + dependencies: + mdast-util-mdx-expression: 1.3.0 + mdast-util-mdx-jsx: 2.1.0 + mdast-util-mdxjs-esm: 1.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /mdast-util-mdxjs-esm/1.3.0: + resolution: {integrity: sha512-7N5ihsOkAEGjFotIX9p/YPdl4TqUoMxL4ajNz7PbT89BqsdWJuBC9rvgt6wpbwTZqWWR0jKWqQbwsOWDBUZv4g==} + dependencies: + '@types/estree-jsx': 1.0.0 + '@types/hast': 2.3.4 + '@types/mdast': 3.0.10 + mdast-util-from-markdown: 1.2.0 + mdast-util-to-markdown: 1.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /mdast-util-to-hast/12.2.1: + resolution: {integrity: sha512-dyindR2P7qOqXO1hQirZeGtVbiX7xlNQbw7gGaAwN4A1dh4+X8xU/JyYmRoyB8Fu1uPXzp7mlL5QwW7k+knvgA==} + dependencies: + '@types/hast': 2.3.4 + '@types/mdast': 3.0.10 + '@types/mdurl': 1.0.2 + mdast-util-definitions: 5.1.1 + mdurl: 1.0.1 + micromark-util-sanitize-uri: 1.0.0 + trim-lines: 3.0.1 + unist-builder: 3.0.0 + unist-util-generated: 2.0.0 + unist-util-position: 4.0.3 + unist-util-visit: 4.1.1 + dev: true + + /mdast-util-to-markdown/1.3.0: + resolution: {integrity: sha512-6tUSs4r+KK4JGTTiQ7FfHmVOaDrLQJPmpjD6wPMlHGUVXoG9Vjc3jIeP+uyBWRf8clwB2blM+W7+KrlMYQnftA==} + dependencies: + '@types/mdast': 3.0.10 + '@types/unist': 2.0.6 + longest-streak: 3.0.1 + mdast-util-to-string: 3.1.0 + micromark-util-decode-string: 1.0.2 + unist-util-visit: 4.1.1 + zwitch: 2.0.2 + dev: true + + /mdast-util-to-string/3.1.0: + resolution: {integrity: sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==} + dev: true + /mdn-data/2.0.14: resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} dev: true + /mdurl/1.0.1: + resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} + dev: true + /media-typer/0.3.0: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} @@ -13710,6 +14272,265 @@ packages: engines: {node: '>= 0.6'} dev: true + /micromark-core-commonmark/1.0.6: + resolution: {integrity: sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==} + dependencies: + decode-named-character-reference: 1.0.2 + micromark-factory-destination: 1.0.0 + micromark-factory-label: 1.0.2 + micromark-factory-space: 1.0.0 + micromark-factory-title: 1.0.2 + micromark-factory-whitespace: 1.0.0 + micromark-util-character: 1.1.0 + micromark-util-chunked: 1.0.0 + micromark-util-classify-character: 1.0.0 + micromark-util-html-tag-name: 1.1.0 + micromark-util-normalize-identifier: 1.0.0 + micromark-util-resolve-all: 1.0.0 + micromark-util-subtokenize: 1.0.2 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + uvu: 0.5.6 + dev: true + + /micromark-extension-mdx-expression/1.0.3: + resolution: {integrity: sha512-TjYtjEMszWze51NJCZmhv7MEBcgYRgb3tJeMAJ+HQCAaZHHRBaDCccqQzGizR/H4ODefP44wRTgOn2vE5I6nZA==} + dependencies: + micromark-factory-mdx-expression: 1.0.6 + micromark-factory-space: 1.0.0 + micromark-util-character: 1.1.0 + micromark-util-events-to-acorn: 1.2.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + uvu: 0.5.6 + dev: true + + /micromark-extension-mdx-jsx/1.0.3: + resolution: {integrity: sha512-VfA369RdqUISF0qGgv2FfV7gGjHDfn9+Qfiv5hEwpyr1xscRj/CiVRkU7rywGFCO7JwJ5L0e7CJz60lY52+qOA==} + dependencies: + '@types/acorn': 4.0.6 + estree-util-is-identifier-name: 2.0.1 + micromark-factory-mdx-expression: 1.0.6 + micromark-factory-space: 1.0.0 + micromark-util-character: 1.1.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + uvu: 0.5.6 + vfile-message: 3.1.2 + dev: true + + /micromark-extension-mdx-md/1.0.0: + resolution: {integrity: sha512-xaRAMoSkKdqZXDAoSgp20Azm0aRQKGOl0RrS81yGu8Hr/JhMsBmfs4wR7m9kgVUIO36cMUQjNyiyDKPrsv8gOw==} + dependencies: + micromark-util-types: 1.0.2 + dev: true + + /micromark-extension-mdxjs-esm/1.0.3: + resolution: {integrity: sha512-2N13ol4KMoxb85rdDwTAC6uzs8lMX0zeqpcyx7FhS7PxXomOnLactu8WI8iBNXW8AVyea3KIJd/1CKnUmwrK9A==} + dependencies: + micromark-core-commonmark: 1.0.6 + micromark-util-character: 1.1.0 + micromark-util-events-to-acorn: 1.2.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + unist-util-position-from-estree: 1.1.1 + uvu: 0.5.6 + vfile-message: 3.1.2 + dev: true + + /micromark-extension-mdxjs/1.0.0: + resolution: {integrity: sha512-TZZRZgeHvtgm+IhtgC2+uDMR7h8eTKF0QUX9YsgoL9+bADBpBY6SiLvWqnBlLbCEevITmTqmEuY3FoxMKVs1rQ==} + dependencies: + acorn: 8.7.1 + acorn-jsx: 5.3.2_acorn@8.7.1 + micromark-extension-mdx-expression: 1.0.3 + micromark-extension-mdx-jsx: 1.0.3 + micromark-extension-mdx-md: 1.0.0 + micromark-extension-mdxjs-esm: 1.0.3 + micromark-util-combine-extensions: 1.0.0 + micromark-util-types: 1.0.2 + dev: true + + /micromark-factory-destination/1.0.0: + resolution: {integrity: sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==} + dependencies: + micromark-util-character: 1.1.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + dev: true + + /micromark-factory-label/1.0.2: + resolution: {integrity: sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==} + dependencies: + micromark-util-character: 1.1.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + uvu: 0.5.6 + dev: true + + /micromark-factory-mdx-expression/1.0.6: + resolution: {integrity: sha512-WRQIc78FV7KrCfjsEf/sETopbYjElh3xAmNpLkd1ODPqxEngP42eVRGbiPEQWpRV27LzqW+XVTvQAMIIRLPnNA==} + dependencies: + micromark-factory-space: 1.0.0 + micromark-util-character: 1.1.0 + micromark-util-events-to-acorn: 1.2.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + unist-util-position-from-estree: 1.1.1 + uvu: 0.5.6 + vfile-message: 3.1.2 + dev: true + + /micromark-factory-space/1.0.0: + resolution: {integrity: sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==} + dependencies: + micromark-util-character: 1.1.0 + micromark-util-types: 1.0.2 + dev: true + + /micromark-factory-title/1.0.2: + resolution: {integrity: sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==} + dependencies: + micromark-factory-space: 1.0.0 + micromark-util-character: 1.1.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + uvu: 0.5.6 + dev: true + + /micromark-factory-whitespace/1.0.0: + resolution: {integrity: sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==} + dependencies: + micromark-factory-space: 1.0.0 + micromark-util-character: 1.1.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + dev: true + + /micromark-util-character/1.1.0: + resolution: {integrity: sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==} + dependencies: + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + dev: true + + /micromark-util-chunked/1.0.0: + resolution: {integrity: sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==} + dependencies: + micromark-util-symbol: 1.0.1 + dev: true + + /micromark-util-classify-character/1.0.0: + resolution: {integrity: sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==} + dependencies: + micromark-util-character: 1.1.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + dev: true + + /micromark-util-combine-extensions/1.0.0: + resolution: {integrity: sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==} + dependencies: + micromark-util-chunked: 1.0.0 + micromark-util-types: 1.0.2 + dev: true + + /micromark-util-decode-numeric-character-reference/1.0.0: + resolution: {integrity: sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==} + dependencies: + micromark-util-symbol: 1.0.1 + dev: true + + /micromark-util-decode-string/1.0.2: + resolution: {integrity: sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==} + dependencies: + decode-named-character-reference: 1.0.2 + micromark-util-character: 1.1.0 + micromark-util-decode-numeric-character-reference: 1.0.0 + micromark-util-symbol: 1.0.1 + dev: true + + /micromark-util-encode/1.0.1: + resolution: {integrity: sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==} + dev: true + + /micromark-util-events-to-acorn/1.2.0: + resolution: {integrity: sha512-WWp3bf7xT9MppNuw3yPjpnOxa8cj5ACivEzXJKu0WwnjBYfzaBvIAT9KfeyI0Qkll+bfQtfftSwdgTH6QhTOKw==} + dependencies: + '@types/acorn': 4.0.6 + '@types/estree': 1.0.0 + estree-util-visit: 1.2.0 + micromark-util-types: 1.0.2 + uvu: 0.5.6 + vfile-location: 4.0.1 + vfile-message: 3.1.2 + dev: true + + /micromark-util-html-tag-name/1.1.0: + resolution: {integrity: sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==} + dev: true + + /micromark-util-normalize-identifier/1.0.0: + resolution: {integrity: sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==} + dependencies: + micromark-util-symbol: 1.0.1 + dev: true + + /micromark-util-resolve-all/1.0.0: + resolution: {integrity: sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==} + dependencies: + micromark-util-types: 1.0.2 + dev: true + + /micromark-util-sanitize-uri/1.0.0: + resolution: {integrity: sha512-cCxvBKlmac4rxCGx6ejlIviRaMKZc0fWm5HdCHEeDWRSkn44l6NdYVRyU+0nT1XC72EQJMZV8IPHF+jTr56lAg==} + dependencies: + micromark-util-character: 1.1.0 + micromark-util-encode: 1.0.1 + micromark-util-symbol: 1.0.1 + dev: true + + /micromark-util-subtokenize/1.0.2: + resolution: {integrity: sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==} + dependencies: + micromark-util-chunked: 1.0.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + uvu: 0.5.6 + dev: true + + /micromark-util-symbol/1.0.1: + resolution: {integrity: sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==} + dev: true + + /micromark-util-types/1.0.2: + resolution: {integrity: sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==} + dev: true + + /micromark/3.0.10: + resolution: {integrity: sha512-ryTDy6UUunOXy2HPjelppgJ2sNfcPz1pLlMdA6Rz9jPzhLikWXv/irpWV/I2jd68Uhmny7hHxAlAhk4+vWggpg==} + dependencies: + '@types/debug': 4.1.7 + debug: 4.3.4 + decode-named-character-reference: 1.0.2 + micromark-core-commonmark: 1.0.6 + micromark-factory-space: 1.0.0 + micromark-util-character: 1.1.0 + micromark-util-chunked: 1.0.0 + micromark-util-combine-extensions: 1.0.0 + micromark-util-decode-numeric-character-reference: 1.0.0 + micromark-util-encode: 1.0.1 + micromark-util-normalize-identifier: 1.0.0 + micromark-util-resolve-all: 1.0.0 + micromark-util-sanitize-uri: 1.0.0 + micromark-util-subtokenize: 1.0.2 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + uvu: 0.5.6 + transitivePeerDependencies: + - supports-color + dev: true + /micromatch/4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} @@ -13790,7 +14611,7 @@ packages: dependencies: loader-utils: 2.0.2 schema-utils: 3.1.1 - webpack: 5.74.0_@swc+core@1.2.210 + webpack: 5.74.0_@swc+core@1.2.244 webpack-sources: 1.4.3 dev: false @@ -13804,7 +14625,7 @@ packages: optional: true dependencies: schema-utils: 4.0.0 - webpack: 5.74.0_@swc+core@1.2.210 + webpack: 5.74.0_@swc+core@1.2.244 dev: true /mini-css-extract-plugin/2.6.1_webpack@5.74.0: @@ -13883,10 +14704,12 @@ packages: resolution: {integrity: sha512-bRuZp3C0itgLKHu/VNxi66DN/XVkQG7xtoBVWxpvC5FhAqbOCP21+nPhULjnzEqd7xBMybp6KwytdUpZKEgpIQ==} peerDependencies: mobx: ^6.1.0 - react: ^16.8.0 || ^17 || ^18 + react: ^16.8.0 || ^17 || ^18 || 18 react-dom: '*' react-native: '*' peerDependenciesMeta: + mobx: + optional: true react: optional: true react-dom: @@ -13899,10 +14722,12 @@ packages: resolution: {integrity: sha512-bRuZp3C0itgLKHu/VNxi66DN/XVkQG7xtoBVWxpvC5FhAqbOCP21+nPhULjnzEqd7xBMybp6KwytdUpZKEgpIQ==} peerDependencies: mobx: ^6.1.0 - react: ^16.8.0 || ^17 || ^18 + react: ^16.8.0 || ^17 || ^18 || 18 react-dom: '*' react-native: '*' peerDependenciesMeta: + mobx: + optional: true react: optional: true react-dom: @@ -13922,6 +14747,11 @@ packages: engines: {node: '>=10'} dev: false + /mri/1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + dev: true + /mrmime/1.0.1: resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} engines: {node: '>=10'} @@ -13996,6 +14826,10 @@ packages: tslib: 2.4.0 dev: true + /node-abort-controller/3.0.1: + resolution: {integrity: sha512-/ujIVxthRs+7q6hsdjHMaj8hRG9NuWmwrz+JdRwZ14jdFoKSkm+vDsCbF9PLpnSqjaWQJuTmVtcWHNLr+vrOFw==} + dev: true + /node-addon-api/3.2.1: resolution: {integrity: sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==} dev: true @@ -14059,8 +14893,8 @@ packages: '@emotion/react': ^11.4.1 '@emotion/styled': ^11.3.0 '@mui/material': ^5.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || 18 peerDependenciesMeta: '@emotion/react': optional: true @@ -14109,32 +14943,18 @@ packages: path-key: 4.0.0 dev: true - /npmlog/4.1.2: - resolution: {integrity: sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==} - dependencies: - are-we-there-yet: 1.1.7 - console-control-strings: 1.1.0 - gauge: 2.7.4 - set-blocking: 2.0.0 - dev: true - /nth-check/2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} dependencies: boolbase: 1.0.0 dev: true - /number-is-nan/1.0.1: - resolution: {integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==} - engines: {node: '>=0.10.0'} - dev: true - /nwsapi/2.2.1: resolution: {integrity: sha512-JYOWTeFoS0Z93587vRJgASD5Ut11fYl5NyihP3KrYBvMe1FRRs6RN7m20SA/16GM4P6hTnZjT+UmDOt38UeXNg==} dev: true - /nx/14.4.2_@swc+core@1.2.210: - resolution: {integrity: sha512-bYO//HuwQL4X8y+2BjUPtkPLDiYI1zMejQo6+uJl3+VdYPcsjwW/ca581tBPHiPH95XnHiBartnMrMJtn11grw==} + /nx/14.5.10_@swc+core@1.2.244: + resolution: {integrity: sha512-dqiV+zY32k98mfKFTgiQyYd9HYZmB1zoJj6gYniEuqzs6CKp8ZSpeRDaVQRxR6wEMvW9MSTA9kBg8sJ78W/NZg==} hasBin: true requiresBuild: true peerDependencies: @@ -14146,10 +14966,10 @@ packages: '@swc/core': optional: true dependencies: - '@nrwl/cli': 14.4.2 - '@nrwl/tao': 14.4.2_@swc+core@1.2.210 + '@nrwl/cli': 14.5.10 + '@nrwl/tao': 14.5.10_@swc+core@1.2.244 '@parcel/watcher': 2.0.4 - '@swc/core': 1.2.210 + '@swc/core': 1.2.244 chalk: 4.1.0 chokidar: 3.5.3 cli-cursor: 3.1.0 @@ -14526,6 +15346,19 @@ packages: dependencies: callsites: 3.1.0 + /parse-entities/4.0.0: + resolution: {integrity: sha512-5nk9Fn03x3rEhGaX1FU6IDwG/k+GxLXlFAkgrbM1asuAFl3BhdQWvASaIsmwWypRNcZKHPYnIuOSfIWEyEQnPQ==} + dependencies: + '@types/unist': 2.0.6 + character-entities: 2.0.2 + character-entities-legacy: 3.0.0 + character-reference-invalid: 2.0.1 + decode-named-character-reference: 1.0.2 + is-alphanumerical: 2.0.1 + is-decimal: 2.0.1 + is-hexadecimal: 2.0.1 + dev: true + /parse-json/5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} @@ -14645,6 +15478,13 @@ packages: resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} dev: true + /periscopic/3.0.4: + resolution: {integrity: sha512-SFx68DxCv0Iyo6APZuw/AKewkkThGwssmU0QWtTlvov3VAtPX+QJ4CadwSaz8nrT5jPIuxdvJWB4PnD2KNDxQg==} + dependencies: + estree-walker: 3.0.1 + is-reference: 3.0.0 + dev: true + /picocolors/1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} @@ -14801,7 +15641,7 @@ packages: resolve: 1.22.1 dev: true - /postcss-load-config/3.1.4_i7duc3lt6p42geuj2nwruihc6u: + /postcss-load-config/3.1.4_pe6iykxod2v7i2uk6okjazxzki: resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} engines: {node: '>= 10'} peerDependencies: @@ -14815,7 +15655,7 @@ packages: dependencies: lilconfig: 2.0.5 postcss: 8.4.14 - ts-node: 10.8.2_y42jqzo3jkzuv3kp7opavo2xbi + ts-node: 10.9.1_hixnfb2jfw56u6pahjg3ndp4oy yaml: 1.10.2 dev: true @@ -14833,7 +15673,7 @@ packages: klona: 2.0.5 postcss: 8.4.14 semver: 7.3.7 - webpack: 5.74.0_@swc+core@1.2.210 + webpack: 5.74.0_@swc+core@1.2.244 dev: true /postcss-merge-longhand/5.1.6_postcss@8.4.14: @@ -15188,19 +16028,10 @@ packages: react-is: 18.2.0 dev: true - /pretty-hrtime/1.0.3: - resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} - engines: {node: '>= 0.8'} - dev: true - /process-nextick-args/2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} dev: true - /promise-polyfill/8.1.3: - resolution: {integrity: sha512-MG5r82wBzh7pSKDRa9y+vllNHz3e3d4CNj1PQE4BQYxLme0gKYYBm9YENq+UkEikyZ0XbiGWxYlVw3Rl9O/U8g==} - dev: true - /promise.series/0.2.0: resolution: {integrity: sha512-VWQJyU2bcDTgZw8kpfBpB/ejZASlCrzwz5f2hjb/zlujOEB4oeiAhHygAWq8ubsX2GVkD4kCU5V2dwOTaCY5EQ==} engines: {node: '>=0.12'} @@ -15221,6 +16052,10 @@ packages: object-assign: 4.1.1 react-is: 16.13.1 + /property-information/6.1.1: + resolution: {integrity: sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w==} + dev: true + /proto-list/1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} dev: true @@ -15371,20 +16206,20 @@ packages: dependencies: loader-utils: 2.0.2 schema-utils: 3.1.1 - webpack: 5.74.0_@swc+core@1.2.210 + webpack: 5.74.0_@swc+core@1.2.244 dev: true - /react-date-range/1.4.0_date-fns@2.28.0: + /react-date-range/1.4.0_date-fns@2.29.2: resolution: {integrity: sha512-+9t0HyClbCqw1IhYbpWecjsiaftCeRN5cdhsi9v06YdimwyMR2yYHWcgVn3URwtN/txhqKpEZB6UX1fHpvK76w==} peerDependencies: date-fns: 2.0.0-alpha.7 || >=2.0.0 - react: ^0.14 || ^15.0.0-rc || >=15.0 + react: ^0.14 || ^15.0.0-rc || >=15.0 || 18 peerDependenciesMeta: react: optional: true dependencies: classnames: 2.3.1 - date-fns: 2.28.0 + date-fns: 2.29.2 prop-types: 15.8.1 react-list: 0.8.17 shallow-equal: 1.2.1 @@ -15393,7 +16228,7 @@ packages: /react-dom/18.2.0_react@18.2.0: resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} peerDependencies: - react: ^18.2.0 + react: ^18.2.0 || 18 peerDependenciesMeta: react: optional: true @@ -15405,8 +16240,8 @@ packages: /react-draggable/4.4.5: resolution: {integrity: sha512-OMHzJdyJbYTZo4uQE393fHcqqPYsEtkjfMgvCHr6rejT+Ezn4OZbNyGH50vv+SunC1RMvwOTSWkEODQLzw1M9g==} peerDependencies: - react: '>= 16.3.0' - react-dom: '>= 16.3.0' + react: '>= 16.3.0 || 18' + react-dom: '>= 16.3.0 || 18' peerDependenciesMeta: react: optional: true @@ -15421,7 +16256,7 @@ packages: resolution: {integrity: sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==} engines: {node: '>=10', npm: '>=6'} peerDependencies: - react: '>=16.13.1' + react: '>=16.13.1 || 18' peerDependenciesMeta: react: optional: true @@ -15433,7 +16268,7 @@ packages: resolution: {integrity: sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==} engines: {node: '>=10', npm: '>=6'} peerDependencies: - react: '>=16.13.1' + react: '>=16.13.1 || 18' peerDependenciesMeta: react: optional: true @@ -15445,8 +16280,8 @@ packages: /react-hotkeys-hook/3.4.6: resolution: {integrity: sha512-SiGKHnauaAQglRA7qeiW5LTa0KoT2ssv8YGYKZQoM3P9v5JFEHJdXOSFml1N6K86oKQ8dLCLlxqBqGlSJWGmxQ==} peerDependencies: - react: '>=16.8.1' - react-dom: '>=16.8.1' + react: '>=16.8.1 || 18' + react-dom: '>=16.8.1 || 18' peerDependenciesMeta: react: optional: true @@ -15460,7 +16295,7 @@ packages: resolution: {integrity: sha512-gK/AylAQC5DvCD5YLNCHW4PNzpCfrWIyVAXbSMl+/5QXzlDP8VdBoqE2s2niGHB+zIXwBV9hRXbDrVuupbgHcg==} peerDependencies: i18next: '>= 19.0.0' - react: '>= 16.8.0' + react: '>= 16.8.0 || 18' react-dom: '*' react-native: '*' peerDependenciesMeta: @@ -15488,7 +16323,7 @@ packages: /react-list/0.8.17: resolution: {integrity: sha512-pgmzGi0G5uGrdHzMhgO7KR1wx5ZXVvI3SsJUmkblSAKtewIhMwbQiMuQiTE83ozo04BQJbe0r3WIWzSO0dR1xg==} peerDependencies: - react: 0.14 || 15 - 18 + react: 0.14 || 15 - 18 || 18 peerDependenciesMeta: react: optional: true @@ -15504,7 +16339,7 @@ packages: /react-resizable/3.0.4: resolution: {integrity: sha512-StnwmiESiamNzdRHbSSvA65b0ZQJ7eVQpPusrSmcpyGKzC0gojhtO62xxH6YOBmepk9dQTBi9yxidL3W4s3EBA==} peerDependencies: - react: '>= 16.3' + react: '>= 16.3 || 18' peerDependenciesMeta: react: optional: true @@ -15518,8 +16353,8 @@ packages: /react-router-dom/6.3.0_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==} peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' + react: '>=16.8 || 18' + react-dom: '>=16.8 || 18' peerDependenciesMeta: react: optional: true @@ -15535,7 +16370,7 @@ packages: /react-router/6.3.0_react@18.2.0: resolution: {integrity: sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ==} peerDependencies: - react: '>=16.8' + react: '>=16.8 || 18' peerDependenciesMeta: react: optional: true @@ -15547,7 +16382,7 @@ packages: /react-shallow-renderer/16.15.0_react@18.2.0: resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==} peerDependencies: - react: ^16.0.0 || ^17.0.0 || ^18.0.0 + react: ^16.0.0 || ^17.0.0 || ^18.0.0 || 18 peerDependenciesMeta: react: optional: true @@ -15560,7 +16395,7 @@ packages: /react-test-renderer/18.2.0_react@18.2.0: resolution: {integrity: sha512-JWD+aQ0lh2gvh4NM3bBM42Kx+XybOxCpgYK7F8ugAlpaTSnWsX+39Z4XkOykGZAHrjwwTZT3x3KxswVWxHPUqA==} peerDependencies: - react: ^18.2.0 + react: ^18.2.0 || 18 peerDependenciesMeta: react: optional: true @@ -15574,8 +16409,8 @@ packages: /react-transition-group/4.4.2: resolution: {integrity: sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==} peerDependencies: - react: '>=16.6.0' - react-dom: '>=16.6.0' + react: '>=16.6.0 || 18' + react-dom: '>=16.6.0 || 18' peerDependenciesMeta: react: optional: true @@ -15591,8 +16426,8 @@ packages: /react-transition-group/4.4.2_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==} peerDependencies: - react: '>=16.6.0' - react-dom: '>=16.6.0' + react: '>=16.6.0 || 18' + react-dom: '>=16.6.0 || 18' peerDependenciesMeta: react: optional: true @@ -15611,8 +16446,8 @@ packages: resolution: {integrity: sha512-JHEZbPXBpKMmoNO1bNhoXOOLg/ujhL/BU4IqVU9r8eQPcy5KQnGHIHDRkJ0ns9IM5+Aq5LNwt3j8t3tIrePQzA==} engines: {node: '>8.0.0'} peerDependencies: - react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 - react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || 18 + react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || 18 peerDependenciesMeta: react: optional: true @@ -15737,6 +16572,34 @@ packages: engines: {node: '>= 0.10'} dev: true + /remark-mdx/2.1.3: + resolution: {integrity: sha512-3SmtXOy9+jIaVctL8Cs3VAQInjRLGOwNXfrBB9KCT+EpJpKD3PQiy0x8hUNGyjQmdyOs40BqgPU7kYtH9uoR6w==} + dependencies: + mdast-util-mdx: 2.0.0 + micromark-extension-mdxjs: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /remark-parse/10.0.1: + resolution: {integrity: sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==} + dependencies: + '@types/mdast': 3.0.10 + mdast-util-from-markdown: 1.2.0 + unified: 10.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /remark-rehype/10.1.0: + resolution: {integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==} + dependencies: + '@types/hast': 2.3.4 + '@types/mdast': 3.0.10 + mdast-util-to-hast: 12.2.1 + unified: 10.1.2 + dev: true + /renderkid/3.0.0: resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} dependencies: @@ -15887,7 +16750,7 @@ packages: /rifm/0.12.1: resolution: {integrity: sha512-OGA1Bitg/dSJtI/c4dh90svzaUPt228kzFsUkJbtA2c964IqEAwWXeL9ZJi86xWv3j5SMqRvGULl7bA6cK0Bvg==} peerDependencies: - react: '>=16.8' + react: '>=16.8 || 18' peerDependenciesMeta: react: optional: true @@ -15929,7 +16792,7 @@ packages: rollup: 2.75.7 dev: true - /rollup-plugin-postcss/4.0.2_i7duc3lt6p42geuj2nwruihc6u: + /rollup-plugin-postcss/4.0.2_pe6iykxod2v7i2uk6okjazxzki: resolution: {integrity: sha512-05EaY6zvZdmvPUDi3uCcAQoESDcYnv8ogJJQRp6V5kZ6J6P7uAVJlrTZcaaA20wTH527YTnKfkAoPxWI/jPp4w==} engines: {node: '>=10'} peerDependencies: @@ -15942,7 +16805,7 @@ packages: p-queue: 6.6.2 pify: 5.0.0 postcss: 8.4.14 - postcss-load-config: 3.1.4_i7duc3lt6p42geuj2nwruihc6u + postcss-load-config: 3.1.4_pe6iykxod2v7i2uk6okjazxzki postcss-modules: 4.3.1_postcss@8.4.14 promise.series: 0.2.0 resolve: 1.22.1 @@ -16002,17 +16865,6 @@ packages: queue-microtask: 1.2.3 dev: true - /rxjs-for-await/0.0.2_rxjs@6.6.7: - resolution: {integrity: sha512-IJ8R/ZCFMHOcDIqoABs82jal00VrZx8Xkgfe7TOKoaRPAW5nH/VFlG23bXpeGdrmtqI9UobFPgUKgCuFc7Lncw==} - peerDependencies: - rxjs: ^6.0.0 - peerDependenciesMeta: - rxjs: - optional: true - dependencies: - rxjs: 6.6.7 - dev: true - /rxjs/6.6.7: resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} engines: {npm: '>=2.0.0'} @@ -16024,6 +16876,19 @@ packages: resolution: {integrity: sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==} dependencies: tslib: 2.4.0 + dev: true + + /rxjs/7.5.6: + resolution: {integrity: sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==} + dependencies: + tslib: 2.4.0 + + /sade/1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + dependencies: + mri: 1.2.0 + dev: true /safari-14-idb-fix/3.0.0: resolution: {integrity: sha512-eBNFLob4PMq8JA1dGyFn6G97q3/WzNtFK4RnzT1fnLq+9RyrGknzYiM/9B12MnKAxuj1IXr7UKYtTNtjyKMBog==} @@ -16067,7 +16932,7 @@ packages: klona: 2.0.5 neo-async: 2.6.2 sass: 1.53.0 - webpack: 5.74.0_@swc+core@1.2.210 + webpack: 5.74.0_@swc+core@1.2.244 dev: true /sass/1.53.0: @@ -16099,15 +16964,6 @@ packages: dependencies: loose-envify: 1.4.0 - /schema-utils/2.7.0: - resolution: {integrity: sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==} - engines: {node: '>= 8.9.0'} - dependencies: - '@types/json-schema': 7.0.11 - ajv: 6.12.6 - ajv-keywords: 3.5.2_ajv@6.12.6 - dev: true - /schema-utils/2.7.1: resolution: {integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==} engines: {node: '>= 8.9.0'} @@ -16131,7 +16987,7 @@ packages: dependencies: '@types/json-schema': 7.0.11 ajv: 8.11.0 - ajv-formats: 2.1.1 + ajv-formats: 2.1.1_ajv@8.11.0 ajv-keywords: 5.1.0_ajv@8.11.0 dev: true @@ -16142,7 +16998,7 @@ packages: dev: false /secure-compare/3.0.1: - resolution: {integrity: sha1-8aAymzCLIh+uN7mXTz1XjQypmeM=} + resolution: {integrity: sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==} dev: true /seek-bzip/1.0.6: @@ -16162,7 +17018,7 @@ packages: dependencies: jszip: 3.10.0 tmp: 0.2.1 - ws: 8.8.0 + ws: 8.8.1 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -16277,10 +17133,6 @@ packages: - supports-color dev: true - /set-blocking/2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - dev: true - /setimmediate/1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} dev: true @@ -16375,8 +17227,8 @@ packages: /slate-react/0.81.0_slate@0.81.1: resolution: {integrity: sha512-bwryad4EvOmc7EFKb8aGg9DWNDh3KvToaggGieIgGTTbHJYHc9ADFC3A87Ittlpd5XUVopR0MpChQ3g3ODyvqw==} peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' + react: '>=16.8.0 || 18' + react-dom: '>=16.8.0 || 18' slate: '>=0.65.3' peerDependenciesMeta: react: @@ -16496,7 +17348,7 @@ packages: abab: 2.0.6 iconv-lite: 0.6.3 source-map-js: 1.0.2 - webpack: 5.74.0_@swc+core@1.2.210 + webpack: 5.74.0_@swc+core@1.2.244 dev: true /source-map-resolve/0.6.0: @@ -16550,6 +17402,10 @@ packages: resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} dev: true + /space-separated-tokens/2.0.1: + resolution: {integrity: sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw==} + dev: true + /spdy-transport/3.0.0: resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} dependencies: @@ -16672,15 +17528,6 @@ packages: schema-utils: 3.1.1 dev: false - /string-width/1.0.2: - resolution: {integrity: sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==} - engines: {node: '>=0.10.0'} - dependencies: - code-point-at: 1.1.0 - is-fullwidth-code-point: 1.0.0 - strip-ansi: 3.0.1 - dev: true - /string-width/2.1.1: resolution: {integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==} engines: {node: '>=4'} @@ -16744,11 +17591,11 @@ packages: dependencies: safe-buffer: 5.2.1 - /strip-ansi/3.0.1: - resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} - engines: {node: '>=0.10.0'} + /stringify-entities/4.0.3: + resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==} dependencies: - ansi-regex: 2.1.1 + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 dev: true /strip-ansi/4.0.0: @@ -16847,7 +17694,7 @@ packages: webpack: optional: true dependencies: - webpack: 5.74.0_@swc+core@1.2.210 + webpack: 5.74.0_@swc+core@1.2.244 dev: true /style-mod/3.2.2: @@ -16858,8 +17705,14 @@ packages: resolution: {integrity: sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw==} dev: false - /style9/0.13.3: - resolution: {integrity: sha512-mQ39P2a4o5vHzy80vdpG4JfolQkBNxjvIvQen2JkM4/EdF4KEl0vOBCobD4Dd43aW2HoOzFuEVYHmsdmJoMs2g==} + /style-to-object/0.3.0: + resolution: {integrity: sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==} + dependencies: + inline-style-parser: 0.1.1 + dev: true + + /style9/0.14.0: + resolution: {integrity: sha512-zcKdz1GGM7kq8clEfAQ/2TV52d1hj+BgWPPGjqkjtUhP/i3qJq+nA4UJSgO67T7UQPax56tmOQs4y1AZrv9FTw==} engines: {node: '>=12'} dependencies: '@babel/core': 7.18.6 @@ -16885,8 +17738,8 @@ packages: - webpack dev: false - /style9/0.13.3_3dhnqjc63a233tfpt3a625zcdq: - resolution: {integrity: sha512-mQ39P2a4o5vHzy80vdpG4JfolQkBNxjvIvQen2JkM4/EdF4KEl0vOBCobD4Dd43aW2HoOzFuEVYHmsdmJoMs2g==} + /style9/0.14.0_3dhnqjc63a233tfpt3a625zcdq: + resolution: {integrity: sha512-zcKdz1GGM7kq8clEfAQ/2TV52d1hj+BgWPPGjqkjtUhP/i3qJq+nA4UJSgO67T7UQPax56tmOQs4y1AZrv9FTw==} engines: {node: '>=12'} dependencies: '@babel/core': 7.18.6 @@ -16941,7 +17794,7 @@ packages: klona: 2.0.5 normalize-path: 3.0.0 stylus: 0.55.0 - webpack: 5.74.0_@swc+core@1.2.210 + webpack: 5.74.0_@swc+core@1.2.244 dev: true /stylus/0.55.0: @@ -16955,7 +17808,7 @@ packages: safer-buffer: 2.1.2 sax: 1.2.4 semver: 6.3.0 - source-map: 0.7.3 + source-map: 0.7.4 transitivePeerDependencies: - supports-color dev: true @@ -17013,11 +17866,6 @@ packages: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: true - /tapable/1.1.3: - resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} - engines: {node: '>=6'} - dev: true - /tapable/2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} @@ -17102,7 +17950,7 @@ packages: supports-hyperlinks: 2.2.0 dev: true - /terser-webpack-plugin/5.3.3_vwzmvoh3samqo2nn3x7mqt365m: + /terser-webpack-plugin/5.3.3_5yvlrjpud4kvfyyr2mesgpo47e: resolution: {integrity: sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -17121,12 +17969,12 @@ packages: optional: true dependencies: '@jridgewell/trace-mapping': 0.3.14 - '@swc/core': 1.2.210 + '@swc/core': 1.2.244 jest-worker: 27.5.1 schema-utils: 3.1.1 serialize-javascript: 6.0.0 terser: 5.14.1 - webpack: 5.74.0_@swc+core@1.2.210 + webpack: 5.74.0_@swc+core@1.2.244 /terser-webpack-plugin/5.3.3_webpack@5.74.0: resolution: {integrity: sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==} @@ -17301,6 +18149,10 @@ packages: hasBin: true dev: true + /trim-lines/3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + dev: true + /trim-repeated/1.0.0: resolution: {integrity: sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==} engines: {node: '>=0.10.0'} @@ -17308,6 +18160,10 @@ packages: escape-string-regexp: 1.0.5 dev: true + /trough/2.1.0: + resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} + dev: true + /ts-debounce/4.0.0: resolution: {integrity: sha512-+1iDGY6NmOGidq7i7xZGA4cm8DAa6fqdYcvO5Z6yBevH++Bdo9Qt/mN0TzHUgcCcKv1gmh9+W5dHqz8pMWbCbg==} dev: true @@ -17334,7 +18190,7 @@ packages: babel-jest: 28.1.2_@babel+core@7.18.6 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 28.1.2_hxaxlvfys2pc3hefxwkmyo5cpq + jest: 28.1.2_3glepa5322b7j342guju4hszoy jest-util: 28.1.1 json5: 2.2.1 lodash.memoize: 4.1.2 @@ -17354,15 +18210,15 @@ packages: webpack: optional: true dependencies: - chalk: 4.1.0 + chalk: 4.1.2 enhanced-resolve: 5.10.0 micromatch: 4.0.5 semver: 7.3.7 typescript: 4.7.4 - webpack: 5.74.0_@swc+core@1.2.210 + webpack: 5.74.0_@swc+core@1.2.244 dev: true - /ts-node/10.8.2_y42jqzo3jkzuv3kp7opavo2xbi: + /ts-node/10.8.2_hixnfb2jfw56u6pahjg3ndp4oy: resolution: {integrity: sha512-LYdGnoGddf1D6v8REPtIH+5iq/gTDuZqv2/UJUU7tKjuEU8xVZorBM+buCGNjj+pGEud+sOoM4CX3/YzINpENA==} hasBin: true peerDependencies: @@ -17377,12 +18233,44 @@ packages: optional: true dependencies: '@cspotcode/source-map-support': 0.8.1 - '@swc/core': 1.2.210 + '@swc/core': 1.2.244 '@tsconfig/node10': 1.0.9 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 18.0.1 + '@types/node': 18.7.13 + acorn: 8.7.1 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 4.7.4 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: true + + /ts-node/10.9.1_hixnfb2jfw56u6pahjg3ndp4oy: + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@swc/core': 1.2.244 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.3 + '@types/node': 18.7.13 acorn: 8.7.1 acorn-walk: 8.2.0 arg: 4.1.3 @@ -17535,6 +18423,18 @@ packages: engines: {node: '>=4'} dev: true + /unified/10.1.2: + resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} + dependencies: + '@types/unist': 2.0.6 + bail: 2.0.2 + extend: 3.0.2 + is-buffer: 2.0.5 + is-plain-obj: 4.1.0 + trough: 2.1.0 + vfile: 5.3.4 + dev: true + /union/0.5.0: resolution: {integrity: sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==} engines: {node: '>= 0.8.0'} @@ -17542,6 +18442,60 @@ packages: qs: 6.11.0 dev: true + /unist-builder/3.0.0: + resolution: {integrity: sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ==} + dependencies: + '@types/unist': 2.0.6 + dev: true + + /unist-util-generated/2.0.0: + resolution: {integrity: sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==} + dev: true + + /unist-util-is/5.1.1: + resolution: {integrity: sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==} + dev: true + + /unist-util-position-from-estree/1.1.1: + resolution: {integrity: sha512-xtoY50b5+7IH8tFbkw64gisG9tMSpxDjhX9TmaJJae/XuxQ9R/Kc8Nv1eOsf43Gt4KV/LkriMy9mptDr7XLcaw==} + dependencies: + '@types/unist': 2.0.6 + dev: true + + /unist-util-position/4.0.3: + resolution: {integrity: sha512-p/5EMGIa1qwbXjA+QgcBXaPWjSnZfQ2Sc3yBEEfgPwsEmJd8Qh+DSk3LGnmOM4S1bY2C0AjmMnB8RuEYxpPwXQ==} + dependencies: + '@types/unist': 2.0.6 + dev: true + + /unist-util-remove-position/4.0.1: + resolution: {integrity: sha512-0yDkppiIhDlPrfHELgB+NLQD5mfjup3a8UYclHruTJWmY74je8g+CIFr79x5f6AkmzSwlvKLbs63hC0meOMowQ==} + dependencies: + '@types/unist': 2.0.6 + unist-util-visit: 4.1.1 + dev: true + + /unist-util-stringify-position/3.0.2: + resolution: {integrity: sha512-7A6eiDCs9UtjcwZOcCpM4aPII3bAAGv13E96IkawkOAW0OhH+yRxtY0lzo8KiHpzEMfH7Q+FizUmwp8Iqy5EWg==} + dependencies: + '@types/unist': 2.0.6 + dev: true + + /unist-util-visit-parents/5.1.1: + resolution: {integrity: sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==} + dependencies: + '@types/unist': 2.0.6 + unist-util-is: 5.1.1 + dev: true + + /unist-util-visit/4.1.1: + resolution: {integrity: sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==} + dependencies: + '@types/unist': 2.0.6 + unist-util-is: 5.1.1 + unist-util-visit-parents: 5.1.1 + dev: true + /universalify/0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} @@ -17565,7 +18519,7 @@ packages: /upath2/3.1.13: resolution: {integrity: sha512-M88uBoqgzrkXvXrF/+oSIPsTmL21uRwGhPVJKODrl+3lXkQ5NPKrTYuSBZVa+lgPGFoI6qYyHlSKACFHO0AoNw==} dependencies: - '@types/node': 18.0.1 + '@types/node': 18.7.13 path-is-network-drive: 1.0.15 path-strip-sep: 1.0.12 tslib: 2.4.0 @@ -17617,7 +18571,7 @@ packages: loader-utils: 2.0.2 mime-types: 2.1.35 schema-utils: 3.1.1 - webpack: 5.74.0_@swc+core@1.2.210 + webpack: 5.74.0_@swc+core@1.2.244 dev: true /url-parse-lax/1.0.0: @@ -17672,7 +18626,7 @@ packages: dev: true /utils-merge/1.0.1: - resolution: {integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=} + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} dev: true @@ -17691,6 +18645,17 @@ packages: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true + /uvu/0.5.6: + resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} + engines: {node: '>=8'} + hasBin: true + dependencies: + dequal: 2.0.3 + diff: 5.1.0 + kleur: 4.1.5 + sade: 1.8.1 + dev: true + /v8-compile-cache-lib/3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} dev: true @@ -17731,6 +18696,29 @@ packages: extsprintf: 1.3.0 dev: true + /vfile-location/4.0.1: + resolution: {integrity: sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw==} + dependencies: + '@types/unist': 2.0.6 + vfile: 5.3.4 + dev: true + + /vfile-message/3.1.2: + resolution: {integrity: sha512-QjSNP6Yxzyycd4SVOtmKKyTsSvClqBPJcd00Z0zuPj3hOIjg0rUPG6DbFGPvUKRgYyaIWLPKpuEclcuvb3H8qA==} + dependencies: + '@types/unist': 2.0.6 + unist-util-stringify-position: 3.0.2 + dev: true + + /vfile/5.3.4: + resolution: {integrity: sha512-KI+7cnst03KbEyN1+JE504zF5bJBZa+J+CrevLeyIMq0aPU681I2rQ5p4PlnQ6exFtWiUrg26QUdFMnAKR6PIw==} + dependencies: + '@types/unist': 2.0.6 + is-buffer: 2.0.5 + unist-util-stringify-position: 3.0.2 + vfile-message: 3.1.2 + dev: true + /void-elements/3.1.0: resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} engines: {node: '>=0.10.0'} @@ -17818,7 +18806,7 @@ packages: mime-types: 2.1.35 range-parser: 1.2.1 schema-utils: 4.0.0 - webpack: 5.74.0_@swc+core@1.2.210 + webpack: 5.74.0_@swc+core@1.2.244 dev: true /webpack-dev-server/4.9.3_webpack@5.74.0: @@ -17861,9 +18849,9 @@ packages: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack: 5.74.0_@swc+core@1.2.210 + webpack: 5.74.0_@swc+core@1.2.244 webpack-dev-middleware: 5.3.3_webpack@5.74.0 - ws: 8.8.0 + ws: 8.8.1 transitivePeerDependencies: - bufferutil - debug @@ -17917,7 +18905,7 @@ packages: dependencies: html-webpack-plugin: 5.5.0_webpack@5.74.0 typed-assert: 1.0.9 - webpack: 5.74.0_@swc+core@1.2.210 + webpack: 5.74.0_@swc+core@1.2.244 dev: true /webpack-virtual-modules/0.4.4: @@ -17964,7 +18952,7 @@ packages: - uglify-js dev: true - /webpack/5.74.0_@swc+core@1.2.210: + /webpack/5.74.0_@swc+core@1.2.244: resolution: {integrity: sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==} engines: {node: '>=10.13.0'} hasBin: true @@ -17995,7 +18983,7 @@ packages: neo-async: 2.6.2 schema-utils: 3.1.1 tapable: 2.2.1 - terser-webpack-plugin: 5.3.3_vwzmvoh3samqo2nn3x7mqt365m + terser-webpack-plugin: 5.3.3_5yvlrjpud4kvfyyr2mesgpo47e watchpack: 2.4.0 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -18028,10 +19016,6 @@ packages: iconv-lite: 0.6.3 dev: true - /whatwg-fetch/2.0.4: - resolution: {integrity: sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==} - dev: true - /whatwg-mimetype/2.3.0: resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==} dev: true @@ -18087,12 +19071,6 @@ packages: isexe: 2.0.0 dev: true - /wide-align/1.1.5: - resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} - dependencies: - string-width: 1.0.2 - dev: true - /wildcard/2.0.0: resolution: {integrity: sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==} dev: true @@ -18152,19 +19130,6 @@ packages: optional: true dev: true - /ws/8.8.0: - resolution: {integrity: sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: true - /ws/8.8.1: resolution: {integrity: sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==} engines: {node: '>=10.0.0'} @@ -18176,7 +19141,6 @@ packages: optional: true utf-8-validate: optional: true - dev: false /xml-name-validator/3.0.0: resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==} @@ -18286,8 +19250,12 @@ packages: resolution: {integrity: sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==} engines: {node: '>=12.7.0'} peerDependencies: - react: '>=16.8' + react: '>=16.8 || 18' peerDependenciesMeta: react: optional: true dev: false + + /zwitch/2.0.2: + resolution: {integrity: sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==} + dev: true