提交 9bc87b43 编写于 作者: L lm83680

add react-quill #富文本编辑器

上级 8f5f501d
......@@ -7,11 +7,12 @@
------
- add route
- add react-route-dom v6
- add sass
- add axios 及 封装api请求
- add zustand #状态管理工具
- add icons #link:https://react-icons.github.io/react-icons
- add chakra-ui #link:https://chakra-ui.com/docs
- add react-spring #动画库 link:https://www.react-spring.dev
- add use-gesture #手势交互 link:https://use-gesture.netlify.app/docs/
\ No newline at end of file
- add use-gesture #手势交互 link:https://use-gesture.netlify.app/docs/
- add react-quill #富文本编辑器
\ No newline at end of file
此差异已折叠。
// quill 富文本编辑器
import "react-quill/dist/quill.snow.css";
import { useState } from "react";
import { useImperativeHandle } from 'react';
import ReactQuill from "react-quill";
const ReactQuillEditor = (props:any) => {
const [value, setValue] = useState("");
const handleChangeValue = (value: string) => setValue(value);
const getModules = () => ({
toolbar: {
container: [
[{ header: [1, 2, 3, 4, 5, false] }],
['bold', 'italic', 'underline', 'strike', 'blockquote'],
[{ color: [] }, { background: [] }],
[{ list: 'ordered' }, { indent: '-1' }, { indent: '+1' }, { align: [] }], ['link', 'image', 'linkIcon']]
},
});
useImperativeHandle(props.cRef, () => ({
value:value,
}));
return (
<ReactQuill placeholder='键入文字...' theme="snow" value={value} onChange={handleChangeValue} modules={getModules()} />
);
};
export default ReactQuillEditor;
\ No newline at end of file
// import React from 'react'
// import ReactDOM from 'react-dom/client'
// import MyRouter from "./router/index"
// import "./main.css"
// // 按需引入 chakra UI
// import { ChakraBaseProvider, extendBaseTheme } from '@chakra-ui/react'
// import chakraTheme from '@chakra-ui/theme'
// const { Button, Radio, PinInput, FormLabel, Input, Card, Heading,Divider,Avatar} = chakraTheme.components
// const theme = extendBaseTheme({
// components: {
// Button, Radio, PinInput, FormLabel, Input, Card, Heading,Divider,Avatar
// },
// })
// ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render(
// <React.StrictMode>
// <ChakraBaseProvider theme={theme}>
// <MyRouter />
// </ChakraBaseProvider>
// </React.StrictMode>,
// )
//全局引入
import ReactDOM from 'react-dom/client'
import MyRouter from "./router/index"
import "./main.css"
......
import { Routes, Route, BrowserRouter as Router } from "react-router-dom";
import { Routes, Route, BrowserRouter as Router, useNavigate } from "react-router-dom";
import { Suspense } from "react";
import routeList from "./routeList"
import "./loading.css"
......@@ -18,7 +18,13 @@ const MyRouter = () => (
<Routes>
{
routeList.map((item: any, index) => (
<Route key={index} path={item.path} element={<DomTitle item={item} />}></Route>
<Route key={index} path={item.path} element={<DomTitle item={item} />}>
{
item.children && item.children.map((citem: any, cindex:any) => (
<Route key={cindex} path={item.path+citem.path} element={<DomTitle item={citem} />}></Route>
))
}
</Route>
))
}
</Routes>
......
import { lazy } from "react";
export default [
{ path: "/home",title:"Hello vite" ,name:"首页",component:lazy(() => import("../views/home")) },
{ path: "/test",title:"Test module",name:"测试", component:lazy(() => import("../views/test")) },
{ path: "/quill",title:"使用富文本",name:"富文本", component:lazy(() => import("../views/quill")) },
{ path: "/icon",title:"使用图标",name:"图标", component:lazy(() => import("../views/icon")) },
]
\ No newline at end of file
import { lazy } from "react";
import layoutChildren from "./layoutChildren";
export default [
{ path: "/",title:"Test module", component:lazy(() => import("../views/test")) },
{ path: "/home",title:"Hello vite" ,component:lazy(() => import("../views/home")) },
{ path: "/login",title:"Hello,今天早点下班", component:lazy(() => import("../views/login")) },
{ path: "/layout",title:"Hello,今天早点下班", component:lazy(() => import("../views/layout"))},
{ path: "*",title:"告诉老默我想吃鱼了" , component: lazy(() => import("./404")) }
{ path: "/", title: "Test module", component: lazy(() => import("../views/test")) },
{ path: "/home", title: "Hello vite", component: lazy(() => import("../views/home")) },
{ path: "/login", title: "Hello,今天早点下班", component: lazy(() => import("../views/login")) },
{ path: "/layout", title: "Hello,今天早点下班", component: lazy(() => import("../views/layout")), children: layoutChildren },
{ path: "*", title: "告诉老默我想吃鱼了", component: lazy(() => import("./404")) }
];
\ No newline at end of file
//用户鉴权模块
/*
isAdmin : 是否超级管理员
route : 用户可用路由表
getAuthLayout : 用户可用路由表
*/
import layoutChildren from '../../router/layoutChildren';
import create from 'zustand'
import { persist } from "zustand/middleware"
let auth: any = (set: Function, get: Function) => ({
isAdmin: false,
route: [],
authNum: 0,
getAuthLayout:() =>{return layoutChildren},
addAuthNum: () => set((state: { authNum: number; }) => ({ authNum: state.authNum + 1 })),
subAuthNum: () => set((state: { authNum: number; }) => ({ authNum: state.authNum - 1 })),
});
......
import { Box,Text } from "@chakra-ui/react"
import { Box, Text ,Button } from "@chakra-ui/react"
import ReactQuillEditor from "../../components/quill"
import { useRef } from "react";
function Home() {
const exampleRef = useRef(null);
const getQuillValue = ()=>{
console.log(exampleRef.current&&exampleRef.current["value"])
}
return (
<Box>
<Text as="b">希望许过的愿一路生花</Text>
<ReactQuillEditor cRef={exampleRef} />
<Button onClick={()=>{getQuillValue()}}>getValue</Button>
</Box>
)
}
......
import { Box, Text, Code, Tooltip } from "@chakra-ui/react"
import { GiHelp } from "react-icons/gi";
function Home() {
return (
<Box h={"100%"} pt={8}>
<Text color={"gray.600"} position={"absolute"} mt={-8}>你可以在其中搜索任意的图标,它所在的库为它名字的驼峰前缀, 举个栗子 VscAccount 所在库 为 "react-icons/<Code colorScheme='red' children="vsc" />";</Text>
<iframe width={"100%"} height={"100%"} src="https://react-icons.github.io/react-icons/icons?name=fa" ></iframe>
</Box>
)
}
export default Home
\ No newline at end of file
import { Avatar, Box, HStack, MenuButton, Text, Menu, MenuList, MenuItem, Button } from "@chakra-ui/react"
import { useState } from "react"
import { FaAngleDown } from "react-icons/fa"
import {Outlet} from "react-router-dom"
import { Outlet,useLocation,useNavigate } from "react-router-dom"
import store from '../../store'
function LayoutPage() {
let pageName = useState("吸鼠霸王");
const location = useLocation();
const getAuthLayout = store.auth(((state: { getAuthLayout: Function }) => state.getAuthLayout));
pageName = getAuthLayout().find(function(obj:any) { return ('/layout'+obj.path)=== location.pathname}).name;
const navigator = useNavigate();
const iNav = (path:string)=>navigator(path);
return (
<Box h={"100vh"} w={"100vw"} display="flex" flexDirection={"column"}>
<Box h={120} display="flex" px={16} alignItems="center" justifyContent="space-between">
<Box h={"100vh"} w={"100vw"} display="flex" flexDirection={"column"}>
<Box flexShrink={0} h={"80px"} display="flex" px={16} alignItems="center" justifyContent="space-between">
<Text as="b" fontSize={32}>Layout</Text>
<HStack>
<Box mr={12}>
<Menu>
<MenuButton textAlign={"left"} w={240} as={Button} rightIcon={<FaAngleDown />}>
<Text as="b" fontSize={16}>首页</Text>
<Text as="b" fontSize={16}><>{pageName}</></Text>
</MenuButton>
<MenuList>
<MenuItem w={240} display="flex" justifyContent={"space-between"}>
<Text as="b" >登录</Text>
<Text >/login</Text>
</MenuItem>
<MenuItem w={240} display="flex" justifyContent={"space-between"}>
<Text as="b" >测试</Text>
<Text >/</Text>
</MenuItem>
{
getAuthLayout().map((item: any, index: any) => {
return <MenuItem key={index} w={240} display="flex" justifyContent={"space-between"} onClick={()=>iNav('/layout'+item.path)} >
<Text as="b" >{item.name}</Text>
<Text color={"gray.300"}>{item.path}</Text>
</MenuItem>
})
}
</MenuList>
</Menu>
</Box>
......@@ -29,7 +37,6 @@ function LayoutPage() {
<Text as="b" fontSize={16}>吸鼠霸王</Text>
</MenuButton>
<MenuList>
<MenuItem>个人资料</MenuItem>
<MenuItem color="gray.300" cursor="not-allowed">查看消息</MenuItem>
<MenuItem color="gray.300" cursor="not-allowed">修改密码</MenuItem>
<MenuItem color="red.500">退出登录</MenuItem>
......@@ -37,9 +44,8 @@ function LayoutPage() {
</Menu>
<Avatar name='吸鼠霸王' src='http://q1.qlogo.cn/g?b=qq&nk=762444787&s=640' />
</HStack>
</Box>
<Box w="100vw" flex="1">
<Box w="100vw" flex="1" px={12} >
<Outlet />
</Box>
</Box>
......
import { Box ,Button, HStack, useToast } from "@chakra-ui/react"
import ReactQuillEditor from "../../components/quill"
import { useRef } from "react";
function Home() {
const exampleRef = useRef(null);
const toast = useToast();
const getQuillValue = ()=>{
toast({
title: 'Success',
description: exampleRef.current&&exampleRef.current["value"],
status: 'success',
duration: 9000,
isClosable: true,
})
}
return (
<Box>
<ReactQuillEditor cRef={exampleRef} />
<HStack my={4} display="flex" justifyContent={"flex-end"}>
<Button colorScheme='blue' onClick={()=>{getQuillValue()}}>getValue</Button>
</HStack>
</Box>
)
}
export default Home
\ No newline at end of file
......@@ -2508,6 +2508,13 @@
"resolved" "https://registry.npmmirror.com/@types/prop-types/-/prop-types-15.7.5.tgz"
"version" "15.7.5"
"@types/quill@^1.3.10":
"integrity" "sha512-IhW3fPW+bkt9MLNlycw8u8fWb7oO7W5URC9MfZYHBlA24rex9rs23D5DETChu1zvgVdc5ka64ICjJOgQMr6Shw=="
"resolved" "https://registry.npmmirror.com/@types/quill/-/quill-1.3.10.tgz"
"version" "1.3.10"
dependencies:
"parchment" "^1.1.2"
"@types/react-dom@^18.0.10":
"integrity" "sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg=="
"resolved" "https://registry.npmmirror.com/@types/react-dom/-/react-dom-18.0.10.tgz"
......@@ -2967,6 +2974,14 @@
"union-value" "^1.0.0"
"unset-value" "^1.0.0"
"call-bind@^1.0.2":
"integrity" "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA=="
"resolved" "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.2.tgz"
"version" "1.0.2"
dependencies:
"function-bind" "^1.1.1"
"get-intrinsic" "^1.0.2"
"caller-callsite@^2.0.0":
"integrity" "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ=="
"resolved" "https://registry.npmmirror.com/caller-callsite/-/caller-callsite-2.0.0.tgz"
......@@ -3118,6 +3133,11 @@
"resolved" "https://registry.npmmirror.com/clone/-/clone-1.0.4.tgz"
"version" "1.0.4"
"clone@^2.1.1":
"integrity" "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w=="
"resolved" "https://registry.npmmirror.com/clone/-/clone-2.1.2.tgz"
"version" "2.1.2"
"collection-visit@^1.0.0":
"integrity" "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw=="
"resolved" "https://registry.npmmirror.com/collection-visit/-/collection-visit-1.0.0.tgz"
......@@ -3368,6 +3388,18 @@
"resolved" "https://registry.npmmirror.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz"
"version" "0.2.2"
"deep-equal@^1.0.1":
"integrity" "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g=="
"resolved" "https://registry.npmmirror.com/deep-equal/-/deep-equal-1.1.1.tgz"
"version" "1.1.1"
dependencies:
"is-arguments" "^1.0.4"
"is-date-object" "^1.0.1"
"is-regex" "^1.0.4"
"object-is" "^1.0.1"
"object-keys" "^1.1.1"
"regexp.prototype.flags" "^1.2.0"
"deepmerge@^3.2.0":
"integrity" "sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA=="
"resolved" "https://registry.npmmirror.com/deepmerge/-/deepmerge-3.3.0.tgz"
......@@ -3380,6 +3412,14 @@
dependencies:
"clone" "^1.0.2"
"define-properties@^1.1.3":
"integrity" "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA=="
"resolved" "https://registry.npmmirror.com/define-properties/-/define-properties-1.2.0.tgz"
"version" "1.2.0"
dependencies:
"has-property-descriptors" "^1.0.0"
"object-keys" "^1.1.1"
"define-property@^0.2.5":
"integrity" "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA=="
"resolved" "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz"
......@@ -3563,6 +3603,11 @@
"resolved" "https://registry.npmmirror.com/event-target-shim/-/event-target-shim-5.0.1.tgz"
"version" "5.0.1"
"eventemitter3@^2.0.3":
"integrity" "sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg=="
"resolved" "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-2.0.3.tgz"
"version" "2.0.3"
"execa@^1.0.0":
"integrity" "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA=="
"resolved" "https://registry.npmmirror.com/execa/-/execa-1.0.0.tgz"
......@@ -3604,6 +3649,11 @@
"assign-symbols" "^1.0.0"
"is-extendable" "^1.0.1"
"extend@^3.0.2":
"integrity" "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
"resolved" "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz"
"version" "3.0.2"
"extglob@^2.0.4":
"integrity" "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw=="
"resolved" "https://registry.npmmirror.com/extglob/-/extglob-2.0.4.tgz"
......@@ -3618,6 +3668,11 @@
"snapdragon" "^0.8.1"
"to-regex" "^3.0.1"
"fast-diff@1.1.2":
"integrity" "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig=="
"resolved" "https://registry.npmmirror.com/fast-diff/-/fast-diff-1.1.2.tgz"
"version" "1.1.2"
"fb-watchman@^2.0.0":
"integrity" "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA=="
"resolved" "https://registry.npmmirror.com/fb-watchman/-/fb-watchman-2.0.2.tgz"
......@@ -3772,6 +3827,11 @@
"resolved" "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz"
"version" "1.1.1"
"functions-have-names@^1.2.2":
"integrity" "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ=="
"resolved" "https://registry.npmmirror.com/functions-have-names/-/functions-have-names-1.2.3.tgz"
"version" "1.2.3"
"gensync@^1.0.0-beta.2":
"integrity" "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="
"resolved" "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz"
......@@ -3782,6 +3842,15 @@
"resolved" "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz"
"version" "2.0.5"
"get-intrinsic@^1.0.2", "get-intrinsic@^1.1.1":
"integrity" "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q=="
"resolved" "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz"
"version" "1.2.0"
dependencies:
"function-bind" "^1.1.1"
"has" "^1.0.3"
"has-symbols" "^1.0.3"
"get-nonce@^1.0.0":
"integrity" "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q=="
"resolved" "https://registry.npmmirror.com/get-nonce/-/get-nonce-1.0.1.tgz"
......@@ -3838,6 +3907,25 @@
"resolved" "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz"
"version" "4.0.0"
"has-property-descriptors@^1.0.0":
"integrity" "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ=="
"resolved" "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz"
"version" "1.0.0"
dependencies:
"get-intrinsic" "^1.1.1"
"has-symbols@^1.0.2", "has-symbols@^1.0.3":
"integrity" "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
"resolved" "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz"
"version" "1.0.3"
"has-tostringtag@^1.0.0":
"integrity" "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ=="
"resolved" "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz"
"version" "1.0.0"
dependencies:
"has-symbols" "^1.0.2"
"has-value@^0.3.1":
"integrity" "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q=="
"resolved" "https://registry.npmmirror.com/has-value/-/has-value-0.3.1.tgz"
......@@ -3993,6 +4081,14 @@
dependencies:
"kind-of" "^6.0.0"
"is-arguments@^1.0.4":
"integrity" "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA=="
"resolved" "https://registry.npmmirror.com/is-arguments/-/is-arguments-1.1.1.tgz"
"version" "1.1.1"
dependencies:
"call-bind" "^1.0.2"
"has-tostringtag" "^1.0.0"
"is-arrayish@^0.2.1":
"integrity" "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="
"resolved" "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.2.1.tgz"
......@@ -4031,6 +4127,13 @@
dependencies:
"kind-of" "^6.0.0"
"is-date-object@^1.0.1":
"integrity" "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ=="
"resolved" "https://registry.npmmirror.com/is-date-object/-/is-date-object-1.0.5.tgz"
"version" "1.0.5"
dependencies:
"has-tostringtag" "^1.0.0"
"is-descriptor@^0.1.0":
"integrity" "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg=="
"resolved" "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz"
......@@ -4117,6 +4220,14 @@
dependencies:
"isobject" "^3.0.1"
"is-regex@^1.0.4":
"integrity" "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg=="
"resolved" "https://registry.npmmirror.com/is-regex/-/is-regex-1.1.4.tgz"
"version" "1.1.4"
dependencies:
"call-bind" "^1.0.2"
"has-tostringtag" "^1.0.0"
"is-stream@^1.1.0":
"integrity" "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ=="
"resolved" "https://registry.npmmirror.com/is-stream/-/is-stream-1.1.0.tgz"
......@@ -4444,6 +4555,11 @@
"resolved" "https://registry.npmmirror.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz"
"version" "4.1.1"
"lodash@^4.17.4":
"integrity" "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
"resolved" "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz"
"version" "4.17.21"
"log-symbols@^4.1.0":
"integrity" "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg=="
"resolved" "https://registry.npmmirror.com/log-symbols/-/log-symbols-4.1.0.tgz"
......@@ -4999,6 +5115,19 @@
"define-property" "^0.2.5"
"kind-of" "^3.0.3"
"object-is@^1.0.1":
"integrity" "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw=="
"resolved" "https://registry.npmmirror.com/object-is/-/object-is-1.1.5.tgz"
"version" "1.1.5"
dependencies:
"call-bind" "^1.0.2"
"define-properties" "^1.1.3"
"object-keys@^1.1.1":
"integrity" "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="
"resolved" "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz"
"version" "1.1.1"
"object-visit@^1.0.0":
"integrity" "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA=="
"resolved" "https://registry.npmmirror.com/object-visit/-/object-visit-1.0.1.tgz"
......@@ -5118,6 +5247,11 @@
"resolved" "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz"
"version" "2.2.0"
"parchment@^1.1.2", "parchment@^1.1.4":
"integrity" "sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg=="
"resolved" "https://registry.npmmirror.com/parchment/-/parchment-1.1.4.tgz"
"version" "1.1.4"
"parent-module@^1.0.0":
"integrity" "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="
"resolved" "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz"
......@@ -5290,6 +5424,27 @@
"end-of-stream" "^1.1.0"
"once" "^1.3.1"
"quill-delta@^3.6.2":
"integrity" "sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg=="
"resolved" "https://registry.npmmirror.com/quill-delta/-/quill-delta-3.6.3.tgz"
"version" "3.6.3"
dependencies:
"deep-equal" "^1.0.1"
"extend" "^3.0.2"
"fast-diff" "1.1.2"
"quill@^1.3.7":
"integrity" "sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g=="
"resolved" "https://registry.npmmirror.com/quill/-/quill-1.3.7.tgz"
"version" "1.3.7"
dependencies:
"clone" "^2.1.1"
"deep-equal" "^1.0.1"
"eventemitter3" "^2.0.3"
"extend" "^3.0.2"
"parchment" "^1.1.4"
"quill-delta" "^3.6.2"
"range-parser@~1.2.1":
"integrity" "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
"resolved" "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.1.tgz"
......@@ -5310,7 +5465,7 @@
"shell-quote" "^1.6.1"
"ws" "^7"
"react-dom@^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom@^18.0.0", "react-dom@^18.2.0", "react-dom@>=16.13", "react-dom@>=16.8", "react-dom@>=18", "react-dom@>=18.0", "react-dom@16.8.x":
"react-dom@^16 || ^17 || ^18", "react-dom@^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom@^18.0.0", "react-dom@^18.2.0", "react-dom@>=16.13", "react-dom@>=16.8", "react-dom@>=18", "react-dom@>=18.0", "react-dom@16.8.x":
"integrity" "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g=="
"resolved" "https://registry.npmmirror.com/react-dom/-/react-dom-18.2.0.tgz"
"version" "18.2.0"
......@@ -5418,6 +5573,15 @@
"whatwg-fetch" "^3.0.0"
"ws" "^6.2.2"
"react-quill@^2.0.0":
"integrity" "sha512-4qQtv1FtCfLgoD3PXAur5RyxuUbPXQGOHgTlFie3jtxp43mXDtzCKaOgQ3mLyZfi1PUlyjycfivKelFhy13QUg=="
"resolved" "https://registry.npmmirror.com/react-quill/-/react-quill-2.0.0.tgz"
"version" "2.0.0"
dependencies:
"@types/quill" "^1.3.10"
"lodash" "^4.17.4"
"quill" "^1.3.7"
"react-reconciler@^0.20.4":
"integrity" "sha512-kxERc4H32zV2lXMg/iMiwQHOtyqf15qojvkcZ5Ja2CPkjVohHw9k70pdDBwrnQhLVetUJBSYyqU3yqrlVTOajA=="
"resolved" "https://registry.npmmirror.com/react-reconciler/-/react-reconciler-0.20.4.tgz"
......@@ -5528,7 +5692,7 @@
"resize-observer-polyfill" "^1.5.1"
"scheduler" "0.13.3"
"react@*", "react@^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.0.0", "react@^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || >=17.0.0 || >=18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.9.0 || ^17.0.0 || ^18.0.0", "react@^18.0.0", "react@^18.2.0", "react@>= 16.8.0", "react@>=16.13", "react@>=16.8", "react@>=16.8.0", "react@>=17.0", "react@>=18", "react@>=18.0", "react@16.8.x", "react@18.2.0":
"react@*", "react@^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16 || ^17 || ^18", "react@^16.0.0", "react@^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || >=17.0.0 || >=18.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.9.0 || ^17.0.0 || ^18.0.0", "react@^18.0.0", "react@^18.2.0", "react@>= 16.8.0", "react@>=16.13", "react@>=16.8", "react@>=16.8.0", "react@>=17.0", "react@>=18", "react@>=18.0", "react@16.8.x", "react@18.2.0":
"integrity" "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ=="
"resolved" "https://registry.npmmirror.com/react/-/react-18.2.0.tgz"
"version" "18.2.0"
......@@ -5611,6 +5775,15 @@
"extend-shallow" "^3.0.2"
"safe-regex" "^1.1.0"
"regexp.prototype.flags@^1.2.0":
"integrity" "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA=="
"resolved" "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz"
"version" "1.4.3"
dependencies:
"call-bind" "^1.0.2"
"define-properties" "^1.1.3"
"functions-have-names" "^1.2.2"
"regexpu-core@^5.2.1":
"integrity" "sha512-ZdhUQlng0RoscyW7jADnUZ25F5eVtHdMyXSb2PiwafvteRAOJUjFoUPEYZSIfP99fBIs3maLIRfpEddT78wAAQ=="
"resolved" "https://registry.npmmirror.com/regexpu-core/-/regexpu-core-5.3.0.tgz"
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册