diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 00000000..194088cc --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,33 @@ +module.exports = { + extends: ['plugin:react/recommended', 'plugin:@next/next/recommended'], + rules: { + 'react/prop-types': 0, + 'react/display-name': 0, + 'react/react-in-jsx-scope': 0, + '@next/next/no-img-element': 0, + 'import/order': [ + 'error', + { + alphabetize: { order: 'asc' }, + 'newlines-between': 'always', + groups: ['builtin', 'external', 'internal', 'parent', 'sibling', 'index', 'unknown'], + pathGroups: [ + { + pattern: 'react', + group: 'builtin', + position: 'before', + }, + { pattern: '~/**', group: 'internal' }, + { pattern: './**', group: 'sibling' }, + ], + pathGroupsExcludedImportTypes: ['react'], + }, + ], + }, + parserOptions: { + ecmaVersion: 7, + sourceType: 'module', + }, + plugins: ['import', 'react-hooks'], + parser: '@typescript-eslint/parser', +}; diff --git a/package.json b/package.json index 094c241c..624d9ad6 100644 --- a/package.json +++ b/package.json @@ -78,6 +78,7 @@ }, "devDependencies": { "@craco/craco": "^6.4.3", + "@next/eslint-plugin-next": "^12.0.8", "@types/classnames": "^2.2.7", "@types/marked": "^1.2.2", "@types/node": "^11.13.22", @@ -85,6 +86,7 @@ "@types/throttle-debounce": "^2.1.0", "@types/yup": "^0.29.11", "craco-alias": "^2.3.1", + "eslint-plugin-import": "^2.25.4", "husky": "^7.0.4", "lint-staged": "^12.1.6", "next-transpile-modules": "^9.0.0", diff --git a/src/api/auth/index.ts b/src/api/auth/index.ts index 613e8adb..175bb08f 100644 --- a/src/api/auth/index.ts +++ b/src/api/auth/index.ts @@ -1,5 +1,3 @@ -import { api, cleanResult } from '~/utils/api'; -import { API } from '~/constants/api'; import { ApiAttachSocialRequest, ApiAttachSocialResult, @@ -22,6 +20,8 @@ import { ApiUserLoginRequest, ApiUserLoginResult, } from '~/api/auth/types'; +import { API } from '~/constants/api'; +import { api, cleanResult } from '~/utils/api'; export const apiUserLogin = ({ username, password }: ApiUserLoginRequest) => api diff --git a/src/api/boris/index.ts b/src/api/boris/index.ts index 37db16cd..190e024e 100644 --- a/src/api/boris/index.ts +++ b/src/api/boris/index.ts @@ -1,8 +1,9 @@ -import { API } from '~/constants/api'; -import { api, cleanResult } from '~/utils/api'; -import { IGetGithubIssuesResult, StatBackend } from '~/types/boris'; import axios from 'axios'; +import { API } from '~/constants/api'; +import { IGetGithubIssuesResult, StatBackend } from '~/types/boris'; +import { api, cleanResult } from '~/utils/api'; + export const getBorisBackendStats = () => api.get(API.BORIS.GET_BACKEND_STATS).then(cleanResult); diff --git a/src/api/flow/index.ts b/src/api/flow/index.ts index 2a573e03..4b14e5cb 100644 --- a/src/api/flow/index.ts +++ b/src/api/flow/index.ts @@ -1,7 +1,7 @@ -import { api, cleanResult } from '~/utils/api'; import { API } from '~/constants/api'; -import { PostCellViewRequest, PostCellViewResult } from '~/types/node'; import { GetSearchResultsRequest, GetSearchResultsResult } from '~/types/flow'; +import { PostCellViewRequest, PostCellViewResult } from '~/types/node'; +import { api, cleanResult } from '~/utils/api'; export const postCellView = ({ id, flow }: PostCellViewRequest) => api diff --git a/src/api/lab/index.ts b/src/api/lab/index.ts index 6c9934d9..adb5e4fb 100644 --- a/src/api/lab/index.ts +++ b/src/api/lab/index.ts @@ -1,4 +1,3 @@ -import { api, cleanResult } from '~/utils/api'; import { API } from '~/constants/api'; import { GetLabNodesRequest, @@ -6,6 +5,7 @@ import { GetLabStatsResult, GetLabUpdatesResult, } from '~/types/lab'; +import { api, cleanResult } from '~/utils/api'; export const getLabNodes = ({ after }: GetLabNodesRequest) => api diff --git a/src/api/messages/index.ts b/src/api/messages/index.ts index 16d024c7..cbca3035 100644 --- a/src/api/messages/index.ts +++ b/src/api/messages/index.ts @@ -1,5 +1,3 @@ -import { api, cleanResult } from '~/utils/api'; -import { API } from '~/constants/api'; import { ApiDeleteMessageRequest, ApiDeleteMessageResult, @@ -8,6 +6,8 @@ import { ApiSendMessageRequest, ApiSendMessageResult, } from '~/api/messages/types'; +import { API } from '~/constants/api'; +import { api, cleanResult } from '~/utils/api'; export const apiGetUserMessages = ({ username, after, before }: ApiGetUserMessagesRequest) => api diff --git a/src/api/metadata/index.ts b/src/api/metadata/index.ts index da6039be..e1e1de86 100644 --- a/src/api/metadata/index.ts +++ b/src/api/metadata/index.ts @@ -1,6 +1,6 @@ -import { api, cleanResult } from '~/utils/api'; -import { API } from '~/constants/api'; import { ApiGetEmbedYoutubeResult } from '~/api/metadata/types'; +import { API } from '~/constants/api'; +import { api, cleanResult } from '~/utils/api'; export const apiGetEmbedYoutube = (ids: string[]) => api diff --git a/src/api/node/index.ts b/src/api/node/index.ts index cce95d1d..108125a5 100644 --- a/src/api/node/index.ts +++ b/src/api/node/index.ts @@ -1,7 +1,8 @@ -import { api, cleanResult } from '~/utils/api'; -import { IComment, INode } from '~/types'; +import axios, { AxiosRequestConfig } from 'axios'; + import { API } from '~/constants/api'; import { COMMENTS_DISPLAY } from '~/constants/node'; +import { IComment, INode } from '~/types'; import { ApiDeleteNodeTagsRequest, ApiDeleteNodeTagsResult, @@ -24,7 +25,8 @@ import { GetNodeDiffRequest, GetNodeDiffResult, } from '~/types/node'; -import axios, { AxiosRequestConfig } from 'axios'; +import { api, cleanResult } from '~/utils/api'; + export type ApiPostNodeRequest = { node: INode }; export type ApiPostNodeResult = { diff --git a/src/api/tags/index.ts b/src/api/tags/index.ts index 62df00a1..fc137593 100644 --- a/src/api/tags/index.ts +++ b/src/api/tags/index.ts @@ -1,4 +1,3 @@ -import { api, cleanResult } from '~/utils/api'; import { API } from '~/constants/api'; import { ApiGetNodesOfTagRequest, @@ -6,6 +5,7 @@ import { ApiGetTagSuggestionsRequest, ApiGetTagSuggestionsResult, } from '~/types/tags'; +import { api, cleanResult } from '~/utils/api'; export const apiGetNodesOfTag = ({ tag, offset, limit }: ApiGetNodesOfTagRequest) => api diff --git a/src/api/uploads/index.ts b/src/api/uploads/index.ts index bea6e88f..3f803c30 100644 --- a/src/api/uploads/index.ts +++ b/src/api/uploads/index.ts @@ -1,8 +1,8 @@ -import { api, cleanResult } from '~/utils/api'; -import { API } from '~/constants/api'; import { ApiUploadFileRequest, ApiUploadFIleResult } from '~/api/uploads/types'; +import { API } from '~/constants/api'; import { UploadTarget, UploadType } from '~/constants/uploads'; +import { api, cleanResult } from '~/utils/api'; export const apiUploadFile = ({ file, diff --git a/src/api/uploads/types.ts b/src/api/uploads/types.ts index 58ec0a73..cd9c3023 100644 --- a/src/api/uploads/types.ts +++ b/src/api/uploads/types.ts @@ -1,5 +1,5 @@ -import { IFile, IUploadProgressHandler } from '~/types'; import { UploadTarget, UploadType } from '~/constants/uploads'; +import { IFile, IUploadProgressHandler } from '~/types'; export type ApiUploadFileRequest = { file: File; diff --git a/src/components/auth/login/LoginDialogButtons/index.tsx b/src/components/auth/login/LoginDialogButtons/index.tsx index 0f6ce91a..e89558ae 100644 --- a/src/components/auth/login/LoginDialogButtons/index.tsx +++ b/src/components/auth/login/LoginDialogButtons/index.tsx @@ -1,10 +1,13 @@ import React, { FC } from 'react'; -import { Button } from '~/components/input/Button'; + import { Grid } from '~/components/containers/Grid'; import { Group } from '~/components/containers/Group'; -import styles from './styles.module.scss'; +import { Button } from '~/components/input/Button'; import { OAuthProvider } from '~/types/auth'; +import styles from './styles.module.scss'; + + interface IProps { openOauthWindow: (provider: OAuthProvider) => void; } diff --git a/src/components/auth/oauth/LoginSocialRegisterButtons/index.tsx b/src/components/auth/oauth/LoginSocialRegisterButtons/index.tsx index 832ab0b4..0a79ccf2 100644 --- a/src/components/auth/oauth/LoginSocialRegisterButtons/index.tsx +++ b/src/components/auth/oauth/LoginSocialRegisterButtons/index.tsx @@ -1,5 +1,7 @@ import React, { FC } from 'react'; + import { Button } from '~/components/input/Button'; + import styles from './styles.module.scss'; interface IProps {} diff --git a/src/components/auth/restore/RestoreInvalidCode/index.tsx b/src/components/auth/restore/RestoreInvalidCode/index.tsx index 9218116b..434c0fa6 100644 --- a/src/components/auth/restore/RestoreInvalidCode/index.tsx +++ b/src/components/auth/restore/RestoreInvalidCode/index.tsx @@ -1,9 +1,11 @@ import React, { VFC } from 'react'; -import styles from './styles.module.scss'; + import { Group } from '~/components/containers/Group'; +import { Button } from '~/components/input/Button'; import { Icon } from '~/components/input/Icon'; import { ERROR_LITERAL, ERRORS } from '~/constants/errors'; -import { Button } from '~/components/input/Button'; + +import styles from './styles.module.scss'; interface RestoreInvalidCodeProps { error: string; diff --git a/src/components/auth/restore/RestoreSent/index.tsx b/src/components/auth/restore/RestoreSent/index.tsx index 0ee86882..67ba5786 100644 --- a/src/components/auth/restore/RestoreSent/index.tsx +++ b/src/components/auth/restore/RestoreSent/index.tsx @@ -1,8 +1,10 @@ import React, { VFC } from 'react'; -import styles from './styles.module.scss'; -import { Icon } from '~/components/input/Icon'; -import { Button } from '~/components/input/Button'; + import { Group } from '~/components/containers/Group'; +import { Button } from '~/components/input/Button'; +import { Icon } from '~/components/input/Icon'; + +import styles from './styles.module.scss'; interface RestoreSentProps { onClose: () => void; diff --git a/src/components/auth/restore/RestoreSuccess/index.tsx b/src/components/auth/restore/RestoreSuccess/index.tsx index d945d103..843c31a4 100644 --- a/src/components/auth/restore/RestoreSuccess/index.tsx +++ b/src/components/auth/restore/RestoreSuccess/index.tsx @@ -1,7 +1,9 @@ import React, { VFC } from 'react'; -import { Icon } from '~/components/input/Icon'; -import { Button } from '~/components/input/Button'; + import { Group } from '~/components/containers/Group'; +import { Button } from '~/components/input/Button'; +import { Icon } from '~/components/input/Icon'; + import styles from './styles.module.scss'; interface RestoreSuccessProps { diff --git a/src/components/bars/PlayerBar/index.tsx b/src/components/bars/PlayerBar/index.tsx index eda08651..09e668ce 100644 --- a/src/components/bars/PlayerBar/index.tsx +++ b/src/components/bars/PlayerBar/index.tsx @@ -1,11 +1,14 @@ import React, { useCallback, VFC } from 'react'; -import styles from './styles.module.scss'; + +import { path } from 'ramda'; + import { Icon } from '~/components/input/Icon'; import { PlayerState } from '~/constants/player'; -import { path } from 'ramda'; import { IFile } from '~/types'; import { PlayerProgress } from '~/types/player'; +import styles from './styles.module.scss'; + interface Props { progress: PlayerProgress; status: PlayerState; diff --git a/src/components/bars/SubmitBar/index.tsx b/src/components/bars/SubmitBar/index.tsx index edcd28b5..f54a8d4c 100644 --- a/src/components/bars/SubmitBar/index.tsx +++ b/src/components/bars/SubmitBar/index.tsx @@ -1,9 +1,13 @@ import React, { FC, useCallback, useState } from 'react'; -import { Icon } from '~/components/input/Icon'; + import classNames from 'classnames'; -import styles from './styles.module.scss'; -import { useShowModal } from '~/hooks/modal/useShowModal'; + +import { Icon } from '~/components/input/Icon'; import { Dialog } from '~/constants/modal'; +import { useShowModal } from '~/hooks/modal/useShowModal'; + +import styles from './styles.module.scss'; + interface Props { isLab?: boolean; diff --git a/src/components/boris/BorisContactItem/index.tsx b/src/components/boris/BorisContactItem/index.tsx index 65e001d2..659c5723 100644 --- a/src/components/boris/BorisContactItem/index.tsx +++ b/src/components/boris/BorisContactItem/index.tsx @@ -1,7 +1,9 @@ import React, { FC } from 'react'; -import styles from './styles.module.scss'; + import { Icon } from '~/components/input/Icon'; +import styles from './styles.module.scss'; + interface Props { icon: string; title: string; diff --git a/src/components/boris/BorisContacts/index.tsx b/src/components/boris/BorisContacts/index.tsx index b16a0b3c..894c3506 100644 --- a/src/components/boris/BorisContacts/index.tsx +++ b/src/components/boris/BorisContacts/index.tsx @@ -1,5 +1,7 @@ import React, { FC } from 'react'; + import { BorisContactItem } from '~/components/boris/BorisContactItem'; + import styles from './styles.module.scss'; interface Props {} diff --git a/src/components/boris/BorisSidebar/index.tsx b/src/components/boris/BorisSidebar/index.tsx index 3fb0b598..b8b8b78f 100644 --- a/src/components/boris/BorisSidebar/index.tsx +++ b/src/components/boris/BorisSidebar/index.tsx @@ -1,9 +1,10 @@ import React, { FC } from 'react'; -import styles from '~/layouts/BorisLayout/styles.module.scss'; -import { BorisSuperpowers } from '~/components/boris/BorisSuperpowers'; + import { BorisContacts } from '~/components/boris/BorisContacts'; import { BorisStats } from '~/components/boris/BorisStats'; +import { BorisSuperpowers } from '~/components/boris/BorisSuperpowers'; import { Group } from '~/components/containers/Group'; +import styles from '~/layouts/BorisLayout/styles.module.scss'; import { BorisUsageStats } from '~/types/boris'; interface Props { diff --git a/src/components/boris/BorisStats/index.tsx b/src/components/boris/BorisStats/index.tsx index 97b09f9f..242e1db7 100644 --- a/src/components/boris/BorisStats/index.tsx +++ b/src/components/boris/BorisStats/index.tsx @@ -1,7 +1,9 @@ import React, { FC } from 'react'; + import { BorisUsageStats } from '~/types/boris'; -import { BorisStatsGit } from '../BorisStatsGit'; + import { BorisStatsBackend } from '../BorisStatsBackend'; +import { BorisStatsGit } from '../BorisStatsGit'; interface IProps { stats: BorisUsageStats; diff --git a/src/components/boris/BorisStatsBackend/index.tsx b/src/components/boris/BorisStatsBackend/index.tsx index e5f0917f..bee2b47d 100644 --- a/src/components/boris/BorisStatsBackend/index.tsx +++ b/src/components/boris/BorisStatsBackend/index.tsx @@ -1,9 +1,11 @@ import React, { FC } from 'react'; -import { StatBackend } from '~/types/boris'; -import styles from './styles.module.scss'; -import { sizeOf } from '~/utils/dom'; + import { StatsRow } from '~/components/common/StatsRow'; import { SubTitle } from '~/components/common/SubTitle'; +import { StatBackend } from '~/types/boris'; +import { sizeOf } from '~/utils/dom'; + +import styles from './styles.module.scss'; interface IProps { stats: StatBackend; diff --git a/src/components/boris/BorisStatsGit/index.tsx b/src/components/boris/BorisStatsGit/index.tsx index 1f5aa0fd..58a3291f 100644 --- a/src/components/boris/BorisStatsGit/index.tsx +++ b/src/components/boris/BorisStatsGit/index.tsx @@ -1,9 +1,12 @@ import React, { FC, useMemo } from 'react'; -import { GithubIssue } from '~/types/boris'; -import styles from './styles.module.scss'; + import { Placeholder } from '~/components/placeholders/Placeholder'; +import { GithubIssue } from '~/types/boris'; + import { BorisStatsGitCard } from '../BorisStatsGitCard'; +import styles from './styles.module.scss'; + interface IProps { issues: GithubIssue[]; isLoading: boolean; diff --git a/src/components/boris/BorisStatsGitCard/index.tsx b/src/components/boris/BorisStatsGitCard/index.tsx index fde28291..7b6530d4 100644 --- a/src/components/boris/BorisStatsGitCard/index.tsx +++ b/src/components/boris/BorisStatsGitCard/index.tsx @@ -1,9 +1,13 @@ import React, { FC, useMemo } from 'react'; -import styles from './styles.module.scss'; -import { getPrettyDate } from '~/utils/dom'; -import { GithubIssue } from '~/types/boris'; + import classNames from 'classnames'; +import { GithubIssue } from '~/types/boris'; +import { getPrettyDate } from '~/utils/dom'; + +import styles from './styles.module.scss'; + + interface IProps { data: GithubIssue; } diff --git a/src/components/boris/BorisSuperpowers/index.tsx b/src/components/boris/BorisSuperpowers/index.tsx index cf2530cb..531d1d28 100644 --- a/src/components/boris/BorisSuperpowers/index.tsx +++ b/src/components/boris/BorisSuperpowers/index.tsx @@ -1,7 +1,9 @@ import React, { FC, useCallback } from 'react'; -import styles from './styles.module.scss'; + import { Toggle } from '~/components/input/Toggle'; +import styles from './styles.module.scss'; + interface IProps { active?: boolean; onChange?: (val: boolean) => void; diff --git a/src/components/boris/BorisUIDemo/index.tsx b/src/components/boris/BorisUIDemo/index.tsx index 38cd6529..f7193aa1 100644 --- a/src/components/boris/BorisUIDemo/index.tsx +++ b/src/components/boris/BorisUIDemo/index.tsx @@ -1,12 +1,14 @@ import React, { FC, useState } from 'react'; + import { Card } from '~/components/containers/Card'; -import styles from './styles.module.scss'; -import markdown from '~/styles/common/markdown.module.scss'; import { Group } from '~/components/containers/Group'; import { Button } from '~/components/input/Button'; import { InputText } from '~/components/input/InputText'; -import { useShowModal } from '~/hooks/modal/useShowModal'; import { Dialog } from '~/constants/modal'; +import { useShowModal } from '~/hooks/modal/useShowModal'; +import markdown from '~/styles/common/markdown.module.scss'; + +import styles from './styles.module.scss'; interface IProps {} diff --git a/src/components/boris/Superpower/index.tsx b/src/components/boris/Superpower/index.tsx index 66827d45..89348516 100644 --- a/src/components/boris/Superpower/index.tsx +++ b/src/components/boris/Superpower/index.tsx @@ -1,4 +1,5 @@ import React, { FC } from 'react'; + import { useAuth } from '~/hooks/auth/useAuth'; interface IProps {} diff --git a/src/components/comment/Comment/index.tsx b/src/components/comment/Comment/index.tsx index 2b845ddd..5143cbc0 100644 --- a/src/components/comment/Comment/index.tsx +++ b/src/components/comment/Comment/index.tsx @@ -1,11 +1,18 @@ import React, { FC, HTMLAttributes, memo } from 'react'; -import { CommentWrapper } from '~/components/containers/CommentWrapper'; -import { IComment, ICommentGroup, IFile } from '~/types'; -import { CommentContent } from '~/components/comment/CommentContent'; -import styles from './styles.module.scss'; -import { CommendDeleted } from '../../node/CommendDeleted'; + import classNames from 'classnames'; + +import { CommentContent } from '~/components/comment/CommentContent'; +import { CommentWrapper } from '~/components/containers/CommentWrapper'; import { NEW_COMMENT_CLASSNAME } from '~/constants/comment'; +import { IComment, ICommentGroup, IFile } from '~/types'; + +import { CommendDeleted } from '../../node/CommendDeleted'; + +import styles from './styles.module.scss'; + + + type IProps = HTMLAttributes & { nodeId: number; diff --git a/src/components/comment/CommentAvatar/index.tsx b/src/components/comment/CommentAvatar/index.tsx index cd879d24..ca0152cc 100644 --- a/src/components/comment/CommentAvatar/index.tsx +++ b/src/components/comment/CommentAvatar/index.tsx @@ -1,10 +1,13 @@ import React, { FC, useCallback, useState } from 'react'; -import { IUser } from '~/types/auth'; -import { Avatar } from '~/components/common/Avatar'; + import { path } from 'ramda'; import { Manager, Popper, Reference } from 'react-popper'; -import styles from './styles.module.scss'; + +import { Avatar } from '~/components/common/Avatar'; import { useRandomPhrase } from '~/constants/phrases'; +import { IUser } from '~/types/auth'; + +import styles from './styles.module.scss'; interface Props { user: IUser; diff --git a/src/components/comment/CommentContent/index.tsx b/src/components/comment/CommentContent/index.tsx index b1f86ad9..eed232ea 100644 --- a/src/components/comment/CommentContent/index.tsx +++ b/src/components/comment/CommentContent/index.tsx @@ -1,18 +1,25 @@ import React, { createElement, FC, Fragment, memo, useCallback, useMemo, useState } from 'react'; -import { IComment, IFile } from '~/types'; -import { append, assocPath, path } from 'ramda'; -import { formatCommentText, getPrettyDate, getURL } from '~/utils/dom'; -import { Group } from '~/components/containers/Group'; -import styles from './styles.module.scss'; -import { UploadType } from '~/constants/uploads'; -import reduce from 'ramda/es/reduce'; -import { AudioPlayer } from '~/components/media/AudioPlayer'; + import classnames from 'classnames'; import classNames from 'classnames'; -import { PRESETS } from '~/constants/urls'; -import { COMMENT_BLOCK_RENDERERS } from '~/constants/comment'; -import { CommentMenu } from '../CommentMenu'; +import { append, assocPath, path } from 'ramda'; +import reduce from 'ramda/es/reduce'; + import { CommentForm } from '~/components/comment/CommentForm'; +import { Group } from '~/components/containers/Group'; +import { AudioPlayer } from '~/components/media/AudioPlayer'; +import { COMMENT_BLOCK_RENDERERS } from '~/constants/comment'; +import { UploadType } from '~/constants/uploads'; +import { PRESETS } from '~/constants/urls'; +import { IComment, IFile } from '~/types'; +import { formatCommentText, getPrettyDate, getURL } from '~/utils/dom'; + +import { CommentMenu } from '../CommentMenu'; + +import styles from './styles.module.scss'; + + + interface IProps { nodeId: number; diff --git a/src/components/comment/CommentEmbedBlock/index.tsx b/src/components/comment/CommentEmbedBlock/index.tsx index 5ff71877..87ff3e33 100644 --- a/src/components/comment/CommentEmbedBlock/index.tsx +++ b/src/components/comment/CommentEmbedBlock/index.tsx @@ -1,9 +1,12 @@ import React, { FC, memo, useMemo } from 'react'; -import { ICommentBlockProps } from '~/constants/comment'; -import styles from './styles.module.scss'; -import { getYoutubeThumb } from '~/utils/dom'; + import { Icon } from '~/components/input/Icon'; +import { ICommentBlockProps } from '~/constants/comment'; import { useYoutubeMetadata } from '~/hooks/metadata/useYoutubeMetadata'; +import { getYoutubeThumb } from '~/utils/dom'; + +import styles from './styles.module.scss'; + type Props = ICommentBlockProps & {}; diff --git a/src/components/comment/CommentForm/index.tsx b/src/components/comment/CommentForm/index.tsx index b9038863..b8dc9d5c 100644 --- a/src/components/comment/CommentForm/index.tsx +++ b/src/components/comment/CommentForm/index.tsx @@ -1,24 +1,27 @@ import React, { FC, useCallback, useState } from 'react'; -import { useCommentFormFormik } from '~/hooks/comments/useCommentFormFormik'; + import { FormikProvider } from 'formik'; -import { LocalCommentFormTextarea } from '~/components/comment/LocalCommentFormTextarea'; -import { Button } from '~/components/input/Button'; -import { UploadSubject, UploadTarget } from '~/constants/uploads'; -import { CommentFormAttachButtons } from '~/components/comment/CommentFormAttachButtons'; -import { CommentFormFormatButtons } from '~/components/comment/CommentFormFormatButtons'; -import { CommentFormAttaches } from '~/components/comment/CommentFormAttaches'; -import { LoaderCircle } from '~/components/input/LoaderCircle'; -import { IComment, INode } from '~/types'; -import { EMPTY_COMMENT } from '~/constants/node'; -import { UploadDropzone } from '~/components/upload/UploadDropzone'; -import styles from './styles.module.scss'; -import { ERROR_LITERAL } from '~/constants/errors'; -import { useInputPasteUpload } from '~/hooks/dom/useInputPasteUpload'; -import { Filler } from '~/components/containers/Filler'; -import { useUploader } from '~/hooks/data/useUploader'; -import { UploaderContextProvider } from '~/utils/context/UploaderContextProvider'; import { observer } from 'mobx-react-lite'; +import { CommentFormAttachButtons } from '~/components/comment/CommentFormAttachButtons'; +import { CommentFormAttaches } from '~/components/comment/CommentFormAttaches'; +import { CommentFormFormatButtons } from '~/components/comment/CommentFormFormatButtons'; +import { LocalCommentFormTextarea } from '~/components/comment/LocalCommentFormTextarea'; +import { Filler } from '~/components/containers/Filler'; +import { Button } from '~/components/input/Button'; +import { LoaderCircle } from '~/components/input/LoaderCircle'; +import { UploadDropzone } from '~/components/upload/UploadDropzone'; +import { ERROR_LITERAL } from '~/constants/errors'; +import { EMPTY_COMMENT } from '~/constants/node'; +import { UploadSubject, UploadTarget } from '~/constants/uploads'; +import { useCommentFormFormik } from '~/hooks/comments/useCommentFormFormik'; +import { useUploader } from '~/hooks/data/useUploader'; +import { useInputPasteUpload } from '~/hooks/dom/useInputPasteUpload'; +import { IComment, INode } from '~/types'; +import { UploaderContextProvider } from '~/utils/context/UploaderContextProvider'; + +import styles from './styles.module.scss'; + interface IProps { comment?: IComment; nodeId: INode['id']; diff --git a/src/components/comment/CommentFormAttachButtons/index.tsx b/src/components/comment/CommentFormAttachButtons/index.tsx index 59534254..a2888a5e 100644 --- a/src/components/comment/CommentFormAttachButtons/index.tsx +++ b/src/components/comment/CommentFormAttachButtons/index.tsx @@ -1,6 +1,7 @@ import React, { FC, useCallback } from 'react'; -import { ButtonGroup } from '~/components/input/ButtonGroup'; + import { Button } from '~/components/input/Button'; +import { ButtonGroup } from '~/components/input/ButtonGroup'; import { COMMENT_FILE_TYPES } from '~/constants/uploads'; interface IProps { diff --git a/src/components/comment/CommentFormAttaches/index.tsx b/src/components/comment/CommentFormAttaches/index.tsx index 769e3eff..a3eadeb4 100644 --- a/src/components/comment/CommentFormAttaches/index.tsx +++ b/src/components/comment/CommentFormAttaches/index.tsx @@ -1,13 +1,16 @@ import React, { FC, useCallback } from 'react'; -import styles from './styles.module.scss'; -import { SortableImageGrid } from '~/components/editors/SortableImageGrid'; -import { SortableAudioGrid } from '~/components/editors/SortableAudioGrid'; -import { IFile } from '~/types'; + import { SortEnd } from 'react-sortable-hoc'; -import { moveArrItem } from '~/utils/fn'; -import { useFileDropZone } from '~/hooks'; + +import { SortableAudioGrid } from '~/components/editors/SortableAudioGrid'; +import { SortableImageGrid } from '~/components/editors/SortableImageGrid'; import { COMMENT_FILE_TYPES } from '~/constants/uploads'; +import { useFileDropZone } from '~/hooks'; +import { IFile } from '~/types'; import { useUploaderContext } from '~/utils/context/UploaderContextProvider'; +import { moveArrItem } from '~/utils/fn'; + +import styles from './styles.module.scss'; const CommentFormAttaches: FC = () => { const { diff --git a/src/components/comment/CommentFormFormatButtons/index.tsx b/src/components/comment/CommentFormFormatButtons/index.tsx index 8507e21f..8175c9b7 100644 --- a/src/components/comment/CommentFormFormatButtons/index.tsx +++ b/src/components/comment/CommentFormFormatButtons/index.tsx @@ -1,7 +1,9 @@ import React, { FC, useCallback, useEffect } from 'react'; -import { ButtonGroup } from '~/components/input/ButtonGroup'; + import { Button } from '~/components/input/Button'; +import { ButtonGroup } from '~/components/input/ButtonGroup'; import { useFormatWrapper, wrapTextInsideInput } from '~/hooks/dom/useFormatWrapper'; + import styles from './styles.module.scss'; interface IProps { diff --git a/src/components/comment/CommentMenu/index.tsx b/src/components/comment/CommentMenu/index.tsx index bd632373..0f9432af 100644 --- a/src/components/comment/CommentMenu/index.tsx +++ b/src/components/comment/CommentMenu/index.tsx @@ -1,4 +1,5 @@ import React, { FC, useCallback, useState } from 'react'; + import styles from './styles.module.scss'; interface IProps { diff --git a/src/components/comment/CommentTextBlock/index.tsx b/src/components/comment/CommentTextBlock/index.tsx index 674c7269..4b0289f7 100644 --- a/src/components/comment/CommentTextBlock/index.tsx +++ b/src/components/comment/CommentTextBlock/index.tsx @@ -1,10 +1,13 @@ import React, { FC, useMemo } from 'react'; -import { ICommentBlockProps } from '~/constants/comment'; -import styles from './styles.module.scss'; + import classNames from 'classnames'; + +import { ICommentBlockProps } from '~/constants/comment'; import markdown from '~/styles/common/markdown.module.scss'; import { formatText } from '~/utils/dom'; +import styles from './styles.module.scss'; + interface IProps extends ICommentBlockProps {} const CommentTextBlock: FC = ({ block }) => { diff --git a/src/components/comment/LocalCommentFormTextarea/index.tsx b/src/components/comment/LocalCommentFormTextarea/index.tsx index c07fec70..d901d241 100644 --- a/src/components/comment/LocalCommentFormTextarea/index.tsx +++ b/src/components/comment/LocalCommentFormTextarea/index.tsx @@ -1,7 +1,8 @@ import React, { forwardRef, KeyboardEventHandler, TextareaHTMLAttributes, useCallback } from 'react'; + import { Textarea } from '~/components/input/Textarea'; -import { useCommentFormContext } from '~/hooks/comments/useCommentFormFormik'; import { useRandomPhrase } from '~/constants/phrases'; +import { useCommentFormContext } from '~/hooks/comments/useCommentFormFormik'; interface IProps extends TextareaHTMLAttributes { isLoading?: boolean; diff --git a/src/components/common/Anchor/index.tsx b/src/components/common/Anchor/index.tsx index 6583bca3..bb84a655 100644 --- a/src/components/common/Anchor/index.tsx +++ b/src/components/common/Anchor/index.tsx @@ -1,9 +1,11 @@ import React, { VFC } from 'react'; -import { LinkProps } from '~/utils/types'; -import { CONFIG } from '~/utils/config'; + import NextLink from 'next/link'; import { Link } from 'react-router-dom'; +import { CONFIG } from '~/utils/config'; +import { LinkProps } from '~/utils/types'; + interface AnchorProps extends LinkProps {} const Anchor: VFC = ({ ref, href, children, ...rest }) => diff --git a/src/components/common/Avatar/index.tsx b/src/components/common/Avatar/index.tsx index 30fe97a0..12fe68ac 100644 --- a/src/components/common/Avatar/index.tsx +++ b/src/components/common/Avatar/index.tsx @@ -1,11 +1,16 @@ import React, { forwardRef, useCallback } from 'react'; -import { getURLFromString } from '~/utils/dom'; -import { PRESETS } from '~/constants/urls'; -import styles from './styles.module.scss'; + import classNames from 'classnames'; -import { openUserProfile } from '~/utils/user'; -import { DivProps } from '~/utils/types'; + import { Square } from '~/components/common/Square'; +import { PRESETS } from '~/constants/urls'; +import { getURLFromString } from '~/utils/dom'; +import { DivProps } from '~/utils/types'; +import { openUserProfile } from '~/utils/user'; + +import styles from './styles.module.scss'; + + interface Props extends DivProps { url?: string; diff --git a/src/components/common/MenuDots/index.tsx b/src/components/common/MenuDots/index.tsx index 09671742..265bc8e5 100644 --- a/src/components/common/MenuDots/index.tsx +++ b/src/components/common/MenuDots/index.tsx @@ -1,8 +1,10 @@ import React, { FC } from 'react'; + +import classNames from 'classnames'; + import styles from '~/components/flow/FlowCell/styles.module.scss'; import { Icon } from '~/components/input/Icon'; import { ButtonProps } from '~/utils/types'; -import classNames from 'classnames'; interface Props extends ButtonProps {} diff --git a/src/components/common/ScrollHelperBottom/index.tsx b/src/components/common/ScrollHelperBottom/index.tsx index 31c5ccf5..4febcadf 100644 --- a/src/components/common/ScrollHelperBottom/index.tsx +++ b/src/components/common/ScrollHelperBottom/index.tsx @@ -1,9 +1,12 @@ import React, { VFC } from 'react'; -import styles from './styles.module.scss'; -import { useScrollTop } from '~/hooks/dom/useScrollTop'; -import { useScrollHeight } from '~/hooks/dom/useScrollHeight'; + import classNames from 'classnames'; + +import { useScrollHeight } from '~/hooks/dom/useScrollHeight'; import { useScrollToBottom } from '~/hooks/dom/useScrollToBottom'; +import { useScrollTop } from '~/hooks/dom/useScrollTop'; + +import styles from './styles.module.scss'; interface ScrollHelperBottomProps {} diff --git a/src/components/common/Square/index.tsx b/src/components/common/Square/index.tsx index 96e2c473..d1619005 100644 --- a/src/components/common/Square/index.tsx +++ b/src/components/common/Square/index.tsx @@ -1,8 +1,11 @@ import React, { forwardRef } from 'react'; -import styles from './styles.module.scss'; -import { DivProps } from '~/utils/types'; + import classNames from 'classnames'; +import { DivProps } from '~/utils/types'; + +import styles from './styles.module.scss'; + interface SquareProps extends DivProps { image?: string; size?: number; diff --git a/src/components/common/StatsRow/index.tsx b/src/components/common/StatsRow/index.tsx index d8931c85..6a6a9b4e 100644 --- a/src/components/common/StatsRow/index.tsx +++ b/src/components/common/StatsRow/index.tsx @@ -1,5 +1,7 @@ import React, { FC } from 'react'; + import { Placeholder } from '~/components/placeholders/Placeholder'; + import styles from './styles.module.scss'; const StatsRow: FC<{ isLoading: boolean; label: string }> = ({ isLoading, label, children }) => ( diff --git a/src/components/common/SubTitle/index.tsx b/src/components/common/SubTitle/index.tsx index 49da1ddf..7b090b9c 100644 --- a/src/components/common/SubTitle/index.tsx +++ b/src/components/common/SubTitle/index.tsx @@ -1,7 +1,10 @@ import React, { FC } from 'react'; + +import classNames from 'classnames'; + import { Placeholder } from '~/components/placeholders/Placeholder'; import { DivProps } from '~/utils/types'; -import classNames from 'classnames'; + import styles from './styles.module.scss'; interface Props extends DivProps { diff --git a/src/components/containers/Authorized/index.tsx b/src/components/containers/Authorized/index.tsx index 7eed18e2..739e1ec8 100644 --- a/src/components/containers/Authorized/index.tsx +++ b/src/components/containers/Authorized/index.tsx @@ -1,4 +1,5 @@ import React, { FC } from 'react'; + import { useAuth } from '~/hooks/auth/useAuth'; interface IProps {} diff --git a/src/components/containers/BlurWrapper/index.tsx b/src/components/containers/BlurWrapper/index.tsx index f62cdf09..58f81140 100644 --- a/src/components/containers/BlurWrapper/index.tsx +++ b/src/components/containers/BlurWrapper/index.tsx @@ -1,7 +1,9 @@ import React, { AllHTMLAttributes, FC } from 'react'; -import styles from './styles.module.scss'; + import classNames from 'classnames'; +import styles from './styles.module.scss'; + type IProps = AllHTMLAttributes & { is_blurred: boolean }; export const BlurWrapper: FC = ({ children, is_blurred }) => ( diff --git a/src/components/containers/Card/index.tsx b/src/components/containers/Card/index.tsx index 94b48f8d..ecb77ad9 100644 --- a/src/components/containers/Card/index.tsx +++ b/src/components/containers/Card/index.tsx @@ -1,8 +1,10 @@ import React, { FC } from 'react'; -import styles from './styles.module.scss'; import classNames from 'classnames'; +import styles from './styles.module.scss'; + + type IProps = React.HTMLAttributes & { seamless?: boolean; }; diff --git a/src/components/containers/CellGrid/index.tsx b/src/components/containers/CellGrid/index.tsx index a8924be7..b6886d43 100644 --- a/src/components/containers/CellGrid/index.tsx +++ b/src/components/containers/CellGrid/index.tsx @@ -1,8 +1,10 @@ import React, { FC, HTMLAttributes } from 'react'; -import styles from './styles.module.scss'; import classNames from 'classnames'; +import styles from './styles.module.scss'; + + type IProps = HTMLAttributes & { children: any; size: number; diff --git a/src/components/containers/CommentWrapper/index.tsx b/src/components/containers/CommentWrapper/index.tsx index 92f6d1d0..f3c91e98 100644 --- a/src/components/containers/CommentWrapper/index.tsx +++ b/src/components/containers/CommentWrapper/index.tsx @@ -1,11 +1,13 @@ import React, { FC } from 'react'; + import classNames from 'classnames'; +import { path } from 'ramda'; + +import { CommentAvatar } from '~/components/comment/CommentAvatar'; +import { IUser } from '~/types/auth'; +import { DivProps } from '~/utils/types'; import styles from './styles.module.scss'; -import { IUser } from '~/types/auth'; -import { path } from 'ramda'; -import { CommentAvatar } from '~/components/comment/CommentAvatar'; -import { DivProps } from '~/utils/types'; type IProps = DivProps & { user: IUser; diff --git a/src/components/containers/CoverBackdrop/index.tsx b/src/components/containers/CoverBackdrop/index.tsx index 5030de81..87afff3b 100644 --- a/src/components/containers/CoverBackdrop/index.tsx +++ b/src/components/containers/CoverBackdrop/index.tsx @@ -1,10 +1,13 @@ import React, { FC, useCallback, useEffect, useRef, useState } from 'react'; -import { IUser } from '~/types/auth'; -import styles from './styles.module.scss'; -import { getURL } from '~/utils/dom'; -import { PRESETS } from '~/constants/urls'; + import classNames from 'classnames'; +import { PRESETS } from '~/constants/urls'; +import { IUser } from '~/types/auth'; +import { getURL } from '~/utils/dom'; + +import styles from './styles.module.scss'; + interface IProps { cover: IUser['cover']; } diff --git a/src/components/containers/Filler/index.tsx b/src/components/containers/Filler/index.tsx index 4eb3fe88..a65ec693 100644 --- a/src/components/containers/Filler/index.tsx +++ b/src/components/containers/Filler/index.tsx @@ -1,5 +1,7 @@ import React, { FC } from 'react'; + import classNames from 'classnames'; + import styles from './styles.module.scss'; type IProps = React.HTMLAttributes; diff --git a/src/components/containers/Grid/index.tsx b/src/components/containers/Grid/index.tsx index 7c7f1a5f..bfc83ae2 100644 --- a/src/components/containers/Grid/index.tsx +++ b/src/components/containers/Grid/index.tsx @@ -1,5 +1,7 @@ import React, { FC } from 'react'; + import classNames from 'classnames'; + import styles from './styles.module.scss'; type IProps = React.HTMLAttributes & { diff --git a/src/components/containers/Group/index.tsx b/src/components/containers/Group/index.tsx index add6697d..906132ad 100644 --- a/src/components/containers/Group/index.tsx +++ b/src/components/containers/Group/index.tsx @@ -1,5 +1,7 @@ import React, { FC } from 'react'; + import classNames from 'classnames'; + import styles from './styles.module.scss'; type IProps = React.HTMLAttributes & { diff --git a/src/components/containers/InfiniteScroll/index.tsx b/src/components/containers/InfiniteScroll/index.tsx index 18011736..ac7024a8 100644 --- a/src/components/containers/InfiniteScroll/index.tsx +++ b/src/components/containers/InfiniteScroll/index.tsx @@ -1,4 +1,5 @@ import React, { FC, HTMLAttributes, useCallback, useEffect, useRef } from 'react'; + import styles from './styles.module.scss'; interface IProps extends HTMLAttributes { diff --git a/src/components/containers/Markdown/index.tsx b/src/components/containers/Markdown/index.tsx index 61f2a678..622aa068 100644 --- a/src/components/containers/Markdown/index.tsx +++ b/src/components/containers/Markdown/index.tsx @@ -1,7 +1,9 @@ import React, { DetailedHTMLProps, FC, HTMLAttributes } from 'react'; -import styles from '~/styles/common/markdown.module.scss'; + import classNames from 'classnames'; +import styles from '~/styles/common/markdown.module.scss'; + interface IProps extends DetailedHTMLProps, HTMLDivElement> {} const Markdown: FC = ({ className, ...props }) => ( diff --git a/src/components/containers/Padder/index.tsx b/src/components/containers/Padder/index.tsx index 32b2eab0..a4ffb5f6 100644 --- a/src/components/containers/Padder/index.tsx +++ b/src/components/containers/Padder/index.tsx @@ -1,8 +1,10 @@ import React, { FC } from 'react'; -import styles from './styles.module.scss'; import classNames from 'classnames'; +import styles from './styles.module.scss'; + + type IProps = React.HTMLAttributes & { padding?: number; vertical?: boolean; diff --git a/src/components/containers/PageCoverProvider/index.tsx b/src/components/containers/PageCoverProvider/index.tsx index fc9422de..064ab3d4 100644 --- a/src/components/containers/PageCoverProvider/index.tsx +++ b/src/components/containers/PageCoverProvider/index.tsx @@ -1,9 +1,12 @@ import React, { createContext, FC, useContext, useState } from 'react'; -import styles from './styles.module.scss'; + import { createPortal } from 'react-dom'; -import { getURL } from '~/utils/dom'; + import { PRESETS } from '~/constants/urls'; import { IFile } from '~/types'; +import { getURL } from '~/utils/dom'; + +import styles from './styles.module.scss'; interface CoverContextValue { cover: IFile | null; diff --git a/src/components/containers/PageCoverProvider/usePageCover.ts b/src/components/containers/PageCoverProvider/usePageCover.ts index 6b80dcc3..57877806 100644 --- a/src/components/containers/PageCoverProvider/usePageCover.ts +++ b/src/components/containers/PageCoverProvider/usePageCover.ts @@ -1,6 +1,7 @@ import { useEffect } from 'react'; -import { IFile } from '~/types'; + import { usePageCoverContext } from '~/components/containers/PageCoverProvider/index'; +import { IFile } from '~/types'; export const usePageCover = (cover?: IFile) => { const { setCover } = usePageCoverContext(); diff --git a/src/components/containers/Panel/index.tsx b/src/components/containers/Panel/index.tsx index 85e66d69..0d5ccbf5 100644 --- a/src/components/containers/Panel/index.tsx +++ b/src/components/containers/Panel/index.tsx @@ -1,8 +1,10 @@ import React, { FC, HTMLAttributes } from 'react'; -import styles from './styles.module.scss'; import classNames from 'classnames'; +import styles from './styles.module.scss'; + + type IProps = HTMLAttributes & { seamless?: boolean; stretchy?: boolean; diff --git a/src/components/containers/Sticky/index.tsx b/src/components/containers/Sticky/index.tsx index 15de9b7e..bf664518 100644 --- a/src/components/containers/Sticky/index.tsx +++ b/src/components/containers/Sticky/index.tsx @@ -1,4 +1,5 @@ import React, { DetailsHTMLAttributes, FC } from 'react'; + import StickyBox from 'react-sticky-box'; interface IProps extends DetailsHTMLAttributes { diff --git a/src/components/containers/TagField/index.tsx b/src/components/containers/TagField/index.tsx index 18987f03..d2bb2144 100644 --- a/src/components/containers/TagField/index.tsx +++ b/src/components/containers/TagField/index.tsx @@ -1,4 +1,5 @@ import React, { FC, HTMLAttributes } from 'react'; + import styles from './styles.module.scss'; type IProps = HTMLAttributes & {}; diff --git a/src/components/dialogs/BetterScrollDialog/index.tsx b/src/components/dialogs/BetterScrollDialog/index.tsx index 4d25dbf2..b0d61d25 100644 --- a/src/components/dialogs/BetterScrollDialog/index.tsx +++ b/src/components/dialogs/BetterScrollDialog/index.tsx @@ -1,9 +1,12 @@ import React, { FC, MouseEventHandler, useEffect, useRef } from 'react'; -import styles from './styles.module.scss'; + import { clearAllBodyScrollLocks, disableBodyScroll } from 'body-scroll-lock'; + import { Icon } from '~/components/input/Icon'; import { LoaderCircle } from '~/components/input/LoaderCircle'; +import styles from './styles.module.scss'; + interface IProps { children: React.ReactChild; header?: JSX.Element; diff --git a/src/components/dialogs/DialogTitle/index.tsx b/src/components/dialogs/DialogTitle/index.tsx index d74c5912..abdbc47b 100644 --- a/src/components/dialogs/DialogTitle/index.tsx +++ b/src/components/dialogs/DialogTitle/index.tsx @@ -1,4 +1,5 @@ import React, { FC, ReactNode } from 'react'; + import styles from './styles.module.scss'; interface IProps { diff --git a/src/components/dialogs/ModalWrapper/index.tsx b/src/components/dialogs/ModalWrapper/index.tsx index a765f69d..577174dd 100644 --- a/src/components/dialogs/ModalWrapper/index.tsx +++ b/src/components/dialogs/ModalWrapper/index.tsx @@ -1,5 +1,7 @@ import React, { FC, MouseEventHandler } from 'react'; + import ReactDOM from 'react-dom'; + import styles from './styles.module.scss'; type IProps = { diff --git a/src/components/dialogs/Tabs/index.tsx b/src/components/dialogs/Tabs/index.tsx index 17fc9255..359b8bf9 100644 --- a/src/components/dialogs/Tabs/index.tsx +++ b/src/components/dialogs/Tabs/index.tsx @@ -1,7 +1,9 @@ import React, { createContext, FC, useContext, useMemo, useState, VFC } from 'react'; -import styles from './styles.module.scss'; + import classNames from 'classnames'; +import styles from './styles.module.scss'; + interface TabProps { items: string[]; } diff --git a/src/components/editors/AudioEditor/index.tsx b/src/components/editors/AudioEditor/index.tsx index 2b61cc6e..5f719fc1 100644 --- a/src/components/editors/AudioEditor/index.tsx +++ b/src/components/editors/AudioEditor/index.tsx @@ -1,15 +1,20 @@ import React, { FC, useCallback, useMemo } from 'react'; + +import { values } from 'ramda'; + +import { UploadDropzone } from '~/components/upload/UploadDropzone'; import { UploadType } from '~/constants/uploads'; -import { ImageGrid } from '../ImageGrid'; -import { AudioGrid } from '../AudioGrid'; -import styles from './styles.module.scss'; -import { NodeEditorProps } from '~/types/node'; -import { useNodeImages } from '~/hooks/node/useNodeImages'; import { useNodeAudios } from '~/hooks/node/useNodeAudios'; import { useNodeFormContext } from '~/hooks/node/useNodeFormFormik'; -import { UploadDropzone } from '~/components/upload/UploadDropzone'; +import { useNodeImages } from '~/hooks/node/useNodeImages'; +import { NodeEditorProps } from '~/types/node'; import { useUploaderContext } from '~/utils/context/UploaderContextProvider'; -import { values } from 'ramda'; + +import { AudioGrid } from '../AudioGrid'; +import { ImageGrid } from '../ImageGrid'; + +import styles from './styles.module.scss'; + type IProps = NodeEditorProps; diff --git a/src/components/editors/AudioGrid/index.tsx b/src/components/editors/AudioGrid/index.tsx index 5627a38b..d4f9f14b 100644 --- a/src/components/editors/AudioGrid/index.tsx +++ b/src/components/editors/AudioGrid/index.tsx @@ -1,12 +1,15 @@ import React, { FC, useCallback } from 'react'; + import { SortEnd } from 'react-sortable-hoc'; + +import { SortableAudioGrid } from '~/components/editors/SortableAudioGrid'; +import { useWindowSize } from '~/hooks/dom/useWindowSize'; +import { UploadStatus } from '~/store/uploader/UploaderStore'; import { IFile } from '~/types'; import { moveArrItem } from '~/utils/fn'; -import { SortableAudioGrid } from '~/components/editors/SortableAudioGrid'; import styles from './styles.module.scss'; -import { UploadStatus } from '~/store/uploader/UploaderStore'; -import { useWindowSize } from '~/hooks/dom/useWindowSize'; + interface IProps { files: IFile[]; diff --git a/src/components/editors/EditorActionsPanel/index.tsx b/src/components/editors/EditorActionsPanel/index.tsx index d6b7b6e7..ff285d62 100644 --- a/src/components/editors/EditorActionsPanel/index.tsx +++ b/src/components/editors/EditorActionsPanel/index.tsx @@ -1,9 +1,12 @@ import React, { createElement, FC } from 'react'; -import styles from './styles.module.scss'; -import { NODE_PANEL_COMPONENTS } from '~/constants/node'; + import { has } from 'ramda'; + +import { NODE_PANEL_COMPONENTS } from '~/constants/node'; import { useNodeFormContext } from '~/hooks/node/useNodeFormFormik'; +import styles from './styles.module.scss'; + const EditorActionsPanel: FC = () => { const { values } = useNodeFormContext(); diff --git a/src/components/editors/EditorAudioUploadButton/index.tsx b/src/components/editors/EditorAudioUploadButton/index.tsx index 786a7576..3cc626b0 100644 --- a/src/components/editors/EditorAudioUploadButton/index.tsx +++ b/src/components/editors/EditorAudioUploadButton/index.tsx @@ -1,4 +1,5 @@ import React, { FC } from 'react'; + import { EditorUploadButton } from '~/components/editors/EditorUploadButton'; import { UploadType } from '~/constants/uploads'; import { IEditorComponentProps } from '~/types/node'; diff --git a/src/components/editors/EditorButtons/index.tsx b/src/components/editors/EditorButtons/index.tsx index d73c282d..9b7c0560 100644 --- a/src/components/editors/EditorButtons/index.tsx +++ b/src/components/editors/EditorButtons/index.tsx @@ -1,11 +1,12 @@ import React, { FC } from 'react'; -import { EditorActionsPanel } from '~/components/editors/EditorActionsPanel'; -import { Group } from '~/components/containers/Group'; -import { InputText } from '~/components/input/InputText'; -import { Button } from '~/components/input/Button'; -import { Padder } from '~/components/containers/Padder'; -import { useNodeFormContext } from '~/hooks/node/useNodeFormFormik'; + import { Filler } from '~/components/containers/Filler'; +import { Group } from '~/components/containers/Group'; +import { Padder } from '~/components/containers/Padder'; +import { EditorActionsPanel } from '~/components/editors/EditorActionsPanel'; +import { Button } from '~/components/input/Button'; +import { InputText } from '~/components/input/InputText'; +import { useNodeFormContext } from '~/hooks/node/useNodeFormFormik'; const EditorButtons: FC = () => { const { values, handleChange, isSubmitting } = useNodeFormContext(); diff --git a/src/components/editors/EditorConfirmClose/index.tsx b/src/components/editors/EditorConfirmClose/index.tsx index 8324b5d3..25ba8636 100644 --- a/src/components/editors/EditorConfirmClose/index.tsx +++ b/src/components/editors/EditorConfirmClose/index.tsx @@ -1,8 +1,10 @@ import React, { FC } from 'react'; -import styles from './styles.module.scss'; + import { Group } from '~/components/containers/Group'; import { Button } from '~/components/input/Button'; +import styles from './styles.module.scss'; + interface IProps { onApprove: () => void; onDecline: () => void; diff --git a/src/components/editors/EditorFiller/index.tsx b/src/components/editors/EditorFiller/index.tsx index 64887a0e..b5e48bec 100644 --- a/src/components/editors/EditorFiller/index.tsx +++ b/src/components/editors/EditorFiller/index.tsx @@ -1,6 +1,8 @@ import React, { FC } from 'react'; + import { Filler } from '~/components/containers/Filler'; import { IEditorComponentProps } from '~/types/node'; + import styles from './styles.module.scss'; type IProps = IEditorComponentProps & {}; diff --git a/src/components/editors/EditorImageUploadButton/index.tsx b/src/components/editors/EditorImageUploadButton/index.tsx index 67f07d2d..cbc82efb 100644 --- a/src/components/editors/EditorImageUploadButton/index.tsx +++ b/src/components/editors/EditorImageUploadButton/index.tsx @@ -1,4 +1,5 @@ import React, { FC } from 'react'; + import { EditorUploadButton } from '~/components/editors/EditorUploadButton'; import { UploadType } from '~/constants/uploads'; import { IEditorComponentProps } from '~/types/node'; diff --git a/src/components/editors/EditorPublicSwitch/index.tsx b/src/components/editors/EditorPublicSwitch/index.tsx index b6a59b52..f86511f0 100644 --- a/src/components/editors/EditorPublicSwitch/index.tsx +++ b/src/components/editors/EditorPublicSwitch/index.tsx @@ -1,9 +1,11 @@ import React, { FC, useCallback } from 'react'; -import { IEditorComponentProps } from '~/types/node'; + import { Button } from '~/components/input/Button'; import { Icon } from '~/components/input/Icon'; -import styles from './styles.module.scss'; import { useNodeFormContext } from '~/hooks/node/useNodeFormFormik'; +import { IEditorComponentProps } from '~/types/node'; + +import styles from './styles.module.scss'; interface IProps extends IEditorComponentProps {} diff --git a/src/components/editors/EditorUploadButton/index.tsx b/src/components/editors/EditorUploadButton/index.tsx index e0f1f5c4..c2a1b744 100644 --- a/src/components/editors/EditorUploadButton/index.tsx +++ b/src/components/editors/EditorUploadButton/index.tsx @@ -1,12 +1,14 @@ import React, { ChangeEvent, FC, useCallback } from 'react'; -import styles from './styles.module.scss'; + +import { Button } from '~/components/input/Button'; import { Icon } from '~/components/input/Icon'; import { UploadType } from '~/constants/uploads'; -import { IEditorComponentProps } from '~/types/node'; -import { getFileType } from '~/utils/uploader'; import { useNodeFormContext } from '~/hooks/node/useNodeFormFormik'; -import { Button } from '~/components/input/Button'; +import { IEditorComponentProps } from '~/types/node'; import { useUploaderContext } from '~/utils/context/UploaderContextProvider'; +import { getFileType } from '~/utils/uploader'; + +import styles from './styles.module.scss'; type IProps = IEditorComponentProps & { accept?: string; diff --git a/src/components/editors/EditorUploadCoverButton/index.tsx b/src/components/editors/EditorUploadCoverButton/index.tsx index 5a80b1ea..460890ba 100644 --- a/src/components/editors/EditorUploadCoverButton/index.tsx +++ b/src/components/editors/EditorUploadCoverButton/index.tsx @@ -1,13 +1,15 @@ import React, { ChangeEvent, FC, useCallback, useEffect } from 'react'; -import styles from './styles.module.scss'; -import { UploadSubject, UploadTarget, UploadType } from '~/constants/uploads'; -import { getURL } from '~/utils/dom'; + import { Icon } from '~/components/input/Icon'; +import { UploadSubject, UploadTarget, UploadType } from '~/constants/uploads'; import { PRESETS } from '~/constants/urls'; -import { IEditorComponentProps } from '~/types/node'; -import { useNodeFormContext } from '~/hooks/node/useNodeFormFormik'; -import { getFileType } from '~/utils/uploader'; import { useUploader } from '~/hooks/data/useUploader'; +import { useNodeFormContext } from '~/hooks/node/useNodeFormFormik'; +import { IEditorComponentProps } from '~/types/node'; +import { getURL } from '~/utils/dom'; +import { getFileType } from '~/utils/uploader'; + +import styles from './styles.module.scss'; type IProps = IEditorComponentProps & {}; diff --git a/src/components/editors/ImageEditor/index.tsx b/src/components/editors/ImageEditor/index.tsx index 2d3eb0be..08ad9e12 100644 --- a/src/components/editors/ImageEditor/index.tsx +++ b/src/components/editors/ImageEditor/index.tsx @@ -1,11 +1,14 @@ import React, { FC } from 'react'; -import { ImageGrid } from '~/components/editors/ImageGrid'; -import styles from './styles.module.scss'; -import { NodeEditorProps } from '~/types/node'; -import { UploadDropzone } from '~/components/upload/UploadDropzone'; -import { useUploaderContext } from '~/utils/context/UploaderContextProvider'; + import { values } from 'ramda'; +import { ImageGrid } from '~/components/editors/ImageGrid'; +import { UploadDropzone } from '~/components/upload/UploadDropzone'; +import { NodeEditorProps } from '~/types/node'; +import { useUploaderContext } from '~/utils/context/UploaderContextProvider'; + +import styles from './styles.module.scss'; + type IProps = NodeEditorProps; const ImageEditor: FC = () => { diff --git a/src/components/editors/ImageGrid/index.tsx b/src/components/editors/ImageGrid/index.tsx index e35a0955..2ad90cc4 100644 --- a/src/components/editors/ImageGrid/index.tsx +++ b/src/components/editors/ImageGrid/index.tsx @@ -1,11 +1,14 @@ import React, { FC, useCallback } from 'react'; + import { SortEnd } from 'react-sortable-hoc'; -import styles from './styles.module.scss'; + +import { SortableImageGrid } from '~/components/editors/SortableImageGrid'; +import { useWindowSize } from '~/hooks/dom/useWindowSize'; +import { UploadStatus } from '~/store/uploader/UploaderStore'; import { IFile } from '~/types'; import { moveArrItem } from '~/utils/fn'; -import { SortableImageGrid } from '~/components/editors/SortableImageGrid'; -import { UploadStatus } from '~/store/uploader/UploaderStore'; -import { useWindowSize } from '~/hooks/dom/useWindowSize'; + +import styles from './styles.module.scss'; interface IProps { files: IFile[]; diff --git a/src/components/editors/SortableAudioGrid/index.tsx b/src/components/editors/SortableAudioGrid/index.tsx index 40eb3ddd..ab809880 100644 --- a/src/components/editors/SortableAudioGrid/index.tsx +++ b/src/components/editors/SortableAudioGrid/index.tsx @@ -1,11 +1,14 @@ import React from 'react'; + import { SortableContainer } from 'react-sortable-hoc'; -import { AudioUpload } from '~/components/upload/AudioUpload'; -import styles from './styles.module.scss'; + import { SortableAudioGridItem } from '~/components/editors/SortableAudioGridItem'; -import { IFile } from '~/types'; import { AudioPlayer } from '~/components/media/AudioPlayer'; +import { AudioUpload } from '~/components/upload/AudioUpload'; import { UploadStatus } from '~/store/uploader/UploaderStore'; +import { IFile } from '~/types'; + +import styles from './styles.module.scss'; const SortableAudioGrid = SortableContainer( ({ diff --git a/src/components/editors/SortableAudioGridItem/index.tsx b/src/components/editors/SortableAudioGridItem/index.tsx index 463e0312..5c9c3877 100644 --- a/src/components/editors/SortableAudioGridItem/index.tsx +++ b/src/components/editors/SortableAudioGridItem/index.tsx @@ -1,4 +1,5 @@ import React from 'react'; + import { SortableElement } from 'react-sortable-hoc'; import styles from './styles.module.scss'; diff --git a/src/components/editors/SortableImageGrid/index.tsx b/src/components/editors/SortableImageGrid/index.tsx index 7dbe9a62..ed47c9d5 100644 --- a/src/components/editors/SortableImageGrid/index.tsx +++ b/src/components/editors/SortableImageGrid/index.tsx @@ -1,13 +1,16 @@ import React, { useCallback } from 'react'; + +import classNames from 'classnames'; import { SortableContainer } from 'react-sortable-hoc'; -import { ImageUpload } from '~/components/upload/ImageUpload'; -import styles from './styles.module.scss'; + import { SortableImageGridItem } from '~/components/editors/SortableImageGridItem'; +import { ImageUpload } from '~/components/upload/ImageUpload'; +import { PRESETS } from '~/constants/urls'; +import { UploadStatus } from '~/store/uploader/UploaderStore'; import { IFile } from '~/types'; import { getURL } from '~/utils/dom'; -import { PRESETS } from '~/constants/urls'; -import classNames from 'classnames'; -import { UploadStatus } from '~/store/uploader/UploaderStore'; + +import styles from './styles.module.scss'; const SortableImageGrid = SortableContainer( ({ diff --git a/src/components/editors/SortableImageGridItem/index.tsx b/src/components/editors/SortableImageGridItem/index.tsx index 01f650cd..d49c5638 100644 --- a/src/components/editors/SortableImageGridItem/index.tsx +++ b/src/components/editors/SortableImageGridItem/index.tsx @@ -1,4 +1,5 @@ import React from 'react'; + import { SortableElement } from 'react-sortable-hoc'; import styles from './styles.module.scss'; diff --git a/src/components/editors/TextEditor/index.tsx b/src/components/editors/TextEditor/index.tsx index b11afe05..9458e886 100644 --- a/src/components/editors/TextEditor/index.tsx +++ b/src/components/editors/TextEditor/index.tsx @@ -1,10 +1,13 @@ import React, { FC, useCallback } from 'react'; -import styles from './styles.module.scss'; -import { Textarea } from '~/components/input/Textarea'; + import { path } from 'ramda'; -import { NodeEditorProps } from '~/types/node'; -import { useNodeFormContext } from '~/hooks/node/useNodeFormFormik'; + +import { Textarea } from '~/components/input/Textarea'; import { useRandomPhrase } from '~/constants/phrases'; +import { useNodeFormContext } from '~/hooks/node/useNodeFormFormik'; +import { NodeEditorProps } from '~/types/node'; + +import styles from './styles.module.scss'; type IProps = NodeEditorProps & {}; diff --git a/src/components/editors/VideoEditor/index.tsx b/src/components/editors/VideoEditor/index.tsx index a3621f6f..a30b98a3 100644 --- a/src/components/editors/VideoEditor/index.tsx +++ b/src/components/editors/VideoEditor/index.tsx @@ -1,11 +1,14 @@ import React, { FC, useCallback, useMemo } from 'react'; -import styles from './styles.module.scss'; -import { path } from 'ramda'; -import { InputText } from '~/components/input/InputText'; + import classnames from 'classnames'; -import { getYoutubeThumb } from '~/utils/dom'; -import { NodeEditorProps } from '~/types/node'; +import { path } from 'ramda'; + +import { InputText } from '~/components/input/InputText'; import { useNodeFormContext } from '~/hooks/node/useNodeFormFormik'; +import { NodeEditorProps } from '~/types/node'; +import { getYoutubeThumb } from '~/utils/dom'; + +import styles from './styles.module.scss'; type IProps = NodeEditorProps & {}; diff --git a/src/components/flow/CellShade/index.tsx b/src/components/flow/CellShade/index.tsx index 64874497..b259dbe7 100644 --- a/src/components/flow/CellShade/index.tsx +++ b/src/components/flow/CellShade/index.tsx @@ -1,10 +1,13 @@ import React, { FC, useMemo } from 'react'; -import styles from './styles.module.scss'; -import { DEFAULT_DOMINANT_COLOR } from '~/constants/node'; -import { DivProps } from '~/utils/types'; + import classNames from 'classnames'; import { transparentize } from 'color2k'; + +import { DEFAULT_DOMINANT_COLOR } from '~/constants/node'; import { normalizeBrightColor } from '~/utils/color'; +import { DivProps } from '~/utils/types'; + +import styles from './styles.module.scss'; interface Props extends DivProps { color?: string; diff --git a/src/components/flow/FlowCell/index.tsx b/src/components/flow/FlowCell/index.tsx index 8e3e2e8f..e64e0b50 100644 --- a/src/components/flow/FlowCell/index.tsx +++ b/src/components/flow/FlowCell/index.tsx @@ -1,15 +1,18 @@ import React, { FC } from 'react'; -import styles from './styles.module.scss'; -import { CellShade } from '~/components/flow/CellShade'; -import { FlowDisplay, INode } from '~/types'; -import { FlowCellText } from '~/components/flow/FlowCellText'; + import classNames from 'classnames'; -import { FlowCellMenu } from '~/components/flow/FlowCellMenu'; -import { useFlowCellControls } from '~/hooks/flow/useFlowCellControls'; -import { useClickOutsideFocus } from '~/hooks/dom/useClickOutsideFocus'; -import { MenuDots } from '~/components/common/MenuDots'; -import { FlowCellImage } from '~/components/flow/FlowCellImage'; + import { Anchor } from '~/components/common/Anchor'; +import { MenuDots } from '~/components/common/MenuDots'; +import { CellShade } from '~/components/flow/CellShade'; +import { FlowCellImage } from '~/components/flow/FlowCellImage'; +import { FlowCellMenu } from '~/components/flow/FlowCellMenu'; +import { FlowCellText } from '~/components/flow/FlowCellText'; +import { useClickOutsideFocus } from '~/hooks/dom/useClickOutsideFocus'; +import { useFlowCellControls } from '~/hooks/flow/useFlowCellControls'; +import { FlowDisplay, INode } from '~/types'; + +import styles from './styles.module.scss'; interface Props { id: INode['id']; diff --git a/src/components/flow/FlowCellImage/index.tsx b/src/components/flow/FlowCellImage/index.tsx index 3ac34dfc..e05bfc48 100644 --- a/src/components/flow/FlowCellImage/index.tsx +++ b/src/components/flow/FlowCellImage/index.tsx @@ -1,8 +1,11 @@ import React, { FC } from 'react'; -import { IMGProps } from '~/utils/types'; -import styles from './styles.module.scss'; + import classNames from 'classnames'; +import { IMGProps } from '~/utils/types'; + +import styles from './styles.module.scss'; + interface Props extends IMGProps { height?: number; } diff --git a/src/components/flow/FlowCellImageLazyLoad/index.tsx b/src/components/flow/FlowCellImageLazyLoad/index.tsx index bb43419b..2c722210 100644 --- a/src/components/flow/FlowCellImageLazyLoad/index.tsx +++ b/src/components/flow/FlowCellImageLazyLoad/index.tsx @@ -1,8 +1,11 @@ import React, { FC } from 'react'; -import LazyLoad from 'react-lazyload'; -import { IMGProps } from '~/utils/types'; -import styles from './styles.module.scss'; + import classNames from 'classnames'; +import LazyLoad from 'react-lazyload'; + +import { IMGProps } from '~/utils/types'; + +import styles from './styles.module.scss'; interface Props extends IMGProps { height?: number; diff --git a/src/components/flow/FlowCellMenu/index.tsx b/src/components/flow/FlowCellMenu/index.tsx index 23886369..e3eb4d4b 100644 --- a/src/components/flow/FlowCellMenu/index.tsx +++ b/src/components/flow/FlowCellMenu/index.tsx @@ -1,11 +1,14 @@ import React, { FC } from 'react'; -import styles from './styles.module.scss'; -import { Icon } from '~/components/input/Icon'; + import classNames from 'classnames'; -import { Toggle } from '~/components/input/Toggle'; + import { Group } from '~/components/containers/Group'; +import { Icon } from '~/components/input/Icon'; +import { Toggle } from '~/components/input/Toggle'; import { FlowDisplayVariant } from '~/types'; +import styles from './styles.module.scss'; + interface Props { onClose: () => void; currentView: FlowDisplayVariant; diff --git a/src/components/flow/FlowCellText/index.tsx b/src/components/flow/FlowCellText/index.tsx index 26b6ffd1..f73f125e 100644 --- a/src/components/flow/FlowCellText/index.tsx +++ b/src/components/flow/FlowCellText/index.tsx @@ -1,9 +1,13 @@ import React, { FC, ReactElement } from 'react'; -import { Markdown } from '~/components/containers/Markdown'; -import { DivProps } from '~/utils/types'; + import classNames from 'classnames'; -import styles from './styles.module.scss'; + +import { Markdown } from '~/components/containers/Markdown'; import { formatText } from '~/utils/dom'; +import { DivProps } from '~/utils/types'; + +import styles from './styles.module.scss'; + interface Props extends DivProps { children: string; diff --git a/src/components/flow/FlowGrid/index.tsx b/src/components/flow/FlowGrid/index.tsx index e0c16bdc..87b9c79c 100644 --- a/src/components/flow/FlowGrid/index.tsx +++ b/src/components/flow/FlowGrid/index.tsx @@ -1,13 +1,16 @@ import React, { FC, Fragment } from 'react'; + +import classNames from 'classnames'; + +import { FlowCell } from '~/components/flow/FlowCell'; +import { PRESETS, URLS } from '~/constants/urls'; import { FlowDisplay, IFlowNode, INode } from '~/types'; import { IUser } from '~/types/auth'; -import { PRESETS, URLS } from '~/constants/urls'; -import { FlowCell } from '~/components/flow/FlowCell'; -import classNames from 'classnames'; -import styles from './styles.module.scss'; import { getURLFromString } from '~/utils/dom'; import { canEditNode } from '~/utils/node'; +import styles from './styles.module.scss'; + interface Props { nodes: IFlowNode[]; user: Partial; diff --git a/src/components/flow/FlowRecent/index.tsx b/src/components/flow/FlowRecent/index.tsx index cabc8f3f..2539b40d 100644 --- a/src/components/flow/FlowRecent/index.tsx +++ b/src/components/flow/FlowRecent/index.tsx @@ -1,8 +1,11 @@ import React, { FC } from 'react'; -import { FlowRecentItem } from '../FlowRecentItem'; -import styles from './styles.module.scss'; + import { IFlowNode } from '~/types'; +import { FlowRecentItem } from '../FlowRecentItem'; + +import styles from './styles.module.scss'; + interface IProps { recent: IFlowNode[]; updated: IFlowNode[]; diff --git a/src/components/flow/FlowRecentItem/index.tsx b/src/components/flow/FlowRecentItem/index.tsx index 65f7b008..be773f24 100644 --- a/src/components/flow/FlowRecentItem/index.tsx +++ b/src/components/flow/FlowRecentItem/index.tsx @@ -1,12 +1,17 @@ import React, { FC, MouseEventHandler } from 'react'; -import { INode } from '~/types'; -import styles from './styles.module.scss'; -import { URLS } from '~/constants/urls'; -import { NodeRelatedItem } from '~/components/node/NodeRelatedItem'; -import { getPrettyDate } from '~/utils/dom'; + import classNames from 'classnames'; -import { Icon } from '~/components/input/Icon'; + import { Anchor } from '~/components/common/Anchor'; +import { Icon } from '~/components/input/Icon'; +import { NodeRelatedItem } from '~/components/node/NodeRelatedItem'; +import { URLS } from '~/constants/urls'; +import { INode } from '~/types'; +import { getPrettyDate } from '~/utils/dom'; + +import styles from './styles.module.scss'; + + interface IProps { node: Partial; diff --git a/src/components/flow/FlowSearchResults/index.tsx b/src/components/flow/FlowSearchResults/index.tsx index 507376f7..b978a950 100644 --- a/src/components/flow/FlowSearchResults/index.tsx +++ b/src/components/flow/FlowSearchResults/index.tsx @@ -1,9 +1,12 @@ import React, { FC } from 'react'; -import styles from './styles.module.scss'; -import { FlowRecentItem } from '../FlowRecentItem'; + +import { InfiniteScroll } from '~/components/containers/InfiniteScroll'; import { Icon } from '~/components/input/Icon'; import { INode } from '~/types'; -import { InfiniteScroll } from '~/components/containers/InfiniteScroll'; + +import { FlowRecentItem } from '../FlowRecentItem'; + +import styles from './styles.module.scss'; interface IProps { isLoading: boolean; diff --git a/src/components/flow/FlowSwiperHero/index.tsx b/src/components/flow/FlowSwiperHero/index.tsx index e371cabe..a203cb31 100644 --- a/src/components/flow/FlowSwiperHero/index.tsx +++ b/src/components/flow/FlowSwiperHero/index.tsx @@ -1,17 +1,20 @@ import React, { FC, useCallback, useMemo, useState } from 'react'; -import { Swiper, SwiperSlide } from 'swiper/react'; -import styles from './styles.module.scss'; -import SwiperCore, { Autoplay, EffectFade, Lazy, Navigation } from 'swiper'; -import { Icon } from '~/components/input/Icon'; -import { getURLFromString } from '~/utils/dom'; -import { PRESETS, URLS } from '~/constants/urls'; -import SwiperClass from 'swiper/types/swiper-class'; -import { LoaderCircle } from '~/components/input/LoaderCircle'; + import classNames from 'classnames'; -import { IFlowNode } from '~/types'; +import SwiperCore, { Autoplay, EffectFade, Lazy, Navigation } from 'swiper'; +import { Swiper, SwiperSlide } from 'swiper/react'; +import SwiperClass from 'swiper/types/swiper-class'; + +import { Icon } from '~/components/input/Icon'; +import { LoaderCircle } from '~/components/input/LoaderCircle'; +import { PRESETS, URLS } from '~/constants/urls'; import { useWindowSize } from '~/hooks/dom/useWindowSize'; import { useNavigation } from '~/hooks/navigation/useNavigation'; +import { IFlowNode } from '~/types'; +import { getURLFromString } from '~/utils/dom'; + +import styles from './styles.module.scss'; SwiperCore.use([EffectFade, Lazy, Autoplay, Navigation]); diff --git a/src/components/input/ArcProgress/index.tsx b/src/components/input/ArcProgress/index.tsx index 12309968..bc1d4bf5 100644 --- a/src/components/input/ArcProgress/index.tsx +++ b/src/components/input/ArcProgress/index.tsx @@ -1,7 +1,9 @@ import React, { FC } from 'react'; -import styles from './styles.module.scss'; + import { describeArc } from '~/utils/dom'; +import styles from './styles.module.scss'; + interface IProps { size: number; progress?: number; diff --git a/src/components/input/Button/index.tsx b/src/components/input/Button/index.tsx index fa87e5f5..5c2ab808 100644 --- a/src/components/input/Button/index.tsx +++ b/src/components/input/Button/index.tsx @@ -1,9 +1,14 @@ -import classnames from 'classnames'; import React, { ButtonHTMLAttributes, DetailedHTMLProps, FC, memo, useMemo } from 'react'; -import styles from './styles.module.scss'; + +import Tippy from '@tippy.js/react'; +import classnames from 'classnames'; + + import { Icon } from '~/components/input/Icon'; import { IIcon } from '~/types'; -import Tippy from '@tippy.js/react'; + +import styles from './styles.module.scss'; + import 'tippy.js/dist/tippy.css'; type IButtonProps = DetailedHTMLProps< diff --git a/src/components/input/ButtonGroup/index.tsx b/src/components/input/ButtonGroup/index.tsx index 6fd1b73c..58330384 100644 --- a/src/components/input/ButtonGroup/index.tsx +++ b/src/components/input/ButtonGroup/index.tsx @@ -1,7 +1,9 @@ import React, { HTMLAttributes } from 'react'; -import styles from './styles.module.scss'; + import classNames from 'classnames'; +import styles from './styles.module.scss'; + type IProps = HTMLAttributes & {}; export const ButtonGroup = ({ children, className }: IProps) => ( diff --git a/src/components/input/DropHereIcon/index.tsx b/src/components/input/DropHereIcon/index.tsx index 8711d3ca..0ff4e2d9 100644 --- a/src/components/input/DropHereIcon/index.tsx +++ b/src/components/input/DropHereIcon/index.tsx @@ -1,7 +1,9 @@ import React, { FC } from 'react'; -import styles from './styles.module.scss'; + import { SVGProps } from '~/utils/types'; +import styles from './styles.module.scss'; + interface Props extends SVGProps {} const DropHereIcon: FC = ({ ...rest }) => ( diff --git a/src/components/input/Icon/index.tsx b/src/components/input/Icon/index.tsx index 67abc50d..9918e22e 100644 --- a/src/components/input/Icon/index.tsx +++ b/src/components/input/Icon/index.tsx @@ -1,4 +1,5 @@ import React, { FC } from 'react'; + import { IIcon } from '~/types'; type IProps = React.SVGAttributes & { diff --git a/src/components/input/InputText/index.tsx b/src/components/input/InputText/index.tsx index 62cc7a39..56f43315 100644 --- a/src/components/input/InputText/index.tsx +++ b/src/components/input/InputText/index.tsx @@ -1,11 +1,15 @@ import React, { ChangeEvent, FC, useCallback, useState } from 'react'; + import classNames from 'classnames'; -import { IInputTextProps } from '~/types'; -import { useTranslatedError } from '~/hooks/data/useTranslatedError'; -import { InputWrapper } from '~/components/input/InputWrapper'; -import styles from './styles.module.scss'; + import { Icon } from '~/components/input/Icon'; +import { InputWrapper } from '~/components/input/InputWrapper'; +import { useTranslatedError } from '~/hooks/data/useTranslatedError'; import { useFocusEvent } from '~/hooks/dom/useFocusEvent'; +import { IInputTextProps } from '~/types'; + +import styles from './styles.module.scss'; + const InputText: FC = ({ className = '', diff --git a/src/components/input/InputWrapper/index.tsx b/src/components/input/InputWrapper/index.tsx index 472480a5..fcf912e8 100644 --- a/src/components/input/InputWrapper/index.tsx +++ b/src/components/input/InputWrapper/index.tsx @@ -1,7 +1,9 @@ import React, { FC } from 'react'; -import styles from './styles.module.scss'; + import classNames from 'classnames'; +import styles from './styles.module.scss'; + interface InputWrapperProps { title?: string; error?: string; diff --git a/src/components/input/LoaderCircle/index.tsx b/src/components/input/LoaderCircle/index.tsx index 83f23a9a..29a5c2ed 100644 --- a/src/components/input/LoaderCircle/index.tsx +++ b/src/components/input/LoaderCircle/index.tsx @@ -1,9 +1,12 @@ import React, { FC } from 'react'; -import styles from './styles.module.scss'; + import classNames from 'classnames'; + import { LoaderCircleInner } from '~/components/input/LoaderCircleInner'; import { SVGProps } from '~/utils/types'; +import styles from './styles.module.scss'; + interface IProps extends SVGProps { size?: number; className?: string; diff --git a/src/components/input/LoaderCircleInner/index.tsx b/src/components/input/LoaderCircleInner/index.tsx index f1bec199..76af2420 100644 --- a/src/components/input/LoaderCircleInner/index.tsx +++ b/src/components/input/LoaderCircleInner/index.tsx @@ -1,4 +1,5 @@ import React, { FC, SVGAttributes } from 'react'; + import styles from './styles.module.scss'; interface IProps extends SVGAttributes { diff --git a/src/components/input/Textarea/index.tsx b/src/components/input/Textarea/index.tsx index 3cefba8a..890e608c 100644 --- a/src/components/input/Textarea/index.tsx +++ b/src/components/input/Textarea/index.tsx @@ -7,13 +7,16 @@ import React, { useEffect, useState, } from 'react'; -import classNames from 'classnames'; + import autosize from 'autosize'; -import styles from './styles.module.scss'; +import classNames from 'classnames'; + import { InputWrapper } from '~/components/input/InputWrapper'; import { useForwardRef } from '~/hooks/dom/useForwardRef'; +import styles from './styles.module.scss'; + type IProps = DetailedHTMLProps< TextareaHTMLAttributes, HTMLTextAreaElement diff --git a/src/components/input/Toggle/index.tsx b/src/components/input/Toggle/index.tsx index 485e0339..8ad1555b 100644 --- a/src/components/input/Toggle/index.tsx +++ b/src/components/input/Toggle/index.tsx @@ -1,8 +1,11 @@ import React, { FC, useCallback } from 'react'; -import styles from './styles.module.scss'; + import classNames from 'classnames'; + import { ButtonProps } from '~/utils/types'; +import styles from './styles.module.scss'; + type ToggleColor = 'primary' | 'secondary' | 'lab' | 'danger' | 'white'; type IProps = Omit & { diff --git a/src/components/lab/LabAudioBlock/index.tsx b/src/components/lab/LabAudioBlock/index.tsx index 42ff5b0a..4655ef72 100644 --- a/src/components/lab/LabAudioBlock/index.tsx +++ b/src/components/lab/LabAudioBlock/index.tsx @@ -1,7 +1,8 @@ import React, { FC } from 'react'; -import { INodeComponentProps } from '~/constants/node'; -import { Placeholder } from '~/components/placeholders/Placeholder'; + import { NodeAudioBlock } from '~/components/node/NodeAudioBlock'; +import { Placeholder } from '~/components/placeholders/Placeholder'; +import { INodeComponentProps } from '~/constants/node'; const LabAudio: FC = ({ node, isLoading }) => ( diff --git a/src/components/lab/LabBanner/index.tsx b/src/components/lab/LabBanner/index.tsx index 6d6f987c..af595c2e 100644 --- a/src/components/lab/LabBanner/index.tsx +++ b/src/components/lab/LabBanner/index.tsx @@ -1,8 +1,10 @@ import React, { FC } from 'react'; -import styles from './styles.module.scss'; + import { Group } from '~/components/containers/Group'; import { LabSquare } from '~/components/lab/LabSquare'; +import styles from './styles.module.scss'; + interface IProps {} const LabBanner: FC = () => ( diff --git a/src/components/lab/LabBottomPanel/index.tsx b/src/components/lab/LabBottomPanel/index.tsx index bcff0674..23b80b93 100644 --- a/src/components/lab/LabBottomPanel/index.tsx +++ b/src/components/lab/LabBottomPanel/index.tsx @@ -1,15 +1,18 @@ import React, { FC, useCallback } from 'react'; -import { Group } from '~/components/containers/Group'; -import { Filler } from '~/components/containers/Filler'; -import styles from './styles.module.scss'; -import { getPrettyDate } from '~/utils/dom'; -import { INode } from '~/types'; -import { Icon } from '~/components/input/Icon'; + import classNames from 'classnames'; + +import { Filler } from '~/components/containers/Filler'; import { Grid } from '~/components/containers/Grid'; -import { URLS } from '~/constants/urls'; +import { Group } from '~/components/containers/Group'; +import { Icon } from '~/components/input/Icon'; import { Placeholder } from '~/components/placeholders/Placeholder'; +import { URLS } from '~/constants/urls'; import { useNavigation } from '~/hooks/navigation/useNavigation'; +import { INode } from '~/types'; +import { getPrettyDate } from '~/utils/dom'; + +import styles from './styles.module.scss'; type Props = { node: INode; diff --git a/src/components/lab/LabDescription/index.tsx b/src/components/lab/LabDescription/index.tsx index e5a3c6ed..d0c32607 100644 --- a/src/components/lab/LabDescription/index.tsx +++ b/src/components/lab/LabDescription/index.tsx @@ -1,10 +1,13 @@ import React, { FC } from 'react'; -import { INodeComponentProps } from '~/constants/node'; -import styles from './styles.module.scss'; + import { Markdown } from '~/components/containers/Markdown'; -import { formatText } from '~/utils/dom'; -import { useGotoNode } from '~/hooks/node/useGotoNode'; import { Paragraph } from '~/components/placeholders/Paragraph'; +import { INodeComponentProps } from '~/constants/node'; +import { useGotoNode } from '~/hooks/node/useGotoNode'; +import { formatText } from '~/utils/dom'; + +import styles from './styles.module.scss'; + const LabDescription: FC = ({ node, isLoading }) => { const onClick = useGotoNode(node.id); diff --git a/src/components/lab/LabHead/index.tsx b/src/components/lab/LabHead/index.tsx index 68262270..fe856d95 100644 --- a/src/components/lab/LabHead/index.tsx +++ b/src/components/lab/LabHead/index.tsx @@ -1,7 +1,9 @@ import React, { FC } from 'react'; -import styles from './styles.module.scss'; + import { LabHeadItem } from '~/components/lab/LabHeadItem'; +import styles from './styles.module.scss'; + interface IProps { isLoading?: boolean; } diff --git a/src/components/lab/LabHeadItem/index.tsx b/src/components/lab/LabHeadItem/index.tsx index b4f51583..e41cde2a 100644 --- a/src/components/lab/LabHeadItem/index.tsx +++ b/src/components/lab/LabHeadItem/index.tsx @@ -1,9 +1,12 @@ import React, { FC } from 'react'; + +import classNames from 'classnames'; + import { Group } from '~/components/containers/Group'; import { Icon } from '~/components/input/Icon'; import { Placeholder } from '~/components/placeholders/Placeholder'; + import styles from './styles.module.scss'; -import classNames from 'classnames'; interface IProps { icon: string; diff --git a/src/components/lab/LabHero/index.tsx b/src/components/lab/LabHero/index.tsx index 2b443c8d..aac24ee2 100644 --- a/src/components/lab/LabHero/index.tsx +++ b/src/components/lab/LabHero/index.tsx @@ -1,12 +1,14 @@ import React, { FC, useCallback } from 'react'; -import { Placeholder } from '~/components/placeholders/Placeholder'; + import { Group } from '~/components/containers/Group'; import { Icon } from '~/components/input/Icon'; -import styles from './styles.module.scss'; -import { INode } from '~/types'; -import { getPrettyDate } from '~/utils/dom'; +import { Placeholder } from '~/components/placeholders/Placeholder'; import { URLS } from '~/constants/urls'; import { useNavigation } from '~/hooks/navigation/useNavigation'; +import { INode } from '~/types'; +import { getPrettyDate } from '~/utils/dom'; + +import styles from './styles.module.scss'; interface IProps { node?: Partial; diff --git a/src/components/lab/LabHeroes/index.tsx b/src/components/lab/LabHeroes/index.tsx index b7d20d04..29600e1c 100644 --- a/src/components/lab/LabHeroes/index.tsx +++ b/src/components/lab/LabHeroes/index.tsx @@ -1,8 +1,9 @@ import React, { FC } from 'react'; -import { INode } from '~/types'; -import styles from '~/containers/lab/LabStats/styles.module.scss'; -import { LabHero } from '~/components/lab/LabHero'; + import { Group } from '~/components/containers/Group'; +import { LabHero } from '~/components/lab/LabHero'; +import styles from '~/containers/lab/LabStats/styles.module.scss'; +import { INode } from '~/types'; interface IProps { nodes: Partial[]; diff --git a/src/components/lab/LabImage/index.tsx b/src/components/lab/LabImage/index.tsx index 6b701fa5..b132691d 100644 --- a/src/components/lab/LabImage/index.tsx +++ b/src/components/lab/LabImage/index.tsx @@ -1,13 +1,15 @@ import React, { FC } from 'react'; -import { INodeComponentProps } from '~/constants/node'; + import SwiperCore, { A11y, Navigation, Pagination } from 'swiper'; -import styles from './styles.module.scss'; -import { useNodeImages } from '~/hooks/node/useNodeImages'; -import { useGotoNode } from '~/hooks/node/useGotoNode'; -import { Placeholder } from '~/components/placeholders/Placeholder'; -import { normalizeBrightColor } from '~/utils/color'; import { ImagePreloader } from '~/components/media/ImagePreloader'; +import { Placeholder } from '~/components/placeholders/Placeholder'; +import { INodeComponentProps } from '~/constants/node'; +import { useGotoNode } from '~/hooks/node/useGotoNode'; +import { useNodeImages } from '~/hooks/node/useNodeImages'; +import { normalizeBrightColor } from '~/utils/color'; + +import styles from './styles.module.scss'; SwiperCore.use([Navigation, Pagination, A11y]); diff --git a/src/components/lab/LabLine/index.tsx b/src/components/lab/LabLine/index.tsx index 92966e98..bd6cf853 100644 --- a/src/components/lab/LabLine/index.tsx +++ b/src/components/lab/LabLine/index.tsx @@ -1,8 +1,10 @@ import React, { FC } from 'react'; -import styles from './styles.module.scss'; + import { INodeComponentProps } from '~/constants/node'; import { useColorGradientFromString } from '~/hooks/color/useColorGradientFromString'; +import styles from './styles.module.scss'; + interface Props extends INodeComponentProps {} const LabLine: FC = ({ node: { title } }) => { diff --git a/src/components/lab/LabNode/index.tsx b/src/components/lab/LabNode/index.tsx index 8ef757ae..ec7dcec8 100644 --- a/src/components/lab/LabNode/index.tsx +++ b/src/components/lab/LabNode/index.tsx @@ -1,11 +1,17 @@ import React, { FC, useMemo } from 'react'; -import { INode } from '~/types'; -import { useNodeBlocks } from '~/hooks/node/useNodeBlocks'; -import styles from './styles.module.scss'; -import { LabBottomPanel } from '~/components/lab/LabBottomPanel'; -import { isAfter, parseISO } from 'date-fns'; + import classNames from 'classnames'; +import { isAfter, parseISO } from 'date-fns'; + +import { LabBottomPanel } from '~/components/lab/LabBottomPanel'; import { useColorGradientFromString } from '~/hooks/color/useColorGradientFromString'; +import { useNodeBlocks } from '~/hooks/node/useNodeBlocks'; +import { INode } from '~/types'; + +import styles from './styles.module.scss'; + + + interface IProps { node: INode; diff --git a/src/components/lab/LabNodeTitle/index.tsx b/src/components/lab/LabNodeTitle/index.tsx index 0bcdf21c..f557207f 100644 --- a/src/components/lab/LabNodeTitle/index.tsx +++ b/src/components/lab/LabNodeTitle/index.tsx @@ -1,11 +1,14 @@ import React, { FC } from 'react'; -import styles from './styles.module.scss'; + +import Tippy from '@tippy.js/react'; + import { Group } from '~/components/containers/Group'; import { Icon } from '~/components/input/Icon'; -import Tippy from '@tippy.js/react'; -import { useGotoNode } from '~/hooks/node/useGotoNode'; -import { INodeComponentProps } from '~/constants/node'; import { Placeholder } from '~/components/placeholders/Placeholder'; +import { INodeComponentProps } from '~/constants/node'; +import { useGotoNode } from '~/hooks/node/useGotoNode'; + +import styles from './styles.module.scss'; const LabNodeTitle: FC = ({ node, isLoading }) => { const onClick = useGotoNode(node.id); diff --git a/src/components/lab/LabPad/index.tsx b/src/components/lab/LabPad/index.tsx index 74437ed1..3eff73ea 100644 --- a/src/components/lab/LabPad/index.tsx +++ b/src/components/lab/LabPad/index.tsx @@ -1,8 +1,10 @@ import React, { FC } from 'react'; -import styles from './styles.module.scss'; + import { INodeComponentProps } from '~/constants/node'; import { useGotoNode } from '~/hooks/node/useGotoNode'; +import styles from './styles.module.scss'; + const LabPad: FC = ({ node }) => { const onClick = useGotoNode(node.id); return
; diff --git a/src/components/lab/LabSquare/index.tsx b/src/components/lab/LabSquare/index.tsx index 46c85db3..2bd2ed0c 100644 --- a/src/components/lab/LabSquare/index.tsx +++ b/src/components/lab/LabSquare/index.tsx @@ -1,8 +1,11 @@ import React, { FC } from 'react'; -import styles from './styles.module.scss'; -import { DivProps } from '~/utils/types'; + import classNames from 'classnames'; +import { DivProps } from '~/utils/types'; + +import styles from './styles.module.scss'; + interface IProps extends DivProps {} const LabSquare: FC = ({ children, ...rest }) => ( diff --git a/src/components/lab/LabTags/index.tsx b/src/components/lab/LabTags/index.tsx index f3653f23..e8168f0a 100644 --- a/src/components/lab/LabTags/index.tsx +++ b/src/components/lab/LabTags/index.tsx @@ -1,8 +1,10 @@ import React, { FC } from 'react'; -import styles from './/styles.module.scss'; + import { Placeholder } from '~/components/placeholders/Placeholder'; -import { ITag } from '~/types'; import { Tag } from '~/components/tags/Tag'; +import { ITag } from '~/types'; + +import styles from './/styles.module.scss'; interface IProps { tags: ITag[]; diff --git a/src/components/lab/LabText/index.tsx b/src/components/lab/LabText/index.tsx index 834ff233..d60c769e 100644 --- a/src/components/lab/LabText/index.tsx +++ b/src/components/lab/LabText/index.tsx @@ -1,11 +1,15 @@ import React, { FC, useMemo } from 'react'; -import { Markdown } from '~/components/containers/Markdown'; -import { INodeComponentProps } from '~/constants/node'; -import { formatTextParagraphs } from '~/utils/dom'; + import { path } from 'ramda'; -import styles from './styles.module.scss'; -import { useGotoNode } from '~/hooks/node/useGotoNode'; + +import { Markdown } from '~/components/containers/Markdown'; import { Paragraph } from '~/components/placeholders/Paragraph'; +import { INodeComponentProps } from '~/constants/node'; +import { useGotoNode } from '~/hooks/node/useGotoNode'; +import { formatTextParagraphs } from '~/utils/dom'; + +import styles from './styles.module.scss'; + const LabText: FC = ({ node, isLoading }) => { const content = useMemo(() => formatTextParagraphs(path(['blocks', 0, 'text'], node) || ''), [ diff --git a/src/components/lab/LabVideo/index.tsx b/src/components/lab/LabVideo/index.tsx index d62478a7..05cbd5cf 100644 --- a/src/components/lab/LabVideo/index.tsx +++ b/src/components/lab/LabVideo/index.tsx @@ -1,7 +1,8 @@ import React, { FC } from 'react'; -import { INodeComponentProps } from '~/constants/node'; + import { NodeVideoBlock } from '~/components/node/NodeVideoBlock'; import { Placeholder } from '~/components/placeholders/Placeholder'; +import { INodeComponentProps } from '~/constants/node'; const LabVideo: FC = ({ node, isLoading }) => ( diff --git a/src/components/main/Footer/index.tsx b/src/components/main/Footer/index.tsx index 5f494000..1ddddd96 100644 --- a/src/components/main/Footer/index.tsx +++ b/src/components/main/Footer/index.tsx @@ -1,4 +1,5 @@ import React, { FC, memo } from 'react'; + import styles from './styles.module.scss'; interface IProps {} diff --git a/src/components/main/Logo/index.tsx b/src/components/main/Logo/index.tsx index 286c5321..7d5e5360 100644 --- a/src/components/main/Logo/index.tsx +++ b/src/components/main/Logo/index.tsx @@ -1,8 +1,10 @@ import React from 'react'; -import styles from './styles.module.scss'; + import { Anchor } from '~/components/common/Anchor'; import { URLS } from '~/constants/urls'; +import styles from './styles.module.scss'; + export const Logo = () => ( VAULT diff --git a/src/components/main/SidePane/index.tsx b/src/components/main/SidePane/index.tsx index e952bc87..821684ad 100644 --- a/src/components/main/SidePane/index.tsx +++ b/src/components/main/SidePane/index.tsx @@ -1,8 +1,11 @@ import React, { FC, useCallback, useEffect, useState } from 'react'; + import classNames from 'classnames'; -import styles from './styles.module.scss'; + import { Group } from '~/components/containers/Group'; +import styles from './styles.module.scss'; + interface IProps {} export const SidePane: FC = () => { diff --git a/src/components/main/UserButton/index.tsx b/src/components/main/UserButton/index.tsx index df563163..0bda7848 100644 --- a/src/components/main/UserButton/index.tsx +++ b/src/components/main/UserButton/index.tsx @@ -1,10 +1,12 @@ import React, { FC, useCallback } from 'react'; + import { Group } from '~/components/containers/Group'; -import styles from './styles.module.scss'; -import { getURL } from '~/utils/dom'; import { Icon } from '~/components/input/Icon'; -import { IUser } from '~/types/auth'; import { PRESETS } from '~/constants/urls'; +import { IUser } from '~/types/auth'; +import { getURL } from '~/utils/dom'; + +import styles from './styles.module.scss'; interface IProps { user: Partial; diff --git a/src/components/media/AudioPlayer/index.tsx b/src/components/media/AudioPlayer/index.tsx index 635c3c68..2a5cded9 100644 --- a/src/components/media/AudioPlayer/index.tsx +++ b/src/components/media/AudioPlayer/index.tsx @@ -1,12 +1,15 @@ import React, { memo, useCallback, useMemo } from 'react'; -import { IFile } from '~/types'; + import classNames from 'classnames'; -import styles from './styles.module.scss'; + import { Icon } from '~/components/input/Icon'; import { InputText } from '~/components/input/InputText'; import { PlayerState } from '~/constants/player'; +import { IFile } from '~/types'; import { useAudioPlayer } from '~/utils/providers/AudioPlayerProvider'; +import styles from './styles.module.scss'; + type Props = { file: IFile; isEditing?: boolean; diff --git a/src/components/media/ImagePreloader/index.tsx b/src/components/media/ImagePreloader/index.tsx index e09eba94..d407b650 100644 --- a/src/components/media/ImagePreloader/index.tsx +++ b/src/components/media/ImagePreloader/index.tsx @@ -1,14 +1,18 @@ import React, { FC, MouseEventHandler, useCallback, useMemo, useState } from 'react'; + import classNames from 'classnames'; -import { getURL } from '~/utils/dom'; -import { PRESETS } from '~/constants/urls'; -import styles from './styles.module.scss'; -import { IFile } from '~/types'; -import { LoaderCircle } from '~/components/input/LoaderCircle'; -import { Icon } from '~/components/input/Icon'; -import { useResizeHandler } from '~/hooks/dom/useResizeHandler'; -import { DEFAULT_DOMINANT_COLOR } from '~/constants/node'; + import { ImageWithSSRLoad } from '~/components/common/ImageWithSSRLoad'; +import { Icon } from '~/components/input/Icon'; +import { LoaderCircle } from '~/components/input/LoaderCircle'; +import { DEFAULT_DOMINANT_COLOR } from '~/constants/node'; +import { PRESETS } from '~/constants/urls'; +import { useResizeHandler } from '~/hooks/dom/useResizeHandler'; +import { IFile } from '~/types'; +import { getURL } from '~/utils/dom'; + +import styles from './styles.module.scss'; + interface IProps { file: IFile; diff --git a/src/components/node/CommendDeleted/index.tsx b/src/components/node/CommendDeleted/index.tsx index d4d8274e..c096c4de 100644 --- a/src/components/node/CommendDeleted/index.tsx +++ b/src/components/node/CommendDeleted/index.tsx @@ -1,8 +1,10 @@ import React, { FC, useCallback } from 'react'; -import styles from './styles.module.scss'; + import { Button } from '~/components/input/Button'; import { IComment } from '~/types'; +import styles from './styles.module.scss'; + interface IProps { id: IComment['id']; onDelete: (id: IComment['id'], isLocked: boolean) => void; diff --git a/src/components/node/MenuButton/index.tsx b/src/components/node/MenuButton/index.tsx index 509a918d..0ccbe2ce 100644 --- a/src/components/node/MenuButton/index.tsx +++ b/src/components/node/MenuButton/index.tsx @@ -1,7 +1,9 @@ import React, { FC } from 'react'; -import styles from './styles.module.scss'; -import { Group } from '~/components/containers/Group'; + import { Filler } from '~/components/containers/Filler'; +import { Group } from '~/components/containers/Group'; + +import styles from './styles.module.scss'; interface IProps { title: string; diff --git a/src/components/node/NodeAudioBlock/index.tsx b/src/components/node/NodeAudioBlock/index.tsx index 1da925ed..b7d43f64 100644 --- a/src/components/node/NodeAudioBlock/index.tsx +++ b/src/components/node/NodeAudioBlock/index.tsx @@ -1,9 +1,11 @@ import React, { FC } from 'react'; + import { AudioPlayer } from '~/components/media/AudioPlayer'; -import styles from './styles.module.scss'; import { INodeComponentProps } from '~/constants/node'; import { useNodeAudios } from '~/hooks/node/useNodeAudios'; +import styles from './styles.module.scss'; + interface IProps extends INodeComponentProps {} const NodeAudioBlock: FC = ({ node }) => { diff --git a/src/components/node/NodeAudioImageBlock/index.tsx b/src/components/node/NodeAudioImageBlock/index.tsx index ae430806..3b40350a 100644 --- a/src/components/node/NodeAudioImageBlock/index.tsx +++ b/src/components/node/NodeAudioImageBlock/index.tsx @@ -1,10 +1,13 @@ import React, { FC } from 'react'; -import styles from './styles.module.scss'; + import { path } from 'ramda'; -import { getURL } from '~/utils/dom'; -import { PRESETS } from '~/constants/urls'; + import { INodeComponentProps } from '~/constants/node'; +import { PRESETS } from '~/constants/urls'; import { useNodeImages } from '~/hooks/node/useNodeImages'; +import { getURL } from '~/utils/dom'; + +import styles from './styles.module.scss'; interface IProps extends INodeComponentProps {} diff --git a/src/components/node/NodeAuthorBlock/index.tsx b/src/components/node/NodeAuthorBlock/index.tsx index 045b2659..75015025 100644 --- a/src/components/node/NodeAuthorBlock/index.tsx +++ b/src/components/node/NodeAuthorBlock/index.tsx @@ -1,9 +1,11 @@ import React, { FC, useCallback } from 'react'; -import styles from './styles.module.scss'; + import { Avatar } from '~/components/common/Avatar'; -import { openUserProfile } from '~/utils/user'; import { useUserDescription } from '~/hooks/auth/useUserDescription'; import { INodeUser } from '~/types'; +import { openUserProfile } from '~/utils/user'; + +import styles from './styles.module.scss'; interface Props { user?: INodeUser; diff --git a/src/components/node/NodeCommentForm/index.tsx b/src/components/node/NodeCommentForm/index.tsx index a4e72b52..10f81c1f 100644 --- a/src/components/node/NodeCommentForm/index.tsx +++ b/src/components/node/NodeCommentForm/index.tsx @@ -1,6 +1,7 @@ import React, { FC } from 'react'; -import { CommentWrapper } from '~/components/containers/CommentWrapper'; + import { CommentForm } from '~/components/comment/CommentForm'; +import { CommentWrapper } from '~/components/containers/CommentWrapper'; import { IComment } from '~/types'; import { IUser } from '~/types/auth'; diff --git a/src/components/node/NodeDeletedBadge/index.tsx b/src/components/node/NodeDeletedBadge/index.tsx index 2c87f773..72d84532 100644 --- a/src/components/node/NodeDeletedBadge/index.tsx +++ b/src/components/node/NodeDeletedBadge/index.tsx @@ -1,4 +1,5 @@ import React, { FC } from 'react'; + import styles from './styles.module.scss'; interface IProps {} diff --git a/src/components/node/NodeImageBlockPlaceholder/index.tsx b/src/components/node/NodeImageBlockPlaceholder/index.tsx index 8a5c9b6e..9f108ebf 100644 --- a/src/components/node/NodeImageBlockPlaceholder/index.tsx +++ b/src/components/node/NodeImageBlockPlaceholder/index.tsx @@ -1,7 +1,9 @@ import React, { FC } from 'react'; -import styles from './styles.module.scss'; + import { LoaderCircle } from '~/components/input/LoaderCircle'; +import styles from './styles.module.scss'; + const NodeImageBlockPlaceholder: FC<{}> = () => (
diff --git a/src/components/node/NodeImageSwiperBlock/index.tsx b/src/components/node/NodeImageSwiperBlock/index.tsx index 2cf0f9c8..8747742b 100644 --- a/src/components/node/NodeImageSwiperBlock/index.tsx +++ b/src/components/node/NodeImageSwiperBlock/index.tsx @@ -1,16 +1,18 @@ import React, { FC, useCallback, useState } from 'react'; -import { INodeComponentProps } from '~/constants/node'; -import { Swiper, SwiperSlide } from 'swiper/react'; -import styles from './styles.module.scss'; + import SwiperCore, { Keyboard, Navigation, Pagination, SwiperOptions } from 'swiper'; - -import { useNodeImages } from '~/hooks/node/useNodeImages'; +import { Swiper, SwiperSlide } from 'swiper/react'; import SwiperClass from 'swiper/types/swiper-class'; + import { ImagePreloader } from '~/components/media/ImagePreloader'; -import { normalizeBrightColor } from '~/utils/color'; +import { INodeComponentProps } from '~/constants/node'; import { useImageModal } from '~/hooks/navigation/useImageModal'; +import { useNodeImages } from '~/hooks/node/useNodeImages'; +import { normalizeBrightColor } from '~/utils/color'; + +import styles from './styles.module.scss'; SwiperCore.use([Navigation, Pagination, Keyboard]); diff --git a/src/components/node/NodeNoComments/index.tsx b/src/components/node/NodeNoComments/index.tsx index 149a01f6..3ae20562 100644 --- a/src/components/node/NodeNoComments/index.tsx +++ b/src/components/node/NodeNoComments/index.tsx @@ -1,10 +1,13 @@ import React, { FC, useMemo } from 'react'; -import styles from './styles.module.scss'; -import { Group } from '~/components/containers/Group'; + import classNames from 'classnames'; + +import { Group } from '~/components/containers/Group'; import { ERRORS } from '~/constants/errors'; import { t } from '~/utils/trans'; +import styles from './styles.module.scss'; + interface IProps { is_loading?: boolean; count?: number; diff --git a/src/components/node/NodeRelated/index.tsx b/src/components/node/NodeRelated/index.tsx index 13d4f8b2..fc324707 100644 --- a/src/components/node/NodeRelated/index.tsx +++ b/src/components/node/NodeRelated/index.tsx @@ -1,9 +1,12 @@ import React, { FC, ReactElement } from 'react'; -import styles from './styles.module.scss'; -import { Group } from '~/components/containers/Group'; -import { INode } from '~/types'; -import { NodeRelatedItem } from '~/components/node/NodeRelatedItem'; + import { SubTitle } from '~/components/common/SubTitle'; +import { Group } from '~/components/containers/Group'; +import { NodeRelatedItem } from '~/components/node/NodeRelatedItem'; +import { INode } from '~/types'; + +import styles from './styles.module.scss'; + interface IProps { title: ReactElement | string; diff --git a/src/components/node/NodeRelated/placeholder.tsx b/src/components/node/NodeRelated/placeholder.tsx index 4019e92c..59cab6d4 100644 --- a/src/components/node/NodeRelated/placeholder.tsx +++ b/src/components/node/NodeRelated/placeholder.tsx @@ -1,10 +1,14 @@ import React, { FC, memo } from 'react'; -import styles from './styles.module.scss'; -import cell_style from '~/components/node/NodeRelatedItem/styles.module.scss'; -import { Group } from '~/components/containers/Group'; -import { Placeholder } from '~/components/placeholders/Placeholder'; -import range from 'ramda/es/range'; + import classNames from 'classnames'; +import range from 'ramda/es/range'; + +import { Group } from '~/components/containers/Group'; +import cell_style from '~/components/node/NodeRelatedItem/styles.module.scss'; +import { Placeholder } from '~/components/placeholders/Placeholder'; + +import styles from './styles.module.scss'; + interface IProps {} diff --git a/src/components/node/NodeRelatedBlock/index.tsx b/src/components/node/NodeRelatedBlock/index.tsx index ba7e0dfc..42a239df 100644 --- a/src/components/node/NodeRelatedBlock/index.tsx +++ b/src/components/node/NodeRelatedBlock/index.tsx @@ -1,10 +1,11 @@ import React, { FC } from 'react'; -import { NodeRelatedPlaceholder } from '~/components/node/NodeRelated/placeholder'; + +import { Anchor } from '~/components/common/Anchor'; import { NodeRelated } from '~/components/node/NodeRelated'; +import { NodeRelatedPlaceholder } from '~/components/node/NodeRelated/placeholder'; import { URLS } from '~/constants/urls'; import { INode } from '~/types'; import { INodeRelated } from '~/types/node'; -import { Anchor } from '~/components/common/Anchor'; interface IProps { isLoading: boolean; diff --git a/src/components/node/NodeRelatedItem/index.tsx b/src/components/node/NodeRelatedItem/index.tsx index 3e6b3abd..f5326f29 100644 --- a/src/components/node/NodeRelatedItem/index.tsx +++ b/src/components/node/NodeRelatedItem/index.tsx @@ -1,13 +1,16 @@ import React, { FC, memo, useEffect, useMemo, useRef, useState } from 'react'; -import styles from './styles.module.scss'; + import classNames from 'classnames'; -import { INode } from '~/types'; -import { PRESETS } from '~/constants/urls'; -import { getURL, getURLFromString } from '~/utils/dom'; -import { useColorGradientFromString } from '~/hooks/color/useColorGradientFromString'; -import { Square } from '~/components/common/Square'; -import { useGotoNode } from '~/hooks/node/useGotoNode'; + import { ImageWithSSRLoad } from '~/components/common/ImageWithSSRLoad'; +import { Square } from '~/components/common/Square'; +import { PRESETS } from '~/constants/urls'; +import { useColorGradientFromString } from '~/hooks/color/useColorGradientFromString'; +import { useGotoNode } from '~/hooks/node/useGotoNode'; +import { INode } from '~/types'; +import { getURL, getURLFromString } from '~/utils/dom'; + +import styles from './styles.module.scss'; type IProps = { item: Partial; diff --git a/src/components/node/NodeTags/index.tsx b/src/components/node/NodeTags/index.tsx index f499d7aa..87dc6fde 100644 --- a/src/components/node/NodeTags/index.tsx +++ b/src/components/node/NodeTags/index.tsx @@ -1,6 +1,7 @@ import React, { FC, memo } from 'react'; -import { ITag } from '~/types'; + import { Tags } from '~/containers/tags/Tags'; +import { ITag } from '~/types'; interface IProps { is_deletable?: boolean; diff --git a/src/components/node/NodeTagsBlock/index.tsx b/src/components/node/NodeTagsBlock/index.tsx index 3cd17fec..bf504653 100644 --- a/src/components/node/NodeTagsBlock/index.tsx +++ b/src/components/node/NodeTagsBlock/index.tsx @@ -1,4 +1,5 @@ import React, { FC } from 'react'; + import { NodeTags } from '~/components/node/NodeTags'; import { useTagContext } from '~/utils/context/TagsContextProvider'; diff --git a/src/components/node/NodeTagsPlaceholder/index.tsx b/src/components/node/NodeTagsPlaceholder/index.tsx index bdcc2fa3..442fd18a 100644 --- a/src/components/node/NodeTagsPlaceholder/index.tsx +++ b/src/components/node/NodeTagsPlaceholder/index.tsx @@ -1,6 +1,7 @@ import React, { FC, memo } from 'react'; -import { ITag } from '~/types'; + import { Tags } from '~/containers/tags/Tags'; +import { ITag } from '~/types'; interface IProps { is_editable?: boolean; diff --git a/src/components/node/NodeTextBlock/index.tsx b/src/components/node/NodeTextBlock/index.tsx index 16ecb9c0..b7019e08 100644 --- a/src/components/node/NodeTextBlock/index.tsx +++ b/src/components/node/NodeTextBlock/index.tsx @@ -1,10 +1,14 @@ import React, { FC, useMemo } from 'react'; -import { path } from 'ramda'; -import { formatTextParagraphs } from '~/utils/dom'; -import { INodeComponentProps } from '~/constants/node'; + import classNames from 'classnames'; -import styles from './styles.module.scss'; +import { path } from 'ramda'; + +import { INodeComponentProps } from '~/constants/node'; import markdown from '~/styles/common/markdown.module.scss'; +import { formatTextParagraphs } from '~/utils/dom'; + +import styles from './styles.module.scss'; + interface IProps extends INodeComponentProps {} diff --git a/src/components/node/NodeTitle/index.tsx b/src/components/node/NodeTitle/index.tsx index 8fc1c26b..036d5046 100644 --- a/src/components/node/NodeTitle/index.tsx +++ b/src/components/node/NodeTitle/index.tsx @@ -1,10 +1,13 @@ import React, { memo, VFC } from 'react'; -import styles from './styles.module.scss'; -import { Icon } from '~/components/input/Icon'; + import classNames from 'classnames'; + +import { Icon } from '~/components/input/Icon'; import { Placeholder } from '~/components/placeholders/Placeholder'; import { getPrettyDate } from '~/utils/dom'; +import styles from './styles.module.scss'; + interface IProps { id?: number; title: string; diff --git a/src/components/node/NodeVideoBlock/index.tsx b/src/components/node/NodeVideoBlock/index.tsx index 7bcda3eb..07899f21 100644 --- a/src/components/node/NodeVideoBlock/index.tsx +++ b/src/components/node/NodeVideoBlock/index.tsx @@ -1,8 +1,11 @@ import React, { FC, useMemo } from 'react'; -import styles from './styles.module.scss'; + import { path } from 'ramda'; + import { INodeComponentProps } from '~/constants/node'; +import styles from './styles.module.scss'; + interface IProps extends INodeComponentProps {} const NodeVideoBlock: FC = ({ node }) => { diff --git a/src/components/notifications/NotificationBubble/index.tsx b/src/components/notifications/NotificationBubble/index.tsx index 091641e0..0ef0d796 100644 --- a/src/components/notifications/NotificationBubble/index.tsx +++ b/src/components/notifications/NotificationBubble/index.tsx @@ -1,9 +1,12 @@ import React, { createElement, FC } from 'react'; -import { INotification, NOTIFICATION_TYPES } from '~/types'; -import styles from './styles.module.scss'; -import { NotificationMessage } from '../NotificationMessage'; + import { Icon } from '~/components/input/Icon'; import { useRandomPhrase } from '~/constants/phrases'; +import { INotification, NOTIFICATION_TYPES } from '~/types'; + +import { NotificationMessage } from '../NotificationMessage'; + +import styles from './styles.module.scss'; interface IProps { notifications: INotification[]; diff --git a/src/components/notifications/NotificationMessage/index.tsx b/src/components/notifications/NotificationMessage/index.tsx index fa6523c1..760d9390 100644 --- a/src/components/notifications/NotificationMessage/index.tsx +++ b/src/components/notifications/NotificationMessage/index.tsx @@ -1,6 +1,7 @@ import React, { FC, useCallback } from 'react'; -import styles from '~/components/notifications/NotificationBubble/styles.module.scss'; + import { Icon } from '~/components/input/Icon'; +import styles from '~/components/notifications/NotificationBubble/styles.module.scss'; import { IMessageNotification, INotification } from '~/types'; interface IProps { diff --git a/src/components/placeholders/Paragraph/index.tsx b/src/components/placeholders/Paragraph/index.tsx index 7d9b411a..e3e47301 100644 --- a/src/components/placeholders/Paragraph/index.tsx +++ b/src/components/placeholders/Paragraph/index.tsx @@ -1,7 +1,9 @@ import React, { FC, useMemo } from 'react'; -import { Placeholder, PlaceholderProps } from '~/components/placeholders/Placeholder'; -import styles from './styles.module.scss'; + import { Group } from '~/components/containers/Group'; +import { Placeholder, PlaceholderProps } from '~/components/placeholders/Placeholder'; + +import styles from './styles.module.scss'; type Props = PlaceholderProps & { lines?: number; diff --git a/src/components/placeholders/Placeholder/index.tsx b/src/components/placeholders/Placeholder/index.tsx index b2893730..4daa51df 100644 --- a/src/components/placeholders/Placeholder/index.tsx +++ b/src/components/placeholders/Placeholder/index.tsx @@ -1,7 +1,9 @@ import React, { FC } from 'react'; -import styles from './styles.module.scss'; + import classNames from 'classnames'; +import styles from './styles.module.scss'; + export interface PlaceholderProps { width?: string; height?: number; diff --git a/src/components/profile/Message/index.tsx b/src/components/profile/Message/index.tsx index 0c5bdcce..c099ccfa 100644 --- a/src/components/profile/Message/index.tsx +++ b/src/components/profile/Message/index.tsx @@ -1,11 +1,14 @@ import React, { FC } from 'react'; -import { IMessage } from '~/types'; -import styles from './styles.module.scss'; -import { formatText, getPrettyDate, getURL } from '~/utils/dom'; -import { PRESETS } from '~/constants/urls'; + import classNames from 'classnames'; + import { Group } from '~/components/containers/Group'; +import { PRESETS } from '~/constants/urls'; import markdown from '~/styles/common/markdown.module.scss'; +import { IMessage } from '~/types'; +import { formatText, getPrettyDate, getURL } from '~/utils/dom'; + +import styles from './styles.module.scss'; interface IProps { message: IMessage; diff --git a/src/components/profile/ProfileAccountsError/index.tsx b/src/components/profile/ProfileAccountsError/index.tsx index ad65fe5b..3b4dced7 100644 --- a/src/components/profile/ProfileAccountsError/index.tsx +++ b/src/components/profile/ProfileAccountsError/index.tsx @@ -1,8 +1,10 @@ import React, { FC } from 'react'; -import styles from './styles.module.scss'; + import { Group } from '~/components/containers/Group'; -import { ERROR_LITERAL } from '~/constants/errors'; import { Button } from '~/components/input/Button'; +import { ERROR_LITERAL } from '~/constants/errors'; + +import styles from './styles.module.scss'; interface IProps { onClose: () => void; diff --git a/src/components/profile/ProfileAvatar/index.tsx b/src/components/profile/ProfileAvatar/index.tsx index f272c391..c2cf424d 100644 --- a/src/components/profile/ProfileAvatar/index.tsx +++ b/src/components/profile/ProfileAvatar/index.tsx @@ -1,9 +1,11 @@ import React, { ChangeEvent, FC, useCallback } from 'react'; -import styles from './styles.module.scss'; -import { getURL } from '~/utils/dom'; + +import { Button } from '~/components/input/Button'; import { PRESETS } from '~/constants/urls'; import { IFile } from '~/types'; -import { Button } from '~/components/input/Button'; +import { getURL } from '~/utils/dom'; + +import styles from './styles.module.scss'; export interface ProfileAvatarProps { size?: number; diff --git a/src/components/profile/ProfileDescription/index.tsx b/src/components/profile/ProfileDescription/index.tsx index fbf2ec28..9656dcf7 100644 --- a/src/components/profile/ProfileDescription/index.tsx +++ b/src/components/profile/ProfileDescription/index.tsx @@ -1,12 +1,17 @@ import React, { FC } from 'react'; -import { formatText } from '~/utils/dom'; -import styles from './styles.module.scss'; -import { ProfileLoader } from '~/containers/profile/ProfileLoader'; -import { Group } from '~/components/containers/Group'; -import markdown from '~/styles/common/markdown.module.scss'; + import classNames from 'classnames'; -import { useProfileContext } from '~/utils/providers/ProfileProvider'; + +import { Group } from '~/components/containers/Group'; +import { ProfileLoader } from '~/containers/profile/ProfileLoader'; import { useUser } from '~/hooks/auth/useUser'; +import markdown from '~/styles/common/markdown.module.scss'; +import { formatText } from '~/utils/dom'; +import { useProfileContext } from '~/utils/providers/ProfileProvider'; + +import styles from './styles.module.scss'; + + const ProfileDescription: FC = () => { const { profile, isLoading } = useProfileContext(); diff --git a/src/components/profile/ProfileSettings/index.tsx b/src/components/profile/ProfileSettings/index.tsx index 74ff3227..6146e757 100644 --- a/src/components/profile/ProfileSettings/index.tsx +++ b/src/components/profile/ProfileSettings/index.tsx @@ -1,17 +1,21 @@ import React, { FC } from 'react'; -import styles from './styles.module.scss'; -import { Textarea } from '~/components/input/Textarea'; -import { Button } from '~/components/input/Button'; -import { Group } from '~/components/containers/Group'; + +import classNames from 'classnames'; +import { has } from 'ramda'; + import { Filler } from '~/components/containers/Filler'; +import { Group } from '~/components/containers/Group'; +import { Button } from '~/components/input/Button'; import { InputText } from '~/components/input/InputText'; +import { Textarea } from '~/components/input/Textarea'; import { ERROR_LITERAL } from '~/constants/errors'; import { ProfileAccounts } from '~/containers/profile/ProfileAccounts'; -import classNames from 'classnames'; +import { usePatchUser } from '~/hooks/auth/usePatchUser'; import { useUser } from '~/hooks/auth/useUser'; import { useProfileForm } from '~/hooks/profile/useProfileForm'; -import { has } from 'ramda'; -import { usePatchUser } from '~/hooks/auth/usePatchUser'; + + +import styles from './styles.module.scss'; const getError = (error?: string) => (error && has(error, ERROR_LITERAL) ? error : undefined); diff --git a/src/components/profile/ProfileSidebarSettings/index.tsx b/src/components/profile/ProfileSidebarSettings/index.tsx index d5b0d5c7..ebe8c1e3 100644 --- a/src/components/profile/ProfileSidebarSettings/index.tsx +++ b/src/components/profile/ProfileSidebarSettings/index.tsx @@ -1,8 +1,10 @@ import React, { FC } from 'react'; -import { ProfileSettings } from '~/components/profile/ProfileSettings'; -import styles from './styles.module.scss'; + import { Filler } from '~/components/containers/Filler'; import { Button } from '~/components/input/Button'; +import { ProfileSettings } from '~/components/profile/ProfileSettings'; + +import styles from './styles.module.scss'; interface IProps {} diff --git a/src/components/sidebar/SidebarStack/index.tsx b/src/components/sidebar/SidebarStack/index.tsx index e989c1d4..b1026601 100644 --- a/src/components/sidebar/SidebarStack/index.tsx +++ b/src/components/sidebar/SidebarStack/index.tsx @@ -1,4 +1,5 @@ import React, { FC, useMemo } from 'react'; + import styles from './styles.module.scss'; interface SidebarStackProps {} diff --git a/src/components/sidebar/SidebarStackCard/index.tsx b/src/components/sidebar/SidebarStackCard/index.tsx index c692f957..a5417231 100644 --- a/src/components/sidebar/SidebarStackCard/index.tsx +++ b/src/components/sidebar/SidebarStackCard/index.tsx @@ -1,8 +1,10 @@ import React, { FC, useMemo } from 'react'; -import styles from './styles.module.scss'; + import { Filler } from '~/components/containers/Filler'; import { Button } from '~/components/input/Button'; +import styles from './styles.module.scss'; + interface SidebarStackCardProps { width?: number; headerFeature?: 'back' | 'close'; diff --git a/src/components/sidebar/TagSidebarList/index.tsx b/src/components/sidebar/TagSidebarList/index.tsx index ee270566..e66b36ef 100644 --- a/src/components/sidebar/TagSidebarList/index.tsx +++ b/src/components/sidebar/TagSidebarList/index.tsx @@ -1,7 +1,9 @@ import React, { FC, MouseEventHandler } from 'react'; -import { INode } from '~/types'; -import styles from './styles.module.scss'; + import { FlowRecentItem } from '~/components/flow/FlowRecentItem'; +import { INode } from '~/types'; + +import styles from './styles.module.scss'; interface IProps { nodes: INode[]; diff --git a/src/components/tags/Tag/index.tsx b/src/components/tags/Tag/index.tsx index 509a786e..34cbd68e 100644 --- a/src/components/tags/Tag/index.tsx +++ b/src/components/tags/Tag/index.tsx @@ -1,6 +1,7 @@ import React, { FC, FocusEventHandler, useCallback } from 'react'; -import { ITag } from '~/types'; + import { TagWrapper } from '~/components/tags/TagWrapper'; +import { ITag } from '~/types'; const getTagFeature = (tag: Partial) => { if (tag?.title?.substr(0, 1) === '/') return 'green'; diff --git a/src/components/tags/TagAutocomplete/index.tsx b/src/components/tags/TagAutocomplete/index.tsx index b16ac0c5..ff9fd5ed 100644 --- a/src/components/tags/TagAutocomplete/index.tsx +++ b/src/components/tags/TagAutocomplete/index.tsx @@ -1,10 +1,13 @@ import React, { useCallback, useEffect, useMemo, useRef, useState, VFC } from 'react'; -import styles from './styles.module.scss'; + import classNames from 'classnames'; -import { separateTagOptions } from '~/utils/tag'; -import { TagAutocompleteRow } from '~/components/tags/TagAutocompleteRow'; import { usePopper } from 'react-popper'; +import { TagAutocompleteRow } from '~/components/tags/TagAutocompleteRow'; +import { separateTagOptions } from '~/utils/tag'; + +import styles from './styles.module.scss'; + interface TagAutocompleteProps { exclude: string[]; input: HTMLInputElement; diff --git a/src/components/tags/TagAutocompleteRow/index.tsx b/src/components/tags/TagAutocompleteRow/index.tsx index 27e8b282..6e49cea0 100644 --- a/src/components/tags/TagAutocompleteRow/index.tsx +++ b/src/components/tags/TagAutocompleteRow/index.tsx @@ -1,8 +1,11 @@ import React, { FC, useCallback } from 'react'; -import styles from './styles.module.scss'; + import classNames from 'classnames'; + import { Icon } from '~/components/input/Icon'; +import styles from './styles.module.scss'; + interface IProps { selected: boolean; title: string; diff --git a/src/components/tags/TagWrapper/index.tsx b/src/components/tags/TagWrapper/index.tsx index 0b95527d..3181a577 100644 --- a/src/components/tags/TagWrapper/index.tsx +++ b/src/components/tags/TagWrapper/index.tsx @@ -1,8 +1,11 @@ import React, { FC, useCallback } from 'react'; + import classNames from 'classnames'; -import styles from './styles.module.scss'; + import { Icon } from '~/components/input/Icon'; +import styles from './styles.module.scss'; + interface IProps { feature?: string; size?: string; diff --git a/src/components/upload/AudioUpload/index.tsx b/src/components/upload/AudioUpload/index.tsx index 3454e218..32d2d52f 100644 --- a/src/components/upload/AudioUpload/index.tsx +++ b/src/components/upload/AudioUpload/index.tsx @@ -1,9 +1,12 @@ import React, { FC, useCallback } from 'react'; + import classNames from 'classnames'; -import styles from './styles.module.scss'; + import { ArcProgress } from '~/components/input/ArcProgress'; -import { IFile } from '~/types'; import { Icon } from '~/components/input/Icon'; +import { IFile } from '~/types'; + +import styles from './styles.module.scss'; interface IProps { id?: IFile['id']; diff --git a/src/components/upload/ImageUpload/index.tsx b/src/components/upload/ImageUpload/index.tsx index 02d19f3c..1095f60b 100644 --- a/src/components/upload/ImageUpload/index.tsx +++ b/src/components/upload/ImageUpload/index.tsx @@ -1,9 +1,12 @@ import React, { FC, useCallback } from 'react'; + import classNames from 'classnames'; -import styles from './styles.module.scss'; + import { ArcProgress } from '~/components/input/ArcProgress'; -import { IFile } from '~/types'; import { Icon } from '~/components/input/Icon'; +import { IFile } from '~/types'; + +import styles from './styles.module.scss'; interface IProps { id?: IFile['id']; diff --git a/src/components/upload/UploadDropzone/index.tsx b/src/components/upload/UploadDropzone/index.tsx index c72f71a9..859559d4 100644 --- a/src/components/upload/UploadDropzone/index.tsx +++ b/src/components/upload/UploadDropzone/index.tsx @@ -1,11 +1,15 @@ import React, { FC, useCallback } from 'react'; -import Dropzone from 'react-dropzone'; + import classnames from 'classnames'; import classNames from 'classnames'; -import styles from './styles.module.scss'; -import { DivProps } from '~/utils/types'; +import Dropzone from 'react-dropzone'; + + import { DropHereIcon } from '~/components/input/DropHereIcon'; import { useDragDetector } from '~/hooks/dom/useDragDetector'; +import { DivProps } from '~/utils/types'; + +import styles from './styles.module.scss'; interface IProps extends DivProps { onUpload: (files: File[]) => void; diff --git a/src/constants/comment.ts b/src/constants/comment.ts index ef4c80c2..f03fcbf0 100644 --- a/src/constants/comment.ts +++ b/src/constants/comment.ts @@ -1,5 +1,5 @@ -import { CommentTextBlock } from '~/components/comment/CommentTextBlock'; import { CommentEmbedBlock } from '~/components/comment/CommentEmbedBlock'; +import { CommentTextBlock } from '~/components/comment/CommentTextBlock'; export const COMMENT_BLOCK_TYPES = { TEXT: 'TEXT', diff --git a/src/constants/modal/index.ts b/src/constants/modal/index.ts index 949af46a..d0d7d2a1 100644 --- a/src/constants/modal/index.ts +++ b/src/constants/modal/index.ts @@ -1,15 +1,15 @@ -import { LoginDialog } from '~/containers/dialogs/LoginDialog'; -import { LoginSocialRegisterDialog } from '~/containers/dialogs/LoginSocialRegisterDialog'; -import { LoadingDialog } from '~/containers/dialogs/LoadingDialog'; -import { TestDialog } from '~/containers/dialogs/TestDialog'; -import { ProfileDialog } from '~/containers/dialogs/ProfileDialog'; -import { RestoreRequestDialog } from '~/containers/dialogs/RestoreRequestDialog'; -import { RestorePasswordDialog } from '~/containers/dialogs/RestorePasswordDialog'; -import { PhotoSwipe } from '~/containers/dialogs/PhotoSwipe'; import { EditorCreateDialog } from '~/containers/dialogs/EditorCreateDialog'; import { EditorEditDialog } from '~/containers/dialogs/EditorEditDialog'; -import { TagSidebar } from '~/containers/sidebars/TagSidebar'; +import { LoadingDialog } from '~/containers/dialogs/LoadingDialog'; +import { LoginDialog } from '~/containers/dialogs/LoginDialog'; +import { LoginSocialRegisterDialog } from '~/containers/dialogs/LoginSocialRegisterDialog'; +import { PhotoSwipe } from '~/containers/dialogs/PhotoSwipe'; +import { ProfileDialog } from '~/containers/dialogs/ProfileDialog'; +import { RestorePasswordDialog } from '~/containers/dialogs/RestorePasswordDialog'; +import { RestoreRequestDialog } from '~/containers/dialogs/RestoreRequestDialog'; +import { TestDialog } from '~/containers/dialogs/TestDialog'; import { ProfileSidebar } from '~/containers/sidebars/ProfileSidebar'; +import { TagSidebar } from '~/containers/sidebars/TagSidebar'; export enum Dialog { Login = 'Login', diff --git a/src/constants/node/index.ts b/src/constants/node/index.ts index b6075bdf..c9179b1f 100644 --- a/src/constants/node/index.ts +++ b/src/constants/node/index.ts @@ -1,27 +1,28 @@ import { FC } from 'react'; -import { IComment, INode, ValueOf } from '~/types'; -import { NodeTextBlock } from '~/components/node/NodeTextBlock'; -import { NodeAudioBlock } from '~/components/node/NodeAudioBlock'; -import { NodeVideoBlock } from '~/components/node/NodeVideoBlock'; -import { NodeAudioImageBlock } from '~/components/node/NodeAudioImageBlock'; + +import { AudioEditor } from '~/components/editors/AudioEditor'; +import { EditorAudioUploadButton } from '~/components/editors/EditorAudioUploadButton'; +import { EditorFiller } from '~/components/editors/EditorFiller'; +import { EditorImageUploadButton } from '~/components/editors/EditorImageUploadButton'; +import { EditorPublicSwitch } from '~/components/editors/EditorPublicSwitch'; +import { EditorUploadCoverButton } from '~/components/editors/EditorUploadCoverButton'; import { ImageEditor } from '~/components/editors/ImageEditor'; import { TextEditor } from '~/components/editors/TextEditor'; import { VideoEditor } from '~/components/editors/VideoEditor'; -import { AudioEditor } from '~/components/editors/AudioEditor'; -import { EditorImageUploadButton } from '~/components/editors/EditorImageUploadButton'; -import { EditorAudioUploadButton } from '~/components/editors/EditorAudioUploadButton'; -import { EditorUploadCoverButton } from '~/components/editors/EditorUploadCoverButton'; -import { IEditorComponentProps, NodeEditorProps } from '~/types/node'; -import { EditorFiller } from '~/components/editors/EditorFiller'; -import { EditorPublicSwitch } from '~/components/editors/EditorPublicSwitch'; -import { NodeImageSwiperBlock } from '~/components/node/NodeImageSwiperBlock'; -import { LabNodeTitle } from '~/components/lab/LabNodeTitle'; -import { LabText } from '~/components/lab/LabText'; -import { LabImage } from '~/components/lab/LabImage'; -import { LabPad } from '~/components/lab/LabPad'; -import { LabDescription } from '~/components/lab/LabDescription'; -import { LabVideo } from '~/components/lab/LabVideo'; import { LabAudio } from '~/components/lab/LabAudioBlock'; +import { LabDescription } from '~/components/lab/LabDescription'; +import { LabImage } from '~/components/lab/LabImage'; +import { LabNodeTitle } from '~/components/lab/LabNodeTitle'; +import { LabPad } from '~/components/lab/LabPad'; +import { LabText } from '~/components/lab/LabText'; +import { LabVideo } from '~/components/lab/LabVideo'; +import { NodeAudioBlock } from '~/components/node/NodeAudioBlock'; +import { NodeAudioImageBlock } from '~/components/node/NodeAudioImageBlock'; +import { NodeImageSwiperBlock } from '~/components/node/NodeImageSwiperBlock'; +import { NodeTextBlock } from '~/components/node/NodeTextBlock'; +import { NodeVideoBlock } from '~/components/node/NodeVideoBlock'; +import { IComment, INode, ValueOf } from '~/types'; +import { IEditorComponentProps, NodeEditorProps } from '~/types/node'; export const EMPTY_NODE: INode = { id: 0, diff --git a/src/containers/App.tsx b/src/containers/App.tsx index b736931d..3a1b4732 100644 --- a/src/containers/App.tsx +++ b/src/containers/App.tsx @@ -1,21 +1,24 @@ import React, { VFC } from 'react'; -import { MainLayout } from '~/containers/main/MainLayout'; -import { Sprites } from '~/sprites/Sprites'; -import { Modal } from '~/containers/dialogs/Modal'; + +import { observer } from 'mobx-react-lite'; +import { BrowserRouter } from 'react-router-dom'; + import { PageCoverProvider } from '~/components/containers/PageCoverProvider'; +import { Modal } from '~/containers/dialogs/Modal'; import { BottomContainer } from '~/containers/main/BottomContainer'; +import { MainLayout } from '~/containers/main/MainLayout'; import { MainRouter } from '~/containers/main/MainRouter'; import { DragDetectorProvider } from '~/hooks/dom/useDragDetector'; -import { UserContextProvider } from '~/utils/context/UserContextProvider'; -import { SWRConfigProvider } from '~/utils/providers/SWRConfigProvider'; -import { observer } from 'mobx-react-lite'; import { useGlobalLoader } from '~/hooks/dom/useGlobalLoader'; +import { Sprites } from '~/sprites/Sprites'; +import { UserContextProvider } from '~/utils/context/UserContextProvider'; +import { AudioPlayerProvider } from '~/utils/providers/AudioPlayerProvider'; +import { AuthProvider } from '~/utils/providers/AuthProvider'; +import { MetadataProvider } from '~/utils/providers/MetadataProvider'; +import { SWRConfigProvider } from '~/utils/providers/SWRConfigProvider'; import { SearchProvider } from '~/utils/providers/SearchProvider'; import { ToastProvider } from '~/utils/providers/ToastProvider'; -import { AudioPlayerProvider } from '~/utils/providers/AudioPlayerProvider'; -import { MetadataProvider } from '~/utils/providers/MetadataProvider'; -import { AuthProvider } from '~/utils/providers/AuthProvider'; -import { BrowserRouter } from 'react-router-dom'; + const App: VFC = observer(() => { useGlobalLoader(); diff --git a/src/containers/boris/BorisComments/index.tsx b/src/containers/boris/BorisComments/index.tsx index 378909f6..d21c11c0 100644 --- a/src/containers/boris/BorisComments/index.tsx +++ b/src/containers/boris/BorisComments/index.tsx @@ -1,14 +1,16 @@ import React, { FC } from 'react'; -import styles from './styles.module.scss'; + import { Group } from '~/components/containers/Group'; +import { Footer } from '~/components/main/Footer'; import { NodeCommentForm } from '~/components/node/NodeCommentForm'; import { NodeNoComments } from '~/components/node/NodeNoComments'; import { NodeComments } from '~/containers/node/NodeComments'; -import { Footer } from '~/components/main/Footer'; -import { CommentContextProvider, useCommentContext } from '~/utils/context/CommentContextProvider'; -import { useUserContext } from '~/utils/context/UserContextProvider'; -import { useNodeContext } from '~/utils/context/NodeContextProvider'; import { useAuth } from '~/hooks/auth/useAuth'; +import { CommentContextProvider, useCommentContext } from '~/utils/context/CommentContextProvider'; +import { useNodeContext } from '~/utils/context/NodeContextProvider'; +import { useUserContext } from '~/utils/context/UserContextProvider'; + +import styles from './styles.module.scss'; interface IProps {} diff --git a/src/containers/dialogs/EditorCreateDialog/index.tsx b/src/containers/dialogs/EditorCreateDialog/index.tsx index 31201709..ed1e916a 100644 --- a/src/containers/dialogs/EditorCreateDialog/index.tsx +++ b/src/containers/dialogs/EditorCreateDialog/index.tsx @@ -1,9 +1,11 @@ import React, { FC, useCallback, useMemo, useRef } from 'react'; + +import { values } from 'ramda'; + import { EMPTY_NODE, NODE_TYPES } from '~/constants/node'; import { EditorDialog } from '~/containers/dialogs/EditorDialog'; -import { values } from 'ramda'; -import { INode } from '~/types'; import { useCreateNode } from '~/hooks/node/useCreateNode'; +import { INode } from '~/types'; import { DialogComponentProps } from '~/types/modal'; export interface EditorCreateDialogProps extends DialogComponentProps { diff --git a/src/containers/dialogs/EditorDialog/index.tsx b/src/containers/dialogs/EditorDialog/index.tsx index 109de217..ace9a435 100644 --- a/src/containers/dialogs/EditorDialog/index.tsx +++ b/src/containers/dialogs/EditorDialog/index.tsx @@ -1,20 +1,24 @@ import React, { createElement, FC, useCallback, useMemo, useState } from 'react'; -import styles from './styles.module.scss'; -import { NODE_EDITORS } from '~/constants/node'; -import { BetterScrollDialog } from '~/components/dialogs/BetterScrollDialog'; -import { CoverBackdrop } from '~/components/containers/CoverBackdrop'; -import { prop } from 'ramda'; -import { useNodeFormFormik } from '~/hooks/node/useNodeFormFormik'; -import { EditorButtons } from '~/components/editors/EditorButtons'; -import { UploadSubject, UploadTarget } from '~/constants/uploads'; + import { FormikProvider } from 'formik'; -import { INode } from '~/types'; -import { useCloseOnEscape } from '~/hooks'; -import { EditorConfirmClose } from '~/components/editors/EditorConfirmClose'; -import { DialogComponentProps } from '~/types/modal'; -import { useUploader } from '~/hooks/data/useUploader'; -import { UploaderContextProvider } from '~/utils/context/UploaderContextProvider'; import { observer } from 'mobx-react-lite'; +import { prop } from 'ramda'; + +import { CoverBackdrop } from '~/components/containers/CoverBackdrop'; +import { BetterScrollDialog } from '~/components/dialogs/BetterScrollDialog'; +import { EditorButtons } from '~/components/editors/EditorButtons'; +import { EditorConfirmClose } from '~/components/editors/EditorConfirmClose'; +import { NODE_EDITORS } from '~/constants/node'; +import { UploadSubject, UploadTarget } from '~/constants/uploads'; +import { useCloseOnEscape } from '~/hooks'; +import { useUploader } from '~/hooks/data/useUploader'; +import { useNodeFormFormik } from '~/hooks/node/useNodeFormFormik'; +import { INode } from '~/types'; +import { DialogComponentProps } from '~/types/modal'; +import { UploaderContextProvider } from '~/utils/context/UploaderContextProvider'; + + +import styles from './styles.module.scss'; interface Props extends DialogComponentProps { node: INode; diff --git a/src/containers/dialogs/EditorEditDialog/index.tsx b/src/containers/dialogs/EditorEditDialog/index.tsx index a64e3366..01b7f589 100644 --- a/src/containers/dialogs/EditorEditDialog/index.tsx +++ b/src/containers/dialogs/EditorEditDialog/index.tsx @@ -1,14 +1,17 @@ import React, { FC, useCallback } from 'react'; -import { EditorDialog } from '~/containers/dialogs/EditorDialog'; + +import { observer } from 'mobx-react-lite'; + import { ModalWrapper } from '~/components/dialogs/ModalWrapper'; import { LoaderCircle } from '~/components/input/LoaderCircle'; -import styles from './styles.module.scss'; +import { EditorDialog } from '~/containers/dialogs/EditorDialog'; import { useLoadNode } from '~/hooks/node/useLoadNode'; import { useUpdateNode } from '~/hooks/node/useUpdateNode'; import { INode } from '~/types'; -import { observer } from 'mobx-react-lite'; import { DialogComponentProps } from '~/types/modal'; +import styles from './styles.module.scss'; + export interface EditorEditDialogProps extends DialogComponentProps { nodeId: number; } diff --git a/src/containers/dialogs/LoadingDialog/index.tsx b/src/containers/dialogs/LoadingDialog/index.tsx index e6b8936b..2d5e4c47 100644 --- a/src/containers/dialogs/LoadingDialog/index.tsx +++ b/src/containers/dialogs/LoadingDialog/index.tsx @@ -1,5 +1,7 @@ import React, { VFC } from 'react'; + import { LoaderCircle } from '~/components/input/LoaderCircle'; + import styles from './styles.module.scss'; const LoadingDialog: VFC = () => ( diff --git a/src/containers/dialogs/LoginDialog/index.tsx b/src/containers/dialogs/LoginDialog/index.tsx index 5f54a9bb..b120df34 100644 --- a/src/containers/dialogs/LoginDialog/index.tsx +++ b/src/containers/dialogs/LoginDialog/index.tsx @@ -1,20 +1,22 @@ import React, { FC, useCallback } from 'react'; -import { useCloseOnEscape } from '~/hooks'; + + +import { LoginDialogButtons } from '~/components/auth/login/LoginDialogButtons'; import { Group } from '~/components/containers/Group'; -import { InputText } from '~/components/input/InputText'; -import { Button } from '~/components/input/Button'; import { Padder } from '~/components/containers/Padder'; import { BetterScrollDialog } from '~/components/dialogs/BetterScrollDialog'; - -import styles from './styles.module.scss'; -import { LoginDialogButtons } from '~/components/auth/login/LoginDialogButtons'; import { DialogTitle } from '~/components/dialogs/DialogTitle'; -import { DialogComponentProps } from '~/types/modal'; -import { useShowModal } from '~/hooks/modal/useShowModal'; +import { Button } from '~/components/input/Button'; +import { InputText } from '~/components/input/InputText'; import { Dialog } from '~/constants/modal'; +import { useCloseOnEscape } from '~/hooks'; import { useAuth } from '~/hooks/auth/useAuth'; import { useLoginForm } from '~/hooks/auth/useLoginForm'; import { useOAuth } from '~/hooks/auth/useOAuth'; +import { useShowModal } from '~/hooks/modal/useShowModal'; +import { DialogComponentProps } from '~/types/modal'; + +import styles from './styles.module.scss'; type LoginDialogProps = DialogComponentProps & {}; diff --git a/src/containers/dialogs/LoginSocialRegisterDialog/index.tsx b/src/containers/dialogs/LoginSocialRegisterDialog/index.tsx index 8595502c..bedc5cc3 100644 --- a/src/containers/dialogs/LoginSocialRegisterDialog/index.tsx +++ b/src/containers/dialogs/LoginSocialRegisterDialog/index.tsx @@ -1,19 +1,21 @@ import React, { FC, useCallback, useState } from 'react'; -import { BetterScrollDialog } from '~/components/dialogs/BetterScrollDialog'; -import { Padder } from '~/components/containers/Padder'; -import { DialogTitle } from '~/components/dialogs/DialogTitle'; -import { Group } from '~/components/containers/Group'; -import { InputText } from '~/components/input/InputText'; -import styles from './styles.module.scss'; -import { useCloseOnEscape } from '~/hooks'; -import { LoginSocialRegisterButtons } from '~/components/auth/oauth/LoginSocialRegisterButtons'; -import { Toggle } from '~/components/input/Toggle'; -import { DialogComponentProps } from '~/types/modal'; -import { getRandomPhrase } from '~/constants/phrases'; -import { useSocialRegisterForm } from '~/hooks/auth/useSocialRegisterForm'; + import { apiLoginWithSocial } from '~/api/auth'; +import { LoginSocialRegisterButtons } from '~/components/auth/oauth/LoginSocialRegisterButtons'; +import { Group } from '~/components/containers/Group'; +import { Padder } from '~/components/containers/Padder'; +import { BetterScrollDialog } from '~/components/dialogs/BetterScrollDialog'; +import { DialogTitle } from '~/components/dialogs/DialogTitle'; +import { InputText } from '~/components/input/InputText'; +import { Toggle } from '~/components/input/Toggle'; +import { getRandomPhrase } from '~/constants/phrases'; +import { useCloseOnEscape } from '~/hooks'; +import { useSocialRegisterForm } from '~/hooks/auth/useSocialRegisterForm'; import { useModal } from '~/hooks/modal/useModal'; import { useAuthStore } from '~/store/auth/useAuthStore'; +import { DialogComponentProps } from '~/types/modal'; + +import styles from './styles.module.scss'; type LoginSocialRegisterDialogProps = DialogComponentProps & { token: string }; diff --git a/src/containers/dialogs/Modal/index.tsx b/src/containers/dialogs/Modal/index.tsx index ecbbc50a..393ea088 100644 --- a/src/containers/dialogs/Modal/index.tsx +++ b/src/containers/dialogs/Modal/index.tsx @@ -1,9 +1,11 @@ import React, { FC } from 'react'; + +import { observer } from 'mobx-react-lite'; +import { has } from 'ramda'; + import { ModalWrapper } from '~/components/dialogs/ModalWrapper'; import { DIALOG_CONTENT } from '~/constants/modal'; import { useModalStore } from '~/store/modal/useModalStore'; -import { has } from 'ramda'; -import { observer } from 'mobx-react-lite'; type IProps = {}; diff --git a/src/containers/dialogs/PhotoSwipe/index.tsx b/src/containers/dialogs/PhotoSwipe/index.tsx index 8a534e27..696a35ab 100644 --- a/src/containers/dialogs/PhotoSwipe/index.tsx +++ b/src/containers/dialogs/PhotoSwipe/index.tsx @@ -1,15 +1,17 @@ import React, { useEffect, useRef, VFC } from 'react'; -import PhotoSwipeJs from 'photoswipe/dist/photoswipe.js'; -import PhotoSwipeUI_Default from 'photoswipe/dist/photoswipe-ui-default.js'; -import { getURL } from '~/utils/dom'; -import { PRESETS } from '~/constants/urls'; -import styles from './styles.module.scss'; import classNames from 'classnames'; -import { useModal } from '~/hooks/modal/useModal'; import { observer } from 'mobx-react-lite'; +import PhotoSwipeUI_Default from 'photoswipe/dist/photoswipe-ui-default.js'; +import PhotoSwipeJs from 'photoswipe/dist/photoswipe.js'; + +import { PRESETS } from '~/constants/urls'; +import { useModal } from '~/hooks/modal/useModal'; import { IFile } from '~/types'; import { DialogComponentProps } from '~/types/modal'; +import { getURL } from '~/utils/dom'; + +import styles from './styles.module.scss'; export interface PhotoSwipeProps extends DialogComponentProps { items: IFile[]; diff --git a/src/containers/dialogs/ProfileDialog/index.tsx b/src/containers/dialogs/ProfileDialog/index.tsx index 6d716dc4..6f4f8171 100644 --- a/src/containers/dialogs/ProfileDialog/index.tsx +++ b/src/containers/dialogs/ProfileDialog/index.tsx @@ -1,17 +1,19 @@ import React, { FC } from 'react'; -import { BetterScrollDialog } from '../../../components/dialogs/BetterScrollDialog'; -import { ProfileInfo } from '~/containers/profile/ProfileInfo'; + import { CoverBackdrop } from '~/components/containers/CoverBackdrop'; import { Tabs } from '~/components/dialogs/Tabs'; import { ProfileDescription } from '~/components/profile/ProfileDescription'; -import { ProfileMessages } from '~/containers/profile/ProfileMessages'; import { ProfileSettings } from '~/components/profile/ProfileSettings'; import { ProfileAccounts } from '~/containers/profile/ProfileAccounts'; -import { DialogComponentProps } from '~/types/modal'; +import { ProfileInfo } from '~/containers/profile/ProfileInfo'; +import { ProfileMessages } from '~/containers/profile/ProfileMessages'; import { useUser } from '~/hooks/auth/useUser'; import { useGetProfile } from '~/hooks/profile/useGetProfile'; +import { DialogComponentProps } from '~/types/modal'; import { ProfileProvider } from '~/utils/providers/ProfileProvider'; +import { BetterScrollDialog } from '../../../components/dialogs/BetterScrollDialog'; + export interface ProfileDialogProps extends DialogComponentProps { username: string; } diff --git a/src/containers/dialogs/RestorePasswordDialog/index.tsx b/src/containers/dialogs/RestorePasswordDialog/index.tsx index 7db95d09..d1ba1c61 100644 --- a/src/containers/dialogs/RestorePasswordDialog/index.tsx +++ b/src/containers/dialogs/RestorePasswordDialog/index.tsx @@ -1,17 +1,19 @@ import React, { FC, useCallback, useMemo, useState } from 'react'; -import { BetterScrollDialog } from '../../../components/dialogs/BetterScrollDialog'; -import { Group } from '~/components/containers/Group'; -import { InputText } from '~/components/input/InputText'; -import { Button } from '~/components/input/Button'; -import styles from './styles.module.scss'; -import { useCloseOnEscape } from '~/hooks'; -import { DialogComponentProps } from '~/types/modal'; -import { useRestoreCode } from '~/hooks/auth/useRestoreCode'; +import { apiRestoreCode } from '~/api/auth'; import { RestoreInvalidCode } from '~/components/auth/restore/RestoreInvalidCode'; import { RestoreSuccess } from '~/components/auth/restore/RestoreSuccess'; +import { Group } from '~/components/containers/Group'; +import { Button } from '~/components/input/Button'; +import { InputText } from '~/components/input/InputText'; +import { useCloseOnEscape } from '~/hooks'; +import { useRestoreCode } from '~/hooks/auth/useRestoreCode'; import { useRestorePasswordForm } from '~/hooks/auth/useRestorePasswordForm'; -import { apiRestoreCode } from '~/api/auth'; +import { DialogComponentProps } from '~/types/modal'; + +import { BetterScrollDialog } from '../../../components/dialogs/BetterScrollDialog'; + +import styles from './styles.module.scss'; type RestorePasswordDialogProps = DialogComponentProps & { code: string; diff --git a/src/containers/dialogs/RestoreRequestDialog/index.tsx b/src/containers/dialogs/RestoreRequestDialog/index.tsx index 7dbd578a..c3b0853e 100644 --- a/src/containers/dialogs/RestoreRequestDialog/index.tsx +++ b/src/containers/dialogs/RestoreRequestDialog/index.tsx @@ -1,14 +1,17 @@ import React, { useCallback, useMemo, useState, VFC } from 'react'; -import { BetterScrollDialog } from '../../../components/dialogs/BetterScrollDialog'; -import { Group } from '~/components/containers/Group'; -import { InputText } from '~/components/input/InputText'; -import { Button } from '~/components/input/Button'; -import styles from './styles.module.scss'; -import { useCloseOnEscape } from '~/hooks'; -import { DialogComponentProps } from '~/types/modal'; -import { useRestoreRequestForm } from '~/hooks/auth/useRestoreRequestForm'; + import { apiRequestRestoreCode } from '~/api/auth'; import { RestoreSent } from '~/components/auth/restore/RestoreSent'; +import { Group } from '~/components/containers/Group'; +import { Button } from '~/components/input/Button'; +import { InputText } from '~/components/input/InputText'; +import { useCloseOnEscape } from '~/hooks'; +import { useRestoreRequestForm } from '~/hooks/auth/useRestoreRequestForm'; +import { DialogComponentProps } from '~/types/modal'; + +import { BetterScrollDialog } from '../../../components/dialogs/BetterScrollDialog'; + +import styles from './styles.module.scss'; interface RestoreRequestDialogProps extends DialogComponentProps {} diff --git a/src/containers/dialogs/TestDialog/index.tsx b/src/containers/dialogs/TestDialog/index.tsx index d4903792..db47df69 100644 --- a/src/containers/dialogs/TestDialog/index.tsx +++ b/src/containers/dialogs/TestDialog/index.tsx @@ -1,5 +1,7 @@ import React, { FC } from 'react'; + import { BetterScrollDialog } from '../../../components/dialogs/BetterScrollDialog'; + import styles from './styles.module.scss'; interface IProps {} diff --git a/src/containers/flow/FlowStamp/index.tsx b/src/containers/flow/FlowStamp/index.tsx index dda833c2..d0e28692 100644 --- a/src/containers/flow/FlowStamp/index.tsx +++ b/src/containers/flow/FlowStamp/index.tsx @@ -1,17 +1,19 @@ import React, { FC, FormEvent, useCallback, useMemo } from 'react'; -import { InputText } from '~/components/input/InputText'; -import { FlowRecent } from '~/components/flow/FlowRecent'; -import styles from '~/containers/flow/FlowStamp/styles.module.scss'; + +import classNames from 'classnames'; + +import { Superpower } from '~/components/boris/Superpower'; +import { Group } from '~/components/containers/Group'; +import { FlowRecent } from '~/components/flow/FlowRecent'; import { FlowSearchResults } from '~/components/flow/FlowSearchResults'; import { Icon } from '~/components/input/Icon'; -import { Group } from '~/components/containers/Group'; +import { InputText } from '~/components/input/InputText'; import { Toggle } from '~/components/input/Toggle'; -import classNames from 'classnames'; -import { Superpower } from '~/components/boris/Superpower'; import { experimentalFeatures } from '~/constants/features'; -import { useSearchContext } from '~/utils/providers/SearchProvider'; +import styles from '~/containers/flow/FlowStamp/styles.module.scss'; import { useFlowContext } from '~/utils/context/FlowContextProvider'; +import { useSearchContext } from '~/utils/providers/SearchProvider'; interface IProps { isFluid: boolean; diff --git a/src/containers/lab/LabGrid/index.tsx b/src/containers/lab/LabGrid/index.tsx index 7feeb26f..971d16f0 100644 --- a/src/containers/lab/LabGrid/index.tsx +++ b/src/containers/lab/LabGrid/index.tsx @@ -1,11 +1,14 @@ import React, { FC } from 'react'; + +import { values } from 'ramda'; import Masonry from 'react-masonry-css'; -import styles from './styles.module.scss'; + +import { InfiniteScroll } from '~/components/containers/InfiniteScroll'; import { LabNode } from '~/components/lab/LabNode'; import { EMPTY_NODE, NODE_TYPES } from '~/constants/node'; -import { values } from 'ramda'; import { useLabContext } from '~/utils/context/LabContextProvider'; -import { InfiniteScroll } from '~/components/containers/InfiniteScroll'; + +import styles from './styles.module.scss'; interface IProps {} diff --git a/src/containers/lab/LabStats/index.tsx b/src/containers/lab/LabStats/index.tsx index 43d4c7cf..87a3fb49 100644 --- a/src/containers/lab/LabStats/index.tsx +++ b/src/containers/lab/LabStats/index.tsx @@ -1,13 +1,15 @@ import React, { FC } from 'react'; -import styles from './styles.module.scss'; -import { LabBanner } from '~/components/lab/LabBanner'; -import { Group } from '~/components/containers/Group'; -import { LabTags } from '~/components/lab/LabTags'; -import { LabHeroes } from '~/components/lab/LabHeroes'; -import { FlowRecentItem } from '~/components/flow/FlowRecentItem'; + import { SubTitle } from '~/components/common/SubTitle'; +import { Group } from '~/components/containers/Group'; +import { FlowRecentItem } from '~/components/flow/FlowRecentItem'; +import { LabBanner } from '~/components/lab/LabBanner'; +import { LabHeroes } from '~/components/lab/LabHeroes'; +import { LabTags } from '~/components/lab/LabTags'; import { useLabContext } from '~/utils/context/LabContextProvider'; +import styles from './styles.module.scss'; + interface IProps {} const LabStats: FC = () => { diff --git a/src/containers/main/BottomContainer/index.tsx b/src/containers/main/BottomContainer/index.tsx index 66094534..ada9724f 100644 --- a/src/containers/main/BottomContainer/index.tsx +++ b/src/containers/main/BottomContainer/index.tsx @@ -1,7 +1,9 @@ import React, { FC } from 'react'; -import styles from './styles.module.scss'; + import { PlayerView } from '~/containers/player/PlayerView'; +import styles from './styles.module.scss'; + type IProps = {}; const BottomContainer: FC = () => ( diff --git a/src/containers/main/Container/index.tsx b/src/containers/main/Container/index.tsx index d5045fd1..6a4b4bfd 100644 --- a/src/containers/main/Container/index.tsx +++ b/src/containers/main/Container/index.tsx @@ -1,7 +1,9 @@ import React, { FC } from 'react'; -import styles from './styles.module.scss'; + import classNames from 'classnames'; +import styles from './styles.module.scss'; + interface IProps { className?: string; } diff --git a/src/containers/main/Header/index.tsx b/src/containers/main/Header/index.tsx index 7a7d91ad..155f4402 100644 --- a/src/containers/main/Header/index.tsx +++ b/src/containers/main/Header/index.tsx @@ -1,24 +1,25 @@ import React, { FC, useCallback, useMemo } from 'react'; -import { Logo } from '~/components/main/Logo'; -import { Filler } from '~/components/containers/Filler'; -import { UserButton } from '~/components/main/UserButton'; -import { URLS } from '~/constants/urls'; import classNames from 'classnames'; - -import styles from './styles.module.scss'; import isBefore from 'date-fns/isBefore'; -import { Authorized } from '~/components/containers/Authorized'; -import { Button } from '~/components/input/Button'; import { observer } from 'mobx-react-lite'; + +import { Anchor } from '~/components/common/Anchor'; +import { Authorized } from '~/components/containers/Authorized'; +import { Filler } from '~/components/containers/Filler'; +import { Button } from '~/components/input/Button'; +import { Logo } from '~/components/main/Logo'; +import { UserButton } from '~/components/main/UserButton'; import { Dialog } from '~/constants/modal'; -import { useGetLabStats } from '~/hooks/lab/useGetLabStats'; +import { URLS } from '~/constants/urls'; import { useAuth } from '~/hooks/auth/useAuth'; -import { useModal } from '~/hooks/modal/useModal'; import { useScrollTop } from '~/hooks/dom/useScrollTop'; import { useFlow } from '~/hooks/flow/useFlow'; +import { useGetLabStats } from '~/hooks/lab/useGetLabStats'; +import { useModal } from '~/hooks/modal/useModal'; import { useUpdates } from '~/hooks/updates/useUpdates'; -import { Anchor } from '~/components/common/Anchor'; + +import styles from './styles.module.scss'; type HeaderProps = {}; diff --git a/src/containers/main/MainLayout/index.tsx b/src/containers/main/MainLayout/index.tsx index 23b92d75..eb2f1f6b 100644 --- a/src/containers/main/MainLayout/index.tsx +++ b/src/containers/main/MainLayout/index.tsx @@ -1,8 +1,10 @@ import * as React from 'react'; -import styles from './styles.module.scss'; + import { Header } from '~/containers/main/Header'; import { SidebarRouter } from '~/containers/main/SidebarRouter'; +import styles from './styles.module.scss'; + export const MainLayout = ({ children }) => (
diff --git a/src/containers/main/MainRouter/index.tsx b/src/containers/main/MainRouter/index.tsx index ef9032db..a8404efc 100644 --- a/src/containers/main/MainRouter/index.tsx +++ b/src/containers/main/MainRouter/index.tsx @@ -1,13 +1,15 @@ import React, { FC } from 'react'; + +import { Redirect, Route, Switch, useLocation } from 'react-router'; + import { URLS } from '~/constants/urls'; import { ErrorNotFound } from '~/containers/pages/ErrorNotFound'; -import { Redirect, Route, Switch, useLocation } from 'react-router'; +import { useAuth } from '~/hooks/auth/useAuth'; import { ProfileLayout } from '~/layouts/ProfileLayout'; import FlowPage from '~/pages'; import BorisPage from '~/pages/boris'; -import NodePage from '~/pages/node/[id]'; import LabPage from '~/pages/lab'; -import { useAuth } from '~/hooks/auth/useAuth'; +import NodePage from '~/pages/node/[id]'; interface IProps {} diff --git a/src/containers/main/SidebarRouter/index.tsx b/src/containers/main/SidebarRouter/index.tsx index 7fea5136..bbabe11a 100644 --- a/src/containers/main/SidebarRouter/index.tsx +++ b/src/containers/main/SidebarRouter/index.tsx @@ -1,6 +1,7 @@ import React, { FC } from 'react'; -import { Authorized } from '~/components/containers/Authorized'; + import { SubmitBar } from '~/components/bars/SubmitBar'; +import { Authorized } from '~/components/containers/Authorized'; interface IProps { prefix?: string; diff --git a/src/containers/node/NodeBottomBlock/index.tsx b/src/containers/node/NodeBottomBlock/index.tsx index 567cf688..cb646da7 100644 --- a/src/containers/node/NodeBottomBlock/index.tsx +++ b/src/containers/node/NodeBottomBlock/index.tsx @@ -1,21 +1,23 @@ import React, { FC } from 'react'; -import { NodeDeletedBadge } from '~/components/node/NodeDeletedBadge'; + import { Group } from '~/components/containers/Group'; import { Padder } from '~/components/containers/Padder'; -import { NodeCommentForm } from '~/components/node/NodeCommentForm'; -import { NodeRelatedBlock } from '~/components/node/NodeRelatedBlock'; -import { useNodeBlocks } from '~/hooks/node/useNodeBlocks'; -import { NodeTagsBlock } from '~/components/node/NodeTagsBlock'; -import styles from './styles.module.scss'; -import { NodeAuthorBlock } from '~/components/node/NodeAuthorBlock'; -import { useNodeContext } from '~/utils/context/NodeContextProvider'; -import { useCommentContext } from '~/utils/context/CommentContextProvider'; -import { NodeNoComments } from '~/components/node/NodeNoComments'; -import { NodeComments } from '~/containers/node/NodeComments'; -import { useUserContext } from '~/utils/context/UserContextProvider'; -import { useNodeRelatedContext } from '~/utils/context/NodeRelatedContextProvider'; -import { useAuthProvider } from '~/utils/providers/AuthProvider'; import { Sticky } from '~/components/containers/Sticky'; +import { NodeAuthorBlock } from '~/components/node/NodeAuthorBlock'; +import { NodeCommentForm } from '~/components/node/NodeCommentForm'; +import { NodeDeletedBadge } from '~/components/node/NodeDeletedBadge'; +import { NodeNoComments } from '~/components/node/NodeNoComments'; +import { NodeRelatedBlock } from '~/components/node/NodeRelatedBlock'; +import { NodeTagsBlock } from '~/components/node/NodeTagsBlock'; +import { NodeComments } from '~/containers/node/NodeComments'; +import { useNodeBlocks } from '~/hooks/node/useNodeBlocks'; +import { useCommentContext } from '~/utils/context/CommentContextProvider'; +import { useNodeContext } from '~/utils/context/NodeContextProvider'; +import { useNodeRelatedContext } from '~/utils/context/NodeRelatedContextProvider'; +import { useUserContext } from '~/utils/context/UserContextProvider'; +import { useAuthProvider } from '~/utils/providers/AuthProvider'; + +import styles from './styles.module.scss'; interface IProps { commentsOrder: 'ASC' | 'DESC'; diff --git a/src/containers/node/NodeComments/index.tsx b/src/containers/node/NodeComments/index.tsx index cf550136..80844222 100644 --- a/src/containers/node/NodeComments/index.tsx +++ b/src/containers/node/NodeComments/index.tsx @@ -1,13 +1,14 @@ import React, { FC, memo, useMemo } from 'react'; -import styles from './styles.module.scss'; -import { ICommentGroup } from '~/types'; -import { canEditComment } from '~/utils/node'; -import { useGrouppedComments } from '~/hooks/node/useGrouppedComments'; -import { useCommentContext } from '~/utils/context/CommentContextProvider'; import { Comment } from '~/components/comment/Comment'; -import { useUserContext } from '~/utils/context/UserContextProvider'; +import { useGrouppedComments } from '~/hooks/node/useGrouppedComments'; +import { ICommentGroup } from '~/types'; +import { useCommentContext } from '~/utils/context/CommentContextProvider'; import { useNodeContext } from '~/utils/context/NodeContextProvider'; +import { useUserContext } from '~/utils/context/UserContextProvider'; +import { canEditComment } from '~/utils/node'; + +import styles from './styles.module.scss'; interface IProps { order: 'ASC' | 'DESC'; diff --git a/src/containers/pages/ErrorNotFound/index.tsx b/src/containers/pages/ErrorNotFound/index.tsx index d30dd504..9eff2e22 100644 --- a/src/containers/pages/ErrorNotFound/index.tsx +++ b/src/containers/pages/ErrorNotFound/index.tsx @@ -1,8 +1,11 @@ import React, { VFC } from 'react'; -import styles from './styles.module.scss'; + import { createPortal } from 'react-dom'; + import { GodRays } from '~/components/main/GodRays'; +import styles from './styles.module.scss'; + const ErrorNotFound: VFC = () => createPortal(
diff --git a/src/containers/player/PlayerView/index.tsx b/src/containers/player/PlayerView/index.tsx index aa2a0af4..b869d1c3 100644 --- a/src/containers/player/PlayerView/index.tsx +++ b/src/containers/player/PlayerView/index.tsx @@ -1,4 +1,5 @@ import React, { VFC } from 'react'; + import { PlayerBar } from '~/components/bars/PlayerBar'; import { useAudioPlayer } from '~/utils/providers/AudioPlayerProvider'; diff --git a/src/containers/profile/ProfileAccounts/index.tsx b/src/containers/profile/ProfileAccounts/index.tsx index c224c158..994dc27d 100644 --- a/src/containers/profile/ProfileAccounts/index.tsx +++ b/src/containers/profile/ProfileAccounts/index.tsx @@ -1,11 +1,13 @@ import React, { FC, Fragment } from 'react'; -import styles from './styles.module.scss'; -import { Placeholder } from '~/components/placeholders/Placeholder'; -import { Icon } from '~/components/input/Icon'; -import { Button } from '~/components/input/Button'; + import { Group } from '~/components/containers/Group'; -import { useOAuth } from '~/hooks/auth/useOAuth'; +import { Button } from '~/components/input/Button'; +import { Icon } from '~/components/input/Icon'; +import { Placeholder } from '~/components/placeholders/Placeholder'; import { SOCIAL_ICONS } from '~/constants/auth/socials'; +import { useOAuth } from '~/hooks/auth/useOAuth'; + +import styles from './styles.module.scss'; type ProfileAccountsProps = {}; diff --git a/src/containers/profile/ProfileInfo/index.tsx b/src/containers/profile/ProfileInfo/index.tsx index 8046eb09..088d5fc1 100644 --- a/src/containers/profile/ProfileInfo/index.tsx +++ b/src/containers/profile/ProfileInfo/index.tsx @@ -1,13 +1,16 @@ import React, { FC } from 'react'; -import styles from './styles.module.scss'; + import { Group } from '~/components/containers/Group'; import { Placeholder } from '~/components/placeholders/Placeholder'; -import { getPrettyDate } from '~/utils/dom'; -import { ProfileTabs } from '../ProfileTabs'; import { ProfileAvatar } from '~/components/profile/ProfileAvatar'; -import { useProfileContext } from '~/utils/providers/ProfileProvider'; import { usePatchUser } from '~/hooks/auth/usePatchUser'; import { useUser } from '~/hooks/auth/useUser'; +import { getPrettyDate } from '~/utils/dom'; +import { useProfileContext } from '~/utils/providers/ProfileProvider'; + +import { ProfileTabs } from '../ProfileTabs'; + +import styles from './styles.module.scss'; interface IProps { isLoading?: boolean; diff --git a/src/containers/profile/ProfileLoader/index.tsx b/src/containers/profile/ProfileLoader/index.tsx index 4b586fb4..af2c0563 100644 --- a/src/containers/profile/ProfileLoader/index.tsx +++ b/src/containers/profile/ProfileLoader/index.tsx @@ -1,7 +1,9 @@ import React, { FC } from 'react'; -import styles from './styles.module.scss'; + import { LoaderCircle } from '~/components/input/LoaderCircle'; +import styles from './styles.module.scss'; + interface IProps {} const ProfileLoader: FC = () => { diff --git a/src/containers/profile/ProfileMessages/index.tsx b/src/containers/profile/ProfileMessages/index.tsx index b04b1adc..f81702d0 100644 --- a/src/containers/profile/ProfileMessages/index.tsx +++ b/src/containers/profile/ProfileMessages/index.tsx @@ -1,11 +1,14 @@ import React, { FC } from 'react'; -import styles from './styles.module.scss'; -import { Message } from '~/components/profile/Message'; + +import { Anchor } from '~/components/common/Anchor'; import { NodeNoComments } from '~/components/node/NodeNoComments'; -import { useMessages } from '~/hooks/messages/useMessages'; +import { Message } from '~/components/profile/Message'; import { useUser } from '~/hooks/auth/useUser'; +import { useMessages } from '~/hooks/messages/useMessages'; import { useProfileContext } from '~/utils/providers/ProfileProvider'; +import styles from './styles.module.scss'; + const ProfileMessages: FC = () => { const { profile, isLoading: isLoadingProfile } = useProfileContext(); const { user } = useUser(); @@ -29,7 +32,7 @@ const ProfileMessages: FC = () => {

- Давай обсудим это в Борисе, если это так важно. + Давай обсудим это в Борисе, если это так важно.

diff --git a/src/containers/profile/ProfilePageLeft/index.tsx b/src/containers/profile/ProfilePageLeft/index.tsx index 3f6eb9d3..98ce55af 100644 --- a/src/containers/profile/ProfilePageLeft/index.tsx +++ b/src/containers/profile/ProfilePageLeft/index.tsx @@ -1,12 +1,14 @@ import React, { FC } from 'react'; -import { IUser } from '~/types/auth'; -import { formatText } from '~/utils/dom'; -import { PRESETS } from '~/constants/urls'; -import { Placeholder } from '~/components/placeholders/Placeholder'; -import styles from './styles.module.scss'; import { Avatar } from '~/components/common/Avatar'; import { Markdown } from '~/components/containers/Markdown'; +import { Placeholder } from '~/components/placeholders/Placeholder'; +import { PRESETS } from '~/constants/urls'; +import { IUser } from '~/types/auth'; +import { formatText } from '~/utils/dom'; + +import styles from './styles.module.scss'; + interface IProps { profile: IUser; diff --git a/src/containers/profile/ProfilePageStats/index.tsx b/src/containers/profile/ProfilePageStats/index.tsx index bc52568f..633b4660 100644 --- a/src/containers/profile/ProfilePageStats/index.tsx +++ b/src/containers/profile/ProfilePageStats/index.tsx @@ -1,8 +1,10 @@ import React, { FC } from 'react'; -import styles from './styles.module.scss'; + import { StatsRow } from '~/components/common/StatsRow'; import { SubTitle } from '~/components/common/SubTitle'; +import styles from './styles.module.scss'; + interface Props {} const ProfilePageStats: FC = () => ( diff --git a/src/containers/profile/ProfileSidebarHead/index.tsx b/src/containers/profile/ProfileSidebarHead/index.tsx index 64e23194..c770d125 100644 --- a/src/containers/profile/ProfileSidebarHead/index.tsx +++ b/src/containers/profile/ProfileSidebarHead/index.tsx @@ -1,6 +1,7 @@ import React, { VFC } from 'react'; -import { Group } from '~/components/containers/Group'; + import { Filler } from '~/components/containers/Filler'; +import { Group } from '~/components/containers/Group'; import { ProfileAvatar } from '~/components/profile/ProfileAvatar'; import { usePatchUser } from '~/hooks/auth/usePatchUser'; import { useUser } from '~/hooks/auth/useUser'; diff --git a/src/containers/profile/ProfileSidebarMenu/index.tsx b/src/containers/profile/ProfileSidebarMenu/index.tsx index aa4c87d8..09051d6f 100644 --- a/src/containers/profile/ProfileSidebarMenu/index.tsx +++ b/src/containers/profile/ProfileSidebarMenu/index.tsx @@ -1,14 +1,17 @@ import React, { VFC } from 'react'; -import styles from './styles.module.scss'; -import { ProfileSidebarHead } from '~/containers/profile/ProfileSidebarHead'; -import { Filler } from '~/components/containers/Filler'; + import classNames from 'classnames'; -import markdown from '~/styles/common/markdown.module.scss'; -import { Group } from '~/components/containers/Group'; -import { Grid } from '~/components/containers/Grid'; -import { Card } from '~/components/containers/Card'; + import { Square } from '~/components/common/Square'; +import { Card } from '~/components/containers/Card'; +import { Filler } from '~/components/containers/Filler'; +import { Grid } from '~/components/containers/Grid'; +import { Group } from '~/components/containers/Group'; import { Button } from '~/components/input/Button'; +import { ProfileSidebarHead } from '~/containers/profile/ProfileSidebarHead'; +import markdown from '~/styles/common/markdown.module.scss'; + +import styles from './styles.module.scss'; interface ProfileSidebarMenuProps { onClose: () => void; diff --git a/src/containers/profile/ProfileTabs/index.tsx b/src/containers/profile/ProfileTabs/index.tsx index 37a199ec..5fd3f47e 100644 --- a/src/containers/profile/ProfileTabs/index.tsx +++ b/src/containers/profile/ProfileTabs/index.tsx @@ -1,7 +1,9 @@ import React, { FC } from 'react'; -import styles from './styles.module.scss'; + import { Tabs } from '~/components/dialogs/Tabs'; +import styles from './styles.module.scss'; + interface IProps { is_own: boolean; } diff --git a/src/containers/sidebars/ProfileSidebar/index.tsx b/src/containers/sidebars/ProfileSidebar/index.tsx index cfcfb11a..3ba0ebdd 100644 --- a/src/containers/sidebars/ProfileSidebar/index.tsx +++ b/src/containers/sidebars/ProfileSidebar/index.tsx @@ -1,10 +1,11 @@ import React, { VFC } from 'react'; + +import { ProfileSidebarSettings } from '~/components/profile/ProfileSidebarSettings'; +import { SidebarStack } from '~/components/sidebar/SidebarStack'; +import { SidebarStackCard } from '~/components/sidebar/SidebarStackCard'; +import { ProfileSidebarMenu } from '~/containers/profile/ProfileSidebarMenu'; import { SidebarWrapper } from '~/containers/sidebars/SidebarWrapper'; import { DialogComponentProps } from '~/types/modal'; -import { ProfileSidebarMenu } from '~/containers/profile/ProfileSidebarMenu'; -import { SidebarStack } from '~/components/sidebar/SidebarStack'; -import { ProfileSidebarSettings } from '~/components/profile/ProfileSidebarSettings'; -import { SidebarStackCard } from '~/components/sidebar/SidebarStackCard'; interface ProfileSidebarProps extends DialogComponentProps {} diff --git a/src/containers/sidebars/SidebarWrapper/index.tsx b/src/containers/sidebars/SidebarWrapper/index.tsx index 0fe7dc3b..d2b0aedf 100644 --- a/src/containers/sidebars/SidebarWrapper/index.tsx +++ b/src/containers/sidebars/SidebarWrapper/index.tsx @@ -1,8 +1,11 @@ import React, { FC, useEffect, useRef } from 'react'; -import styles from './styles.module.scss'; + import { clearAllBodyScrollLocks, disableBodyScroll } from 'body-scroll-lock'; + import { useCloseOnEscape } from '~/hooks'; +import styles from './styles.module.scss'; + interface IProps { onClose?: () => void; } diff --git a/src/containers/sidebars/TagSidebar/index.tsx b/src/containers/sidebars/TagSidebar/index.tsx index 0340341c..01a98be4 100644 --- a/src/containers/sidebars/TagSidebar/index.tsx +++ b/src/containers/sidebars/TagSidebar/index.tsx @@ -1,14 +1,16 @@ import React, { useMemo, VFC } from 'react'; -import { SidebarWrapper } from '~/containers/sidebars/SidebarWrapper'; -import styles from './styles.module.scss'; -import { Icon } from '~/components/input/Icon'; -import { TagSidebarList } from '~/components/sidebar/TagSidebarList'; -import { LoaderCircle } from '~/components/input/LoaderCircle'; + import { InfiniteScroll } from '~/components/containers/InfiniteScroll'; +import { Icon } from '~/components/input/Icon'; +import { LoaderCircle } from '~/components/input/LoaderCircle'; +import { SidebarStack } from '~/components/sidebar/SidebarStack'; +import { TagSidebarList } from '~/components/sidebar/TagSidebarList'; import { Tag } from '~/components/tags/Tag'; +import { SidebarWrapper } from '~/containers/sidebars/SidebarWrapper'; import { useTagNodes } from '~/hooks/tag/useTagNodes'; import { DialogComponentProps } from '~/types/modal'; -import { SidebarStack } from '~/components/sidebar/SidebarStack'; + +import styles from './styles.module.scss'; interface TagSidebarProps extends DialogComponentProps { tag: string; diff --git a/src/containers/tags/TagInput/index.tsx b/src/containers/tags/TagInput/index.tsx index 03dfd502..30e20715 100644 --- a/src/containers/tags/TagInput/index.tsx +++ b/src/containers/tags/TagInput/index.tsx @@ -1,7 +1,9 @@ import React, { ChangeEvent, FC, useCallback, useEffect, useMemo, useRef, useState } from 'react'; + import { TagAutocomplete } from '~/components/tags/TagAutocomplete'; import { TagWrapper } from '~/components/tags/TagWrapper'; import { useTagAutocomplete } from '~/hooks/tag/useTagAutocomplete'; + import styles from './styles.module.scss'; const placeholder = 'Добавить'; diff --git a/src/containers/tags/Tags/index.tsx b/src/containers/tags/Tags/index.tsx index ead11437..66ad2817 100644 --- a/src/containers/tags/Tags/index.tsx +++ b/src/containers/tags/Tags/index.tsx @@ -1,9 +1,11 @@ import React, { FC, HTMLAttributes, useCallback, useMemo, useState } from 'react'; -import { TagField } from '~/components/containers/TagField'; -import { ITag } from '~/types'; + import { uniq } from 'ramda'; + +import { TagField } from '~/components/containers/TagField'; import { Tag } from '~/components/tags/Tag'; import { TagInput } from '~/containers/tags/TagInput'; +import { ITag } from '~/types'; import { separateTags } from '~/utils/tag'; type IProps = HTMLAttributes & { diff --git a/src/hooks/auth/useAuth.ts b/src/hooks/auth/useAuth.ts index 1527bf89..c15a2ab7 100644 --- a/src/hooks/auth/useAuth.ts +++ b/src/hooks/auth/useAuth.ts @@ -1,6 +1,6 @@ +import { useLoginLogoutRestore } from '~/hooks/auth/useLoginLogoutRestore'; import { useUser } from '~/hooks/auth/useUser'; import { useAuthStore } from '~/store/auth/useAuthStore'; -import { useLoginLogoutRestore } from '~/hooks/auth/useLoginLogoutRestore'; export const useAuth = () => { const { user } = useUser(); diff --git a/src/hooks/auth/useLastSeenBoris.ts b/src/hooks/auth/useLastSeenBoris.ts index 06a04f41..c8e08bbe 100644 --- a/src/hooks/auth/useLastSeenBoris.ts +++ b/src/hooks/auth/useLastSeenBoris.ts @@ -1,4 +1,5 @@ import { useCallback } from 'react'; + import { useUser } from '~/hooks/auth/useUser'; export const useLastSeenBoris = () => { diff --git a/src/hooks/auth/useLoginForm.ts b/src/hooks/auth/useLoginForm.ts index cf4df701..eba42bad 100644 --- a/src/hooks/auth/useLoginForm.ts +++ b/src/hooks/auth/useLoginForm.ts @@ -1,10 +1,12 @@ -import { Asserts, object, string } from 'yup'; -import { ERRORS } from '~/constants/errors'; import { useCallback } from 'react'; + import { FormikConfig, useFormik } from 'formik'; +import { Asserts, object, string } from 'yup'; + +import { ERRORS } from '~/constants/errors'; import { IUser } from '~/types/auth'; -import { showErrorToast } from '~/utils/errors/showToast'; import { getValidationErrors } from '~/utils/errors/getValidationErrors'; +import { showErrorToast } from '~/utils/errors/showToast'; const validationSchema = object({ username: string().required(ERRORS.REQUIRED), diff --git a/src/hooks/auth/useLoginLogoutRestore.ts b/src/hooks/auth/useLoginLogoutRestore.ts index 67d03364..4e438f16 100644 --- a/src/hooks/auth/useLoginLogoutRestore.ts +++ b/src/hooks/auth/useLoginLogoutRestore.ts @@ -1,7 +1,8 @@ -import { useAuthStore } from '~/store/auth/useAuthStore'; import { useCallback } from 'react'; + import { apiUserLogin } from '~/api/auth'; import { getRandomPhrase } from '~/constants/phrases'; +import { useAuthStore } from '~/store/auth/useAuthStore'; import { showToastInfo } from '~/utils/toast'; export const useLoginLogoutRestore = () => { diff --git a/src/hooks/auth/useMessageEventReactions.ts b/src/hooks/auth/useMessageEventReactions.ts index 2e74c3e4..94ae2efe 100644 --- a/src/hooks/auth/useMessageEventReactions.ts +++ b/src/hooks/auth/useMessageEventReactions.ts @@ -1,10 +1,12 @@ import { useEffect } from 'react'; -import { EventMessageType } from '~/constants/events'; + import { includes, path, values } from 'ramda'; -import { useOAuth } from '~/hooks/auth/useOAuth'; + +import { EventMessageType } from '~/constants/events'; import { Dialog } from '~/constants/modal'; -import { useModal } from '~/hooks/modal/useModal'; import { useAuth } from '~/hooks/auth/useAuth'; +import { useOAuth } from '~/hooks/auth/useOAuth'; +import { useModal } from '~/hooks/modal/useModal'; /** reacts to events passed by window.postMessage */ export const useMessageEventReactions = () => { diff --git a/src/hooks/auth/useOAuth.ts b/src/hooks/auth/useOAuth.ts index 3cc4926d..faae2d89 100644 --- a/src/hooks/auth/useOAuth.ts +++ b/src/hooks/auth/useOAuth.ts @@ -1,13 +1,15 @@ import { useCallback, useMemo } from 'react'; -import { OAuthProvider } from '~/types/auth'; -import { API } from '~/constants/api'; -import { apiAttachSocial, apiDropSocial, apiGetSocials, apiLoginWithSocial } from '~/api/auth'; -import { useModal } from '~/hooks/modal/useModal'; -import { Dialog } from '~/constants/modal'; -import { showErrorToast } from '~/utils/errors/showToast'; + import { path } from 'ramda'; import useSWR from 'swr'; + +import { apiAttachSocial, apiDropSocial, apiGetSocials, apiLoginWithSocial } from '~/api/auth'; +import { API } from '~/constants/api'; +import { Dialog } from '~/constants/modal'; import { useAuth } from '~/hooks/auth/useAuth'; +import { useModal } from '~/hooks/modal/useModal'; +import { OAuthProvider } from '~/types/auth'; +import { showErrorToast } from '~/utils/errors/showToast'; export const useOAuth = () => { const { isUser, setToken } = useAuth(); diff --git a/src/hooks/auth/usePatchUser.ts b/src/hooks/auth/usePatchUser.ts index 8fd48101..bc8c0809 100644 --- a/src/hooks/auth/usePatchUser.ts +++ b/src/hooks/auth/usePatchUser.ts @@ -1,10 +1,11 @@ -import { useUploader } from '~/hooks/data/useUploader'; -import { UploadSubject, UploadTarget } from '~/constants/uploads'; import { useCallback } from 'react'; -import { showErrorToast } from '~/utils/errors/showToast'; + import { apiUpdateUser } from '~/api/auth'; import { ApiUpdateUserRequest } from '~/api/auth/types'; +import { UploadSubject, UploadTarget } from '~/constants/uploads'; import { useUser } from '~/hooks/auth/useUser'; +import { useUploader } from '~/hooks/data/useUploader'; +import { showErrorToast } from '~/utils/errors/showToast'; export const usePatchUser = () => { const { update } = useUser(); diff --git a/src/hooks/auth/useRestoreCode.ts b/src/hooks/auth/useRestoreCode.ts index 70a44f4e..8e957b58 100644 --- a/src/hooks/auth/useRestoreCode.ts +++ b/src/hooks/auth/useRestoreCode.ts @@ -1,5 +1,6 @@ -import { apiCheckRestoreCode } from '~/api/auth'; import useSWR from 'swr'; + +import { apiCheckRestoreCode } from '~/api/auth'; import { API } from '~/constants/api'; import { getErrorMessage } from '~/utils/errors/getErrorMessage'; diff --git a/src/hooks/auth/useRestorePasswordForm.ts b/src/hooks/auth/useRestorePasswordForm.ts index df0f3259..0373dfd0 100644 --- a/src/hooks/auth/useRestorePasswordForm.ts +++ b/src/hooks/auth/useRestorePasswordForm.ts @@ -1,11 +1,13 @@ -import { Asserts, object, string } from 'yup'; -import { FormikConfig, useFormik } from 'formik'; import { useCallback } from 'react'; -import { showErrorToast } from '~/utils/errors/showToast'; -import { getValidationErrors } from '~/utils/errors/getValidationErrors'; + +import { FormikConfig, useFormik } from 'formik'; +import { Asserts, object, string } from 'yup'; + import { ERRORS } from '~/constants/errors'; -import { IUser } from '~/types/auth'; import { useAuthStore } from '~/store/auth/useAuthStore'; +import { IUser } from '~/types/auth'; +import { getValidationErrors } from '~/utils/errors/getValidationErrors'; +import { showErrorToast } from '~/utils/errors/showToast'; const validationSchema = object({ newPassword: string() diff --git a/src/hooks/auth/useRestorePasswordRedirect.ts b/src/hooks/auth/useRestorePasswordRedirect.ts index 8dff4565..568069e8 100644 --- a/src/hooks/auth/useRestorePasswordRedirect.ts +++ b/src/hooks/auth/useRestorePasswordRedirect.ts @@ -1,6 +1,7 @@ import { useEffect } from 'react'; -import { useModal } from '~/hooks/modal/useModal'; + import { Dialog } from '~/constants/modal'; +import { useModal } from '~/hooks/modal/useModal'; import { useNavigation } from '~/hooks/navigation/useNavigation'; /** redirects to the password redirect modal */ diff --git a/src/hooks/auth/useRestoreRequestForm.ts b/src/hooks/auth/useRestoreRequestForm.ts index 80aaa394..6dc63a37 100644 --- a/src/hooks/auth/useRestoreRequestForm.ts +++ b/src/hooks/auth/useRestoreRequestForm.ts @@ -1,9 +1,11 @@ -import { Asserts, object, string } from 'yup'; -import { ERRORS } from '~/constants/errors'; -import { FormikConfig, useFormik } from 'formik'; import { useCallback } from 'react'; -import { showErrorToast } from '~/utils/errors/showToast'; + +import { FormikConfig, useFormik } from 'formik'; +import { Asserts, object, string } from 'yup'; + +import { ERRORS } from '~/constants/errors'; import { getValidationErrors } from '~/utils/errors/getValidationErrors'; +import { showErrorToast } from '~/utils/errors/showToast'; const validationSchema = object({ field: string().required(ERRORS.REQUIRED), diff --git a/src/hooks/auth/useSocialRegisterForm.ts b/src/hooks/auth/useSocialRegisterForm.ts index 764284e8..3acad2d0 100644 --- a/src/hooks/auth/useSocialRegisterForm.ts +++ b/src/hooks/auth/useSocialRegisterForm.ts @@ -1,9 +1,11 @@ -import { Asserts, object, string } from 'yup'; -import { ERRORS } from '~/constants/errors'; -import { FormikConfig, useFormik } from 'formik'; import { useCallback } from 'react'; -import { showErrorToast } from '~/utils/errors/showToast'; + +import { FormikConfig, useFormik } from 'formik'; +import { Asserts, object, string } from 'yup'; + +import { ERRORS } from '~/constants/errors'; import { getValidationErrors } from '~/utils/errors/getValidationErrors'; +import { showErrorToast } from '~/utils/errors/showToast'; const validationSchema = object({ username: string().required(ERRORS.REQUIRED), diff --git a/src/hooks/auth/useUser.ts b/src/hooks/auth/useUser.ts index b2cd3f2d..23fa3efc 100644 --- a/src/hooks/auth/useUser.ts +++ b/src/hooks/auth/useUser.ts @@ -1,11 +1,13 @@ -import useSWR from 'swr'; -import { useAuthStore } from '~/store/auth/useAuthStore'; -import { API } from '~/constants/api'; -import { apiAuthGetUser } from '~/api/auth'; -import { EMPTY_USER } from '~/constants/auth'; -import { showErrorToast } from '~/utils/errors/showToast'; import { useCallback } from 'react'; + +import useSWR from 'swr'; + +import { apiAuthGetUser } from '~/api/auth'; +import { API } from '~/constants/api'; +import { EMPTY_USER } from '~/constants/auth'; +import { useAuthStore } from '~/store/auth/useAuthStore'; import { IUser } from '~/types/auth'; +import { showErrorToast } from '~/utils/errors/showToast'; export const useUser = () => { const { token, setUser } = useAuthStore(); diff --git a/src/hooks/auth/useUserDescription.ts b/src/hooks/auth/useUserDescription.ts index 30d886d9..d9dcc7c6 100644 --- a/src/hooks/auth/useUserDescription.ts +++ b/src/hooks/auth/useUserDescription.ts @@ -1,7 +1,8 @@ -import { IUser } from '~/types/auth'; -import { useRandomPhrase } from '~/constants/phrases'; import { differenceInDays, parseISO } from 'date-fns'; + +import { useRandomPhrase } from '~/constants/phrases'; import { INACTIVE_ACCOUNT_DAYS } from '~/constants/user'; +import { IUser } from '~/types/auth'; const today = new Date(); diff --git a/src/hooks/boris/useBoris.ts b/src/hooks/boris/useBoris.ts index 28a9bf6f..7d0d22de 100644 --- a/src/hooks/boris/useBoris.ts +++ b/src/hooks/boris/useBoris.ts @@ -1,10 +1,12 @@ import { useCallback, useEffect } from 'react'; + import isBefore from 'date-fns/isBefore'; -import { IComment } from '~/types'; + import { useRandomPhrase } from '~/constants/phrases'; -import { useBorisStats } from '~/hooks/boris/useBorisStats'; -import { useLastSeenBoris } from '~/hooks/auth/useLastSeenBoris'; import { useAuth } from '~/hooks/auth/useAuth'; +import { useLastSeenBoris } from '~/hooks/auth/useLastSeenBoris'; +import { useBorisStats } from '~/hooks/boris/useBorisStats'; +import { IComment } from '~/types'; export const useBoris = (comments: IComment[]) => { const title = useRandomPhrase('BORIS_TITLE'); diff --git a/src/hooks/boris/useBorisStats.ts b/src/hooks/boris/useBorisStats.ts index 1f1572c1..47d8a7b9 100644 --- a/src/hooks/boris/useBorisStats.ts +++ b/src/hooks/boris/useBorisStats.ts @@ -1,8 +1,9 @@ import useSWR from 'swr'; -import { API } from '~/constants/api'; + import { getBorisBackendStats, getGithubIssues } from '~/api/boris'; -import { BorisUsageStats } from '~/types/boris'; +import { API } from '~/constants/api'; import { initialBackendStats } from '~/constants/boris/constants'; +import { BorisUsageStats } from '~/types/boris'; export const useBorisStats = () => { const { data: backend = initialBackendStats, isValidating: isValidatingBackend } = useSWR( diff --git a/src/hooks/color/useColorFromString.ts b/src/hooks/color/useColorFromString.ts index 67e8ec9a..10668fb8 100644 --- a/src/hooks/color/useColorFromString.ts +++ b/src/hooks/color/useColorFromString.ts @@ -1,4 +1,5 @@ import { useMemo } from 'react'; + import { normalizeBrightColor } from '~/utils/color'; import { stringToColour } from '~/utils/dom'; diff --git a/src/hooks/color/useColorGradientFromString.ts b/src/hooks/color/useColorGradientFromString.ts index 164ccab1..bbc0fb49 100644 --- a/src/hooks/color/useColorGradientFromString.ts +++ b/src/hooks/color/useColorGradientFromString.ts @@ -1,5 +1,7 @@ import { useMemo } from 'react'; + import { adjustHue } from 'color2k'; + import { normalizeBrightColor } from '~/utils/color'; import { stringToColour } from '~/utils/dom'; diff --git a/src/hooks/comments/useCommentFormFormik.ts b/src/hooks/comments/useCommentFormFormik.ts index 654fac9c..c2e636eb 100644 --- a/src/hooks/comments/useCommentFormFormik.ts +++ b/src/hooks/comments/useCommentFormFormik.ts @@ -1,10 +1,12 @@ -import { IComment, INode } from '~/types'; import { useCallback, useEffect, useRef } from 'react'; + import { FormikHelpers, useFormik, useFormikContext } from 'formik'; -import { array, object, string } from 'yup'; -import { showErrorToast } from '~/utils/errors/showToast'; import { hasPath, path } from 'ramda'; +import { array, object, string } from 'yup'; + +import { IComment, INode } from '~/types'; import { Uploader } from '~/utils/context/UploaderContextProvider'; +import { showErrorToast } from '~/utils/errors/showToast'; const validationSchema = object().shape({ text: string(), diff --git a/src/hooks/comments/useGetComments.ts b/src/hooks/comments/useGetComments.ts index 605ea67d..f1acc728 100644 --- a/src/hooks/comments/useGetComments.ts +++ b/src/hooks/comments/useGetComments.ts @@ -1,9 +1,11 @@ -import { API } from '~/constants/api'; +import { useCallback, useMemo } from 'react'; + import { flatten, isNil } from 'ramda'; import useSWRInfinite, { SWRInfiniteKeyLoader } from 'swr/infinite'; + import { apiGetNodeComments } from '~/api/node'; +import { API } from '~/constants/api'; import { COMMENTS_DISPLAY } from '~/constants/node'; -import { useCallback, useMemo } from 'react'; import { IComment } from '~/types'; const getKey: (nodeId: number) => SWRInfiniteKeyLoader = (nodeId: number) => ( diff --git a/src/hooks/comments/useNodeComments.ts b/src/hooks/comments/useNodeComments.ts index 2a938ff2..cc9ec8e3 100644 --- a/src/hooks/comments/useNodeComments.ts +++ b/src/hooks/comments/useNodeComments.ts @@ -1,7 +1,8 @@ import { useCallback } from 'react'; -import { IComment } from '~/types'; -import { useGetComments } from '~/hooks/comments/useGetComments'; + import { apiLockComment, apiPostComment } from '~/api/node'; +import { useGetComments } from '~/hooks/comments/useGetComments'; +import { IComment } from '~/types'; import { showErrorToast } from '~/utils/errors/showToast'; export const useNodeComments = (nodeId: number) => { diff --git a/src/hooks/data/useTranslatedError.ts b/src/hooks/data/useTranslatedError.ts index 22ef367f..fd723da0 100644 --- a/src/hooks/data/useTranslatedError.ts +++ b/src/hooks/data/useTranslatedError.ts @@ -1,7 +1,9 @@ -import { ERROR_LITERAL } from '~/constants/errors'; -import { has } from 'ramda'; import { useMemo } from 'react'; +import { has } from 'ramda'; + +import { ERROR_LITERAL } from '~/constants/errors'; + export const useTranslatedError = (error: string | undefined) => { return useMemo(() => { if (!error) { diff --git a/src/hooks/data/useUploader.ts b/src/hooks/data/useUploader.ts index 5ddd56f6..6eb92393 100644 --- a/src/hooks/data/useUploader.ts +++ b/src/hooks/data/useUploader.ts @@ -1,13 +1,16 @@ -import { UploadSubject, UploadTarget } from '~/constants/uploads'; -import { IFile } from '~/types'; import { useCallback } from 'react'; -import { apiUploadFile } from '~/api/uploads'; -import { keys } from 'ramda'; + import { useLocalObservable } from 'mobx-react-lite'; -import { UploaderStore } from '~/store/uploader/UploaderStore'; -import { showErrorToast } from '~/utils/errors/showToast'; +import { keys } from 'ramda'; import uuid from 'uuid4'; +import { apiUploadFile } from '~/api/uploads'; +import { UploadSubject, UploadTarget } from '~/constants/uploads'; +import { UploaderStore } from '~/store/uploader/UploaderStore'; +import { IFile } from '~/types'; +import { showErrorToast } from '~/utils/errors/showToast'; + + export const useUploader = ( subject: UploadSubject, target: UploadTarget, diff --git a/src/hooks/dom/useClickOutsideFocus.ts b/src/hooks/dom/useClickOutsideFocus.ts index 7fd0d045..b396d5dd 100644 --- a/src/hooks/dom/useClickOutsideFocus.ts +++ b/src/hooks/dom/useClickOutsideFocus.ts @@ -2,6 +2,7 @@ * Handles blur by detecting clicks outside refs. */ import { useCallback, useEffect, useRef, useState } from 'react'; + import { useCloseOnEscape } from '~/hooks'; export const useClickOutsideFocus = () => { diff --git a/src/hooks/dom/useGlobalLoader.ts b/src/hooks/dom/useGlobalLoader.ts index 9db16107..211fcc36 100644 --- a/src/hooks/dom/useGlobalLoader.ts +++ b/src/hooks/dom/useGlobalLoader.ts @@ -1,7 +1,8 @@ import { useEffect } from 'react'; + +import { useFlowLoader } from '~/hooks/flow/useFlowLoader'; import { useFlowStore } from '~/store/flow/useFlowStore'; import { hideLoader } from '~/utils/dom/hideLoader'; -import { useFlowLoader } from '~/hooks/flow/useFlowLoader'; /** simply waits for all data to settle and then show the app */ export const useGlobalLoader = () => { diff --git a/src/hooks/dom/useInputPasteUpload.ts b/src/hooks/dom/useInputPasteUpload.ts index a0cf1fab..50ab42ba 100644 --- a/src/hooks/dom/useInputPasteUpload.ts +++ b/src/hooks/dom/useInputPasteUpload.ts @@ -1,4 +1,5 @@ import { useCallback } from 'react'; + import { getImageFromPaste } from '~/utils/uploader'; // useInputPasteUpload attaches event listener to input, that calls onUpload if user pasted any image diff --git a/src/hooks/dom/usePopperModifiers.ts b/src/hooks/dom/usePopperModifiers.ts index 250931bf..f057ccb0 100644 --- a/src/hooks/dom/usePopperModifiers.ts +++ b/src/hooks/dom/usePopperModifiers.ts @@ -1,4 +1,5 @@ import { useMemo } from 'react'; + import { Modifier } from 'react-popper'; const sameWidth = { diff --git a/src/hooks/dom/useScrollToBottom.ts b/src/hooks/dom/useScrollToBottom.ts index 2622e1aa..9b406713 100644 --- a/src/hooks/dom/useScrollToBottom.ts +++ b/src/hooks/dom/useScrollToBottom.ts @@ -1,4 +1,5 @@ import { useCallback } from 'react'; + import { useScrollHeight } from '~/hooks/dom/useScrollHeight'; export const useScrollToBottom = () => { diff --git a/src/hooks/dom/useScrollToTop.ts b/src/hooks/dom/useScrollToTop.ts index 1fe85f9a..f1c5c846 100644 --- a/src/hooks/dom/useScrollToTop.ts +++ b/src/hooks/dom/useScrollToTop.ts @@ -1,4 +1,5 @@ import { useEffect } from 'react'; + import { NEW_COMMENT_CLASSNAME } from '~/constants/comment'; export const useScrollToTop = (deps?: any[]) => { diff --git a/src/hooks/flow/useFlow.ts b/src/hooks/flow/useFlow.ts index d1d0fea8..271aaf98 100644 --- a/src/hooks/flow/useFlow.ts +++ b/src/hooks/flow/useFlow.ts @@ -1,9 +1,10 @@ -import { useFlowLayout } from '~/hooks/flow/useFlowLayout'; import { useMemo } from 'react'; + +import { useFlowLayout } from '~/hooks/flow/useFlowLayout'; import { useFlowLoader } from '~/hooks/flow/useFlowLoader'; -import { useFlowStore } from '~/store/flow/useFlowStore'; import { useFlowSetCellView } from '~/hooks/flow/useFlowSetCellView'; import { useGetLabStats } from '~/hooks/lab/useGetLabStats'; +import { useFlowStore } from '~/store/flow/useFlowStore'; export const useFlow = () => { const { loadMore, isSyncing } = useFlowLoader(); diff --git a/src/hooks/flow/useFlowCellControls.ts b/src/hooks/flow/useFlowCellControls.ts index 4b34d557..6440ece4 100644 --- a/src/hooks/flow/useFlowCellControls.ts +++ b/src/hooks/flow/useFlowCellControls.ts @@ -1,4 +1,5 @@ import { useCallback } from 'react'; + import { FlowDisplay, INode } from '~/types'; export const useFlowCellControls = ( diff --git a/src/hooks/flow/useFlowLayout.ts b/src/hooks/flow/useFlowLayout.ts index aedd1555..fccfbc02 100644 --- a/src/hooks/flow/useFlowLayout.ts +++ b/src/hooks/flow/useFlowLayout.ts @@ -1,6 +1,7 @@ import { useCallback } from 'react'; -import { usePersistedState } from '~/hooks/data/usePersistedState'; + import { experimentalFeatures } from '~/constants/features'; +import { usePersistedState } from '~/hooks/data/usePersistedState'; enum Layout { Fluid = 'fluid', diff --git a/src/hooks/flow/useFlowLoader.ts b/src/hooks/flow/useFlowLoader.ts index 2232739d..1ddbf5fe 100644 --- a/src/hooks/flow/useFlowLoader.ts +++ b/src/hooks/flow/useFlowLoader.ts @@ -1,8 +1,10 @@ import { useCallback, useState } from 'react'; -import { getNodeDiff } from '~/api/node'; -import { uniq } from 'ramda'; -import { useFlowStore } from '~/store/flow/useFlowStore'; + import { runInAction } from 'mobx'; +import { uniq } from 'ramda'; + +import { getNodeDiff } from '~/api/node'; +import { useFlowStore } from '~/store/flow/useFlowStore'; import { showErrorToast } from '~/utils/errors/showToast'; export const useFlowLoader = () => { diff --git a/src/hooks/flow/useFlowSetCellView.ts b/src/hooks/flow/useFlowSetCellView.ts index 194f8410..8f391dac 100644 --- a/src/hooks/flow/useFlowSetCellView.ts +++ b/src/hooks/flow/useFlowSetCellView.ts @@ -1,8 +1,9 @@ -import { useFlowStore } from '~/store/flow/useFlowStore'; import { useCallback } from 'react'; + +import { postCellView } from '~/api/flow'; +import { useFlowStore } from '~/store/flow/useFlowStore'; import { FlowDisplay } from '~/types'; import { showErrorToast } from '~/utils/errors/showToast'; -import { postCellView } from '~/api/flow'; export const useFlowSetCellView = () => { const { updateNode } = useFlowStore(); diff --git a/src/hooks/lab/useGetLabNodes.ts b/src/hooks/lab/useGetLabNodes.ts index 4dcd6b8c..a6508ab1 100644 --- a/src/hooks/lab/useGetLabNodes.ts +++ b/src/hooks/lab/useGetLabNodes.ts @@ -1,11 +1,13 @@ -import useSWRInfinite, { SWRInfiniteKeyLoader } from 'swr/infinite'; -import { GetLabNodesRequest, ILabNode } from '~/types/lab'; -import { getLabNodes } from '~/api/lab'; -import { flatten, last, uniqBy } from 'ramda'; -import { useLabStore } from '~/store/lab/useLabStore'; import { useCallback, useMemo } from 'react'; -import { INode } from '~/types'; + +import { flatten, last, uniqBy } from 'ramda'; +import useSWRInfinite, { SWRInfiniteKeyLoader } from 'swr/infinite'; + +import { getLabNodes } from '~/api/lab'; import { useAuth } from '~/hooks/auth/useAuth'; +import { useLabStore } from '~/store/lab/useLabStore'; +import { INode } from '~/types'; +import { GetLabNodesRequest, ILabNode } from '~/types/lab'; const getKey: (isUser: boolean) => SWRInfiniteKeyLoader = isUser => (index, prev: ILabNode[]) => { if (!isUser) return null; diff --git a/src/hooks/lab/useGetLabStats.ts b/src/hooks/lab/useGetLabStats.ts index 73b208ab..9a484a80 100644 --- a/src/hooks/lab/useGetLabStats.ts +++ b/src/hooks/lab/useGetLabStats.ts @@ -1,9 +1,11 @@ -import useSWR from 'swr'; -import { API } from '~/constants/api'; -import { getLabStats, getLabUpdates } from '~/api/lab'; -import { useLabStore } from '~/store/lab/useLabStore'; import { useCallback, useMemo } from 'react'; + +import useSWR from 'swr'; + +import { getLabStats, getLabUpdates } from '~/api/lab'; +import { API } from '~/constants/api'; import { useAuth } from '~/hooks/auth/useAuth'; +import { useLabStore } from '~/store/lab/useLabStore'; const refreshInterval = 1000 * 60 * 5; // 5 minutes diff --git a/src/hooks/messages/useMessages.ts b/src/hooks/messages/useMessages.ts index 9b41ef8f..e7614fea 100644 --- a/src/hooks/messages/useMessages.ts +++ b/src/hooks/messages/useMessages.ts @@ -1,9 +1,11 @@ -import useSWR from 'swr'; -import { API } from '~/constants/api'; -import { apiGetUserMessages } from '~/api/messages'; -import { IMessage } from '~/types'; import { useMemo } from 'react'; +import useSWR from 'swr'; + +import { apiGetUserMessages } from '~/api/messages'; +import { API } from '~/constants/api'; +import { IMessage } from '~/types'; + const getKey = (username: string): string | null => { return username ? `${API.USER.MESSAGES}/${username}` : null; }; diff --git a/src/hooks/metadata/useYoutubeMetadata.ts b/src/hooks/metadata/useYoutubeMetadata.ts index 013b4f62..7752b4ec 100644 --- a/src/hooks/metadata/useYoutubeMetadata.ts +++ b/src/hooks/metadata/useYoutubeMetadata.ts @@ -1,6 +1,7 @@ -import { useMetadataProvider } from '~/utils/providers/MetadataProvider'; import { useEffect } from 'react'; +import { useMetadataProvider } from '~/utils/providers/MetadataProvider'; + export const useYoutubeMetadata = (id: string) => { const { queue, enqueue, metadata, pending } = useMetadataProvider(); diff --git a/src/hooks/modal/useModal.ts b/src/hooks/modal/useModal.ts index 17d1f00c..2499bc3d 100644 --- a/src/hooks/modal/useModal.ts +++ b/src/hooks/modal/useModal.ts @@ -1,6 +1,7 @@ -import { useModalStore } from '~/store/modal/useModalStore'; import { useCallback } from 'react'; + import { Dialog, DIALOG_CONTENT } from '~/constants/modal'; +import { useModalStore } from '~/store/modal/useModalStore'; import { DialogComponentProps } from '~/types/modal'; export type DialogContentProps = { diff --git a/src/hooks/modal/useShowModal.ts b/src/hooks/modal/useShowModal.ts index e3fe9770..57452600 100644 --- a/src/hooks/modal/useShowModal.ts +++ b/src/hooks/modal/useShowModal.ts @@ -1,6 +1,7 @@ import { useCallback } from 'react'; -import { DialogContentProps, useModal } from '~/hooks/modal/useModal'; + import { Dialog } from '~/constants/modal'; +import { DialogContentProps, useModal } from '~/hooks/modal/useModal'; export const useShowModal = (dialog: T) => { const modal = useModal(); diff --git a/src/hooks/navigation/useImageModal.ts b/src/hooks/navigation/useImageModal.ts index 2c82f55d..ce3af6bd 100644 --- a/src/hooks/navigation/useImageModal.ts +++ b/src/hooks/navigation/useImageModal.ts @@ -1,7 +1,8 @@ import { useCallback } from 'react'; -import { IFile } from '~/types'; -import { useShowModal } from '~/hooks/modal/useShowModal'; + import { Dialog } from '~/constants/modal'; +import { useShowModal } from '~/hooks/modal/useShowModal'; +import { IFile } from '~/types'; export const useImageModal = () => { const showModal = useShowModal(Dialog.Photoswipe); diff --git a/src/hooks/navigation/useNavigation.ts b/src/hooks/navigation/useNavigation.ts index a5877d12..199801d8 100644 --- a/src/hooks/navigation/useNavigation.ts +++ b/src/hooks/navigation/useNavigation.ts @@ -1,8 +1,10 @@ import { useCallback } from 'react'; -import { CONFIG } from '~/utils/config'; + import { useRouter } from 'next/router'; import { useHistory } from 'react-router'; +import { CONFIG } from '~/utils/config'; + export const useNavigation = () => { const nextRouter = useRouter(); const craHistory = useHistory(); diff --git a/src/hooks/node/useCreateNode.ts b/src/hooks/node/useCreateNode.ts index 81e75944..75b2a87a 100644 --- a/src/hooks/node/useCreateNode.ts +++ b/src/hooks/node/useCreateNode.ts @@ -1,8 +1,9 @@ import { useCallback } from 'react'; -import { INode } from '~/types'; + import { apiPostNode } from '~/api/node'; -import { useFlowStore } from '~/store/flow/useFlowStore'; import { useGetLabNodes } from '~/hooks/lab/useGetLabNodes'; +import { useFlowStore } from '~/store/flow/useFlowStore'; +import { INode } from '~/types'; export const useCreateNode = () => { const flow = useFlowStore(); diff --git a/src/hooks/node/useGetNodeRelated.ts b/src/hooks/node/useGetNodeRelated.ts index 83e25afe..5fc92581 100644 --- a/src/hooks/node/useGetNodeRelated.ts +++ b/src/hooks/node/useGetNodeRelated.ts @@ -1,9 +1,13 @@ -import { INode } from '~/types'; -import useSWR from 'swr'; -import { ApiGetNodeRelatedResult } from '~/types/node'; -import { API } from '~/constants/api'; import { useCallback } from 'react'; + +import useSWR from 'swr'; + import { apiGetNodeRelated } from '~/api/node'; +import { API } from '~/constants/api'; +import { INode } from '~/types'; +import { ApiGetNodeRelatedResult } from '~/types/node'; + + export const useGetNodeRelated = (id?: INode['id']) => { const { data, isValidating, mutate } = useSWR(API.NODE.RELATED(id), () => diff --git a/src/hooks/node/useGotoNode.ts b/src/hooks/node/useGotoNode.ts index 5a8eebe9..8a22289c 100644 --- a/src/hooks/node/useGotoNode.ts +++ b/src/hooks/node/useGotoNode.ts @@ -1,7 +1,8 @@ -import { INode } from '~/types'; import { useCallback } from 'react'; + import { URLS } from '~/constants/urls'; import { useNavigation } from '~/hooks/navigation/useNavigation'; +import { INode } from '~/types'; // useGotoNode returns fn, that navigates to node export const useGotoNode = (id: INode['id']) => { diff --git a/src/hooks/node/useGrouppedComments.ts b/src/hooks/node/useGrouppedComments.ts index 7e4dfb22..dde9182e 100644 --- a/src/hooks/node/useGrouppedComments.ts +++ b/src/hooks/node/useGrouppedComments.ts @@ -1,5 +1,6 @@ -import { IComment } from '~/types'; import { useMemo } from 'react'; + +import { IComment } from '~/types'; import { groupCommentsByUser } from '~/utils/fn'; export const useGrouppedComments = ( diff --git a/src/hooks/node/useLoadNode.ts b/src/hooks/node/useLoadNode.ts index 773d9996..b01149ae 100644 --- a/src/hooks/node/useLoadNode.ts +++ b/src/hooks/node/useLoadNode.ts @@ -1,11 +1,13 @@ -import useSWR from 'swr'; -import { ApiGetNodeResponse } from '~/types/node'; -import { API } from '~/constants/api'; -import { useOnNodeSeen } from '~/hooks/node/useOnNodeSeen'; -import { apiGetNode } from '~/api/node'; import { useCallback } from 'react'; -import { INode } from '~/types'; + +import useSWR from 'swr'; + +import { apiGetNode } from '~/api/node'; +import { API } from '~/constants/api'; import { EMPTY_NODE } from '~/constants/node'; +import { useOnNodeSeen } from '~/hooks/node/useOnNodeSeen'; +import { INode } from '~/types'; +import { ApiGetNodeResponse } from '~/types/node'; export const useLoadNode = (id: number, fallbackData?: ApiGetNodeResponse) => { const { data, isValidating, mutate } = useSWR( diff --git a/src/hooks/node/useNodeActions.ts b/src/hooks/node/useNodeActions.ts index 4bb9a82d..58377560 100644 --- a/src/hooks/node/useNodeActions.ts +++ b/src/hooks/node/useNodeActions.ts @@ -1,9 +1,10 @@ -import { INode } from '~/types'; import { useCallback } from 'react'; + import { apiLockNode, apiPostNodeHeroic, apiPostNodeLike } from '~/api/node'; -import { showErrorToast } from '~/utils/errors/showToast'; -import { useModal } from '~/hooks/modal/useModal'; import { Dialog } from '~/constants/modal'; +import { useModal } from '~/hooks/modal/useModal'; +import { INode } from '~/types'; +import { showErrorToast } from '~/utils/errors/showToast'; export const useNodeActions = (node: INode, update: (node: Partial) => Promise) => { const { showModal } = useModal(); diff --git a/src/hooks/node/useNodeAudios.ts b/src/hooks/node/useNodeAudios.ts index c2997ba0..1ad28cf1 100644 --- a/src/hooks/node/useNodeAudios.ts +++ b/src/hooks/node/useNodeAudios.ts @@ -1,6 +1,7 @@ -import { INode } from '~/types'; import { useMemo } from 'react'; + import { UploadType } from '~/constants/uploads'; +import { INode } from '~/types'; export const useNodeAudios = (node: INode) => { return useMemo(() => node.files.filter(file => file && file.type === UploadType.Audio), [ diff --git a/src/hooks/node/useNodeBlocks.ts b/src/hooks/node/useNodeBlocks.ts index e1d953e5..f36d33d2 100644 --- a/src/hooks/node/useNodeBlocks.ts +++ b/src/hooks/node/useNodeBlocks.ts @@ -1,7 +1,9 @@ -import { INode } from '~/types'; import { createElement, FC, useCallback, useMemo } from 'react'; + import { isNil, prop } from 'ramda'; + import { INodeComponentProps, LAB_PREVIEW_LAYOUT, NODE_COMPONENTS, NODE_HEADS, NODE_INLINES } from '~/constants/node'; +import { INode } from '~/types'; // useNodeBlocks returns head, block and inline blocks of node export const useNodeBlocks = (node: INode, isLoading: boolean) => { diff --git a/src/hooks/node/useNodeCoverImage.ts b/src/hooks/node/useNodeCoverImage.ts index 17ffb8b8..dd9e1e52 100644 --- a/src/hooks/node/useNodeCoverImage.ts +++ b/src/hooks/node/useNodeCoverImage.ts @@ -1,5 +1,5 @@ -import { INode } from '~/types'; import { usePageCover } from '~/components/containers/PageCoverProvider/usePageCover'; +import { INode } from '~/types'; export const useNodeCoverImage = (node: INode) => { usePageCover(node.cover); diff --git a/src/hooks/node/useNodeFormFormik.ts b/src/hooks/node/useNodeFormFormik.ts index 8f829889..089f5ae2 100644 --- a/src/hooks/node/useNodeFormFormik.ts +++ b/src/hooks/node/useNodeFormFormik.ts @@ -1,10 +1,12 @@ -import { INode } from '~/types'; import { useCallback, useRef } from 'react'; + import { FormikConfig, FormikHelpers, useFormik, useFormikContext } from 'formik'; import { object } from 'yup'; -import { showErrorToast } from '~/utils/errors/showToast'; + +import { INode } from '~/types'; import { Uploader } from '~/utils/context/UploaderContextProvider'; import { getValidationErrors } from '~/utils/errors/getValidationErrors'; +import { showErrorToast } from '~/utils/errors/showToast'; const validationSchema = object().shape({}); diff --git a/src/hooks/node/useNodeImages.ts b/src/hooks/node/useNodeImages.ts index 6b79a34f..e162be05 100644 --- a/src/hooks/node/useNodeImages.ts +++ b/src/hooks/node/useNodeImages.ts @@ -1,6 +1,7 @@ -import { INode } from '~/types'; import { useMemo } from 'react'; + import { UploadType } from '~/constants/uploads'; +import { INode } from '~/types'; export const useNodeImages = (node: INode) => { return useMemo(() => node.files.filter(file => file && file.type === UploadType.Image), [ diff --git a/src/hooks/node/useNodePageParams.ts b/src/hooks/node/useNodePageParams.ts index ed0e568e..4c9a7616 100644 --- a/src/hooks/node/useNodePageParams.ts +++ b/src/hooks/node/useNodePageParams.ts @@ -1,5 +1,6 @@ -import { useRouteMatch } from 'react-router'; import { useRouter } from 'next/router'; +import { useRouteMatch } from 'react-router'; + import { CONFIG } from '~/utils/config'; export const useNodePageParams = () => { diff --git a/src/hooks/node/useNodePermissions.ts b/src/hooks/node/useNodePermissions.ts index 29e633a2..a0825141 100644 --- a/src/hooks/node/useNodePermissions.ts +++ b/src/hooks/node/useNodePermissions.ts @@ -1,7 +1,8 @@ import { useMemo } from 'react'; -import { canEditNode, canLikeNode, canStarNode } from '~/utils/node'; -import { INode } from '~/types'; + import { useUser } from '~/hooks/auth/useUser'; +import { INode } from '~/types'; +import { canEditNode, canLikeNode, canStarNode } from '~/utils/node'; export const useNodePermissions = (node?: INode) => { const { user } = useUser(); diff --git a/src/hooks/node/useNodeTags.ts b/src/hooks/node/useNodeTags.ts index 1935c677..f2e69d8d 100644 --- a/src/hooks/node/useNodeTags.ts +++ b/src/hooks/node/useNodeTags.ts @@ -1,10 +1,11 @@ import { useCallback } from 'react'; -import { ITag } from '~/types'; -import { useLoadNode } from '~/hooks/node/useLoadNode'; + import { apiDeleteNodeTag, apiPostNodeTags } from '~/api/node'; -import { useGetNodeRelated } from '~/hooks/node/useGetNodeRelated'; -import { useShowModal } from '~/hooks/modal/useShowModal'; import { Dialog } from '~/constants/modal'; +import { useShowModal } from '~/hooks/modal/useShowModal'; +import { useGetNodeRelated } from '~/hooks/node/useGetNodeRelated'; +import { useLoadNode } from '~/hooks/node/useLoadNode'; +import { ITag } from '~/types'; export const useNodeTags = (id: number) => { const showModal = useShowModal(Dialog.TagSidebar); diff --git a/src/hooks/node/useOnNodeSeen.ts b/src/hooks/node/useOnNodeSeen.ts index 37b10573..5d557c32 100644 --- a/src/hooks/node/useOnNodeSeen.ts +++ b/src/hooks/node/useOnNodeSeen.ts @@ -1,7 +1,8 @@ -import { INode } from '~/types'; import { useEffect } from 'react'; -import { useFlowStore } from '~/store/flow/useFlowStore'; + import { useGetLabStats } from '~/hooks/lab/useGetLabStats'; +import { useFlowStore } from '~/store/flow/useFlowStore'; +import { INode } from '~/types'; // useOnNodeSeen updates node seen status across all needed places export const useOnNodeSeen = (node?: INode) => { diff --git a/src/hooks/node/useUpdateNode.ts b/src/hooks/node/useUpdateNode.ts index 69e3bc3b..1a6ff356 100644 --- a/src/hooks/node/useUpdateNode.ts +++ b/src/hooks/node/useUpdateNode.ts @@ -1,9 +1,10 @@ -import { useLoadNode } from '~/hooks/node/useLoadNode'; import { useCallback } from 'react'; -import { INode } from '~/types'; + import { apiPostNode } from '~/api/node'; -import { useFlowStore } from '~/store/flow/useFlowStore'; import { useGetLabNodes } from '~/hooks/lab/useGetLabNodes'; +import { useLoadNode } from '~/hooks/node/useLoadNode'; +import { useFlowStore } from '~/store/flow/useFlowStore'; +import { INode } from '~/types'; export const useUpdateNode = (id: number) => { const { update } = useLoadNode(id); diff --git a/src/hooks/profile/useGetProfile.ts b/src/hooks/profile/useGetProfile.ts index fabf5d7f..8d3eacbc 100644 --- a/src/hooks/profile/useGetProfile.ts +++ b/src/hooks/profile/useGetProfile.ts @@ -1,8 +1,10 @@ -import useSWR from 'swr'; -import { API } from '~/constants/api'; -import { apiAuthGetUserProfile } from '~/api/auth'; -import { EMPTY_USER } from '~/constants/auth'; import { useCallback } from 'react'; + +import useSWR from 'swr'; + +import { apiAuthGetUserProfile } from '~/api/auth'; +import { API } from '~/constants/api'; +import { EMPTY_USER } from '~/constants/auth'; import { IUser } from '~/types/auth'; const getKey = (username?: string): string | null => { diff --git a/src/hooks/profile/useProfileForm.ts b/src/hooks/profile/useProfileForm.ts index 022cbda4..e472779e 100644 --- a/src/hooks/profile/useProfileForm.ts +++ b/src/hooks/profile/useProfileForm.ts @@ -1,12 +1,14 @@ -import { IUser } from '~/types/auth'; -import { Asserts, object, string } from 'yup'; -import { ERRORS } from '~/constants/errors'; -import { FormikConfig, useFormik } from 'formik'; import { useCallback, useRef } from 'react'; -import { showToastSuccess } from '~/utils/toast'; + +import { FormikConfig, useFormik } from 'formik'; +import { Asserts, object, string } from 'yup'; + +import { ERRORS } from '~/constants/errors'; import { getRandomPhrase } from '~/constants/phrases'; -import { showErrorToast } from '~/utils/errors/showToast'; +import { IUser } from '~/types/auth'; import { getValidationErrors } from '~/utils/errors/getValidationErrors'; +import { showErrorToast } from '~/utils/errors/showToast'; +import { showToastSuccess } from '~/utils/toast'; const validationSchema = object({ username: string() diff --git a/src/hooks/search/useSearch.ts b/src/hooks/search/useSearch.ts index 7f7486f7..405824c6 100644 --- a/src/hooks/search/useSearch.ts +++ b/src/hooks/search/useSearch.ts @@ -1,6 +1,8 @@ import { useCallback, useEffect, useMemo, useState } from 'react'; -import useSWRInfinite, { SWRInfiniteKeyLoader } from 'swr/infinite'; + import { flatten } from 'ramda'; +import useSWRInfinite, { SWRInfiniteKeyLoader } from 'swr/infinite'; + import { getSearchResults } from '~/api/flow'; import { INode } from '~/types'; import { GetSearchResultsRequest } from '~/types/flow'; diff --git a/src/hooks/tag/useTagAutocomplete.ts b/src/hooks/tag/useTagAutocomplete.ts index bc8e10ab..a6920d80 100644 --- a/src/hooks/tag/useTagAutocomplete.ts +++ b/src/hooks/tag/useTagAutocomplete.ts @@ -1,8 +1,10 @@ -import useSWR from 'swr'; -import { API } from '~/constants/api'; -import { apiGetTagSuggestions } from '~/api/tags'; import { useEffect, useMemo, useState } from 'react'; +import useSWR from 'swr'; + +import { apiGetTagSuggestions } from '~/api/tags'; +import { API } from '~/constants/api'; + export const useTagAutocomplete = (input: string, exclude: string[]): string[] => { const [search, setSearch] = useState(''); diff --git a/src/hooks/tag/useTagNodes.ts b/src/hooks/tag/useTagNodes.ts index a6ba9a6a..c49eefff 100644 --- a/src/hooks/tag/useTagNodes.ts +++ b/src/hooks/tag/useTagNodes.ts @@ -1,9 +1,11 @@ -import { INode } from '~/types'; -import { API } from '~/constants/api'; +import { useCallback, useMemo } from 'react'; + import { flatten, isNil } from 'ramda'; import useSWRInfinite, { SWRInfiniteKeyLoader } from 'swr/infinite'; -import { useCallback, useMemo } from 'react'; + import { apiGetNodesOfTag } from '~/api/tags'; +import { API } from '~/constants/api'; +import { INode } from '~/types'; const PAGE_SIZE = 10; diff --git a/src/hooks/updates/useUpdates.ts b/src/hooks/updates/useUpdates.ts index 14da63e8..91614788 100644 --- a/src/hooks/updates/useUpdates.ts +++ b/src/hooks/updates/useUpdates.ts @@ -1,7 +1,8 @@ import useSWR from 'swr'; -import { useAuth } from '~/hooks/auth/useAuth'; + import { apiAuthGetUpdates } from '~/api/auth'; import { API } from '~/constants/api'; +import { useAuth } from '~/hooks/auth/useAuth'; export const useUpdates = () => { const { isUser } = useAuth(); diff --git a/src/index.tsx b/src/index.tsx index b41b1093..4cae79f3 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -1,5 +1,7 @@ import * as React from 'react'; + import { render } from 'react-dom'; + import { App } from '~/containers/App'; import '~/styles/main.scss'; import { getMOBXStore } from '~/store'; diff --git a/src/layouts/BorisLayout/index.tsx b/src/layouts/BorisLayout/index.tsx index 22301b7c..9d75877e 100644 --- a/src/layouts/BorisLayout/index.tsx +++ b/src/layouts/BorisLayout/index.tsx @@ -1,19 +1,20 @@ import React, { FC } from 'react'; -import styles from './styles.module.scss'; -import { Group } from '~/components/containers/Group'; -import { Container } from '~/containers/main/Container'; -import { BorisComments } from '~/containers/boris/BorisComments'; -import { Card } from '~/components/containers/Card'; -import { SidebarRouter } from '~/containers/main/SidebarRouter'; -import { BorisSidebar } from '~/components/boris/BorisSidebar'; -import { BorisUsageStats } from '~/types/boris'; -import { Tabs } from '~/components/dialogs/Tabs'; -import { Superpower } from '~/components/boris/Superpower'; -import { BorisUIDemo } from '~/components/boris/BorisUIDemo'; -import boris from '~/sprites/boris_robot.svg'; -import { useAuthProvider } from '~/utils/providers/AuthProvider'; +import { BorisSidebar } from '~/components/boris/BorisSidebar'; +import { BorisUIDemo } from '~/components/boris/BorisUIDemo'; +import { Superpower } from '~/components/boris/Superpower'; +import { Card } from '~/components/containers/Card'; +import { Group } from '~/components/containers/Group'; import { Sticky } from '~/components/containers/Sticky'; +import { Tabs } from '~/components/dialogs/Tabs'; +import { BorisComments } from '~/containers/boris/BorisComments'; +import { Container } from '~/containers/main/Container'; +import { SidebarRouter } from '~/containers/main/SidebarRouter'; +import boris from '~/sprites/boris_robot.svg'; +import { BorisUsageStats } from '~/types/boris'; +import { useAuthProvider } from '~/utils/providers/AuthProvider'; + +import styles from './styles.module.scss'; type IProps = { title: string; diff --git a/src/layouts/FlowLayout/index.tsx b/src/layouts/FlowLayout/index.tsx index 0e77a6ff..9ce2f7f2 100644 --- a/src/layouts/FlowLayout/index.tsx +++ b/src/layouts/FlowLayout/index.tsx @@ -1,13 +1,16 @@ import React, { FC } from 'react'; + +import classNames from 'classnames'; + import { FlowGrid } from '~/components/flow/FlowGrid'; -import styles from './styles.module.scss'; +import { FlowSwiperHero } from '~/components/flow/FlowSwiperHero'; import { FlowStamp } from '~/containers/flow/FlowStamp'; import { SidebarRouter } from '~/containers/main/SidebarRouter'; -import classNames from 'classnames'; -import { FlowSwiperHero } from '~/components/flow/FlowSwiperHero'; -import { useFlowContext } from '~/utils/context/FlowContextProvider'; import { useUser } from '~/hooks/auth/useUser'; import { useInfiniteLoader } from '~/hooks/dom/useInfiniteLoader'; +import { useFlowContext } from '~/utils/context/FlowContextProvider'; + +import styles from './styles.module.scss'; interface Props { isFluid: boolean; diff --git a/src/layouts/LabLayout/index.tsx b/src/layouts/LabLayout/index.tsx index a46af300..b5c6fb23 100644 --- a/src/layouts/LabLayout/index.tsx +++ b/src/layouts/LabLayout/index.tsx @@ -1,14 +1,16 @@ import React, { FC } from 'react'; -import styles from './styles.module.scss'; -import { Sticky } from '~/components/containers/Sticky'; -import { Container } from '~/containers/main/Container'; -import { LabGrid } from '~/containers/lab/LabGrid'; + import { Group } from '~/components/containers/Group'; +import { Sticky } from '~/components/containers/Sticky'; import { LabHead } from '~/components/lab/LabHead'; +import { LabGrid } from '~/containers/lab/LabGrid'; import { LabStats } from '~/containers/lab/LabStats'; +import { Container } from '~/containers/main/Container'; import { SidebarRouter } from '~/containers/main/SidebarRouter'; import { useLabContext } from '~/utils/context/LabContextProvider'; +import styles from './styles.module.scss'; + interface IProps {} const LabLayout: FC = () => { diff --git a/src/layouts/NodeLayout/index.tsx b/src/layouts/NodeLayout/index.tsx index 1f0e8c82..e7b9c585 100644 --- a/src/layouts/NodeLayout/index.tsx +++ b/src/layouts/NodeLayout/index.tsx @@ -1,21 +1,21 @@ import React, { FC } from 'react'; + +import { Superpower } from '~/components/boris/Superpower'; +import { ScrollHelperBottom } from '~/components/common/ScrollHelperBottom'; import { Card } from '~/components/containers/Card'; - import { Footer } from '~/components/main/Footer'; - -import { SidebarRouter } from '~/containers/main/SidebarRouter'; +import { NodeTitle } from '~/components/node/NodeTitle'; import { Container } from '~/containers/main/Container'; -import { useNodeBlocks } from '~/hooks/node/useNodeBlocks'; +import { SidebarRouter } from '~/containers/main/SidebarRouter'; import { NodeBottomBlock } from '~/containers/node/NodeBottomBlock'; +import { useNodeActions } from '~/hooks/node/useNodeActions'; +import { useNodeBlocks } from '~/hooks/node/useNodeBlocks'; import { useNodeCoverImage } from '~/hooks/node/useNodeCoverImage'; +import { useNodePermissions } from '~/hooks/node/useNodePermissions'; +import { useNodeContext } from '~/utils/context/NodeContextProvider'; import styles from './styles.module.scss'; -import { useNodeContext } from '~/utils/context/NodeContextProvider'; -import { useNodePermissions } from '~/hooks/node/useNodePermissions'; -import { useNodeActions } from '~/hooks/node/useNodeActions'; -import { NodeTitle } from '~/components/node/NodeTitle'; -import { ScrollHelperBottom } from '~/components/common/ScrollHelperBottom'; -import { Superpower } from '~/components/boris/Superpower'; + type IProps = {}; diff --git a/src/layouts/ProfileLayout/index.tsx b/src/layouts/ProfileLayout/index.tsx index d0c68602..579fb6c7 100644 --- a/src/layouts/ProfileLayout/index.tsx +++ b/src/layouts/ProfileLayout/index.tsx @@ -1,15 +1,18 @@ import React, { FC } from 'react'; -import styles from './styles.module.scss'; -import { RouteComponentProps } from 'react-router'; -import { ProfilePageLeft } from '~/containers/profile/ProfilePageLeft'; -import { Container } from '~/containers/main/Container'; -import { FlowGrid } from '~/components/flow/FlowGrid'; -import { ProfilePageStats } from '~/containers/profile/ProfilePageStats'; -import { Card } from '~/components/containers/Card'; -import { useFlowStore } from '~/store/flow/useFlowStore'; + import { observer } from 'mobx-react-lite'; -import { useGetProfile } from '~/hooks/profile/useGetProfile'; +import { RouteComponentProps } from 'react-router'; + +import { Card } from '~/components/containers/Card'; +import { FlowGrid } from '~/components/flow/FlowGrid'; +import { Container } from '~/containers/main/Container'; +import { ProfilePageLeft } from '~/containers/profile/ProfilePageLeft'; +import { ProfilePageStats } from '~/containers/profile/ProfilePageStats'; import { useUser } from '~/hooks/auth/useUser'; +import { useGetProfile } from '~/hooks/profile/useGetProfile'; +import { useFlowStore } from '~/store/flow/useFlowStore'; + +import styles from './styles.module.scss'; type Props = RouteComponentProps<{ username: string }> & {}; diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index 13d559e0..541a2b68 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -1,20 +1,22 @@ -import { StoreContextProvider } from '~/utils/context/StoreContextProvider'; -import { getMOBXStore } from '~/store'; -import '~/styles/main.scss'; -import { ToastProvider } from '~/utils/providers/ToastProvider'; -import { Modal } from '~/containers/dialogs/Modal'; -import { Sprites } from '~/sprites/Sprites'; import React from 'react'; -import { BottomContainer } from '~/containers/main/BottomContainer'; -import { SWRConfigProvider } from '~/utils/providers/SWRConfigProvider'; -import { UserContextProvider } from '~/utils/context/UserContextProvider'; -import { DragDetectorProvider } from '~/hooks/dom/useDragDetector'; + import { PageCoverProvider } from '~/components/containers/PageCoverProvider'; -import { SearchProvider } from '~/utils/providers/SearchProvider'; -import { AudioPlayerProvider } from '~/utils/providers/AudioPlayerProvider'; -import { MetadataProvider } from '~/utils/providers/MetadataProvider'; -import { AuthProvider } from '~/utils/providers/AuthProvider'; +import { Modal } from '~/containers/dialogs/Modal'; +import { BottomContainer } from '~/containers/main/BottomContainer'; import { MainLayout } from '~/containers/main/MainLayout'; +import { DragDetectorProvider } from '~/hooks/dom/useDragDetector'; +import { Sprites } from '~/sprites/Sprites'; +import { getMOBXStore } from '~/store'; +import { StoreContextProvider } from '~/utils/context/StoreContextProvider'; +import { UserContextProvider } from '~/utils/context/UserContextProvider'; +import { AudioPlayerProvider } from '~/utils/providers/AudioPlayerProvider'; +import { AuthProvider } from '~/utils/providers/AuthProvider'; +import { MetadataProvider } from '~/utils/providers/MetadataProvider'; +import { SWRConfigProvider } from '~/utils/providers/SWRConfigProvider'; +import { SearchProvider } from '~/utils/providers/SearchProvider'; +import { ToastProvider } from '~/utils/providers/ToastProvider'; + +import '~/styles/main.scss'; const mobxStore = getMOBXStore(); diff --git a/src/pages/_document.tsx b/src/pages/_document.tsx index 88da4827..bb497f31 100644 --- a/src/pages/_document.tsx +++ b/src/pages/_document.tsx @@ -9,7 +9,7 @@ class MyDocument extends Document { render() { return ( - + @@ -23,8 +23,6 @@ class MyDocument extends Document { href="https://fonts.googleapis.com/css?family=Montserrat:400,500,600,700,800&display=swap&subset=cyrillic" rel="stylesheet" /> - - Убежище diff --git a/src/pages/boris.tsx b/src/pages/boris.tsx index b9c0682f..3f699307 100644 --- a/src/pages/boris.tsx +++ b/src/pages/boris.tsx @@ -1,12 +1,15 @@ import React, { VFC } from 'react'; + +import { observer } from 'mobx-react-lite'; + +import { useBoris } from '~/hooks/boris/useBoris'; +import { useNodeComments } from '~/hooks/comments/useNodeComments'; +import { useImageModal } from '~/hooks/navigation/useImageModal'; +import { useLoadNode } from '~/hooks/node/useLoadNode'; import { BorisLayout } from '~/layouts/BorisLayout'; import { CommentContextProvider } from '~/utils/context/CommentContextProvider'; -import { useImageModal } from '~/hooks/navigation/useImageModal'; -import { useNodeComments } from '~/hooks/comments/useNodeComments'; -import { useBoris } from '~/hooks/boris/useBoris'; import { NodeContextProvider } from '~/utils/context/NodeContextProvider'; -import { useLoadNode } from '~/hooks/node/useLoadNode'; -import { observer } from 'mobx-react-lite'; + const BorisPage: VFC = observer(() => { const { node, isLoading, update } = useLoadNode(696); diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 11da7987..17190a5a 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -1,9 +1,13 @@ import React, { FC } from 'react'; -import { FlowLayout } from '~/layouts/FlowLayout'; -import { useFlow } from '~/hooks/flow/useFlow'; -import { FlowContextProvider } from '~/utils/context/FlowContextProvider'; + import { observer } from 'mobx-react-lite'; + import { useGlobalLoader } from '~/hooks/dom/useGlobalLoader'; +import { useFlow } from '~/hooks/flow/useFlow'; +import { FlowLayout } from '~/layouts/FlowLayout'; +import { FlowContextProvider } from '~/utils/context/FlowContextProvider'; + + interface Props {} diff --git a/src/pages/lab.tsx b/src/pages/lab.tsx index 1ccd8e71..75baad32 100644 --- a/src/pages/lab.tsx +++ b/src/pages/lab.tsx @@ -1,4 +1,5 @@ import React, { VFC } from 'react'; + import { LabLayout } from '~/layouts/LabLayout'; import { LabProvider } from '~/utils/providers/LabProvider'; diff --git a/src/pages/node/[id].tsx b/src/pages/node/[id].tsx index 89247805..3daa252f 100644 --- a/src/pages/node/[id].tsx +++ b/src/pages/node/[id].tsx @@ -1,20 +1,22 @@ import React, { FC } from 'react'; -import { NodeLayout } from '~/layouts/NodeLayout'; + +import { observer } from 'mobx-react-lite'; +import { InferGetServerSidePropsType } from 'next'; import { RouteComponentProps } from 'react-router'; + +import { apiGetNode } from '~/api/node'; +import { useNodeComments } from '~/hooks/comments/useNodeComments'; import { useScrollToTop } from '~/hooks/dom/useScrollToTop'; import { useImageModal } from '~/hooks/navigation/useImageModal'; -import { useNodeComments } from '~/hooks/comments/useNodeComments'; -import { useNodeTags } from '~/hooks/node/useNodeTags'; -import { NodeContextProvider } from '~/utils/context/NodeContextProvider'; -import { CommentContextProvider } from '~/utils/context/CommentContextProvider'; -import { TagsContextProvider } from '~/utils/context/TagsContextProvider'; -import { useNodePermissions } from '~/hooks/node/useNodePermissions'; -import { NodeRelatedProvider } from '~/utils/providers/NodeRelatedProvider'; import { useLoadNode } from '~/hooks/node/useLoadNode'; -import { observer } from 'mobx-react-lite'; import { useNodePageParams } from '~/hooks/node/useNodePageParams'; -import { InferGetServerSidePropsType } from 'next'; -import { apiGetNode } from '~/api/node'; +import { useNodePermissions } from '~/hooks/node/useNodePermissions'; +import { useNodeTags } from '~/hooks/node/useNodeTags'; +import { NodeLayout } from '~/layouts/NodeLayout'; +import { CommentContextProvider } from '~/utils/context/CommentContextProvider'; +import { NodeContextProvider } from '~/utils/context/NodeContextProvider'; +import { TagsContextProvider } from '~/utils/context/TagsContextProvider'; +import { NodeRelatedProvider } from '~/utils/providers/NodeRelatedProvider'; export const getServerSideProps = async context => { if (!context.params?.id) { diff --git a/src/store/auth/AuthStore.ts b/src/store/auth/AuthStore.ts index d5c9cc0d..52cb63c3 100644 --- a/src/store/auth/AuthStore.ts +++ b/src/store/auth/AuthStore.ts @@ -1,7 +1,8 @@ -import { IUser } from '~/types/auth'; -import { EMPTY_USER } from '~/constants/auth'; import { makeAutoObservable } from 'mobx'; import { isHydrated, makePersistable } from 'mobx-persist-store'; + +import { EMPTY_USER } from '~/constants/auth'; +import { IUser } from '~/types/auth'; import { CONFIG } from '~/utils/config'; export class AuthStore { diff --git a/src/store/flow/FlowStore.ts b/src/store/flow/FlowStore.ts index c1ce628b..dab1c742 100644 --- a/src/store/flow/FlowStore.ts +++ b/src/store/flow/FlowStore.ts @@ -1,4 +1,5 @@ import { makeAutoObservable } from 'mobx'; + import { IFlowNode } from '~/types'; export class FlowStore { diff --git a/src/store/index.ts b/src/store/index.ts index b4734e10..3c21f8d2 100644 --- a/src/store/index.ts +++ b/src/store/index.ts @@ -1,10 +1,11 @@ import { makeAutoObservable } from 'mobx'; -import { FlowStore } from '~/store/flow/FlowStore'; -import { ModalStore } from '~/store/modal/ModalStore'; -import { LabStore } from '~/store/lab/LabStore'; -import { AuthStore } from '~/store/auth/AuthStore'; import { enableStaticRendering } from 'mobx-react-lite'; +import { AuthStore } from '~/store/auth/AuthStore'; +import { FlowStore } from '~/store/flow/FlowStore'; +import { LabStore } from '~/store/lab/LabStore'; +import { ModalStore } from '~/store/modal/ModalStore'; + export class Store { flow = new FlowStore(); modal = new ModalStore(); diff --git a/src/store/lab/LabStore.ts b/src/store/lab/LabStore.ts index 481b5414..c6152ad3 100644 --- a/src/store/lab/LabStore.ts +++ b/src/store/lab/LabStore.ts @@ -1,4 +1,5 @@ import { makeAutoObservable } from 'mobx'; + import { IFlowNode, ITag } from '~/types'; import { ILabNode } from '~/types/lab'; diff --git a/src/store/metadata/MetadataStore.tsx b/src/store/metadata/MetadataStore.tsx index ef82c37e..7ae48ad1 100644 --- a/src/store/metadata/MetadataStore.tsx +++ b/src/store/metadata/MetadataStore.tsx @@ -1,5 +1,6 @@ import { autorun, makeAutoObservable, runInAction } from 'mobx'; import { keys, values, without } from 'ramda'; + import { EmbedMetadata } from '~/types/metadata'; const MAX_QUEUE_SIZE = 25; diff --git a/src/store/modal/ModalStore.tsx b/src/store/modal/ModalStore.tsx index 784a1b44..b90ddaba 100644 --- a/src/store/modal/ModalStore.tsx +++ b/src/store/modal/ModalStore.tsx @@ -1,4 +1,5 @@ import { makeAutoObservable } from 'mobx'; + import { Dialog } from '~/constants/modal'; import { DialogContentProps } from '~/hooks/modal/useModal'; diff --git a/src/store/uploader/UploaderStore.ts b/src/store/uploader/UploaderStore.ts index 53c60b40..ef40de1e 100644 --- a/src/store/uploader/UploaderStore.ts +++ b/src/store/uploader/UploaderStore.ts @@ -1,9 +1,10 @@ import { makeAutoObservable, runInAction } from 'mobx'; +import { has, omit, values } from 'ramda'; + +import { ERROR_LITERAL, ERRORS } from '~/constants/errors'; +import { UploadType } from '~/constants/uploads'; import { IFile, UUID } from '~/types'; import { getFileType, uploadGetThumb } from '~/utils/uploader'; -import { has, omit, values } from 'ramda'; -import { UploadType } from '~/constants/uploads'; -import { ERROR_LITERAL, ERRORS } from '~/constants/errors'; export interface UploadStatus { id: UUID; diff --git a/src/types/auth/index.ts b/src/types/auth/index.ts index 8fabba0b..86779798 100644 --- a/src/types/auth/index.ts +++ b/src/types/auth/index.ts @@ -1,5 +1,5 @@ -import { IFile } from '~/types'; import { Role } from '~/constants/auth'; +import { IFile } from '~/types'; export interface IUser { id: number; diff --git a/src/types/index.ts b/src/types/index.ts index f9b6f7a1..8d4b166e 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -1,4 +1,5 @@ import { DetailedHTMLProps, InputHTMLAttributes, ReactElement } from 'react'; + import { ERRORS } from '~/constants/errors'; import { IUser } from '~/types/auth'; diff --git a/src/utils/api/index.ts b/src/utils/api/index.ts index 339cdf1e..87c47252 100644 --- a/src/utils/api/index.ts +++ b/src/utils/api/index.ts @@ -1,7 +1,8 @@ import axios, { AxiosError, AxiosResponse } from 'axios'; +import { assocPath } from 'ramda'; + import { API } from '~/constants/api'; import { getMOBXStore } from '~/store'; -import { assocPath } from 'ramda'; export const api = axios.create({ baseURL: API.BASE, diff --git a/src/utils/color.ts b/src/utils/color.ts index 197056f8..4a92b0ca 100644 --- a/src/utils/color.ts +++ b/src/utils/color.ts @@ -1,4 +1,5 @@ import { darken, desaturate, parseToHsla } from 'color2k'; + import { DEFAULT_DOMINANT_COLOR } from '~/constants/node'; export const normalizeBrightColor = (color?: string, saturationExp = 3, lightnessExp = 3) => { diff --git a/src/utils/context/CommentContextProvider.tsx b/src/utils/context/CommentContextProvider.tsx index 03c534d5..ba9f4e9a 100644 --- a/src/utils/context/CommentContextProvider.tsx +++ b/src/utils/context/CommentContextProvider.tsx @@ -1,6 +1,7 @@ -import { IComment, IFile } from '~/types'; import React, { createContext, FC, useContext } from 'react'; +import { IComment, IFile } from '~/types'; + export interface CommentProviderProps { comments: IComment[]; hasMore: boolean; diff --git a/src/utils/context/FlowContextProvider.tsx b/src/utils/context/FlowContextProvider.tsx index 0f35420e..229840ae 100644 --- a/src/utils/context/FlowContextProvider.tsx +++ b/src/utils/context/FlowContextProvider.tsx @@ -1,4 +1,5 @@ import React, { createContext, FC, useContext } from 'react'; + import { FlowDisplay, IFlowNode, INode } from '~/types'; export interface FlowContextProps { diff --git a/src/utils/context/LabContextProvider.tsx b/src/utils/context/LabContextProvider.tsx index 888e3974..cab61576 100644 --- a/src/utils/context/LabContextProvider.tsx +++ b/src/utils/context/LabContextProvider.tsx @@ -1,6 +1,7 @@ -import { ILabNode } from '~/types/lab'; import React, { createContext, FC, useContext } from 'react'; + import { IFlowNode, ITag } from '~/types'; +import { ILabNode } from '~/types/lab'; export interface LabContextProps { isLoading: boolean; diff --git a/src/utils/context/NodeContextProvider.tsx b/src/utils/context/NodeContextProvider.tsx index f56e5a8a..4c6d17d1 100644 --- a/src/utils/context/NodeContextProvider.tsx +++ b/src/utils/context/NodeContextProvider.tsx @@ -1,7 +1,8 @@ -import { INode } from '~/types'; -import { EMPTY_NODE } from '~/constants/node'; import React, { createContext, FC, useContext } from 'react'; +import { EMPTY_NODE } from '~/constants/node'; +import { INode } from '~/types'; + export interface NodeContextProps { node: INode; update: (node: Partial) => Promise; diff --git a/src/utils/context/NodeRelatedContextProvider.tsx b/src/utils/context/NodeRelatedContextProvider.tsx index d35731fd..eb24d95b 100644 --- a/src/utils/context/NodeRelatedContextProvider.tsx +++ b/src/utils/context/NodeRelatedContextProvider.tsx @@ -1,6 +1,7 @@ -import { INodeRelated } from '~/types/node'; import React, { createContext, FC, useContext } from 'react'; +import { INodeRelated } from '~/types/node'; + interface NodeRelatedProviderProps { related: INodeRelated; isLoading: boolean; diff --git a/src/utils/context/StoreContextProvider.tsx b/src/utils/context/StoreContextProvider.tsx index 3a0f91a3..f2ad01ae 100644 --- a/src/utils/context/StoreContextProvider.tsx +++ b/src/utils/context/StoreContextProvider.tsx @@ -1,7 +1,9 @@ import React, { createContext, FC, useContext } from 'react'; -import { Store } from '~/store'; + import { observer } from 'mobx-react-lite'; +import { Store } from '~/store'; + export const StoreContext = createContext(new Store()); export const StoreContextProvider: FC<{ store: Store }> = observer(({ children, store }) => { diff --git a/src/utils/context/TagsContextProvider.tsx b/src/utils/context/TagsContextProvider.tsx index eae247a1..668017f8 100644 --- a/src/utils/context/TagsContextProvider.tsx +++ b/src/utils/context/TagsContextProvider.tsx @@ -1,4 +1,5 @@ import React, { createContext, FC, useContext } from 'react'; + import { ITag } from '~/types'; export interface TagContextProps { diff --git a/src/utils/context/UploaderContextProvider.tsx b/src/utils/context/UploaderContextProvider.tsx index a59a60f0..251ba1c3 100644 --- a/src/utils/context/UploaderContextProvider.tsx +++ b/src/utils/context/UploaderContextProvider.tsx @@ -1,7 +1,8 @@ import React, { createContext, FC, useContext } from 'react'; + +import { EMPTY_FILE } from '~/constants/uploads'; import { useUploader } from '~/hooks/data/useUploader'; import { IFile } from '~/types'; -import { EMPTY_FILE } from '~/constants/uploads'; export type Uploader = ReturnType; diff --git a/src/utils/context/UserContextProvider.tsx b/src/utils/context/UserContextProvider.tsx index 647b0874..13ff6f28 100644 --- a/src/utils/context/UserContextProvider.tsx +++ b/src/utils/context/UserContextProvider.tsx @@ -1,8 +1,11 @@ import React, { createContext, FC, useContext } from 'react'; -import { IUser } from '~/types/auth'; + +import { observer } from 'mobx-react-lite'; + import { EMPTY_USER } from '~/constants/auth'; import { useUser } from '~/hooks/auth/useUser'; -import { observer } from 'mobx-react-lite'; +import { IUser } from '~/types/auth'; + const UserContext = createContext(EMPTY_USER); diff --git a/src/utils/dom.ts b/src/utils/dom.ts index 22c2c5ba..5e21e3ab 100644 --- a/src/utils/dom.ts +++ b/src/utils/dom.ts @@ -1,13 +1,15 @@ -import { IFile, ValueOf } from '~/types'; +import differenceInMinutes from 'date-fns/differenceInMinutes'; +import differenceInMonths from 'date-fns/differenceInMonths'; +import format from 'date-fns/format'; import formatDistanceToNow from 'date-fns/formatDistanceToNow'; import isAfter from 'date-fns/isAfter'; -import differenceInMonths from 'date-fns/differenceInMonths'; -import differenceInMinutes from 'date-fns/differenceInMinutes'; import ru from 'date-fns/locale/ru'; -import { PRESETS } from '~/constants/urls'; -import { COMMENT_BLOCK_DETECTORS, COMMENT_BLOCK_TYPES, ICommentBlock } from '~/constants/comment'; -import format from 'date-fns/format'; import { pipe } from 'ramda'; + +import { COMMENT_BLOCK_DETECTORS, COMMENT_BLOCK_TYPES, ICommentBlock } from '~/constants/comment'; +import { PRESETS } from '~/constants/urls'; +import { IFile, ValueOf } from '~/types'; +import { CONFIG } from '~/utils/config'; import { formatExclamations, formatTextClickableUsernames, @@ -19,7 +21,6 @@ import { formatTextTodos, } from '~/utils/formatText'; import { splitTextByYoutube, splitTextOmitEmpty } from '~/utils/splitText'; -import { CONFIG } from '~/utils/config'; function polarToCartesian(centerX, centerY, radius, angleInDegrees) { const angleInRadians = ((angleInDegrees - 90) * Math.PI) / 180.0; diff --git a/src/utils/errors/getErrorMessage.ts b/src/utils/errors/getErrorMessage.ts index 24b1f3fd..e1553778 100644 --- a/src/utils/errors/getErrorMessage.ts +++ b/src/utils/errors/getErrorMessage.ts @@ -1,4 +1,5 @@ import { has, path } from 'ramda'; + import { ERROR_LITERAL, ERRORS } from '~/constants/errors'; export const getErrorMessage = (error: unknown): string | undefined => { diff --git a/src/utils/errors/showToast.ts b/src/utils/errors/showToast.ts index 8a1f0284..e7e4b16f 100644 --- a/src/utils/errors/showToast.ts +++ b/src/utils/errors/showToast.ts @@ -1,5 +1,5 @@ -import { hideToast, showToastError } from '~/utils/toast'; import { getErrorMessage } from '~/utils/errors/getErrorMessage'; +import { hideToast, showToastError } from '~/utils/toast'; let toastId = ''; diff --git a/src/utils/fn.ts b/src/utils/fn.ts index 6eb02558..243cf703 100644 --- a/src/utils/fn.ts +++ b/src/utils/fn.ts @@ -1,6 +1,7 @@ -import { curry, insert, nth, path, remove } from 'ramda'; -import { IComment, ICommentGroup } from '~/types'; import { isAfter, isValid, parseISO } from 'date-fns'; +import { curry, insert, nth, path, remove } from 'ramda'; + +import { IComment, ICommentGroup } from '~/types'; export const moveArrItem = curry((at, to, list) => insert(to, nth(at, list), remove(at, 1, list))); export const objFromArray = (array: any[], key: string) => diff --git a/src/utils/formatText.ts b/src/utils/formatText.ts index abcfd6eb..89b1115d 100644 --- a/src/utils/formatText.ts +++ b/src/utils/formatText.ts @@ -1,6 +1,7 @@ import marked from 'marked'; -import { stripHTMLTags } from '~/utils/stripHTMLTags'; + import { EventMessageType } from '~/constants/events'; +import { stripHTMLTags } from '~/utils/stripHTMLTags'; /** * Cleans youtube urls diff --git a/src/utils/node.ts b/src/utils/node.ts index 3ac91a9a..41af7a71 100644 --- a/src/utils/node.ts +++ b/src/utils/node.ts @@ -1,8 +1,9 @@ +import { path } from 'ramda'; + import { Role } from '~/constants/auth'; +import { NODE_TYPES } from '~/constants/node'; import { ICommentGroup, INode } from '~/types'; import { IUser } from '~/types/auth'; -import { path } from 'ramda'; -import { NODE_TYPES } from '~/constants/node'; export const canEditNode = (node?: Partial, user?: Partial): boolean => path(['role'], user) === Role.Admin || path(['user', 'id'], node) === path(['id'], user); diff --git a/src/utils/providers/AudioPlayerProvider.tsx b/src/utils/providers/AudioPlayerProvider.tsx index 6b2ab02f..cc408a02 100644 --- a/src/utils/providers/AudioPlayerProvider.tsx +++ b/src/utils/providers/AudioPlayerProvider.tsx @@ -1,9 +1,11 @@ import React, { createContext, FC, useCallback, useContext, useEffect, useRef, useState } from 'react'; -import { IFile } from '~/types'; -import { getURL } from '~/utils/dom'; + import { path } from 'ramda'; + import { PlayerState } from '~/constants/player'; +import { IFile } from '~/types'; import { PlayerProgress } from '~/types/player'; +import { getURL } from '~/utils/dom'; interface AudioPlayerProps { file?: IFile; diff --git a/src/utils/providers/AuthProvider.tsx b/src/utils/providers/AuthProvider.tsx index 2a8c781f..a2391404 100644 --- a/src/utils/providers/AuthProvider.tsx +++ b/src/utils/providers/AuthProvider.tsx @@ -1,9 +1,11 @@ import { createContext, FC, useContext } from 'react'; -import { useRestorePasswordRedirect } from '~/hooks/auth/useRestorePasswordRedirect'; -import { useMessageEventReactions } from '~/hooks/auth/useMessageEventReactions'; + import { observer } from 'mobx-react-lite'; -import { useAuth } from '~/hooks/auth/useAuth'; + import { EMPTY_USER } from '~/constants/auth'; +import { useAuth } from '~/hooks/auth/useAuth'; +import { useMessageEventReactions } from '~/hooks/auth/useMessageEventReactions'; +import { useRestorePasswordRedirect } from '~/hooks/auth/useRestorePasswordRedirect'; interface AuthProviderContextType extends ReturnType {} diff --git a/src/utils/providers/LabProvider.tsx b/src/utils/providers/LabProvider.tsx index 8531893d..52dba8dd 100644 --- a/src/utils/providers/LabProvider.tsx +++ b/src/utils/providers/LabProvider.tsx @@ -1,6 +1,7 @@ import React, { FC } from 'react'; -import { LabContextProvider } from '~/utils/context/LabContextProvider'; + import { useLab } from '~/hooks/lab/useLab'; +import { LabContextProvider } from '~/utils/context/LabContextProvider'; interface LabProviderProps {} diff --git a/src/utils/providers/MetadataProvider.tsx b/src/utils/providers/MetadataProvider.tsx index 10ada1e5..fcf805ba 100644 --- a/src/utils/providers/MetadataProvider.tsx +++ b/src/utils/providers/MetadataProvider.tsx @@ -1,7 +1,9 @@ import React, { createContext, FC, useContext, useEffect } from 'react'; -import { MetadataStore } from '~/store/metadata/MetadataStore'; + import { observer, useLocalObservable } from 'mobx-react-lite'; + import { apiGetEmbedYoutube } from '~/api/metadata'; +import { MetadataStore } from '~/store/metadata/MetadataStore'; import { EmbedMetadata } from '~/types/metadata'; interface MetadataContextProps { diff --git a/src/utils/providers/NodeRelatedProvider.tsx b/src/utils/providers/NodeRelatedProvider.tsx index 7a4f5e58..f948d076 100644 --- a/src/utils/providers/NodeRelatedProvider.tsx +++ b/src/utils/providers/NodeRelatedProvider.tsx @@ -1,8 +1,9 @@ import React, { FC } from 'react'; -import { INode, ITag } from '~/types'; -import { NodeRelatedContextProvider } from '~/utils/context/NodeRelatedContextProvider'; -import { INodeRelated } from '~/types/node'; + import { useGetNodeRelated } from '~/hooks/node/useGetNodeRelated'; +import { INode, ITag } from '~/types'; +import { INodeRelated } from '~/types/node'; +import { NodeRelatedContextProvider } from '~/utils/context/NodeRelatedContextProvider'; interface NodeRelatedProviderProps { id: INode['id']; diff --git a/src/utils/providers/ProfileProvider.tsx b/src/utils/providers/ProfileProvider.tsx index 319b6972..4a7f0b8a 100644 --- a/src/utils/providers/ProfileProvider.tsx +++ b/src/utils/providers/ProfileProvider.tsx @@ -1,7 +1,8 @@ import { createContext, FC, useContext } from 'react'; -import { IUser } from '~/types/auth'; -import { useGetProfile } from '~/hooks/profile/useGetProfile'; + import { EMPTY_USER } from '~/constants/auth'; +import { useGetProfile } from '~/hooks/profile/useGetProfile'; +import { IUser } from '~/types/auth'; interface ProfileProviderProps { username: string; diff --git a/src/utils/providers/SWRConfigProvider.tsx b/src/utils/providers/SWRConfigProvider.tsx index 99382470..2f7bd67f 100644 --- a/src/utils/providers/SWRConfigProvider.tsx +++ b/src/utils/providers/SWRConfigProvider.tsx @@ -1,4 +1,5 @@ import React, { FC } from 'react'; + import { SWRConfig, SWRConfiguration } from 'swr'; const config: SWRConfiguration = { diff --git a/src/utils/providers/SearchProvider.tsx b/src/utils/providers/SearchProvider.tsx index b5e3495e..ace32e35 100644 --- a/src/utils/providers/SearchProvider.tsx +++ b/src/utils/providers/SearchProvider.tsx @@ -1,6 +1,7 @@ import React, { createContext, FC, useContext } from 'react'; -import { INode } from '~/types'; + import { useSearch } from '~/hooks/search/useSearch'; +import { INode } from '~/types'; export interface SearchContextProps { searchText: string; diff --git a/src/utils/providers/ToastProvider.tsx b/src/utils/providers/ToastProvider.tsx index bc8d46ee..8feaee26 100644 --- a/src/utils/providers/ToastProvider.tsx +++ b/src/utils/providers/ToastProvider.tsx @@ -1,6 +1,7 @@ -import { Toaster } from 'react-hot-toast'; import React from 'react'; +import { Toaster } from 'react-hot-toast'; + const containerStyle = { top: 10, left: 10, diff --git a/src/utils/toast/index.tsx b/src/utils/toast/index.tsx index 27a99e57..61a59862 100644 --- a/src/utils/toast/index.tsx +++ b/src/utils/toast/index.tsx @@ -1,10 +1,13 @@ import React from 'react'; -import toast from 'react-hot-toast'; -import styles from './styles.module.scss'; -import { ToastOptions } from 'react-hot-toast/dist/core/types'; + import classNames from 'classnames'; +import toast from 'react-hot-toast'; +import { ToastOptions } from 'react-hot-toast/dist/core/types'; + import { isTablet } from '~/constants/dom'; +import styles from './styles.module.scss'; + const defaultOptions: ToastOptions = { icon: null, duration: 3000, diff --git a/src/utils/uploader.ts b/src/utils/uploader.ts index 0c801e20..1abfcdc6 100644 --- a/src/utils/uploader.ts +++ b/src/utils/uploader.ts @@ -1,5 +1,5 @@ -import { isMimeOfImage } from '~/utils/validators'; import { FILE_MIMES, UploadType } from '~/constants/uploads'; +import { isMimeOfImage } from '~/utils/validators'; /** if file is image, returns data-uri of thumbnail */ export const uploadGetThumb = async file => { diff --git a/yarn.lock b/yarn.lock index 8c3c1ca2..10dfd02c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1373,6 +1373,13 @@ resolved "https://registry.yarnpkg.com/@next/env/-/env-12.0.7.tgz#316f7bd1b6b69f554d2676cfc91a16bc7e32ee79" integrity sha512-TNDqBV37wd95SiNdZsSUq8gnnrTwr+aN9wqy4Zxrxw4bC/jCHNsbK94DxjkG99VL30VCRXXDBTA1/Wa2jIpF9Q== +"@next/eslint-plugin-next@^12.0.8": + version "12.0.8" + resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-12.0.8.tgz#8bb026891dd3b61053e13289efcb163f66ea3dac" + integrity sha512-bf7O0Mvs1h3vIdbbi0hijG+6YG3ED/ebQfmUltrQSgGtHVKGADDoE2qQhwE+mrvxuz9BD8y3mJDOSy0PBLKGBA== + dependencies: + glob "7.1.7" + "@next/polyfill-module@12.0.7": version "12.0.7" resolved "https://registry.yarnpkg.com/@next/polyfill-module/-/polyfill-module-12.0.7.tgz#140e698557113cd3a3c0833f15ca8af1b608f2dc" @@ -4608,7 +4615,7 @@ eslint-plugin-flowtype@^8.0.3: lodash "^4.17.21" string-natural-compare "^3.0.1" -eslint-plugin-import@^2.25.3: +eslint-plugin-import@^2.25.3, eslint-plugin-import@^2.25.4: version "2.25.4" resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz#322f3f916a4e9e991ac7af32032c25ce313209f1" integrity sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA== @@ -5339,10 +5346,10 @@ glob-to-regexp@^0.4.1: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: - version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== +glob@7.1.7, glob@~7.1.1: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -5351,10 +5358,10 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, gl once "^1.3.0" path-is-absolute "^1.0.0" -glob@~7.1.1: - version "7.1.7" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== +glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4"