├── src ├── components │ ├── App │ │ ├── index.tsx │ │ └── App.tsx │ ├── Button │ │ ├── index.tsx │ │ └── Button.tsx │ ├── Editor │ │ ├── index.tsx │ │ ├── utils │ │ │ ├── url.ts │ │ │ ├── debounce.ts │ │ │ ├── $isRangeSelected.ts │ │ │ └── $getSharedLinkTarget.ts │ │ ├── hooks │ │ │ ├── useClickOutside.tsx │ │ │ └── useUserInteractions.tsx │ │ ├── context │ │ │ └── EditorHistoryState.tsx │ │ ├── plugins │ │ │ ├── LocalStorage.tsx │ │ │ ├── AutoLink.tsx │ │ │ ├── OpenLink.tsx │ │ │ ├── Actions.tsx │ │ │ ├── EditLink.tsx │ │ │ └── FloatingMenu.tsx │ │ └── Editor.tsx │ └── IconButton │ │ ├── index.tsx │ │ └── IconButton.tsx ├── vite-env.d.ts ├── main.tsx └── styles │ └── global.css ├── postcss.config.cjs ├── lexical-react-rich-text-demo.gif ├── public └── Literata-VariableFont.ttf ├── vite.config.ts ├── tsconfig.node.json ├── .gitignore ├── tailwind.config.cjs ├── index.html ├── tsconfig.json ├── LICENSE ├── .eslintrc.cjs ├── package.json ├── README.md └── pnpm-lock.yaml /src/components/App/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./App"; 2 | -------------------------------------------------------------------------------- /src/components/Button/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./Button"; 2 | -------------------------------------------------------------------------------- /src/components/Editor/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./Editor"; 2 | -------------------------------------------------------------------------------- /src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /src/components/IconButton/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./IconButton"; 2 | -------------------------------------------------------------------------------- /postcss.config.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | }; 7 | -------------------------------------------------------------------------------- /lexical-react-rich-text-demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/lexical-rich-text-react-demo/HEAD/lexical-react-rich-text-demo.gif -------------------------------------------------------------------------------- /public/Literata-VariableFont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/konstantinruge/lexical-rich-text-react-demo/HEAD/public/Literata-VariableFont.ttf -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import react from '@vitejs/plugin-react' 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | plugins: [react()] 7 | }) 8 | -------------------------------------------------------------------------------- /tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "module": "ESNext", 5 | "moduleResolution": "Node", 6 | "allowSyntheticDefaultImports": true 7 | }, 8 | "include": ["vite.config.ts"] 9 | } 10 | -------------------------------------------------------------------------------- /src/main.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import ReactDOM from "react-dom/client"; 3 | 4 | import { App } from "./components/App"; 5 | 6 | ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render( 7 | 8 | 9 | 10 | ); 11 | -------------------------------------------------------------------------------- /src/components/App/App.tsx: -------------------------------------------------------------------------------- 1 | import "../../styles/global.css"; 2 | import { Editor } from "../Editor"; 3 | 4 | export function App() { 5 | return ( 6 |
7 |

Lexical React Demo

8 | 9 |
10 | ); 11 | } 12 | -------------------------------------------------------------------------------- /src/components/Editor/utils/url.ts: -------------------------------------------------------------------------------- 1 | // https://stackoverflow.com/questions/5717093/check-if-a-javascript-string-is-a-url 2 | 3 | export function isValidUrl(string: string) { 4 | try { 5 | const url = new URL(string); 6 | return url.protocol === "http:" || url.protocol === "https:"; 7 | } catch (e) { 8 | return false; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/components/Editor/utils/debounce.ts: -------------------------------------------------------------------------------- 1 | export function debounce void>( 2 | fn: F, 3 | delay: number 4 | ) { 5 | let timeoutID: number | undefined; 6 | return function (this: any, ...args: any[]) { 7 | clearTimeout(timeoutID); 8 | timeoutID = window.setTimeout(() => fn.apply(this, args), delay); 9 | } as F; 10 | } 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | -------------------------------------------------------------------------------- /tailwind.config.cjs: -------------------------------------------------------------------------------- 1 | /* eslint-disable no-undef */ 2 | /** @type {import('tailwindcss').Config} */ 3 | module.exports = { 4 | content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"], 5 | theme: { 6 | fontFamily: { 7 | serif: ["Literata", "serif", "system-ui"], 8 | }, 9 | extend: {}, 10 | }, 11 | plugins: [require("@tailwindcss/typography")], 12 | }; 13 | -------------------------------------------------------------------------------- /src/styles/global.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: "Literata"; 3 | font-weight: 100 900; 4 | font-display: fallback; 5 | font-style: normal; 6 | src: url(/Literata-VariableFont.ttf) format("ttf"); 7 | } 8 | 9 | @tailwind base; 10 | @tailwind components; 11 | @tailwind utilities; 12 | 13 | .underlined-line-through { 14 | text-decoration: underline line-through; 15 | } 16 | -------------------------------------------------------------------------------- /src/components/Editor/utils/$isRangeSelected.ts: -------------------------------------------------------------------------------- 1 | import { $isRangeSelection, EditorState, RangeSelection } from "lexical"; 2 | 3 | /** 4 | * Check if there is a selection that spans across 5 | * content, i.e. is not empty 6 | */ 7 | 8 | export function $isRangeSelected( 9 | selection: EditorState["_selection"] 10 | ): selection is RangeSelection { 11 | return $isRangeSelection(selection) && !selection.anchor.is(selection.focus); 12 | } 13 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Lexical React Editor 7 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ESNext", 4 | "useDefineForClassFields": true, 5 | "lib": ["DOM", "DOM.Iterable", "ESNext"], 6 | "allowJs": false, 7 | "skipLibCheck": true, 8 | "esModuleInterop": false, 9 | "allowSyntheticDefaultImports": true, 10 | "strict": true, 11 | "forceConsistentCasingInFileNames": true, 12 | "module": "ESNext", 13 | "moduleResolution": "Node", 14 | "resolveJsonModule": true, 15 | "isolatedModules": true, 16 | "noEmit": true, 17 | "jsx": "react-jsx" 18 | }, 19 | "include": ["src"], 20 | "references": [{ "path": "./tsconfig.node.json" }] 21 | } 22 | -------------------------------------------------------------------------------- /src/components/Editor/hooks/useClickOutside.tsx: -------------------------------------------------------------------------------- 1 | import { RefObject, useEffect } from "react"; 2 | 3 | export function useClickOutside( 4 | ref: RefObject | null, 5 | cb: () => void 6 | ) { 7 | useEffect(() => { 8 | const element = ref?.current; 9 | 10 | function handleClickOutside(event: Event) { 11 | if (element && !element.contains(event.target as Node | null)) { 12 | cb(); 13 | } 14 | } 15 | 16 | document.addEventListener("mousedown", handleClickOutside); 17 | 18 | return () => { 19 | document.removeEventListener("mousedown", handleClickOutside); 20 | }; 21 | }, [ref, cb]); 22 | } 23 | -------------------------------------------------------------------------------- /src/components/Button/Button.tsx: -------------------------------------------------------------------------------- 1 | import { ComponentProps } from "react"; 2 | 3 | type ButtonProps = { 4 | children?: JSX.Element; 5 | } & ComponentProps<"button">; 6 | 7 | export function Button({ children, ...props }: ButtonProps) { 8 | return ( 9 | 20 | ); 21 | } 22 | -------------------------------------------------------------------------------- /src/components/Editor/context/EditorHistoryState.tsx: -------------------------------------------------------------------------------- 1 | import { createContext, ReactNode, useContext, useMemo } from "react"; 2 | 3 | import { 4 | createEmptyHistoryState, 5 | HistoryState, 6 | } from "@lexical/react/LexicalHistoryPlugin"; 7 | 8 | type EditorHistoryStateContext = { 9 | historyState?: HistoryState; 10 | }; 11 | 12 | const Context = createContext({}); 13 | 14 | export function EditorHistoryStateContext({ 15 | children, 16 | }: { 17 | children: ReactNode; 18 | }) { 19 | const h = useMemo(() => ({ historyState: createEmptyHistoryState() }), []); 20 | return {children}; 21 | } 22 | 23 | export function useEditorHistoryState(): EditorHistoryStateContext { 24 | return useContext(Context); 25 | } 26 | -------------------------------------------------------------------------------- /src/components/Editor/utils/$getSharedLinkTarget.ts: -------------------------------------------------------------------------------- 1 | import { $isLinkNode } from "@lexical/link"; 2 | import type { EditorState } from "lexical"; 3 | 4 | /** 5 | * Check if all nodes in the selection share the same link target. 6 | * If so, return the link target, otherwise return undefined. 7 | */ 8 | 9 | export function $getSharedLinkTarget( 10 | selection?: EditorState["_selection"] 11 | ): string | undefined { 12 | const nodes = selection?.getNodes(); 13 | if (!nodes?.length) return undefined; 14 | 15 | const sharedLinkTarget = nodes.every((node, i, arr) => { 16 | const parent = node.getParent(); 17 | if (!$isLinkNode(parent)) return false; 18 | 19 | const linkTarget = parent.getURL(); 20 | const prevLinkTarget = arr[i - 1]?.getParent()?.getURL(); 21 | 22 | return i > 0 ? linkTarget === prevLinkTarget : true; 23 | }); 24 | 25 | return sharedLinkTarget ? nodes[0].getParent()?.getURL() : undefined; 26 | } 27 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Konstantin Münster 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | /* eslint-disable no-undef */ 2 | module.exports = { 3 | root: true, 4 | parser: "@typescript-eslint/parser", 5 | extends: ["eslint:recommended", "prettier"], 6 | env: { 7 | browser: true, 8 | }, 9 | globals: { 10 | React: "readonly", 11 | JSX: "readonly", 12 | }, 13 | overrides: [ 14 | { 15 | files: ["*.ts", "*.tsx"], 16 | excludedFiles: ["*.js"], 17 | plugins: ["@typescript-eslint"], 18 | extends: [ 19 | "plugin:@typescript-eslint/recommended", 20 | "plugin:react/recommended", 21 | "plugin:react-hooks/recommended", 22 | ], 23 | rules: { 24 | "no-unused-vars": "off", 25 | "@typescript-eslint/no-unused-vars": [ 26 | "error", 27 | { 28 | argsIgnorePattern: "^_", 29 | varsIgnorePattern: "^_", 30 | caughtErrorsIgnorePattern: "^_", 31 | }, 32 | ], 33 | "@typescript-eslint/no-explicit-any": "off", 34 | "react/prop-types": "off", 35 | }, 36 | }, 37 | ], 38 | settings: { 39 | react: { 40 | version: "detect", 41 | }, 42 | }, 43 | }; 44 | -------------------------------------------------------------------------------- /src/components/Editor/plugins/LocalStorage.tsx: -------------------------------------------------------------------------------- 1 | import { useCallback, useEffect } from "react"; 2 | import { useLexicalComposerContext } from "@lexical/react/LexicalComposerContext"; 3 | 4 | import { debounce } from "../utils/debounce"; 5 | 6 | type LocalStoragePluginProps = { 7 | namespace: string; 8 | }; 9 | 10 | export function LocalStoragePlugin({ namespace }: LocalStoragePluginProps) { 11 | const [editor] = useLexicalComposerContext(); 12 | 13 | const saveContent = useCallback( 14 | (content: string) => { 15 | localStorage.setItem(namespace, content); 16 | }, 17 | [namespace] 18 | ); 19 | 20 | const debouncedSaveContent = debounce(saveContent, 500); 21 | 22 | useEffect(() => { 23 | return editor.registerUpdateListener( 24 | ({ editorState, dirtyElements, dirtyLeaves }) => { 25 | // Don't update if nothing changed 26 | if (dirtyElements.size === 0 && dirtyLeaves.size === 0) return; 27 | 28 | const serializedState = JSON.stringify(editorState); 29 | debouncedSaveContent(serializedState); 30 | } 31 | ); 32 | }, [debouncedSaveContent, editor]); 33 | 34 | return null; 35 | } 36 | -------------------------------------------------------------------------------- /src/components/Editor/plugins/AutoLink.tsx: -------------------------------------------------------------------------------- 1 | import { AutoLinkPlugin as LexicalAutoLinkPlugin } from "@lexical/react/LexicalAutoLinkPlugin"; 2 | 3 | const URL_MATCHER = 4 | /((https?:\/\/(www\.)?)|(www\.))[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)/; 5 | 6 | const EMAIL_MATCHER = 7 | /(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))/; 8 | 9 | const MATCHERS = [ 10 | (text: string) => { 11 | const match = URL_MATCHER.exec(text); 12 | return match?.length 13 | ? { 14 | index: match.index, 15 | length: match[0].length, 16 | text: match[0], 17 | url: match[0].startsWith("http") ? match[0] : `https://${match[0]}`, 18 | } 19 | : null; 20 | }, 21 | (text: string) => { 22 | const match = EMAIL_MATCHER.exec(text); 23 | return match?.length 24 | ? { 25 | index: match.index, 26 | length: match[0].length, 27 | text: match[0], 28 | url: `mailto:${match[0]}`, 29 | } 30 | : null; 31 | }, 32 | ]; 33 | 34 | export function AutoLinkPlugin() { 35 | return ; 36 | } 37 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "lexical-react-demo", 3 | "private": true, 4 | "version": "0.0.0", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "tsc && vite build", 9 | "preview": "vite preview" 10 | }, 11 | "dependencies": { 12 | "@floating-ui/dom": "^1.0.7", 13 | "@lexical/clipboard": "^0.6.4", 14 | "@lexical/code": "^0.6.4", 15 | "@lexical/link": "^0.6.4", 16 | "@lexical/list": "^0.6.4", 17 | "@lexical/markdown": "^0.6.4", 18 | "@lexical/react": "^0.6.4", 19 | "@lexical/rich-text": "^0.6.4", 20 | "@lexical/selection": "^0.6.4", 21 | "@lexical/utils": "^0.6.4", 22 | "classnames": "^2.3.2", 23 | "lexical": "^0.6.4", 24 | "react": "^18.2.0", 25 | "react-dom": "^18.2.0" 26 | }, 27 | "devDependencies": { 28 | "@tailwindcss/typography": "^0.5.8", 29 | "@types/react": "^18.0.24", 30 | "@types/react-dom": "^18.0.8", 31 | "@typescript-eslint/eslint-plugin": "^5.40.0", 32 | "@typescript-eslint/parser": "^5.40.0", 33 | "@vitejs/plugin-react": "^2.2.0", 34 | "autoprefixer": "^10.4.13", 35 | "eslint": "^8.25.0", 36 | "eslint-config-prettier": "^8.5.0", 37 | "eslint-plugin-react": "^7.31.10", 38 | "eslint-plugin-react-hooks": "^4.6.0", 39 | "postcss": "^8.4.19", 40 | "tailwindcss": "^3.2.4", 41 | "typescript": "^4.6.4", 42 | "vite": "^3.2.3" 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/components/Editor/hooks/useUserInteractions.tsx: -------------------------------------------------------------------------------- 1 | import { useEffect, useState } from "react"; 2 | 3 | /** 4 | * Detect if the user currently presses a mouse button or key. 5 | */ 6 | 7 | export function useUserInteractions() { 8 | const [isPointerDown, setIsPointerDown] = useState(false); 9 | const [isKeyDown, setIsKeyDown] = useState(false); 10 | 11 | useEffect(() => { 12 | const handlePointerUp = () => { 13 | setIsPointerDown(false); 14 | document.removeEventListener("pointerup", handlePointerUp); 15 | }; 16 | 17 | const handlePointerDown = () => { 18 | setIsPointerDown(true); 19 | document.addEventListener("pointerup", handlePointerUp); 20 | }; 21 | 22 | document.addEventListener("pointerdown", handlePointerDown); 23 | return () => { 24 | document.removeEventListener("pointerdown", handlePointerDown); 25 | }; 26 | }, []); 27 | 28 | useEffect(() => { 29 | const handleKeyUp = () => { 30 | setIsKeyDown(false); 31 | document.removeEventListener("keyup", handleKeyUp); 32 | }; 33 | 34 | const handleKeyDown = () => { 35 | setIsKeyDown(true); 36 | document.addEventListener("keyup", handleKeyUp); 37 | }; 38 | 39 | document.addEventListener("keydown", handleKeyDown); 40 | return () => { 41 | document.removeEventListener("keydown", handleKeyDown); 42 | }; 43 | }, []); 44 | 45 | return { isPointerDown, isKeyDown }; 46 | } 47 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ✍️ Rich Text Editor w/ Lexical & React 2 | 3 | A simple wysiwyg / rich text editor built with Lexical and React. I built this demo project for my blog post on how to use Lexical. Feel free to browse, fork, and clone this repository. 4 | 5 | 📌 Live Demo: [lexical-rich-text-react-demo.vercel.app](https://lexical-rich-text-react-demo.vercel.app/) 6 | 7 | 📌 Blog Post: [How To Build A Text Editor With Lexical and React](https://konstantin.digital/blog/how-to-build-a-text-editor-with-lexical-and-react) 8 | 9 | --- 10 | 11 | lexical react rich text demo 12 | 13 | --- 14 | 15 | ## Features 16 | 17 | - **Floating Menu** Format selected text easily 18 | - **Markdown Support** Use Markdown syntax, such as `##` 19 | - **Local Storage** Persist your content locally 20 | - **History** Undo/Redo changes with just a click 21 | 22 | Note: The feature set is far from complete. It should only show how to approach most common text editing features. 23 | 24 | ## Installation 25 | 26 | ```sh 27 | git clone https://github.com/konstantinmuenster/lexical-rich-text-react-demo.git 28 | cd lexical-rich-text-react-demo 29 | pnpm install # or npm install 30 | pnpm run dev # or npm run dev 31 | ``` 32 | 33 | ## About 34 | 35 | Buy Me A Coffee 36 | 37 | Konstantin Münster – [konstantin.digital](https://konstantin.digital) 38 | 39 | Distributed under the [MIT](http://showalicense.com/?fullname=Konstantin+M%C3%BCnster&year=2019#license-mit) license. 40 | See `LICENSE` for more information. 41 | 42 | [https://github.com/konstantinmuenster](https://github.com/konstantinmuenster) 43 | -------------------------------------------------------------------------------- /src/components/Editor/plugins/OpenLink.tsx: -------------------------------------------------------------------------------- 1 | import { useEffect, useRef, useState } from "react"; 2 | 3 | import { createCommand, LexicalCommand } from "lexical"; 4 | import { computePosition } from "@floating-ui/dom"; 5 | import { LinkNode } from "@lexical/link"; 6 | import { useLexicalComposerContext } from "@lexical/react/LexicalComposerContext"; 7 | 8 | import { debounce } from "../utils/debounce"; 9 | import { IconButton } from "../../IconButton"; 10 | 11 | type OpenLinkMenuPosition = { x: number; y: number } | undefined; 12 | 13 | export const LINK_SELECTOR = `[data-lexical-editor] a`; 14 | export const OPEN_LINK_MENU_ID = "open-link-menu"; 15 | export const TOGGLE_EDIT_LINK_MENU: LexicalCommand = createCommand(); 16 | 17 | export function OpenLinkPlugin() { 18 | const ref = useRef(null); 19 | const linkSetRef = useRef>(new Set()); 20 | 21 | const [copied, setCopied] = useState(false); 22 | const [width, setWidth] = useState(undefined); 23 | const [pos, setPos] = useState(undefined); 24 | const [link, setLink] = useState(null); 25 | 26 | const [editor] = useLexicalComposerContext(); 27 | 28 | useEffect(() => { 29 | const handleMouseMove = (e: MouseEvent) => { 30 | const menu = (e.target as HTMLElement).closest( 31 | `#${OPEN_LINK_MENU_ID}` 32 | ); 33 | if (menu) return; 34 | 35 | const link = (e.target as HTMLElement).closest( 36 | LINK_SELECTOR 37 | ); 38 | 39 | if (!link || !ref.current) { 40 | setPos(undefined); 41 | setLink(null); 42 | return; 43 | } 44 | 45 | computePosition(link, ref.current, { placement: "bottom" }) 46 | .then((pos) => { 47 | setPos({ x: pos.x, y: pos.y + 10 }); 48 | setLink(link.getAttribute("href")); 49 | }) 50 | .catch(() => { 51 | setPos(undefined); 52 | }); 53 | 54 | return true; 55 | }; 56 | 57 | const debouncedMouseMove = debounce(handleMouseMove, 200); 58 | 59 | return editor.registerMutationListener(LinkNode, (mutations) => { 60 | for (const [key, type] of mutations) { 61 | switch (type) { 62 | case "created": 63 | case "updated": 64 | linkSetRef.current.add(key); 65 | if (linkSetRef.current.size === 1) 66 | document.addEventListener("mousemove", debouncedMouseMove); 67 | break; 68 | 69 | case "destroyed": 70 | linkSetRef.current.delete(key); 71 | if (linkSetRef.current.size === 0) 72 | document.removeEventListener("mousemove", debouncedMouseMove); 73 | break; 74 | } 75 | } 76 | }); 77 | }, [editor, pos]); 78 | 79 | return ( 80 | 118 | ); 119 | } 120 | -------------------------------------------------------------------------------- /src/components/Editor/Editor.tsx: -------------------------------------------------------------------------------- 1 | import cx from "classnames"; 2 | 3 | import { CodeNode } from "@lexical/code"; 4 | import { AutoLinkNode, LinkNode } from "@lexical/link"; 5 | import { ListItemNode, ListNode } from "@lexical/list"; 6 | import { TRANSFORMERS } from "@lexical/markdown"; 7 | import { HeadingNode, QuoteNode } from "@lexical/rich-text"; 8 | import { LexicalComposer } from "@lexical/react/LexicalComposer"; 9 | import { RichTextPlugin } from "@lexical/react/LexicalRichTextPlugin"; 10 | import { ListPlugin } from "@lexical/react/LexicalListPlugin"; 11 | import { LinkPlugin } from "@lexical/react/LexicalLinkPlugin"; 12 | import { ContentEditable } from "@lexical/react/LexicalContentEditable"; 13 | import { HistoryPlugin } from "@lexical/react/LexicalHistoryPlugin"; 14 | import { MarkdownShortcutPlugin } from "@lexical/react/LexicalMarkdownShortcutPlugin"; 15 | import LexicalErrorBoundary from "@lexical/react/LexicalErrorBoundary"; 16 | 17 | import { isValidUrl } from "./utils/url"; 18 | import { ActionsPlugin } from "./plugins/Actions"; 19 | import { AutoLinkPlugin } from "./plugins/AutoLink"; 20 | import { EditLinkPlugin } from "./plugins/EditLink"; 21 | import { FloatingMenuPlugin } from "./plugins/FloatingMenu"; 22 | import { LocalStoragePlugin } from "./plugins/LocalStorage"; 23 | import { OpenLinkPlugin } from "./plugins/OpenLink"; 24 | import { 25 | EditorHistoryStateContext, 26 | useEditorHistoryState, 27 | } from "./context/EditorHistoryState"; 28 | 29 | export const EDITOR_NAMESPACE = "lexical-editor"; 30 | 31 | const EDITOR_NODES = [ 32 | AutoLinkNode, 33 | CodeNode, 34 | HeadingNode, 35 | LinkNode, 36 | ListNode, 37 | ListItemNode, 38 | QuoteNode, 39 | ]; 40 | 41 | type EditorProps = { 42 | className?: string; 43 | }; 44 | 45 | export function Editor(props: EditorProps) { 46 | const content = localStorage.getItem(EDITOR_NAMESPACE); 47 | 48 | return ( 49 |
56 | 57 | { 74 | console.log(error); 75 | }, 76 | }} 77 | /> 78 | 79 |
80 | ); 81 | } 82 | 83 | type LexicalEditorProps = { 84 | config: Parameters["0"]["initialConfig"]; 85 | }; 86 | 87 | export function LexicalEditor(props: LexicalEditorProps) { 88 | const { historyState } = useEditorHistoryState(); 89 | 90 | return ( 91 | 92 | {/* Official Plugins */} 93 | } 95 | placeholder={} 96 | ErrorBoundary={LexicalErrorBoundary} 97 | /> 98 | 99 | 100 | 101 | 102 | {/* Custom Plugins */} 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | ); 111 | } 112 | 113 | const Placeholder = () => { 114 | return ( 115 |
116 | Start writing... 117 |
118 | ); 119 | }; 120 | -------------------------------------------------------------------------------- /src/components/Editor/plugins/Actions.tsx: -------------------------------------------------------------------------------- 1 | import { useEffect, useMemo, useState } from "react"; 2 | import { useLexicalComposerContext } from "@lexical/react/LexicalComposerContext"; 3 | import { ClearEditorPlugin } from "@lexical/react/LexicalClearEditorPlugin"; 4 | import { 5 | $getRoot, 6 | $isParagraphNode, 7 | CLEAR_EDITOR_COMMAND, 8 | REDO_COMMAND, 9 | UNDO_COMMAND, 10 | } from "lexical"; 11 | 12 | import { Button } from "../../Button"; 13 | import { useEditorHistoryState } from "../context/EditorHistoryState"; 14 | 15 | export function ActionsPlugin() { 16 | const [editor] = useLexicalComposerContext(); 17 | const { historyState } = useEditorHistoryState(); 18 | 19 | const [isEditorEmpty, setIsEditorEmpty] = useState(true); 20 | 21 | const { undoStack, redoStack } = historyState ?? {}; 22 | const [hasUndo, setHasUndo] = useState(undoStack?.length !== 0); 23 | const [hasRedo, setHasRedo] = useState(redoStack?.length !== 0); 24 | 25 | const MandatoryPlugins = useMemo(() => { 26 | return ; 27 | }, []); 28 | 29 | useEffect( 30 | function checkEditorEmptyState() { 31 | return editor.registerUpdateListener(({ editorState }) => { 32 | editorState.read(() => { 33 | const root = $getRoot(); 34 | const children = root.getChildren(); 35 | 36 | if (children.length > 1) { 37 | setIsEditorEmpty(false); 38 | return; 39 | } 40 | 41 | if ($isParagraphNode(children[0])) { 42 | setIsEditorEmpty(children[0].getChildren().length === 0); 43 | } else { 44 | setIsEditorEmpty(false); 45 | } 46 | }); 47 | }); 48 | }, 49 | [editor] 50 | ); 51 | 52 | useEffect( 53 | function checkEditorHistoryActions() { 54 | return editor.registerUpdateListener(() => { 55 | setHasRedo(redoStack?.length !== 0); 56 | setHasUndo(undoStack?.length !== 0); 57 | }); 58 | }, 59 | [editor, undoStack, redoStack] 60 | ); 61 | 62 | return ( 63 | <> 64 | {MandatoryPlugins} 65 |
66 | 74 |
75 | 83 | 91 |
92 |
93 | 94 | ); 95 | } 96 | 97 | const ActionIcons = { 98 | Clear: ( 99 | 107 | Clear 108 | 113 | 114 | ), 115 | Undo: ( 116 | 124 | Undo 125 | 130 | 131 | ), 132 | Redo: ( 133 | 141 | Redo 142 | 147 | 148 | ), 149 | }; 150 | -------------------------------------------------------------------------------- /src/components/Editor/plugins/EditLink.tsx: -------------------------------------------------------------------------------- 1 | import { useCallback, useEffect, useRef, useState } from "react"; 2 | import { createPortal } from "react-dom"; 3 | 4 | import { 5 | $getSelection, 6 | COMMAND_PRIORITY_LOW, 7 | createCommand, 8 | LexicalCommand, 9 | } from "lexical"; 10 | import { TOGGLE_LINK_COMMAND } from "@lexical/link"; 11 | import { useLexicalComposerContext } from "@lexical/react/LexicalComposerContext"; 12 | import { computePosition } from "@floating-ui/dom"; 13 | 14 | import { IconButton } from "../../IconButton"; 15 | 16 | import { useClickOutside } from "../hooks/useClickOutside"; 17 | import { $getSharedLinkTarget } from "../utils/$getSharedLinkTarget"; 18 | 19 | type EditLinkMenuPosition = { x: number; y: number } | undefined; 20 | 21 | export const TOGGLE_EDIT_LINK_MENU: LexicalCommand = createCommand(); 22 | 23 | export function EditLinkPlugin() { 24 | const ref = useRef(null); 25 | const inputRef = useRef(null); 26 | 27 | const [value, setValue] = useState(""); 28 | const [error, setError] = useState(false); 29 | const [pos, setPos] = useState(undefined); 30 | const [domRange, setDomRange] = useState(undefined); 31 | const [hasLink, setHasLink] = useState(false); 32 | 33 | const [editor] = useLexicalComposerContext(); 34 | 35 | const resetState = useCallback(() => { 36 | setValue(""); 37 | setError(false); 38 | setPos(undefined); 39 | setDomRange(undefined); 40 | editor.focus(); 41 | }, [editor]); 42 | 43 | useEffect(() => { 44 | return editor.registerCommand( 45 | TOGGLE_EDIT_LINK_MENU, 46 | () => { 47 | const nativeSel = window.getSelection(); 48 | const isCollapsed = 49 | nativeSel?.rangeCount === 0 || nativeSel?.isCollapsed; 50 | 51 | if (!!pos?.x || !!pos?.y || !ref.current || !nativeSel || isCollapsed) { 52 | resetState(); 53 | return false; 54 | } 55 | 56 | const domRange = nativeSel.getRangeAt(0); 57 | 58 | computePosition(domRange, ref.current, { placement: "bottom" }) 59 | .then((pos) => { 60 | setPos({ x: pos.x, y: pos.y + 10 }); 61 | setDomRange(domRange); 62 | editor.getEditorState().read(() => { 63 | const selection = $getSelection(); 64 | const linkTarget = $getSharedLinkTarget(selection); 65 | setHasLink(!!linkTarget); 66 | }); 67 | }) 68 | .catch(() => { 69 | resetState(); 70 | }); 71 | 72 | return true; 73 | }, 74 | COMMAND_PRIORITY_LOW 75 | ); 76 | }, [editor, pos, resetState]); 77 | 78 | useEffect(() => { 79 | if (pos?.x && pos?.y) { 80 | let initialUrl = ""; 81 | 82 | editor.getEditorState().read(() => { 83 | const selection = $getSelection(); 84 | initialUrl = $getSharedLinkTarget(selection) ?? ""; 85 | }); 86 | 87 | setValue(initialUrl); 88 | inputRef.current?.focus(); 89 | } 90 | }, [pos, editor]); 91 | 92 | useClickOutside(ref, () => { 93 | resetState(); 94 | }); 95 | 96 | const handleSetLink = () => { 97 | if (!value) return; 98 | 99 | const isLinkSet = editor.dispatchCommand(TOGGLE_LINK_COMMAND, { 100 | url: value, 101 | target: "_blank", 102 | }); 103 | 104 | if (isLinkSet) resetState(); 105 | else setError(true); 106 | }; 107 | 108 | const handleRemoveLink = () => { 109 | editor.dispatchCommand(TOGGLE_LINK_COMMAND, null); 110 | resetState(); 111 | }; 112 | 113 | return ( 114 | <> 115 | 116 |
126 | setValue(e.target.value)} 130 | className="px-2 py-1 text-xs bg-transparent border-none outline-none" 131 | placeholder="Enter URL" 132 | onKeyDown={(e) => { 133 | if (e.key === "Enter") { 134 | e.preventDefault(); 135 | handleSetLink(); 136 | return; 137 | } 138 | 139 | if (e.key === "Escape") { 140 | e.preventDefault(); 141 | resetState(); 142 | return; 143 | } 144 | }} 145 | /> 146 | {hasLink ? ( 147 | 148 | ) : null} 149 | 150 |
151 | 152 | ); 153 | } 154 | 155 | /** 156 | * Renders a fake selection when the input element is focused. 157 | * This is to have some visual feedback to see where the link will be inserted. 158 | */ 159 | 160 | function FakeSelection({ range }: { range: Range | undefined }) { 161 | if (!range) return null; 162 | 163 | const domRect = range.getBoundingClientRect(); 164 | return createPortal( 165 |
, 174 | document.body 175 | ); 176 | } 177 | -------------------------------------------------------------------------------- /src/components/Editor/plugins/FloatingMenu.tsx: -------------------------------------------------------------------------------- 1 | import { useCallback, useEffect, useRef, useState } from "react"; 2 | import { createPortal } from "react-dom"; 3 | import { $isLinkNode } from "@lexical/link"; 4 | import { $getSelection, FORMAT_TEXT_COMMAND, LexicalEditor } from "lexical"; 5 | import { computePosition } from "@floating-ui/dom"; 6 | import { useLexicalComposerContext } from "@lexical/react/LexicalComposerContext"; 7 | 8 | import { IconButton } from "../../IconButton"; 9 | 10 | import { $isRangeSelected } from "../utils/$isRangeSelected"; 11 | import { useUserInteractions } from "../hooks/useUserInteractions"; 12 | import { TOGGLE_EDIT_LINK_MENU } from "./EditLink"; 13 | 14 | type FloatingMenuPosition = { x: number; y: number } | undefined; 15 | 16 | type FloatingMenuProps = { 17 | editor: LexicalEditor; 18 | show: boolean; 19 | isBold: boolean; 20 | isCode: boolean; 21 | isLink: boolean; 22 | isItalic: boolean; 23 | isStrikethrough: boolean; 24 | isUnderline: boolean; 25 | }; 26 | 27 | function FloatingMenu({ show, ...props }: FloatingMenuProps) { 28 | const ref = useRef(null); 29 | const [pos, setPos] = useState(undefined); 30 | 31 | const nativeSel = window.getSelection(); 32 | 33 | useEffect(() => { 34 | const isCollapsed = nativeSel?.rangeCount === 0 || nativeSel?.isCollapsed; 35 | 36 | if (!show || !ref.current || !nativeSel || isCollapsed) { 37 | setPos(undefined); 38 | return; 39 | } 40 | const domRange = nativeSel.getRangeAt(0); 41 | 42 | computePosition(domRange, ref.current, { placement: "top" }) 43 | .then((pos) => { 44 | setPos({ x: pos.x, y: pos.y - 10 }); 45 | }) 46 | .catch(() => { 47 | setPos(undefined); 48 | }); 49 | // anchorOffset, so that we sync the menu position with 50 | // native selection (if user selects two ranges consecutively) 51 | }, [show, nativeSel, nativeSel?.anchorOffset]); 52 | 53 | return ( 54 |
62 | { 67 | props.editor.dispatchCommand(FORMAT_TEXT_COMMAND, "bold"); 68 | }} 69 | /> 70 | { 75 | props.editor.dispatchCommand(FORMAT_TEXT_COMMAND, "italic"); 76 | }} 77 | /> 78 | { 83 | props.editor.dispatchCommand(FORMAT_TEXT_COMMAND, "underline"); 84 | }} 85 | /> 86 | { 91 | props.editor.dispatchCommand(FORMAT_TEXT_COMMAND, "strikethrough"); 92 | }} 93 | /> 94 | { 99 | props.editor.dispatchCommand(FORMAT_TEXT_COMMAND, "code"); 100 | }} 101 | /> 102 | { 107 | props.editor.dispatchCommand(TOGGLE_EDIT_LINK_MENU, undefined); 108 | }} 109 | /> 110 |
111 | ); 112 | } 113 | 114 | const ANCHOR_ELEMENT = document.body; 115 | 116 | export function FloatingMenuPlugin() { 117 | const [show, setShow] = useState(false); 118 | const [isBold, setIsBold] = useState(false); 119 | const [isCode, setIsCode] = useState(false); 120 | const [isLink, setIsLink] = useState(false); 121 | const [isItalic, setIsItalic] = useState(false); 122 | const [isUnderline, setIsUnderline] = useState(false); 123 | const [isStrikethrough, setIsStrikethrough] = useState(false); 124 | 125 | const { isPointerDown, isKeyDown } = useUserInteractions(); 126 | const [editor] = useLexicalComposerContext(); 127 | 128 | const updateFloatingMenu = useCallback(() => { 129 | editor.getEditorState().read(() => { 130 | if (editor.isComposing() || isPointerDown || isKeyDown) return; 131 | 132 | if (editor.getRootElement() !== document.activeElement) { 133 | setShow(false); 134 | return; 135 | } 136 | 137 | const selection = $getSelection(); 138 | 139 | if ($isRangeSelected(selection)) { 140 | const nodes = selection.getNodes(); 141 | setIsBold(selection.hasFormat("bold")); 142 | setIsCode(selection.hasFormat("code")); 143 | setIsItalic(selection.hasFormat("italic")); 144 | setIsUnderline(selection.hasFormat("underline")); 145 | setIsStrikethrough(selection.hasFormat("strikethrough")); 146 | setIsLink(nodes.every((node) => $isLinkNode(node.getParent()))); 147 | setShow(true); 148 | } else { 149 | setShow(false); 150 | } 151 | }); 152 | }, [editor, isPointerDown, isKeyDown]); 153 | 154 | // Rerender the floating menu automatically on every state update. 155 | // Needed to show correct state for active formatting state. 156 | useEffect(() => { 157 | return editor.registerUpdateListener(() => { 158 | updateFloatingMenu(); 159 | }); 160 | }, [editor, updateFloatingMenu]); 161 | 162 | // Rerender the floating menu on relevant user interactions. 163 | // Needed to show/hide floating menu on pointer up / key up. 164 | useEffect(() => { 165 | updateFloatingMenu(); 166 | }, [isPointerDown, isKeyDown, updateFloatingMenu]); 167 | 168 | return createPortal( 169 | , 179 | ANCHOR_ELEMENT 180 | ); 181 | } 182 | -------------------------------------------------------------------------------- /src/components/IconButton/IconButton.tsx: -------------------------------------------------------------------------------- 1 | import { ComponentProps } from "react"; 2 | 3 | import cx from "classnames"; 4 | 5 | type IconType = 6 | | "bold" 7 | | "code" 8 | | "copy" 9 | | "italic" 10 | | "link" 11 | | "underline" 12 | | "strike" 13 | | "check" 14 | | "trash"; 15 | 16 | type IconButtonProps = { 17 | active?: boolean; 18 | icon?: IconType; 19 | } & ComponentProps<"button">; 20 | 21 | export function IconButton({ 22 | icon, 23 | active, 24 | className, 25 | ...props 26 | }: IconButtonProps) { 27 | if (!icon) return null; 28 | 29 | return ( 30 | 45 | ); 46 | } 47 | 48 | const IconLibrary: Record = { 49 | bold: ( 50 | 58 | Bold 59 | 60 | 61 | ), 62 | check: ( 63 | 71 | Check 72 | 77 | 78 | ), 79 | code: ( 80 | 88 | Inline Code 89 | 90 | 91 | ), 92 | copy: ( 93 | 101 | Copy 102 | 103 | 104 | ), 105 | italic: ( 106 | 114 | Italic 115 | 116 | 117 | ), 118 | link: ( 119 | 127 | Link 128 | 129 | 130 | ), 131 | underline: ( 132 | 140 | Underline 141 | 142 | 143 | ), 144 | strike: ( 145 | 153 | Strikethrough 154 | 155 | 156 | ), 157 | trash: ( 158 | 167 | Trash 168 | 174 | 175 | ), 176 | }; 177 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.4 2 | 3 | specifiers: 4 | '@floating-ui/dom': ^1.0.7 5 | '@lexical/clipboard': ^0.6.4 6 | '@lexical/code': ^0.6.4 7 | '@lexical/link': ^0.6.4 8 | '@lexical/list': ^0.6.4 9 | '@lexical/markdown': ^0.6.4 10 | '@lexical/react': ^0.6.4 11 | '@lexical/rich-text': ^0.6.4 12 | '@lexical/selection': ^0.6.4 13 | '@lexical/utils': ^0.6.4 14 | '@tailwindcss/typography': ^0.5.8 15 | '@types/react': ^18.0.24 16 | '@types/react-dom': ^18.0.8 17 | '@typescript-eslint/eslint-plugin': ^5.40.0 18 | '@typescript-eslint/parser': ^5.40.0 19 | '@vitejs/plugin-react': ^2.2.0 20 | autoprefixer: ^10.4.13 21 | classnames: ^2.3.2 22 | eslint: ^8.25.0 23 | eslint-config-prettier: ^8.5.0 24 | eslint-plugin-react: ^7.31.10 25 | eslint-plugin-react-hooks: ^4.6.0 26 | lexical: ^0.6.4 27 | postcss: ^8.4.19 28 | react: ^18.2.0 29 | react-dom: ^18.2.0 30 | tailwindcss: ^3.2.4 31 | typescript: ^4.6.4 32 | vite: ^3.2.3 33 | 34 | dependencies: 35 | '@floating-ui/dom': 1.0.7 36 | '@lexical/clipboard': 0.6.4_lexical@0.6.4 37 | '@lexical/code': 0.6.4_lexical@0.6.4 38 | '@lexical/link': 0.6.4_lexical@0.6.4 39 | '@lexical/list': 0.6.4_lexical@0.6.4 40 | '@lexical/markdown': 0.6.4_dlxdgdmlaurtixklkqcbpqk7be 41 | '@lexical/react': 0.6.4_kpr2eqve2cw3wrreahgz2ip7ja 42 | '@lexical/rich-text': 0.6.4_jxqtqauh5scnexlu66czmxsxkq 43 | '@lexical/selection': 0.6.4_lexical@0.6.4 44 | '@lexical/utils': 0.6.4_lexical@0.6.4 45 | classnames: 2.3.2 46 | lexical: 0.6.4 47 | react: 18.2.0 48 | react-dom: 18.2.0_react@18.2.0 49 | 50 | devDependencies: 51 | '@tailwindcss/typography': 0.5.8_tailwindcss@3.2.4 52 | '@types/react': 18.0.25 53 | '@types/react-dom': 18.0.9 54 | '@typescript-eslint/eslint-plugin': 5.45.0_yjegg5cyoezm3fzsmuszzhetym 55 | '@typescript-eslint/parser': 5.45.0_s5ps7njkmjlaqajutnox5ntcla 56 | '@vitejs/plugin-react': 2.2.0_vite@3.2.4 57 | autoprefixer: 10.4.13_postcss@8.4.19 58 | eslint: 8.29.0 59 | eslint-config-prettier: 8.5.0_eslint@8.29.0 60 | eslint-plugin-react: 7.31.11_eslint@8.29.0 61 | eslint-plugin-react-hooks: 4.6.0_eslint@8.29.0 62 | postcss: 8.4.19 63 | tailwindcss: 3.2.4_postcss@8.4.19 64 | typescript: 4.9.3 65 | vite: 3.2.4 66 | 67 | packages: 68 | 69 | /@ampproject/remapping/2.2.0: 70 | resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} 71 | engines: {node: '>=6.0.0'} 72 | dependencies: 73 | '@jridgewell/gen-mapping': 0.1.1 74 | '@jridgewell/trace-mapping': 0.3.17 75 | dev: true 76 | 77 | /@babel/code-frame/7.18.6: 78 | resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} 79 | engines: {node: '>=6.9.0'} 80 | dependencies: 81 | '@babel/highlight': 7.18.6 82 | dev: true 83 | 84 | /@babel/compat-data/7.20.1: 85 | resolution: {integrity: sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==} 86 | engines: {node: '>=6.9.0'} 87 | dev: true 88 | 89 | /@babel/core/7.20.2: 90 | resolution: {integrity: sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g==} 91 | engines: {node: '>=6.9.0'} 92 | dependencies: 93 | '@ampproject/remapping': 2.2.0 94 | '@babel/code-frame': 7.18.6 95 | '@babel/generator': 7.20.4 96 | '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.20.2 97 | '@babel/helper-module-transforms': 7.20.2 98 | '@babel/helpers': 7.20.1 99 | '@babel/parser': 7.20.3 100 | '@babel/template': 7.18.10 101 | '@babel/traverse': 7.20.1 102 | '@babel/types': 7.20.2 103 | convert-source-map: 1.9.0 104 | debug: 4.3.4 105 | gensync: 1.0.0-beta.2 106 | json5: 2.2.1 107 | semver: 6.3.0 108 | transitivePeerDependencies: 109 | - supports-color 110 | dev: true 111 | 112 | /@babel/generator/7.20.4: 113 | resolution: {integrity: sha512-luCf7yk/cm7yab6CAW1aiFnmEfBJplb/JojV56MYEK7ziWfGmFlTfmL9Ehwfy4gFhbjBfWO1wj7/TuSbVNEEtA==} 114 | engines: {node: '>=6.9.0'} 115 | dependencies: 116 | '@babel/types': 7.20.2 117 | '@jridgewell/gen-mapping': 0.3.2 118 | jsesc: 2.5.2 119 | dev: true 120 | 121 | /@babel/helper-annotate-as-pure/7.18.6: 122 | resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} 123 | engines: {node: '>=6.9.0'} 124 | dependencies: 125 | '@babel/types': 7.20.2 126 | dev: true 127 | 128 | /@babel/helper-compilation-targets/7.20.0_@babel+core@7.20.2: 129 | resolution: {integrity: sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==} 130 | engines: {node: '>=6.9.0'} 131 | peerDependencies: 132 | '@babel/core': ^7.0.0 133 | dependencies: 134 | '@babel/compat-data': 7.20.1 135 | '@babel/core': 7.20.2 136 | '@babel/helper-validator-option': 7.18.6 137 | browserslist: 4.21.4 138 | semver: 6.3.0 139 | dev: true 140 | 141 | /@babel/helper-environment-visitor/7.18.9: 142 | resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} 143 | engines: {node: '>=6.9.0'} 144 | dev: true 145 | 146 | /@babel/helper-function-name/7.19.0: 147 | resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} 148 | engines: {node: '>=6.9.0'} 149 | dependencies: 150 | '@babel/template': 7.18.10 151 | '@babel/types': 7.20.2 152 | dev: true 153 | 154 | /@babel/helper-hoist-variables/7.18.6: 155 | resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} 156 | engines: {node: '>=6.9.0'} 157 | dependencies: 158 | '@babel/types': 7.20.2 159 | dev: true 160 | 161 | /@babel/helper-module-imports/7.18.6: 162 | resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} 163 | engines: {node: '>=6.9.0'} 164 | dependencies: 165 | '@babel/types': 7.20.2 166 | dev: true 167 | 168 | /@babel/helper-module-transforms/7.20.2: 169 | resolution: {integrity: sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==} 170 | engines: {node: '>=6.9.0'} 171 | dependencies: 172 | '@babel/helper-environment-visitor': 7.18.9 173 | '@babel/helper-module-imports': 7.18.6 174 | '@babel/helper-simple-access': 7.20.2 175 | '@babel/helper-split-export-declaration': 7.18.6 176 | '@babel/helper-validator-identifier': 7.19.1 177 | '@babel/template': 7.18.10 178 | '@babel/traverse': 7.20.1 179 | '@babel/types': 7.20.2 180 | transitivePeerDependencies: 181 | - supports-color 182 | dev: true 183 | 184 | /@babel/helper-plugin-utils/7.20.2: 185 | resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} 186 | engines: {node: '>=6.9.0'} 187 | dev: true 188 | 189 | /@babel/helper-simple-access/7.20.2: 190 | resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} 191 | engines: {node: '>=6.9.0'} 192 | dependencies: 193 | '@babel/types': 7.20.2 194 | dev: true 195 | 196 | /@babel/helper-split-export-declaration/7.18.6: 197 | resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} 198 | engines: {node: '>=6.9.0'} 199 | dependencies: 200 | '@babel/types': 7.20.2 201 | dev: true 202 | 203 | /@babel/helper-string-parser/7.19.4: 204 | resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} 205 | engines: {node: '>=6.9.0'} 206 | dev: true 207 | 208 | /@babel/helper-validator-identifier/7.19.1: 209 | resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} 210 | engines: {node: '>=6.9.0'} 211 | dev: true 212 | 213 | /@babel/helper-validator-option/7.18.6: 214 | resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} 215 | engines: {node: '>=6.9.0'} 216 | dev: true 217 | 218 | /@babel/helpers/7.20.1: 219 | resolution: {integrity: sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==} 220 | engines: {node: '>=6.9.0'} 221 | dependencies: 222 | '@babel/template': 7.18.10 223 | '@babel/traverse': 7.20.1 224 | '@babel/types': 7.20.2 225 | transitivePeerDependencies: 226 | - supports-color 227 | dev: true 228 | 229 | /@babel/highlight/7.18.6: 230 | resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} 231 | engines: {node: '>=6.9.0'} 232 | dependencies: 233 | '@babel/helper-validator-identifier': 7.19.1 234 | chalk: 2.4.2 235 | js-tokens: 4.0.0 236 | dev: true 237 | 238 | /@babel/parser/7.20.3: 239 | resolution: {integrity: sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==} 240 | engines: {node: '>=6.0.0'} 241 | hasBin: true 242 | dependencies: 243 | '@babel/types': 7.20.2 244 | dev: true 245 | 246 | /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.20.2: 247 | resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} 248 | engines: {node: '>=6.9.0'} 249 | peerDependencies: 250 | '@babel/core': ^7.0.0-0 251 | dependencies: 252 | '@babel/core': 7.20.2 253 | '@babel/helper-plugin-utils': 7.20.2 254 | dev: true 255 | 256 | /@babel/plugin-transform-react-jsx-development/7.18.6_@babel+core@7.20.2: 257 | resolution: {integrity: sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==} 258 | engines: {node: '>=6.9.0'} 259 | peerDependencies: 260 | '@babel/core': ^7.0.0-0 261 | dependencies: 262 | '@babel/core': 7.20.2 263 | '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.20.2 264 | dev: true 265 | 266 | /@babel/plugin-transform-react-jsx-self/7.18.6_@babel+core@7.20.2: 267 | resolution: {integrity: sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==} 268 | engines: {node: '>=6.9.0'} 269 | peerDependencies: 270 | '@babel/core': ^7.0.0-0 271 | dependencies: 272 | '@babel/core': 7.20.2 273 | '@babel/helper-plugin-utils': 7.20.2 274 | dev: true 275 | 276 | /@babel/plugin-transform-react-jsx-source/7.19.6_@babel+core@7.20.2: 277 | resolution: {integrity: sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==} 278 | engines: {node: '>=6.9.0'} 279 | peerDependencies: 280 | '@babel/core': ^7.0.0-0 281 | dependencies: 282 | '@babel/core': 7.20.2 283 | '@babel/helper-plugin-utils': 7.20.2 284 | dev: true 285 | 286 | /@babel/plugin-transform-react-jsx/7.19.0_@babel+core@7.20.2: 287 | resolution: {integrity: sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==} 288 | engines: {node: '>=6.9.0'} 289 | peerDependencies: 290 | '@babel/core': ^7.0.0-0 291 | dependencies: 292 | '@babel/core': 7.20.2 293 | '@babel/helper-annotate-as-pure': 7.18.6 294 | '@babel/helper-module-imports': 7.18.6 295 | '@babel/helper-plugin-utils': 7.20.2 296 | '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.20.2 297 | '@babel/types': 7.20.2 298 | dev: true 299 | 300 | /@babel/runtime/7.20.1: 301 | resolution: {integrity: sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==} 302 | engines: {node: '>=6.9.0'} 303 | dependencies: 304 | regenerator-runtime: 0.13.11 305 | dev: false 306 | 307 | /@babel/template/7.18.10: 308 | resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==} 309 | engines: {node: '>=6.9.0'} 310 | dependencies: 311 | '@babel/code-frame': 7.18.6 312 | '@babel/parser': 7.20.3 313 | '@babel/types': 7.20.2 314 | dev: true 315 | 316 | /@babel/traverse/7.20.1: 317 | resolution: {integrity: sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==} 318 | engines: {node: '>=6.9.0'} 319 | dependencies: 320 | '@babel/code-frame': 7.18.6 321 | '@babel/generator': 7.20.4 322 | '@babel/helper-environment-visitor': 7.18.9 323 | '@babel/helper-function-name': 7.19.0 324 | '@babel/helper-hoist-variables': 7.18.6 325 | '@babel/helper-split-export-declaration': 7.18.6 326 | '@babel/parser': 7.20.3 327 | '@babel/types': 7.20.2 328 | debug: 4.3.4 329 | globals: 11.12.0 330 | transitivePeerDependencies: 331 | - supports-color 332 | dev: true 333 | 334 | /@babel/types/7.20.2: 335 | resolution: {integrity: sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==} 336 | engines: {node: '>=6.9.0'} 337 | dependencies: 338 | '@babel/helper-string-parser': 7.19.4 339 | '@babel/helper-validator-identifier': 7.19.1 340 | to-fast-properties: 2.0.0 341 | dev: true 342 | 343 | /@esbuild/android-arm/0.15.15: 344 | resolution: {integrity: sha512-JJjZjJi2eBL01QJuWjfCdZxcIgot+VoK6Fq7eKF9w4YHm9hwl7nhBR1o2Wnt/WcANk5l9SkpvrldW1PLuXxcbw==} 345 | engines: {node: '>=12'} 346 | cpu: [arm] 347 | os: [android] 348 | requiresBuild: true 349 | dev: true 350 | optional: true 351 | 352 | /@esbuild/linux-loong64/0.15.15: 353 | resolution: {integrity: sha512-lhz6UNPMDXUhtXSulw8XlFAtSYO26WmHQnCi2Lg2p+/TMiJKNLtZCYUxV4wG6rZMzXmr8InGpNwk+DLT2Hm0PA==} 354 | engines: {node: '>=12'} 355 | cpu: [loong64] 356 | os: [linux] 357 | requiresBuild: true 358 | dev: true 359 | optional: true 360 | 361 | /@eslint/eslintrc/1.3.3: 362 | resolution: {integrity: sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==} 363 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 364 | dependencies: 365 | ajv: 6.12.6 366 | debug: 4.3.4 367 | espree: 9.4.1 368 | globals: 13.18.0 369 | ignore: 5.2.1 370 | import-fresh: 3.3.0 371 | js-yaml: 4.1.0 372 | minimatch: 3.1.2 373 | strip-json-comments: 3.1.1 374 | transitivePeerDependencies: 375 | - supports-color 376 | dev: true 377 | 378 | /@floating-ui/core/1.0.2: 379 | resolution: {integrity: sha512-Skfy0YS3NJ5nV9us0uuPN0HDk1Q4edljaOhRBJGDWs9EBa7ZVMYBHRFlhLvvmwEoaIM9BlH6QJFn9/uZg0bACg==} 380 | dev: false 381 | 382 | /@floating-ui/dom/1.0.7: 383 | resolution: {integrity: sha512-6RsqvCYe0AYWtsGvuWqCm7mZytnXAZCjWtsWu1Kg8dI3INvj/DbKlDsZO+mKSaQdPT12uxIW9W2dAWJkPx4Y5g==} 384 | dependencies: 385 | '@floating-ui/core': 1.0.2 386 | dev: false 387 | 388 | /@humanwhocodes/config-array/0.11.7: 389 | resolution: {integrity: sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==} 390 | engines: {node: '>=10.10.0'} 391 | dependencies: 392 | '@humanwhocodes/object-schema': 1.2.1 393 | debug: 4.3.4 394 | minimatch: 3.1.2 395 | transitivePeerDependencies: 396 | - supports-color 397 | dev: true 398 | 399 | /@humanwhocodes/module-importer/1.0.1: 400 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 401 | engines: {node: '>=12.22'} 402 | dev: true 403 | 404 | /@humanwhocodes/object-schema/1.2.1: 405 | resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} 406 | dev: true 407 | 408 | /@jridgewell/gen-mapping/0.1.1: 409 | resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} 410 | engines: {node: '>=6.0.0'} 411 | dependencies: 412 | '@jridgewell/set-array': 1.1.2 413 | '@jridgewell/sourcemap-codec': 1.4.14 414 | dev: true 415 | 416 | /@jridgewell/gen-mapping/0.3.2: 417 | resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} 418 | engines: {node: '>=6.0.0'} 419 | dependencies: 420 | '@jridgewell/set-array': 1.1.2 421 | '@jridgewell/sourcemap-codec': 1.4.14 422 | '@jridgewell/trace-mapping': 0.3.17 423 | dev: true 424 | 425 | /@jridgewell/resolve-uri/3.1.0: 426 | resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} 427 | engines: {node: '>=6.0.0'} 428 | dev: true 429 | 430 | /@jridgewell/set-array/1.1.2: 431 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 432 | engines: {node: '>=6.0.0'} 433 | dev: true 434 | 435 | /@jridgewell/sourcemap-codec/1.4.14: 436 | resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} 437 | dev: true 438 | 439 | /@jridgewell/trace-mapping/0.3.17: 440 | resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} 441 | dependencies: 442 | '@jridgewell/resolve-uri': 3.1.0 443 | '@jridgewell/sourcemap-codec': 1.4.14 444 | dev: true 445 | 446 | /@lexical/clipboard/0.6.4_lexical@0.6.4: 447 | resolution: {integrity: sha512-pbJmbR1B9d3l4Ey/NrNfvLibA9CzGBamf3HanDtSEcXTDwKoSkUoPDgY9worUYdz9vnQlefntIRrOGjaDbFOxA==} 448 | peerDependencies: 449 | lexical: 0.6.4 450 | dependencies: 451 | '@lexical/html': 0.6.4_lexical@0.6.4 452 | '@lexical/list': 0.6.4_lexical@0.6.4 453 | '@lexical/selection': 0.6.4_lexical@0.6.4 454 | '@lexical/utils': 0.6.4_lexical@0.6.4 455 | lexical: 0.6.4 456 | dev: false 457 | 458 | /@lexical/code/0.6.4_lexical@0.6.4: 459 | resolution: {integrity: sha512-fsGLvY6BgLSuKRn4/xqbZMnJSrY3u1b2htk7AKVOBxSeEENjLClMkdomVvbWF6CkGMX1c1wkP93MmeOe9VmF/g==} 460 | peerDependencies: 461 | lexical: 0.6.4 462 | dependencies: 463 | '@lexical/utils': 0.6.4_lexical@0.6.4 464 | lexical: 0.6.4 465 | prismjs: 1.29.0 466 | dev: false 467 | 468 | /@lexical/dragon/0.6.4_lexical@0.6.4: 469 | resolution: {integrity: sha512-6M7rtmZck1CxHsKCpUaSUNIzU0zDfus77RWEKbdBAdvFROqQoOKmBJnBRjlghqDPpi5lz8pL+70eXfcfJepwlw==} 470 | peerDependencies: 471 | lexical: 0.6.4 472 | dependencies: 473 | lexical: 0.6.4 474 | dev: false 475 | 476 | /@lexical/hashtag/0.6.4_lexical@0.6.4: 477 | resolution: {integrity: sha512-xB2/Es9PsDdtEHtcOxZk5AtqSEAkzbgadSJC7iYFssc+ltX1ZGOLqXHREZCwL8c++kUnuwr+tALL7iRuLpVouA==} 478 | peerDependencies: 479 | lexical: 0.6.4 480 | dependencies: 481 | '@lexical/utils': 0.6.4_lexical@0.6.4 482 | lexical: 0.6.4 483 | dev: false 484 | 485 | /@lexical/history/0.6.4_lexical@0.6.4: 486 | resolution: {integrity: sha512-NdFxuwNdnFFihHsawewy1tQTW3M0ubzxmkAHZNYnEnjTcF77NxetM24jdUbNS84aLckCJnc4uM84/B0N6P3H2Q==} 487 | peerDependencies: 488 | lexical: 0.6.4 489 | dependencies: 490 | '@lexical/utils': 0.6.4_lexical@0.6.4 491 | lexical: 0.6.4 492 | dev: false 493 | 494 | /@lexical/html/0.6.4_lexical@0.6.4: 495 | resolution: {integrity: sha512-NVW70XFd9Ekfe4t/FwZc2EuT2axC8wYxNQ3NI9FXnqAWvLP3F6caDUa0Qn58Gdyx8QQGKRa6GL0BFEXqaD3cxw==} 496 | peerDependencies: 497 | lexical: 0.6.4 498 | dependencies: 499 | '@lexical/selection': 0.6.4_lexical@0.6.4 500 | lexical: 0.6.4 501 | dev: false 502 | 503 | /@lexical/link/0.6.4_lexical@0.6.4: 504 | resolution: {integrity: sha512-4ergNX/GOKyRFUIf2daflB1LzU96UAi4mGH3QdkvfDBo+a4eFj7GYXCf98ktilhvGlC7El4cgLVCq/BoidjS/w==} 505 | peerDependencies: 506 | lexical: 0.6.4 507 | dependencies: 508 | '@lexical/utils': 0.6.4_lexical@0.6.4 509 | lexical: 0.6.4 510 | dev: false 511 | 512 | /@lexical/list/0.6.4_lexical@0.6.4: 513 | resolution: {integrity: sha512-2WjQTABK4Zckup0YXp/UpAuCul4Ay8yTTUNEhsPpZegeYyglURugx5uYsh811+wN6acUZwFhkYRyyzxU9cDPsg==} 514 | peerDependencies: 515 | lexical: 0.6.4 516 | dependencies: 517 | '@lexical/utils': 0.6.4_lexical@0.6.4 518 | lexical: 0.6.4 519 | dev: false 520 | 521 | /@lexical/mark/0.6.4_lexical@0.6.4: 522 | resolution: {integrity: sha512-2Hpc21i2VmAHilnAevbuUlQijiRd6KVoIEJldx2+oK0vsXQnYnAF4T/RdZO3BStPVdSW3KnIa2TNqsmMJHqG2g==} 523 | peerDependencies: 524 | lexical: 0.6.4 525 | dependencies: 526 | '@lexical/utils': 0.6.4_lexical@0.6.4 527 | lexical: 0.6.4 528 | dev: false 529 | 530 | /@lexical/markdown/0.6.4_dlxdgdmlaurtixklkqcbpqk7be: 531 | resolution: {integrity: sha512-9kg+BsP4ePCztrK7UYW8a+8ad1/h/OLziJkMZkl3YAkfhJudkHoj4ljCTJZcLuXHtVXmvLZhyGZktitcJImnOg==} 532 | peerDependencies: 533 | lexical: 0.6.4 534 | dependencies: 535 | '@lexical/code': 0.6.4_lexical@0.6.4 536 | '@lexical/link': 0.6.4_lexical@0.6.4 537 | '@lexical/list': 0.6.4_lexical@0.6.4 538 | '@lexical/rich-text': 0.6.4_jxqtqauh5scnexlu66czmxsxkq 539 | '@lexical/text': 0.6.4_lexical@0.6.4 540 | '@lexical/utils': 0.6.4_lexical@0.6.4 541 | lexical: 0.6.4 542 | transitivePeerDependencies: 543 | - '@lexical/clipboard' 544 | - '@lexical/selection' 545 | dev: false 546 | 547 | /@lexical/offset/0.6.4_lexical@0.6.4: 548 | resolution: {integrity: sha512-IdB1GL5yRRDQPOedXG4zT7opdjHGx+7DqLKOQwcSMWo/XprnJxIq8zpFew3XCp/nBKp+hyUsdf98vmEaG3XctQ==} 549 | peerDependencies: 550 | lexical: 0.6.4 551 | dependencies: 552 | lexical: 0.6.4 553 | dev: false 554 | 555 | /@lexical/overflow/0.6.4_lexical@0.6.4: 556 | resolution: {integrity: sha512-Mdcpi2PyWTaDpEfTBAGSEX+5E0v/okSTLoIg1eDO3Q3VgGEkr5++FrJH8rVGIl6KIJeAa1WVM0vcu/W4O6y5ng==} 557 | peerDependencies: 558 | lexical: 0.6.4 559 | dependencies: 560 | lexical: 0.6.4 561 | dev: false 562 | 563 | /@lexical/plain-text/0.6.4_jxqtqauh5scnexlu66czmxsxkq: 564 | resolution: {integrity: sha512-VB1zKqyef+3Vs8SVwob1HvCGRRfn4bypyKUyk93kk6LQDpjiGC6Go2OyuPX0EuJeFnQBYmYd3Bi205k/nVjfZA==} 565 | peerDependencies: 566 | '@lexical/clipboard': 0.6.4 567 | '@lexical/selection': 0.6.4 568 | '@lexical/utils': 0.6.4 569 | lexical: 0.6.4 570 | dependencies: 571 | '@lexical/clipboard': 0.6.4_lexical@0.6.4 572 | '@lexical/selection': 0.6.4_lexical@0.6.4 573 | '@lexical/utils': 0.6.4_lexical@0.6.4 574 | lexical: 0.6.4 575 | dev: false 576 | 577 | /@lexical/react/0.6.4_kpr2eqve2cw3wrreahgz2ip7ja: 578 | resolution: {integrity: sha512-KAbNF/H5TzwCBFe5zuxz9ZSxj6a9ol8a2JkhACriO4HqWM0mURsxrXU8g3hySFpp4W7tdjpGSWsHLTdnaovHzw==} 579 | peerDependencies: 580 | lexical: 0.6.4 581 | react: '>=17.x' 582 | react-dom: '>=17.x' 583 | dependencies: 584 | '@lexical/clipboard': 0.6.4_lexical@0.6.4 585 | '@lexical/code': 0.6.4_lexical@0.6.4 586 | '@lexical/dragon': 0.6.4_lexical@0.6.4 587 | '@lexical/hashtag': 0.6.4_lexical@0.6.4 588 | '@lexical/history': 0.6.4_lexical@0.6.4 589 | '@lexical/link': 0.6.4_lexical@0.6.4 590 | '@lexical/list': 0.6.4_lexical@0.6.4 591 | '@lexical/mark': 0.6.4_lexical@0.6.4 592 | '@lexical/markdown': 0.6.4_dlxdgdmlaurtixklkqcbpqk7be 593 | '@lexical/overflow': 0.6.4_lexical@0.6.4 594 | '@lexical/plain-text': 0.6.4_jxqtqauh5scnexlu66czmxsxkq 595 | '@lexical/rich-text': 0.6.4_jxqtqauh5scnexlu66czmxsxkq 596 | '@lexical/selection': 0.6.4_lexical@0.6.4 597 | '@lexical/table': 0.6.4_lexical@0.6.4 598 | '@lexical/text': 0.6.4_lexical@0.6.4 599 | '@lexical/utils': 0.6.4_lexical@0.6.4 600 | '@lexical/yjs': 0.6.4_lexical@0.6.4 601 | lexical: 0.6.4 602 | react: 18.2.0 603 | react-dom: 18.2.0_react@18.2.0 604 | react-error-boundary: 3.1.4_react@18.2.0 605 | transitivePeerDependencies: 606 | - yjs 607 | dev: false 608 | 609 | /@lexical/rich-text/0.6.4_jxqtqauh5scnexlu66czmxsxkq: 610 | resolution: {integrity: sha512-GUTAEUPmSKzL1kldvdHqM9IgiAJC1qfMeDQFyUS2xwWKQnid0nVeUZXNxyBwxZLyOcyDkx5dXp9YiEO6X4x+TQ==} 611 | peerDependencies: 612 | '@lexical/clipboard': 0.6.4 613 | '@lexical/selection': 0.6.4 614 | '@lexical/utils': 0.6.4 615 | lexical: 0.6.4 616 | dependencies: 617 | '@lexical/clipboard': 0.6.4_lexical@0.6.4 618 | '@lexical/selection': 0.6.4_lexical@0.6.4 619 | '@lexical/utils': 0.6.4_lexical@0.6.4 620 | lexical: 0.6.4 621 | dev: false 622 | 623 | /@lexical/selection/0.6.4_lexical@0.6.4: 624 | resolution: {integrity: sha512-dmrIQCQJOKARS7VRyE9WEKRaqP8SG9Xtzm8Bsk6+P0up1yWzlUvww+2INKr0bUUeQmI7DJxo5PX68qcoLeTAUg==} 625 | peerDependencies: 626 | lexical: 0.6.4 627 | dependencies: 628 | lexical: 0.6.4 629 | dev: false 630 | 631 | /@lexical/table/0.6.4_lexical@0.6.4: 632 | resolution: {integrity: sha512-PjmRd5w5Gy4ht4i3IpQag/bsOi5V3/Fd0RQaD2gFaTFCh49NsYWrJcV6K1tH7xpO4PDJFibC5At2EiVKwhMyFA==} 633 | peerDependencies: 634 | lexical: 0.6.4 635 | dependencies: 636 | '@lexical/utils': 0.6.4_lexical@0.6.4 637 | lexical: 0.6.4 638 | dev: false 639 | 640 | /@lexical/text/0.6.4_lexical@0.6.4: 641 | resolution: {integrity: sha512-gCANONCi3J2zf+yxv2CPEj2rsxpUBgQuR4TymGjsoVFsHqjRc3qHF5lNlbpWjPL5bJDSHFJySwn4/P20GNWggg==} 642 | peerDependencies: 643 | lexical: 0.6.4 644 | dependencies: 645 | lexical: 0.6.4 646 | dev: false 647 | 648 | /@lexical/utils/0.6.4_lexical@0.6.4: 649 | resolution: {integrity: sha512-JPFC+V65Eu+YTfThzV+LEGWj/QXre91Yq6c+P3VMWNfck4ZC1Enc6v7ntP9UI7FYFyM5NfwvWTzjUGEOYGajwg==} 650 | peerDependencies: 651 | lexical: 0.6.4 652 | dependencies: 653 | '@lexical/list': 0.6.4_lexical@0.6.4 654 | '@lexical/table': 0.6.4_lexical@0.6.4 655 | lexical: 0.6.4 656 | dev: false 657 | 658 | /@lexical/yjs/0.6.4_lexical@0.6.4: 659 | resolution: {integrity: sha512-QlhB/gIB+/3d9nP5zgnR8oJZ++14vw1VxgjBjXs1pW+32ho4ET4Wa+E0OHuVSwozEhJsC4wT1Q1C38oX+yRHdQ==} 660 | peerDependencies: 661 | lexical: 0.6.4 662 | yjs: '>=13.5.22' 663 | dependencies: 664 | '@lexical/offset': 0.6.4_lexical@0.6.4 665 | lexical: 0.6.4 666 | dev: false 667 | 668 | /@nodelib/fs.scandir/2.1.5: 669 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 670 | engines: {node: '>= 8'} 671 | dependencies: 672 | '@nodelib/fs.stat': 2.0.5 673 | run-parallel: 1.2.0 674 | dev: true 675 | 676 | /@nodelib/fs.stat/2.0.5: 677 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 678 | engines: {node: '>= 8'} 679 | dev: true 680 | 681 | /@nodelib/fs.walk/1.2.8: 682 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 683 | engines: {node: '>= 8'} 684 | dependencies: 685 | '@nodelib/fs.scandir': 2.1.5 686 | fastq: 1.13.0 687 | dev: true 688 | 689 | /@tailwindcss/typography/0.5.8_tailwindcss@3.2.4: 690 | resolution: {integrity: sha512-xGQEp8KXN8Sd8m6R4xYmwxghmswrd0cPnNI2Lc6fmrC3OojysTBJJGSIVwPV56q4t6THFUK3HJ0EaWwpglSxWw==} 691 | peerDependencies: 692 | tailwindcss: '>=3.0.0 || insiders' 693 | dependencies: 694 | lodash.castarray: 4.4.0 695 | lodash.isplainobject: 4.0.6 696 | lodash.merge: 4.6.2 697 | postcss-selector-parser: 6.0.10 698 | tailwindcss: 3.2.4_postcss@8.4.19 699 | dev: true 700 | 701 | /@types/json-schema/7.0.11: 702 | resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} 703 | dev: true 704 | 705 | /@types/prop-types/15.7.5: 706 | resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} 707 | dev: true 708 | 709 | /@types/react-dom/18.0.9: 710 | resolution: {integrity: sha512-qnVvHxASt/H7i+XG1U1xMiY5t+IHcPGUK7TDMDzom08xa7e86eCeKOiLZezwCKVxJn6NEiiy2ekgX8aQssjIKg==} 711 | dependencies: 712 | '@types/react': 18.0.25 713 | dev: true 714 | 715 | /@types/react/18.0.25: 716 | resolution: {integrity: sha512-xD6c0KDT4m7n9uD4ZHi02lzskaiqcBxf4zi+tXZY98a04wvc0hi/TcCPC2FOESZi51Nd7tlUeOJY8RofL799/g==} 717 | dependencies: 718 | '@types/prop-types': 15.7.5 719 | '@types/scheduler': 0.16.2 720 | csstype: 3.1.1 721 | dev: true 722 | 723 | /@types/scheduler/0.16.2: 724 | resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} 725 | dev: true 726 | 727 | /@types/semver/7.3.13: 728 | resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} 729 | dev: true 730 | 731 | /@typescript-eslint/eslint-plugin/5.45.0_yjegg5cyoezm3fzsmuszzhetym: 732 | resolution: {integrity: sha512-CXXHNlf0oL+Yg021cxgOdMHNTXD17rHkq7iW6RFHoybdFgQBjU3yIXhhcPpGwr1CjZlo6ET8C6tzX5juQoXeGA==} 733 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 734 | peerDependencies: 735 | '@typescript-eslint/parser': ^5.0.0 736 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 737 | typescript: '*' 738 | peerDependenciesMeta: 739 | typescript: 740 | optional: true 741 | dependencies: 742 | '@typescript-eslint/parser': 5.45.0_s5ps7njkmjlaqajutnox5ntcla 743 | '@typescript-eslint/scope-manager': 5.45.0 744 | '@typescript-eslint/type-utils': 5.45.0_s5ps7njkmjlaqajutnox5ntcla 745 | '@typescript-eslint/utils': 5.45.0_s5ps7njkmjlaqajutnox5ntcla 746 | debug: 4.3.4 747 | eslint: 8.29.0 748 | ignore: 5.2.1 749 | natural-compare-lite: 1.4.0 750 | regexpp: 3.2.0 751 | semver: 7.3.8 752 | tsutils: 3.21.0_typescript@4.9.3 753 | typescript: 4.9.3 754 | transitivePeerDependencies: 755 | - supports-color 756 | dev: true 757 | 758 | /@typescript-eslint/parser/5.45.0_s5ps7njkmjlaqajutnox5ntcla: 759 | resolution: {integrity: sha512-brvs/WSM4fKUmF5Ot/gEve6qYiCMjm6w4HkHPfS6ZNmxTS0m0iNN4yOChImaCkqc1hRwFGqUyanMXuGal6oyyQ==} 760 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 761 | peerDependencies: 762 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 763 | typescript: '*' 764 | peerDependenciesMeta: 765 | typescript: 766 | optional: true 767 | dependencies: 768 | '@typescript-eslint/scope-manager': 5.45.0 769 | '@typescript-eslint/types': 5.45.0 770 | '@typescript-eslint/typescript-estree': 5.45.0_typescript@4.9.3 771 | debug: 4.3.4 772 | eslint: 8.29.0 773 | typescript: 4.9.3 774 | transitivePeerDependencies: 775 | - supports-color 776 | dev: true 777 | 778 | /@typescript-eslint/scope-manager/5.45.0: 779 | resolution: {integrity: sha512-noDMjr87Arp/PuVrtvN3dXiJstQR1+XlQ4R1EvzG+NMgXi8CuMCXpb8JqNtFHKceVSQ985BZhfRdowJzbv4yKw==} 780 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 781 | dependencies: 782 | '@typescript-eslint/types': 5.45.0 783 | '@typescript-eslint/visitor-keys': 5.45.0 784 | dev: true 785 | 786 | /@typescript-eslint/type-utils/5.45.0_s5ps7njkmjlaqajutnox5ntcla: 787 | resolution: {integrity: sha512-DY7BXVFSIGRGFZ574hTEyLPRiQIvI/9oGcN8t1A7f6zIs6ftbrU0nhyV26ZW//6f85avkwrLag424n+fkuoJ1Q==} 788 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 789 | peerDependencies: 790 | eslint: '*' 791 | typescript: '*' 792 | peerDependenciesMeta: 793 | typescript: 794 | optional: true 795 | dependencies: 796 | '@typescript-eslint/typescript-estree': 5.45.0_typescript@4.9.3 797 | '@typescript-eslint/utils': 5.45.0_s5ps7njkmjlaqajutnox5ntcla 798 | debug: 4.3.4 799 | eslint: 8.29.0 800 | tsutils: 3.21.0_typescript@4.9.3 801 | typescript: 4.9.3 802 | transitivePeerDependencies: 803 | - supports-color 804 | dev: true 805 | 806 | /@typescript-eslint/types/5.45.0: 807 | resolution: {integrity: sha512-QQij+u/vgskA66azc9dCmx+rev79PzX8uDHpsqSjEFtfF2gBUTRCpvYMh2gw2ghkJabNkPlSUCimsyBEQZd1DA==} 808 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 809 | dev: true 810 | 811 | /@typescript-eslint/typescript-estree/5.45.0_typescript@4.9.3: 812 | resolution: {integrity: sha512-maRhLGSzqUpFcZgXxg1qc/+H0bT36lHK4APhp0AEUVrpSwXiRAomm/JGjSG+kNUio5kAa3uekCYu/47cnGn5EQ==} 813 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 814 | peerDependencies: 815 | typescript: '*' 816 | peerDependenciesMeta: 817 | typescript: 818 | optional: true 819 | dependencies: 820 | '@typescript-eslint/types': 5.45.0 821 | '@typescript-eslint/visitor-keys': 5.45.0 822 | debug: 4.3.4 823 | globby: 11.1.0 824 | is-glob: 4.0.3 825 | semver: 7.3.8 826 | tsutils: 3.21.0_typescript@4.9.3 827 | typescript: 4.9.3 828 | transitivePeerDependencies: 829 | - supports-color 830 | dev: true 831 | 832 | /@typescript-eslint/utils/5.45.0_s5ps7njkmjlaqajutnox5ntcla: 833 | resolution: {integrity: sha512-OUg2JvsVI1oIee/SwiejTot2OxwU8a7UfTFMOdlhD2y+Hl6memUSL4s98bpUTo8EpVEr0lmwlU7JSu/p2QpSvA==} 834 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 835 | peerDependencies: 836 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 837 | dependencies: 838 | '@types/json-schema': 7.0.11 839 | '@types/semver': 7.3.13 840 | '@typescript-eslint/scope-manager': 5.45.0 841 | '@typescript-eslint/types': 5.45.0 842 | '@typescript-eslint/typescript-estree': 5.45.0_typescript@4.9.3 843 | eslint: 8.29.0 844 | eslint-scope: 5.1.1 845 | eslint-utils: 3.0.0_eslint@8.29.0 846 | semver: 7.3.8 847 | transitivePeerDependencies: 848 | - supports-color 849 | - typescript 850 | dev: true 851 | 852 | /@typescript-eslint/visitor-keys/5.45.0: 853 | resolution: {integrity: sha512-jc6Eccbn2RtQPr1s7th6jJWQHBHI6GBVQkCHoJFQ5UreaKm59Vxw+ynQUPPY2u2Amquc+7tmEoC2G52ApsGNNg==} 854 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 855 | dependencies: 856 | '@typescript-eslint/types': 5.45.0 857 | eslint-visitor-keys: 3.3.0 858 | dev: true 859 | 860 | /@vitejs/plugin-react/2.2.0_vite@3.2.4: 861 | resolution: {integrity: sha512-FFpefhvExd1toVRlokZgxgy2JtnBOdp4ZDsq7ldCWaqGSGn9UhWMAVm/1lxPL14JfNS5yGz+s9yFrQY6shoStA==} 862 | engines: {node: ^14.18.0 || >=16.0.0} 863 | peerDependencies: 864 | vite: ^3.0.0 865 | dependencies: 866 | '@babel/core': 7.20.2 867 | '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.20.2 868 | '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.20.2 869 | '@babel/plugin-transform-react-jsx-self': 7.18.6_@babel+core@7.20.2 870 | '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.20.2 871 | magic-string: 0.26.7 872 | react-refresh: 0.14.0 873 | vite: 3.2.4 874 | transitivePeerDependencies: 875 | - supports-color 876 | dev: true 877 | 878 | /acorn-jsx/5.3.2_acorn@8.8.1: 879 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 880 | peerDependencies: 881 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 882 | dependencies: 883 | acorn: 8.8.1 884 | dev: true 885 | 886 | /acorn-node/1.8.2: 887 | resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==} 888 | dependencies: 889 | acorn: 7.4.1 890 | acorn-walk: 7.2.0 891 | xtend: 4.0.2 892 | dev: true 893 | 894 | /acorn-walk/7.2.0: 895 | resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} 896 | engines: {node: '>=0.4.0'} 897 | dev: true 898 | 899 | /acorn/7.4.1: 900 | resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} 901 | engines: {node: '>=0.4.0'} 902 | hasBin: true 903 | dev: true 904 | 905 | /acorn/8.8.1: 906 | resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} 907 | engines: {node: '>=0.4.0'} 908 | hasBin: true 909 | dev: true 910 | 911 | /ajv/6.12.6: 912 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 913 | dependencies: 914 | fast-deep-equal: 3.1.3 915 | fast-json-stable-stringify: 2.1.0 916 | json-schema-traverse: 0.4.1 917 | uri-js: 4.4.1 918 | dev: true 919 | 920 | /ansi-regex/5.0.1: 921 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 922 | engines: {node: '>=8'} 923 | dev: true 924 | 925 | /ansi-styles/3.2.1: 926 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 927 | engines: {node: '>=4'} 928 | dependencies: 929 | color-convert: 1.9.3 930 | dev: true 931 | 932 | /ansi-styles/4.3.0: 933 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 934 | engines: {node: '>=8'} 935 | dependencies: 936 | color-convert: 2.0.1 937 | dev: true 938 | 939 | /anymatch/3.1.3: 940 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 941 | engines: {node: '>= 8'} 942 | dependencies: 943 | normalize-path: 3.0.0 944 | picomatch: 2.3.1 945 | dev: true 946 | 947 | /arg/5.0.2: 948 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} 949 | dev: true 950 | 951 | /argparse/2.0.1: 952 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 953 | dev: true 954 | 955 | /array-includes/3.1.6: 956 | resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} 957 | engines: {node: '>= 0.4'} 958 | dependencies: 959 | call-bind: 1.0.2 960 | define-properties: 1.1.4 961 | es-abstract: 1.20.4 962 | get-intrinsic: 1.1.3 963 | is-string: 1.0.7 964 | dev: true 965 | 966 | /array-union/2.1.0: 967 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 968 | engines: {node: '>=8'} 969 | dev: true 970 | 971 | /array.prototype.flatmap/1.3.1: 972 | resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} 973 | engines: {node: '>= 0.4'} 974 | dependencies: 975 | call-bind: 1.0.2 976 | define-properties: 1.1.4 977 | es-abstract: 1.20.4 978 | es-shim-unscopables: 1.0.0 979 | dev: true 980 | 981 | /array.prototype.tosorted/1.1.1: 982 | resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} 983 | dependencies: 984 | call-bind: 1.0.2 985 | define-properties: 1.1.4 986 | es-abstract: 1.20.4 987 | es-shim-unscopables: 1.0.0 988 | get-intrinsic: 1.1.3 989 | dev: true 990 | 991 | /autoprefixer/10.4.13_postcss@8.4.19: 992 | resolution: {integrity: sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==} 993 | engines: {node: ^10 || ^12 || >=14} 994 | hasBin: true 995 | peerDependencies: 996 | postcss: ^8.1.0 997 | dependencies: 998 | browserslist: 4.21.4 999 | caniuse-lite: 1.0.30001434 1000 | fraction.js: 4.2.0 1001 | normalize-range: 0.1.2 1002 | picocolors: 1.0.0 1003 | postcss: 8.4.19 1004 | postcss-value-parser: 4.2.0 1005 | dev: true 1006 | 1007 | /balanced-match/1.0.2: 1008 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 1009 | dev: true 1010 | 1011 | /binary-extensions/2.2.0: 1012 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 1013 | engines: {node: '>=8'} 1014 | dev: true 1015 | 1016 | /brace-expansion/1.1.11: 1017 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 1018 | dependencies: 1019 | balanced-match: 1.0.2 1020 | concat-map: 0.0.1 1021 | dev: true 1022 | 1023 | /braces/3.0.2: 1024 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 1025 | engines: {node: '>=8'} 1026 | dependencies: 1027 | fill-range: 7.0.1 1028 | dev: true 1029 | 1030 | /browserslist/4.21.4: 1031 | resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} 1032 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 1033 | hasBin: true 1034 | dependencies: 1035 | caniuse-lite: 1.0.30001434 1036 | electron-to-chromium: 1.4.284 1037 | node-releases: 2.0.6 1038 | update-browserslist-db: 1.0.10_browserslist@4.21.4 1039 | dev: true 1040 | 1041 | /call-bind/1.0.2: 1042 | resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} 1043 | dependencies: 1044 | function-bind: 1.1.1 1045 | get-intrinsic: 1.1.3 1046 | dev: true 1047 | 1048 | /callsites/3.1.0: 1049 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 1050 | engines: {node: '>=6'} 1051 | dev: true 1052 | 1053 | /camelcase-css/2.0.1: 1054 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} 1055 | engines: {node: '>= 6'} 1056 | dev: true 1057 | 1058 | /caniuse-lite/1.0.30001434: 1059 | resolution: {integrity: sha512-aOBHrLmTQw//WFa2rcF1If9fa3ypkC1wzqqiKHgfdrXTWcU8C4gKVZT77eQAPWN1APys3+uQ0Df07rKauXGEYA==} 1060 | dev: true 1061 | 1062 | /chalk/2.4.2: 1063 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 1064 | engines: {node: '>=4'} 1065 | dependencies: 1066 | ansi-styles: 3.2.1 1067 | escape-string-regexp: 1.0.5 1068 | supports-color: 5.5.0 1069 | dev: true 1070 | 1071 | /chalk/4.1.2: 1072 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 1073 | engines: {node: '>=10'} 1074 | dependencies: 1075 | ansi-styles: 4.3.0 1076 | supports-color: 7.2.0 1077 | dev: true 1078 | 1079 | /chokidar/3.5.3: 1080 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 1081 | engines: {node: '>= 8.10.0'} 1082 | dependencies: 1083 | anymatch: 3.1.3 1084 | braces: 3.0.2 1085 | glob-parent: 5.1.2 1086 | is-binary-path: 2.1.0 1087 | is-glob: 4.0.3 1088 | normalize-path: 3.0.0 1089 | readdirp: 3.6.0 1090 | optionalDependencies: 1091 | fsevents: 2.3.2 1092 | dev: true 1093 | 1094 | /classnames/2.3.2: 1095 | resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} 1096 | dev: false 1097 | 1098 | /color-convert/1.9.3: 1099 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 1100 | dependencies: 1101 | color-name: 1.1.3 1102 | dev: true 1103 | 1104 | /color-convert/2.0.1: 1105 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 1106 | engines: {node: '>=7.0.0'} 1107 | dependencies: 1108 | color-name: 1.1.4 1109 | dev: true 1110 | 1111 | /color-name/1.1.3: 1112 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} 1113 | dev: true 1114 | 1115 | /color-name/1.1.4: 1116 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 1117 | dev: true 1118 | 1119 | /concat-map/0.0.1: 1120 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 1121 | dev: true 1122 | 1123 | /convert-source-map/1.9.0: 1124 | resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} 1125 | dev: true 1126 | 1127 | /cross-spawn/7.0.3: 1128 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 1129 | engines: {node: '>= 8'} 1130 | dependencies: 1131 | path-key: 3.1.1 1132 | shebang-command: 2.0.0 1133 | which: 2.0.2 1134 | dev: true 1135 | 1136 | /cssesc/3.0.0: 1137 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 1138 | engines: {node: '>=4'} 1139 | hasBin: true 1140 | dev: true 1141 | 1142 | /csstype/3.1.1: 1143 | resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} 1144 | dev: true 1145 | 1146 | /debug/4.3.4: 1147 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 1148 | engines: {node: '>=6.0'} 1149 | peerDependencies: 1150 | supports-color: '*' 1151 | peerDependenciesMeta: 1152 | supports-color: 1153 | optional: true 1154 | dependencies: 1155 | ms: 2.1.2 1156 | dev: true 1157 | 1158 | /deep-is/0.1.4: 1159 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 1160 | dev: true 1161 | 1162 | /define-properties/1.1.4: 1163 | resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} 1164 | engines: {node: '>= 0.4'} 1165 | dependencies: 1166 | has-property-descriptors: 1.0.0 1167 | object-keys: 1.1.1 1168 | dev: true 1169 | 1170 | /defined/1.0.1: 1171 | resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} 1172 | dev: true 1173 | 1174 | /detective/5.2.1: 1175 | resolution: {integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==} 1176 | engines: {node: '>=0.8.0'} 1177 | hasBin: true 1178 | dependencies: 1179 | acorn-node: 1.8.2 1180 | defined: 1.0.1 1181 | minimist: 1.2.7 1182 | dev: true 1183 | 1184 | /didyoumean/1.2.2: 1185 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} 1186 | dev: true 1187 | 1188 | /dir-glob/3.0.1: 1189 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 1190 | engines: {node: '>=8'} 1191 | dependencies: 1192 | path-type: 4.0.0 1193 | dev: true 1194 | 1195 | /dlv/1.1.3: 1196 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 1197 | dev: true 1198 | 1199 | /doctrine/2.1.0: 1200 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} 1201 | engines: {node: '>=0.10.0'} 1202 | dependencies: 1203 | esutils: 2.0.3 1204 | dev: true 1205 | 1206 | /doctrine/3.0.0: 1207 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 1208 | engines: {node: '>=6.0.0'} 1209 | dependencies: 1210 | esutils: 2.0.3 1211 | dev: true 1212 | 1213 | /electron-to-chromium/1.4.284: 1214 | resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} 1215 | dev: true 1216 | 1217 | /es-abstract/1.20.4: 1218 | resolution: {integrity: sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==} 1219 | engines: {node: '>= 0.4'} 1220 | dependencies: 1221 | call-bind: 1.0.2 1222 | es-to-primitive: 1.2.1 1223 | function-bind: 1.1.1 1224 | function.prototype.name: 1.1.5 1225 | get-intrinsic: 1.1.3 1226 | get-symbol-description: 1.0.0 1227 | has: 1.0.3 1228 | has-property-descriptors: 1.0.0 1229 | has-symbols: 1.0.3 1230 | internal-slot: 1.0.3 1231 | is-callable: 1.2.7 1232 | is-negative-zero: 2.0.2 1233 | is-regex: 1.1.4 1234 | is-shared-array-buffer: 1.0.2 1235 | is-string: 1.0.7 1236 | is-weakref: 1.0.2 1237 | object-inspect: 1.12.2 1238 | object-keys: 1.1.1 1239 | object.assign: 4.1.4 1240 | regexp.prototype.flags: 1.4.3 1241 | safe-regex-test: 1.0.0 1242 | string.prototype.trimend: 1.0.6 1243 | string.prototype.trimstart: 1.0.6 1244 | unbox-primitive: 1.0.2 1245 | dev: true 1246 | 1247 | /es-shim-unscopables/1.0.0: 1248 | resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} 1249 | dependencies: 1250 | has: 1.0.3 1251 | dev: true 1252 | 1253 | /es-to-primitive/1.2.1: 1254 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} 1255 | engines: {node: '>= 0.4'} 1256 | dependencies: 1257 | is-callable: 1.2.7 1258 | is-date-object: 1.0.5 1259 | is-symbol: 1.0.4 1260 | dev: true 1261 | 1262 | /esbuild-android-64/0.15.15: 1263 | resolution: {integrity: sha512-F+WjjQxO+JQOva3tJWNdVjouFMLK6R6i5gjDvgUthLYJnIZJsp1HlF523k73hELY20WPyEO8xcz7aaYBVkeg5Q==} 1264 | engines: {node: '>=12'} 1265 | cpu: [x64] 1266 | os: [android] 1267 | requiresBuild: true 1268 | dev: true 1269 | optional: true 1270 | 1271 | /esbuild-android-arm64/0.15.15: 1272 | resolution: {integrity: sha512-attlyhD6Y22jNyQ0fIIQ7mnPvDWKw7k6FKnsXlBvQE6s3z6s6cuEHcSgoirquQc7TmZgVCK5fD/2uxmRN+ZpcQ==} 1273 | engines: {node: '>=12'} 1274 | cpu: [arm64] 1275 | os: [android] 1276 | requiresBuild: true 1277 | dev: true 1278 | optional: true 1279 | 1280 | /esbuild-darwin-64/0.15.15: 1281 | resolution: {integrity: sha512-ohZtF8W1SHJ4JWldsPVdk8st0r9ExbAOSrBOh5L+Mq47i696GVwv1ab/KlmbUoikSTNoXEhDzVpxUR/WIO19FQ==} 1282 | engines: {node: '>=12'} 1283 | cpu: [x64] 1284 | os: [darwin] 1285 | requiresBuild: true 1286 | dev: true 1287 | optional: true 1288 | 1289 | /esbuild-darwin-arm64/0.15.15: 1290 | resolution: {integrity: sha512-P8jOZ5zshCNIuGn+9KehKs/cq5uIniC+BeCykvdVhx/rBXSxmtj3CUIKZz4sDCuESMbitK54drf/2QX9QHG5Ag==} 1291 | engines: {node: '>=12'} 1292 | cpu: [arm64] 1293 | os: [darwin] 1294 | requiresBuild: true 1295 | dev: true 1296 | optional: true 1297 | 1298 | /esbuild-freebsd-64/0.15.15: 1299 | resolution: {integrity: sha512-KkTg+AmDXz1IvA9S1gt8dE24C8Thx0X5oM0KGF322DuP+P3evwTL9YyusHAWNsh4qLsR80nvBr/EIYs29VSwuA==} 1300 | engines: {node: '>=12'} 1301 | cpu: [x64] 1302 | os: [freebsd] 1303 | requiresBuild: true 1304 | dev: true 1305 | optional: true 1306 | 1307 | /esbuild-freebsd-arm64/0.15.15: 1308 | resolution: {integrity: sha512-FUcML0DRsuyqCMfAC+HoeAqvWxMeq0qXvclZZ/lt2kLU6XBnDA5uKTLUd379WYEyVD4KKFctqWd9tTuk8C/96g==} 1309 | engines: {node: '>=12'} 1310 | cpu: [arm64] 1311 | os: [freebsd] 1312 | requiresBuild: true 1313 | dev: true 1314 | optional: true 1315 | 1316 | /esbuild-linux-32/0.15.15: 1317 | resolution: {integrity: sha512-q28Qn5pZgHNqug02aTkzw5sW9OklSo96b5nm17Mq0pDXrdTBcQ+M6Q9A1B+dalFeynunwh/pvfrNucjzwDXj+Q==} 1318 | engines: {node: '>=12'} 1319 | cpu: [ia32] 1320 | os: [linux] 1321 | requiresBuild: true 1322 | dev: true 1323 | optional: true 1324 | 1325 | /esbuild-linux-64/0.15.15: 1326 | resolution: {integrity: sha512-217KPmWMirkf8liO+fj2qrPwbIbhNTGNVtvqI1TnOWJgcMjUWvd677Gq3fTzXEjilkx2yWypVnTswM2KbXgoAg==} 1327 | engines: {node: '>=12'} 1328 | cpu: [x64] 1329 | os: [linux] 1330 | requiresBuild: true 1331 | dev: true 1332 | optional: true 1333 | 1334 | /esbuild-linux-arm/0.15.15: 1335 | resolution: {integrity: sha512-RYVW9o2yN8yM7SB1yaWr378CwrjvGCyGybX3SdzPHpikUHkME2AP55Ma20uNwkNyY2eSYFX9D55kDrfQmQBR4w==} 1336 | engines: {node: '>=12'} 1337 | cpu: [arm] 1338 | os: [linux] 1339 | requiresBuild: true 1340 | dev: true 1341 | optional: true 1342 | 1343 | /esbuild-linux-arm64/0.15.15: 1344 | resolution: {integrity: sha512-/ltmNFs0FivZkYsTzAsXIfLQX38lFnwJTWCJts0IbCqWZQe+jjj0vYBNbI0kmXLb3y5NljiM5USVAO1NVkdh2g==} 1345 | engines: {node: '>=12'} 1346 | cpu: [arm64] 1347 | os: [linux] 1348 | requiresBuild: true 1349 | dev: true 1350 | optional: true 1351 | 1352 | /esbuild-linux-mips64le/0.15.15: 1353 | resolution: {integrity: sha512-PksEPb321/28GFFxtvL33yVPfnMZihxkEv5zME2zapXGp7fA1X2jYeiTUK+9tJ/EGgcNWuwvtawPxJG7Mmn86A==} 1354 | engines: {node: '>=12'} 1355 | cpu: [mips64el] 1356 | os: [linux] 1357 | requiresBuild: true 1358 | dev: true 1359 | optional: true 1360 | 1361 | /esbuild-linux-ppc64le/0.15.15: 1362 | resolution: {integrity: sha512-ek8gJBEIhcpGI327eAZigBOHl58QqrJrYYIZBWQCnH3UnXoeWMrMZLeeZL8BI2XMBhP+sQ6ERctD5X+ajL/AIA==} 1363 | engines: {node: '>=12'} 1364 | cpu: [ppc64] 1365 | os: [linux] 1366 | requiresBuild: true 1367 | dev: true 1368 | optional: true 1369 | 1370 | /esbuild-linux-riscv64/0.15.15: 1371 | resolution: {integrity: sha512-H5ilTZb33/GnUBrZMNJtBk7/OXzDHDXjIzoLXHSutwwsLxSNaLxzAaMoDGDd/keZoS+GDBqNVxdCkpuiRW4OSw==} 1372 | engines: {node: '>=12'} 1373 | cpu: [riscv64] 1374 | os: [linux] 1375 | requiresBuild: true 1376 | dev: true 1377 | optional: true 1378 | 1379 | /esbuild-linux-s390x/0.15.15: 1380 | resolution: {integrity: sha512-jKaLUg78mua3rrtrkpv4Or2dNTJU7bgHN4bEjT4OX4GR7nLBSA9dfJezQouTxMmIW7opwEC5/iR9mpC18utnxQ==} 1381 | engines: {node: '>=12'} 1382 | cpu: [s390x] 1383 | os: [linux] 1384 | requiresBuild: true 1385 | dev: true 1386 | optional: true 1387 | 1388 | /esbuild-netbsd-64/0.15.15: 1389 | resolution: {integrity: sha512-aOvmF/UkjFuW6F36HbIlImJTTx45KUCHJndtKo+KdP8Dhq3mgLRKW9+6Ircpm8bX/RcS3zZMMmaBLkvGY06Gvw==} 1390 | engines: {node: '>=12'} 1391 | cpu: [x64] 1392 | os: [netbsd] 1393 | requiresBuild: true 1394 | dev: true 1395 | optional: true 1396 | 1397 | /esbuild-openbsd-64/0.15.15: 1398 | resolution: {integrity: sha512-HFFX+WYedx1w2yJ1VyR1Dfo8zyYGQZf1cA69bLdrHzu9svj6KH6ZLK0k3A1/LFPhcEY9idSOhsB2UyU0tHPxgQ==} 1399 | engines: {node: '>=12'} 1400 | cpu: [x64] 1401 | os: [openbsd] 1402 | requiresBuild: true 1403 | dev: true 1404 | optional: true 1405 | 1406 | /esbuild-sunos-64/0.15.15: 1407 | resolution: {integrity: sha512-jOPBudffG4HN8yJXcK9rib/ZTFoTA5pvIKbRrt3IKAGMq1EpBi4xoVoSRrq/0d4OgZLaQbmkHp8RO9eZIn5atA==} 1408 | engines: {node: '>=12'} 1409 | cpu: [x64] 1410 | os: [sunos] 1411 | requiresBuild: true 1412 | dev: true 1413 | optional: true 1414 | 1415 | /esbuild-windows-32/0.15.15: 1416 | resolution: {integrity: sha512-MDkJ3QkjnCetKF0fKxCyYNBnOq6dmidcwstBVeMtXSgGYTy8XSwBeIE4+HuKiSsG6I/mXEb++px3IGSmTN0XiA==} 1417 | engines: {node: '>=12'} 1418 | cpu: [ia32] 1419 | os: [win32] 1420 | requiresBuild: true 1421 | dev: true 1422 | optional: true 1423 | 1424 | /esbuild-windows-64/0.15.15: 1425 | resolution: {integrity: sha512-xaAUIB2qllE888SsMU3j9nrqyLbkqqkpQyWVkfwSil6BBPgcPk3zOFitTTncEKCLTQy3XV9RuH7PDj3aJDljWA==} 1426 | engines: {node: '>=12'} 1427 | cpu: [x64] 1428 | os: [win32] 1429 | requiresBuild: true 1430 | dev: true 1431 | optional: true 1432 | 1433 | /esbuild-windows-arm64/0.15.15: 1434 | resolution: {integrity: sha512-ttuoCYCIJAFx4UUKKWYnFdrVpoXa3+3WWkXVI6s09U+YjhnyM5h96ewTq/WgQj9LFSIlABQvadHSOQyAVjW5xQ==} 1435 | engines: {node: '>=12'} 1436 | cpu: [arm64] 1437 | os: [win32] 1438 | requiresBuild: true 1439 | dev: true 1440 | optional: true 1441 | 1442 | /esbuild/0.15.15: 1443 | resolution: {integrity: sha512-TEw/lwK4Zzld9x3FedV6jy8onOUHqcEX3ADFk4k+gzPUwrxn8nWV62tH0udo8jOtjFodlEfc4ypsqX3e+WWO6w==} 1444 | engines: {node: '>=12'} 1445 | hasBin: true 1446 | requiresBuild: true 1447 | optionalDependencies: 1448 | '@esbuild/android-arm': 0.15.15 1449 | '@esbuild/linux-loong64': 0.15.15 1450 | esbuild-android-64: 0.15.15 1451 | esbuild-android-arm64: 0.15.15 1452 | esbuild-darwin-64: 0.15.15 1453 | esbuild-darwin-arm64: 0.15.15 1454 | esbuild-freebsd-64: 0.15.15 1455 | esbuild-freebsd-arm64: 0.15.15 1456 | esbuild-linux-32: 0.15.15 1457 | esbuild-linux-64: 0.15.15 1458 | esbuild-linux-arm: 0.15.15 1459 | esbuild-linux-arm64: 0.15.15 1460 | esbuild-linux-mips64le: 0.15.15 1461 | esbuild-linux-ppc64le: 0.15.15 1462 | esbuild-linux-riscv64: 0.15.15 1463 | esbuild-linux-s390x: 0.15.15 1464 | esbuild-netbsd-64: 0.15.15 1465 | esbuild-openbsd-64: 0.15.15 1466 | esbuild-sunos-64: 0.15.15 1467 | esbuild-windows-32: 0.15.15 1468 | esbuild-windows-64: 0.15.15 1469 | esbuild-windows-arm64: 0.15.15 1470 | dev: true 1471 | 1472 | /escalade/3.1.1: 1473 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 1474 | engines: {node: '>=6'} 1475 | dev: true 1476 | 1477 | /escape-string-regexp/1.0.5: 1478 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 1479 | engines: {node: '>=0.8.0'} 1480 | dev: true 1481 | 1482 | /escape-string-regexp/4.0.0: 1483 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 1484 | engines: {node: '>=10'} 1485 | dev: true 1486 | 1487 | /eslint-config-prettier/8.5.0_eslint@8.29.0: 1488 | resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==} 1489 | hasBin: true 1490 | peerDependencies: 1491 | eslint: '>=7.0.0' 1492 | dependencies: 1493 | eslint: 8.29.0 1494 | dev: true 1495 | 1496 | /eslint-plugin-react-hooks/4.6.0_eslint@8.29.0: 1497 | resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} 1498 | engines: {node: '>=10'} 1499 | peerDependencies: 1500 | eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 1501 | dependencies: 1502 | eslint: 8.29.0 1503 | dev: true 1504 | 1505 | /eslint-plugin-react/7.31.11_eslint@8.29.0: 1506 | resolution: {integrity: sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw==} 1507 | engines: {node: '>=4'} 1508 | peerDependencies: 1509 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 1510 | dependencies: 1511 | array-includes: 3.1.6 1512 | array.prototype.flatmap: 1.3.1 1513 | array.prototype.tosorted: 1.1.1 1514 | doctrine: 2.1.0 1515 | eslint: 8.29.0 1516 | estraverse: 5.3.0 1517 | jsx-ast-utils: 3.3.3 1518 | minimatch: 3.1.2 1519 | object.entries: 1.1.6 1520 | object.fromentries: 2.0.6 1521 | object.hasown: 1.1.2 1522 | object.values: 1.1.6 1523 | prop-types: 15.8.1 1524 | resolve: 2.0.0-next.4 1525 | semver: 6.3.0 1526 | string.prototype.matchall: 4.0.8 1527 | dev: true 1528 | 1529 | /eslint-scope/5.1.1: 1530 | resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} 1531 | engines: {node: '>=8.0.0'} 1532 | dependencies: 1533 | esrecurse: 4.3.0 1534 | estraverse: 4.3.0 1535 | dev: true 1536 | 1537 | /eslint-scope/7.1.1: 1538 | resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} 1539 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1540 | dependencies: 1541 | esrecurse: 4.3.0 1542 | estraverse: 5.3.0 1543 | dev: true 1544 | 1545 | /eslint-utils/3.0.0_eslint@8.29.0: 1546 | resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} 1547 | engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} 1548 | peerDependencies: 1549 | eslint: '>=5' 1550 | dependencies: 1551 | eslint: 8.29.0 1552 | eslint-visitor-keys: 2.1.0 1553 | dev: true 1554 | 1555 | /eslint-visitor-keys/2.1.0: 1556 | resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} 1557 | engines: {node: '>=10'} 1558 | dev: true 1559 | 1560 | /eslint-visitor-keys/3.3.0: 1561 | resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} 1562 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1563 | dev: true 1564 | 1565 | /eslint/8.29.0: 1566 | resolution: {integrity: sha512-isQ4EEiyUjZFbEKvEGJKKGBwXtvXX+zJbkVKCgTuB9t/+jUBcy8avhkEwWJecI15BkRkOYmvIM5ynbhRjEkoeg==} 1567 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1568 | hasBin: true 1569 | dependencies: 1570 | '@eslint/eslintrc': 1.3.3 1571 | '@humanwhocodes/config-array': 0.11.7 1572 | '@humanwhocodes/module-importer': 1.0.1 1573 | '@nodelib/fs.walk': 1.2.8 1574 | ajv: 6.12.6 1575 | chalk: 4.1.2 1576 | cross-spawn: 7.0.3 1577 | debug: 4.3.4 1578 | doctrine: 3.0.0 1579 | escape-string-regexp: 4.0.0 1580 | eslint-scope: 7.1.1 1581 | eslint-utils: 3.0.0_eslint@8.29.0 1582 | eslint-visitor-keys: 3.3.0 1583 | espree: 9.4.1 1584 | esquery: 1.4.0 1585 | esutils: 2.0.3 1586 | fast-deep-equal: 3.1.3 1587 | file-entry-cache: 6.0.1 1588 | find-up: 5.0.0 1589 | glob-parent: 6.0.2 1590 | globals: 13.18.0 1591 | grapheme-splitter: 1.0.4 1592 | ignore: 5.2.1 1593 | import-fresh: 3.3.0 1594 | imurmurhash: 0.1.4 1595 | is-glob: 4.0.3 1596 | is-path-inside: 3.0.3 1597 | js-sdsl: 4.2.0 1598 | js-yaml: 4.1.0 1599 | json-stable-stringify-without-jsonify: 1.0.1 1600 | levn: 0.4.1 1601 | lodash.merge: 4.6.2 1602 | minimatch: 3.1.2 1603 | natural-compare: 1.4.0 1604 | optionator: 0.9.1 1605 | regexpp: 3.2.0 1606 | strip-ansi: 6.0.1 1607 | strip-json-comments: 3.1.1 1608 | text-table: 0.2.0 1609 | transitivePeerDependencies: 1610 | - supports-color 1611 | dev: true 1612 | 1613 | /espree/9.4.1: 1614 | resolution: {integrity: sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==} 1615 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1616 | dependencies: 1617 | acorn: 8.8.1 1618 | acorn-jsx: 5.3.2_acorn@8.8.1 1619 | eslint-visitor-keys: 3.3.0 1620 | dev: true 1621 | 1622 | /esquery/1.4.0: 1623 | resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} 1624 | engines: {node: '>=0.10'} 1625 | dependencies: 1626 | estraverse: 5.3.0 1627 | dev: true 1628 | 1629 | /esrecurse/4.3.0: 1630 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1631 | engines: {node: '>=4.0'} 1632 | dependencies: 1633 | estraverse: 5.3.0 1634 | dev: true 1635 | 1636 | /estraverse/4.3.0: 1637 | resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} 1638 | engines: {node: '>=4.0'} 1639 | dev: true 1640 | 1641 | /estraverse/5.3.0: 1642 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1643 | engines: {node: '>=4.0'} 1644 | dev: true 1645 | 1646 | /esutils/2.0.3: 1647 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1648 | engines: {node: '>=0.10.0'} 1649 | dev: true 1650 | 1651 | /fast-deep-equal/3.1.3: 1652 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1653 | dev: true 1654 | 1655 | /fast-glob/3.2.12: 1656 | resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} 1657 | engines: {node: '>=8.6.0'} 1658 | dependencies: 1659 | '@nodelib/fs.stat': 2.0.5 1660 | '@nodelib/fs.walk': 1.2.8 1661 | glob-parent: 5.1.2 1662 | merge2: 1.4.1 1663 | micromatch: 4.0.5 1664 | dev: true 1665 | 1666 | /fast-json-stable-stringify/2.1.0: 1667 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1668 | dev: true 1669 | 1670 | /fast-levenshtein/2.0.6: 1671 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1672 | dev: true 1673 | 1674 | /fastq/1.13.0: 1675 | resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} 1676 | dependencies: 1677 | reusify: 1.0.4 1678 | dev: true 1679 | 1680 | /file-entry-cache/6.0.1: 1681 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 1682 | engines: {node: ^10.12.0 || >=12.0.0} 1683 | dependencies: 1684 | flat-cache: 3.0.4 1685 | dev: true 1686 | 1687 | /fill-range/7.0.1: 1688 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1689 | engines: {node: '>=8'} 1690 | dependencies: 1691 | to-regex-range: 5.0.1 1692 | dev: true 1693 | 1694 | /find-up/5.0.0: 1695 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1696 | engines: {node: '>=10'} 1697 | dependencies: 1698 | locate-path: 6.0.0 1699 | path-exists: 4.0.0 1700 | dev: true 1701 | 1702 | /flat-cache/3.0.4: 1703 | resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} 1704 | engines: {node: ^10.12.0 || >=12.0.0} 1705 | dependencies: 1706 | flatted: 3.2.7 1707 | rimraf: 3.0.2 1708 | dev: true 1709 | 1710 | /flatted/3.2.7: 1711 | resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} 1712 | dev: true 1713 | 1714 | /fraction.js/4.2.0: 1715 | resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} 1716 | dev: true 1717 | 1718 | /fs.realpath/1.0.0: 1719 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1720 | dev: true 1721 | 1722 | /fsevents/2.3.2: 1723 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 1724 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1725 | os: [darwin] 1726 | requiresBuild: true 1727 | dev: true 1728 | optional: true 1729 | 1730 | /function-bind/1.1.1: 1731 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1732 | dev: true 1733 | 1734 | /function.prototype.name/1.1.5: 1735 | resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} 1736 | engines: {node: '>= 0.4'} 1737 | dependencies: 1738 | call-bind: 1.0.2 1739 | define-properties: 1.1.4 1740 | es-abstract: 1.20.4 1741 | functions-have-names: 1.2.3 1742 | dev: true 1743 | 1744 | /functions-have-names/1.2.3: 1745 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} 1746 | dev: true 1747 | 1748 | /gensync/1.0.0-beta.2: 1749 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 1750 | engines: {node: '>=6.9.0'} 1751 | dev: true 1752 | 1753 | /get-intrinsic/1.1.3: 1754 | resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} 1755 | dependencies: 1756 | function-bind: 1.1.1 1757 | has: 1.0.3 1758 | has-symbols: 1.0.3 1759 | dev: true 1760 | 1761 | /get-symbol-description/1.0.0: 1762 | resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} 1763 | engines: {node: '>= 0.4'} 1764 | dependencies: 1765 | call-bind: 1.0.2 1766 | get-intrinsic: 1.1.3 1767 | dev: true 1768 | 1769 | /glob-parent/5.1.2: 1770 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1771 | engines: {node: '>= 6'} 1772 | dependencies: 1773 | is-glob: 4.0.3 1774 | dev: true 1775 | 1776 | /glob-parent/6.0.2: 1777 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1778 | engines: {node: '>=10.13.0'} 1779 | dependencies: 1780 | is-glob: 4.0.3 1781 | dev: true 1782 | 1783 | /glob/7.2.3: 1784 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1785 | dependencies: 1786 | fs.realpath: 1.0.0 1787 | inflight: 1.0.6 1788 | inherits: 2.0.4 1789 | minimatch: 3.1.2 1790 | once: 1.4.0 1791 | path-is-absolute: 1.0.1 1792 | dev: true 1793 | 1794 | /globals/11.12.0: 1795 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 1796 | engines: {node: '>=4'} 1797 | dev: true 1798 | 1799 | /globals/13.18.0: 1800 | resolution: {integrity: sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==} 1801 | engines: {node: '>=8'} 1802 | dependencies: 1803 | type-fest: 0.20.2 1804 | dev: true 1805 | 1806 | /globby/11.1.0: 1807 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 1808 | engines: {node: '>=10'} 1809 | dependencies: 1810 | array-union: 2.1.0 1811 | dir-glob: 3.0.1 1812 | fast-glob: 3.2.12 1813 | ignore: 5.2.1 1814 | merge2: 1.4.1 1815 | slash: 3.0.0 1816 | dev: true 1817 | 1818 | /grapheme-splitter/1.0.4: 1819 | resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} 1820 | dev: true 1821 | 1822 | /has-bigints/1.0.2: 1823 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} 1824 | dev: true 1825 | 1826 | /has-flag/3.0.0: 1827 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} 1828 | engines: {node: '>=4'} 1829 | dev: true 1830 | 1831 | /has-flag/4.0.0: 1832 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1833 | engines: {node: '>=8'} 1834 | dev: true 1835 | 1836 | /has-property-descriptors/1.0.0: 1837 | resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} 1838 | dependencies: 1839 | get-intrinsic: 1.1.3 1840 | dev: true 1841 | 1842 | /has-symbols/1.0.3: 1843 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 1844 | engines: {node: '>= 0.4'} 1845 | dev: true 1846 | 1847 | /has-tostringtag/1.0.0: 1848 | resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} 1849 | engines: {node: '>= 0.4'} 1850 | dependencies: 1851 | has-symbols: 1.0.3 1852 | dev: true 1853 | 1854 | /has/1.0.3: 1855 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 1856 | engines: {node: '>= 0.4.0'} 1857 | dependencies: 1858 | function-bind: 1.1.1 1859 | dev: true 1860 | 1861 | /ignore/5.2.1: 1862 | resolution: {integrity: sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==} 1863 | engines: {node: '>= 4'} 1864 | dev: true 1865 | 1866 | /import-fresh/3.3.0: 1867 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1868 | engines: {node: '>=6'} 1869 | dependencies: 1870 | parent-module: 1.0.1 1871 | resolve-from: 4.0.0 1872 | dev: true 1873 | 1874 | /imurmurhash/0.1.4: 1875 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1876 | engines: {node: '>=0.8.19'} 1877 | dev: true 1878 | 1879 | /inflight/1.0.6: 1880 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1881 | dependencies: 1882 | once: 1.4.0 1883 | wrappy: 1.0.2 1884 | dev: true 1885 | 1886 | /inherits/2.0.4: 1887 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1888 | dev: true 1889 | 1890 | /internal-slot/1.0.3: 1891 | resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} 1892 | engines: {node: '>= 0.4'} 1893 | dependencies: 1894 | get-intrinsic: 1.1.3 1895 | has: 1.0.3 1896 | side-channel: 1.0.4 1897 | dev: true 1898 | 1899 | /is-bigint/1.0.4: 1900 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} 1901 | dependencies: 1902 | has-bigints: 1.0.2 1903 | dev: true 1904 | 1905 | /is-binary-path/2.1.0: 1906 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 1907 | engines: {node: '>=8'} 1908 | dependencies: 1909 | binary-extensions: 2.2.0 1910 | dev: true 1911 | 1912 | /is-boolean-object/1.1.2: 1913 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} 1914 | engines: {node: '>= 0.4'} 1915 | dependencies: 1916 | call-bind: 1.0.2 1917 | has-tostringtag: 1.0.0 1918 | dev: true 1919 | 1920 | /is-callable/1.2.7: 1921 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} 1922 | engines: {node: '>= 0.4'} 1923 | dev: true 1924 | 1925 | /is-core-module/2.11.0: 1926 | resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} 1927 | dependencies: 1928 | has: 1.0.3 1929 | dev: true 1930 | 1931 | /is-date-object/1.0.5: 1932 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} 1933 | engines: {node: '>= 0.4'} 1934 | dependencies: 1935 | has-tostringtag: 1.0.0 1936 | dev: true 1937 | 1938 | /is-extglob/2.1.1: 1939 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1940 | engines: {node: '>=0.10.0'} 1941 | dev: true 1942 | 1943 | /is-glob/4.0.3: 1944 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1945 | engines: {node: '>=0.10.0'} 1946 | dependencies: 1947 | is-extglob: 2.1.1 1948 | dev: true 1949 | 1950 | /is-negative-zero/2.0.2: 1951 | resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} 1952 | engines: {node: '>= 0.4'} 1953 | dev: true 1954 | 1955 | /is-number-object/1.0.7: 1956 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} 1957 | engines: {node: '>= 0.4'} 1958 | dependencies: 1959 | has-tostringtag: 1.0.0 1960 | dev: true 1961 | 1962 | /is-number/7.0.0: 1963 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1964 | engines: {node: '>=0.12.0'} 1965 | dev: true 1966 | 1967 | /is-path-inside/3.0.3: 1968 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 1969 | engines: {node: '>=8'} 1970 | dev: true 1971 | 1972 | /is-regex/1.1.4: 1973 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} 1974 | engines: {node: '>= 0.4'} 1975 | dependencies: 1976 | call-bind: 1.0.2 1977 | has-tostringtag: 1.0.0 1978 | dev: true 1979 | 1980 | /is-shared-array-buffer/1.0.2: 1981 | resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} 1982 | dependencies: 1983 | call-bind: 1.0.2 1984 | dev: true 1985 | 1986 | /is-string/1.0.7: 1987 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} 1988 | engines: {node: '>= 0.4'} 1989 | dependencies: 1990 | has-tostringtag: 1.0.0 1991 | dev: true 1992 | 1993 | /is-symbol/1.0.4: 1994 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} 1995 | engines: {node: '>= 0.4'} 1996 | dependencies: 1997 | has-symbols: 1.0.3 1998 | dev: true 1999 | 2000 | /is-weakref/1.0.2: 2001 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} 2002 | dependencies: 2003 | call-bind: 1.0.2 2004 | dev: true 2005 | 2006 | /isexe/2.0.0: 2007 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 2008 | dev: true 2009 | 2010 | /js-sdsl/4.2.0: 2011 | resolution: {integrity: sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==} 2012 | dev: true 2013 | 2014 | /js-tokens/4.0.0: 2015 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 2016 | 2017 | /js-yaml/4.1.0: 2018 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 2019 | hasBin: true 2020 | dependencies: 2021 | argparse: 2.0.1 2022 | dev: true 2023 | 2024 | /jsesc/2.5.2: 2025 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} 2026 | engines: {node: '>=4'} 2027 | hasBin: true 2028 | dev: true 2029 | 2030 | /json-schema-traverse/0.4.1: 2031 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 2032 | dev: true 2033 | 2034 | /json-stable-stringify-without-jsonify/1.0.1: 2035 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 2036 | dev: true 2037 | 2038 | /json5/2.2.1: 2039 | resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} 2040 | engines: {node: '>=6'} 2041 | hasBin: true 2042 | dev: true 2043 | 2044 | /jsx-ast-utils/3.3.3: 2045 | resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==} 2046 | engines: {node: '>=4.0'} 2047 | dependencies: 2048 | array-includes: 3.1.6 2049 | object.assign: 4.1.4 2050 | dev: true 2051 | 2052 | /levn/0.4.1: 2053 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 2054 | engines: {node: '>= 0.8.0'} 2055 | dependencies: 2056 | prelude-ls: 1.2.1 2057 | type-check: 0.4.0 2058 | dev: true 2059 | 2060 | /lexical/0.6.4: 2061 | resolution: {integrity: sha512-QBJEowv2FRkanu9V4HxCiR/V0rECt98zUeHsaYcgUCphrxbZseQgk8AO5UbHJMgAD4iQ0CCKZWbiqbv7Z8tYnw==} 2062 | dev: false 2063 | 2064 | /lilconfig/2.0.6: 2065 | resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==} 2066 | engines: {node: '>=10'} 2067 | dev: true 2068 | 2069 | /locate-path/6.0.0: 2070 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 2071 | engines: {node: '>=10'} 2072 | dependencies: 2073 | p-locate: 5.0.0 2074 | dev: true 2075 | 2076 | /lodash.castarray/4.4.0: 2077 | resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} 2078 | dev: true 2079 | 2080 | /lodash.isplainobject/4.0.6: 2081 | resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} 2082 | dev: true 2083 | 2084 | /lodash.merge/4.6.2: 2085 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 2086 | dev: true 2087 | 2088 | /loose-envify/1.4.0: 2089 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 2090 | hasBin: true 2091 | dependencies: 2092 | js-tokens: 4.0.0 2093 | 2094 | /lru-cache/6.0.0: 2095 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 2096 | engines: {node: '>=10'} 2097 | dependencies: 2098 | yallist: 4.0.0 2099 | dev: true 2100 | 2101 | /magic-string/0.26.7: 2102 | resolution: {integrity: sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==} 2103 | engines: {node: '>=12'} 2104 | dependencies: 2105 | sourcemap-codec: 1.4.8 2106 | dev: true 2107 | 2108 | /merge2/1.4.1: 2109 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 2110 | engines: {node: '>= 8'} 2111 | dev: true 2112 | 2113 | /micromatch/4.0.5: 2114 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 2115 | engines: {node: '>=8.6'} 2116 | dependencies: 2117 | braces: 3.0.2 2118 | picomatch: 2.3.1 2119 | dev: true 2120 | 2121 | /minimatch/3.1.2: 2122 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 2123 | dependencies: 2124 | brace-expansion: 1.1.11 2125 | dev: true 2126 | 2127 | /minimist/1.2.7: 2128 | resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} 2129 | dev: true 2130 | 2131 | /ms/2.1.2: 2132 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 2133 | dev: true 2134 | 2135 | /nanoid/3.3.4: 2136 | resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} 2137 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 2138 | hasBin: true 2139 | dev: true 2140 | 2141 | /natural-compare-lite/1.4.0: 2142 | resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} 2143 | dev: true 2144 | 2145 | /natural-compare/1.4.0: 2146 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 2147 | dev: true 2148 | 2149 | /node-releases/2.0.6: 2150 | resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} 2151 | dev: true 2152 | 2153 | /normalize-path/3.0.0: 2154 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 2155 | engines: {node: '>=0.10.0'} 2156 | dev: true 2157 | 2158 | /normalize-range/0.1.2: 2159 | resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} 2160 | engines: {node: '>=0.10.0'} 2161 | dev: true 2162 | 2163 | /object-assign/4.1.1: 2164 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 2165 | engines: {node: '>=0.10.0'} 2166 | dev: true 2167 | 2168 | /object-hash/3.0.0: 2169 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} 2170 | engines: {node: '>= 6'} 2171 | dev: true 2172 | 2173 | /object-inspect/1.12.2: 2174 | resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} 2175 | dev: true 2176 | 2177 | /object-keys/1.1.1: 2178 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 2179 | engines: {node: '>= 0.4'} 2180 | dev: true 2181 | 2182 | /object.assign/4.1.4: 2183 | resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} 2184 | engines: {node: '>= 0.4'} 2185 | dependencies: 2186 | call-bind: 1.0.2 2187 | define-properties: 1.1.4 2188 | has-symbols: 1.0.3 2189 | object-keys: 1.1.1 2190 | dev: true 2191 | 2192 | /object.entries/1.1.6: 2193 | resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} 2194 | engines: {node: '>= 0.4'} 2195 | dependencies: 2196 | call-bind: 1.0.2 2197 | define-properties: 1.1.4 2198 | es-abstract: 1.20.4 2199 | dev: true 2200 | 2201 | /object.fromentries/2.0.6: 2202 | resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} 2203 | engines: {node: '>= 0.4'} 2204 | dependencies: 2205 | call-bind: 1.0.2 2206 | define-properties: 1.1.4 2207 | es-abstract: 1.20.4 2208 | dev: true 2209 | 2210 | /object.hasown/1.1.2: 2211 | resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} 2212 | dependencies: 2213 | define-properties: 1.1.4 2214 | es-abstract: 1.20.4 2215 | dev: true 2216 | 2217 | /object.values/1.1.6: 2218 | resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} 2219 | engines: {node: '>= 0.4'} 2220 | dependencies: 2221 | call-bind: 1.0.2 2222 | define-properties: 1.1.4 2223 | es-abstract: 1.20.4 2224 | dev: true 2225 | 2226 | /once/1.4.0: 2227 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 2228 | dependencies: 2229 | wrappy: 1.0.2 2230 | dev: true 2231 | 2232 | /optionator/0.9.1: 2233 | resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} 2234 | engines: {node: '>= 0.8.0'} 2235 | dependencies: 2236 | deep-is: 0.1.4 2237 | fast-levenshtein: 2.0.6 2238 | levn: 0.4.1 2239 | prelude-ls: 1.2.1 2240 | type-check: 0.4.0 2241 | word-wrap: 1.2.3 2242 | dev: true 2243 | 2244 | /p-limit/3.1.0: 2245 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 2246 | engines: {node: '>=10'} 2247 | dependencies: 2248 | yocto-queue: 0.1.0 2249 | dev: true 2250 | 2251 | /p-locate/5.0.0: 2252 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 2253 | engines: {node: '>=10'} 2254 | dependencies: 2255 | p-limit: 3.1.0 2256 | dev: true 2257 | 2258 | /parent-module/1.0.1: 2259 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 2260 | engines: {node: '>=6'} 2261 | dependencies: 2262 | callsites: 3.1.0 2263 | dev: true 2264 | 2265 | /path-exists/4.0.0: 2266 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 2267 | engines: {node: '>=8'} 2268 | dev: true 2269 | 2270 | /path-is-absolute/1.0.1: 2271 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 2272 | engines: {node: '>=0.10.0'} 2273 | dev: true 2274 | 2275 | /path-key/3.1.1: 2276 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 2277 | engines: {node: '>=8'} 2278 | dev: true 2279 | 2280 | /path-parse/1.0.7: 2281 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 2282 | dev: true 2283 | 2284 | /path-type/4.0.0: 2285 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 2286 | engines: {node: '>=8'} 2287 | dev: true 2288 | 2289 | /picocolors/1.0.0: 2290 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 2291 | dev: true 2292 | 2293 | /picomatch/2.3.1: 2294 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 2295 | engines: {node: '>=8.6'} 2296 | dev: true 2297 | 2298 | /pify/2.3.0: 2299 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} 2300 | engines: {node: '>=0.10.0'} 2301 | dev: true 2302 | 2303 | /postcss-import/14.1.0_postcss@8.4.19: 2304 | resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} 2305 | engines: {node: '>=10.0.0'} 2306 | peerDependencies: 2307 | postcss: ^8.0.0 2308 | dependencies: 2309 | postcss: 8.4.19 2310 | postcss-value-parser: 4.2.0 2311 | read-cache: 1.0.0 2312 | resolve: 1.22.1 2313 | dev: true 2314 | 2315 | /postcss-js/4.0.0_postcss@8.4.19: 2316 | resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==} 2317 | engines: {node: ^12 || ^14 || >= 16} 2318 | peerDependencies: 2319 | postcss: ^8.3.3 2320 | dependencies: 2321 | camelcase-css: 2.0.1 2322 | postcss: 8.4.19 2323 | dev: true 2324 | 2325 | /postcss-load-config/3.1.4_postcss@8.4.19: 2326 | resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} 2327 | engines: {node: '>= 10'} 2328 | peerDependencies: 2329 | postcss: '>=8.0.9' 2330 | ts-node: '>=9.0.0' 2331 | peerDependenciesMeta: 2332 | postcss: 2333 | optional: true 2334 | ts-node: 2335 | optional: true 2336 | dependencies: 2337 | lilconfig: 2.0.6 2338 | postcss: 8.4.19 2339 | yaml: 1.10.2 2340 | dev: true 2341 | 2342 | /postcss-nested/6.0.0_postcss@8.4.19: 2343 | resolution: {integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==} 2344 | engines: {node: '>=12.0'} 2345 | peerDependencies: 2346 | postcss: ^8.2.14 2347 | dependencies: 2348 | postcss: 8.4.19 2349 | postcss-selector-parser: 6.0.11 2350 | dev: true 2351 | 2352 | /postcss-selector-parser/6.0.10: 2353 | resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} 2354 | engines: {node: '>=4'} 2355 | dependencies: 2356 | cssesc: 3.0.0 2357 | util-deprecate: 1.0.2 2358 | dev: true 2359 | 2360 | /postcss-selector-parser/6.0.11: 2361 | resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==} 2362 | engines: {node: '>=4'} 2363 | dependencies: 2364 | cssesc: 3.0.0 2365 | util-deprecate: 1.0.2 2366 | dev: true 2367 | 2368 | /postcss-value-parser/4.2.0: 2369 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 2370 | dev: true 2371 | 2372 | /postcss/8.4.19: 2373 | resolution: {integrity: sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==} 2374 | engines: {node: ^10 || ^12 || >=14} 2375 | dependencies: 2376 | nanoid: 3.3.4 2377 | picocolors: 1.0.0 2378 | source-map-js: 1.0.2 2379 | dev: true 2380 | 2381 | /prelude-ls/1.2.1: 2382 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 2383 | engines: {node: '>= 0.8.0'} 2384 | dev: true 2385 | 2386 | /prismjs/1.29.0: 2387 | resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} 2388 | engines: {node: '>=6'} 2389 | dev: false 2390 | 2391 | /prop-types/15.8.1: 2392 | resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} 2393 | dependencies: 2394 | loose-envify: 1.4.0 2395 | object-assign: 4.1.1 2396 | react-is: 16.13.1 2397 | dev: true 2398 | 2399 | /punycode/2.1.1: 2400 | resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} 2401 | engines: {node: '>=6'} 2402 | dev: true 2403 | 2404 | /queue-microtask/1.2.3: 2405 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 2406 | dev: true 2407 | 2408 | /quick-lru/5.1.1: 2409 | resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} 2410 | engines: {node: '>=10'} 2411 | dev: true 2412 | 2413 | /react-dom/18.2.0_react@18.2.0: 2414 | resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} 2415 | peerDependencies: 2416 | react: ^18.2.0 2417 | dependencies: 2418 | loose-envify: 1.4.0 2419 | react: 18.2.0 2420 | scheduler: 0.23.0 2421 | dev: false 2422 | 2423 | /react-error-boundary/3.1.4_react@18.2.0: 2424 | resolution: {integrity: sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==} 2425 | engines: {node: '>=10', npm: '>=6'} 2426 | peerDependencies: 2427 | react: '>=16.13.1' 2428 | dependencies: 2429 | '@babel/runtime': 7.20.1 2430 | react: 18.2.0 2431 | dev: false 2432 | 2433 | /react-is/16.13.1: 2434 | resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} 2435 | dev: true 2436 | 2437 | /react-refresh/0.14.0: 2438 | resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} 2439 | engines: {node: '>=0.10.0'} 2440 | dev: true 2441 | 2442 | /react/18.2.0: 2443 | resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} 2444 | engines: {node: '>=0.10.0'} 2445 | dependencies: 2446 | loose-envify: 1.4.0 2447 | dev: false 2448 | 2449 | /read-cache/1.0.0: 2450 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} 2451 | dependencies: 2452 | pify: 2.3.0 2453 | dev: true 2454 | 2455 | /readdirp/3.6.0: 2456 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 2457 | engines: {node: '>=8.10.0'} 2458 | dependencies: 2459 | picomatch: 2.3.1 2460 | dev: true 2461 | 2462 | /regenerator-runtime/0.13.11: 2463 | resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} 2464 | dev: false 2465 | 2466 | /regexp.prototype.flags/1.4.3: 2467 | resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} 2468 | engines: {node: '>= 0.4'} 2469 | dependencies: 2470 | call-bind: 1.0.2 2471 | define-properties: 1.1.4 2472 | functions-have-names: 1.2.3 2473 | dev: true 2474 | 2475 | /regexpp/3.2.0: 2476 | resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} 2477 | engines: {node: '>=8'} 2478 | dev: true 2479 | 2480 | /resolve-from/4.0.0: 2481 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 2482 | engines: {node: '>=4'} 2483 | dev: true 2484 | 2485 | /resolve/1.22.1: 2486 | resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} 2487 | hasBin: true 2488 | dependencies: 2489 | is-core-module: 2.11.0 2490 | path-parse: 1.0.7 2491 | supports-preserve-symlinks-flag: 1.0.0 2492 | dev: true 2493 | 2494 | /resolve/2.0.0-next.4: 2495 | resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} 2496 | hasBin: true 2497 | dependencies: 2498 | is-core-module: 2.11.0 2499 | path-parse: 1.0.7 2500 | supports-preserve-symlinks-flag: 1.0.0 2501 | dev: true 2502 | 2503 | /reusify/1.0.4: 2504 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 2505 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 2506 | dev: true 2507 | 2508 | /rimraf/3.0.2: 2509 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 2510 | hasBin: true 2511 | dependencies: 2512 | glob: 7.2.3 2513 | dev: true 2514 | 2515 | /rollup/2.79.1: 2516 | resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} 2517 | engines: {node: '>=10.0.0'} 2518 | hasBin: true 2519 | optionalDependencies: 2520 | fsevents: 2.3.2 2521 | dev: true 2522 | 2523 | /run-parallel/1.2.0: 2524 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 2525 | dependencies: 2526 | queue-microtask: 1.2.3 2527 | dev: true 2528 | 2529 | /safe-regex-test/1.0.0: 2530 | resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} 2531 | dependencies: 2532 | call-bind: 1.0.2 2533 | get-intrinsic: 1.1.3 2534 | is-regex: 1.1.4 2535 | dev: true 2536 | 2537 | /scheduler/0.23.0: 2538 | resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} 2539 | dependencies: 2540 | loose-envify: 1.4.0 2541 | dev: false 2542 | 2543 | /semver/6.3.0: 2544 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} 2545 | hasBin: true 2546 | dev: true 2547 | 2548 | /semver/7.3.8: 2549 | resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} 2550 | engines: {node: '>=10'} 2551 | hasBin: true 2552 | dependencies: 2553 | lru-cache: 6.0.0 2554 | dev: true 2555 | 2556 | /shebang-command/2.0.0: 2557 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 2558 | engines: {node: '>=8'} 2559 | dependencies: 2560 | shebang-regex: 3.0.0 2561 | dev: true 2562 | 2563 | /shebang-regex/3.0.0: 2564 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 2565 | engines: {node: '>=8'} 2566 | dev: true 2567 | 2568 | /side-channel/1.0.4: 2569 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} 2570 | dependencies: 2571 | call-bind: 1.0.2 2572 | get-intrinsic: 1.1.3 2573 | object-inspect: 1.12.2 2574 | dev: true 2575 | 2576 | /slash/3.0.0: 2577 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 2578 | engines: {node: '>=8'} 2579 | dev: true 2580 | 2581 | /source-map-js/1.0.2: 2582 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 2583 | engines: {node: '>=0.10.0'} 2584 | dev: true 2585 | 2586 | /sourcemap-codec/1.4.8: 2587 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} 2588 | dev: true 2589 | 2590 | /string.prototype.matchall/4.0.8: 2591 | resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} 2592 | dependencies: 2593 | call-bind: 1.0.2 2594 | define-properties: 1.1.4 2595 | es-abstract: 1.20.4 2596 | get-intrinsic: 1.1.3 2597 | has-symbols: 1.0.3 2598 | internal-slot: 1.0.3 2599 | regexp.prototype.flags: 1.4.3 2600 | side-channel: 1.0.4 2601 | dev: true 2602 | 2603 | /string.prototype.trimend/1.0.6: 2604 | resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} 2605 | dependencies: 2606 | call-bind: 1.0.2 2607 | define-properties: 1.1.4 2608 | es-abstract: 1.20.4 2609 | dev: true 2610 | 2611 | /string.prototype.trimstart/1.0.6: 2612 | resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} 2613 | dependencies: 2614 | call-bind: 1.0.2 2615 | define-properties: 1.1.4 2616 | es-abstract: 1.20.4 2617 | dev: true 2618 | 2619 | /strip-ansi/6.0.1: 2620 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 2621 | engines: {node: '>=8'} 2622 | dependencies: 2623 | ansi-regex: 5.0.1 2624 | dev: true 2625 | 2626 | /strip-json-comments/3.1.1: 2627 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 2628 | engines: {node: '>=8'} 2629 | dev: true 2630 | 2631 | /supports-color/5.5.0: 2632 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 2633 | engines: {node: '>=4'} 2634 | dependencies: 2635 | has-flag: 3.0.0 2636 | dev: true 2637 | 2638 | /supports-color/7.2.0: 2639 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 2640 | engines: {node: '>=8'} 2641 | dependencies: 2642 | has-flag: 4.0.0 2643 | dev: true 2644 | 2645 | /supports-preserve-symlinks-flag/1.0.0: 2646 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 2647 | engines: {node: '>= 0.4'} 2648 | dev: true 2649 | 2650 | /tailwindcss/3.2.4_postcss@8.4.19: 2651 | resolution: {integrity: sha512-AhwtHCKMtR71JgeYDaswmZXhPcW9iuI9Sp2LvZPo9upDZ7231ZJ7eA9RaURbhpXGVlrjX4cFNlB4ieTetEb7hQ==} 2652 | engines: {node: '>=12.13.0'} 2653 | hasBin: true 2654 | peerDependencies: 2655 | postcss: ^8.0.9 2656 | dependencies: 2657 | arg: 5.0.2 2658 | chokidar: 3.5.3 2659 | color-name: 1.1.4 2660 | detective: 5.2.1 2661 | didyoumean: 1.2.2 2662 | dlv: 1.1.3 2663 | fast-glob: 3.2.12 2664 | glob-parent: 6.0.2 2665 | is-glob: 4.0.3 2666 | lilconfig: 2.0.6 2667 | micromatch: 4.0.5 2668 | normalize-path: 3.0.0 2669 | object-hash: 3.0.0 2670 | picocolors: 1.0.0 2671 | postcss: 8.4.19 2672 | postcss-import: 14.1.0_postcss@8.4.19 2673 | postcss-js: 4.0.0_postcss@8.4.19 2674 | postcss-load-config: 3.1.4_postcss@8.4.19 2675 | postcss-nested: 6.0.0_postcss@8.4.19 2676 | postcss-selector-parser: 6.0.11 2677 | postcss-value-parser: 4.2.0 2678 | quick-lru: 5.1.1 2679 | resolve: 1.22.1 2680 | transitivePeerDependencies: 2681 | - ts-node 2682 | dev: true 2683 | 2684 | /text-table/0.2.0: 2685 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 2686 | dev: true 2687 | 2688 | /to-fast-properties/2.0.0: 2689 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 2690 | engines: {node: '>=4'} 2691 | dev: true 2692 | 2693 | /to-regex-range/5.0.1: 2694 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 2695 | engines: {node: '>=8.0'} 2696 | dependencies: 2697 | is-number: 7.0.0 2698 | dev: true 2699 | 2700 | /tslib/1.14.1: 2701 | resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} 2702 | dev: true 2703 | 2704 | /tsutils/3.21.0_typescript@4.9.3: 2705 | resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} 2706 | engines: {node: '>= 6'} 2707 | peerDependencies: 2708 | typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' 2709 | dependencies: 2710 | tslib: 1.14.1 2711 | typescript: 4.9.3 2712 | dev: true 2713 | 2714 | /type-check/0.4.0: 2715 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 2716 | engines: {node: '>= 0.8.0'} 2717 | dependencies: 2718 | prelude-ls: 1.2.1 2719 | dev: true 2720 | 2721 | /type-fest/0.20.2: 2722 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 2723 | engines: {node: '>=10'} 2724 | dev: true 2725 | 2726 | /typescript/4.9.3: 2727 | resolution: {integrity: sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==} 2728 | engines: {node: '>=4.2.0'} 2729 | hasBin: true 2730 | dev: true 2731 | 2732 | /unbox-primitive/1.0.2: 2733 | resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} 2734 | dependencies: 2735 | call-bind: 1.0.2 2736 | has-bigints: 1.0.2 2737 | has-symbols: 1.0.3 2738 | which-boxed-primitive: 1.0.2 2739 | dev: true 2740 | 2741 | /update-browserslist-db/1.0.10_browserslist@4.21.4: 2742 | resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} 2743 | hasBin: true 2744 | peerDependencies: 2745 | browserslist: '>= 4.21.0' 2746 | dependencies: 2747 | browserslist: 4.21.4 2748 | escalade: 3.1.1 2749 | picocolors: 1.0.0 2750 | dev: true 2751 | 2752 | /uri-js/4.4.1: 2753 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 2754 | dependencies: 2755 | punycode: 2.1.1 2756 | dev: true 2757 | 2758 | /util-deprecate/1.0.2: 2759 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 2760 | dev: true 2761 | 2762 | /vite/3.2.4: 2763 | resolution: {integrity: sha512-Z2X6SRAffOUYTa+sLy3NQ7nlHFU100xwanq1WDwqaiFiCe+25zdxP1TfCS5ojPV2oDDcXudHIoPnI1Z/66B7Yw==} 2764 | engines: {node: ^14.18.0 || >=16.0.0} 2765 | hasBin: true 2766 | peerDependencies: 2767 | '@types/node': '>= 14' 2768 | less: '*' 2769 | sass: '*' 2770 | stylus: '*' 2771 | sugarss: '*' 2772 | terser: ^5.4.0 2773 | peerDependenciesMeta: 2774 | '@types/node': 2775 | optional: true 2776 | less: 2777 | optional: true 2778 | sass: 2779 | optional: true 2780 | stylus: 2781 | optional: true 2782 | sugarss: 2783 | optional: true 2784 | terser: 2785 | optional: true 2786 | dependencies: 2787 | esbuild: 0.15.15 2788 | postcss: 8.4.19 2789 | resolve: 1.22.1 2790 | rollup: 2.79.1 2791 | optionalDependencies: 2792 | fsevents: 2.3.2 2793 | dev: true 2794 | 2795 | /which-boxed-primitive/1.0.2: 2796 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} 2797 | dependencies: 2798 | is-bigint: 1.0.4 2799 | is-boolean-object: 1.1.2 2800 | is-number-object: 1.0.7 2801 | is-string: 1.0.7 2802 | is-symbol: 1.0.4 2803 | dev: true 2804 | 2805 | /which/2.0.2: 2806 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 2807 | engines: {node: '>= 8'} 2808 | hasBin: true 2809 | dependencies: 2810 | isexe: 2.0.0 2811 | dev: true 2812 | 2813 | /word-wrap/1.2.3: 2814 | resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} 2815 | engines: {node: '>=0.10.0'} 2816 | dev: true 2817 | 2818 | /wrappy/1.0.2: 2819 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 2820 | dev: true 2821 | 2822 | /xtend/4.0.2: 2823 | resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} 2824 | engines: {node: '>=0.4'} 2825 | dev: true 2826 | 2827 | /yallist/4.0.0: 2828 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 2829 | dev: true 2830 | 2831 | /yaml/1.10.2: 2832 | resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} 2833 | engines: {node: '>= 6'} 2834 | dev: true 2835 | 2836 | /yocto-queue/0.1.0: 2837 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 2838 | engines: {node: '>=10'} 2839 | dev: true 2840 | --------------------------------------------------------------------------------