pull/243/head
fantasticit 2023-04-09 13:24:34 +08:00
parent 4f89e8951e
commit 00b52c5e15
352 changed files with 1292 additions and 585 deletions

View File

@ -54,7 +54,21 @@ module.exports = {
'react/react-in-jsx-scope': 'off', 'react/react-in-jsx-scope': 'off',
'react/prop-types': 'off', 'react/prop-types': 'off',
'@typescript-eslint/explicit-function-return-type': 'off', '@typescript-eslint/explicit-function-return-type': 'off',
'simple-import-sort/imports': 'error', 'simple-import-sort/imports': [
'error',
{
groups: [
['react'],
['@douyinfe(.*)$'],
['(@)?think(.*)$'],
['(@)?tiptap(.*)$'],
['^@?\\w'],
['@/(.*)'],
['^[./]'],
['(.*).module.scss'],
],
},
],
'simple-import-sort/exports': 'error', 'simple-import-sort/exports': 'error',
}, },
ignorePatterns: ['dist/', 'node_modules', 'scripts', 'examples'], ignorePatterns: ['dist/', 'node_modules', 'scripts', 'examples'],

View File

@ -1,6 +1,7 @@
import { TabPane, Tabs } from '@douyinfe/semi-ui';
import React from 'react'; import React from 'react';
import { TabPane, Tabs } from '@douyinfe/semi-ui';
import { Mail } from './mail'; import { Mail } from './mail';
import { System } from './system'; import { System } from './system';

View File

