mirror of https://github.com/fantasticit/think.git
fix lint
parent
4f89e8951e
commit
00b52c5e15
|
@ -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'],
|
||||||
|
|
|
@ -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';
|
||||||
|
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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';
|
||||||
|
|
||||||
|
|
|
@ -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 = (
|
||||||
|
|
|
@ -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';
|
||||||
|
|
||||||
|
|
|
@ -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 }) => {
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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';
|
||||||
|
|
||||||
|
|
|
@ -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';
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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';
|
||||||
|
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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';
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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';
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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';
|
||||||
|
|
||||||
|
|
|
@ -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'];
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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'];
|
||||||
|
|
|
@ -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';
|
||||||
|
|
||||||
|
|
|
@ -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';
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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';
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import { useEffect } from 'react';
|
import { useEffect } from 'react';
|
||||||
|
|
||||||
import Viewer from 'viewerjs';
|
import Viewer from 'viewerjs';
|
||||||
|
|
||||||
interface IProps {
|
interface IProps {
|
||||||
|
|
|
@ -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 = {
|
||||||
|
|
|
@ -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';
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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'];
|
||||||
|
|
|
@ -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';
|
||||||
|
|
|
@ -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 = () => {
|
||||||
|
|
|
@ -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';
|
||||||
|
|
||||||
|
|
|
@ -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';
|
||||||
|
|
|
@ -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'];
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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';
|
||||||
|
|
||||||
|
|
|
@ -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';
|
||||||
|
|
||||||
|
|
|
@ -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';
|
||||||
|
|
|
@ -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 };
|
||||||
|
|
||||||
|
|
|
@ -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';
|
||||||
|
|
||||||
|
|
|
@ -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';
|
||||||
|
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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';
|
||||||
|
|
|
@ -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('');
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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';
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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';
|
||||||
|
|
||||||
|
|
|
@ -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';
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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';
|
||||||
|
|
||||||
|
|
|
@ -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';
|
||||||
|
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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';
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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';
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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'];
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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';
|
||||||
|
|
||||||
|
|
|
@ -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';
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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) => {
|
||||||
|
|
|
@ -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'>;
|
||||||
|
|
|
@ -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 };
|
||||||
|
|
|
@ -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 =
|
||||||
|
|
|
@ -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';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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 };
|
||||||
|
|
|
@ -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 = (
|
||||||
|
|
|
@ -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';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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'>;
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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
Loading…
Reference in New Issue