├── 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 |
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 |
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 |
114 | ),
115 | Undo: (
116 |
131 | ),
132 | Redo: (
133 |
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 |
61 | ),
62 | check: (
63 |
78 | ),
79 | code: (
80 |
91 | ),
92 | copy: (
93 |
104 | ),
105 | italic: (
106 |
117 | ),
118 | link: (
119 |
130 | ),
131 | underline: (
132 |
143 | ),
144 | strike: (
145 |
156 | ),
157 | trash: (
158 |
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 |
--------------------------------------------------------------------------------