@ -1,8 +1,10 @@
import React, { useCallback } from 'react';
import { Banner, Button, Form, Toast } from '@douyinfe/semi-ui'; import { Banner, Button, Form, Toast } from '@douyinfe/semi-ui';
import { DataRender } from 'components/data-render'; import { DataRender } from 'components/data-render';
import { useSystemConfig } from 'data/user'; import { useSystemConfig } from 'data/user';
import { useToggle } from 'hooks/use-toggle'; import { useToggle } from 'hooks/use-toggle';
import React, { useCallback } from 'react';
export const Mail = () => { export const Mail = () => {
const { data, loading, error, sendTestEmail, updateSystemConfig } = useSystemConfig(); const { data, loading, error, sendTestEmail, updateSystemConfig } = useSystemConfig();

View File

@ -1,9 +1,11 @@
import React, { useCallback } from 'react';
import { IconHelpCircle } from '@douyinfe/semi-icons'; import { IconHelpCircle } from '@douyinfe/semi-icons';
import { Banner, Button, Form, Toast, Tooltip } from '@douyinfe/semi-ui'; import { Banner, Button, Form, Toast, Tooltip } from '@douyinfe/semi-ui';
import { DataRender } from 'components/data-render'; import { DataRender } from 'components/data-render';
import { useSystemConfig } from 'data/user'; import { useSystemConfig } from 'data/user';
import { useToggle } from 'hooks/use-toggle'; import { useToggle } from 'hooks/use-toggle';
import React, { useCallback } from 'react';
export const System = () => { export const System = () => {
const { data, loading, error, updateSystemConfig } = useSystemConfig(); const { data, loading, error, updateSystemConfig } = useSystemConfig();

View File

@ -1,8 +1,10 @@
import React, { useEffect, useRef } from 'react';
import { IconClose } from '@douyinfe/semi-icons'; import { IconClose } from '@douyinfe/semi-icons';
import { Banner as SemiBanner } from '@douyinfe/semi-ui'; import { Banner as SemiBanner } from '@douyinfe/semi-ui';
import { BannerProps } from '@douyinfe/semi-ui/banner'; import { BannerProps } from '@douyinfe/semi-ui/banner';
import { useToggle } from 'hooks/use-toggle'; import { useToggle } from 'hooks/use-toggle';
import React, { useEffect, useRef } from 'react';
interface IProps extends BannerProps { interface IProps extends BannerProps {
duration?: number; duration?: number;

View File

@ -1,7 +1,9 @@
import React, { useMemo } from 'react';
import { Dropdown, SideSheet, Typography } from '@douyinfe/semi-ui'; import { Dropdown, SideSheet, Typography } from '@douyinfe/semi-ui';
import { IsOnMobile } from 'hooks/use-on-mobile'; import { IsOnMobile } from 'hooks/use-on-mobile';
import { useToggle } from 'hooks/use-toggle'; import { useToggle } from 'hooks/use-toggle';
import React, { useMemo } from 'react';
import styles from './style.module.scss'; import styles from './style.module.scss';

View File

@ -1,7 +1,9 @@
import { Spin, Typography } from '@douyinfe/semi-ui';
import { Empty } from 'illustrations/empty';
import React, { useMemo } from 'react'; import React, { useMemo } from 'react';
import { Spin, Typography } from '@douyinfe/semi-ui';
import { Empty } from 'illustrations/empty';
const { Text } = Typography; const { Text } = Typography;
export const defaultLoading = ( export const defaultLoading = (

View File

@ -1,6 +1,7 @@
import deepEqual from 'deep-equal';
import React from 'react'; import React from 'react';
import deepEqual from 'deep-equal';
import { defaultEmpty, defaultLoading, defaultRenderError, Render } from './constant'; import { defaultEmpty, defaultLoading, defaultRenderError, Render } from './constant';
import { LoadingWrap } from './loading'; import { LoadingWrap } from './loading';

View File

@ -1,6 +1,7 @@
import { useToggle } from 'hooks/use-toggle';
import React, { useEffect, useRef } from 'react'; import React, { useEffect, useRef } from 'react';
import { useToggle } from 'hooks/use-toggle';
import { Render } from './constant'; import { Render } from './constant';
export const LoadingWrap = ({ loading, delay = 200, loadingContent, normalContent }) => { export const LoadingWrap = ({ loading, delay = 200, loadingContent, normalContent }) => {

View File

@ -1,8 +1,10 @@
import React from 'react';
import { Button } from '@douyinfe/semi-ui'; import { Button } from '@douyinfe/semi-ui';
import { DocumentCreator as DocumenCreatorForm } from 'components/document/create'; import { DocumentCreator as DocumenCreatorForm } from 'components/document/create';
import { useRouterQuery } from 'hooks/use-router-query'; import { useRouterQuery } from 'hooks/use-router-query';
import { useToggle } from 'hooks/use-toggle'; import { useToggle } from 'hooks/use-toggle';
import React from 'react';
interface IProps { interface IProps {
onCreateDocument?: () => void; onCreateDocument?: () => void;

View File

@ -1,7 +1,11 @@
import React, { useCallback } from 'react';
import { IconArticle, IconBranch, IconExport, IconHistory, IconMore, IconPlus, IconStar } from '@douyinfe/semi-icons'; import { IconArticle, IconBranch, IconExport, IconHistory, IconMore, IconPlus, IconStar } from '@douyinfe/semi-icons';
import { Button, Dropdown, Space, Typography } from '@douyinfe/semi-ui'; import { Button, Dropdown, Space, Typography } from '@douyinfe/semi-ui';
import { ButtonProps } from '@douyinfe/semi-ui/button/Button'; import { ButtonProps } from '@douyinfe/semi-ui/button/Button';
import { IDocument, IOrganization, IWiki } from '@think/domains'; import { IDocument, IOrganization, IWiki } from '@think/domains';
import cls from 'classnames'; import cls from 'classnames';
import { DocumentCreator } from 'components/document/create'; import { DocumentCreator } from 'components/document/create';
import { DocumentDeletor } from 'components/document/delete'; import { DocumentDeletor } from 'components/document/delete';
@ -12,7 +16,6 @@ import { DocumentStar } from 'components/document/star';
import { DocumentStyle } from 'components/document/style'; import { DocumentStyle } from 'components/document/style';
import { DocumentVersionTrigger } from 'components/document/version'; import { DocumentVersionTrigger } from 'components/document/version';
import { useToggle } from 'hooks/use-toggle'; import { useToggle } from 'hooks/use-toggle';
import React, { useCallback } from 'react';
import styles from './index.module.scss'; import styles from './index.module.scss';

View File

@ -1,13 +1,16 @@
import { useCallback } from 'react';
import { IconEdit, IconUser } from '@douyinfe/semi-icons'; import { IconEdit, IconUser } from '@douyinfe/semi-icons';
import { Avatar, Button, Skeleton, Space, Tooltip, Typography } from '@douyinfe/semi-ui'; import { Avatar, Button, Skeleton, Space, Tooltip, Typography } from '@douyinfe/semi-ui';
import type { IDocument } from '@think/domains'; import type { IDocument } from '@think/domains';
import { DocumentShare } from 'components/document/share'; import { DocumentShare } from 'components/document/share';
import { DocumentStar } from 'components/document/star'; import { DocumentStar } from 'components/document/star';
import { IconDocument } from 'components/icons/IconDocument'; import { IconDocument } from 'components/icons/IconDocument';
import { LocaleTime } from 'components/locale-time'; import { LocaleTime } from 'components/locale-time';
import Link from 'next/link'; import Link from 'next/link';
import Router from 'next/router'; import Router from 'next/router';
import { useCallback } from 'react';
import styles from './index.module.scss'; import styles from './index.module.scss';

View File

@ -1,12 +1,14 @@
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
import { IconUserAdd } from '@douyinfe/semi-icons'; import { IconUserAdd } from '@douyinfe/semi-icons';
import { Avatar, AvatarGroup, Button, Dropdown, Modal, Popover, Toast, Tooltip, Typography } from '@douyinfe/semi-ui'; import { Avatar, AvatarGroup, Button, Dropdown, Modal, Popover, Toast, Tooltip, Typography } from '@douyinfe/semi-ui';
import { Members } from 'components/members'; import { Members } from 'components/members';
import { useDoumentMembers } from 'data/document'; import { useDoumentMembers } from 'data/document';
import { useUser } from 'data/user'; import { useUser } from 'data/user';
import { event, JOIN_USER } from 'event'; import { event, JOIN_USER } from 'event';
import { IsOnMobile } from 'hooks/use-on-mobile'; import { IsOnMobile } from 'hooks/use-on-mobile';
import { useToggle } from 'hooks/use-toggle'; import { useToggle } from 'hooks/use-toggle';
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
interface IProps { interface IProps {
wikiId: string; wikiId: string;

View File

@ -1,6 +1,7 @@
import type { IComment } from '@think/domains';
import React from 'react'; import React from 'react';
import type { IComment } from '@think/domains';
import { CommentItem } from './item'; import { CommentItem } from './item';
interface IProps { interface IProps {

View File

@ -1,9 +1,12 @@
import React from 'react';
import { IconUser } from '@douyinfe/semi-icons'; import { IconUser } from '@douyinfe/semi-icons';
import { Avatar, Popconfirm, Skeleton, Space, Typography } from '@douyinfe/semi-ui'; import { Avatar, Popconfirm, Skeleton, Space, Typography } from '@douyinfe/semi-ui';
import type { IComment, IUser } from '@think/domains'; import type { IComment, IUser } from '@think/domains';
import { LocaleTime } from 'components/locale-time'; import { LocaleTime } from 'components/locale-time';
import { useUser } from 'data/user'; import { useUser } from 'data/user';
import React from 'react';
import styles from './index.module.scss'; import styles from './index.module.scss';

View File

@ -1,13 +1,17 @@
import React, { useCallback, useRef, useState } from 'react';
import { Avatar, Banner, Button, Pagination, Space, Spin, Typography } from '@douyinfe/semi-ui'; import { Avatar, Banner, Button, Pagination, Space, Spin, Typography } from '@douyinfe/semi-ui';
import { EditorContent, useEditor } from 'tiptap/core';
import { CommentKit, CommentMenuBar } from 'tiptap/editor';
import { DataRender } from 'components/data-render'; import { DataRender } from 'components/data-render';
import { useComments } from 'data/comment'; import { useComments } from 'data/comment';
import { useUser } from 'data/user'; import { useUser } from 'data/user';
import { useToggle } from 'hooks/use-toggle'; import { useToggle } from 'hooks/use-toggle';
import React, { useCallback, useRef, useState } from 'react';
import { EditorContent, useEditor } from 'tiptap/core';
import { CommentKit, CommentMenuBar } from 'tiptap/editor';
import { Comments } from './comments'; import { Comments } from './comments';
import styles from './index.module.scss'; import styles from './index.module.scss';
interface IProps { interface IProps {

View File

@ -1,12 +1,15 @@
import { Dispatch, SetStateAction, useCallback, useEffect, useState } from 'react';
import { Checkbox, Modal, TabPane, Tabs } from '@douyinfe/semi-ui'; import { Checkbox, Modal, TabPane, Tabs } from '@douyinfe/semi-ui';
import { IDocument, IWiki } from '@think/domains'; import { IDocument, IWiki } from '@think/domains';
import { TemplateCardEmpty } from 'components/template/card'; import { TemplateCardEmpty } from 'components/template/card';
import { TemplateList } from 'components/template/list'; import { TemplateList } from 'components/template/list';
import { useCreateDocument } from 'data/document'; import { useCreateDocument } from 'data/document';
import { useOwnTemplates, usePublicTemplates } from 'data/template'; import { useOwnTemplates, usePublicTemplates } from 'data/template';
import { useRouterQuery } from 'hooks/use-router-query'; import { useRouterQuery } from 'hooks/use-router-query';
import Router from 'next/router'; import Router from 'next/router';
import { Dispatch, SetStateAction, useCallback, useEffect, useState } from 'react';
import styles from './index.module.scss'; import styles from './index.module.scss';

View File

@ -1,9 +1,11 @@
import React, { useCallback, useMemo } from 'react';
import { IconDelete } from '@douyinfe/semi-icons'; import { IconDelete } from '@douyinfe/semi-icons';
import { Popconfirm, Space, Typography } from '@douyinfe/semi-ui'; import { Popconfirm, Space, Typography } from '@douyinfe/semi-ui';
import { useDeleteDocument } from 'data/document'; import { useDeleteDocument } from 'data/document';
import { useRouterQuery } from 'hooks/use-router-query'; import { useRouterQuery } from 'hooks/use-router-query';
import Router from 'next/router'; import Router from 'next/router';
import React, { useCallback, useMemo } from 'react';
interface IProps { interface IProps {
wikiId: string; wikiId: string;

View File

@ -1,9 +1,12 @@
import React, { useEffect, useRef } from 'react';
import { IAuthority, ILoginUser } from '@think/domains'; import { IAuthority, ILoginUser } from '@think/domains';
import { CollaborationEditor, ICollaborationRefProps } from 'tiptap/editor';
import cls from 'classnames'; import cls from 'classnames';
import { event, triggerChangeDocumentTitle, triggerJoinUser, USE_DOCUMENT_VERSION } from 'event'; import { event, triggerChangeDocumentTitle, triggerJoinUser, USE_DOCUMENT_VERSION } from 'event';
import { useMount } from 'hooks/use-mount'; import { useMount } from 'hooks/use-mount';
import React, { useEffect, useRef } from 'react';
import { CollaborationEditor, ICollaborationRefProps } from 'tiptap/editor';
import styles from './index.module.scss'; import styles from './index.module.scss';

View File

@ -1,5 +1,8 @@
import React, { useCallback, useEffect, useMemo, useState } from 'react';
import { IconChevronLeft } from '@douyinfe/semi-icons'; import { IconChevronLeft } from '@douyinfe/semi-icons';
import { Button, Nav, Skeleton, Space, Tooltip, Typography } from '@douyinfe/semi-ui'; import { Button, Nav, Skeleton, Space, Tooltip, Typography } from '@douyinfe/semi-ui';
import { DataRender } from 'components/data-render'; import { DataRender } from 'components/data-render';
import { Divider } from 'components/divider'; import { Divider } from 'components/divider';
import { DocumentCollaboration } from 'components/document/collaboration'; import { DocumentCollaboration } from 'components/document/collaboration';
@ -16,10 +19,10 @@ import { IsOnMobile } from 'hooks/use-on-mobile';
import { useWindowSize } from 'hooks/use-window-size'; import { useWindowSize } from 'hooks/use-window-size';
import { SecureDocumentIllustration } from 'illustrations/secure-document'; import { SecureDocumentIllustration } from 'illustrations/secure-document';
import Router from 'next/router'; import Router from 'next/router';
import React, { useCallback, useEffect, useMemo, useState } from 'react';
import { DocumentActions } from '../actions'; import { DocumentActions } from '../actions';
import { Editor } from './editor'; import { Editor } from './editor';
import styles from './index.module.scss'; import styles from './index.module.scss';
const { Text } = Typography; const { Text } = Typography;

View File

@ -1,18 +1,23 @@
import React, { useCallback, useEffect, useMemo } from 'react';
import { Badge, Button, Dropdown, Modal, Space, Typography } from '@douyinfe/semi-ui'; import { Badge, Button, Dropdown, Modal, Space, Typography } from '@douyinfe/semi-ui';
import { IDocument } from '@think/domains'; import { IDocument } from '@think/domains';
import { createEditor } from 'tiptap/core';
import { AllExtensions } from 'tiptap/core/all-kit';
import { prosemirrorToMarkdown } from 'tiptap/markdown/prosemirror-to-markdown';
import { IconJSON, IconMarkdown, IconPDF, IconWord } from 'components/icons'; import { IconJSON, IconMarkdown, IconPDF, IconWord } from 'components/icons';
import { useDocumentDetail } from 'data/document'; import { useDocumentDetail } from 'data/document';
import FileSaver from 'file-saver'; import FileSaver from 'file-saver';
import { safeJSONParse, safeJSONStringify } from 'helpers/json'; import { safeJSONParse, safeJSONStringify } from 'helpers/json';
import { IsOnMobile } from 'hooks/use-on-mobile'; import { IsOnMobile } from 'hooks/use-on-mobile';
import { useToggle } from 'hooks/use-toggle'; import { useToggle } from 'hooks/use-toggle';
import React, { useCallback, useEffect, useMemo } from 'react';
import { createEditor } from 'tiptap/core'; import { printEditorContent } from './pdf';
import { AllExtensions } from 'tiptap/core/all-kit';
import { prosemirrorToMarkdown } from 'tiptap/markdown/prosemirror-to-markdown';
import styles from './index.module.scss'; import styles from './index.module.scss';
import { printEditorContent } from './pdf';
const { Text } = Typography; const { Text } = Typography;

View File

@ -1,15 +1,18 @@
import React, { useCallback, useEffect, useRef, useState } from 'react';
import { FullScreen, useFullScreenHandle } from 'react-full-screen';
import { IconShrinkScreenStroked } from '@douyinfe/semi-icons'; import { IconShrinkScreenStroked } from '@douyinfe/semi-icons';
import { Button, Space, Tooltip, Typography } from '@douyinfe/semi-ui'; import { Button, Space, Tooltip, Typography } from '@douyinfe/semi-ui';
import { EditorContent, useEditor } from '@tiptap/react'; import { EditorContent, useEditor } from '@tiptap/react';
import { CollaborationKit, Document } from 'tiptap/editor';
import cls from 'classnames'; import cls from 'classnames';
import { IconFullscreen } from 'components/icons/IconFullscreen'; import { IconFullscreen } from 'components/icons/IconFullscreen';
import { IconPencil } from 'components/icons/IconPencil'; import { IconPencil } from 'components/icons/IconPencil';
import { safeJSONParse } from 'helpers/json'; import { safeJSONParse } from 'helpers/json';
import { useDrawingCursor } from 'hooks/use-cursor'; import { useDrawingCursor } from 'hooks/use-cursor';
import { useToggle } from 'hooks/use-toggle'; import { useToggle } from 'hooks/use-toggle';
import React, { useCallback, useEffect, useRef, useState } from 'react';
import { FullScreen, useFullScreenHandle } from 'react-full-screen';
import { CollaborationKit, Document } from 'tiptap/editor';
import styles from './index.module.scss'; import styles from './index.module.scss';

View File

@ -1,9 +1,12 @@
import React, { useCallback } from 'react';
import { IconLink } from '@douyinfe/semi-icons'; import { IconLink } from '@douyinfe/semi-icons';
import { Space, Typography } from '@douyinfe/semi-ui'; import { Space, Typography } from '@douyinfe/semi-ui';
import { IDocument, IOrganization, IWiki } from '@think/domains'; import { IDocument, IOrganization, IWiki } from '@think/domains';
import { copy } from 'helpers/copy'; import { copy } from 'helpers/copy';
import { buildUrl } from 'helpers/url'; import { buildUrl } from 'helpers/url';
import React, { useCallback } from 'react';
interface IProps { interface IProps {
organizationId: IOrganization['id']; organizationId: IOrganization['id'];

View File

@ -1,8 +1,11 @@
import React from 'react';
import { IconUser } from '@douyinfe/semi-icons'; import { IconUser } from '@douyinfe/semi-icons';
import { Avatar, Space } from '@douyinfe/semi-ui'; import { Avatar, Space } from '@douyinfe/semi-ui';
import { IDocument } from '@think/domains'; import { IDocument } from '@think/domains';
import { LocaleTime } from 'components/locale-time'; import { LocaleTime } from 'components/locale-time';
import React from 'react';
interface IProps { interface IProps {
document: IDocument; document: IDocument;

View File

@ -1,5 +1,11 @@
import React, { useCallback, useMemo } from 'react';
import { createPortal } from 'react-dom';
import { IconEdit } from '@douyinfe/semi-icons'; import { IconEdit } from '@douyinfe/semi-icons';
import { Button, Layout, Nav, Skeleton, Space, Spin, Tooltip, Typography } from '@douyinfe/semi-ui'; import { Button, Layout, Nav, Skeleton, Space, Spin, Tooltip, Typography } from '@douyinfe/semi-ui';
import { CollaborationEditor } from 'tiptap/editor';
import { DataRender } from 'components/data-render'; import { DataRender } from 'components/data-render';
import { DocumentCollaboration } from 'components/document/collaboration'; import { DocumentCollaboration } from 'components/document/collaboration';
import { DocumentStar } from 'components/document/star'; import { DocumentStar } from 'components/document/star';
@ -13,13 +19,11 @@ import { useMount } from 'hooks/use-mount';
import { IsOnMobile } from 'hooks/use-on-mobile'; import { IsOnMobile } from 'hooks/use-on-mobile';
import { useWindowSize } from 'hooks/use-window-size'; import { useWindowSize } from 'hooks/use-window-size';
import Router from 'next/router'; import Router from 'next/router';
import React, { useCallback, useMemo } from 'react';
import { createPortal } from 'react-dom';
import { CollaborationEditor } from 'tiptap/editor';
import { DocumentActions } from '../actions'; import { DocumentActions } from '../actions';
import { DocumentFullscreen } from '../fullscreen'; import { DocumentFullscreen } from '../fullscreen';
import { Author } from './author'; import { Author } from './author';
import styles from './index.module.scss'; import styles from './index.module.scss';
const { Header } = Layout; const { Header } = Layout;

View File

@ -1,12 +1,15 @@
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
import { IconLink } from '@douyinfe/semi-icons'; import { IconLink } from '@douyinfe/semi-icons';
import { Button, Dropdown, Input, Modal, Space, Toast, Typography } from '@douyinfe/semi-ui'; import { Button, Dropdown, Input, Modal, Space, Toast, Typography } from '@douyinfe/semi-ui';
import { isPublicDocument } from '@think/domains'; import { isPublicDocument } from '@think/domains';
import { useDocumentDetail } from 'data/document'; import { useDocumentDetail } from 'data/document';
import { getDocumentShareURL } from 'helpers/url'; import { getDocumentShareURL } from 'helpers/url';
import { IsOnMobile } from 'hooks/use-on-mobile'; import { IsOnMobile } from 'hooks/use-on-mobile';
import { useToggle } from 'hooks/use-toggle'; import { useToggle } from 'hooks/use-toggle';
import { ShareIllustration } from 'illustrations/share'; import { ShareIllustration } from 'illustrations/share';
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
interface IProps { interface IProps {
documentId: string; documentId: string;

View File

@ -1,11 +1,14 @@
import { IconStar } from '@douyinfe/semi-icons';
import { Button, Tooltip } from '@douyinfe/semi-ui';
import { IDocument, IOrganization, IWiki } from '@think/domains';
import { useDocumentStarToggle } from 'data/star';
import { useToggle } from 'hooks/use-toggle';
import React, { useCallback } from 'react'; import React, { useCallback } from 'react';
import VisibilitySensor from 'react-visibility-sensor'; import VisibilitySensor from 'react-visibility-sensor';
import { IconStar } from '@douyinfe/semi-icons';
import { Button, Tooltip } from '@douyinfe/semi-ui';
import { IDocument, IOrganization, IWiki } from '@think/domains';
import { useDocumentStarToggle } from 'data/star';
import { useToggle } from 'hooks/use-toggle';
interface IProps { interface IProps {
organizationId: IOrganization['id']; organizationId: IOrganization['id'];
wikiId: IWiki['id']; wikiId: IWiki['id'];

View File

@ -1,10 +1,12 @@
import React, { useMemo } from 'react';
import { IconArticle } from '@douyinfe/semi-icons'; import { IconArticle } from '@douyinfe/semi-icons';
import { Button, Dropdown, Radio, RadioGroup, Slider, Typography } from '@douyinfe/semi-ui'; import { Button, Dropdown, Radio, RadioGroup, Slider, Typography } from '@douyinfe/semi-ui';
import { throttle } from 'helpers/throttle'; import { throttle } from 'helpers/throttle';
import { useDocumentStyle } from 'hooks/use-document-style'; import { useDocumentStyle } from 'hooks/use-document-style';
import { IsOnMobile } from 'hooks/use-on-mobile'; import { IsOnMobile } from 'hooks/use-on-mobile';
import { useToggle } from 'hooks/use-toggle'; import { useToggle } from 'hooks/use-toggle';
import React, { useMemo } from 'react';
import styles from './index.module.scss'; import styles from './index.module.scss';

View File

@ -1,6 +1,11 @@
import React, { useCallback, useEffect, useState } from 'react';
import { IconChevronLeft } from '@douyinfe/semi-icons'; import { IconChevronLeft } from '@douyinfe/semi-icons';
import { Button, Modal, Select, Space, Tag, Typography } from '@douyinfe/semi-ui'; import { Button, Modal, Select, Space, Tag, Typography } from '@douyinfe/semi-ui';
import { EditorContent, useEditor } from '@tiptap/react'; import { EditorContent, useEditor } from '@tiptap/react';
import { CollaborationKit } from 'tiptap/editor';
import cls from 'classnames'; import cls from 'classnames';
import { DataRender } from 'components/data-render'; import { DataRender } from 'components/data-render';
import { LocaleTime } from 'components/locale-time'; import { LocaleTime } from 'components/locale-time';
@ -9,8 +14,6 @@ import { generateDiffHtml } from 'helpers/generate-html';
import { safeJSONParse } from 'helpers/json'; import { safeJSONParse } from 'helpers/json';
import { DocumentVersionControl } from 'hooks/use-document-version'; import { DocumentVersionControl } from 'hooks/use-document-version';
import { IsOnMobile } from 'hooks/use-on-mobile'; import { IsOnMobile } from 'hooks/use-on-mobile';
import React, { useCallback, useEffect, useState } from 'react';
import { CollaborationKit } from 'tiptap/editor';
import styles from './index.module.scss'; import styles from './index.module.scss';

View File

@ -1,10 +1,13 @@
import React, { useCallback, useEffect, useMemo, useState } from 'react';
import { Button, Popover, SideSheet, TabPane, Tabs } from '@douyinfe/semi-ui'; import { Button, Popover, SideSheet, TabPane, Tabs } from '@douyinfe/semi-ui';
import { createKeysLocalStorageLRUCache } from 'helpers/lru-cache'; import { createKeysLocalStorageLRUCache } from 'helpers/lru-cache';
import { IsOnMobile } from 'hooks/use-on-mobile'; import { IsOnMobile } from 'hooks/use-on-mobile';
import { useToggle } from 'hooks/use-toggle'; import { useToggle } from 'hooks/use-toggle';
import React, { useCallback, useEffect, useMemo, useState } from 'react';
import { ACTIVITIES, EXPRESSIONES, GESTURES, OBJECTS, SKY_WEATHER, SYMBOLS } from './constants'; import { ACTIVITIES, EXPRESSIONES, GESTURES, OBJECTS, SKY_WEATHER, SYMBOLS } from './constants';
import styles from './index.module.scss'; import styles from './index.module.scss';
const emojiLocalStorageLRUCache = createKeysLocalStorageLRUCache('EMOJI_PICKER', 20); const emojiLocalStorageLRUCache = createKeysLocalStorageLRUCache('EMOJI_PICKER', 20);

View File

@ -1,6 +1,7 @@
import { Typography } from '@douyinfe/semi-ui';
import React from 'react'; import React from 'react';
import { Typography } from '@douyinfe/semi-ui';
interface IProps { interface IProps {
illustration?: React.ReactNode; illustration?: React.ReactNode;
message: React.ReactNode; message: React.ReactNode;

View File

@ -1,6 +1,7 @@
import { Typography } from '@douyinfe/semi-ui';
import React, { useCallback, useMemo, useState } from 'react'; import React, { useCallback, useMemo, useState } from 'react';
import { Typography } from '@douyinfe/semi-ui';
import { GridCell } from './grid-cell'; import { GridCell } from './grid-cell';
const { Text } = Typography; const { Text } = Typography;

View File

@ -1,6 +1,7 @@
import { Icon } from '@douyinfe/semi-ui';
import React from 'react'; import React from 'react';
import { Icon } from '@douyinfe/semi-ui';
export const IconDocument: React.FC<{ style?: React.CSSProperties }> = ({ style = {} }) => { export const IconDocument: React.FC<{ style?: React.CSSProperties }> = ({ style = {} }) => {
return ( return (
<Icon <Icon

View File

@ -1,6 +1,7 @@
import { Icon } from '@douyinfe/semi-ui';
import React from 'react'; import React from 'react';
import { Icon } from '@douyinfe/semi-ui';
export const IconDocumentFill: React.FC<{ style?: React.CSSProperties }> = ({ style = {} }) => { export const IconDocumentFill: React.FC<{ style?: React.CSSProperties }> = ({ style = {} }) => {
return ( return (
<Icon <Icon

View File

@ -1,6 +1,7 @@
import { Icon } from '@douyinfe/semi-ui';
import React from 'react'; import React from 'react';
import { Icon } from '@douyinfe/semi-ui';
export const IconMessage: React.FC<{ style?: React.CSSProperties }> = ({ style = {} }) => { export const IconMessage: React.FC<{ style?: React.CSSProperties }> = ({ style = {} }) => {
return ( return (
<Icon <Icon

View File

@ -1,6 +1,7 @@
import { Icon } from '@douyinfe/semi-ui';
import React from 'react'; import React from 'react';
import { Icon } from '@douyinfe/semi-ui';
export const IconOverview: React.FC<{ style?: React.CSSProperties }> = ({ style = {} }) => { export const IconOverview: React.FC<{ style?: React.CSSProperties }> = ({ style = {} }) => {
return ( return (
<Icon <Icon

View File

@ -1,6 +1,7 @@
import { Icon } from '@douyinfe/semi-ui';
import React from 'react'; import React from 'react';
import { Icon } from '@douyinfe/semi-ui';
export const IconSearch: React.FC<{ style?: React.CSSProperties }> = ({ style = {} }) => { export const IconSearch: React.FC<{ style?: React.CSSProperties }> = ({ style = {} }) => {
return ( return (
<Icon <Icon

View File

@ -1,6 +1,7 @@
import { Icon } from '@douyinfe/semi-ui';
import React from 'react'; import React from 'react';
import { Icon } from '@douyinfe/semi-ui';
export const IconSetting: React.FC<{ style?: React.CSSProperties }> = ({ style = {} }) => { export const IconSetting: React.FC<{ style?: React.CSSProperties }> = ({ style = {} }) => {
return ( return (
<Icon <Icon

View File

@ -1,6 +1,7 @@
import { Icon } from '@douyinfe/semi-ui';
import React from 'react'; import React from 'react';
import { Icon } from '@douyinfe/semi-ui';
export const IconShare: React.FC<{ style?: React.CSSProperties }> = ({ style = {} }) => { export const IconShare: React.FC<{ style?: React.CSSProperties }> = ({ style = {} }) => {
return ( return (
<Icon <Icon

View File

@ -1,10 +1,12 @@
import React, { useCallback, useMemo, useState } from 'react';
import { LazyLoadImage } from 'react-lazy-load-image-component';
import { Button, ButtonGroup, Col, Popover, Row, SideSheet, Skeleton, Space, TabPane, Tabs } from '@douyinfe/semi-ui'; import { Button, ButtonGroup, Col, Popover, Row, SideSheet, Skeleton, Space, TabPane, Tabs } from '@douyinfe/semi-ui';
import { Upload } from 'components/upload'; import { Upload } from 'components/upload';
import { chunk } from 'helpers/chunk'; import { chunk } from 'helpers/chunk';
import { IsOnMobile } from 'hooks/use-on-mobile'; import { IsOnMobile } from 'hooks/use-on-mobile';
import { useToggle } from 'hooks/use-toggle'; import { useToggle } from 'hooks/use-toggle';
import React, { useCallback, useMemo, useState } from 'react';
import { LazyLoadImage } from 'react-lazy-load-image-component';
import styles from './index.module.scss'; import styles from './index.module.scss';

View File

@ -1,4 +1,5 @@
import { useEffect } from 'react'; import { useEffect } from 'react';
import Viewer from 'viewerjs'; import Viewer from 'viewerjs';
interface IProps { interface IProps {

View File

@ -1,4 +1,5 @@
import React, { useEffect, useMemo, useRef, useState } from 'react'; import React, { useEffect, useMemo, useRef, useState } from 'react';
import * as timeagojs from 'timeago.js'; import * as timeagojs from 'timeago.js';
type Props = { type Props = {

View File

@ -1,4 +1,5 @@
import { Typography } from '@douyinfe/semi-ui'; import { Typography } from '@douyinfe/semi-ui';
import Link from 'next/link'; import Link from 'next/link';
import styles from './index.module.scss'; import styles from './index.module.scss';

View File

@ -1,7 +1,9 @@
import { Banner, Input, Popconfirm, Select, Space } from '@douyinfe/semi-ui';
import { AuthEnum, AuthEnumArray } from '@think/domains';
import React, { useCallback, useState } from 'react'; import React, { useCallback, useState } from 'react';
import { Banner, Input, Popconfirm, Select, Space } from '@douyinfe/semi-ui';
import { AuthEnum, AuthEnumArray } from '@think/domains';
interface IProps { interface IProps {
onOk: (arg) => any; onOk: (arg) => any;
} }

View File

@ -1,7 +1,9 @@
import { Banner, Popconfirm, Select, Toast } from '@douyinfe/semi-ui';
import { AuthEnum, AuthEnumArray, IAuth, IUser } from '@think/domains';
import React, { useCallback, useState } from 'react'; import React, { useCallback, useState } from 'react';
import { Banner, Popconfirm, Select, Toast } from '@douyinfe/semi-ui';
import { AuthEnum, AuthEnumArray, IAuth, IUser } from '@think/domains';
interface IProps { interface IProps {
userWithAuth: { user: IUser; auth: IAuth }; userWithAuth: { user: IUser; auth: IAuth };
updateUser: (arg) => any; updateUser: (arg) => any;

View File

@ -1,12 +1,16 @@
import React from 'react';
import { IconDelete, IconEdit } from '@douyinfe/semi-icons'; import { IconDelete, IconEdit } from '@douyinfe/semi-icons';
import { Banner, Button, Popconfirm, Table, Typography } from '@douyinfe/semi-ui'; import { Banner, Button, Popconfirm, Table, Typography } from '@douyinfe/semi-ui';
import { AuthEnumTextMap } from '@think/domains'; import { AuthEnumTextMap } from '@think/domains';
import { DataRender } from 'components/data-render'; import { DataRender } from 'components/data-render';
import { LocaleTime } from 'components/locale-time'; import { LocaleTime } from 'components/locale-time';
import React from 'react';
import { AddUser } from './add'; import { AddUser } from './add';
import { EditUser } from './edit'; import { EditUser } from './edit';
import styles from './index.module.scss'; import styles from './index.module.scss';
interface IProps { interface IProps {

View File

@ -1,4 +1,7 @@
import React, { useCallback, useMemo } from 'react';
import { Badge, Button, Dropdown, Modal, Pagination, TabPane, Tabs, Typography } from '@douyinfe/semi-ui'; import { Badge, Button, Dropdown, Modal, Pagination, TabPane, Tabs, Typography } from '@douyinfe/semi-ui';
import { DataRender } from 'components/data-render'; import { DataRender } from 'components/data-render';
import { Empty } from 'components/empty'; import { Empty } from 'components/empty';
import { IconMessage } from 'components/icons/IconMessage'; import { IconMessage } from 'components/icons/IconMessage';
@ -8,10 +11,10 @@ import { IsOnMobile } from 'hooks/use-on-mobile';
import { useToggle } from 'hooks/use-toggle'; import { useToggle } from 'hooks/use-toggle';
import { EmptyBoxIllustration } from 'illustrations/empty-box'; import { EmptyBoxIllustration } from 'illustrations/empty-box';
import Link from 'next/link'; import Link from 'next/link';
import React, { useCallback, useMemo } from 'react';
import { Placeholder } from './placeholder';
import styles from './index.module.scss'; import styles from './index.module.scss';
import { Placeholder } from './placeholder';
const { Text } = Typography; const { Text } = Typography;
const PAGE_SIZE = 6; const PAGE_SIZE = 6;

View File

@ -1,10 +1,13 @@
import React, { useCallback } from 'react';
import { IconDelete } from '@douyinfe/semi-icons'; import { IconDelete } from '@douyinfe/semi-icons';
import { Modal, Space, Typography } from '@douyinfe/semi-ui'; import { Modal, Space, Typography } from '@douyinfe/semi-ui';
import { IOrganization } from '@think/domains'; import { IOrganization } from '@think/domains';
import { useOrganizationDetail } from 'data/organization'; import { useOrganizationDetail } from 'data/organization';
import { useRouterQuery } from 'hooks/use-router-query'; import { useRouterQuery } from 'hooks/use-router-query';
import Router from 'next/router'; import Router from 'next/router';
import React, { useCallback } from 'react';
interface IProps { interface IProps {
organizationId: IOrganization['id']; organizationId: IOrganization['id'];

View File

@ -1,5 +1,6 @@
import { Typography } from '@douyinfe/semi-ui'; import { Typography } from '@douyinfe/semi-ui';
import { Avatar } from '@douyinfe/semi-ui'; import { Avatar } from '@douyinfe/semi-ui';
import { DataRender } from 'components/data-render'; import { DataRender } from 'components/data-render';
import { useOrganizationDetail } from 'data/organization'; import { useOrganizationDetail } from 'data/organization';
import { useRouterQuery } from 'hooks/use-router-query'; import { useRouterQuery } from 'hooks/use-router-query';

View File

@ -1,9 +1,11 @@
import { Space } from '@douyinfe/semi-ui'; import { Space } from '@douyinfe/semi-ui';
import { LogoImage, LogoText } from 'components/logo'; import { LogoImage, LogoText } from 'components/logo';
import { useUser } from 'data/user'; import { useUser } from 'data/user';
import { useWindowSize } from 'hooks/use-window-size'; import { useWindowSize } from 'hooks/use-window-size';
import { UserOrganizationsSwitcher } from '../switcher'; import { UserOrganizationsSwitcher } from '../switcher';
import styles from './index.module.scss'; import styles from './index.module.scss';
export const OrganizationPublicSwitcher = () => { export const OrganizationPublicSwitcher = () => {

View File

@ -1,12 +1,15 @@
import { useCallback, useEffect, useRef, useState } from 'react';
import { Avatar, Button, Form, Toast } from '@douyinfe/semi-ui'; import { Avatar, Button, Form, Toast } from '@douyinfe/semi-ui';
import { FormApi } from '@douyinfe/semi-ui/lib/es/form'; import { FormApi } from '@douyinfe/semi-ui/lib/es/form';
import { ORGANIZATION_LOGOS } from '@think/constants'; import { ORGANIZATION_LOGOS } from '@think/constants';
import { IOrganization } from '@think/domains'; import { IOrganization } from '@think/domains';
import { DataRender } from 'components/data-render'; import { DataRender } from 'components/data-render';
import { ImageUploader } from 'components/image-uploader'; import { ImageUploader } from 'components/image-uploader';
import { useOrganizationDetail } from 'data/organization'; import { useOrganizationDetail } from 'data/organization';
import { useToggle } from 'hooks/use-toggle'; import { useToggle } from 'hooks/use-toggle';
import { useCallback, useEffect, useRef, useState } from 'react';
import styles from './index.module.scss'; import styles from './index.module.scss';

View File

@ -1,8 +1,11 @@
import { TabPane, Tabs } from '@douyinfe/semi-ui';
import { IOrganization } from '@think/domains';
import { Seo } from 'components/seo';
import React from 'react'; import React from 'react';
import { TabPane, Tabs } from '@douyinfe/semi-ui';
import { IOrganization } from '@think/domains';
import { Seo } from 'components/seo';
import { Base } from './base'; import { Base } from './base';
import { OrganizationMembers } from './members'; import { OrganizationMembers } from './members';
import { More } from './more'; import { More } from './more';

View File

@ -1,7 +1,9 @@
import React from 'react';
import { IOrganization } from '@think/domains'; import { IOrganization } from '@think/domains';
import { Members } from 'components/members'; import { Members } from 'components/members';
import { useOrganizationMembers } from 'data/organization'; import { useOrganizationMembers } from 'data/organization';
import React from 'react';
interface IProps { interface IProps {
organizationId: IOrganization['id']; organizationId: IOrganization['id'];

View File

@ -1,4 +1,5 @@
import { Banner, Button, Typography } from '@douyinfe/semi-ui'; import { Banner, Button, Typography } from '@douyinfe/semi-ui';
import { OrganizationDeletor } from 'components/organization/delete'; import { OrganizationDeletor } from 'components/organization/delete';
const { Paragraph } = Typography; const { Paragraph } = Typography;

View File

@ -1,11 +1,13 @@
import { useMemo } from 'react';
import { IconAppCenter, IconApps, IconSmallTriangleDown } from '@douyinfe/semi-icons'; import { IconAppCenter, IconApps, IconSmallTriangleDown } from '@douyinfe/semi-icons';
import { Button, Dropdown, Space, Typography } from '@douyinfe/semi-ui'; import { Button, Dropdown, Space, Typography } from '@douyinfe/semi-ui';
import { Avatar } from '@douyinfe/semi-ui'; import { Avatar } from '@douyinfe/semi-ui';
import { DataRender } from 'components/data-render'; import { DataRender } from 'components/data-render';
import { useOrganizationDetail, useUserOrganizations } from 'data/organization'; import { useOrganizationDetail, useUserOrganizations } from 'data/organization';
import { useRouterQuery } from 'hooks/use-router-query'; import { useRouterQuery } from 'hooks/use-router-query';
import Link from 'next/link'; import Link from 'next/link';
import { useMemo } from 'react';
import styles from './index.module.scss'; import styles from './index.module.scss';

View File

@ -1,7 +1,8 @@
import React, { useEffect, useRef } from 'react';
import cls from 'classnames'; import cls from 'classnames';
import { useClickOutside } from 'hooks/use-click-outside'; import { useClickOutside } from 'hooks/use-click-outside';
import interact from 'interactjs'; import interact from 'interactjs';
import React, { useEffect, useRef } from 'react';
import styles from './style.module.scss'; import styles from './style.module.scss';

View File

@ -1,6 +1,10 @@
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
import { IconSearch as SemiIconSearch } from '@douyinfe/semi-icons'; import { IconSearch as SemiIconSearch } from '@douyinfe/semi-icons';
import { Button, Dropdown, Input, Modal, Spin, Typography } from '@douyinfe/semi-ui'; import { Button, Dropdown, Input, Modal, Spin, Typography } from '@douyinfe/semi-ui';
import { IDocument } from '@think/domains'; import { IDocument } from '@think/domains';
import { DataRender } from 'components/data-render'; import { DataRender } from 'components/data-render';
import { DocumentStar } from 'components/document/star'; import { DocumentStar } from 'components/document/star';
import { Empty } from 'components/empty'; import { Empty } from 'components/empty';
@ -14,7 +18,6 @@ import { useRouterQuery } from 'hooks/use-router-query';
import { useToggle } from 'hooks/use-toggle'; import { useToggle } from 'hooks/use-toggle';
import Link from 'next/link'; import Link from 'next/link';
import Router from 'next/router'; import Router from 'next/router';
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
import { HttpClient } from 'services/http-client'; import { HttpClient } from 'services/http-client';
import styles from './index.module.scss'; import styles from './index.module.scss';

View File

@ -1,6 +1,7 @@
import { useCallback, useRef } from 'react';
import { Button, Dropdown, Form } from '@douyinfe/semi-ui'; import { Button, Dropdown, Form } from '@douyinfe/semi-ui';
import { FormApi } from '@douyinfe/semi-ui/lib/es/form'; import { FormApi } from '@douyinfe/semi-ui/lib/es/form';
import { useCallback, useRef } from 'react';
type ISize = { width: number | string; height: number | string }; type ISize = { width: number | string; height: number | string };

View File

@ -1,13 +1,16 @@
import { useCallback } from 'react';
import { IconEdit, IconPlus, IconUser } from '@douyinfe/semi-icons'; import { IconEdit, IconPlus, IconUser } from '@douyinfe/semi-icons';
import { Avatar, Button, Modal, Skeleton, Space, Tooltip, Typography } from '@douyinfe/semi-ui'; import { Avatar, Button, Modal, Skeleton, Space, Tooltip, Typography } from '@douyinfe/semi-ui';
import type { ITemplate } from '@think/domains'; import type { ITemplate } from '@think/domains';
import cls from 'classnames'; import cls from 'classnames';
import { IconDocument } from 'components/icons/IconDocument'; import { IconDocument } from 'components/icons/IconDocument';
import { TemplateReader } from 'components/template/reader'; import { TemplateReader } from 'components/template/reader';
import { useUser } from 'data/user'; import { useUser } from 'data/user';
import { useToggle } from 'hooks/use-toggle'; import { useToggle } from 'hooks/use-toggle';
import Router from 'next/router'; import Router from 'next/router';
import { useCallback } from 'react';
import styles from './index.module.scss'; import styles from './index.module.scss';

View File

@ -1,5 +1,10 @@
import React, { useCallback, useEffect, useMemo, useState } from 'react';
import { IconChevronLeft } from '@douyinfe/semi-icons'; import { IconChevronLeft } from '@douyinfe/semi-icons';
import { Button, Nav, Popconfirm, Space, Switch, Tooltip, Typography } from '@douyinfe/semi-ui'; import { Button, Nav, Popconfirm, Space, Switch, Tooltip, Typography } from '@douyinfe/semi-ui';
import { CollaborationEditor } from 'tiptap/editor';
import { DocumentStyle } from 'components/document/style'; import { DocumentStyle } from 'components/document/style';
import { Seo } from 'components/seo'; import { Seo } from 'components/seo';
import { Theme } from 'components/theme'; import { Theme } from 'components/theme';
@ -10,8 +15,6 @@ import { useDocumentStyle } from 'hooks/use-document-style';
import { useMount } from 'hooks/use-mount'; import { useMount } from 'hooks/use-mount';
import { useWindowSize } from 'hooks/use-window-size'; import { useWindowSize } from 'hooks/use-window-size';
import Router from 'next/router'; import Router from 'next/router';
import React, { useCallback, useEffect, useMemo, useState } from 'react';
import { CollaborationEditor } from 'tiptap/editor';
import styles from './index.module.scss'; import styles from './index.module.scss';

View File

@ -1,8 +1,10 @@
import React, { useEffect, useMemo, useState } from 'react';
import { List, Pagination } from '@douyinfe/semi-ui'; import { List, Pagination } from '@douyinfe/semi-ui';
import { DataRender } from 'components/data-render'; import { DataRender } from 'components/data-render';
import { Empty } from 'components/empty'; import { Empty } from 'components/empty';
import { IProps as ITemplateCardProps, TemplateCard, TemplateCardPlaceholder } from 'components/template/card'; import { IProps as ITemplateCardProps, TemplateCard, TemplateCardPlaceholder } from 'components/template/card';
import React, { useEffect, useMemo, useState } from 'react';
const grid = { const grid = {
gutter: 16, gutter: 16,

View File

@ -1,9 +1,12 @@
import React from 'react';
import { Spin } from '@douyinfe/semi-ui'; import { Spin } from '@douyinfe/semi-ui';
import { ReaderEditor } from 'tiptap/editor';
import { DataRender } from 'components/data-render'; import { DataRender } from 'components/data-render';
import { Seo } from 'components/seo'; import { Seo } from 'components/seo';
import { useTemplate } from 'data/template'; import { useTemplate } from 'data/template';
import React from 'react';
import { ReaderEditor } from 'tiptap/editor';
interface IProps { interface IProps {
templateId: string; templateId: string;

View File

@ -1,7 +1,9 @@
import React, { useCallback } from 'react';
import { IconDesktop, IconMoon, IconSun } from '@douyinfe/semi-icons'; import { IconDesktop, IconMoon, IconSun } from '@douyinfe/semi-icons';
import { Button, Dropdown } from '@douyinfe/semi-ui'; import { Button, Dropdown } from '@douyinfe/semi-ui';
import { Theme as ThemeState, ThemeEnum } from 'hooks/use-theme'; import { Theme as ThemeState, ThemeEnum } from 'hooks/use-theme';
import React, { useCallback } from 'react';
export const Theme = () => { export const Theme = () => {
const { userPrefer, theme, toggle } = ThemeState.useHook(); const { userPrefer, theme, toggle } = ThemeState.useHook();

View File

@ -1,7 +1,9 @@
import React from 'react';
import { Tooltip as SemiTooltip } from '@douyinfe/semi-ui'; import { Tooltip as SemiTooltip } from '@douyinfe/semi-ui';
import { Position } from '@douyinfe/semi-ui/tooltip'; import { Position } from '@douyinfe/semi-ui/tooltip';
import { useToggle } from 'hooks/use-toggle'; import { useToggle } from 'hooks/use-toggle';
import React from 'react';
interface IProps { interface IProps {
content: React.ReactNode; content: React.ReactNode;

View File

@ -1,7 +1,9 @@
import React from 'react';
import { IconUpload } from '@douyinfe/semi-icons'; import { IconUpload } from '@douyinfe/semi-icons';
import { Button, Toast, Upload as SemiUpload } from '@douyinfe/semi-ui'; import { Button, Toast, Upload as SemiUpload } from '@douyinfe/semi-ui';
import { useAsyncLoading } from 'hooks/use-async-loading'; import { useAsyncLoading } from 'hooks/use-async-loading';
import React from 'react';
import { uploadFile } from 'services/file'; import { uploadFile } from 'services/file';
interface IProps { interface IProps {

View File

@ -1,9 +1,11 @@
import React, { useCallback } from 'react';
import { IconSpin } from '@douyinfe/semi-icons'; import { IconSpin } from '@douyinfe/semi-icons';
import { Avatar, Button, Dropdown, Modal, Toast, Typography } from '@douyinfe/semi-ui'; import { Avatar, Button, Dropdown, Modal, Toast, Typography } from '@douyinfe/semi-ui';
import { useUser } from 'data/user'; import { useUser } from 'data/user';
import { useToggle } from 'hooks/use-toggle'; import { useToggle } from 'hooks/use-toggle';
import Router from 'next/router'; import Router from 'next/router';
import React, { useCallback } from 'react';
import { ResetPassword } from './reset-password'; import { ResetPassword } from './reset-password';
import { UserSetting } from './setting'; import { UserSetting } from './setting';

View File

@ -1,8 +1,10 @@
import React, { useCallback, useState } from 'react';
import { Button, Col, Form, Row, Toast } from '@douyinfe/semi-ui'; import { Button, Col, Form, Row, Toast } from '@douyinfe/semi-ui';
import { useResetPassword, useSystemPublicConfig, useUser, useVerifyCode } from 'data/user'; import { useResetPassword, useSystemPublicConfig, useUser, useVerifyCode } from 'data/user';
import { useInterval } from 'hooks/use-interval'; import { useInterval } from 'hooks/use-interval';
import { useToggle } from 'hooks/use-toggle'; import { useToggle } from 'hooks/use-toggle';
import React, { useCallback, useState } from 'react';
export const ResetPassword = ({ onSuccess }) => { export const ResetPassword = ({ onSuccess }) => {
const [email, setEmail] = useState(''); const [email, setEmail] = useState('');

View File

@ -1,10 +1,12 @@
import { Dispatch, SetStateAction, useCallback, useEffect, useRef, useState } from 'react';
import { Avatar, Button, Col, Form, Modal, Row, Space, Toast } from '@douyinfe/semi-ui'; import { Avatar, Button, Col, Form, Modal, Row, Space, Toast } from '@douyinfe/semi-ui';
import { FormApi } from '@douyinfe/semi-ui/lib/es/form'; import { FormApi } from '@douyinfe/semi-ui/lib/es/form';
import { Upload } from 'components/upload'; import { Upload } from 'components/upload';
import { useSystemPublicConfig, useUser, useVerifyCode } from 'data/user'; import { useSystemPublicConfig, useUser, useVerifyCode } from 'data/user';
import { useInterval } from 'hooks/use-interval'; import { useInterval } from 'hooks/use-interval';
import { useToggle } from 'hooks/use-toggle'; import { useToggle } from 'hooks/use-toggle';
import { Dispatch, SetStateAction, useCallback, useEffect, useRef, useState } from 'react';
interface IProps { interface IProps {
visible: boolean; visible: boolean;

View File

@ -1,7 +1,9 @@
import React from 'react';
import { Button } from '@douyinfe/semi-ui'; import { Button } from '@douyinfe/semi-ui';
import { WikiCreator as WikiCreatorForm } from 'components/wiki/create'; import { WikiCreator as WikiCreatorForm } from 'components/wiki/create';
import { useToggle } from 'hooks/use-toggle'; import { useToggle } from 'hooks/use-toggle';
import React from 'react';
export const WikiCreator: React.FC = ({ children }) => { export const WikiCreator: React.FC = ({ children }) => {
const [visible, toggleVisible] = useToggle(false); const [visible, toggleVisible] = useToggle(false);

View File

@ -1,10 +1,12 @@
import React from 'react';
import { IconPlus } from '@douyinfe/semi-icons'; import { IconPlus } from '@douyinfe/semi-icons';
import { Button, Dropdown } from '@douyinfe/semi-ui'; import { Button, Dropdown } from '@douyinfe/semi-ui';
import { DocumentCreator } from 'components/document/create'; import { DocumentCreator } from 'components/document/create';
import { WikiCreator } from 'components/wiki/create'; import { WikiCreator } from 'components/wiki/create';
import { useRouterQuery } from 'hooks/use-router-query'; import { useRouterQuery } from 'hooks/use-router-query';
import { useToggle } from 'hooks/use-toggle'; import { useToggle } from 'hooks/use-toggle';
import React from 'react';
interface IProps { interface IProps {
onCreateDocument?: () => void; onCreateDocument?: () => void;

View File

@ -1,5 +1,6 @@
import { IconUser } from '@douyinfe/semi-icons'; import { IconUser } from '@douyinfe/semi-icons';
import { Avatar, Skeleton, Space, Typography } from '@douyinfe/semi-ui'; import { Avatar, Skeleton, Space, Typography } from '@douyinfe/semi-ui';
import { IconDocument } from 'components/icons/IconDocument'; import { IconDocument } from 'components/icons/IconDocument';
import { LocaleTime } from 'components/locale-time'; import { LocaleTime } from 'components/locale-time';
import { WikiStar } from 'components/wiki/star'; import { WikiStar } from 'components/wiki/star';

View File

@ -1,10 +1,13 @@
import { Dispatch, SetStateAction, useRef } from 'react';
import { Form, Modal } from '@douyinfe/semi-ui'; import { Form, Modal } from '@douyinfe/semi-ui';
import { FormApi } from '@douyinfe/semi-ui/lib/es/form'; import { FormApi } from '@douyinfe/semi-ui/lib/es/form';
import type { IWiki } from '@think/domains'; import type { IWiki } from '@think/domains';
import { ICreateWiki, useOwnWikis } from 'data/wiki'; import { ICreateWiki, useOwnWikis } from 'data/wiki';
import { useRouterQuery } from 'hooks/use-router-query'; import { useRouterQuery } from 'hooks/use-router-query';
import Router from 'next/router'; import Router from 'next/router';
import { Dispatch, SetStateAction, useRef } from 'react';
interface IProps { interface IProps {
visible: boolean; visible: boolean;

View File

@ -1,9 +1,11 @@
import React, { useCallback } from 'react';
import { IconDelete } from '@douyinfe/semi-icons'; import { IconDelete } from '@douyinfe/semi-icons';
import { Modal, Space, Typography } from '@douyinfe/semi-ui'; import { Modal, Space, Typography } from '@douyinfe/semi-ui';
import { useOwnWikis } from 'data/wiki'; import { useOwnWikis } from 'data/wiki';
import { useRouterQuery } from 'hooks/use-router-query'; import { useRouterQuery } from 'hooks/use-router-query';
import Router from 'next/router'; import Router from 'next/router';
import React, { useCallback } from 'react';
interface IProps { interface IProps {
wikiId: string; wikiId: string;

View File

@ -1,9 +1,12 @@
import React, { useCallback, useEffect, useMemo, useState } from 'react';
import { IconClose } from '@douyinfe/semi-icons'; import { IconClose } from '@douyinfe/semi-icons';
import { Banner, Button, Checkbox, Toast, Transfer, Typography } from '@douyinfe/semi-ui'; import { Banner, Button, Checkbox, Toast, Transfer, Typography } from '@douyinfe/semi-ui';
import { isPublicDocument } from '@think/domains'; import { isPublicDocument } from '@think/domains';
import { flattenTree2Array } from 'components/wiki/tocs/utils'; import { flattenTree2Array } from 'components/wiki/tocs/utils';
import { useWikiDetail, useWikiTocs } from 'data/wiki'; import { useWikiDetail, useWikiTocs } from 'data/wiki';
import React, { useCallback, useEffect, useMemo, useState } from 'react';
import styles from './index.module.scss'; import styles from './index.module.scss';

View File

@ -1,5 +1,7 @@
import { Avatar, Skeleton, Space, Typography } from '@douyinfe/semi-ui'; import { Avatar, Skeleton, Space, Typography } from '@douyinfe/semi-ui';
import { IWiki } from '@think/domains'; import { IWiki } from '@think/domains';
import { IconDocument } from 'components/icons/IconDocument'; import { IconDocument } from 'components/icons/IconDocument';
import { LocaleTime } from 'components/locale-time'; import { LocaleTime } from 'components/locale-time';
import { WikiStar } from 'components/wiki/star'; import { WikiStar } from 'components/wiki/star';

View File

@ -1,6 +1,7 @@
import { Skeleton } from '@douyinfe/semi-ui';
import React from 'react'; import React from 'react';
import { Skeleton } from '@douyinfe/semi-ui';
export const WorkspacePlaceholder = () => { export const WorkspacePlaceholder = () => {
const placeholder = ( const placeholder = (
<div <div

View File

@ -1,10 +1,13 @@
import { useCallback, useEffect, useRef, useState } from 'react';
import { Avatar, Button, Form, Toast } from '@douyinfe/semi-ui'; import { Avatar, Button, Form, Toast } from '@douyinfe/semi-ui';
import { FormApi } from '@douyinfe/semi-ui/lib/es/form'; import { FormApi } from '@douyinfe/semi-ui/lib/es/form';
import { WIKI_AVATARS } from '@think/constants'; import { WIKI_AVATARS } from '@think/constants';
import type { IWiki } from '@think/domains'; import type { IWiki } from '@think/domains';
import { ImageUploader } from 'components/image-uploader'; import { ImageUploader } from 'components/image-uploader';
import { pick } from 'helpers/pick'; import { pick } from 'helpers/pick';
import { useCallback, useEffect, useRef, useState } from 'react';
import styles from './index.module.scss'; import styles from './index.module.scss';

View File

@ -1,9 +1,12 @@
import { useCallback, useEffect, useRef, useState } from 'react';
import { Button, Toast, Typography, Upload } from '@douyinfe/semi-ui'; import { Button, Toast, Typography, Upload } from '@douyinfe/semi-ui';
import type { IWiki } from '@think/domains'; import type { IWiki } from '@think/domains';
import { useCreateDocument } from 'data/document'; import { useCreateDocument } from 'data/document';
import { useRouterQuery } from 'hooks/use-router-query'; import { useRouterQuery } from 'hooks/use-router-query';
import { useToggle } from 'hooks/use-toggle'; import { useToggle } from 'hooks/use-toggle';
import { useCallback, useEffect, useRef, useState } from 'react';
import { createMarkdownParser, MarkdownParse } from './parser'; import { createMarkdownParser, MarkdownParse } from './parser';

View File

@ -1,10 +1,12 @@
import { Toast } from '@douyinfe/semi-ui'; import { Toast } from '@douyinfe/semi-ui';
import { safeJSONStringify } from 'helpers/json';
import { createEditor } from 'tiptap/core'; import { createEditor } from 'tiptap/core';
import { AllExtensions } from 'tiptap/core/all-kit'; import { AllExtensions } from 'tiptap/core/all-kit';
import { Collaboration } from 'tiptap/core/extensions/collaboration'; import { Collaboration } from 'tiptap/core/extensions/collaboration';
import { prosemirrorJSONToYDoc } from 'tiptap/core/thritypart/y-prosemirror/y-prosemirror'; import { prosemirrorJSONToYDoc } from 'tiptap/core/thritypart/y-prosemirror/y-prosemirror';
import { markdownToProsemirror } from 'tiptap/markdown/markdown-to-prosemirror'; import { markdownToProsemirror } from 'tiptap/markdown/markdown-to-prosemirror';
import { safeJSONStringify } from 'helpers/json';
import * as Y from 'yjs'; import * as Y from 'yjs';
export interface MarkdownParse { export interface MarkdownParse {

View File

@ -1,9 +1,12 @@
import React from 'react';
import { TabPane, Tabs } from '@douyinfe/semi-ui'; import { TabPane, Tabs } from '@douyinfe/semi-ui';
import { IWiki } from '@think/domains'; import { IWiki } from '@think/domains';
import { Seo } from 'components/seo'; import { Seo } from 'components/seo';
import { WikiTocsManager } from 'components/wiki/tocs/manager'; import { WikiTocsManager } from 'components/wiki/tocs/manager';
import { useWikiDetail } from 'data/wiki'; import { useWikiDetail } from 'data/wiki';
import React from 'react';
import { Base } from './base'; import { Base } from './base';
import { Import } from './import'; import { Import } from './import';

View File

@ -1,4 +1,5 @@
import { Banner, Button, Typography } from '@douyinfe/semi-ui'; import { Banner, Button, Typography } from '@douyinfe/semi-ui';
import { WikiDeletor } from 'components/wiki/delete'; import { WikiDeletor } from 'components/wiki/delete';
interface IProps { interface IProps {

View File

@ -1,10 +1,13 @@
import React, { useCallback, useEffect, useMemo, useState } from 'react';
import { IconClose } from '@douyinfe/semi-icons'; import { IconClose } from '@douyinfe/semi-icons';
import { Banner, Button, Checkbox, Radio, RadioGroup, Toast, Transfer, Typography } from '@douyinfe/semi-ui'; import { Banner, Button, Checkbox, Radio, RadioGroup, Toast, Transfer, Typography } from '@douyinfe/semi-ui';
import { isPublicDocument, isPublicWiki, WIKI_STATUS_LIST } from '@think/domains'; import { isPublicDocument, isPublicWiki, WIKI_STATUS_LIST } from '@think/domains';
import { flattenTree2Array } from 'components/wiki/tocs/utils'; import { flattenTree2Array } from 'components/wiki/tocs/utils';
import { useWikiDetail, useWikiTocs } from 'data/wiki'; import { useWikiDetail, useWikiTocs } from 'data/wiki';
import { buildUrl } from 'helpers/url'; import { buildUrl } from 'helpers/url';
import React, { useCallback, useEffect, useMemo, useState } from 'react';
import styles from './index.module.scss'; import styles from './index.module.scss';

View File

@ -1,6 +1,7 @@
import React from 'react';
import { Members } from 'components/members'; import { Members } from 'components/members';
import { useWikiMembers } from 'data/wiki'; import { useWikiMembers } from 'data/wiki';
import React from 'react';
interface IProps { interface IProps {
wikiId: string; wikiId: string;

View File

@ -1,8 +1,11 @@
import React from 'react';
import { IconStar } from '@douyinfe/semi-icons'; import { IconStar } from '@douyinfe/semi-icons';
import { Button, Tooltip } from '@douyinfe/semi-ui'; import { Button, Tooltip } from '@douyinfe/semi-ui';
import { IOrganization, IWiki } from '@think/domains'; import { IOrganization, IWiki } from '@think/domains';
import { useWikiStarToggle } from 'data/star'; import { useWikiStarToggle } from 'data/star';
import React from 'react';
interface IProps { interface IProps {
organizationId: IOrganization['id']; organizationId: IOrganization['id'];

View File

@ -1,6 +1,10 @@
import { useMemo } from 'react';
import { IconPlus, IconSmallTriangleDown } from '@douyinfe/semi-icons'; import { IconPlus, IconSmallTriangleDown } from '@douyinfe/semi-icons';
import { Avatar, Button, Dropdown, Skeleton, Typography } from '@douyinfe/semi-ui'; import { Avatar, Button, Dropdown, Skeleton, Typography } from '@douyinfe/semi-ui';
import { IDocument } from '@think/domains'; import { IDocument } from '@think/domains';
import cls from 'classnames'; import cls from 'classnames';
import { DataRender } from 'components/data-render'; import { DataRender } from 'components/data-render';
import { IconOverview, IconSetting } from 'components/icons'; import { IconOverview, IconSetting } from 'components/icons';
@ -9,10 +13,10 @@ import { useWikiDetail, useWikiTocs } from 'data/wiki';
import { triggerCreateDocument } from 'event'; import { triggerCreateDocument } from 'event';
import Link from 'next/link'; import Link from 'next/link';
import { useRouter } from 'next/router'; import { useRouter } from 'next/router';
import { useMemo } from 'react';
import { Tree } from './tree';
import styles from './index.module.scss'; import styles from './index.module.scss';
import { Tree } from './tree';
interface IProps { interface IProps {
wikiId: string; wikiId: string;

View File

@ -1,7 +1,9 @@
import React, { useCallback, useEffect, useState } from 'react';
import { Banner, Button, Toast, Tree, Typography } from '@douyinfe/semi-ui'; import { Banner, Button, Toast, Tree, Typography } from '@douyinfe/semi-ui';
import { DataRender } from 'components/data-render'; import { DataRender } from 'components/data-render';
import { useWikiTocs } from 'data/wiki'; import { useWikiTocs } from 'data/wiki';
import React, { useCallback, useEffect, useState } from 'react';
import styles from './index.module.scss'; import styles from './index.module.scss';

View File

@ -1,6 +1,7 @@
import React from 'react';
import cls from 'classnames'; import cls from 'classnames';
import Link from 'next/link'; import Link from 'next/link';
import React from 'react';
import type { UrlObject } from 'url'; import type { UrlObject } from 'url';
import styles from './index.module.scss'; import styles from './index.module.scss';

View File

@ -1,18 +1,22 @@
import React from 'react';
import { IconPlus } from '@douyinfe/semi-icons'; import { IconPlus } from '@douyinfe/semi-icons';
import { Avatar, Skeleton, Space, Typography } from '@douyinfe/semi-ui'; import { Avatar, Skeleton, Space, Typography } from '@douyinfe/semi-ui';
import { IDocument } from '@think/domains'; import { IDocument } from '@think/domains';
import { DataRender } from 'components/data-render'; import { DataRender } from 'components/data-render';
import { IconOverview } from 'components/icons'; import { IconOverview } from 'components/icons';
import { LogoImage, LogoText } from 'components/logo'; import { LogoImage, LogoText } from 'components/logo';
import { Seo } from 'components/seo'; import { Seo } from 'components/seo';
import { usePublicWikiDetail, usePublicWikiTocs } from 'data/wiki'; import { usePublicWikiDetail, usePublicWikiTocs } from 'data/wiki';
import { useRouter } from 'next/router'; import { useRouter } from 'next/router';
import React from 'react';
import styles from './index.module.scss';
import { NavItem } from './nav-item'; import { NavItem } from './nav-item';
import { Tree } from './tree'; import { Tree } from './tree';
import styles from './index.module.scss';
interface IProps { interface IProps {
wikiId: string; wikiId: string;
docAsLink?: string; docAsLink?: string;

View File

@ -1,5 +1,8 @@
import React, { useCallback, useEffect, useRef, useState } from 'react';
import { IconPlus } from '@douyinfe/semi-icons'; import { IconPlus } from '@douyinfe/semi-icons';
import { Button, Tree as SemiTree, Typography } from '@douyinfe/semi-ui'; import { Button, Tree as SemiTree, Typography } from '@douyinfe/semi-ui';
import { DocumentActions } from 'components/document/actions'; import { DocumentActions } from 'components/document/actions';
import { DocumentCreator as DocumenCreatorForm } from 'components/document/create'; import { DocumentCreator as DocumenCreatorForm } from 'components/document/create';
import deepEqual from 'deep-equal'; import deepEqual from 'deep-equal';
@ -7,12 +10,12 @@ import { CREATE_DOCUMENT, event, triggerCreateDocument } from 'event';
import { useToggle } from 'hooks/use-toggle'; import { useToggle } from 'hooks/use-toggle';
import Link from 'next/link'; import Link from 'next/link';
import { useRouter } from 'next/router'; import { useRouter } from 'next/router';
import React, { useCallback, useEffect, useRef, useState } from 'react';
import scrollIntoView from 'scroll-into-view-if-needed'; import scrollIntoView from 'scroll-into-view-if-needed';
import styles from './index.module.scss';
import { findParents } from './utils'; import { findParents } from './utils';
import styles from './index.module.scss';
const Actions = ({ node }) => { const Actions = ({ node }) => {
const createDocument = useCallback( const createDocument = useCallback(
(e) => { (e) => {

View File

@ -1,6 +1,8 @@
import { CommentApiDefinition, IComment } from '@think/domains';
import { useCallback, useState } from 'react'; import { useCallback, useState } from 'react';
import { useQuery } from 'react-query'; import { useQuery } from 'react-query';
import { CommentApiDefinition, IComment } from '@think/domains';
import { HttpClient } from 'services/http-client'; import { HttpClient } from 'services/http-client';
export type CreateCommentDto = Pick<IComment, 'parentCommentId' | 'html' | 'replyUserId'>; export type CreateCommentDto = Pick<IComment, 'parentCommentId' | 'html' | 'replyUserId'>;

View File

@ -1,8 +1,10 @@
import { DocumentApiDefinition, IAuthority, IDocument, IUser, IWiki } from '@think/domains';
import { triggerRefreshTocs } from 'event';
import { useAsyncLoading } from 'hooks/use-async-loading';
import { useCallback, useState } from 'react'; import { useCallback, useState } from 'react';
import { QueriesOptions, useQuery, UseQueryOptions } from 'react-query'; import { QueriesOptions, useQuery, UseQueryOptions } from 'react-query';
import { DocumentApiDefinition, IAuthority, IDocument, IUser, IWiki } from '@think/domains';
import { triggerRefreshTocs } from 'event';
import { useAsyncLoading } from 'hooks/use-async-loading';
import { HttpClient } from 'services/http-client'; import { HttpClient } from 'services/http-client';
type IDocumentWithVisitedAt = IDocument & { visitedAt: string }; type IDocumentWithVisitedAt = IDocument & { visitedAt: string };

View File

@ -1,6 +1,8 @@
import { IMessage, MessageApiDefinition } from '@think/domains';
import { useCallback, useState } from 'react'; import { useCallback, useState } from 'react';
import { useQuery } from 'react-query'; import { useQuery } from 'react-query';
import { IMessage, MessageApiDefinition } from '@think/domains';
import { HttpClient } from 'services/http-client'; import { HttpClient } from 'services/http-client';
const getMessagesApi = const getMessagesApi =

View File

@ -1,8 +1,10 @@
import { IAuth, IOrganization, IUser, OrganizationApiDefinition } from '@think/domains';
import { event, REFRESH_ORGANIZATIONS, triggerRefreshOrganizations } from 'event';
import { useAsyncLoading } from 'hooks/use-async-loading';
import { useCallback, useEffect, useState } from 'react'; import { useCallback, useEffect, useState } from 'react';
import { useQuery } from 'react-query'; import { useQuery } from 'react-query';
import { IAuth, IOrganization, IUser, OrganizationApiDefinition } from '@think/domains';
import { event, REFRESH_ORGANIZATIONS, triggerRefreshOrganizations } from 'event';
import { useAsyncLoading } from 'hooks/use-async-loading';
import { HttpClient } from 'services/http-client'; import { HttpClient } from 'services/http-client';
/** /**

View File

@ -1,7 +1,9 @@
import { IDocument, IWiki, StarApiDefinition } from '@think/domains';
import { event, TOGGLE_STAR_DOUCMENT, TOGGLE_STAR_WIKI, triggerToggleStarDocument, triggerToggleStarWiki } from 'event';
import { useCallback, useEffect } from 'react'; import { useCallback, useEffect } from 'react';
import { useQuery, UseQueryOptions } from 'react-query'; import { useQuery, UseQueryOptions } from 'react-query';
import { IDocument, IWiki, StarApiDefinition } from '@think/domains';
import { event, TOGGLE_STAR_DOUCMENT, TOGGLE_STAR_WIKI, triggerToggleStarDocument, triggerToggleStarWiki } from 'event';
import { HttpClient } from 'services/http-client'; import { HttpClient } from 'services/http-client';
export type IWikiWithIsMember = IWiki & { isMember?: boolean }; export type IWikiWithIsMember = IWiki & { isMember?: boolean };

View File

@ -1,6 +1,8 @@
import { ITemplate, TemplateApiDefinition } from '@think/domains';
import { useCallback, useState } from 'react'; import { useCallback, useState } from 'react';
import { useQuery } from 'react-query'; import { useQuery } from 'react-query';
import { ITemplate, TemplateApiDefinition } from '@think/domains';
import { HttpClient } from 'services/http-client'; import { HttpClient } from 'services/http-client';
export const getPublicTemplates = ( export const getPublicTemplates = (

View File

@ -1,10 +1,13 @@
import { useCallback, useEffect } from 'react';
import { useQuery } from 'react-query';
import { Toast } from '@douyinfe/semi-ui'; import { Toast } from '@douyinfe/semi-ui';
import { ILoginUser, ISystemConfig, IUser, SystemApiDefinition, UserApiDefinition } from '@think/domains'; import { ILoginUser, ISystemConfig, IUser, SystemApiDefinition, UserApiDefinition } from '@think/domains';
import { getStorage, setStorage } from 'helpers/storage'; import { getStorage, setStorage } from 'helpers/storage';
import { useAsyncLoading } from 'hooks/use-async-loading'; import { useAsyncLoading } from 'hooks/use-async-loading';
import Router, { useRouter } from 'next/router'; import Router, { useRouter } from 'next/router';
import { useCallback, useEffect } from 'react';
import { useQuery } from 'react-query';
import { HttpClient } from 'services/http-client'; import { HttpClient } from 'services/http-client';
/** /**

View File

@ -1,7 +1,9 @@
import { IAuth, IDocument, IUser, IWiki, WikiApiDefinition } from '@think/domains';
import { event, REFRESH_TOCS } from 'event';
import { useCallback, useEffect, useState } from 'react'; import { useCallback, useEffect, useState } from 'react';
import { useQuery } from 'react-query'; import { useQuery } from 'react-query';
import { IAuth, IDocument, IUser, IWiki, WikiApiDefinition } from '@think/domains';
import { event, REFRESH_TOCS } from 'event';
import { HttpClient } from 'services/http-client'; import { HttpClient } from 'services/http-client';
export type ICreateWiki = Pick<IWiki, 'name' | 'description'>; export type ICreateWiki = Pick<IWiki, 'name' | 'description'>;

View File

@ -1,4 +1,5 @@
import { IDocument, IUser, IWiki } from '@think/domains'; import { IDocument, IUser, IWiki } from '@think/domains';
import { EventEmitter } from 'helpers/event-emitter'; import { EventEmitter } from 'helpers/event-emitter';
export const event = new EventEmitter(); export const event = new EventEmitter();

View File

@ -1,7 +1,8 @@
import { generateHTML } from '@tiptap/core'; import { generateHTML } from '@tiptap/core';
import HtmlDiff from 'htmldiff-js';
import { CollaborationKit } from 'tiptap/editor'; import { CollaborationKit } from 'tiptap/editor';
import HtmlDiff from 'htmldiff-js';
const json2html = (json) => generateHTML(json, CollaborationKit); const json2html = (json) => generateHTML(json, CollaborationKit);
export const generateDiffHtml = (selected, other) => { export const generateDiffHtml = (selected, other) => {
const selectedHtml = json2html(selected); const selectedHtml = json2html(selected);

View File

@ -1,7 +1,8 @@
import { getStorage, setStorage } from 'helpers/storage';
import { useCallback, useEffect } from 'react'; import { useCallback, useEffect } from 'react';
import { useQuery } from 'react-query'; import { useQuery } from 'react-query';
import { getStorage, setStorage } from 'helpers/storage';
export enum Width { export enum Width {
'standardWidth' = 'standardWidth', 'standardWidth' = 'standardWidth',
'fullWidth' = 'fullWidth', 'fullWidth' = 'fullWidth',

Some files were not shown because too many files have changed in this diff Show More