diff --git a/craco.config.js b/craco.config.js index 9e049ef..f5794c7 100644 --- a/craco.config.js +++ b/craco.config.js @@ -2,6 +2,8 @@ const CracoLessPlugin = require('craco-less'); module.exports = { devServer: { + + // proxy for local development. proxy: { '/api': { target: 'http://localhost:6010', @@ -14,6 +16,8 @@ module.exports = { }, plugins: [ { + + // less loader. plugin: CracoLessPlugin, options: { lessLoaderOptions: { diff --git a/src/common/model/matter/Matter.ts b/src/common/model/matter/Matter.ts index 1238660..6b9e0bf 100644 --- a/src/common/model/matter/Matter.ts +++ b/src/common/model/matter/Matter.ts @@ -3,7 +3,7 @@ import axios, { CancelTokenSource } from "axios"; import BaseEntity from "../base/BaseEntity"; import Filter from "../base/filter/Filter"; import HttpUtil from "../../util/HttpUtil"; -import FileUtil from "../../util/FileUtil"; +import FileUtil from "../../util/FileHelper"; import ImageUtil from "../../util/ImageUtil"; import EnvUtil from "../../util/EnvUtil"; import InputFilter from "../base/filter/InputFilter"; diff --git a/src/common/model/share/Share.ts b/src/common/model/share/Share.ts index ce88e70..378e107 100644 --- a/src/common/model/share/Share.ts +++ b/src/common/model/share/Share.ts @@ -1,9 +1,9 @@ import BaseEntity from "../base/BaseEntity"; import Matter from "../matter/Matter"; -import FileUtil from "../../util/FileUtil"; +import FileUtil from "../../util/FileHelper"; import EnvUtil from "../../util/EnvUtil"; -import { ShareType } from "./ShareType"; -import { ShareExpireOption, ShareExpireOptionMap } from "./ShareExpireOption"; +import {ShareType} from "./ShareType"; +import {ShareExpireOption, ShareExpireOptionMap} from "./ShareExpireOption"; import DateUtil from "../../util/DateUtil"; import SafeUtil from "../../util/SafeUtil"; import MessageBoxUtil from "../../util/MessageBoxUtil"; @@ -62,7 +62,10 @@ export default class Share extends BaseEntity { getIcon() { if (this.shareType === ShareType.MIX) { - return require("../../../assets/image/file/archive.svg"); + return FileUtil.getIcon( + "zip", + false + ); } else { return FileUtil.getIcon( this.name, @@ -135,7 +138,7 @@ export default class Share extends BaseEntity { ) { this.httpPost( Share.URL_DELETE_BATCH, - { uuids: uuids }, + {uuids: uuids}, function (response: any) { SafeUtil.safeCallback(successCallback)(response); }, diff --git a/src/common/util/FileUtil.ts b/src/common/util/FileHelper.tsx similarity index 81% rename from src/common/util/FileUtil.ts rename to src/common/util/FileHelper.tsx index f125b21..f3489ad 100644 --- a/src/common/util/FileUtil.ts +++ b/src/common/util/FileHelper.tsx @@ -2,6 +2,18 @@ import MimeUtil from "./MimeUtil"; import StringUtil from "./StringUtil"; import Lang from "../model/global/Lang"; import CSV from "comma-separated-values"; +import archiveSvg from "../../assets/image/file/archive.svg"; +import audioSvg from "../../assets/image/file/audio.svg"; +import docSvg from "../../assets/image/file/doc.svg"; +import fileSvg from "../../assets/image/file/file.svg"; +import folderSvg from "../../assets/image/file/folder.svg"; +import imageSvg from "../../assets/image/file/image.svg"; +import pdfSvg from "../../assets/image/file/pdf.svg"; +import pptSvg from "../../assets/image/file/ppt.svg"; +import psdSvg from "../../assets/image/file/psd.svg"; +import textSvg from "../../assets/image/file/text.svg"; +import videoSvg from "../../assets/image/file/video.svg"; +import xlsSvg from "../../assets/image/file/xls.svg"; export default class FileUtil { static isImage(name: string | null): boolean { @@ -74,30 +86,30 @@ export default class FileUtil { */ static getIcon(name: string | null, idDir: boolean = false): any { if (idDir) { - return require("../../assets/image/file/folder.svg"); + return folderSvg; } if (FileUtil.isPdf(name)) { - return require("../../assets/image/file/pdf.svg"); + return pdfSvg; } else if (FileUtil.isDoc(name)) { - return require("../../assets/image/file/doc.svg"); + return docSvg; } else if (FileUtil.isPpt(name)) { - return require("../../assets/image/file/ppt.svg"); + return pptSvg; } else if (FileUtil.isXls(name)) { - return require("../../assets/image/file/xls.svg"); + return xlsSvg; } else if (FileUtil.isAudio(name)) { - return require("../../assets/image/file/audio.svg"); + return audioSvg; } else if ( FileUtil.isVideo(name) || MimeUtil.getExtension(name) === ".mkv" ) { - return require("../../assets/image/file/video.svg"); + return videoSvg; } else if (FileUtil.isText(name)) { - return require("../../assets/image/file/text.svg"); + return textSvg; } else if (FileUtil.isPsd(name)) { - return require("../../assets/image/file/psd.svg"); + return psdSvg; } else if (FileUtil.isImage(name)) { - return require("../../assets/image/file/image.svg"); + return imageSvg; } else if ( StringUtil.endWith(name, "zip") || StringUtil.endWith(name, "rar") || @@ -106,9 +118,9 @@ export default class FileUtil { StringUtil.endWith(name, "tar") || StringUtil.endWith(name, "gz") ) { - return require("../../assets/image/file/archive.svg"); + return archiveSvg; } else { - return require("../../assets/image/file/file.svg"); + return fileSvg; } } diff --git a/src/pages/dashboard/Index.tsx b/src/pages/dashboard/Index.tsx index 2db76f4..fc4087a 100644 --- a/src/pages/dashboard/Index.tsx +++ b/src/pages/dashboard/Index.tsx @@ -12,7 +12,7 @@ import Pager from "../../common/model/base/Pager"; import Dashboard from '../../common/model/dashboard/Dashboard'; import DateUtil from '../../common/util/DateUtil'; import SortDirection from "../../common/model/base/SortDirection"; -import FileUtil from "../../common/util/FileUtil"; +import FileUtil from "../../common/util/FileHelper"; import Matter from '../../common/model/matter/Matter'; import Lang from "../../common/model/global/Lang"; import MessageBoxUtil from "../../common/util/MessageBoxUtil"; diff --git a/src/pages/matter/List.tsx b/src/pages/matter/List.tsx index 4d05bab..1953fd3 100644 --- a/src/pages/matter/List.tsx +++ b/src/pages/matter/List.tsx @@ -45,7 +45,7 @@ import ShareDialogModal from "../share/widget/ShareDialogModal"; import BreadcrumbModel from "../../common/model/base/option/BreadcrumbModel"; import BreadcrumbPanel from "../widget/BreadcrumbPanel"; import Lang from "../../common/model/global/Lang"; -import FileUtil from "../../common/util/FileUtil"; +import FileUtil from "../../common/util/FileHelper"; import SafeUtil from "../../common/util/SafeUtil"; import MatterSortPanel from "./widget/MatterSortPanel"; import { diff --git a/src/pages/matter/widget/imageCache/ImageCachePanel.tsx b/src/pages/matter/widget/imageCache/ImageCachePanel.tsx index c032898..801a50e 100644 --- a/src/pages/matter/widget/imageCache/ImageCachePanel.tsx +++ b/src/pages/matter/widget/imageCache/ImageCachePanel.tsx @@ -11,7 +11,7 @@ import { SmallDashOutlined, } from "@ant-design/icons"; import MessageBoxUtil from "../../../../common/util/MessageBoxUtil"; -import FileUtil from "../../../../common/util/FileUtil"; +import FileUtil from "../../../../common/util/FileHelper"; import DateUtil from "../../../../common/util/DateUtil"; import Expanding from "../../../widget/Expanding"; import "./ImageCachePanel.less"; diff --git a/src/pages/preference/Edit.tsx b/src/pages/preference/Edit.tsx index 9acaae7..2524361 100644 --- a/src/pages/preference/Edit.tsx +++ b/src/pages/preference/Edit.tsx @@ -9,7 +9,7 @@ import {Button, Form, Input, InputNumber, Switch} from "antd"; import {SaveOutlined} from "@ant-design/icons"; import TankContentCard from "../widget/TankContentCard"; import Preference from "../../common/model/preference/Preference"; -import FileUtil from "../../common/util/FileUtil"; +import FileUtil from "../../common/util/FileHelper"; import {FormInstance} from "antd/lib/form"; import MessageBoxUtil from "../../common/util/MessageBoxUtil"; import Sun from "../../common/model/global/Sun"; diff --git a/src/pages/preference/Index.tsx b/src/pages/preference/Index.tsx index 0e55548..8adaf43 100644 --- a/src/pages/preference/Index.tsx +++ b/src/pages/preference/Index.tsx @@ -14,7 +14,7 @@ import { import InfoCell from "../widget/InfoCell"; import Preference from "../../common/model/preference/Preference"; import TankContentCard from "../widget/TankContentCard"; -import FileUtil from "../../common/util/FileUtil"; +import FileUtil from "../../common/util/FileHelper"; import ImagePreviewer from "../widget/previewer/ImagePreviewer"; import Lang from "../../common/model/global/Lang"; import SingleTextModal from "../widget/SingleTextModal"; diff --git a/src/pages/user/Detail.tsx b/src/pages/user/Detail.tsx index fa8ba26..235a33a 100644 --- a/src/pages/user/Detail.tsx +++ b/src/pages/user/Detail.tsx @@ -11,7 +11,7 @@ import TankContentCard from "../widget/TankContentCard"; import { Link, RouteComponentProps } from "react-router-dom"; import ImagePreviewer from "../widget/previewer/ImagePreviewer"; import { UserRole, UserRoleMap } from "../../common/model/user/UserRole"; -import FileUtil from "../../common/util/FileUtil"; +import FileUtil from "../../common/util/FileHelper"; import { UserStatus, UserStatusMap } from "../../common/model/user/UserStatus"; import BrowserUtil from "../../common/util/BrowserUtil"; import SingleTextModal from "../widget/SingleTextModal"; diff --git a/src/pages/user/Edit.tsx b/src/pages/user/Edit.tsx index 3ba7438..067ba4e 100644 --- a/src/pages/user/Edit.tsx +++ b/src/pages/user/Edit.tsx @@ -6,7 +6,7 @@ import {Button, Form, Input, InputNumber, Select} from 'antd'; import User from "../../common/model/user/User"; import Moon from "../../common/model/global/Moon"; import TankTitle from "../widget/TankTitle"; -import FileUtil from "../../common/util/FileUtil"; +import FileUtil from "../../common/util/FileHelper"; import TankContentCard from "../widget/TankContentCard"; import {FormInstance} from "antd/lib/form"; import {SaveOutlined} from "@ant-design/icons/lib"; diff --git a/src/pages/user/List.tsx b/src/pages/user/List.tsx index 48b5f35..2f29405 100644 --- a/src/pages/user/List.tsx +++ b/src/pages/user/List.tsx @@ -4,7 +4,7 @@ import "./List.less"; import SortDirection from "../../common/model/base/SortDirection"; import Pager from "../../common/model/base/Pager"; import StringUtil from "../../common/util/StringUtil"; -import FileUtil from "../../common/util/FileUtil"; +import FileUtil from "../../common/util/FileHelper"; import DateUtil from "../../common/util/DateUtil"; import FilterPanel from "../widget/filter/FilterPanel"; import TableEmpty from "../widget/TableEmpty"; diff --git a/src/pages/user/widget/MobileUserPanel.tsx b/src/pages/user/widget/MobileUserPanel.tsx index f5dca4f..fcf7770 100644 --- a/src/pages/user/widget/MobileUserPanel.tsx +++ b/src/pages/user/widget/MobileUserPanel.tsx @@ -6,7 +6,7 @@ import User from "../../../common/model/user/User"; import { Link } from "react-router-dom"; import { UserRoleMap } from "../../../common/model/user/UserRole"; import { Tag, Tooltip } from "antd"; -import FileUtil from "../../../common/util/FileUtil"; +import FileUtil from "../../../common/util/FileHelper"; import { UserStatus, UserStatusMap, diff --git a/src/pages/widget/previewer/BrowserPreviewer.tsx b/src/pages/widget/previewer/BrowserPreviewer.tsx index 9ee38b6..65d13bd 100644 --- a/src/pages/widget/previewer/BrowserPreviewer.tsx +++ b/src/pages/widget/previewer/BrowserPreviewer.tsx @@ -1,7 +1,7 @@ import "./BrowserPreviewer.less" import React from "react"; import * as ReactDOM from 'react-dom'; -import FileUtil from "../../../common/util/FileUtil"; +import FileUtil from "../../../common/util/FileHelper"; import {CloseOutlined} from "@ant-design/icons"; interface IProps { diff --git a/src/react-app-env.d.ts b/src/react-app-env.d.ts index 772a351..d81a2ca 100644 --- a/src/react-app-env.d.ts +++ b/src/react-app-env.d.ts @@ -1,69 +1,4 @@ -/// -/// -/// - -declare namespace NodeJS { - interface ProcessEnv { - readonly NODE_ENV: 'development' | 'production' | 'test'; - readonly PUBLIC_URL: string; - } -} - -declare module '*.bmp' { - const src: string; - export default src; -} - -declare module '*.gif' { - const src: string; - export default src; -} - -declare module '*.jpg' { - const src: string; - export default src; -} - -declare module '*.jpeg' { - const src: string; - export default src; -} - -declare module '*.png' { - const src: string; - export default src; -} - -declare module '*.webp' { - const src: string; - export default src; -} - -declare module '*.svg' { - import * as React from 'react'; - - export const ReactComponent: React.FunctionComponent & { title?: string }>; - - const src: string; - export default src; -} - -declare module '*.module.css' { - const classes: { readonly [key: string]: string }; - export default classes; -} - -declare module '*.module.scss' { - const classes: { readonly [key: string]: string }; - export default classes; -} - -declare module '*.module.sass' { - const classes: { readonly [key: string]: string }; - export default classes; -} +/// declare module 'velocity-animate' { import Velocity from 'velocity-animate';