mirror of https://github.com/fantasticit/think.git
feat: improve tiptap
This commit is contained in:
parent
b58f9449e0
commit
72c3b2f8ac
|
@ -19,6 +19,10 @@ const nextConfig = semi({
|
|||
eslint: {
|
||||
ignoreDuringBuilds: true,
|
||||
},
|
||||
// FIXME: douyinfe 的第三方包存在 ts 类型错误!
|
||||
typescript: {
|
||||
ignoreBuildErrors: true,
|
||||
},
|
||||
});
|
||||
|
||||
module.exports = nextConfig;
|
||||
|
|
|
@ -78,7 +78,6 @@
|
|||
"react": "17.0.2",
|
||||
"react-dom": "17.0.2",
|
||||
"react-helmet": "^6.1.0",
|
||||
"react-select": "^5.2.2",
|
||||
"react-split-pane": "^0.1.92",
|
||||
"scroll-into-view-if-needed": "^2.2.29",
|
||||
"swr": "^1.2.0",
|
||||
|
|
|
@ -1,16 +1,51 @@
|
|||
import { useEffect, useRef } from 'react';
|
||||
import { NodeViewWrapper, NodeViewContent } from '@tiptap/react';
|
||||
import { Button, Typography, Spin, Collapsible } from '@douyinfe/semi-ui';
|
||||
import { IconDownload, IconPlayCircle } from '@douyinfe/semi-icons';
|
||||
import { Button, Typography, Spin, Collapsible, Space } from '@douyinfe/semi-ui';
|
||||
import {
|
||||
IconDownload,
|
||||
IconPlayCircle,
|
||||
IconFile,
|
||||
IconSong,
|
||||
IconVideo,
|
||||
IconImage,
|
||||
IconClose,
|
||||
} from '@douyinfe/semi-icons';
|
||||
import { Tooltip } from 'components/tooltip';
|
||||
import { useToggle } from 'hooks/useToggle';
|
||||
import { download } from '../../services/download';
|
||||
import { uploadFile } from 'services/file';
|
||||
import { normalizeFileSize, extractFileExtension, extractFilename, normalizeFileType } from '../../services/file';
|
||||
import {
|
||||
normalizeFileSize,
|
||||
extractFileExtension,
|
||||
extractFilename,
|
||||
normalizeFileType,
|
||||
FileType,
|
||||
} from '../../services/file';
|
||||
import styles from './index.module.scss';
|
||||
|
||||
const { Text } = Typography;
|
||||
|
||||
const getFileTypeIcon = (type: FileType) => {
|
||||
switch (type) {
|
||||
case 'audio':
|
||||
return <IconSong />;
|
||||
|
||||
case 'video':
|
||||
return <IconVideo />;
|
||||
|
||||
case 'file':
|
||||
return <IconFile />;
|
||||
|
||||
case 'image':
|
||||
return <IconImage />;
|
||||
|
||||
default: {
|
||||
const value: never = type;
|
||||
throw new Error(value);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
export const AttachmentWrapper = ({ editor, node, updateAttributes }) => {
|
||||
const $upload = useRef();
|
||||
const isEditable = editor.isEditable;
|
||||
|
@ -19,6 +54,7 @@ export const AttachmentWrapper = ({ editor, node, updateAttributes }) => {
|
|||
const [visible, toggleVisible] = useToggle(false);
|
||||
|
||||
const selectFile = () => {
|
||||
if (!isEditable || error || url) return;
|
||||
// @ts-ignore
|
||||
isEditable && $upload.current.click();
|
||||
};
|
||||
|
@ -37,7 +73,7 @@ export const AttachmentWrapper = ({ editor, node, updateAttributes }) => {
|
|||
updateAttributes({ ...fileInfo, url });
|
||||
toggleLoading(false);
|
||||
} catch (error) {
|
||||
updateAttributes({ error: '上传失败:' + (error && error.message) || '未知错误' });
|
||||
updateAttributes({ error: '文件上传失败:' + (error && error.message) || '未知错误' });
|
||||
toggleLoading(false);
|
||||
}
|
||||
};
|
||||
|
@ -51,30 +87,33 @@ export const AttachmentWrapper = ({ editor, node, updateAttributes }) => {
|
|||
}
|
||||
}, [url, autoTrigger]);
|
||||
|
||||
return (
|
||||
<NodeViewWrapper as="div">
|
||||
<div className={styles.wrap}>
|
||||
{!url ? (
|
||||
error ? (
|
||||
<Text>{error}</Text>
|
||||
) : (
|
||||
<Spin spinning={loading}>
|
||||
<Text onClick={selectFile} style={{ cursor: 'pointer' }}>
|
||||
{loading ? '正在上传中' : '请选择文件'}
|
||||
</Text>
|
||||
<input ref={$upload} type="file" hidden onChange={handleFile} />
|
||||
</Spin>
|
||||
)
|
||||
) : (
|
||||
<>
|
||||
<span>
|
||||
const content = (() => {
|
||||
if (error) {
|
||||
return (
|
||||
<div className={styles.wrap} onClick={selectFile}>
|
||||
<Text>{error}</Text>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
if (url) {
|
||||
return (
|
||||
<>
|
||||
<div className={styles.wrap} onClick={selectFile}>
|
||||
<Space>
|
||||
{getFileTypeIcon(type)}
|
||||
{fileName}.{fileExt}
|
||||
<Text type="tertiary"> ({normalizeFileSize(fileSize)})</Text>
|
||||
</span>
|
||||
</Space>
|
||||
<span>
|
||||
{type === 'video' || type === 'audio' ? (
|
||||
<Tooltip content="播放">
|
||||
<Button theme={'borderless'} type="tertiary" icon={<IconPlayCircle />} onClick={toggleVisible} />
|
||||
<Tooltip content={!visible ? '播放' : '收起'}>
|
||||
<Button
|
||||
theme={'borderless'}
|
||||
type="tertiary"
|
||||
icon={!visible ? <IconPlayCircle /> : <IconClose />}
|
||||
onClick={toggleVisible}
|
||||
/>
|
||||
</Tooltip>
|
||||
) : null}
|
||||
<Tooltip content="下载">
|
||||
|
@ -86,17 +125,29 @@ export const AttachmentWrapper = ({ editor, node, updateAttributes }) => {
|
|||
/>
|
||||
</Tooltip>
|
||||
</span>
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{url ? (
|
||||
<Collapsible isOpen={visible}>
|
||||
{type === 'video' && <video controls autoPlay src={url}></video>}
|
||||
{type === 'audio' && <audio controls autoPlay src={url}></audio>}
|
||||
</Collapsible>
|
||||
) : null}
|
||||
<NodeViewContent></NodeViewContent>
|
||||
</NodeViewWrapper>
|
||||
);
|
||||
{url ? (
|
||||
<Collapsible isOpen={visible}>
|
||||
{type === 'video' && <video controls autoPlay src={url}></video>}
|
||||
{type === 'audio' && <audio controls autoPlay src={url}></audio>}
|
||||
</Collapsible>
|
||||
) : null}
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
if (isEditable && !url) {
|
||||
return (
|
||||
<div className={styles.wrap} onClick={selectFile}>
|
||||
<Spin spinning={loading}>
|
||||
<Text style={{ cursor: 'pointer' }}>{loading ? '正在上传中' : '请选择文件'}</Text>
|
||||
<input ref={$upload} type="file" hidden onChange={handleFile} />
|
||||
</Spin>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
})();
|
||||
|
||||
return <NodeViewWrapper as="div">{content}</NodeViewWrapper>;
|
||||
};
|
||||
|
|
|
@ -2,7 +2,7 @@ import { NodeViewWrapper, NodeViewContent } from '@tiptap/react';
|
|||
import { useRouter } from 'next/router';
|
||||
import Link from 'next/link';
|
||||
import cls from 'classnames';
|
||||
import Select from 'react-select';
|
||||
import { Select } from '@douyinfe/semi-ui';
|
||||
import { useWikiTocs } from 'data/wiki';
|
||||
import { DataRender } from 'components/data-render';
|
||||
import { IconDocument } from 'components/icons';
|
||||
|
@ -16,8 +16,8 @@ export const DocumentReferenceWrapper = ({ editor, node, updateAttributes }) =>
|
|||
const { wikiId, documentId, title } = node.attrs;
|
||||
const { data: tocs, loading, error } = useWikiTocs(isShare ? null : wikiIdFromUrl);
|
||||
|
||||
const selectDoc = (toc) => {
|
||||
const { wikiId, documentId, title } = toc.value;
|
||||
const selectDoc = (str) => {
|
||||
const [wikiId, title, documentId] = str.split('/');
|
||||
updateAttributes({ wikiId, documentId, title });
|
||||
};
|
||||
|
||||
|
@ -30,15 +30,20 @@ export const DocumentReferenceWrapper = ({ editor, node, updateAttributes }) =>
|
|||
error={error}
|
||||
normalContent={() => (
|
||||
<Select
|
||||
className="react-select"
|
||||
placeholder="请选择文档"
|
||||
value={{ label: title, value: { wikiId, documentId, title } }}
|
||||
onChange={selectDoc}
|
||||
options={tocs.map((toc) => ({
|
||||
label: toc.title,
|
||||
value: { title: toc.title, wikiId: toc.wikiId, documentId: toc.id },
|
||||
}))}
|
||||
/>
|
||||
onChange={(v) => selectDoc(v)}
|
||||
{...(wikiId && documentId ? { value: `${wikiId}/${title}/${documentId}` } : {})}
|
||||
>
|
||||
{(tocs || []).map((toc) => (
|
||||
<Select.Option
|
||||
// FIXME: semi-design 抄 antd,抄的什么玩意!!!
|
||||
label={`${toc.title}/${toc.id}`}
|
||||
value={`${toc.wikiId}/${toc.title}/${toc.id}`}
|
||||
>
|
||||
{toc.title}
|
||||
</Select.Option>
|
||||
))}
|
||||
</Select>
|
||||
)}
|
||||
/>
|
||||
)}
|
||||
|
|
|
@ -20,6 +20,7 @@ export const ImageWrapper = ({ editor, node, updateAttributes }) => {
|
|||
};
|
||||
|
||||
const selectFile = () => {
|
||||
if (!isEditable || error || src) return;
|
||||
// @ts-ignore
|
||||
isEditable && $upload.current.click();
|
||||
};
|
||||
|
@ -38,7 +39,7 @@ export const ImageWrapper = ({ editor, node, updateAttributes }) => {
|
|||
updateAttributes({ ...fileInfo, src });
|
||||
toggleLoading(false);
|
||||
} catch (error) {
|
||||
updateAttributes({ error: '上传失败:' + (error && error.message) || '未知错误' });
|
||||
updateAttributes({ error: '图片上传失败:' + (error && error.message) || '未知错误' });
|
||||
toggleLoading(false);
|
||||
}
|
||||
};
|
||||
|
@ -52,16 +53,18 @@ export const ImageWrapper = ({ editor, node, updateAttributes }) => {
|
|||
|
||||
const content = (() => {
|
||||
if (error) {
|
||||
return <Text>{error}</Text>;
|
||||
return (
|
||||
<div className={styles.wrap}>
|
||||
<Text>{error}</Text>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
if (!src) {
|
||||
return (
|
||||
<div className={styles.wrap}>
|
||||
<div className={styles.wrap} onClick={selectFile}>
|
||||
<Spin spinning={loading}>
|
||||
<Text onClick={selectFile} style={{ cursor: 'pointer' }}>
|
||||
{loading ? '正在上传中' : '请选择图片'}
|
||||
</Text>
|
||||
<Text style={{ cursor: 'pointer' }}>{loading ? '正在上传中' : '请选择图片'}</Text>
|
||||
<input ref={$upload} accept="image/*" type="file" hidden onChange={handleFile} />
|
||||
</Spin>
|
||||
</div>
|
||||
|
|
|
@ -39,7 +39,15 @@ export const normalizeFileSize = (size) => {
|
|||
return (size / 1024 / 1024).toFixed(2) + ' MB';
|
||||
};
|
||||
|
||||
export const normalizeFileType = (fileType): 'audio' | 'video' | 'file' => {
|
||||
export type FileType = 'image' | 'audio' | 'video' | 'file';
|
||||
|
||||
export const normalizeFileType = (fileType): FileType => {
|
||||
if (!fileType) return 'file';
|
||||
|
||||
if (fileType.startsWith('image')) {
|
||||
return 'image';
|
||||
}
|
||||
|
||||
if (fileType.startsWith('audio')) {
|
||||
return 'audio';
|
||||
}
|
||||
|
|
|
@ -204,12 +204,3 @@ a {
|
|||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.react-select {
|
||||
width: 180px;
|
||||
font-size: 0.8em;
|
||||
|
||||
> div {
|
||||
border: 1px solid var(--semi-color-border);
|
||||
}
|
||||
}
|
||||
|
|
187
pnpm-lock.yaml
187
pnpm-lock.yaml
|
@ -114,7 +114,6 @@ importers:
|
|||
react: 17.0.2
|
||||
react-dom: 17.0.2
|
||||
react-helmet: ^6.1.0
|
||||
react-select: ^5.2.2
|
||||
react-split-pane: ^0.1.92
|
||||
scroll-into-view-if-needed: ^2.2.29
|
||||
swr: ^1.2.0
|
||||
|
@ -191,7 +190,6 @@ importers:
|
|||
react: 17.0.2
|
||||
react-dom: 17.0.2_react@17.0.2
|
||||
react-helmet: 6.1.0_react@17.0.2
|
||||
react-select: 5.2.2_b3482aaf5744fc7c2aeb7941b0e0a78f
|
||||
react-split-pane: 0.1.92_react-dom@17.0.2+react@17.0.2
|
||||
scroll-into-view-if-needed: 2.2.29
|
||||
swr: 1.2.0_react@17.0.2
|
||||
|
@ -518,6 +516,7 @@ packages:
|
|||
engines: {node: '>=6.9.0'}
|
||||
dependencies:
|
||||
'@babel/types': 7.16.8
|
||||
dev: true
|
||||
|
||||
/@babel/helper-module-transforms/7.16.7:
|
||||
resolution: {integrity: sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==}
|
||||
|
@ -538,6 +537,7 @@ packages:
|
|||
/@babel/helper-plugin-utils/7.16.7:
|
||||
resolution: {integrity: sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
dev: true
|
||||
|
||||
/@babel/helper-simple-access/7.16.7:
|
||||
resolution: {integrity: sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==}
|
||||
|
@ -630,15 +630,6 @@ packages:
|
|||
'@babel/helper-plugin-utils': 7.16.7
|
||||
dev: true
|
||||
|
||||
/@babel/plugin-syntax-jsx/7.16.7:
|
||||
resolution: {integrity: sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
peerDependencies:
|
||||
'@babel/core': ^7.0.0-0
|
||||
dependencies:
|
||||
'@babel/helper-plugin-utils': 7.16.7
|
||||
dev: false
|
||||
|
||||
/@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.16.12:
|
||||
resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==}
|
||||
peerDependencies:
|
||||
|
@ -906,92 +897,6 @@ packages:
|
|||
- supports-color
|
||||
dev: false
|
||||
|
||||
/@emotion/babel-plugin/11.7.2:
|
||||
resolution: {integrity: sha512-6mGSCWi9UzXut/ZAN6lGFu33wGR3SJisNl3c0tvlmb8XChH1b2SUvxvnOh7hvLpqyRdHHU9AiazV3Cwbk5SXKQ==}
|
||||
peerDependencies:
|
||||
'@babel/core': ^7.0.0
|
||||
dependencies:
|
||||
'@babel/helper-module-imports': 7.16.7
|
||||
'@babel/plugin-syntax-jsx': 7.16.7
|
||||
'@babel/runtime': 7.16.7
|
||||
'@emotion/hash': 0.8.0
|
||||
'@emotion/memoize': 0.7.5
|
||||
'@emotion/serialize': 1.0.2
|
||||
babel-plugin-macros: 2.8.0
|
||||
convert-source-map: 1.8.0
|
||||
escape-string-regexp: 4.0.0
|
||||
find-root: 1.1.0
|
||||
source-map: 0.5.7
|
||||
stylis: 4.0.13
|
||||
dev: false
|
||||
|
||||
/@emotion/cache/11.7.1:
|
||||
resolution: {integrity: sha512-r65Zy4Iljb8oyjtLeCuBH8Qjiy107dOYC6SJq7g7GV5UCQWMObY4SJDPGFjiiVpPrOJ2hmJOoBiYTC7hwx9E2A==}
|
||||
dependencies:
|
||||
'@emotion/memoize': 0.7.5
|
||||
'@emotion/sheet': 1.1.0
|
||||
'@emotion/utils': 1.1.0
|
||||
'@emotion/weak-memoize': 0.2.5
|
||||
stylis: 4.0.13
|
||||
dev: false
|
||||
|
||||
/@emotion/hash/0.8.0:
|
||||
resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==}
|
||||
dev: false
|
||||
|
||||
/@emotion/memoize/0.7.5:
|
||||
resolution: {integrity: sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ==}
|
||||
dev: false
|
||||
|
||||
/@emotion/react/11.8.2_b08e3c15324cbe90a6ff8fcd416c932c:
|
||||
resolution: {integrity: sha512-+1bcHBaNJv5nkIIgnGKVsie3otS0wF9f1T1hteF3WeVvMNQEtfZ4YyFpnphGoot3ilU/wWMgP2SgIDuHLE/wAA==}
|
||||
peerDependencies:
|
||||
'@babel/core': ^7.0.0
|
||||
'@types/react': '*'
|
||||
react: '>=16.8.0'
|
||||
peerDependenciesMeta:
|
||||
'@babel/core':
|
||||
optional: true
|
||||
'@types/react':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@babel/runtime': 7.16.7
|
||||
'@emotion/babel-plugin': 11.7.2
|
||||
'@emotion/cache': 11.7.1
|
||||
'@emotion/serialize': 1.0.2
|
||||
'@emotion/utils': 1.1.0
|
||||
'@emotion/weak-memoize': 0.2.5
|
||||
'@types/react': 17.0.38
|
||||
hoist-non-react-statics: 3.3.2
|
||||
react: 17.0.2
|
||||
dev: false
|
||||
|
||||
/@emotion/serialize/1.0.2:
|
||||
resolution: {integrity: sha512-95MgNJ9+/ajxU7QIAruiOAdYNjxZX7G2mhgrtDWswA21VviYIRP1R5QilZ/bDY42xiKsaktP4egJb3QdYQZi1A==}
|
||||
dependencies:
|
||||
'@emotion/hash': 0.8.0
|
||||
'@emotion/memoize': 0.7.5
|
||||
'@emotion/unitless': 0.7.5
|
||||
'@emotion/utils': 1.1.0
|
||||
csstype: 3.0.10
|
||||
dev: false
|
||||
|
||||
/@emotion/sheet/1.1.0:
|
||||
resolution: {integrity: sha512-u0AX4aSo25sMAygCuQTzS+HsImZFuS8llY8O7b9MDRzbJM0kVJlAz6KNDqcG7pOuQZJmj/8X/rAW+66kMnMW+g==}
|
||||
dev: false
|
||||
|
||||
/@emotion/unitless/0.7.5:
|
||||
resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==}
|
||||
dev: false
|
||||
|
||||
/@emotion/utils/1.1.0:
|
||||
resolution: {integrity: sha512-iRLa/Y4Rs5H/f2nimczYmS5kFJEbpiVvgN3XVfZ022IYhuNA1IRSHEizcof88LtCTXtl9S2Cxt32KgaXEu72JQ==}
|
||||
dev: false
|
||||
|
||||
/@emotion/weak-memoize/0.2.5:
|
||||
resolution: {integrity: sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==}
|
||||
dev: false
|
||||
|
||||
/@eslint/eslintrc/1.2.1:
|
||||
resolution: {integrity: sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
|
@ -2211,6 +2116,7 @@ packages:
|
|||
|
||||
/@types/parse-json/4.0.0:
|
||||
resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==}
|
||||
dev: true
|
||||
|
||||
/@types/prettier/2.4.3:
|
||||
resolution: {integrity: sha512-QzSuZMBuG5u8HqYz01qtMdg/Jfctlnvj1z/lYnIDXs/golxw0fxtRAHd9KrzjR7Yxz1qVeI00o0kiO3PmVdJ9w==}
|
||||
|
@ -2293,12 +2199,6 @@ packages:
|
|||
resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==}
|
||||
dev: true
|
||||
|
||||
/@types/react-transition-group/4.4.4:
|
||||
resolution: {integrity: sha512-7gAPz7anVK5xzbeQW9wFBDg7G++aPLAFY0QaSMOou9rJZpbuI58WAuJrgu+qR92l61grlnCUe7AFX8KGahAgug==}
|
||||
dependencies:
|
||||
'@types/react': 17.0.38
|
||||
dev: false
|
||||
|
||||
/@types/react-window/1.8.5:
|
||||
resolution: {integrity: sha512-V9q3CvhC9Jk9bWBOysPGaWy/Z0lxYcTXLtLipkt2cnRj1JOSFNF7wqGpkScSXMgBwC+fnVRg/7shwgddBG5ICw==}
|
||||
dependencies:
|
||||
|
@ -2976,14 +2876,6 @@ packages:
|
|||
'@types/babel__traverse': 7.14.2
|
||||
dev: true
|
||||
|
||||
/babel-plugin-macros/2.8.0:
|
||||
resolution: {integrity: sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==}
|
||||
dependencies:
|
||||
'@babel/runtime': 7.16.7
|
||||
cosmiconfig: 6.0.0
|
||||
resolve: 1.22.0
|
||||
dev: false
|
||||
|
||||
/babel-preset-current-node-syntax/1.0.1_@babel+core@7.16.12:
|
||||
resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==}
|
||||
peerDependencies:
|
||||
|
@ -3153,6 +3045,7 @@ packages:
|
|||
/callsites/3.1.0:
|
||||
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
|
||||
engines: {node: '>=6'}
|
||||
dev: true
|
||||
|
||||
/camelcase/5.3.1:
|
||||
resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
|
||||
|
@ -3413,6 +3306,7 @@ packages:
|
|||
resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==}
|
||||
dependencies:
|
||||
safe-buffer: 5.1.2
|
||||
dev: true
|
||||
|
||||
/cookie-signature/1.0.6:
|
||||
resolution: {integrity: sha1-4wOogrNCzD7oylE6eZmXNNqzriw=}
|
||||
|
@ -3467,6 +3361,7 @@ packages:
|
|||
parse-json: 5.2.0
|
||||
path-type: 4.0.0
|
||||
yaml: 1.10.2
|
||||
dev: true
|
||||
|
||||
/create-require/1.1.1:
|
||||
resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
|
||||
|
@ -3731,13 +3626,6 @@ packages:
|
|||
esutils: 2.0.3
|
||||
dev: true
|
||||
|
||||
/dom-helpers/5.2.1:
|
||||
resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==}
|
||||
dependencies:
|
||||
'@babel/runtime': 7.16.7
|
||||
csstype: 3.0.10
|
||||
dev: false
|
||||
|
||||
/domexception/2.0.1:
|
||||
resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==}
|
||||
engines: {node: '>=8'}
|
||||
|
@ -3824,6 +3712,7 @@ packages:
|
|||
resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
|
||||
dependencies:
|
||||
is-arrayish: 0.2.1
|
||||
dev: true
|
||||
|
||||
/es-abstract/1.19.1:
|
||||
resolution: {integrity: sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==}
|
||||
|
@ -3895,6 +3784,7 @@ packages:
|
|||
/escape-string-regexp/4.0.0:
|
||||
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
|
||||
engines: {node: '>=10'}
|
||||
dev: true
|
||||
|
||||
/escodegen/1.14.3:
|
||||
resolution: {integrity: sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==}
|
||||
|
@ -4428,10 +4318,6 @@ packages:
|
|||
unpipe: 1.0.0
|
||||
dev: false
|
||||
|
||||
/find-root/1.1.0:
|
||||
resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==}
|
||||
dev: false
|
||||
|
||||
/find-up/2.1.0:
|
||||
resolution: {integrity: sha1-RdG35QbHF93UgndaK3eSCjwMV6c=}
|
||||
engines: {node: '>=4'}
|
||||
|
@ -4784,12 +4670,6 @@ packages:
|
|||
engines: {node: '>=12.0.0'}
|
||||
dev: false
|
||||
|
||||
/hoist-non-react-statics/3.3.2:
|
||||
resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==}
|
||||
dependencies:
|
||||
react-is: 16.13.1
|
||||
dev: false
|
||||
|
||||
/html-encoding-sniffer/2.0.1:
|
||||
resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==}
|
||||
engines: {node: '>=10'}
|
||||
|
@ -4881,6 +4761,7 @@ packages:
|
|||
dependencies:
|
||||
parent-module: 1.0.1
|
||||
resolve-from: 4.0.0
|
||||
dev: true
|
||||
|
||||
/import-local/3.1.0:
|
||||
resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==}
|
||||
|
@ -4988,6 +4869,7 @@ packages:
|
|||
|
||||
/is-arrayish/0.2.1:
|
||||
resolution: {integrity: sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=}
|
||||
dev: true
|
||||
|
||||
/is-bigint/1.0.4:
|
||||
resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==}
|
||||
|
@ -5019,6 +4901,7 @@ packages:
|
|||
resolution: {integrity: sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==}
|
||||
dependencies:
|
||||
has: 1.0.3
|
||||
dev: true
|
||||
|
||||
/is-date-object/1.0.5:
|
||||
resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
|
||||
|
@ -5770,6 +5653,7 @@ packages:
|
|||
|
||||
/json-parse-even-better-errors/2.3.1:
|
||||
resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
|
||||
dev: true
|
||||
|
||||
/json-schema-traverse/0.4.1:
|
||||
resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
|
||||
|
@ -5928,6 +5812,7 @@ packages:
|
|||
|
||||
/lines-and-columns/1.2.4:
|
||||
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
|
||||
dev: true
|
||||
|
||||
/linkify-it/3.0.3:
|
||||
resolution: {integrity: sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==}
|
||||
|
@ -6644,6 +6529,7 @@ packages:
|
|||
engines: {node: '>=6'}
|
||||
dependencies:
|
||||
callsites: 3.1.0
|
||||
dev: true
|
||||
|
||||
/parse-json/5.2.0:
|
||||
resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
|
||||
|
@ -6653,6 +6539,7 @@ packages:
|
|||
error-ex: 1.3.2
|
||||
json-parse-even-better-errors: 2.3.1
|
||||
lines-and-columns: 1.2.4
|
||||
dev: true
|
||||
|
||||
/parse5-htmlparser2-tree-adapter/6.0.1:
|
||||
resolution: {integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==}
|
||||
|
@ -6712,6 +6599,7 @@ packages:
|
|||
|
||||
/path-parse/1.0.7:
|
||||
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
|
||||
dev: true
|
||||
|
||||
/path-to-regexp/0.1.7:
|
||||
resolution: {integrity: sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=}
|
||||
|
@ -6724,6 +6612,7 @@ packages:
|
|||
/path-type/4.0.0:
|
||||
resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
|
||||
engines: {node: '>=8'}
|
||||
dev: true
|
||||
|
||||
/pause-stream/0.0.11:
|
||||
resolution: {integrity: sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=}
|
||||
|
@ -7120,26 +7009,6 @@ packages:
|
|||
react-draggable: 4.4.4_react-dom@17.0.2+react@17.0.2
|
||||
dev: false
|
||||
|
||||
/react-select/5.2.2_b3482aaf5744fc7c2aeb7941b0e0a78f:
|
||||
resolution: {integrity: sha512-miGS2rT1XbFNjduMZT+V73xbJEeMzVkJOz727F6MeAr2hKE0uUSA8Ff7vD44H32x2PD3SRB6OXTY/L+fTV3z9w==}
|
||||
peerDependencies:
|
||||
react: ^16.8.0 || ^17.0.0
|
||||
react-dom: ^16.8.0 || ^17.0.0
|
||||
dependencies:
|
||||
'@babel/runtime': 7.16.7
|
||||
'@emotion/cache': 11.7.1
|
||||
'@emotion/react': 11.8.2_b08e3c15324cbe90a6ff8fcd416c932c
|
||||
'@types/react-transition-group': 4.4.4
|
||||
memoize-one: 5.2.1
|
||||
prop-types: 15.8.1
|
||||
react: 17.0.2
|
||||
react-dom: 17.0.2_react@17.0.2
|
||||
react-transition-group: 4.4.2_react-dom@17.0.2+react@17.0.2
|
||||
transitivePeerDependencies:
|
||||
- '@babel/core'
|
||||
- '@types/react'
|
||||
dev: false
|
||||
|
||||
/react-side-effect/2.1.1_react@17.0.2:
|
||||
resolution: {integrity: sha512-2FoTQzRNTncBVtnzxFOk2mCpcfxQpenBMbk5kSVBg5UcPqV9fRbgY2zhb7GTWWOlpFmAxhClBDlIq8Rsubz1yQ==}
|
||||
peerDependencies:
|
||||
|
@ -7180,20 +7049,6 @@ packages:
|
|||
prop-types: 15.8.1
|
||||
dev: false
|
||||
|
||||
/react-transition-group/4.4.2_react-dom@17.0.2+react@17.0.2:
|
||||
resolution: {integrity: sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==}
|
||||
peerDependencies:
|
||||
react: '>=16.6.0'
|
||||
react-dom: '>=16.6.0'
|
||||
dependencies:
|
||||
'@babel/runtime': 7.16.7
|
||||
dom-helpers: 5.2.1
|
||||
loose-envify: 1.4.0
|
||||
prop-types: 15.8.1
|
||||
react: 17.0.2
|
||||
react-dom: 17.0.2_react@17.0.2
|
||||
dev: false
|
||||
|
||||
/react-window/1.8.6_react-dom@17.0.2+react@17.0.2:
|
||||
resolution: {integrity: sha512-8VwEEYyjz6DCnGBsd+MgkD0KJ2/OXFULyDtorIiTz+QzwoP94tBoA7CnbtyXMm+cCeAUER5KJcPtWl9cpKbOBg==}
|
||||
engines: {node: '>8.0.0'}
|
||||
|
@ -7300,6 +7155,7 @@ packages:
|
|||
/resolve-from/4.0.0:
|
||||
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
|
||||
engines: {node: '>=4'}
|
||||
dev: true
|
||||
|
||||
/resolve-from/5.0.0:
|
||||
resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
|
||||
|
@ -7318,6 +7174,7 @@ packages:
|
|||
is-core-module: 2.8.1
|
||||
path-parse: 1.0.7
|
||||
supports-preserve-symlinks-flag: 1.0.0
|
||||
dev: true
|
||||
|
||||
/resolve/2.0.0-next.3:
|
||||
resolution: {integrity: sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==}
|
||||
|
@ -7791,10 +7648,6 @@ packages:
|
|||
react: 17.0.2
|
||||
dev: false
|
||||
|
||||
/stylis/4.0.13:
|
||||
resolution: {integrity: sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag==}
|
||||
dev: false
|
||||
|
||||
/superagent/7.1.1:
|
||||
resolution: {integrity: sha512-CQ2weSS6M+doIwwYFoMatklhRbx6sVNdB99OEJ5czcP3cng76Ljqus694knFWgOj3RkrtxZqIgpe6vhe0J7QWQ==}
|
||||
engines: {node: '>=6.4.0 <13 || >=14'}
|
||||
|
@ -7853,6 +7706,7 @@ packages:
|
|||
/supports-preserve-symlinks-flag/1.0.0:
|
||||
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
|
||||
engines: {node: '>= 0.4'}
|
||||
dev: true
|
||||
|
||||
/swr/1.2.0_react@17.0.2:
|
||||
resolution: {integrity: sha512-C3IXeKOREn0jQ1ewXRENE7ED7jjGbFTakwB64eLACkCqkF/A0N2ckvpCTftcaSYi5yV36PzoehgVCOVRmtECcA==}
|
||||
|
@ -8729,6 +8583,7 @@ packages:
|
|||
/yaml/1.10.2:
|
||||
resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
|
||||
engines: {node: '>= 6'}
|
||||
dev: true
|
||||
|
||||
/yargs-parser/20.2.9:
|
||||
resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==}
|
||||
|
|
Loading…
Reference in New Issue