diff --git a/frontend/package-lock.json b/frontend/package-lock.json
index 51dd4e8..fa447c0 100644
--- a/frontend/package-lock.json
+++ b/frontend/package-lock.json
@@ -8,9 +8,18 @@
"name": "mantine-vite-template",
"version": "0.0.0",
"dependencies": {
- "@mantine/core": "^8.1.2",
+ "@codemirror/commands": "^6.8.1",
+ "@codemirror/lang-markdown": "^6.3.4",
+ "@codemirror/language": "^6.11.3",
+ "@codemirror/language-data": "^6.5.1",
+ "@codemirror/state": "^6.5.2",
+ "@codemirror/theme-one-dark": "^6.1.3",
+ "@codemirror/view": "^6.38.2",
+ "@lezer/highlight": "^1.2.1",
+ "@mantine/core": "^8.2.8",
"@mantine/hooks": "^8.1.2",
- "@mdxeditor/editor": "^3.42.0",
+ "codemirror": "^6.0.2",
+ "mathjax-full": "^3.2.2",
"react": "^19.1.1",
"react-dom": "^19.1.1",
"react-router-dom": "^7.6.2"
@@ -741,19 +750,6 @@
"crelt": "^1.0.5"
}
},
- "node_modules/@codemirror/merge": {
- "version": "6.10.2",
- "resolved": "https://registry.npmjs.org/@codemirror/merge/-/merge-6.10.2.tgz",
- "integrity": "sha512-rmHzVkt5FnCtsi0IgvDIDjh/J4LmbfOboB7FMvVl21IHO0p1QM6jSwjkBjBD3D+c+T79OabEqoduCqvJCBV8Yg==",
- "license": "MIT",
- "dependencies": {
- "@codemirror/language": "^6.0.0",
- "@codemirror/state": "^6.0.0",
- "@codemirror/view": "^6.17.0",
- "@lezer/highlight": "^1.0.0",
- "style-mod": "^4.1.0"
- }
- },
"node_modules/@codemirror/search": {
"version": "6.5.11",
"resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.5.11.tgz",
@@ -774,6 +770,18 @@
"@marijn/find-cluster-break": "^1.0.0"
}
},
+ "node_modules/@codemirror/theme-one-dark": {
+ "version": "6.1.3",
+ "resolved": "https://registry.npmjs.org/@codemirror/theme-one-dark/-/theme-one-dark-6.1.3.tgz",
+ "integrity": "sha512-NzBdIvEJmx6fjeremiGp3t/okrLPYT0d9orIc7AFun8oZcRk58aejkqhv6spnz4MLAevrKNPMQYXEWMg4s+sKA==",
+ "license": "MIT",
+ "dependencies": {
+ "@codemirror/language": "^6.0.0",
+ "@codemirror/state": "^6.0.0",
+ "@codemirror/view": "^6.0.0",
+ "@lezer/highlight": "^1.0.0"
+ }
+ },
"node_modules/@codemirror/view": {
"version": "6.38.2",
"resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.38.2.tgz",
@@ -786,61 +794,6 @@
"w3c-keyname": "^2.2.4"
}
},
- "node_modules/@codesandbox/nodebox": {
- "version": "0.1.8",
- "resolved": "https://registry.npmjs.org/@codesandbox/nodebox/-/nodebox-0.1.8.tgz",
- "integrity": "sha512-2VRS6JDSk+M+pg56GA6CryyUSGPjBEe8Pnae0QL3jJF1mJZJVMDKr93gJRtBbLkfZN6LD/DwMtf+2L0bpWrjqg==",
- "license": "SEE LICENSE IN ./LICENSE",
- "dependencies": {
- "outvariant": "^1.4.0",
- "strict-event-emitter": "^0.4.3"
- }
- },
- "node_modules/@codesandbox/sandpack-client": {
- "version": "2.19.8",
- "resolved": "https://registry.npmjs.org/@codesandbox/sandpack-client/-/sandpack-client-2.19.8.tgz",
- "integrity": "sha512-CMV4nr1zgKzVpx4I3FYvGRM5YT0VaQhALMW9vy4wZRhEyWAtJITQIqZzrTGWqB1JvV7V72dVEUCUPLfYz5hgJQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "@codesandbox/nodebox": "0.1.8",
- "buffer": "^6.0.3",
- "dequal": "^2.0.2",
- "mime-db": "^1.52.0",
- "outvariant": "1.4.0",
- "static-browser-server": "1.0.3"
- }
- },
- "node_modules/@codesandbox/sandpack-react": {
- "version": "2.20.0",
- "resolved": "https://registry.npmjs.org/@codesandbox/sandpack-react/-/sandpack-react-2.20.0.tgz",
- "integrity": "sha512-takd1YpW/PMQ6KPQfvseWLHWklJovGY8QYj8MtWnskGKbjOGJ6uZfyZbcJ6aCFLQMpNyjTqz9AKNbvhCOZ1TUQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "@codemirror/autocomplete": "^6.4.0",
- "@codemirror/commands": "^6.1.3",
- "@codemirror/lang-css": "^6.0.1",
- "@codemirror/lang-html": "^6.4.0",
- "@codemirror/lang-javascript": "^6.1.2",
- "@codemirror/language": "^6.3.2",
- "@codemirror/state": "^6.2.0",
- "@codemirror/view": "^6.7.1",
- "@codesandbox/sandpack-client": "^2.19.8",
- "@lezer/highlight": "^1.1.3",
- "@react-hook/intersection-observer": "^3.1.1",
- "@stitches/core": "^1.2.6",
- "anser": "^2.1.1",
- "clean-set": "^1.1.2",
- "dequal": "^2.0.2",
- "escape-carriage": "^1.3.1",
- "lz-string": "^1.4.4",
- "react-devtools-inline": "4.4.0",
- "react-is": "^17.0.2"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17 || ^18 || ^19",
- "react-dom": "^16.8.0 || ^17 || ^18 || ^19"
- }
- },
"node_modules/@csstools/color-helpers": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz",
@@ -1823,276 +1776,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/@lexical/clipboard": {
- "version": "0.33.1",
- "resolved": "https://registry.npmjs.org/@lexical/clipboard/-/clipboard-0.33.1.tgz",
- "integrity": "sha512-Qd3/Cm3TW2DFQv58kMtLi86u5YOgpBdf+o7ySbXz55C613SLACsYQBB3X5Vu5hTx/t/ugYOpII4HkiatW6d9zA==",
- "license": "MIT",
- "dependencies": {
- "@lexical/html": "0.33.1",
- "@lexical/list": "0.33.1",
- "@lexical/selection": "0.33.1",
- "@lexical/utils": "0.33.1",
- "lexical": "0.33.1"
- }
- },
- "node_modules/@lexical/code": {
- "version": "0.33.1",
- "resolved": "https://registry.npmjs.org/@lexical/code/-/code-0.33.1.tgz",
- "integrity": "sha512-E0Y/+1znkqVpP52Y6blXGAduoZek9SSehJN+vbH+4iQKyFwTA7JB+jd5C5/K0ik55du9X7SN/oTynByg7lbcAA==",
- "license": "MIT",
- "dependencies": {
- "@lexical/utils": "0.33.1",
- "lexical": "0.33.1",
- "prismjs": "^1.30.0"
- }
- },
- "node_modules/@lexical/devtools-core": {
- "version": "0.33.1",
- "resolved": "https://registry.npmjs.org/@lexical/devtools-core/-/devtools-core-0.33.1.tgz",
- "integrity": "sha512-3yHu5diNtjwhoe2q/x9as6n6rIfA+QO2CfaVjFRkam8rkAW6zUzQT1D0fQdE8nOfWvXBgY1mH/ZLP4dDXBdG5Q==",
- "license": "MIT",
- "dependencies": {
- "@lexical/html": "0.33.1",
- "@lexical/link": "0.33.1",
- "@lexical/mark": "0.33.1",
- "@lexical/table": "0.33.1",
- "@lexical/utils": "0.33.1",
- "lexical": "0.33.1"
- },
- "peerDependencies": {
- "react": ">=17.x",
- "react-dom": ">=17.x"
- }
- },
- "node_modules/@lexical/dragon": {
- "version": "0.33.1",
- "resolved": "https://registry.npmjs.org/@lexical/dragon/-/dragon-0.33.1.tgz",
- "integrity": "sha512-UQ6DLkcDAr83wA1vz3sUgtcpYcMifC4sF0MieZAoMzFrna6Ekqj7OJ7g8Lo7m7AeuT4NETRVDsjIEDdrQMKLLA==",
- "license": "MIT",
- "dependencies": {
- "lexical": "0.33.1"
- }
- },
- "node_modules/@lexical/hashtag": {
- "version": "0.33.1",
- "resolved": "https://registry.npmjs.org/@lexical/hashtag/-/hashtag-0.33.1.tgz",
- "integrity": "sha512-M3IsDe4cifggMBZgYAVT7hCLWcwQ3dIcUPdr9Xc6wDQQQdEqOQYB0PO//9bSYUVq+BNiiTgysc+TtlM7PiJfiw==",
- "license": "MIT",
- "dependencies": {
- "@lexical/utils": "0.33.1",
- "lexical": "0.33.1"
- }
- },
- "node_modules/@lexical/history": {
- "version": "0.33.1",
- "resolved": "https://registry.npmjs.org/@lexical/history/-/history-0.33.1.tgz",
- "integrity": "sha512-Bk0h3D6cFkJ7w3HKvqQua7n6Xfz7nR7L3gLDBH9L0nsS4MM9+LteSEZPUe0kj4VuEjnxufYstTc9HA2aNLKxnQ==",
- "license": "MIT",
- "dependencies": {
- "@lexical/utils": "0.33.1",
- "lexical": "0.33.1"
- }
- },
- "node_modules/@lexical/html": {
- "version": "0.33.1",
- "resolved": "https://registry.npmjs.org/@lexical/html/-/html-0.33.1.tgz",
- "integrity": "sha512-t14vu4eKa6BWz1N7/rwXgXif1k4dj73dRvllWJgfXum+a36vn1aySNYOlOfqWXF7k1b3uJmoqsWK7n/1ASnimw==",
- "license": "MIT",
- "dependencies": {
- "@lexical/selection": "0.33.1",
- "@lexical/utils": "0.33.1",
- "lexical": "0.33.1"
- }
- },
- "node_modules/@lexical/link": {
- "version": "0.33.1",
- "resolved": "https://registry.npmjs.org/@lexical/link/-/link-0.33.1.tgz",
- "integrity": "sha512-JCTu7Fft2J2kgfqJiWnGei+UMIXVKiZKaXzuHCuGQTFu92DeCyd02azBaFazZHEkSqCIFZ0DqVV2SpIJmd0Ygw==",
- "license": "MIT",
- "dependencies": {
- "@lexical/utils": "0.33.1",
- "lexical": "0.33.1"
- }
- },
- "node_modules/@lexical/list": {
- "version": "0.33.1",
- "resolved": "https://registry.npmjs.org/@lexical/list/-/list-0.33.1.tgz",
- "integrity": "sha512-PXp56dWADSThc9WhwWV4vXhUc3sdtCqsfPD3UQNGUZ9rsAY1479rqYLtfYgEmYPc8JWXikQCAKEejahCJIm8OQ==",
- "license": "MIT",
- "dependencies": {
- "@lexical/selection": "0.33.1",
- "@lexical/utils": "0.33.1",
- "lexical": "0.33.1"
- }
- },
- "node_modules/@lexical/mark": {
- "version": "0.33.1",
- "resolved": "https://registry.npmjs.org/@lexical/mark/-/mark-0.33.1.tgz",
- "integrity": "sha512-tGdOf1e694lnm/HyWUKEkEWjDyfhCBFG7u8iRKNpsYTpB3M1FsJUXbphE2bb8MyWfhHbaNxnklupSSaSPzO88A==",
- "license": "MIT",
- "dependencies": {
- "@lexical/utils": "0.33.1",
- "lexical": "0.33.1"
- }
- },
- "node_modules/@lexical/markdown": {
- "version": "0.33.1",
- "resolved": "https://registry.npmjs.org/@lexical/markdown/-/markdown-0.33.1.tgz",
- "integrity": "sha512-p5zwWNF70pELRx60wxE8YOFVNiNDkw7gjKoYqkED23q5hj4mcqco9fQf6qeeZChjxLKjfyT6F1PpWgxmlBlxBw==",
- "license": "MIT",
- "dependencies": {
- "@lexical/code": "0.33.1",
- "@lexical/link": "0.33.1",
- "@lexical/list": "0.33.1",
- "@lexical/rich-text": "0.33.1",
- "@lexical/text": "0.33.1",
- "@lexical/utils": "0.33.1",
- "lexical": "0.33.1"
- }
- },
- "node_modules/@lexical/offset": {
- "version": "0.33.1",
- "resolved": "https://registry.npmjs.org/@lexical/offset/-/offset-0.33.1.tgz",
- "integrity": "sha512-3YIlUs43QdKSBLEfOkuciE2tn9loxVmkSs/HgaIiLYl0Edf1W00FP4ItSmYU4De5GopXsHq6+Y3ry4pU/ciUiQ==",
- "license": "MIT",
- "dependencies": {
- "lexical": "0.33.1"
- }
- },
- "node_modules/@lexical/overflow": {
- "version": "0.33.1",
- "resolved": "https://registry.npmjs.org/@lexical/overflow/-/overflow-0.33.1.tgz",
- "integrity": "sha512-3BDq1lOw567FeCk4rN2ellKwoXTM9zGkGuKnSGlXS1JmtGGGSvT+uTANX3KOOfqTNSrOkrwoM+3hlFv7p6VpiQ==",
- "license": "MIT",
- "dependencies": {
- "lexical": "0.33.1"
- }
- },
- "node_modules/@lexical/plain-text": {
- "version": "0.33.1",
- "resolved": "https://registry.npmjs.org/@lexical/plain-text/-/plain-text-0.33.1.tgz",
- "integrity": "sha512-2HxdhAx6bwF8y5A9P0q3YHsYbhUo4XXm+GyKJO87an8JClL2W+GYLTSDbfNWTh4TtH95eG+UYLOjNEgyU6tsWA==",
- "license": "MIT",
- "dependencies": {
- "@lexical/clipboard": "0.33.1",
- "@lexical/selection": "0.33.1",
- "@lexical/utils": "0.33.1",
- "lexical": "0.33.1"
- }
- },
- "node_modules/@lexical/react": {
- "version": "0.33.1",
- "resolved": "https://registry.npmjs.org/@lexical/react/-/react-0.33.1.tgz",
- "integrity": "sha512-ylnUmom5h8PY+Z14uDmKLQEoikTPN77GRM0NRCIdtbWmOQqOq/5BhuCzMZE1WvpL5C6n3GtK6IFnsMcsKmVOcw==",
- "license": "MIT",
- "dependencies": {
- "@floating-ui/react": "^0.27.8",
- "@lexical/devtools-core": "0.33.1",
- "@lexical/dragon": "0.33.1",
- "@lexical/hashtag": "0.33.1",
- "@lexical/history": "0.33.1",
- "@lexical/link": "0.33.1",
- "@lexical/list": "0.33.1",
- "@lexical/mark": "0.33.1",
- "@lexical/markdown": "0.33.1",
- "@lexical/overflow": "0.33.1",
- "@lexical/plain-text": "0.33.1",
- "@lexical/rich-text": "0.33.1",
- "@lexical/table": "0.33.1",
- "@lexical/text": "0.33.1",
- "@lexical/utils": "0.33.1",
- "@lexical/yjs": "0.33.1",
- "lexical": "0.33.1",
- "react-error-boundary": "^3.1.4"
- },
- "peerDependencies": {
- "react": ">=17.x",
- "react-dom": ">=17.x"
- }
- },
- "node_modules/@lexical/react/node_modules/@floating-ui/react": {
- "version": "0.27.16",
- "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.27.16.tgz",
- "integrity": "sha512-9O8N4SeG2z++TSM8QA/KTeKFBVCNEz/AGS7gWPJf6KFRzmRWixFRnCnkPHRDwSVZW6QPDO6uT0P2SpWNKCc9/g==",
- "license": "MIT",
- "dependencies": {
- "@floating-ui/react-dom": "^2.1.6",
- "@floating-ui/utils": "^0.2.10",
- "tabbable": "^6.0.0"
- },
- "peerDependencies": {
- "react": ">=17.0.0",
- "react-dom": ">=17.0.0"
- }
- },
- "node_modules/@lexical/rich-text": {
- "version": "0.33.1",
- "resolved": "https://registry.npmjs.org/@lexical/rich-text/-/rich-text-0.33.1.tgz",
- "integrity": "sha512-ZBIsj4LwmamRBCGjJiPSLj7N/XkUDv/pnYn5Rp0BL42WpOiQLvOoGLrZxgUJZEmRPQnx42ZgLKVgrWHsyjuoAA==",
- "license": "MIT",
- "dependencies": {
- "@lexical/clipboard": "0.33.1",
- "@lexical/selection": "0.33.1",
- "@lexical/utils": "0.33.1",
- "lexical": "0.33.1"
- }
- },
- "node_modules/@lexical/selection": {
- "version": "0.33.1",
- "resolved": "https://registry.npmjs.org/@lexical/selection/-/selection-0.33.1.tgz",
- "integrity": "sha512-KXPkdCDdVfIUXmkwePu9DAd3kLjL0aAqL5G9CMCFsj7RG9lLvvKk7kpivrAIbRbcsDzO44QwsFPisZHbX4ioXA==",
- "license": "MIT",
- "dependencies": {
- "lexical": "0.33.1"
- }
- },
- "node_modules/@lexical/table": {
- "version": "0.33.1",
- "resolved": "https://registry.npmjs.org/@lexical/table/-/table-0.33.1.tgz",
- "integrity": "sha512-pzB11i1Y6fzmy0IPUKJyCdhVBgXaNOxJUxrQJWdKNYCh1eMwwMEQvj+8inItd/11aUkjcdHjwDTht8gL2UHKiQ==",
- "license": "MIT",
- "dependencies": {
- "@lexical/clipboard": "0.33.1",
- "@lexical/utils": "0.33.1",
- "lexical": "0.33.1"
- }
- },
- "node_modules/@lexical/text": {
- "version": "0.33.1",
- "resolved": "https://registry.npmjs.org/@lexical/text/-/text-0.33.1.tgz",
- "integrity": "sha512-CnyU3q3RytXXWVSvC5StOKISzFAPGK9MuesNDDGyZk7yDK+J98gV6df4RBKfqwcokFMThpkUlvMeKe1+S2y25A==",
- "license": "MIT",
- "dependencies": {
- "lexical": "0.33.1"
- }
- },
- "node_modules/@lexical/utils": {
- "version": "0.33.1",
- "resolved": "https://registry.npmjs.org/@lexical/utils/-/utils-0.33.1.tgz",
- "integrity": "sha512-eKysPjzEE9zD+2af3WRX5U3XbeNk0z4uv1nXGH3RG15uJ4Huzjht82hzsQpCFUobKmzYlQaQs5y2IYKE2puipQ==",
- "license": "MIT",
- "dependencies": {
- "@lexical/list": "0.33.1",
- "@lexical/selection": "0.33.1",
- "@lexical/table": "0.33.1",
- "lexical": "0.33.1"
- }
- },
- "node_modules/@lexical/yjs": {
- "version": "0.33.1",
- "resolved": "https://registry.npmjs.org/@lexical/yjs/-/yjs-0.33.1.tgz",
- "integrity": "sha512-Zx1rabMm/Zjk7n7YQMIQLUN+tqzcg1xqcgNpEHSfK1GA8QMPXCPvXWFT3ZDC4tfZOSy/YIqpVUyWZAomFqRa+g==",
- "license": "MIT",
- "dependencies": {
- "@lexical/offset": "0.33.1",
- "@lexical/selection": "0.33.1",
- "lexical": "0.33.1"
- },
- "peerDependencies": {
- "yjs": ">=13.5.22"
- }
- },
"node_modules/@lezer/common": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.3.tgz",
@@ -2271,9 +1954,9 @@
}
},
"node_modules/@mantine/core": {
- "version": "8.1.2",
- "resolved": "https://registry.npmjs.org/@mantine/core/-/core-8.1.2.tgz",
- "integrity": "sha512-+maX0a1+fxh6Lvnzi0qb0AZsCnnHlIiTE/hFC+dd3eRfUW2PEKJ5/wTpmrX8IGyxa+NS+fXjZD/cU4Yt9xNjdg==",
+ "version": "8.2.8",
+ "resolved": "https://registry.npmjs.org/@mantine/core/-/core-8.2.8.tgz",
+ "integrity": "sha512-dybAXrlQ+QiIhpnVCkdH6P4Sjm9I9RymYXfDp97oj9KfGRMEJGLDdPAwp/2GhXe7UdDkzqD48JCkbfRWF2Q+qA==",
"license": "MIT",
"dependencies": {
"@floating-ui/react": "^0.26.28",
@@ -2284,15 +1967,15 @@
"type-fest": "^4.27.0"
},
"peerDependencies": {
- "@mantine/hooks": "8.1.2",
+ "@mantine/hooks": "8.2.8",
"react": "^18.x || ^19.x",
"react-dom": "^18.x || ^19.x"
}
},
"node_modules/@mantine/hooks": {
- "version": "8.1.2",
- "resolved": "https://registry.npmjs.org/@mantine/hooks/-/hooks-8.1.2.tgz",
- "integrity": "sha512-BrriTsiazqZ2fLuL7UDasNTQJSaoJ7mN2qYVkdsiYI158lxJdUaFWHhd6BDyzK+W6thvBx2D+R/hh1rsWWefdQ==",
+ "version": "8.2.8",
+ "resolved": "https://registry.npmjs.org/@mantine/hooks/-/hooks-8.2.8.tgz",
+ "integrity": "sha512-KK1krCcXizWT6JF8gWexv58imQBbviylAJqSqdZ4zUPgrpe81ehMyfxo5Z9EZsnSwMxkB4RLMhCCJhC5g8GvLA==",
"license": "MIT",
"peerDependencies": {
"react": "^18.x || ^19.x"
@@ -2304,90 +1987,6 @@
"integrity": "sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==",
"license": "MIT"
},
- "node_modules/@mdxeditor/editor": {
- "version": "3.42.0",
- "resolved": "https://registry.npmjs.org/@mdxeditor/editor/-/editor-3.42.0.tgz",
- "integrity": "sha512-nQN07RkTm842T477IjPqp1FhWCQMpmbLToOVrc6EjSI60aHifwzva+eqYmElHFKE2jyGiD5FsaQXri1SSORJNg==",
- "license": "MIT",
- "dependencies": {
- "@codemirror/commands": "^6.2.4",
- "@codemirror/lang-markdown": "^6.2.3",
- "@codemirror/language-data": "^6.5.1",
- "@codemirror/merge": "^6.4.0",
- "@codemirror/state": "^6.4.0",
- "@codemirror/view": "^6.23.0",
- "@codesandbox/sandpack-react": "^2.20.0",
- "@lexical/clipboard": "^0.33.1",
- "@lexical/link": "^0.33.1",
- "@lexical/list": "^0.33.1",
- "@lexical/markdown": "^0.33.1",
- "@lexical/plain-text": "^0.33.1",
- "@lexical/react": "^0.33.1",
- "@lexical/rich-text": "^0.33.1",
- "@lexical/selection": "^0.33.1",
- "@lexical/utils": "^0.33.1",
- "@mdxeditor/gurx": "^1.1.4",
- "@radix-ui/colors": "^3.0.0",
- "@radix-ui/react-dialog": "^1.1.11",
- "@radix-ui/react-icons": "^1.3.2",
- "@radix-ui/react-popover": "^1.1.11",
- "@radix-ui/react-popper": "^1.2.4",
- "@radix-ui/react-select": "^2.2.2",
- "@radix-ui/react-toggle-group": "^1.1.7",
- "@radix-ui/react-toolbar": "^1.1.7",
- "@radix-ui/react-tooltip": "^1.2.4",
- "classnames": "^2.3.2",
- "cm6-theme-basic-light": "^0.2.0",
- "codemirror": "^6.0.1",
- "downshift": "^7.6.0",
- "js-yaml": "4.1.0",
- "lexical": "^0.33.1",
- "mdast-util-directive": "^3.0.0",
- "mdast-util-from-markdown": "^2.0.0",
- "mdast-util-frontmatter": "^2.0.1",
- "mdast-util-gfm-strikethrough": "^2.0.0",
- "mdast-util-gfm-table": "^2.0.0",
- "mdast-util-gfm-task-list-item": "^2.0.0",
- "mdast-util-highlight-mark": "^1.2.2",
- "mdast-util-mdx": "^3.0.0",
- "mdast-util-mdx-jsx": "^3.0.0",
- "mdast-util-to-markdown": "^2.1.0",
- "micromark-extension-directive": "^3.0.0",
- "micromark-extension-frontmatter": "^2.0.0",
- "micromark-extension-gfm-strikethrough": "^2.0.0",
- "micromark-extension-gfm-table": "^2.0.0",
- "micromark-extension-gfm-task-list-item": "^2.0.1",
- "micromark-extension-highlight-mark": "^1.2.0",
- "micromark-extension-mdx-jsx": "^3.0.0",
- "micromark-extension-mdx-md": "^2.0.0",
- "micromark-extension-mdxjs": "^3.0.0",
- "micromark-factory-space": "^2.0.0",
- "micromark-util-character": "^2.0.1",
- "micromark-util-symbol": "^2.0.0",
- "react-hook-form": "^7.56.1",
- "unidiff": "^1.0.2"
- },
- "engines": {
- "node": ">=16"
- },
- "peerDependencies": {
- "react": ">= 18 || >= 19",
- "react-dom": ">= 18 || >= 19"
- }
- },
- "node_modules/@mdxeditor/gurx": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@mdxeditor/gurx/-/gurx-1.2.3.tgz",
- "integrity": "sha512-5DQOlEx46oN9spggrC8husAGAhVoEFBGIYKN48es08XhRUbSU6l5bcIQYwRrQaY8clU1tExIcXzw8/fNnoxjpg==",
- "license": "MIT",
- "engines": {
- "node": ">=16"
- },
- "peerDependencies": {
- "react": ">= 18 || >= 19",
- "react-dom": ">= 18 || >= 19"
- }
- },
"node_modules/@nodelib/fs.scandir": {
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -2426,12 +2025,6 @@
"node": ">= 8"
}
},
- "node_modules/@open-draft/deferred-promise": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz",
- "integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==",
- "license": "MIT"
- },
"node_modules/@pkgjs/parseargs": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
@@ -2443,807 +2036,6 @@
"node": ">=14"
}
},
- "node_modules/@radix-ui/colors": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@radix-ui/colors/-/colors-3.0.0.tgz",
- "integrity": "sha512-FUOsGBkHrYJwCSEtWRCIfQbZG7q1e6DgxCIOe1SUQzDe/7rXXeA47s8yCn6fuTNQAj1Zq4oTFi9Yjp3wzElcxg==",
- "license": "MIT"
- },
- "node_modules/@radix-ui/number": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.1.tgz",
- "integrity": "sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==",
- "license": "MIT"
- },
- "node_modules/@radix-ui/primitive": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz",
- "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==",
- "license": "MIT"
- },
- "node_modules/@radix-ui/react-arrow": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.7.tgz",
- "integrity": "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/react-primitive": "2.1.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-collection": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.7.tgz",
- "integrity": "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/react-compose-refs": "1.1.2",
- "@radix-ui/react-context": "1.1.2",
- "@radix-ui/react-primitive": "2.1.3",
- "@radix-ui/react-slot": "1.2.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-compose-refs": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz",
- "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==",
- "license": "MIT",
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-context": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz",
- "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==",
- "license": "MIT",
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-dialog": {
- "version": "1.1.15",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.15.tgz",
- "integrity": "sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/primitive": "1.1.3",
- "@radix-ui/react-compose-refs": "1.1.2",
- "@radix-ui/react-context": "1.1.2",
- "@radix-ui/react-dismissable-layer": "1.1.11",
- "@radix-ui/react-focus-guards": "1.1.3",
- "@radix-ui/react-focus-scope": "1.1.7",
- "@radix-ui/react-id": "1.1.1",
- "@radix-ui/react-portal": "1.1.9",
- "@radix-ui/react-presence": "1.1.5",
- "@radix-ui/react-primitive": "2.1.3",
- "@radix-ui/react-slot": "1.2.3",
- "@radix-ui/react-use-controllable-state": "1.2.2",
- "aria-hidden": "^1.2.4",
- "react-remove-scroll": "^2.6.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-direction": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.1.tgz",
- "integrity": "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==",
- "license": "MIT",
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-dismissable-layer": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz",
- "integrity": "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/primitive": "1.1.3",
- "@radix-ui/react-compose-refs": "1.1.2",
- "@radix-ui/react-primitive": "2.1.3",
- "@radix-ui/react-use-callback-ref": "1.1.1",
- "@radix-ui/react-use-escape-keydown": "1.1.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-focus-guards": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.3.tgz",
- "integrity": "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==",
- "license": "MIT",
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-focus-scope": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.7.tgz",
- "integrity": "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/react-compose-refs": "1.1.2",
- "@radix-ui/react-primitive": "2.1.3",
- "@radix-ui/react-use-callback-ref": "1.1.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-icons": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-icons/-/react-icons-1.3.2.tgz",
- "integrity": "sha512-fyQIhGDhzfc9pK2kH6Pl9c4BDJGfMkPqkyIgYDthyNYoNg3wVhoJMMh19WS4Up/1KMPFVpNsT2q3WmXn2N1m6g==",
- "license": "MIT",
- "peerDependencies": {
- "react": "^16.x || ^17.x || ^18.x || ^19.0.0 || ^19.0.0-rc"
- }
- },
- "node_modules/@radix-ui/react-id": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz",
- "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/react-use-layout-effect": "1.1.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-popover": {
- "version": "1.1.15",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.15.tgz",
- "integrity": "sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/primitive": "1.1.3",
- "@radix-ui/react-compose-refs": "1.1.2",
- "@radix-ui/react-context": "1.1.2",
- "@radix-ui/react-dismissable-layer": "1.1.11",
- "@radix-ui/react-focus-guards": "1.1.3",
- "@radix-ui/react-focus-scope": "1.1.7",
- "@radix-ui/react-id": "1.1.1",
- "@radix-ui/react-popper": "1.2.8",
- "@radix-ui/react-portal": "1.1.9",
- "@radix-ui/react-presence": "1.1.5",
- "@radix-ui/react-primitive": "2.1.3",
- "@radix-ui/react-slot": "1.2.3",
- "@radix-ui/react-use-controllable-state": "1.2.2",
- "aria-hidden": "^1.2.4",
- "react-remove-scroll": "^2.6.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-popper": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.8.tgz",
- "integrity": "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==",
- "license": "MIT",
- "dependencies": {
- "@floating-ui/react-dom": "^2.0.0",
- "@radix-ui/react-arrow": "1.1.7",
- "@radix-ui/react-compose-refs": "1.1.2",
- "@radix-ui/react-context": "1.1.2",
- "@radix-ui/react-primitive": "2.1.3",
- "@radix-ui/react-use-callback-ref": "1.1.1",
- "@radix-ui/react-use-layout-effect": "1.1.1",
- "@radix-ui/react-use-rect": "1.1.1",
- "@radix-ui/react-use-size": "1.1.1",
- "@radix-ui/rect": "1.1.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-portal": {
- "version": "1.1.9",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.9.tgz",
- "integrity": "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/react-primitive": "2.1.3",
- "@radix-ui/react-use-layout-effect": "1.1.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-presence": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.5.tgz",
- "integrity": "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/react-compose-refs": "1.1.2",
- "@radix-ui/react-use-layout-effect": "1.1.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-primitive": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz",
- "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/react-slot": "1.2.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-roving-focus": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.11.tgz",
- "integrity": "sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/primitive": "1.1.3",
- "@radix-ui/react-collection": "1.1.7",
- "@radix-ui/react-compose-refs": "1.1.2",
- "@radix-ui/react-context": "1.1.2",
- "@radix-ui/react-direction": "1.1.1",
- "@radix-ui/react-id": "1.1.1",
- "@radix-ui/react-primitive": "2.1.3",
- "@radix-ui/react-use-callback-ref": "1.1.1",
- "@radix-ui/react-use-controllable-state": "1.2.2"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-select": {
- "version": "2.2.6",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.2.6.tgz",
- "integrity": "sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/number": "1.1.1",
- "@radix-ui/primitive": "1.1.3",
- "@radix-ui/react-collection": "1.1.7",
- "@radix-ui/react-compose-refs": "1.1.2",
- "@radix-ui/react-context": "1.1.2",
- "@radix-ui/react-direction": "1.1.1",
- "@radix-ui/react-dismissable-layer": "1.1.11",
- "@radix-ui/react-focus-guards": "1.1.3",
- "@radix-ui/react-focus-scope": "1.1.7",
- "@radix-ui/react-id": "1.1.1",
- "@radix-ui/react-popper": "1.2.8",
- "@radix-ui/react-portal": "1.1.9",
- "@radix-ui/react-primitive": "2.1.3",
- "@radix-ui/react-slot": "1.2.3",
- "@radix-ui/react-use-callback-ref": "1.1.1",
- "@radix-ui/react-use-controllable-state": "1.2.2",
- "@radix-ui/react-use-layout-effect": "1.1.1",
- "@radix-ui/react-use-previous": "1.1.1",
- "@radix-ui/react-visually-hidden": "1.2.3",
- "aria-hidden": "^1.2.4",
- "react-remove-scroll": "^2.6.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-separator": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.1.7.tgz",
- "integrity": "sha512-0HEb8R9E8A+jZjvmFCy/J4xhbXy3TV+9XSnGJ3KvTtjlIUy/YQ/p6UYZvi7YbeoeXdyU9+Y3scizK6hkY37baA==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/react-primitive": "2.1.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-slot": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz",
- "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/react-compose-refs": "1.1.2"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-toggle": {
- "version": "1.1.10",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.1.10.tgz",
- "integrity": "sha512-lS1odchhFTeZv3xwHH31YPObmJn8gOg7Lq12inrr0+BH/l3Tsq32VfjqH1oh80ARM3mlkfMic15n0kg4sD1poQ==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/primitive": "1.1.3",
- "@radix-ui/react-primitive": "2.1.3",
- "@radix-ui/react-use-controllable-state": "1.2.2"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-toggle-group": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-1.1.11.tgz",
- "integrity": "sha512-5umnS0T8JQzQT6HbPyO7Hh9dgd82NmS36DQr+X/YJ9ctFNCiiQd6IJAYYZ33LUwm8M+taCz5t2ui29fHZc4Y6Q==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/primitive": "1.1.3",
- "@radix-ui/react-context": "1.1.2",
- "@radix-ui/react-direction": "1.1.1",
- "@radix-ui/react-primitive": "2.1.3",
- "@radix-ui/react-roving-focus": "1.1.11",
- "@radix-ui/react-toggle": "1.1.10",
- "@radix-ui/react-use-controllable-state": "1.2.2"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-toolbar": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-toolbar/-/react-toolbar-1.1.11.tgz",
- "integrity": "sha512-4ol06/1bLoFu1nwUqzdD4Y5RZ9oDdKeiHIsntug54Hcr1pgaHiPqHFEaXI1IFP/EsOfROQZ8Mig9VTIRza6Tjg==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/primitive": "1.1.3",
- "@radix-ui/react-context": "1.1.2",
- "@radix-ui/react-direction": "1.1.1",
- "@radix-ui/react-primitive": "2.1.3",
- "@radix-ui/react-roving-focus": "1.1.11",
- "@radix-ui/react-separator": "1.1.7",
- "@radix-ui/react-toggle-group": "1.1.11"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-tooltip": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.2.8.tgz",
- "integrity": "sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/primitive": "1.1.3",
- "@radix-ui/react-compose-refs": "1.1.2",
- "@radix-ui/react-context": "1.1.2",
- "@radix-ui/react-dismissable-layer": "1.1.11",
- "@radix-ui/react-id": "1.1.1",
- "@radix-ui/react-popper": "1.2.8",
- "@radix-ui/react-portal": "1.1.9",
- "@radix-ui/react-presence": "1.1.5",
- "@radix-ui/react-primitive": "2.1.3",
- "@radix-ui/react-slot": "1.2.3",
- "@radix-ui/react-use-controllable-state": "1.2.2",
- "@radix-ui/react-visually-hidden": "1.2.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-use-callback-ref": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz",
- "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==",
- "license": "MIT",
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-use-controllable-state": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz",
- "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/react-use-effect-event": "0.0.2",
- "@radix-ui/react-use-layout-effect": "1.1.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-use-effect-event": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz",
- "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/react-use-layout-effect": "1.1.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-use-escape-keydown": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz",
- "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/react-use-callback-ref": "1.1.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-use-layout-effect": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz",
- "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==",
- "license": "MIT",
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-use-previous": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.1.tgz",
- "integrity": "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==",
- "license": "MIT",
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-use-rect": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz",
- "integrity": "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/rect": "1.1.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-use-size": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz",
- "integrity": "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/react-use-layout-effect": "1.1.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-visually-hidden": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.3.tgz",
- "integrity": "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==",
- "license": "MIT",
- "dependencies": {
- "@radix-ui/react-primitive": "2.1.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/rect": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz",
- "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==",
- "license": "MIT"
- },
- "node_modules/@react-hook/intersection-observer": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/@react-hook/intersection-observer/-/intersection-observer-3.1.2.tgz",
- "integrity": "sha512-mWU3BMkmmzyYMSuhO9wu3eJVP21N8TcgYm9bZnTrMwuM818bEk+0NRM3hP+c/TqA9Ln5C7qE53p1H0QMtzYdvQ==",
- "license": "MIT",
- "dependencies": {
- "@react-hook/passive-layout-effect": "^1.2.0",
- "intersection-observer": "^0.10.0"
- },
- "peerDependencies": {
- "react": ">=16.8"
- }
- },
- "node_modules/@react-hook/passive-layout-effect": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@react-hook/passive-layout-effect/-/passive-layout-effect-1.2.1.tgz",
- "integrity": "sha512-IwEphTD75liO8g+6taS+4oqz+nnroocNfWVHWz7j+N+ZO2vYrc6PV1q7GQhuahL0IOR7JccFTsFKQ/mb6iZWAg==",
- "license": "MIT",
- "peerDependencies": {
- "react": ">=16.8"
- }
- },
"node_modules/@rolldown/pluginutils": {
"version": "1.0.0-beta.27",
"resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz",
@@ -3568,12 +2360,6 @@
"win32"
]
},
- "node_modules/@stitches/core": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@stitches/core/-/core-1.2.8.tgz",
- "integrity": "sha512-Gfkvwk9o9kE9r9XNBmJRfV8zONvXThnm1tcuojL04Uy5uRyqg93DC83lDebl0rocZCfKSjUv+fWYtMQmEDJldg==",
- "license": "MIT"
- },
"node_modules/@storybook/builder-vite": {
"version": "8.6.14",
"resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-8.6.14.tgz",
@@ -3975,15 +2761,6 @@
"@types/deep-eql": "*"
}
},
- "node_modules/@types/debug": {
- "version": "4.1.12",
- "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz",
- "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==",
- "license": "MIT",
- "dependencies": {
- "@types/ms": "*"
- }
- },
"node_modules/@types/deep-eql": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz",
@@ -4002,26 +2779,9 @@
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
"integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
+ "dev": true,
"license": "MIT"
},
- "node_modules/@types/estree-jsx": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz",
- "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==",
- "license": "MIT",
- "dependencies": {
- "@types/estree": "*"
- }
- },
- "node_modules/@types/hast": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
- "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "*"
- }
- },
"node_modules/@types/json-schema": {
"version": "7.0.15",
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
@@ -4029,21 +2789,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/@types/mdast": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz",
- "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "*"
- }
- },
- "node_modules/@types/ms": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz",
- "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==",
- "license": "MIT"
- },
"node_modules/@types/node": {
"version": "22.18.1",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.1.tgz",
@@ -4068,7 +2813,7 @@
"version": "19.1.9",
"resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.9.tgz",
"integrity": "sha512-qXRuZaOsAdXKFyOhRBg6Lqqc0yay13vN7KrIg4L7N4aaHN68ma9OK3NE1BoDFgFOTfM7zg+3/8+2n8rLUH3OKQ==",
- "devOptional": true,
+ "dev": true,
"license": "MIT",
"peerDependencies": {
"@types/react": "^19.0.0"
@@ -4081,12 +2826,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/@types/unist": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz",
- "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==",
- "license": "MIT"
- },
"node_modules/@typescript-eslint/eslint-plugin": {
"version": "8.42.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.42.0.tgz",
@@ -4491,10 +3230,20 @@
"url": "https://opencollective.com/vitest"
}
},
+ "node_modules/@xmldom/xmldom": {
+ "version": "0.9.8",
+ "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.8.tgz",
+ "integrity": "sha512-p96FSY54r+WJ50FIOsCOjyj/wavs8921hG5+kVMmZgKcvIKxMXHTrjNJvRgWa/zuX3B6t2lijLNFaOyuxUH+2A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.6"
+ }
+ },
"node_modules/acorn": {
"version": "8.15.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
+ "dev": true,
"license": "MIT",
"bin": {
"acorn": "bin/acorn"
@@ -4507,6 +3256,7 @@
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
"integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "dev": true,
"license": "MIT",
"peerDependencies": {
"acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
@@ -4539,12 +3289,6 @@
"url": "https://github.com/sponsors/epoberezkin"
}
},
- "node_modules/anser": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/anser/-/anser-2.3.2.tgz",
- "integrity": "sha512-PMqBCBvrOVDRqLGooQb+z+t1Q0PiPyurUQeZRR5uHBOVZcW8B04KMmnT12USnhpNX2wCPagWzLVppQMUG3u0Dw==",
- "license": "MIT"
- },
"node_modules/ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
@@ -4575,20 +3319,9 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true,
"license": "Python-2.0"
},
- "node_modules/aria-hidden": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.6.tgz",
- "integrity": "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==",
- "license": "MIT",
- "dependencies": {
- "tslib": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/aria-query": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz",
@@ -4840,26 +3573,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/base64-js": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
- "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT"
- },
"node_modules/better-opn": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz",
@@ -4936,30 +3649,6 @@
"node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
}
},
- "node_modules/buffer": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
- "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.2.1"
- }
- },
"node_modules/cac": {
"version": "6.7.14",
"resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz",
@@ -5082,16 +3771,6 @@
],
"license": "CC-BY-4.0"
},
- "node_modules/ccount": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz",
- "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
"node_modules/chai": {
"version": "5.3.3",
"resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz",
@@ -5126,46 +3805,6 @@
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/character-entities": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz",
- "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/character-entities-html4": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz",
- "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/character-entities-legacy": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz",
- "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/character-reference-invalid": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz",
- "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
"node_modules/check-error": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz",
@@ -5176,18 +3815,6 @@
"node": ">= 16"
}
},
- "node_modules/classnames": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz",
- "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==",
- "license": "MIT"
- },
- "node_modules/clean-set": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/clean-set/-/clean-set-1.1.2.tgz",
- "integrity": "sha512-cA8uCj0qSoG9e0kevyOWXwPaELRPVg5Pxp6WskLMwerx257Zfnh8Nl0JBH59d7wQzij2CK7qEfJQK3RjuKKIug==",
- "license": "MIT"
- },
"node_modules/clsx": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
@@ -5197,18 +3824,6 @@
"node": ">=6"
}
},
- "node_modules/cm6-theme-basic-light": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/cm6-theme-basic-light/-/cm6-theme-basic-light-0.2.0.tgz",
- "integrity": "sha512-1prg2gv44sYfpHscP26uLT/ePrh0mlmVwMSoSd3zYKQ92Ab3jPRLzyCnpyOCQLJbK+YdNs4HvMRqMNYdy4pMhA==",
- "license": "MIT",
- "peerDependencies": {
- "@codemirror/language": "^6.0.0",
- "@codemirror/state": "^6.0.0",
- "@codemirror/view": "^6.0.0",
- "@lezer/highlight": "^1.0.0"
- }
- },
"node_modules/codemirror": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.2.tgz",
@@ -5251,11 +3866,14 @@
"dev": true,
"license": "MIT"
},
- "node_modules/compute-scroll-into-view": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-2.0.4.tgz",
- "integrity": "sha512-y/ZA3BGnxoM/QHHQ2Uy49CLtnWPbt4tTPpEEZiEmmiWBFKjej7nEyH8Ryz54jH0MLXflUYA3Er2zUxPSJu5R+g==",
- "license": "MIT"
+ "node_modules/commander": {
+ "version": "13.1.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz",
+ "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
},
"node_modules/concat-map": {
"version": "0.0.1",
@@ -5393,19 +4011,6 @@
"devOptional": true,
"license": "MIT"
},
- "node_modules/d": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz",
- "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==",
- "license": "ISC",
- "dependencies": {
- "es5-ext": "^0.10.64",
- "type": "^2.7.2"
- },
- "engines": {
- "node": ">=0.12"
- }
- },
"node_modules/damerau-levenshtein": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
@@ -5485,6 +4090,7 @@
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
"integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"ms": "^2.1.3"
@@ -5505,19 +4111,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/decode-named-character-reference": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz",
- "integrity": "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==",
- "license": "MIT",
- "dependencies": {
- "character-entities": "^2.0.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
"node_modules/deep-eql": {
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz",
@@ -5585,6 +4178,7 @@
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
"integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=6"
@@ -5596,28 +4190,6 @@
"integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==",
"license": "MIT"
},
- "node_modules/devlop": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz",
- "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==",
- "license": "MIT",
- "dependencies": {
- "dequal": "^2.0.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/diff": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz",
- "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==",
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.3.1"
- }
- },
"node_modules/dir-glob": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
@@ -5651,34 +4223,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/dotenv": {
- "version": "16.6.1",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz",
- "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==",
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://dotenvx.com"
- }
- },
- "node_modules/downshift": {
- "version": "7.6.2",
- "resolved": "https://registry.npmjs.org/downshift/-/downshift-7.6.2.tgz",
- "integrity": "sha512-iOv+E1Hyt3JDdL9yYcOgW7nZ7GQ2Uz6YbggwXvKUSleetYhU2nXD482Rz6CzvM4lvI1At34BYruKAL4swRGxaA==",
- "license": "MIT",
- "dependencies": {
- "@babel/runtime": "^7.14.8",
- "compute-scroll-into-view": "^2.0.4",
- "prop-types": "^15.7.2",
- "react-is": "^17.0.2",
- "tslib": "^2.3.0"
- },
- "peerDependencies": {
- "react": ">=16.12.0"
- }
- },
"node_modules/dunder-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
@@ -5932,46 +4476,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/es5-ext": {
- "version": "0.10.64",
- "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz",
- "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==",
- "hasInstallScript": true,
- "license": "ISC",
- "dependencies": {
- "es6-iterator": "^2.0.3",
- "es6-symbol": "^3.1.3",
- "esniff": "^2.0.1",
- "next-tick": "^1.1.0"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/es6-iterator": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
- "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==",
- "license": "MIT",
- "dependencies": {
- "d": "1",
- "es5-ext": "^0.10.35",
- "es6-symbol": "^3.1.1"
- }
- },
- "node_modules/es6-symbol": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz",
- "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==",
- "license": "ISC",
- "dependencies": {
- "d": "^1.0.2",
- "ext": "^1.7.0"
- },
- "engines": {
- "node": ">=0.12"
- }
- },
"node_modules/esbuild": {
"version": "0.25.9",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.9.tgz",
@@ -6037,12 +4541,6 @@
"node": ">=6"
}
},
- "node_modules/escape-carriage": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/escape-carriage/-/escape-carriage-1.3.1.tgz",
- "integrity": "sha512-GwBr6yViW3ttx1kb7/Oh+gKQ1/TrhYwxKqVmg5gS+BK+Qe2KrOa/Vh7w3HPBvgGf0LfcDGoY9I6NHKoA5Hozhw==",
- "license": "MIT"
- },
"node_modules/escape-string-regexp": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
@@ -6262,19 +4760,13 @@
"url": "https://opencollective.com/eslint"
}
},
- "node_modules/esniff": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz",
- "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==",
- "license": "ISC",
- "dependencies": {
- "d": "^1.0.1",
- "es5-ext": "^0.10.62",
- "event-emitter": "^0.3.5",
- "type": "^2.7.2"
- },
+ "node_modules/esm": {
+ "version": "3.2.25",
+ "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz",
+ "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==",
+ "license": "MIT",
"engines": {
- "node": ">=0.10"
+ "node": ">=6"
}
},
"node_modules/espree": {
@@ -6345,30 +4837,6 @@
"node": ">=4.0"
}
},
- "node_modules/estree-util-is-identifier-name": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz",
- "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==",
- "license": "MIT",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/estree-util-visit": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz",
- "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==",
- "license": "MIT",
- "dependencies": {
- "@types/estree-jsx": "^1.0.0",
- "@types/unist": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
"node_modules/estree-walker": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
@@ -6386,16 +4854,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/event-emitter": {
- "version": "0.3.5",
- "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
- "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==",
- "license": "MIT",
- "dependencies": {
- "d": "1",
- "es5-ext": "~0.10.14"
- }
- },
"node_modules/expect-type": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.2.tgz",
@@ -6406,15 +4864,6 @@
"node": ">=12.0.0"
}
},
- "node_modules/ext": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz",
- "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==",
- "license": "ISC",
- "dependencies": {
- "type": "^2.7.2"
- }
- },
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -6503,19 +4952,6 @@
"reusify": "^1.0.4"
}
},
- "node_modules/fault": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz",
- "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==",
- "license": "MIT",
- "dependencies": {
- "format": "^0.2.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
"node_modules/fdir": {
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
@@ -6631,14 +5067,6 @@
"url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/format": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz",
- "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==",
- "engines": {
- "node": ">=0.4.x"
- }
- },
"node_modules/fsevents": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
@@ -7145,26 +5573,6 @@
"node": ">=4"
}
},
- "node_modules/ieee754": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
- "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "BSD-3-Clause"
- },
"node_modules/ignore": {
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
@@ -7241,36 +5649,6 @@
"node": ">= 0.4"
}
},
- "node_modules/intersection-observer": {
- "version": "0.10.0",
- "resolved": "https://registry.npmjs.org/intersection-observer/-/intersection-observer-0.10.0.tgz",
- "integrity": "sha512-fn4bQ0Xq8FTej09YC/jqKZwtijpvARlRp6wxL5WTA6yPe2YWSJ5RJh7Nm79rK2qB0wr6iDQzH60XGq5V/7u8YQ==",
- "license": "W3C-20150513"
- },
- "node_modules/is-alphabetical": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz",
- "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/is-alphanumerical": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz",
- "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==",
- "license": "MIT",
- "dependencies": {
- "is-alphabetical": "^2.0.0",
- "is-decimal": "^2.0.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
"node_modules/is-arguments": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz",
@@ -7430,16 +5808,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-decimal": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz",
- "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
"node_modules/is-docker": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
@@ -7524,16 +5892,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/is-hexadecimal": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz",
- "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
"node_modules/is-map": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz",
@@ -7776,17 +6134,6 @@
"dev": true,
"license": "ISC"
},
- "node_modules/isomorphic.js": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/isomorphic.js/-/isomorphic.js-0.2.5.tgz",
- "integrity": "sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw==",
- "license": "MIT",
- "peer": true,
- "funding": {
- "type": "GitHub Sponsors ❤",
- "url": "https://github.com/sponsors/dmonad"
- }
- },
"node_modules/iterator.prototype": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz",
@@ -7825,12 +6172,14 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true,
"license": "MIT"
},
"node_modules/js-yaml": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
"integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"argparse": "^2.0.1"
@@ -7979,15 +6328,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/kleur": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
- "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/known-css-properties": {
"version": "0.37.0",
"resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.37.0.tgz",
@@ -8029,34 +6369,6 @@
"node": ">= 0.8.0"
}
},
- "node_modules/lexical": {
- "version": "0.33.1",
- "resolved": "https://registry.npmjs.org/lexical/-/lexical-0.33.1.tgz",
- "integrity": "sha512-+kiCS/GshQmCs/meMb8MQT4AMvw3S3Ef0lSCv2Xi6Itvs59OD+NjQWNfYkDteIbKtVE/w0Yiqh56VyGwIb8UcA==",
- "license": "MIT"
- },
- "node_modules/lib0": {
- "version": "0.2.114",
- "resolved": "https://registry.npmjs.org/lib0/-/lib0-0.2.114.tgz",
- "integrity": "sha512-gcxmNFzA4hv8UYi8j43uPlQ7CGcyMJ2KQb5kZASw6SnAKAf10hK12i2fjrS3Cl/ugZa5Ui6WwIu1/6MIXiHttQ==",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "isomorphic.js": "^0.2.4"
- },
- "bin": {
- "0ecdsa-generate-keypair": "bin/0ecdsa-generate-keypair.js",
- "0gentesthtml": "bin/gentesthtml.js",
- "0serve": "bin/0serve.js"
- },
- "engines": {
- "node": ">=16"
- },
- "funding": {
- "type": "GitHub Sponsors ❤",
- "url": "https://github.com/sponsors/dmonad"
- }
- },
"node_modules/lines-and-columns": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
@@ -8094,20 +6406,11 @@
"dev": true,
"license": "MIT"
},
- "node_modules/longest-streak": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz",
- "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
"node_modules/loose-envify": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
"integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"js-tokens": "^3.0.0 || ^4.0.0"
@@ -8137,6 +6440,7 @@
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz",
"integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==",
+ "dev": true,
"license": "MIT",
"bin": {
"lz-string": "bin/bin.js"
@@ -8159,16 +6463,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/markdown-table": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz",
- "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
"node_modules/math-intrinsics": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
@@ -8179,6 +6473,18 @@
"node": ">= 0.4"
}
},
+ "node_modules/mathjax-full": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/mathjax-full/-/mathjax-full-3.2.2.tgz",
+ "integrity": "sha512-+LfG9Fik+OuI8SLwsiR02IVdjcnRCy5MufYLi0C3TdMT56L/pjB0alMVGgoWJF8pN9Rc7FESycZB9BMNWIid5w==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "esm": "^3.2.25",
+ "mhchemparser": "^4.1.0",
+ "mj-context-menu": "^0.6.1",
+ "speech-rule-engine": "^4.0.6"
+ }
+ },
"node_modules/mathml-tag-names": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz",
@@ -8190,263 +6496,6 @@
"url": "https://github.com/sponsors/wooorm"
}
},
- "node_modules/mdast-util-directive": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-3.1.0.tgz",
- "integrity": "sha512-I3fNFt+DHmpWCYAT7quoM6lHf9wuqtI+oCOfvILnoicNIqjh5E3dEJWiXuYME2gNe8vl1iMQwyUHa7bgFmak6Q==",
- "license": "MIT",
- "dependencies": {
- "@types/mdast": "^4.0.0",
- "@types/unist": "^3.0.0",
- "ccount": "^2.0.0",
- "devlop": "^1.0.0",
- "mdast-util-from-markdown": "^2.0.0",
- "mdast-util-to-markdown": "^2.0.0",
- "parse-entities": "^4.0.0",
- "stringify-entities": "^4.0.0",
- "unist-util-visit-parents": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-from-markdown": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz",
- "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==",
- "license": "MIT",
- "dependencies": {
- "@types/mdast": "^4.0.0",
- "@types/unist": "^3.0.0",
- "decode-named-character-reference": "^1.0.0",
- "devlop": "^1.0.0",
- "mdast-util-to-string": "^4.0.0",
- "micromark": "^4.0.0",
- "micromark-util-decode-numeric-character-reference": "^2.0.0",
- "micromark-util-decode-string": "^2.0.0",
- "micromark-util-normalize-identifier": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0",
- "unist-util-stringify-position": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-frontmatter": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-2.0.1.tgz",
- "integrity": "sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==",
- "license": "MIT",
- "dependencies": {
- "@types/mdast": "^4.0.0",
- "devlop": "^1.0.0",
- "escape-string-regexp": "^5.0.0",
- "mdast-util-from-markdown": "^2.0.0",
- "mdast-util-to-markdown": "^2.0.0",
- "micromark-extension-frontmatter": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-frontmatter/node_modules/escape-string-regexp": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
- "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/mdast-util-gfm-strikethrough": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz",
- "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==",
- "license": "MIT",
- "dependencies": {
- "@types/mdast": "^4.0.0",
- "mdast-util-from-markdown": "^2.0.0",
- "mdast-util-to-markdown": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-gfm-table": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz",
- "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==",
- "license": "MIT",
- "dependencies": {
- "@types/mdast": "^4.0.0",
- "devlop": "^1.0.0",
- "markdown-table": "^3.0.0",
- "mdast-util-from-markdown": "^2.0.0",
- "mdast-util-to-markdown": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-gfm-task-list-item": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz",
- "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==",
- "license": "MIT",
- "dependencies": {
- "@types/mdast": "^4.0.0",
- "devlop": "^1.0.0",
- "mdast-util-from-markdown": "^2.0.0",
- "mdast-util-to-markdown": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-highlight-mark": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/mdast-util-highlight-mark/-/mdast-util-highlight-mark-1.2.2.tgz",
- "integrity": "sha512-OYumVoytj+B9YgwzBhBcYUCLYHIPvJtAvwnMyKhUXbfUFuER5S+FDZyu9fadUxm2TCT5fRYK3jQXh2ioWAxrMw==",
- "license": "MIT",
- "dependencies": {
- "micromark-extension-highlight-mark": "1.2.0"
- }
- },
- "node_modules/mdast-util-mdx": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz",
- "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==",
- "license": "MIT",
- "dependencies": {
- "mdast-util-from-markdown": "^2.0.0",
- "mdast-util-mdx-expression": "^2.0.0",
- "mdast-util-mdx-jsx": "^3.0.0",
- "mdast-util-mdxjs-esm": "^2.0.0",
- "mdast-util-to-markdown": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-mdx-expression": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz",
- "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==",
- "license": "MIT",
- "dependencies": {
- "@types/estree-jsx": "^1.0.0",
- "@types/hast": "^3.0.0",
- "@types/mdast": "^4.0.0",
- "devlop": "^1.0.0",
- "mdast-util-from-markdown": "^2.0.0",
- "mdast-util-to-markdown": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-mdx-jsx": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz",
- "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==",
- "license": "MIT",
- "dependencies": {
- "@types/estree-jsx": "^1.0.0",
- "@types/hast": "^3.0.0",
- "@types/mdast": "^4.0.0",
- "@types/unist": "^3.0.0",
- "ccount": "^2.0.0",
- "devlop": "^1.1.0",
- "mdast-util-from-markdown": "^2.0.0",
- "mdast-util-to-markdown": "^2.0.0",
- "parse-entities": "^4.0.0",
- "stringify-entities": "^4.0.0",
- "unist-util-stringify-position": "^4.0.0",
- "vfile-message": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-mdxjs-esm": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz",
- "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==",
- "license": "MIT",
- "dependencies": {
- "@types/estree-jsx": "^1.0.0",
- "@types/hast": "^3.0.0",
- "@types/mdast": "^4.0.0",
- "devlop": "^1.0.0",
- "mdast-util-from-markdown": "^2.0.0",
- "mdast-util-to-markdown": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-phrasing": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz",
- "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==",
- "license": "MIT",
- "dependencies": {
- "@types/mdast": "^4.0.0",
- "unist-util-is": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-to-markdown": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz",
- "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==",
- "license": "MIT",
- "dependencies": {
- "@types/mdast": "^4.0.0",
- "@types/unist": "^3.0.0",
- "longest-streak": "^3.0.0",
- "mdast-util-phrasing": "^4.0.0",
- "mdast-util-to-string": "^4.0.0",
- "micromark-util-classify-character": "^2.0.0",
- "micromark-util-decode-string": "^2.0.0",
- "unist-util-visit": "^5.0.0",
- "zwitch": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-to-string": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz",
- "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==",
- "license": "MIT",
- "dependencies": {
- "@types/mdast": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
"node_modules/mdn-data": {
"version": "2.12.2",
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz",
@@ -8487,702 +6536,11 @@
"node": ">= 8"
}
},
- "node_modules/micromark": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz",
- "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "@types/debug": "^4.0.0",
- "debug": "^4.0.0",
- "decode-named-character-reference": "^1.0.0",
- "devlop": "^1.0.0",
- "micromark-core-commonmark": "^2.0.0",
- "micromark-factory-space": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-chunked": "^2.0.0",
- "micromark-util-combine-extensions": "^2.0.0",
- "micromark-util-decode-numeric-character-reference": "^2.0.0",
- "micromark-util-encode": "^2.0.0",
- "micromark-util-normalize-identifier": "^2.0.0",
- "micromark-util-resolve-all": "^2.0.0",
- "micromark-util-sanitize-uri": "^2.0.0",
- "micromark-util-subtokenize": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-core-commonmark": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz",
- "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "decode-named-character-reference": "^1.0.0",
- "devlop": "^1.0.0",
- "micromark-factory-destination": "^2.0.0",
- "micromark-factory-label": "^2.0.0",
- "micromark-factory-space": "^2.0.0",
- "micromark-factory-title": "^2.0.0",
- "micromark-factory-whitespace": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-chunked": "^2.0.0",
- "micromark-util-classify-character": "^2.0.0",
- "micromark-util-html-tag-name": "^2.0.0",
- "micromark-util-normalize-identifier": "^2.0.0",
- "micromark-util-resolve-all": "^2.0.0",
- "micromark-util-subtokenize": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-extension-directive": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-3.0.2.tgz",
- "integrity": "sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA==",
- "license": "MIT",
- "dependencies": {
- "devlop": "^1.0.0",
- "micromark-factory-space": "^2.0.0",
- "micromark-factory-whitespace": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0",
- "parse-entities": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/micromark-extension-frontmatter": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-2.0.0.tgz",
- "integrity": "sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==",
- "license": "MIT",
- "dependencies": {
- "fault": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/micromark-extension-gfm-strikethrough": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz",
- "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==",
- "license": "MIT",
- "dependencies": {
- "devlop": "^1.0.0",
- "micromark-util-chunked": "^2.0.0",
- "micromark-util-classify-character": "^2.0.0",
- "micromark-util-resolve-all": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/micromark-extension-gfm-table": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz",
- "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==",
- "license": "MIT",
- "dependencies": {
- "devlop": "^1.0.0",
- "micromark-factory-space": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/micromark-extension-gfm-task-list-item": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz",
- "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==",
- "license": "MIT",
- "dependencies": {
- "devlop": "^1.0.0",
- "micromark-factory-space": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/micromark-extension-highlight-mark": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-highlight-mark/-/micromark-extension-highlight-mark-1.2.0.tgz",
- "integrity": "sha512-huGtbd/9kQsMk8u7nrVMaS5qH/47yDG6ZADggo5Owz5JoY8wdfQjfuy118/QiYNCvdFuFDbzT0A7K7Hp2cBsXA==",
- "license": "MIT",
- "dependencies": {
- "micromark-util-chunked": "^2.0.0",
- "micromark-util-classify-character": "^2.0.0",
- "micromark-util-resolve-all": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0",
- "uvu": "^0.5.6"
- }
- },
- "node_modules/micromark-extension-mdx-expression": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz",
- "integrity": "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "@types/estree": "^1.0.0",
- "devlop": "^1.0.0",
- "micromark-factory-mdx-expression": "^2.0.0",
- "micromark-factory-space": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-events-to-acorn": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-extension-mdx-jsx": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.2.tgz",
- "integrity": "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==",
- "license": "MIT",
- "dependencies": {
- "@types/estree": "^1.0.0",
- "devlop": "^1.0.0",
- "estree-util-is-identifier-name": "^3.0.0",
- "micromark-factory-mdx-expression": "^2.0.0",
- "micromark-factory-space": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-events-to-acorn": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0",
- "vfile-message": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/micromark-extension-mdx-md": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz",
- "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==",
- "license": "MIT",
- "dependencies": {
- "micromark-util-types": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/micromark-extension-mdxjs": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz",
- "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==",
- "license": "MIT",
- "dependencies": {
- "acorn": "^8.0.0",
- "acorn-jsx": "^5.0.0",
- "micromark-extension-mdx-expression": "^3.0.0",
- "micromark-extension-mdx-jsx": "^3.0.0",
- "micromark-extension-mdx-md": "^2.0.0",
- "micromark-extension-mdxjs-esm": "^3.0.0",
- "micromark-util-combine-extensions": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/micromark-extension-mdxjs-esm": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz",
- "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==",
- "license": "MIT",
- "dependencies": {
- "@types/estree": "^1.0.0",
- "devlop": "^1.0.0",
- "micromark-core-commonmark": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-events-to-acorn": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0",
- "unist-util-position-from-estree": "^2.0.0",
- "vfile-message": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/micromark-factory-destination": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz",
- "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-factory-label": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz",
- "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "devlop": "^1.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-factory-mdx-expression": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.3.tgz",
- "integrity": "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "@types/estree": "^1.0.0",
- "devlop": "^1.0.0",
- "micromark-factory-space": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-events-to-acorn": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0",
- "unist-util-position-from-estree": "^2.0.0",
- "vfile-message": "^4.0.0"
- }
- },
- "node_modules/micromark-factory-space": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz",
- "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-character": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-factory-title": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz",
- "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-factory-space": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-factory-whitespace": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz",
- "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-factory-space": "^2.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-util-character": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
- "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-util-chunked": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz",
- "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "node_modules/micromark-util-classify-character": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz",
- "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-character": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-util-combine-extensions": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz",
- "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-chunked": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-util-decode-numeric-character-reference": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz",
- "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "node_modules/micromark-util-decode-string": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz",
- "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "decode-named-character-reference": "^1.0.0",
- "micromark-util-character": "^2.0.0",
- "micromark-util-decode-numeric-character-reference": "^2.0.0",
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "node_modules/micromark-util-encode": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz",
- "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT"
- },
- "node_modules/micromark-util-events-to-acorn": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.3.tgz",
- "integrity": "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "@types/estree": "^1.0.0",
- "@types/unist": "^3.0.0",
- "devlop": "^1.0.0",
- "estree-util-visit": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0",
- "vfile-message": "^4.0.0"
- }
- },
- "node_modules/micromark-util-html-tag-name": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz",
- "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT"
- },
- "node_modules/micromark-util-normalize-identifier": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz",
- "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "node_modules/micromark-util-resolve-all": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz",
- "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-util-sanitize-uri": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz",
- "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-character": "^2.0.0",
- "micromark-util-encode": "^2.0.0",
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "node_modules/micromark-util-subtokenize": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz",
- "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "devlop": "^1.0.0",
- "micromark-util-chunked": "^2.0.0",
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-util-symbol": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
- "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT"
- },
- "node_modules/micromark-util-types": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz",
- "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT"
+ "node_modules/mhchemparser": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/mhchemparser/-/mhchemparser-4.2.1.tgz",
+ "integrity": "sha512-kYmyrCirqJf3zZ9t/0wGgRZ4/ZJw//VwaRVGA75C4nhE60vtnIzhl9J9ndkX/h6hxSN7pjg/cE0VxbnNM+bnDQ==",
+ "license": "Apache-2.0"
},
"node_modules/micromatch": {
"version": "4.0.8",
@@ -9211,15 +6569,6 @@
"url": "https://github.com/sponsors/jonschlinkert"
}
},
- "node_modules/mime-db": {
- "version": "1.54.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
- "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
"node_modules/min-indent": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
@@ -9263,19 +6612,17 @@
"node": ">=16 || 14 >=14.17"
}
},
- "node_modules/mri": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
- "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==",
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
+ "node_modules/mj-context-menu": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/mj-context-menu/-/mj-context-menu-0.6.1.tgz",
+ "integrity": "sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA==",
+ "license": "Apache-2.0"
},
"node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true,
"license": "MIT"
},
"node_modules/nanoid": {
@@ -9304,12 +6651,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/next-tick": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
- "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==",
- "license": "ISC"
- },
"node_modules/node-releases": {
"version": "2.0.19",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz",
@@ -9338,6 +6679,7 @@
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=0.10.0"
@@ -9477,12 +6819,6 @@
"node": ">= 0.8.0"
}
},
- "node_modules/outvariant": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.0.tgz",
- "integrity": "sha512-AlWY719RF02ujitly7Kk/0QlV+pXGFDHrHf9O2OKqyqgBieaPOIeuSkL8sRK6j2WK+/ZAURq2kZsY0d8JapUiw==",
- "license": "MIT"
- },
"node_modules/own-keys": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz",
@@ -9553,31 +6889,6 @@
"node": ">=6"
}
},
- "node_modules/parse-entities": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz",
- "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "character-entities-legacy": "^3.0.0",
- "character-reference-invalid": "^2.0.0",
- "decode-named-character-reference": "^1.0.0",
- "is-alphanumerical": "^2.0.0",
- "is-decimal": "^2.0.0",
- "is-hexadecimal": "^2.0.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/parse-entities/node_modules/@types/unist": {
- "version": "2.0.11",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
- "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
- "license": "MIT"
- },
"node_modules/parse-json": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
@@ -9990,15 +7301,6 @@
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/prismjs": {
- "version": "1.30.0",
- "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz",
- "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==",
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/process": {
"version": "0.11.10",
"resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
@@ -10013,6 +7315,7 @@
"version": "15.8.1",
"resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
"integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"loose-envify": "^1.4.0",
@@ -10024,6 +7327,7 @@
"version": "16.13.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
+ "dev": true,
"license": "MIT"
},
"node_modules/punycode": {
@@ -10066,15 +7370,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/react-devtools-inline": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/react-devtools-inline/-/react-devtools-inline-4.4.0.tgz",
- "integrity": "sha512-ES0GolSrKO8wsKbsEkVeiR/ZAaHQTY4zDh1UW8DImVmm8oaGLl3ijJDvSGe+qDRKPZdPRnDtWWnSvvrgxXdThQ==",
- "license": "MIT",
- "dependencies": {
- "es6-symbol": "^3"
- }
- },
"node_modules/react-docgen": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-7.1.1.tgz",
@@ -10132,42 +7427,11 @@
"react": "^19.1.1"
}
},
- "node_modules/react-error-boundary": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-3.1.4.tgz",
- "integrity": "sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==",
- "license": "MIT",
- "dependencies": {
- "@babel/runtime": "^7.12.5"
- },
- "engines": {
- "node": ">=10",
- "npm": ">=6"
- },
- "peerDependencies": {
- "react": ">=16.13.1"
- }
- },
- "node_modules/react-hook-form": {
- "version": "7.62.0",
- "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.62.0.tgz",
- "integrity": "sha512-7KWFejc98xqG/F4bAxpL41NB3o1nnvQO1RWZT3TqRZYL8RryQETGfEdVnJN2fy1crCiBLLjkRBVK05j24FxJGA==",
- "license": "MIT",
- "engines": {
- "node": ">=18.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/react-hook-form"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17 || ^18 || ^19"
- }
- },
"node_modules/react-is": {
"version": "17.0.2",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
"integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
+ "dev": true,
"license": "MIT"
},
"node_modules/react-number-format": {
@@ -10526,18 +7790,6 @@
"queue-microtask": "^1.2.2"
}
},
- "node_modules/sade": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz",
- "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==",
- "license": "MIT",
- "dependencies": {
- "mri": "^1.1.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/safe-array-concat": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz",
@@ -10854,6 +8106,20 @@
"node": ">=0.10.0"
}
},
+ "node_modules/speech-rule-engine": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/speech-rule-engine/-/speech-rule-engine-4.1.2.tgz",
+ "integrity": "sha512-S6ji+flMEga+1QU79NDbwZ8Ivf0S/MpupQQiIC0rTpU/ZTKgcajijJJb1OcByBQDjrXCN1/DJtGz4ZJeBMPGJw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@xmldom/xmldom": "0.9.8",
+ "commander": "13.1.0",
+ "wicked-good-xpath": "1.3.0"
+ },
+ "bin": {
+ "sre": "bin/sre"
+ }
+ },
"node_modules/stackback": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz",
@@ -10861,18 +8127,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/static-browser-server": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/static-browser-server/-/static-browser-server-1.0.3.tgz",
- "integrity": "sha512-ZUyfgGDdFRbZGGJQ1YhiM930Yczz5VlbJObrQLlk24+qNHVQx4OlLcYswEUo3bIyNAbQUIUR9Yr5/Hqjzqb4zA==",
- "license": "Apache-2.0",
- "dependencies": {
- "@open-draft/deferred-promise": "^2.1.0",
- "dotenv": "^16.0.3",
- "mime-db": "^1.52.0",
- "outvariant": "^1.3.0"
- }
- },
"node_modules/std-env": {
"version": "3.9.0",
"resolved": "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz",
@@ -10938,12 +8192,6 @@
"memoizerific": "^1.11.3"
}
},
- "node_modules/strict-event-emitter": {
- "version": "0.4.6",
- "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.4.6.tgz",
- "integrity": "sha512-12KWeb+wixJohmnwNFerbyiBrAlq5qJLwIt38etRtKtmmHyDSoGlIqFE9wx+4IwG0aDjI7GV8tc8ZccjWZZtTg==",
- "license": "MIT"
- },
"node_modules/string-width": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
@@ -11111,20 +8359,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/stringify-entities": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz",
- "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==",
- "license": "MIT",
- "dependencies": {
- "character-entities-html4": "^2.0.0",
- "character-entities-legacy": "^3.0.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
"node_modules/strip-ansi": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
@@ -11911,12 +9145,6 @@
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
"license": "0BSD"
},
- "node_modules/type": {
- "version": "2.7.3",
- "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz",
- "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==",
- "license": "ISC"
- },
"node_modules/type-check": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
@@ -12084,83 +9312,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/unidiff": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/unidiff/-/unidiff-1.0.4.tgz",
- "integrity": "sha512-ynU0vsAXw0ir8roa+xPCUHmnJ5goc5BTM2Kuc3IJd8UwgaeRs7VSD5+eeaQL+xp1JtB92hu/Zy/Lgy7RZcr1pQ==",
- "license": "MIT",
- "dependencies": {
- "diff": "^5.1.0"
- }
- },
- "node_modules/unist-util-is": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz",
- "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-position-from-estree": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz",
- "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-stringify-position": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz",
- "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-visit": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz",
- "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^3.0.0",
- "unist-util-is": "^6.0.0",
- "unist-util-visit-parents": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-visit-parents": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz",
- "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^3.0.0",
- "unist-util-is": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
"node_modules/unplugin": {
"version": "1.16.1",
"resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.16.1.tgz",
@@ -12325,38 +9476,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/uvu": {
- "version": "0.5.6",
- "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz",
- "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==",
- "license": "MIT",
- "dependencies": {
- "dequal": "^2.0.0",
- "diff": "^5.0.0",
- "kleur": "^4.0.3",
- "sade": "^1.7.3"
- },
- "bin": {
- "uvu": "bin.js"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/vfile-message": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz",
- "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^3.0.0",
- "unist-util-stringify-position": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
"node_modules/vite": {
"version": "6.3.5",
"resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz",
@@ -12743,6 +9862,12 @@
"node": ">=8"
}
},
+ "node_modules/wicked-good-xpath": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/wicked-good-xpath/-/wicked-good-xpath-1.3.0.tgz",
+ "integrity": "sha512-Gd9+TUn5nXdwj/hFsPVx5cuHHiF5Bwuc30jZ4+ronF1qHK5O7HD0sgmXWSEgwKquT3ClLoKPVbO6qGwVwLzvAw==",
+ "license": "MIT"
+ },
"node_modules/word-wrap": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
@@ -12898,24 +10023,6 @@
"dev": true,
"license": "ISC"
},
- "node_modules/yjs": {
- "version": "13.6.27",
- "resolved": "https://registry.npmjs.org/yjs/-/yjs-13.6.27.tgz",
- "integrity": "sha512-OIDwaflOaq4wC6YlPBy2L6ceKeKuF7DeTxx+jPzv1FHn9tCZ0ZwSRnUBxD05E3yed46fv/FWJbvR+Ud7x0L7zw==",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "lib0": "^0.2.99"
- },
- "engines": {
- "node": ">=16.0.0",
- "npm": ">=8.0.0"
- },
- "funding": {
- "type": "GitHub Sponsors ❤",
- "url": "https://github.com/sponsors/dmonad"
- }
- },
"node_modules/yocto-queue": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
@@ -12928,16 +10035,6 @@
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
- },
- "node_modules/zwitch": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz",
- "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
}
}
}
diff --git a/frontend/package.json b/frontend/package.json
index f3d436a..b1ac78e 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -20,9 +20,18 @@
"storybook:build": "storybook build"
},
"dependencies": {
- "@mantine/core": "^8.1.2",
+ "@codemirror/commands": "^6.8.1",
+ "@codemirror/lang-markdown": "^6.3.4",
+ "@codemirror/language": "^6.11.3",
+ "@codemirror/language-data": "^6.5.1",
+ "@codemirror/state": "^6.5.2",
+ "@codemirror/theme-one-dark": "^6.1.3",
+ "@codemirror/view": "^6.38.2",
+ "@lezer/highlight": "^1.2.1",
+ "@mantine/core": "^8.2.8",
"@mantine/hooks": "^8.1.2",
- "@mdxeditor/editor": "^3.42.0",
+ "codemirror": "^6.0.2",
+ "mathjax-full": "^3.2.2",
"react": "^19.1.1",
"react-dom": "^19.1.1",
"react-router-dom": "^7.6.2"
diff --git a/frontend/src/Router.tsx b/frontend/src/Router.tsx
index b8c7bf2..8afc810 100644
--- a/frontend/src/Router.tsx
+++ b/frontend/src/Router.tsx
@@ -1,11 +1,16 @@
import { createBrowserRouter, RouterProvider } from 'react-router-dom';
import { HomePage } from './pages/Home.page';
+// import MarkdownEditor from './pages/editor.page';
const router = createBrowserRouter([
{
path: '/',
element: ,
},
+ // {
+ // path: '/editor',
+ // element: ,
+ // },
]);
export function Router() {
diff --git a/frontend/src/components/MarkdownEditor.tsx b/frontend/src/components/MarkdownEditor.tsx
deleted file mode 100644
index d56dcfb..0000000
--- a/frontend/src/components/MarkdownEditor.tsx
+++ /dev/null
@@ -1,30 +0,0 @@
-// src/components/MarkdownEditor.tsx
-import React, { useState } from "react";
-import { MDXEditor, toolbarPlugin, headingsPlugin, listsPlugin, quotePlugin, markdownShortcutPlugin } from "@mdxeditor/editor";
-import "@mdxeditor/editor/style.css";
-
-export default function MarkdownEditor() {
- // Local state for markdown
- const [markdown, setMarkdown] = useState("## Hola MDX!\n\nEscribe aquí...");
-
- return (
-
-
-
-
Vista previa:
-
{markdown}
-
-
- );
-}
\ No newline at end of file
diff --git a/frontend/src/editor/MarkdownEditor.tsx b/frontend/src/editor/MarkdownEditor.tsx
new file mode 100644
index 0000000..b9cabb3
--- /dev/null
+++ b/frontend/src/editor/MarkdownEditor.tsx
@@ -0,0 +1,66 @@
+// Comments in English
+"use client";
+
+import React, { useEffect, useRef } from "react";
+import { EditorView, basicSetup } from "codemirror";
+import { keymap } from "@codemirror/view";
+import { markdown, markdownLanguage } from "@codemirror/lang-markdown";
+import { languages } from "@codemirror/language-data"; // language detection for fenced blocks
+import { oneDark } from "@codemirror/theme-one-dark";
+import { syntaxHighlighting, HighlightStyle } from "@codemirror/language";
+import { useMantineColorScheme } from "@mantine/core";
+import { Prec } from "@codemirror/state";
+
+import { headingHighlight, headingLineClasses, headingLineTheme } from "./extensions/headings";
+import { codeBlockLineNumbers, codeBlockCopyButtons, fenceKeydownFallback } from "./extensions/fencedCode";
+import { liveLinkTheme, liveLinkHandlers, liveLinkKeybind } from "./extensions/liveLinks";
+import { hideMarkdownDelimiters } from "./extensions/emphasis"; // includes emphasis reveal & hiding
+import { myMarkdownKeymap } from "./keymap";
+
+export type MarkdownEditorProps = {
+ mode?: "live" | "source"; // live = Live Preview, source = Source Mode
+};
+
+export default function MarkdownEditor({ mode = "live" }: MarkdownEditorProps) {
+ const editorRef = useRef(null);
+ const { colorScheme } = useMantineColorScheme();
+
+ useEffect(() => {
+ if (!editorRef.current) return;
+
+ const extensions = [
+ basicSetup,
+ markdown({ base: markdownLanguage, codeLanguages: languages }),
+ codeBlockLineNumbers(),
+ codeBlockCopyButtons(),
+ colorScheme === "dark" ? oneDark : EditorView.theme({}, { dark: false }),
+ Prec.highest(keymap.of(myMarkdownKeymap)), // keybindings
+ fenceKeydownFallback(),
+ ];
+
+ if (mode === "live") {
+ // Visual Live Preview enhancements
+ extensions.push(
+ syntaxHighlighting(headingHighlight as HighlightStyle),
+ headingLineClasses,
+ headingLineTheme,
+ hideMarkdownDelimiters(), // hide emphasis marks, headers, and link delimiters when not editing them
+ liveLinkTheme,
+ liveLinkHandlers(),
+ Prec.highest(keymap.of([liveLinkKeybind]))
+ );
+ }
+
+ const view = new EditorView({
+ doc: "# Hello Markdown\n\n## Subtítulo\n\n```js\nconsole.log('Hola');\n```\n\n\n---\n\n\n[Google](https://google.com)\n\n\n- [x] Tarea completada",
+ extensions,
+ parent: editorRef.current,
+ });
+
+ return () => view.destroy();
+ }, [colorScheme, mode]);
+
+ return (
+
+ );
+}
diff --git a/frontend/src/editor/extensions/emphasis.ts b/frontend/src/editor/extensions/emphasis.ts
new file mode 100644
index 0000000..868b8af
--- /dev/null
+++ b/frontend/src/editor/extensions/emphasis.ts
@@ -0,0 +1,226 @@
+// Comments in English
+import { EditorView } from "@codemirror/view";
+import { EditorSelection, ChangeSet } from "@codemirror/state";
+import { syntaxTree } from "@codemirror/language";
+
+// ===== Selection helpers =====
+export function expandToWord(state: EditorView["state"], from: number, to: number) {
+ if (from !== to) return { from, to };
+ const line = state.doc.lineAt(from);
+ const text = line.text;
+ const re = /[^\s\[\]\(\)\*_~`]+/g;
+ let m: RegExpExecArray | null;
+ while ((m = re.exec(text))) {
+ const s = line.from + m.index;
+ const e = line.from + m.index + m[0].length;
+ if (s <= from && e >= from) return { from: s, to: e };
+ }
+ return { from, to };
+}
+
+// ===== Inline wrap / unwrap (idempotent) =====
+export function wrapOrUnwrapSegment(state: EditorView["state"], segFrom: number, segTo: number, targetWidth: 1 | 2) {
+ type Change = { from: number; to: number; insert: string };
+ const stars = "*".repeat(targetWidth);
+ const leftFrom = Math.max(0, segFrom - targetWidth);
+ const leftOk = segFrom >= targetWidth && state.doc.sliceString(leftFrom, segFrom) === stars;
+ const rightTo = Math.min(state.doc.length, segTo + targetWidth);
+ const rightOk = state.doc.sliceString(segTo, rightTo) === stars;
+ if (leftOk && rightOk) {
+ const changes: Change[] = [];
+ changes.push({ from: segTo, to: segTo + targetWidth, insert: "" });
+ changes.push({ from: segFrom - targetWidth, to: segFrom, insert: "" });
+ return changes;
+ }
+ return [
+ { from: segFrom, to: segFrom, insert: stars },
+ { from: segTo, to: segTo, insert: stars },
+ ];
+}
+
+export function wrapSelectionPerLine(state: EditorView["state"], from: number, to: number, targetWidth: 1 | 2) {
+ type Change = { from: number; to: number; insert: string };
+ const changes: Change[] = [];
+ const first = state.doc.lineAt(from);
+ const last = state.doc.lineAt(to);
+ for (let ln = first.number; ln <= last.number; ln++) {
+ const line = state.doc.line(ln);
+ if (ln === last.number && to === line.from) break;
+ const segFrom = Math.max(line.from, from);
+ const segTo = Math.min(line.to, to);
+ if (segFrom < segTo) changes.push(...wrapOrUnwrapSegment(state, segFrom, segTo, targetWidth));
+ }
+ return changes;
+}
+
+// ===== Emphasis syntax tree helpers =====
+function countStarsForward(state: EditorView["state"], pos: number, max = 3) {
+ let k = 0; const len = state.doc.length;
+ while (k < max && pos + k < len && state.doc.sliceString(pos + k, pos + k + 1) === "*") k++;
+ return k;
+}
+function countStarsBackward(state: EditorView["state"], pos: number, max = 3) {
+ let k = 0;
+ while (k < max && pos - 1 - k >= 0 && state.doc.sliceString(pos - 1 - k, pos - k) === "*") k++;
+ return k;
+}
+function findEnclosingEmphasisNode(state: EditorView["state"], from: number, to: number) {
+ const tree = syntaxTree(state);
+ let best: { from: number; to: number; name: string } | null = null;
+ const lo = Math.max(0, Math.min(from, to) - 1);
+ const hi = Math.min(state.doc.length, Math.max(from, to) + 1);
+ tree.iterate({ from: lo, to: hi, enter(n) {
+ if ((n.name === "Emphasis" || n.name === "StrongEmphasis") && n.from <= from && n.to >= to) {
+ if (!best || (n.to - n.from) < (best.to - best.from)) best = { from: n.from, to: n.to, name: n.name };
+ }
+ }});
+ return best;
+}
+function getEmphasisDelimiters(state: EditorView["state"], node: { from: number; to: number; name: string }) {
+ const openRun = countStarsForward(state, node.from, 3);
+ const closeRun = countStarsBackward(state, node.to, 3);
+ const width = Math.min(3, Math.min(openRun, closeRun)) as 1 | 2 | 3 | 0;
+ if (!width) return null;
+ return { openFrom: node.from, openTo: node.from + width, closeFrom: node.to - width, closeTo: node.to, width } as const;
+}
+export function emphasisMarksToReveal(state: EditorView["state"], sel: EditorSelection) {
+ const reveal = new Set();
+ for (const r of sel.ranges) {
+ const head = r.head;
+ const node = findEnclosingEmphasisNode(state, head, head);
+ if (!node) continue;
+ const delims = getEmphasisDelimiters(state, node);
+ if (!delims) continue;
+ reveal.add(`${delims.openFrom}:${delims.openTo}`);
+ reveal.add(`${delims.closeFrom}:${delims.closeTo}`);
+ }
+ return reveal;
+}
+
+// ===== Utilities =====
+function dedupChanges(changes: {from:number; to:number; insert:string}[]) {
+ const seen = new Set();
+ return changes.filter(c => { const k = `${c.from}:${c.to}:${c.insert}`; if (seen.has(k)) return false; seen.add(k); return true; });
+}
+
+// ===== Main toggle API =====
+export function toggleEmphasis(view: EditorView, targetWidth: 1|2) {
+ const { state } = view;
+ type Change = { from:number; to:number; insert:string };
+ const allChanges: Change[] = [];
+ const newRanges: {anchor:number; head:number}[] = [];
+ const hasAnySelection = state.selection.ranges.some(r => r.from !== r.to);
+
+ for (const r of state.selection.ranges) {
+ const from = r.from, to = r.to;
+ if (from !== to) {
+ allChanges.push(...wrapSelectionPerLine(state, from, to, targetWidth));
+ newRanges.push({ anchor: from, head: to });
+ continue;
+ }
+ if (hasAnySelection) { newRanges.push({ anchor: from, head: to }); continue; }
+ const expanded = expandToWord(state, from, to);
+ if (expanded.from !== expanded.to) {
+ allChanges.push(...wrapOrUnwrapSegment(state, expanded.from, expanded.to, targetWidth));
+ newRanges.push({ anchor: from, head: from });
+ } else {
+ const stars = "*".repeat(targetWidth*2);
+ allChanges.push({ from, to: from, insert: stars });
+ allChanges.push({ from: to, to: to, insert: stars });
+ newRanges.push({ anchor: from, head: from });
+ }
+ }
+
+ const changes = dedupChanges(allChanges).sort((a,b) => a.from - b.from || a.to - b.to);
+ if (!changes.length) return false;
+ const changeSet = ChangeSet.of(changes, state.doc.length);
+ const mappedSel = EditorSelection.create(newRanges.map(r => EditorSelection.range(changeSet.mapPos(r.anchor, 1), changeSet.mapPos(r.head, -1))));
+ view.dispatch({ changes, selection: mappedSel, userEvent: "input.toggleEmphasis" });
+ return true;
+}
+
+export const toggleBold = (view: EditorView) => toggleEmphasis(view, 2);
+export const toggleItalic = (view: EditorView) => toggleEmphasis(view, 1);
+
+// ===== Hide Markdown delimiters (live mode) =====
+import { ViewPlugin, Decoration, DecorationSet } from "@codemirror/view";
+import { RangeSetBuilder } from "@codemirror/state";
+import { syntaxTree as treeFn } from "@codemirror/language";
+import type { EditorSelection as ESel } from "@codemirror/state";
+import { selectionIntersects } from "../utils/selection";
+
+export function hideMarkdownDelimiters() {
+ return ViewPlugin.fromClass(class {
+ decorations: DecorationSet;
+ constructor(view: EditorView) { this.decorations = this.build(view); }
+ update(update: any) {
+ if (update.docChanged || update.selectionSet || update.viewportChanged) this.decorations = this.build(update.view);
+ }
+ build(view: EditorView) {
+ const builder = new RangeSetBuilder();
+ const tree = treeFn(view.state);
+ const sel = view.state.selection;
+ const revealSet = emphasisMarksToReveal(view.state, sel);
+ const { from, to } = view.viewport;
+ type PendingDeco = { from: number; to: number; deco: Decoration; priority: number };
+ const pending: PendingDeco[] = [];
+ const docLen = view.state.doc.length;
+
+ tree.iterate({ from, to, enter(node) {
+ if (node.name === "EmphasisMark" || node.name === "StrongMark" || node.name === "StrikethroughMark") {
+ const key = `${node.from}:${node.to}`;
+ const mustReveal = revealSet.has(key);
+ if (!selectionIntersects(sel, node.from, node.to) && !mustReveal) {
+ pending.push({ from: node.from, to: node.to, deco: Decoration.replace({}), priority: 0 });
+ }
+ return;
+ }
+ if (node.name === "HeaderMark") {
+ const line = view.state.doc.lineAt(node.from);
+ const cursorInLine = sel.ranges.some((r) => r.head >= line.from && r.head <= line.to);
+ if (!cursorInLine) {
+ let hideTo = node.to;
+ if (line.text[node.to - line.from] === " ") hideTo = node.to + 1;
+ const rf = Math.max(0, Math.min(node.from, docLen));
+ const rt = Math.max(0, Math.min(hideTo, docLen));
+ if (rf < rt) pending.push({ from: rf, to: rt, deco: Decoration.replace({ block: false }), priority: 0 });
+ }
+ }
+ if (node.name === "Link") {
+ const raw = view.state.doc.sliceString(node.from, node.to);
+ const ob = raw.indexOf("[");
+ const cb = raw.indexOf("]", ob + 1);
+ const op = raw.indexOf("(", cb + 1);
+ const cp = raw.indexOf(")", op + 1);
+ const shapeOk = ob !== -1 && cb !== -1 && op !== -1 && cp !== -1 && ob < cb && cb < op && op < cp;
+ if (!shapeOk) return;
+ const labelFrom = node.from + ob + 1;
+ const labelTo = node.from + cb;
+ const urlFrom = node.from + op + 1;
+ const urlTo = node.from + cp;
+ if (!(labelFrom < labelTo && urlFrom <= urlTo && node.from <= labelFrom && urlTo <= node.to)) return;
+ const url = view.state.doc.sliceString(urlFrom, urlTo);
+ const rf = Math.max(0, Math.min(urlFrom - 1, docLen));
+ const rt = Math.max(0, Math.min(urlTo + 1, docLen));
+ const selectionHitsLink = selectionIntersects(sel, node.from, node.to);
+ if (selectionHitsLink) return;
+ if (rf < rt && labelFrom < labelTo) {
+ pending.push({ from: rf, to: rt, deco: Decoration.replace({}), priority: 0 });
+ const lbOpen = labelFrom - 1;
+ const lbClose = labelTo;
+ if (lbOpen >= node.from && lbOpen < node.to) pending.push({ from: lbOpen, to: lbOpen + 1, deco: Decoration.replace({}), priority: 0 });
+ if (lbClose >= node.from && lbClose < node.to) pending.push({ from: lbClose, to: lbClose + 1, deco: Decoration.replace({}), priority: 0 });
+ pending.push({ from: labelFrom, to: labelTo, deco: Decoration.mark({ tagName: "a", attributes: { class: "cm-live-link", href: url, "data-url": url, role: "link", title: url } }), priority: 1 });
+ }
+ }
+ }});
+
+ pending.sort((a, b) => (a.from - b.from) || (a.priority - b.priority) || (a.to - b.to));
+ for (const p of pending) if (p.from < p.to) builder.add(p.from, p.to, p.deco);
+ return builder.finish();
+ }
+ }, { decorations: (v) => v.decorations });
+}
+
+// Export fence toggle here so keymap can import from a single place
+export { toggleFenceBlock } from "./fencedCode";
diff --git a/frontend/src/editor/extensions/fencedCode.ts b/frontend/src/editor/extensions/fencedCode.ts
new file mode 100644
index 0000000..e403494
--- /dev/null
+++ b/frontend/src/editor/extensions/fencedCode.ts
@@ -0,0 +1,176 @@
+// Comments in English
+import { EditorView, GutterMarker, ViewPlugin, Decoration, gutter, WidgetType } from "@codemirror/view";
+import { EditorSelection } from "@codemirror/state";
+import { syntaxTree } from "@codemirror/language";
+import type { Range } from "@codemirror/state";
+import { RangeSetBuilder } from "@codemirror/state";
+
+function fenceNodeAt(state: EditorView["state"], pos: number) {
+ const tree = syntaxTree(state);
+ let found: { from: number; to: number } | null = null;
+ tree.iterate({ from: pos, to: pos, enter(n) { if (n.name === "FencedCode" && n.from <= pos && n.to >= pos) found = { from: n.from, to: n.to }; }});
+ return found;
+}
+
+function fencedBlocksInSelection(state: EditorView["state"]) {
+ const blocks: Array<{from:number; to:number}> = [];
+ const seen = new Set();
+ for (const r of state.selection.ranges) {
+ const posList = [r.from, r.to, state.selection.main.head];
+ for (const p of posList) {
+ const n = fenceNodeAt(state, p);
+ if (n) { const key = `${n.from}:${n.to}`; if (!seen.has(key)) { seen.add(key); blocks.push(n); } }
+ }
+ }
+ if (!blocks.length) {
+ const tree = syntaxTree(state);
+ for (const r of state.selection.ranges) {
+ tree.iterate({ from: r.from, to: r.to, enter(n) { if (n.name === "FencedCode") { const key = `${n.from}:${n.to}`; if (!seen.has(key)) { seen.add(key); blocks.push({from:n.from,to:n.to}); } } }});
+ }
+ }
+ return blocks;
+}
+
+export function toggleFenceBlock(view: EditorView): boolean {
+ const { state } = view;
+ const blocks = fencedBlocksInSelection(state);
+ if (blocks.length) {
+ type Change = { from:number; to:number; insert:string };
+ const changes: Change[] = [];
+ for (const b of blocks) {
+ const openL = state.doc.lineAt(b.from);
+ const closeL = state.doc.lineAt(b.to);
+ const delOpenFrom = openL.from;
+ const delOpenTo = Math.min(openL.to + 1, state.doc.length);
+ changes.push({ from: delOpenFrom, to: delOpenTo, insert: "" });
+ const beforeClose = Math.max(0, closeL.from - 1);
+ const hasPrevNL = state.doc.sliceString(beforeClose, closeL.from) === "\n";
+ const delCloseFrom = hasPrevNL ? beforeClose : closeL.from;
+ const delCloseTo = closeL.to;
+ changes.push({ from: delCloseFrom, to: delCloseTo, insert: "" });
+ }
+ changes.sort((a,b) => (b.from - a.from) || (b.to - a.to));
+ view.dispatch({ changes, userEvent: "input.toggleFence" });
+ return true;
+ }
+
+ const tr = state.changeByRange(range => {
+ let from = range.from, to = range.to;
+ const doc = state.doc;
+ const selText = doc.sliceString(from, to);
+ const open = "```"; const close = "```";
+ if (from !== to) {
+ const insert = open + "\n" + selText + "\n" + close + "\n";
+ return { changes: { from, to, insert }, range: EditorSelection.cursor(from + open.length + 1) };
+ }
+ const line = doc.lineAt(from);
+ const onEmptyLine = line.text.trim().length === 0;
+ if (onEmptyLine) {
+ const insert = open + "\n\n" + close + "\n";
+ const start = line.from;
+ return { changes: { from: start, to: line.to, insert }, range: EditorSelection.cursor(start + open.length + 1) };
+ } else {
+ const insert = "\n" + open + "\n\n" + close + "\n";
+ const pos = line.to;
+ return { changes: { from: pos, to: pos, insert }, range: EditorSelection.cursor(pos + 1 + open.length + 1) };
+ }
+ });
+ if (tr.changes.empty) return false;
+ view.dispatch(tr);
+ return true;
+}
+
+// ---- Code block line numbers (gutter) ----
+export function codeBlockLineNumbers() {
+ class NumMarker extends GutterMarker { constructor(readonly n: number) { super(); } toDOM() { const el = document.createElement("div"); el.className = "cm-codeblock-lno"; el.textContent = String(this.n); return el; } }
+ function markers(view: EditorView) {
+ const b = new RangeSetBuilder();
+ const tree = syntaxTree(view.state);
+ const { from, to } = view.viewport;
+ tree.iterate({ from, to, enter(node) {
+ if (node.name === "FencedCode") {
+ const startLine = view.state.doc.lineAt(node.from);
+ const endLine = view.state.doc.lineAt(node.to);
+ let num = 0;
+ for (let i = startLine.number + 1; i <= endLine.number - 1; i++) {
+ num += 1; const line = view.state.doc.line(i); b.add(line.from, line.from, new NumMarker(num));
+ }
+ }
+ }});
+ return b.finish();
+ }
+ return [
+ gutter({ class: "cm-codeblock-gutter", markers, lineMarkerChange(update) { return update.docChanged || update.viewportChanged; } }),
+ EditorView.theme({
+ ".cm-gutters": { userSelect: "none" },
+ ".cm-codeblock-gutter": { width: "3ch" },
+ ".cm-codeblock-gutter .cm-codeblock-lno": { textAlign: "right", paddingRight: "0.5ch", opacity: 0.7, fontVariantNumeric: "tabular-nums" }
+ })
+ ];
+}
+
+// ---- Copy button per fenced block ----
+export function codeBlockCopyButtons() {
+ class CopyBtnWidget extends WidgetType {
+ constructor(readonly from: number, readonly to: number) { super(); }
+ eq(other: CopyBtnWidget) { return this.from === other.from && this.to === other.to; }
+ toDOM(view: EditorView) {
+ const btn = document.createElement("button");
+ btn.className = "cm-codeblock-copybtn";
+ btn.type = "button";
+ btn.title = "Copiar código";
+ btn.textContent = "⧉";
+ btn.onclick = async (e) => {
+ e.preventDefault();
+ const doc = view.state.doc;
+ const startL = doc.lineAt(this.from);
+ const endL = doc.lineAt(this.to);
+ const startInner = startL.to + 1;
+ const endInner = endL.from - 1;
+ const code = doc.sliceString(startInner, endInner);
+ try { await navigator.clipboard.writeText(code); } catch {}
+ };
+ return btn;
+ }
+ ignoreEvent() { return false; }
+ }
+
+ const plugin = ViewPlugin.fromClass(class {
+ decorations: DecorationSet;
+ constructor(view: EditorView) { this.decorations = this.build(view); }
+ update(u: any) { if (u.docChanged || u.viewportChanged) this.decorations = this.build(u.view); }
+ build(view: EditorView) {
+ const decos: Range[] = [];
+ const tree = syntaxTree(view.state);
+ const { from, to } = view.viewport;
+ tree.iterate({ from, to, enter(node) {
+ if (node.name === "FencedCode") {
+ const line = view.state.doc.lineAt(node.from);
+ decos.push(Decoration.widget({ widget: new CopyBtnWidget(node.from, node.to), side: 1 }).range(line.to));
+ }
+ }});
+ return Decoration.set(decos, true);
+ }
+ }, { decorations: (v) => v.decorations });
+
+ const theme = EditorView.theme({
+ ".cm-line": { position: "relative" },
+ ".cm-codeblock-copybtn": { position: "absolute", right: "0.25rem", top: "0.15rem", fontSize: "0.8rem", padding: "0.1rem 0.3rem", border: "none", borderRadius: "4px", cursor: "pointer", opacity: 0.7 },
+ ".cm-codeblock-copybtn:hover": { opacity: 1 }
+ });
+
+ return [plugin, theme];
+}
+
+// ---- Fallback DOM for Mod+` ----
+export function fenceKeydownFallback() {
+ return EditorView.domEventHandlers({
+ keydown(event, view) {
+ const isMod = event.metaKey || event.ctrlKey; if (!isMod) return false;
+ const k = (event as KeyboardEvent).key; const looksLikeBacktick = (k === "`" || k === "Dead");
+ if (looksLikeBacktick) { event.preventDefault(); event.stopPropagation(); return toggleFenceBlock(view as EditorView); }
+ if (event.altKey && !event.shiftKey && (k.toLowerCase?.() === 'c')) { event.preventDefault(); event.stopPropagation(); return toggleFenceBlock(view as EditorView); }
+ return false;
+ }
+ });
+}
diff --git a/frontend/src/editor/extensions/headings.ts b/frontend/src/editor/extensions/headings.ts
new file mode 100644
index 0000000..c353329
--- /dev/null
+++ b/frontend/src/editor/extensions/headings.ts
@@ -0,0 +1,65 @@
+// Comments in English
+import { HighlightStyle } from "@codemirror/language";
+import { tags } from "@lezer/highlight";
+import { Decoration, DecorationSet, EditorView, ViewPlugin } from "@codemirror/view";
+import type { Range } from "@codemirror/state";
+import { RangeSetBuilder } from "@codemirror/state";
+import { syntaxTree } from "@codemirror/language";
+
+export const headingHighlight = HighlightStyle.define([
+ { tag: tags.heading1, fontSize: "1.8rem", fontWeight: "700" },
+ { tag: tags.heading2, fontSize: "1.5rem", fontWeight: "700" },
+ { tag: tags.heading3, fontSize: "1.3rem", fontWeight: "600" },
+ { tag: tags.heading4, fontSize: "1.1rem", fontWeight: "600" },
+ { tag: tags.heading5, fontSize: "1rem", fontWeight: "600" },
+ { tag: tags.heading6, fontSize: "0.9rem", fontWeight: "600" },
+]);
+
+export const headingLineClasses = ViewPlugin.fromClass(
+ class {
+ decorations: DecorationSet;
+ constructor(view: EditorView) { this.decorations = this.compute(view); }
+ update(update: any) {
+ if (update.docChanged || update.viewportChanged) this.decorations = this.compute(update.view);
+ }
+ compute(view: EditorView) {
+ const decos: Range[] = [];
+ const tree = syntaxTree(view.state);
+ const { from, to } = view.viewport;
+ tree.iterate({
+ from, to,
+ enter: (node) => {
+ if (node.name === "ATXHeading") {
+ const line = view.state.doc.lineAt(node.from);
+ const match = /^#{1,6}\s/.exec(line.text);
+ const level = match ? match[0].trim().length : 1;
+ const cls = level === 1 ? "cm-h1-line" :
+ level === 2 ? "cm-h2-line" :
+ level === 3 ? "cm-h3-line" :
+ level === 4 ? "cm-h4-line" :
+ level === 5 ? "cm-h5-line" :
+ level === 6 ? "cm-h6-line" : null;
+ if (cls) {
+ decos.push(Decoration.line({ attributes: { class: cls } }).range(line.from, line.from));
+ }
+ }
+ }
+ });
+ return Decoration.set(decos, true);
+ }
+ },
+ { decorations: (v: any) => v.decorations }
+);
+
+export const headingLineTheme = EditorView.theme({
+ ".cm-h1-line": { lineHeight: "2.4rem", paddingTop: "0.35rem", paddingBottom: "0.15rem" },
+ ".cm-h2-line": { lineHeight: "2.0rem", paddingTop: "0.25rem", paddingBottom: "0.1rem" },
+ ".cm-h3-line": { lineHeight: "1.8rem", paddingTop: "0.2rem", paddingBottom: "0.1rem" },
+ ".cm-h4-line": { lineHeight: "1.6rem", paddingTop: "0.15rem", paddingBottom: "0.1rem" },
+ ".cm-h5-line": { lineHeight: "1.4rem", paddingTop: "0.1rem", paddingBottom: "0.05rem" },
+ ".cm-h6-line": { lineHeight: "1.2rem", paddingTop: "0.05rem", paddingBottom: "0.05rem" },
+ ".cm-strong": { fontWeight: "bold" },
+ ".cm-emphasis": { fontStyle: "italic" },
+ ".cm-link": { textDecoration: "underline" },
+ ".cm-strikethrough": { textDecoration: "line-through" },
+});
diff --git a/frontend/src/editor/extensions/liveLinks.ts b/frontend/src/editor/extensions/liveLinks.ts
new file mode 100644
index 0000000..523c57d
--- /dev/null
+++ b/frontend/src/editor/extensions/liveLinks.ts
@@ -0,0 +1,59 @@
+// Comments in English
+import { EditorView } from "@codemirror/view";
+import { syntaxTree } from "@codemirror/language";
+import { Decoration } from "@codemirror/view";
+import { selectionIntersects } from "../utils/selection";
+
+export const liveLinkTheme = EditorView.theme({
+ ".cm-live-link": {
+ color: "#3b82f6",
+ textDecoration: "underline",
+ cursor: "pointer",
+ userSelect: "text",
+ },
+});
+
+export function openExternal(url: string) {
+ try { const u = new URL(url, window.location.href); window.open(u.href, "_blank", "noopener"); } catch {}
+}
+
+export function liveLinkHandlers() {
+ return EditorView.domEventHandlers({
+ mousedown(event, view) {
+ const target = event.target as HTMLElement | null;
+ const linkEl = target?.closest?.(".cm-live-link") as HTMLElement | null;
+ if (!linkEl) return false;
+ const pos = (view as EditorView).posAtDOM(linkEl, 0);
+ const info = linkAt(view as EditorView, pos);
+ if (!info) return false;
+ if (selectionIntersects((view as EditorView).state.selection, info.from, info.to)) return false;
+ const url = linkEl.getAttribute("data-url");
+ if (!url) return false;
+ if (event.button === 0) { event.preventDefault(); event.stopPropagation(); openExternal(url); return true; }
+ return false;
+ }
+ });
+}
+
+export const liveLinkKeybind = {
+ key: "Mod-Enter",
+ run(view: EditorView) {
+ const pos = view.state.selection.main.head;
+ const info = linkAt(view, pos);
+ if (info && info.url) { openExternal(info.url); return true; }
+ return false;
+ },
+};
+
+export function linkAt(view: EditorView, pos: number): { from: number; to: number; url: string } | null {
+ const state = view.state; const tree = syntaxTree(state);
+ let found: { from: number; to: number } | null = null;
+ tree.iterate({ from: pos, to: pos, enter(n) { if (n.name === "Link" && n.from <= pos && n.to >= pos) found = { from: n.from, to: n.to }; }});
+ if (!found) return null;
+ const raw = state.doc.sliceString(found.from, found.to);
+ const ob = raw.indexOf("["); const cb = raw.indexOf("]", ob + 1); const op = raw.indexOf("(", cb + 1); const cp = raw.indexOf(")", op + 1);
+ if (ob === -1 || cb === -1 || op === -1 || cp === -1) return null;
+ const urlFrom = found.from + op + 1; const urlTo = found.from + cp;
+ const url = state.doc.sliceString(urlFrom, urlTo);
+ return { from: found.from, to: found.to, url };
+}
diff --git a/frontend/src/editor/keymap.ts b/frontend/src/editor/keymap.ts
new file mode 100644
index 0000000..2c7eabd
--- /dev/null
+++ b/frontend/src/editor/keymap.ts
@@ -0,0 +1,18 @@
+// Comments in English
+import { redo } from "@codemirror/commands";
+import { toggleBold, toggleItalic, toggleFenceBlock } from "./extensions/emphasis";
+
+export const myMarkdownKeymap = [
+ // Bold / Italic
+ { key: "Mod-b", preventDefault: true, run: toggleBold },
+ { key: "Mod-i", preventDefault: true, run: toggleItalic },
+
+ // Redo
+ { key: "Mod-Shift-z", preventDefault: true, run: redo },
+ { key: "Mod-y", preventDefault: true, run: redo },
+
+ // Fenced code block toggle
+ { key: "Mod-`", preventDefault: true, run: toggleFenceBlock },
+ { key: "Mod-Shift-`", preventDefault: true, run: toggleFenceBlock },
+ { key: "Mod-Alt-c", preventDefault: true, run: toggleFenceBlock },
+] as const;
diff --git a/frontend/src/editor/utils/selection.ts b/frontend/src/editor/utils/selection.ts
new file mode 100644
index 0000000..fff9ae7
--- /dev/null
+++ b/frontend/src/editor/utils/selection.ts
@@ -0,0 +1,6 @@
+// Comments in English
+import type { EditorSelection } from "@codemirror/state";
+export function selectionIntersects(sel: EditorSelection, from: number, to: number) {
+ for (const r of sel.ranges) if (r.from <= to && r.to >= from) return true;
+ return false;
+}
diff --git a/frontend/src/pages/Home.page.tsx b/frontend/src/pages/Home.page.tsx
index fe9fe50..239a602 100644
--- a/frontend/src/pages/Home.page.tsx
+++ b/frontend/src/pages/Home.page.tsx
@@ -1,34 +1,11 @@
-// src/pages/HomePage.tsx
-import React, { useState } from "react";
-import { Container, Title, Paper } from "@mantine/core";
-import {
- MDXEditor,
- toolbarPlugin,
- headingsPlugin,
- listsPlugin,
- quotePlugin,
- markdownShortcutPlugin,
-} from "@mdxeditor/editor";
-import "@mdxeditor/editor/style.css";
+import MarkdownEditor from "@/editor/MarkdownEditor";
export function HomePage() {
- const [markdown, setMarkdown] = useState("");
-
return (
-
-
-
-
+ <>
+
+ {/* o para source mode: */}
+ {/* */}
+ >
);
-}
+}
\ No newline at end of file
diff --git a/frontend/src/pages/editor.page.tsx b/frontend/src/pages/editor.page.tsx
new file mode 100644
index 0000000..92358f4
--- /dev/null
+++ b/frontend/src/pages/editor.page.tsx
@@ -0,0 +1,1009 @@
+"use client";
+
+import React from "react";
+import { EditorView, basicSetup } from "codemirror";
+import { markdown, markdownLanguage, markdownKeymap } from "@codemirror/lang-markdown";
+import { languages } from "@codemirror/language-data"; // soporta detección de lenguajes en bloques ```js, ```python, etc.
+import { oneDark } from "@codemirror/theme-one-dark";
+import { useEffect, useRef } from "react";
+import { useMantineColorScheme } from "@mantine/core";
+import { HighlightStyle, syntaxHighlighting, syntaxTree } from "@codemirror/language";
+import { redo } from "@codemirror/commands";
+import { tags } from "@lezer/highlight";
+import { Decoration, DecorationSet, ViewPlugin, WidgetType, gutter, GutterMarker, keymap } from "@codemirror/view";
+// Remove duplicate EditorView import
+import type { Range } from "@codemirror/state";
+import { RangeSetBuilder } from "@codemirror/state";
+import { Prec } from "@codemirror/state";
+import { EditorSelection } from "@codemirror/state";
+import { ChangeSet } from "@codemirror/state";
+
+// 1) Resaltado de tokens (tamaño/color de texto del encabezado)
+const headingHighlight = HighlightStyle.define([
+ { tag: tags.heading1, fontSize: "1.8rem", fontWeight: "700" },
+ { tag: tags.heading2, fontSize: "1.5rem", fontWeight: "700" },
+ { tag: tags.heading3, fontSize: "1.3rem", fontWeight: "600" },
+ { tag: tags.heading4, fontSize: "1.1rem", fontWeight: "600" },
+ { tag: tags.heading5, fontSize: "1rem", fontWeight: "600" },
+ { tag: tags.heading6, fontSize: "0.9rem", fontWeight: "600" },
+]);
+
+// 2) Decoraciones de LÍNEA para aumentar altura real de la fila cuando hay heading
+const headingLineClasses = ViewPlugin.fromClass(
+ class {
+ decorations: DecorationSet;
+ constructor(view: EditorView) {
+ this.decorations = this.compute(view);
+ }
+ update(update: { docChanged: boolean; viewportChanged: boolean; view: EditorView }) {
+ if (update.docChanged || update.viewportChanged) {
+ this.decorations = this.compute(update.view);
+ }
+ }
+ compute(view: EditorView) {
+ const decos: Range[] = [];
+ const tree = syntaxTree(view.state);
+ const { from, to } = view.viewport; // solo lo visible (eficiente)
+ tree.iterate({
+ from,
+ to,
+ enter: (node) => {
+ // ATXHeading es el nodo para #, ##, ### ... en lang-markdown
+ if (node.name === "ATXHeading") {
+ // child "HeaderMark" usa #; nivel = cantidad de #
+ // contamos '#' iniciales para nivel
+ const line = view.state.doc.lineAt(node.from);
+ const match = /^#{1,6}\s/.exec(line.text);
+ const level = match ? match[0].trim().length : 1;
+ let cls: string | null = null;
+ if (level === 1) cls = "cm-h1-line";
+ else if (level === 2) cls = "cm-h2-line";
+ else if (level === 3) cls = "cm-h3-line";
+ else if (level === 4) cls = "cm-h4-line";
+ else if (level === 5) cls = "cm-h5-line";
+ else if (level === 6) cls = "cm-h6-line";
+ if (cls) {
+ decos.push(
+ Decoration.line({ attributes: { class: cls } }).range(line.from, line.from)
+ );
+ }
+ }
+ },
+ });
+ return Decoration.set(decos, true);
+ }
+ },
+ { decorations: (v: any) => v.decorations }
+);
+
+// 3) Tema para las CLASES de línea (aquí crece la fila)
+const headingLineTheme = EditorView.theme({
+ ".cm-h1-line": {
+ lineHeight: "2.4rem",
+ paddingTop: "0.35rem",
+ paddingBottom: "0.15rem",
+ },
+ ".cm-h2-line": {
+ lineHeight: "2.0rem",
+ paddingTop: "0.25rem",
+ paddingBottom: "0.1rem",
+ },
+ ".cm-h3-line": {
+ lineHeight: "1.8rem",
+ paddingTop: "0.2rem",
+ paddingBottom: "0.1rem",
+ },
+ ".cm-h4-line": {
+ lineHeight: "1.6rem",
+ paddingTop: "0.15rem",
+ paddingBottom: "0.1rem",
+ },
+ ".cm-h5-line": {
+ lineHeight: "1.4rem",
+ paddingTop: "0.1rem",
+ paddingBottom: "0.05rem",
+ },
+ ".cm-h6-line": {
+ lineHeight: "1.2rem",
+ paddingTop: "0.05rem",
+ paddingBottom: "0.05rem",
+ },
+ // Puedes mantener tus estilos de inline si quieres:
+ ".cm-strong": { fontWeight: "bold" },
+ ".cm-emphasis": { fontStyle: "italic" },
+ ".cm-link": { textDecoration: "underline" },
+ ".cm-strikethrough": { textDecoration: "line-through" }
+});
+
+/** ================== KEYMAP: BOLD/ITALIC/REDO ================== **/
+// Utils comunes
+function expandToWord(state: EditorView["state"], from: number, to: number) {
+ if (from !== to) return { from, to };
+ const line = state.doc.lineAt(from);
+ const text = line.text;
+ const re = /[^\s\[\]\(\)\*\_~`]+/g;
+ let m: RegExpExecArray | null;
+ while ((m = re.exec(text))) {
+ const s = line.from + m.index;
+ const e = line.from + m.index + m[0].length;
+ if (s <= from && e >= from) return { from: s, to: e };
+ }
+ return { from, to };
+}
+
+/** ===== Line-wise wrapping helpers (no selection movement) ===== **/
+// Wrap or unwrap exactly the [segFrom, segTo) slice on a single line (idempotente).
+// Regla simple y reversible:
+// - Si HAY exactamente targetWidth asteriscos pegados a izquierda y derecha ⇒ QUITAR esos asteriscos.
+// - En caso contrario ⇒ INSERTAR targetWidth asteriscos a cada lado.
+function wrapOrUnwrapSegment(
+ state: EditorView["state"],
+ segFrom: number,
+ segTo: number,
+ targetWidth: 1 | 2
+) {
+ type Change = { from: number; to: number; insert: string };
+ const stars = "*".repeat(targetWidth);
+ const leftFrom = Math.max(0, segFrom - targetWidth);
+ const leftOk = segFrom >= targetWidth && state.doc.sliceString(leftFrom, segFrom) === stars;
+ const rightTo = Math.min(state.doc.length, segTo + targetWidth);
+ const rightOk = state.doc.sliceString(segTo, rightTo) === stars;
+ if (leftOk && rightOk) {
+ const changes: Change[] = [];
+ // Quitar primero el cierre, luego la apertura (para no desplazar índices del segundo borrado).
+ changes.push({ from: segTo, to: segTo + targetWidth, insert: "" });
+ changes.push({ from: segFrom - targetWidth, to: segFrom, insert: "" });
+ return changes;
+ }
+ return [
+ { from: segFrom, to: segFrom, insert: stars },
+ { from: segTo, to: segTo, insert: stars },
+ ];
+}
+
+// Apply per-line wrap/unwrap across a possibly multi-line selection.
+// This never moves the selection; we always remap the original [from, to].
+function wrapSelectionPerLine(
+ state: EditorView["state"],
+ from: number,
+ to: number,
+ targetWidth: 1 | 2
+) {
+ type Change = { from: number; to: number; insert: string };
+ const changes: Change[] = [];
+ const first = state.doc.lineAt(from);
+ const last = state.doc.lineAt(to);
+
+ for (let ln = first.number; ln <= last.number; ln++) {
+ const line = state.doc.line(ln);
+ // If selection ends exactly at the start of this line (common when selecting full lines),
+ // skip this line to avoid a zero-length tail segment.
+ if (ln === last.number && to === line.from) break;
+
+ const segFrom = Math.max(line.from, from);
+ const segTo = Math.min(line.to, to);
+ if (segFrom < segTo) {
+ changes.push(...wrapOrUnwrapSegment(state, segFrom, segTo, targetWidth));
+ }
+ }
+ return changes;
+}
+
+/** ========= Emphasis helpers based on the syntax tree (multi-line safe) ========= **/
+type EmphasisDelims = {
+ openFrom: number; openTo: number;
+ closeFrom: number; closeTo: number;
+ width: 1 | 2 | 3;
+};
+
+// Count asterisks '*' forward from pos (up to max)
+function countStarsForward(state: EditorView["state"], pos: number, max = 3) {
+ let k = 0;
+ const len = state.doc.length;
+ while (k < max && pos + k < len && state.doc.sliceString(pos + k, pos + k + 1) === "*") k++;
+ return k;
+}
+
+// Count asterisks '*' backward from pos-1 (up to max)
+function countStarsBackward(state: EditorView["state"], pos: number, max = 3) {
+ let k = 0;
+ while (k < max && pos - 1 - k >= 0 && state.doc.sliceString(pos - 1 - k, pos - k) === "*") k++;
+ return k;
+}
+
+// Find the smallest Emphasis/StrongEmphasis node that fully contains [from, to]
+function findEnclosingEmphasisNode(state: EditorView["state"], from: number, to: number) {
+ const tree = syntaxTree(state);
+ let best: { from: number; to: number; name: string } | null = null;
+ const lo = Math.max(0, Math.min(from, to) - 1);
+ const hi = Math.min(state.doc.length, Math.max(from, to) + 1);
+ tree.iterate({
+ from: lo, to: hi,
+ enter(n) {
+ if ((n.name === "Emphasis" || n.name === "StrongEmphasis") && n.from <= from && n.to >= to) {
+ if (!best || (n.to - n.from) < (best.to - best.from)) best = { from: n.from, to: n.to, name: n.name };
+ }
+ }
+ });
+ return best;
+}
+
+// Compute delimiter ranges and width for an Emphasis/StrongEmphasis node
+function getEmphasisDelimiters(state: EditorView["state"], node: { from: number; to: number; name: string }): EmphasisDelims | null {
+ // We only support '*' markers in this toggle (consistent with previous behavior)
+ const openRun = countStarsForward(state, node.from, 3);
+ const closeRun = countStarsBackward(state, node.to, 3);
+ const width = Math.min(3, Math.min(openRun, closeRun)) as 1 | 2 | 3 | 0;
+ if (!width) return null;
+ return {
+ openFrom: node.from,
+ openTo: node.from + width,
+ closeFrom: node.to - width,
+ closeTo: node.to,
+ width
+ };
+}
+
+// === NUEVO: cuando el cursor está sobre la marca de apertura/cierre,
+// revela (no oculta) ambas marcas del par ===
+function emphasisMarksToReveal(state: EditorView["state"], sel: EditorSelection): Set {
+ const reveal = new Set();
+ // For each caret, reveal both sides of the enclosing emphasis node (if any)
+ for (const r of sel.ranges) {
+ const head = r.head;
+ const node = findEnclosingEmphasisNode(state, head, head);
+ if (!node) continue;
+ const delims = getEmphasisDelimiters(state, node);
+ if (!delims) continue;
+ reveal.add(`${delims.openFrom}:${delims.openTo}`);
+ reveal.add(`${delims.closeFrom}:${delims.closeTo}`);
+ }
+ return reveal;
+}
+
+// Pequeña utilidad para desduplicar cambios idénticos cuando hay multi-selección
+function dedupChanges(changes: {from:number; to:number; insert:string}[]) {
+ const seen = new Set();
+ return changes.filter(c => {
+ const k = `${c.from}:${c.to}:${c.insert}`;
+ if (seen.has(k)) return false; seen.add(k); return true;
+ });
+}
+
+// Normaliza toggles evitando duplicados y apilamientos
+// targetWidth: 1(italic) | 2(bold)
+function toggleEmphasis(view: EditorView, targetWidth: 1|2) {
+ const { state } = view;
+ const stars = "*".repeat(targetWidth);
+
+ // 1) Construimos todos los cambios en un solo arreglo (evita duplicaciones entre rangos)
+ type Change = { from:number; to:number; insert:string };
+ const allChanges: Change[] = [];
+ const newRanges: {anchor:number; head:number}[] = [];
+
+ // Si hay AL MENOS un rango no vacío, tratamos todos los no-vacíos por líneas; los vacíos se conservan tal cual
+ const hasAnySelection = state.selection.ranges.some(r => r.from !== r.to);
+
+ for (const r of state.selection.ranges) {
+ const from = r.from, to = r.to;
+
+ if (from !== to) {
+ // Multi-línea / selección: aplicar por líneas (idempotente) sin mover la selección
+ allChanges.push(...wrapSelectionPerLine(state, from, to, targetWidth));
+ newRanges.push({ anchor: from, head: to });
+ continue;
+ }
+
+ if (hasAnySelection) {
+ // Si hay otras selecciones activas, respetamos este caret sin hacer nada (evitamos doble toques)
+ newRanges.push({ anchor: from, head: to });
+ continue;
+ }
+
+ // === Case C: Caret only ===
+ {
+ const expanded = expandToWord(state, from, to);
+ // a) Caret sobre palabra -> mantener atajo de envolver/desenvolver ese segmento
+ if (expanded.from !== expanded.to) {
+ allChanges.push(
+ ...wrapOrUnwrapSegment(state, expanded.from, expanded.to, targetWidth)
+ );
+ // Mantener el caret donde estaba
+ newRanges.push({ anchor: from, head: from });
+ continue;
+ }
+ // b) Hueco (sin palabra): SOLO insertar * o ** alrededor y NO mover el caret
+ {
+ const stars = "*".repeat(targetWidth*2);
+ allChanges.push({ from, to: from, insert: stars });
+ allChanges.push({ from: to, to: to, insert: stars });
+ // Caret permanece exactamente en la misma posición (sin selección)
+ newRanges.push({ anchor: from, head: from });
+ continue;
+ }
+ }
+ }
+
+ const changes = dedupChanges(allChanges).sort((a,b) => a.from - b.from || a.to - b.to);
+ if (!changes.length) return false;
+
+ // 2) Aplicamos en una sola transacción y mapeamos las selecciones originales
+ const changeSet = ChangeSet.of(changes, state.doc.length);
+ const mappedSel = EditorSelection.create(
+ newRanges.map(r => EditorSelection.range(
+ changeSet.mapPos(r.anchor, 1),
+ changeSet.mapPos(r.head, -1)
+ ))
+ );
+
+ view.dispatch({
+ changes,
+ selection: mappedSel,
+ userEvent: "input.toggleEmphasis"
+ });
+ return true;
+}
+
+// Ctrl/Cmd + B → toggle bold in Markdown (**)
+const toggleBold = (view: EditorView) => toggleEmphasis(view, 2);
+
+// ---------- Helpers FencedCode ----------
+function fenceNodeAt(state: EditorView["state"], pos: number) {
+ const tree = syntaxTree(state);
+ let found: { from: number; to: number } | null = null;
+ tree.iterate({
+ from: pos, to: pos,
+ enter(n) {
+ if (n.name === "FencedCode" && n.from <= pos && n.to >= pos) {
+ found = { from: n.from, to: n.to };
+ }
+ }
+ });
+ return found;
+}
+
+// Devuelve todos los bloques FencedCode que intersectan la selección actual
+function fencedBlocksInSelection(state: EditorView["state"]) {
+ const blocks: Array<{from:number; to:number}> = [];
+ const seen = new Set();
+ for (const r of state.selection.ranges) {
+ const posList = [r.from, r.to, state.selection.main.head];
+ for (const p of posList) {
+ const n = fenceNodeAt(state, p);
+ if (n) {
+ const key = `${n.from}:${n.to}`;
+ if (!seen.has(key)) { seen.add(key); blocks.push(n); }
+ }
+ }
+ }
+ // Si no encontró nada con cabezas, probar por intersección de cada rango con el árbol (viewport podría limitar)
+ if (!blocks.length) {
+ const tree = syntaxTree(state);
+ for (const r of state.selection.ranges) {
+ tree.iterate({
+ from: r.from, to: r.to,
+ enter(n) {
+ if (n.name === "FencedCode") {
+ const key = `${n.from}:${n.to}`;
+ if (!seen.has(key)) { seen.add(key); blocks.push({from:n.from,to:n.to}); }
+ }
+ }
+ });
+ }
+ }
+ return blocks;
+}
+
+// Toggle fenced block: si estás dentro de un bloque, lo DESENVUELVE; si no, inserta.
+function toggleFenceBlock(view: EditorView): boolean {
+ const { state } = view;
+ const blocks = fencedBlocksInSelection(state);
+
+ // 1) Si hay uno o más bloques en/atravesando la selección → quitar vallas, mantener contenido
+ if (blocks.length) {
+ type Change = { from:number; to:number; insert:string };
+ const changes: Change[] = [];
+ for (const b of blocks) {
+ const openL = state.doc.lineAt(b.from); // línea con ```
+ const closeL = state.doc.lineAt(b.to); // línea con ``` de cierre
+ // Quitar línea de apertura + salto de línea siguiente
+ const delOpenFrom = openL.from;
+ const delOpenTo = Math.min(openL.to + 1, state.doc.length); // incluye salto si existe
+ changes.push({ from: delOpenFrom, to: delOpenTo, insert: "" });
+ // Quitar línea de cierre (y el salto anterior si existe)
+ // Si el carácter anterior a closeL.from es \n, elimínalo para no dejar líneas vacías dobles
+ const beforeClose = Math.max(0, closeL.from - 1);
+ const hasPrevNL = state.doc.sliceString(beforeClose, closeL.from) === "\n";
+ const delCloseFrom = hasPrevNL ? beforeClose : closeL.from;
+ const delCloseTo = closeL.to;
+ changes.push({ from: delCloseFrom, to: delCloseTo, insert: "" });
+ }
+ // Importante: ordenar DESC para que los índices no se invaliden
+ changes.sort((a,b) => (b.from - a.from) || (b.to - a.to));
+ view.dispatch({ changes, userEvent: "input.toggleFence" });
+ return true;
+ }
+
+ // 2) Si no hay bloque → insertar uno nuevo (comportamiento anterior)
+ const tr = state.changeByRange(range => {
+ let from = range.from, to = range.to;
+ const doc = state.doc;
+ const selText = doc.sliceString(from, to);
+
+ // Plantilla del fence
+ const open = "```";
+ const close = "```";
+
+ // Caso 1: hay selección -> envolverla
+ if (from !== to) {
+ const insert =
+ open + "\n" +
+ selText +
+ "\n" + close + "\n";
+ return {
+ changes: { from, to, insert },
+ range: EditorSelection.cursor(from + open.length + 1) // dentro del bloque, al principio
+ };
+ }
+
+ // Caso 2: sin selección
+ const line = doc.lineAt(from);
+ const onEmptyLine = line.text.trim().length === 0;
+
+ if (onEmptyLine) {
+ // Sustituir línea vacía por bloque
+ const insert = open + "\n\n" + close + "\n";
+ // Colocar cursor en la línea intermedia
+ const start = line.from;
+ return {
+ changes: { from: start, to: line.to, insert },
+ range: EditorSelection.cursor(start + open.length + 1) // después de "```" y salto
+ };
+ } else {
+ // Insertar bloque debajo de la línea actual
+ const insert = "\n" + open + "\n\n" + close + "\n";
+ const pos = line.to;
+ return {
+ changes: { from: pos, to: pos, insert },
+ range: EditorSelection.cursor(pos + 1 + open.length + 1) // inicia dentro del bloque
+ };
+ }
+ });
+ if (tr.changes.empty) return false;
+ view.dispatch(tr);
+ return true;
+}
+
+// Custom keymap (give it highest precedence to override defaults if needed)
+// Inserta un bloque fenced ```...``` (Alt + `)
+const myMarkdownKeymap = keymap.of([
+ // Bold: Ctrl/⌘ + B
+ { key: "Mod-b", preventDefault: true, run: toggleBold },
+ // Italic: Ctrl/⌘ + I (usa la misma normalización)
+ { key: "Mod-i", preventDefault: true, run: (v) => toggleEmphasis(v, 1) },
+ // Redo: Ctrl/⌘ + Shift + Z (also common: Ctrl/⌘ + Y)
+ { key: "Mod-Shift-z", preventDefault: true, run: redo },
+ { key: "Mod-y", preventDefault: true, run: redo },
+ // Code block toggle: Mod + ` (Ctrl en Win/Linux, Cmd en macOS)
+ { key: "Mod-`", preventDefault: true, run: toggleFenceBlock },
+ // Fallbacks por si la tecla ` es "dead key" en tu layout:
+ { key: "Mod-Shift-`", preventDefault: true, run: toggleFenceBlock },
+ { key: "Mod-Alt-c", preventDefault: true, run: toggleFenceBlock },
+]);
+
+type MarkdownEditorProps = {
+ mode?: "live" | "source"; // live = Live Preview, source = Source Mode
+};
+
+export default function MarkdownEditor({ mode = "live" }: MarkdownEditorProps) {
+ const editorRef = useRef(null);
+ const { colorScheme } = useMantineColorScheme();
+
+ useEffect(() => {
+ if (!editorRef.current) return;
+
+ const extensions = [
+ basicSetup,
+ markdown({ base: markdownLanguage, codeLanguages: languages }),
+ codeBlockLineNumbers(), // 👉 Gutter de numeración SOLO dentro de bloques ``` ```
+ codeBlockCopyButtons(), // 👉 Botón "Copiar" para cada bloque de código
+ colorScheme === "dark" ? oneDark : EditorView.theme({}, { dark: false }),
+ Prec.highest(myMarkdownKeymap), // keybindings (bold/italic/redo/fence)
+ fenceKeydownFallback(), // captura DOM por si ` es dead key (toggle)
+ ];
+
+ if (mode === "live") {
+ // Solo en LIVE: estilos visuales que alteran tamaño/alto de encabezados
+ extensions.push(
+ syntaxHighlighting(headingHighlight),
+ headingLineClasses,
+ headingLineTheme,
+ );
+ extensions.push(
+ hideMarkdownDelimiters(),
+ liveLinkTheme,
+ liveLinkHandlers(), // 👉 abrir con ratón (mousedown)
+ Prec.highest(keymap.of([liveLinkKeybind])) // 👉 Ctrl/⌘ + Enter con máxima precedencia
+ ); // 👉 Live Preview
+ }
+
+ const view = new EditorView({
+ doc: "# Hello Markdown\n\n## Subtítulo\n\n```js\nconsole.log('Hola');\n```\n\n\n---\n\n\n[Google](https://google.com)\n\n\n- [x] Tarea completada",
+ extensions,
+ parent: editorRef.current,
+ });
+
+ return () => {
+ view.destroy();
+ };
+ }, [colorScheme, mode]);
+
+ return (
+
+ );
+}
+
+/** ============== UTILIDADES PARA BLOQUES DE CÓDIGO ============== **/
+
+// 1) Gutter con numeración relativa por bloque (1..N) —solo para líneas dentro de ``` ```
+function codeBlockLineNumbers() {
+ class NumMarker extends GutterMarker {
+ constructor(readonly n: number) { super(); }
+ toDOM() {
+ const el = document.createElement("div");
+ el.className = "cm-codeblock-lno";
+ el.textContent = String(this.n);
+ return el;
+ }
+ }
+
+ function markers(view: EditorView) {
+ const b = new RangeSetBuilder();
+ const tree = syntaxTree(view.state);
+ const { from, to } = view.viewport;
+
+ tree.iterate({
+ from, to,
+ enter(node) {
+ // En Markdown, los bloques ```...``` son "FencedCode"
+ if (node.name === "FencedCode") {
+ const startLine = view.state.doc.lineAt(node.from);
+ const endLine = view.state.doc.lineAt(node.to);
+ // Saltamos las líneas de las vallas ```: primera y última
+ let num = 0;
+ for (let i = startLine.number + 1; i <= endLine.number - 1; i++) {
+ num += 1;
+ const line = view.state.doc.line(i);
+ b.add(line.from, line.from, new NumMarker(num));
+ }
+ }
+ }
+ });
+ return b.finish();
+ }
+
+ return [
+ gutter({
+ class: "cm-codeblock-gutter",
+ markers,
+ lineMarkerChange(update) { return update.docChanged || update.viewportChanged; }
+ }),
+ EditorView.theme({
+ ".cm-gutters": { userSelect: "none" },
+ ".cm-codeblock-gutter": {
+ width: "3ch",
+ },
+ ".cm-codeblock-gutter .cm-codeblock-lno": {
+ textAlign: "right",
+ paddingRight: "0.5ch",
+ opacity: 0.7,
+ fontVariantNumeric: "tabular-nums",
+ }
+ })
+ ];
+}
+
+// 2) Botón "Copiar" en cada bloque ``` ``` que copia el contenido interno al portapapeles
+function codeBlockCopyButtons() {
+ class CopyBtnWidget extends WidgetType {
+ constructor(readonly from: number, readonly to: number) { super(); }
+ eq(other: CopyBtnWidget) { return this.from === other.from && this.to === other.to; }
+ toDOM(view: EditorView) {
+ const btn = document.createElement("button");
+ btn.className = "cm-codeblock-copybtn";
+ btn.type = "button";
+ btn.title = "Copiar código";
+ btn.textContent = "⧉";
+ btn.onclick = async (e) => {
+ e.preventDefault();
+ // extrae el texto entre las vallas, excluyendo primera y última línea
+ const doc = view.state.doc;
+ const startL = doc.lineAt(this.from);
+ const endL = doc.lineAt(this.to);
+ const startInner = startL.to + 1; // después del salto del fence de apertura
+ const endInner = endL.from - 1; // antes del fence de cierre
+ const code = doc.sliceString(startInner, endInner);
+ try { await navigator.clipboard.writeText(code); } catch {}
+ };
+ return btn;
+ }
+ ignoreEvent() { return false; }
+ }
+
+ const plugin = ViewPlugin.fromClass(class {
+ decorations: DecorationSet;
+ constructor(view: EditorView) { this.decorations = this.build(view); }
+ update(u: any) {
+ if (u.docChanged || u.viewportChanged) this.decorations = this.build(u.view);
+ }
+ build(view: EditorView) {
+ const decos: Range[] = [];
+ const tree = syntaxTree(view.state);
+ const { from, to } = view.viewport;
+ tree.iterate({
+ from, to,
+ enter(node) {
+ if (node.name === "FencedCode") {
+ // Colocamos el botón en la PRIMERA línea del bloque (sobre el fence)
+ const line = view.state.doc.lineAt(node.from);
+ decos.push(
+ Decoration.widget({
+ widget: new CopyBtnWidget(node.from, node.to),
+ side: 1
+ }).range(line.to) // al final de la 1ª línea
+ );
+ }
+ }
+ });
+ return Decoration.set(decos, true);
+ }
+ }, { decorations: v => v.decorations });
+
+ // Estilos para posicionar el botón
+ const theme = EditorView.theme({
+ ".cm-line": { position: "relative" },
+ ".cm-codeblock-copybtn": {
+ position: "absolute",
+ right: "0.25rem",
+ top: "0.15rem",
+ fontSize: "0.8rem",
+ padding: "0.1rem 0.3rem",
+ border: "none",
+ borderRadius: "4px",
+ cursor: "pointer",
+ opacity: 0.7,
+ },
+ ".cm-codeblock-copybtn:hover": { opacity: 1 }
+ });
+
+ return [plugin, theme];
+}
+
+/** ============== OCULTAR DELIMITADORES MARKDOWN ============== **/
+
+// Fallback DOM: si el navegador no entrega bien "Mod-`", lo forzamos aquí.
+function fenceKeydownFallback() {
+ return EditorView.domEventHandlers({
+ keydown(event, view) {
+ // Si ya lo manejó el keymap, CodeMirror no llega aquí con preventDefault=true.
+ // Forzamos sólo cuando sea Mod + ` sin otras teclas (o prueba Shift como alternativa).
+ const isMod = event.metaKey || event.ctrlKey;
+ if (!isMod) return false;
+ // Algunas distribuciones envían 'Dead' o distinta representación:
+ const k = event.key; // suele ser '`' o 'Dead' en teclados ES/LA
+ const looksLikeBacktick = (k === '`' || k === 'Dead');
+ if (looksLikeBacktick) {
+ event.preventDefault();
+ event.stopPropagation();
+ return toggleFenceBlock(view);
+ }
+ // Atajo alternativo manual por si lo anterior falla
+ if (event.altKey && !event.shiftKey && (k.toLowerCase?.() === 'c')) {
+ event.preventDefault();
+ event.stopPropagation();
+ return toggleFenceBlock(view);
+ }
+ return false;
+ }
+ });
+}
+
+function hideMarkdownDelimiters() {
+ return ViewPlugin.fromClass(
+ class {
+ decorations: DecorationSet;
+ constructor(view: EditorView) {
+ this.decorations = this.build(view);
+ }
+ update(update: any) {
+ if (update.docChanged || update.selectionSet || update.viewportChanged) {
+ this.decorations = this.build(update.view);
+ }
+ }
+ build(view: EditorView) {
+ const builder = new RangeSetBuilder();
+ const tree = syntaxTree(view.state);
+ const sel = view.state.selection;
+ // NUEVO: calcular qué marcas deben mostrarse (no ocultar) porque el cursor está sobre su par
+ const revealSet = emphasisMarksToReveal(view.state, sel);
+ const { from, to } = view.viewport;
+ // Recolectamos y luego ordenamos para cumplir el requisito de orden
+ type PendingDeco = { from: number; to: number; deco: Decoration; priority: number };
+ const pending: PendingDeco[] = [];
+ const docLen = view.state.doc.length;
+
+ tree.iterate({
+ from,
+ to,
+ enter(node) {
+ // Bold / italic delimiters
+ if (
+ node.name === "EmphasisMark" ||
+ node.name === "StrongMark" ||
+ node.name === "StrikethroughMark" // 👉 soporta ~~tachado~~
+ ) {
+ // No ocultar si selección intersecta o si está marcado para revelarse
+ const key = `${node.from}:${node.to}`;
+ const mustReveal = revealSet.has(key);
+ if (!selectionIntersects(sel, node.from, node.to) && !mustReveal) {
+ pending.push({
+ from: node.from,
+ to: node.to,
+ deco: Decoration.replace({}),
+ priority: 0,
+ });
+ }
+ return;
+ }
+ // Heading # -> ocultar almohadillas y espacio siguiente,
+ // pero mostrarlos si el cursor está en la misma línea
+ if (node.name === "HeaderMark") {
+ const line = view.state.doc.lineAt(node.from);
+ const cursorInLine = sel.ranges.some(
+ (r) => r.head >= line.from && r.head <= line.to
+ );
+ if (!cursorInLine) {
+ let hideTo = node.to;
+ if (line.text[node.to - line.from] === " ") {
+ hideTo = node.to + 1;
+ }
+ const rf = Math.max(0, Math.min(node.from, docLen));
+ const rt = Math.max(0, Math.min(hideTo, docLen));
+ if (rf < rt) {
+ pending.push({
+ from: rf,
+ to: rt,
+ deco: Decoration.replace({ block: false }),
+ priority: 0,
+ });
+ }
+ }
+ }
+
+ // Links (Live Preview): imitar comportamiento de énfasis (**/***):
+ // - Si la selección NO intersecta el nodo Link => ocultar '[' ']' y '(url)' y hacer clickable el label.
+ // - Si la selección SÍ intersecta el nodo Link => mostrar TODO (editar normal, sin clickable).
+ if (node.name === "Link") {
+ const raw = view.state.doc.sliceString(node.from, node.to);
+ const ob = raw.indexOf("[");
+ const cb = raw.indexOf("]", ob + 1);
+ const op = raw.indexOf("(", cb + 1);
+ const cp = raw.indexOf(")", op + 1);
+
+ // Validación estricta: debe ser [label](url)
+ const shapeOk =
+ ob !== -1 && cb !== -1 && op !== -1 && cp !== -1 &&
+ ob < cb && cb < op && op < cp;
+
+ if (!shapeOk) {
+ // Formato no soportado (autolink, malformado, etc.) → no tocamos nada
+ return;
+ }
+
+ const labelFrom = node.from + ob + 1;
+ const labelTo = node.from + cb;
+ const urlFrom = node.from + op + 1;
+ const urlTo = node.from + cp;
+
+ // Límites seguros
+ if (!(labelFrom < labelTo && urlFrom <= urlTo && node.from <= labelFrom && urlTo <= node.to)) {
+ return;
+ }
+
+ const url = view.state.doc.sliceString(urlFrom, urlTo);
+ const rf = Math.max(0, Math.min(urlFrom - 1, docLen)); // '('
+ const rt = Math.max(0, Math.min(urlTo + 1, docLen)); // ')' + 1
+
+ // ¿Selección intersecta TODO el link? -> edición normal
+ const selectionHitsLink = selectionIntersects(sel, node.from, node.to);
+ if (selectionHitsLink) return;
+
+ // PREVIEW: ocultamos delimitadores y hacemos clickeable el label
+ if (rf < rt && labelFrom < labelTo) {
+ // (1) Ocultar "(url)" completo (incluye paréntesis)
+ pending.push({
+ from: rf,
+ to: rt,
+ deco: Decoration.replace({}),
+ priority: 0,
+ });
+ // (2) Ocultar '[' y ']'
+ const lbOpen = labelFrom - 1; // '['
+ const lbClose = labelTo; // ']'
+ if (lbOpen >= node.from && lbOpen < node.to) {
+ pending.push({
+ from: lbOpen,
+ to: lbOpen + 1,
+ deco: Decoration.replace({}),
+ priority: 0,
+ });
+ }
+ if (lbClose >= node.from && lbClose < node.to) {
+ pending.push({
+ from: lbClose,
+ to: lbClose + 1,
+ deco: Decoration.replace({}),
+ priority: 0,
+ });
+ }
+ // (3) Marcar el label como clicable
+ pending.push({
+ from: labelFrom,
+ to: labelTo,
+ deco: Decoration.mark({
+ tagName: "a",
+ attributes: {
+ class: "cm-live-link",
+ href: url,
+ "data-url": url,
+ role: "link",
+ title: url,
+ },
+ }),
+ priority: 1,
+ });
+ }
+ }
+ },
+ });
+ // Orden: por 'from', luego prioridad (replace antes que mark), luego 'to'
+ pending.sort((a, b) => {
+ if (a.from !== b.from) return a.from - b.from;
+ if (a.priority !== b.priority) return a.priority - b.priority;
+ return a.to - b.to;
+ });
+ for (const p of pending) {
+ if (p.from < p.to) builder.add(p.from, p.to, p.deco);
+ }
+ return builder.finish();
+ }
+ },
+ { decorations: (v) => v.decorations }
+ );
+}
+
+function selectionIntersects(sel: EditorSelection, from: number, to: number) {
+ for (const r of sel.ranges) {
+ if (r.from <= to && r.to >= from) return true;
+ }
+ return false;
+}
+
+// Tema para los enlaces clicables en Live Preview
+const liveLinkTheme = EditorView.theme({
+ ".cm-live-link": {
+ color: "#3b82f6",
+ textDecoration: "underline",
+ cursor: "pointer",
+ // Evita estilos raros de selección de CM sobre
+ userSelect: "text",
+ },
+});
+
+/** ============== HANDLERS Y KEYBIND PARA LINKS EN LIVE PREVIEW ============== **/
+function openExternal(url: string) {
+ try {
+ const u = new URL(url, window.location.href);
+ window.open(u.href, "_blank", "noopener");
+ } catch {}
+}
+
+// Abrir con ratón: interceptamos MOUSEDOWN para evitar que CM mueva el cursor
+function liveLinkHandlers() {
+ return EditorView.domEventHandlers({
+ mousedown(event, view) {
+ const target = event.target as HTMLElement | null;
+ const linkEl = target?.closest?.(".cm-live-link") as HTMLElement | null;
+ if (!linkEl) return false;
+
+ // Posición del click en el documento
+ const pos = view.posAtDOM(linkEl, 0);
+ const info = linkAt(view, pos);
+ if (!info) return false;
+
+ // Si la selección INTERSECTA el link (modo edición), no abrir
+ if (selectionIntersects(view.state.selection, info.from, info.to)) return false;
+
+ const url = linkEl.getAttribute("data-url");
+ if (!url) return false;
+
+ // Solo botón izquierdo
+ if (event.button === 0) {
+ event.preventDefault();
+ event.stopPropagation();
+ openExternal(url);
+ return true;
+ }
+ return false;
+ }
+ });
+}
+
+// Keybinding: Ctrl/⌘ + Enter abre el enlace bajo el cursor (si lo hay)
+const liveLinkKeybind = {
+ key: "Mod-Enter",
+ run(view: EditorView) {
+ const pos = view.state.selection.main.head;
+ const info = linkAt(view, pos);
+ if (info && info.url) {
+ openExternal(info.url);
+ return true;
+ }
+ return false;
+ },
+};
+
+// Encuentra el nodo Link que contiene 'pos' y devuelve su URL
+function linkAt(view: EditorView, pos: number): { from: number; to: number; url: string } | null {
+ const state = view.state;
+ const tree = syntaxTree(state);
+ let found: { from: number; to: number } | null = null;
+ tree.iterate({
+ from: pos,
+ to: pos,
+ enter(n) {
+ if (n.name === "Link" && n.from <= pos && n.to >= pos) {
+ found = { from: n.from, to: n.to };
+ }
+ },
+ });
+ if (!found) return null;
+ // Extrae la URL usando el mismo parser de offsets que ya usamos
+ const raw = state.doc.sliceString(found.from, found.to);
+ const ob = raw.indexOf("[");
+ const cb = raw.indexOf("]", ob + 1);
+ const op = raw.indexOf("(", cb + 1);
+ const cp = raw.indexOf(")", op + 1);
+ if (ob === -1 || cb === -1 || op === -1 || cp === -1) return null;
+ const urlFrom = found.from + op + 1;
+ const urlTo = found.from + cp;
+ const url = state.doc.sliceString(urlFrom, urlTo);
+ return { from: found.from, to: found.to, url };
+}
+
+// Helper functions for star runs (add these near expandToWord)
+function starRunLeft(state: EditorView["state"], pos: number) {
+ let k = 0;
+ for (let i = pos - 1; i >= 0 && k < 3; i--) {
+ const ch = state.doc.sliceString(i, i + 1);
+ if (ch === "*") k++;
+ else break;
+ }
+ return k;
+}
+function starRunRight(state: EditorView["state"], pos: number) {
+ let k = 0;
+ const docLen = state.doc.length;
+ for (let i = pos; i < docLen && k < 3; i++) {
+ const ch = state.doc.sliceString(i, i + 1);
+ if (ch === "*") k++;
+ else break;
+ }
+ return k;
+}
\ No newline at end of file
diff --git a/frontend/yarn.lock b/frontend/yarn.lock
index 12768bd..05ed86f 100644
--- a/frontend/yarn.lock
+++ b/frontend/yarn.lock
@@ -146,7 +146,7 @@
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
-"@babel/runtime@^7.12.5", "@babel/runtime@^7.14.8", "@babel/runtime@^7.20.13":
+"@babel/runtime@^7.12.5", "@babel/runtime@^7.20.13":
version "7.28.4"
resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz"
integrity sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==
@@ -181,7 +181,7 @@
"@babel/helper-string-parser" "^7.27.1"
"@babel/helper-validator-identifier" "^7.27.1"
-"@codemirror/autocomplete@^6.0.0", "@codemirror/autocomplete@^6.3.2", "@codemirror/autocomplete@^6.4.0", "@codemirror/autocomplete@^6.7.1":
+"@codemirror/autocomplete@^6.0.0", "@codemirror/autocomplete@^6.3.2", "@codemirror/autocomplete@^6.7.1":
version "6.18.7"
resolved "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.18.7.tgz"
integrity sha512-8EzdeIoWPJDsMBwz3zdzwXnUpCzMiCyz5/A3FIPpriaclFCGDkAzK13sMcnsu5rowqiyeQN2Vs2TsOcoDPZirQ==
@@ -191,7 +191,7 @@
"@codemirror/view" "^6.17.0"
"@lezer/common" "^1.0.0"
-"@codemirror/commands@^6.0.0", "@codemirror/commands@^6.1.3", "@codemirror/commands@^6.2.4":
+"@codemirror/commands@^6.0.0", "@codemirror/commands@^6.8.1":
version "6.8.1"
resolved "https://registry.npmjs.org/@codemirror/commands/-/commands-6.8.1.tgz"
integrity sha512-KlGVYufHMQzxbdQONiLyGQDUW0itrLZwq3CcY7xpv9ZLRHqzkBSoteocBHtMCoY7/Ci4xhzSrToIeLg7FxHuaw==
@@ -221,7 +221,7 @@
"@codemirror/language" "^6.0.0"
"@lezer/cpp" "^1.0.0"
-"@codemirror/lang-css@^6.0.0", "@codemirror/lang-css@^6.0.1", "@codemirror/lang-css@^6.2.0":
+"@codemirror/lang-css@^6.0.0", "@codemirror/lang-css@^6.2.0":
version "6.3.1"
resolved "https://registry.npmjs.org/@codemirror/lang-css/-/lang-css-6.3.1.tgz"
integrity sha512-kr5fwBGiGtmz6l0LSJIbno9QrifNMUusivHbnA1H6Dmqy4HZFte3UAICix1VuKo0lMPKQr2rqB+0BkKi/S3Ejg==
@@ -243,7 +243,7 @@
"@lezer/common" "^1.0.0"
"@lezer/go" "^1.0.0"
-"@codemirror/lang-html@^6.0.0", "@codemirror/lang-html@^6.4.0":
+"@codemirror/lang-html@^6.0.0":
version "6.4.9"
resolved "https://registry.npmjs.org/@codemirror/lang-html/-/lang-html-6.4.9.tgz"
integrity sha512-aQv37pIMSlueybId/2PVSP6NPnmurFDVmZwzc7jszd2KAF8qd4VBbvNYPXWQq90WIARjsdVkPbw29pszmHws3Q==
@@ -312,7 +312,7 @@
"@lezer/highlight" "^1.0.0"
"@lezer/lr" "^1.3.1"
-"@codemirror/lang-markdown@^6.0.0", "@codemirror/lang-markdown@^6.2.3":
+"@codemirror/lang-markdown@^6.0.0", "@codemirror/lang-markdown@^6.3.4":
version "6.3.4"
resolved "https://registry.npmjs.org/@codemirror/lang-markdown/-/lang-markdown-6.3.4.tgz"
integrity sha512-fBm0BO03azXnTAsxhONDYHi/qWSI+uSEIpzKM7h/bkIc9fHnFp9y7KTMXKON0teNT97pFhc1a9DQTtWBYEZ7ug==
@@ -453,7 +453,7 @@
"@codemirror/language" "^6.0.0"
"@codemirror/legacy-modes" "^6.4.0"
-"@codemirror/language@^6.0.0", "@codemirror/language@^6.3.0", "@codemirror/language@^6.3.2", "@codemirror/language@^6.4.0", "@codemirror/language@^6.6.0", "@codemirror/language@^6.8.0":
+"@codemirror/language@^6.0.0", "@codemirror/language@^6.11.3", "@codemirror/language@^6.3.0", "@codemirror/language@^6.4.0", "@codemirror/language@^6.6.0", "@codemirror/language@^6.8.0":
version "6.11.3"
resolved "https://registry.npmjs.org/@codemirror/language/-/language-6.11.3.tgz"
integrity sha512-9HBM2XnwDj7fnu0551HkGdrUrrqmYq/WC5iv6nbY2WdicXdGbhR/gfbZOH73Aqj4351alY1+aoG9rCNfiwS1RA==
@@ -481,17 +481,6 @@
"@codemirror/view" "^6.35.0"
crelt "^1.0.5"
-"@codemirror/merge@^6.4.0":
- version "6.10.2"
- resolved "https://registry.npmjs.org/@codemirror/merge/-/merge-6.10.2.tgz"
- integrity sha512-rmHzVkt5FnCtsi0IgvDIDjh/J4LmbfOboB7FMvVl21IHO0p1QM6jSwjkBjBD3D+c+T79OabEqoduCqvJCBV8Yg==
- dependencies:
- "@codemirror/language" "^6.0.0"
- "@codemirror/state" "^6.0.0"
- "@codemirror/view" "^6.17.0"
- "@lezer/highlight" "^1.0.0"
- style-mod "^4.1.0"
-
"@codemirror/search@^6.0.0":
version "6.5.11"
resolved "https://registry.npmjs.org/@codemirror/search/-/search-6.5.11.tgz"
@@ -501,14 +490,24 @@
"@codemirror/view" "^6.0.0"
crelt "^1.0.5"
-"@codemirror/state@^6.0.0", "@codemirror/state@^6.2.0", "@codemirror/state@^6.4.0", "@codemirror/state@^6.5.0":
+"@codemirror/state@^6.0.0", "@codemirror/state@^6.4.0", "@codemirror/state@^6.5.0", "@codemirror/state@^6.5.2":
version "6.5.2"
resolved "https://registry.npmjs.org/@codemirror/state/-/state-6.5.2.tgz"
integrity sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA==
dependencies:
"@marijn/find-cluster-break" "^1.0.0"
-"@codemirror/view@^6.0.0", "@codemirror/view@^6.17.0", "@codemirror/view@^6.23.0", "@codemirror/view@^6.27.0", "@codemirror/view@^6.35.0", "@codemirror/view@^6.7.1":
+"@codemirror/theme-one-dark@^6.1.3":
+ version "6.1.3"
+ resolved "https://registry.npmjs.org/@codemirror/theme-one-dark/-/theme-one-dark-6.1.3.tgz"
+ integrity sha512-NzBdIvEJmx6fjeremiGp3t/okrLPYT0d9orIc7AFun8oZcRk58aejkqhv6spnz4MLAevrKNPMQYXEWMg4s+sKA==
+ dependencies:
+ "@codemirror/language" "^6.0.0"
+ "@codemirror/state" "^6.0.0"
+ "@codemirror/view" "^6.0.0"
+ "@lezer/highlight" "^1.0.0"
+
+"@codemirror/view@^6.0.0", "@codemirror/view@^6.17.0", "@codemirror/view@^6.23.0", "@codemirror/view@^6.27.0", "@codemirror/view@^6.35.0", "@codemirror/view@^6.38.2":
version "6.38.2"
resolved "https://registry.npmjs.org/@codemirror/view/-/view-6.38.2.tgz"
integrity sha512-bTWAJxL6EOFLPzTx+O5P5xAO3gTqpatQ2b/ARQ8itfU/v2LlpS3pH2fkL0A3E/Fx8Y2St2KES7ZEV0sHTsSW/A==
@@ -518,51 +517,6 @@
style-mod "^4.1.0"
w3c-keyname "^2.2.4"
-"@codesandbox/nodebox@0.1.8":
- version "0.1.8"
- resolved "https://registry.npmjs.org/@codesandbox/nodebox/-/nodebox-0.1.8.tgz"
- integrity sha512-2VRS6JDSk+M+pg56GA6CryyUSGPjBEe8Pnae0QL3jJF1mJZJVMDKr93gJRtBbLkfZN6LD/DwMtf+2L0bpWrjqg==
- dependencies:
- outvariant "^1.4.0"
- strict-event-emitter "^0.4.3"
-
-"@codesandbox/sandpack-client@^2.19.8":
- version "2.19.8"
- resolved "https://registry.npmjs.org/@codesandbox/sandpack-client/-/sandpack-client-2.19.8.tgz"
- integrity sha512-CMV4nr1zgKzVpx4I3FYvGRM5YT0VaQhALMW9vy4wZRhEyWAtJITQIqZzrTGWqB1JvV7V72dVEUCUPLfYz5hgJQ==
- dependencies:
- "@codesandbox/nodebox" "0.1.8"
- buffer "^6.0.3"
- dequal "^2.0.2"
- mime-db "^1.52.0"
- outvariant "1.4.0"
- static-browser-server "1.0.3"
-
-"@codesandbox/sandpack-react@^2.20.0":
- version "2.20.0"
- resolved "https://registry.npmjs.org/@codesandbox/sandpack-react/-/sandpack-react-2.20.0.tgz"
- integrity sha512-takd1YpW/PMQ6KPQfvseWLHWklJovGY8QYj8MtWnskGKbjOGJ6uZfyZbcJ6aCFLQMpNyjTqz9AKNbvhCOZ1TUQ==
- dependencies:
- "@codemirror/autocomplete" "^6.4.0"
- "@codemirror/commands" "^6.1.3"
- "@codemirror/lang-css" "^6.0.1"
- "@codemirror/lang-html" "^6.4.0"
- "@codemirror/lang-javascript" "^6.1.2"
- "@codemirror/language" "^6.3.2"
- "@codemirror/state" "^6.2.0"
- "@codemirror/view" "^6.7.1"
- "@codesandbox/sandpack-client" "^2.19.8"
- "@lezer/highlight" "^1.1.3"
- "@react-hook/intersection-observer" "^3.1.1"
- "@stitches/core" "^1.2.6"
- anser "^2.1.1"
- clean-set "^1.1.2"
- dequal "^2.0.2"
- escape-carriage "^1.3.1"
- lz-string "^1.4.4"
- react-devtools-inline "4.4.0"
- react-is "^17.0.2"
-
"@csstools/color-helpers@^5.1.0":
version "5.1.0"
resolved "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz"
@@ -692,7 +646,7 @@
"@floating-ui/core" "^1.7.3"
"@floating-ui/utils" "^0.2.10"
-"@floating-ui/react-dom@^2.0.0", "@floating-ui/react-dom@^2.1.2", "@floating-ui/react-dom@^2.1.6":
+"@floating-ui/react-dom@^2.1.2":
version "2.1.6"
resolved "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.6.tgz"
integrity sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==
@@ -708,15 +662,6 @@
"@floating-ui/utils" "^0.2.8"
tabbable "^6.0.0"
-"@floating-ui/react@^0.27.8":
- version "0.27.16"
- resolved "https://registry.npmjs.org/@floating-ui/react/-/react-0.27.16.tgz"
- integrity sha512-9O8N4SeG2z++TSM8QA/KTeKFBVCNEz/AGS7gWPJf6KFRzmRWixFRnCnkPHRDwSVZW6QPDO6uT0P2SpWNKCc9/g==
- dependencies:
- "@floating-ui/react-dom" "^2.1.6"
- "@floating-ui/utils" "^0.2.10"
- tabbable "^6.0.0"
-
"@floating-ui/utils@^0.2.10", "@floating-ui/utils@^0.2.8":
version "0.2.10"
resolved "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz"
@@ -816,208 +761,6 @@
resolved "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.1.0.tgz"
integrity sha512-RlDgexML7Z63Q8BSaqhXdCYNBy/JQnqYIwxofUrNLGCblOMHp+xux2Q8nLMLlPpgHQPoU0Do8Z6btCpRBEqZ8g==
-"@lexical/clipboard@^0.33.1", "@lexical/clipboard@0.33.1":
- version "0.33.1"
- resolved "https://registry.npmjs.org/@lexical/clipboard/-/clipboard-0.33.1.tgz"
- integrity sha512-Qd3/Cm3TW2DFQv58kMtLi86u5YOgpBdf+o7ySbXz55C613SLACsYQBB3X5Vu5hTx/t/ugYOpII4HkiatW6d9zA==
- dependencies:
- "@lexical/html" "0.33.1"
- "@lexical/list" "0.33.1"
- "@lexical/selection" "0.33.1"
- "@lexical/utils" "0.33.1"
- lexical "0.33.1"
-
-"@lexical/code@0.33.1":
- version "0.33.1"
- resolved "https://registry.npmjs.org/@lexical/code/-/code-0.33.1.tgz"
- integrity sha512-E0Y/+1znkqVpP52Y6blXGAduoZek9SSehJN+vbH+4iQKyFwTA7JB+jd5C5/K0ik55du9X7SN/oTynByg7lbcAA==
- dependencies:
- "@lexical/utils" "0.33.1"
- lexical "0.33.1"
- prismjs "^1.30.0"
-
-"@lexical/devtools-core@0.33.1":
- version "0.33.1"
- resolved "https://registry.npmjs.org/@lexical/devtools-core/-/devtools-core-0.33.1.tgz"
- integrity sha512-3yHu5diNtjwhoe2q/x9as6n6rIfA+QO2CfaVjFRkam8rkAW6zUzQT1D0fQdE8nOfWvXBgY1mH/ZLP4dDXBdG5Q==
- dependencies:
- "@lexical/html" "0.33.1"
- "@lexical/link" "0.33.1"
- "@lexical/mark" "0.33.1"
- "@lexical/table" "0.33.1"
- "@lexical/utils" "0.33.1"
- lexical "0.33.1"
-
-"@lexical/dragon@0.33.1":
- version "0.33.1"
- resolved "https://registry.npmjs.org/@lexical/dragon/-/dragon-0.33.1.tgz"
- integrity sha512-UQ6DLkcDAr83wA1vz3sUgtcpYcMifC4sF0MieZAoMzFrna6Ekqj7OJ7g8Lo7m7AeuT4NETRVDsjIEDdrQMKLLA==
- dependencies:
- lexical "0.33.1"
-
-"@lexical/hashtag@0.33.1":
- version "0.33.1"
- resolved "https://registry.npmjs.org/@lexical/hashtag/-/hashtag-0.33.1.tgz"
- integrity sha512-M3IsDe4cifggMBZgYAVT7hCLWcwQ3dIcUPdr9Xc6wDQQQdEqOQYB0PO//9bSYUVq+BNiiTgysc+TtlM7PiJfiw==
- dependencies:
- "@lexical/utils" "0.33.1"
- lexical "0.33.1"
-
-"@lexical/history@0.33.1":
- version "0.33.1"
- resolved "https://registry.npmjs.org/@lexical/history/-/history-0.33.1.tgz"
- integrity sha512-Bk0h3D6cFkJ7w3HKvqQua7n6Xfz7nR7L3gLDBH9L0nsS4MM9+LteSEZPUe0kj4VuEjnxufYstTc9HA2aNLKxnQ==
- dependencies:
- "@lexical/utils" "0.33.1"
- lexical "0.33.1"
-
-"@lexical/html@0.33.1":
- version "0.33.1"
- resolved "https://registry.npmjs.org/@lexical/html/-/html-0.33.1.tgz"
- integrity sha512-t14vu4eKa6BWz1N7/rwXgXif1k4dj73dRvllWJgfXum+a36vn1aySNYOlOfqWXF7k1b3uJmoqsWK7n/1ASnimw==
- dependencies:
- "@lexical/selection" "0.33.1"
- "@lexical/utils" "0.33.1"
- lexical "0.33.1"
-
-"@lexical/link@^0.33.1", "@lexical/link@0.33.1":
- version "0.33.1"
- resolved "https://registry.npmjs.org/@lexical/link/-/link-0.33.1.tgz"
- integrity sha512-JCTu7Fft2J2kgfqJiWnGei+UMIXVKiZKaXzuHCuGQTFu92DeCyd02azBaFazZHEkSqCIFZ0DqVV2SpIJmd0Ygw==
- dependencies:
- "@lexical/utils" "0.33.1"
- lexical "0.33.1"
-
-"@lexical/list@^0.33.1", "@lexical/list@0.33.1":
- version "0.33.1"
- resolved "https://registry.npmjs.org/@lexical/list/-/list-0.33.1.tgz"
- integrity sha512-PXp56dWADSThc9WhwWV4vXhUc3sdtCqsfPD3UQNGUZ9rsAY1479rqYLtfYgEmYPc8JWXikQCAKEejahCJIm8OQ==
- dependencies:
- "@lexical/selection" "0.33.1"
- "@lexical/utils" "0.33.1"
- lexical "0.33.1"
-
-"@lexical/mark@0.33.1":
- version "0.33.1"
- resolved "https://registry.npmjs.org/@lexical/mark/-/mark-0.33.1.tgz"
- integrity sha512-tGdOf1e694lnm/HyWUKEkEWjDyfhCBFG7u8iRKNpsYTpB3M1FsJUXbphE2bb8MyWfhHbaNxnklupSSaSPzO88A==
- dependencies:
- "@lexical/utils" "0.33.1"
- lexical "0.33.1"
-
-"@lexical/markdown@^0.33.1", "@lexical/markdown@0.33.1":
- version "0.33.1"
- resolved "https://registry.npmjs.org/@lexical/markdown/-/markdown-0.33.1.tgz"
- integrity sha512-p5zwWNF70pELRx60wxE8YOFVNiNDkw7gjKoYqkED23q5hj4mcqco9fQf6qeeZChjxLKjfyT6F1PpWgxmlBlxBw==
- dependencies:
- "@lexical/code" "0.33.1"
- "@lexical/link" "0.33.1"
- "@lexical/list" "0.33.1"
- "@lexical/rich-text" "0.33.1"
- "@lexical/text" "0.33.1"
- "@lexical/utils" "0.33.1"
- lexical "0.33.1"
-
-"@lexical/offset@0.33.1":
- version "0.33.1"
- resolved "https://registry.npmjs.org/@lexical/offset/-/offset-0.33.1.tgz"
- integrity sha512-3YIlUs43QdKSBLEfOkuciE2tn9loxVmkSs/HgaIiLYl0Edf1W00FP4ItSmYU4De5GopXsHq6+Y3ry4pU/ciUiQ==
- dependencies:
- lexical "0.33.1"
-
-"@lexical/overflow@0.33.1":
- version "0.33.1"
- resolved "https://registry.npmjs.org/@lexical/overflow/-/overflow-0.33.1.tgz"
- integrity sha512-3BDq1lOw567FeCk4rN2ellKwoXTM9zGkGuKnSGlXS1JmtGGGSvT+uTANX3KOOfqTNSrOkrwoM+3hlFv7p6VpiQ==
- dependencies:
- lexical "0.33.1"
-
-"@lexical/plain-text@^0.33.1", "@lexical/plain-text@0.33.1":
- version "0.33.1"
- resolved "https://registry.npmjs.org/@lexical/plain-text/-/plain-text-0.33.1.tgz"
- integrity sha512-2HxdhAx6bwF8y5A9P0q3YHsYbhUo4XXm+GyKJO87an8JClL2W+GYLTSDbfNWTh4TtH95eG+UYLOjNEgyU6tsWA==
- dependencies:
- "@lexical/clipboard" "0.33.1"
- "@lexical/selection" "0.33.1"
- "@lexical/utils" "0.33.1"
- lexical "0.33.1"
-
-"@lexical/react@^0.33.1":
- version "0.33.1"
- resolved "https://registry.npmjs.org/@lexical/react/-/react-0.33.1.tgz"
- integrity sha512-ylnUmom5h8PY+Z14uDmKLQEoikTPN77GRM0NRCIdtbWmOQqOq/5BhuCzMZE1WvpL5C6n3GtK6IFnsMcsKmVOcw==
- dependencies:
- "@floating-ui/react" "^0.27.8"
- "@lexical/devtools-core" "0.33.1"
- "@lexical/dragon" "0.33.1"
- "@lexical/hashtag" "0.33.1"
- "@lexical/history" "0.33.1"
- "@lexical/link" "0.33.1"
- "@lexical/list" "0.33.1"
- "@lexical/mark" "0.33.1"
- "@lexical/markdown" "0.33.1"
- "@lexical/overflow" "0.33.1"
- "@lexical/plain-text" "0.33.1"
- "@lexical/rich-text" "0.33.1"
- "@lexical/table" "0.33.1"
- "@lexical/text" "0.33.1"
- "@lexical/utils" "0.33.1"
- "@lexical/yjs" "0.33.1"
- lexical "0.33.1"
- react-error-boundary "^3.1.4"
-
-"@lexical/rich-text@^0.33.1", "@lexical/rich-text@0.33.1":
- version "0.33.1"
- resolved "https://registry.npmjs.org/@lexical/rich-text/-/rich-text-0.33.1.tgz"
- integrity sha512-ZBIsj4LwmamRBCGjJiPSLj7N/XkUDv/pnYn5Rp0BL42WpOiQLvOoGLrZxgUJZEmRPQnx42ZgLKVgrWHsyjuoAA==
- dependencies:
- "@lexical/clipboard" "0.33.1"
- "@lexical/selection" "0.33.1"
- "@lexical/utils" "0.33.1"
- lexical "0.33.1"
-
-"@lexical/selection@^0.33.1", "@lexical/selection@0.33.1":
- version "0.33.1"
- resolved "https://registry.npmjs.org/@lexical/selection/-/selection-0.33.1.tgz"
- integrity sha512-KXPkdCDdVfIUXmkwePu9DAd3kLjL0aAqL5G9CMCFsj7RG9lLvvKk7kpivrAIbRbcsDzO44QwsFPisZHbX4ioXA==
- dependencies:
- lexical "0.33.1"
-
-"@lexical/table@0.33.1":
- version "0.33.1"
- resolved "https://registry.npmjs.org/@lexical/table/-/table-0.33.1.tgz"
- integrity sha512-pzB11i1Y6fzmy0IPUKJyCdhVBgXaNOxJUxrQJWdKNYCh1eMwwMEQvj+8inItd/11aUkjcdHjwDTht8gL2UHKiQ==
- dependencies:
- "@lexical/clipboard" "0.33.1"
- "@lexical/utils" "0.33.1"
- lexical "0.33.1"
-
-"@lexical/text@0.33.1":
- version "0.33.1"
- resolved "https://registry.npmjs.org/@lexical/text/-/text-0.33.1.tgz"
- integrity sha512-CnyU3q3RytXXWVSvC5StOKISzFAPGK9MuesNDDGyZk7yDK+J98gV6df4RBKfqwcokFMThpkUlvMeKe1+S2y25A==
- dependencies:
- lexical "0.33.1"
-
-"@lexical/utils@^0.33.1", "@lexical/utils@0.33.1":
- version "0.33.1"
- resolved "https://registry.npmjs.org/@lexical/utils/-/utils-0.33.1.tgz"
- integrity sha512-eKysPjzEE9zD+2af3WRX5U3XbeNk0z4uv1nXGH3RG15uJ4Huzjht82hzsQpCFUobKmzYlQaQs5y2IYKE2puipQ==
- dependencies:
- "@lexical/list" "0.33.1"
- "@lexical/selection" "0.33.1"
- "@lexical/table" "0.33.1"
- lexical "0.33.1"
-
-"@lexical/yjs@0.33.1":
- version "0.33.1"
- resolved "https://registry.npmjs.org/@lexical/yjs/-/yjs-0.33.1.tgz"
- integrity sha512-Zx1rabMm/Zjk7n7YQMIQLUN+tqzcg1xqcgNpEHSfK1GA8QMPXCPvXWFT3ZDC4tfZOSy/YIqpVUyWZAomFqRa+g==
- dependencies:
- "@lexical/offset" "0.33.1"
- "@lexical/selection" "0.33.1"
- lexical "0.33.1"
-
"@lezer/common@^1.0.0", "@lezer/common@^1.0.2", "@lezer/common@^1.1.0", "@lezer/common@^1.2.0", "@lezer/common@^1.2.1":
version "1.2.3"
resolved "https://registry.npmjs.org/@lezer/common/-/common-1.2.3.tgz"
@@ -1050,7 +793,7 @@
"@lezer/highlight" "^1.0.0"
"@lezer/lr" "^1.3.0"
-"@lezer/highlight@^1.0.0", "@lezer/highlight@^1.1.3", "@lezer/highlight@^1.2.0":
+"@lezer/highlight@^1.0.0", "@lezer/highlight@^1.1.3", "@lezer/highlight@^1.2.0", "@lezer/highlight@^1.2.1":
version "1.2.1"
resolved "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.1.tgz"
integrity sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==
@@ -1162,10 +905,10 @@
"@lezer/highlight" "^1.0.0"
"@lezer/lr" "^1.4.0"
-"@mantine/core@^8.1.2":
- version "8.1.2"
- resolved "https://registry.npmjs.org/@mantine/core/-/core-8.1.2.tgz"
- integrity sha512-+maX0a1+fxh6Lvnzi0qb0AZsCnnHlIiTE/hFC+dd3eRfUW2PEKJ5/wTpmrX8IGyxa+NS+fXjZD/cU4Yt9xNjdg==
+"@mantine/core@^8.2.8":
+ version "8.2.8"
+ resolved "https://registry.npmjs.org/@mantine/core/-/core-8.2.8.tgz"
+ integrity sha512-dybAXrlQ+QiIhpnVCkdH6P4Sjm9I9RymYXfDp97oj9KfGRMEJGLDdPAwp/2GhXe7UdDkzqD48JCkbfRWF2Q+qA==
dependencies:
"@floating-ui/react" "^0.26.28"
clsx "^2.1.1"
@@ -1174,83 +917,16 @@
react-textarea-autosize "8.5.9"
type-fest "^4.27.0"
-"@mantine/hooks@^8.1.2", "@mantine/hooks@8.1.2":
- version "8.1.2"
- resolved "https://registry.npmjs.org/@mantine/hooks/-/hooks-8.1.2.tgz"
- integrity sha512-BrriTsiazqZ2fLuL7UDasNTQJSaoJ7mN2qYVkdsiYI158lxJdUaFWHhd6BDyzK+W6thvBx2D+R/hh1rsWWefdQ==
+"@mantine/hooks@^8.1.2", "@mantine/hooks@8.2.8":
+ version "8.2.8"
+ resolved "https://registry.npmjs.org/@mantine/hooks/-/hooks-8.2.8.tgz"
+ integrity sha512-KK1krCcXizWT6JF8gWexv58imQBbviylAJqSqdZ4zUPgrpe81ehMyfxo5Z9EZsnSwMxkB4RLMhCCJhC5g8GvLA==
"@marijn/find-cluster-break@^1.0.0":
version "1.0.2"
resolved "https://registry.npmjs.org/@marijn/find-cluster-break/-/find-cluster-break-1.0.2.tgz"
integrity sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==
-"@mdxeditor/editor@^3.42.0":
- version "3.42.0"
- resolved "https://registry.npmjs.org/@mdxeditor/editor/-/editor-3.42.0.tgz"
- integrity sha512-nQN07RkTm842T477IjPqp1FhWCQMpmbLToOVrc6EjSI60aHifwzva+eqYmElHFKE2jyGiD5FsaQXri1SSORJNg==
- dependencies:
- "@codemirror/commands" "^6.2.4"
- "@codemirror/lang-markdown" "^6.2.3"
- "@codemirror/language-data" "^6.5.1"
- "@codemirror/merge" "^6.4.0"
- "@codemirror/state" "^6.4.0"
- "@codemirror/view" "^6.23.0"
- "@codesandbox/sandpack-react" "^2.20.0"
- "@lexical/clipboard" "^0.33.1"
- "@lexical/link" "^0.33.1"
- "@lexical/list" "^0.33.1"
- "@lexical/markdown" "^0.33.1"
- "@lexical/plain-text" "^0.33.1"
- "@lexical/react" "^0.33.1"
- "@lexical/rich-text" "^0.33.1"
- "@lexical/selection" "^0.33.1"
- "@lexical/utils" "^0.33.1"
- "@mdxeditor/gurx" "^1.1.4"
- "@radix-ui/colors" "^3.0.0"
- "@radix-ui/react-dialog" "^1.1.11"
- "@radix-ui/react-icons" "^1.3.2"
- "@radix-ui/react-popover" "^1.1.11"
- "@radix-ui/react-popper" "^1.2.4"
- "@radix-ui/react-select" "^2.2.2"
- "@radix-ui/react-toggle-group" "^1.1.7"
- "@radix-ui/react-toolbar" "^1.1.7"
- "@radix-ui/react-tooltip" "^1.2.4"
- classnames "^2.3.2"
- cm6-theme-basic-light "^0.2.0"
- codemirror "^6.0.1"
- downshift "^7.6.0"
- js-yaml "4.1.0"
- lexical "^0.33.1"
- mdast-util-directive "^3.0.0"
- mdast-util-from-markdown "^2.0.0"
- mdast-util-frontmatter "^2.0.1"
- mdast-util-gfm-strikethrough "^2.0.0"
- mdast-util-gfm-table "^2.0.0"
- mdast-util-gfm-task-list-item "^2.0.0"
- mdast-util-highlight-mark "^1.2.2"
- mdast-util-mdx "^3.0.0"
- mdast-util-mdx-jsx "^3.0.0"
- mdast-util-to-markdown "^2.1.0"
- micromark-extension-directive "^3.0.0"
- micromark-extension-frontmatter "^2.0.0"
- micromark-extension-gfm-strikethrough "^2.0.0"
- micromark-extension-gfm-table "^2.0.0"
- micromark-extension-gfm-task-list-item "^2.0.1"
- micromark-extension-highlight-mark "^1.2.0"
- micromark-extension-mdx-jsx "^3.0.0"
- micromark-extension-mdx-md "^2.0.0"
- micromark-extension-mdxjs "^3.0.0"
- micromark-factory-space "^2.0.0"
- micromark-util-character "^2.0.1"
- micromark-util-symbol "^2.0.0"
- react-hook-form "^7.56.1"
- unidiff "^1.0.2"
-
-"@mdxeditor/gurx@^1.1.4":
- version "1.2.3"
- resolved "https://registry.npmjs.org/@mdxeditor/gurx/-/gurx-1.2.3.tgz"
- integrity sha512-5DQOlEx46oN9spggrC8husAGAhVoEFBGIYKN48es08XhRUbSU6l5bcIQYwRrQaY8clU1tExIcXzw8/fNnoxjpg==
-
"@nodelib/fs.scandir@2.1.5":
version "2.1.5"
resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz"
@@ -1272,365 +948,11 @@
"@nodelib/fs.scandir" "2.1.5"
fastq "^1.6.0"
-"@open-draft/deferred-promise@^2.1.0":
- version "2.2.0"
- resolved "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz"
- integrity sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==
-
"@pkgjs/parseargs@^0.11.0":
version "0.11.0"
resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz"
integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==
-"@radix-ui/colors@^3.0.0":
- version "3.0.0"
- resolved "https://registry.npmjs.org/@radix-ui/colors/-/colors-3.0.0.tgz"
- integrity sha512-FUOsGBkHrYJwCSEtWRCIfQbZG7q1e6DgxCIOe1SUQzDe/7rXXeA47s8yCn6fuTNQAj1Zq4oTFi9Yjp3wzElcxg==
-
-"@radix-ui/number@1.1.1":
- version "1.1.1"
- resolved "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.1.tgz"
- integrity sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==
-
-"@radix-ui/primitive@1.1.3":
- version "1.1.3"
- resolved "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz"
- integrity sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==
-
-"@radix-ui/react-arrow@1.1.7":
- version "1.1.7"
- resolved "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.7.tgz"
- integrity sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==
- dependencies:
- "@radix-ui/react-primitive" "2.1.3"
-
-"@radix-ui/react-collection@1.1.7":
- version "1.1.7"
- resolved "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.7.tgz"
- integrity sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==
- dependencies:
- "@radix-ui/react-compose-refs" "1.1.2"
- "@radix-ui/react-context" "1.1.2"
- "@radix-ui/react-primitive" "2.1.3"
- "@radix-ui/react-slot" "1.2.3"
-
-"@radix-ui/react-compose-refs@1.1.2":
- version "1.1.2"
- resolved "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz"
- integrity sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==
-
-"@radix-ui/react-context@1.1.2":
- version "1.1.2"
- resolved "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz"
- integrity sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==
-
-"@radix-ui/react-dialog@^1.1.11":
- version "1.1.15"
- resolved "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.15.tgz"
- integrity sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==
- dependencies:
- "@radix-ui/primitive" "1.1.3"
- "@radix-ui/react-compose-refs" "1.1.2"
- "@radix-ui/react-context" "1.1.2"
- "@radix-ui/react-dismissable-layer" "1.1.11"
- "@radix-ui/react-focus-guards" "1.1.3"
- "@radix-ui/react-focus-scope" "1.1.7"
- "@radix-ui/react-id" "1.1.1"
- "@radix-ui/react-portal" "1.1.9"
- "@radix-ui/react-presence" "1.1.5"
- "@radix-ui/react-primitive" "2.1.3"
- "@radix-ui/react-slot" "1.2.3"
- "@radix-ui/react-use-controllable-state" "1.2.2"
- aria-hidden "^1.2.4"
- react-remove-scroll "^2.6.3"
-
-"@radix-ui/react-direction@1.1.1":
- version "1.1.1"
- resolved "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.1.tgz"
- integrity sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==
-
-"@radix-ui/react-dismissable-layer@1.1.11":
- version "1.1.11"
- resolved "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz"
- integrity sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==
- dependencies:
- "@radix-ui/primitive" "1.1.3"
- "@radix-ui/react-compose-refs" "1.1.2"
- "@radix-ui/react-primitive" "2.1.3"
- "@radix-ui/react-use-callback-ref" "1.1.1"
- "@radix-ui/react-use-escape-keydown" "1.1.1"
-
-"@radix-ui/react-focus-guards@1.1.3":
- version "1.1.3"
- resolved "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.3.tgz"
- integrity sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==
-
-"@radix-ui/react-focus-scope@1.1.7":
- version "1.1.7"
- resolved "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.7.tgz"
- integrity sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==
- dependencies:
- "@radix-ui/react-compose-refs" "1.1.2"
- "@radix-ui/react-primitive" "2.1.3"
- "@radix-ui/react-use-callback-ref" "1.1.1"
-
-"@radix-ui/react-icons@^1.3.2":
- version "1.3.2"
- resolved "https://registry.npmjs.org/@radix-ui/react-icons/-/react-icons-1.3.2.tgz"
- integrity sha512-fyQIhGDhzfc9pK2kH6Pl9c4BDJGfMkPqkyIgYDthyNYoNg3wVhoJMMh19WS4Up/1KMPFVpNsT2q3WmXn2N1m6g==
-
-"@radix-ui/react-id@1.1.1":
- version "1.1.1"
- resolved "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz"
- integrity sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==
- dependencies:
- "@radix-ui/react-use-layout-effect" "1.1.1"
-
-"@radix-ui/react-popover@^1.1.11":
- version "1.1.15"
- resolved "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.15.tgz"
- integrity sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA==
- dependencies:
- "@radix-ui/primitive" "1.1.3"
- "@radix-ui/react-compose-refs" "1.1.2"
- "@radix-ui/react-context" "1.1.2"
- "@radix-ui/react-dismissable-layer" "1.1.11"
- "@radix-ui/react-focus-guards" "1.1.3"
- "@radix-ui/react-focus-scope" "1.1.7"
- "@radix-ui/react-id" "1.1.1"
- "@radix-ui/react-popper" "1.2.8"
- "@radix-ui/react-portal" "1.1.9"
- "@radix-ui/react-presence" "1.1.5"
- "@radix-ui/react-primitive" "2.1.3"
- "@radix-ui/react-slot" "1.2.3"
- "@radix-ui/react-use-controllable-state" "1.2.2"
- aria-hidden "^1.2.4"
- react-remove-scroll "^2.6.3"
-
-"@radix-ui/react-popper@^1.2.4", "@radix-ui/react-popper@1.2.8":
- version "1.2.8"
- resolved "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.8.tgz"
- integrity sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==
- dependencies:
- "@floating-ui/react-dom" "^2.0.0"
- "@radix-ui/react-arrow" "1.1.7"
- "@radix-ui/react-compose-refs" "1.1.2"
- "@radix-ui/react-context" "1.1.2"
- "@radix-ui/react-primitive" "2.1.3"
- "@radix-ui/react-use-callback-ref" "1.1.1"
- "@radix-ui/react-use-layout-effect" "1.1.1"
- "@radix-ui/react-use-rect" "1.1.1"
- "@radix-ui/react-use-size" "1.1.1"
- "@radix-ui/rect" "1.1.1"
-
-"@radix-ui/react-portal@1.1.9":
- version "1.1.9"
- resolved "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.9.tgz"
- integrity sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==
- dependencies:
- "@radix-ui/react-primitive" "2.1.3"
- "@radix-ui/react-use-layout-effect" "1.1.1"
-
-"@radix-ui/react-presence@1.1.5":
- version "1.1.5"
- resolved "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.5.tgz"
- integrity sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==
- dependencies:
- "@radix-ui/react-compose-refs" "1.1.2"
- "@radix-ui/react-use-layout-effect" "1.1.1"
-
-"@radix-ui/react-primitive@2.1.3":
- version "2.1.3"
- resolved "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz"
- integrity sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==
- dependencies:
- "@radix-ui/react-slot" "1.2.3"
-
-"@radix-ui/react-roving-focus@1.1.11":
- version "1.1.11"
- resolved "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.11.tgz"
- integrity sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==
- dependencies:
- "@radix-ui/primitive" "1.1.3"
- "@radix-ui/react-collection" "1.1.7"
- "@radix-ui/react-compose-refs" "1.1.2"
- "@radix-ui/react-context" "1.1.2"
- "@radix-ui/react-direction" "1.1.1"
- "@radix-ui/react-id" "1.1.1"
- "@radix-ui/react-primitive" "2.1.3"
- "@radix-ui/react-use-callback-ref" "1.1.1"
- "@radix-ui/react-use-controllable-state" "1.2.2"
-
-"@radix-ui/react-select@^2.2.2":
- version "2.2.6"
- resolved "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.2.6.tgz"
- integrity sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ==
- dependencies:
- "@radix-ui/number" "1.1.1"
- "@radix-ui/primitive" "1.1.3"
- "@radix-ui/react-collection" "1.1.7"
- "@radix-ui/react-compose-refs" "1.1.2"
- "@radix-ui/react-context" "1.1.2"
- "@radix-ui/react-direction" "1.1.1"
- "@radix-ui/react-dismissable-layer" "1.1.11"
- "@radix-ui/react-focus-guards" "1.1.3"
- "@radix-ui/react-focus-scope" "1.1.7"
- "@radix-ui/react-id" "1.1.1"
- "@radix-ui/react-popper" "1.2.8"
- "@radix-ui/react-portal" "1.1.9"
- "@radix-ui/react-primitive" "2.1.3"
- "@radix-ui/react-slot" "1.2.3"
- "@radix-ui/react-use-callback-ref" "1.1.1"
- "@radix-ui/react-use-controllable-state" "1.2.2"
- "@radix-ui/react-use-layout-effect" "1.1.1"
- "@radix-ui/react-use-previous" "1.1.1"
- "@radix-ui/react-visually-hidden" "1.2.3"
- aria-hidden "^1.2.4"
- react-remove-scroll "^2.6.3"
-
-"@radix-ui/react-separator@1.1.7":
- version "1.1.7"
- resolved "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.1.7.tgz"
- integrity sha512-0HEb8R9E8A+jZjvmFCy/J4xhbXy3TV+9XSnGJ3KvTtjlIUy/YQ/p6UYZvi7YbeoeXdyU9+Y3scizK6hkY37baA==
- dependencies:
- "@radix-ui/react-primitive" "2.1.3"
-
-"@radix-ui/react-slot@1.2.3":
- version "1.2.3"
- resolved "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz"
- integrity sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==
- dependencies:
- "@radix-ui/react-compose-refs" "1.1.2"
-
-"@radix-ui/react-toggle-group@^1.1.7", "@radix-ui/react-toggle-group@1.1.11":
- version "1.1.11"
- resolved "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-1.1.11.tgz"
- integrity sha512-5umnS0T8JQzQT6HbPyO7Hh9dgd82NmS36DQr+X/YJ9ctFNCiiQd6IJAYYZ33LUwm8M+taCz5t2ui29fHZc4Y6Q==
- dependencies:
- "@radix-ui/primitive" "1.1.3"
- "@radix-ui/react-context" "1.1.2"
- "@radix-ui/react-direction" "1.1.1"
- "@radix-ui/react-primitive" "2.1.3"
- "@radix-ui/react-roving-focus" "1.1.11"
- "@radix-ui/react-toggle" "1.1.10"
- "@radix-ui/react-use-controllable-state" "1.2.2"
-
-"@radix-ui/react-toggle@1.1.10":
- version "1.1.10"
- resolved "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.1.10.tgz"
- integrity sha512-lS1odchhFTeZv3xwHH31YPObmJn8gOg7Lq12inrr0+BH/l3Tsq32VfjqH1oh80ARM3mlkfMic15n0kg4sD1poQ==
- dependencies:
- "@radix-ui/primitive" "1.1.3"
- "@radix-ui/react-primitive" "2.1.3"
- "@radix-ui/react-use-controllable-state" "1.2.2"
-
-"@radix-ui/react-toolbar@^1.1.7":
- version "1.1.11"
- resolved "https://registry.npmjs.org/@radix-ui/react-toolbar/-/react-toolbar-1.1.11.tgz"
- integrity sha512-4ol06/1bLoFu1nwUqzdD4Y5RZ9oDdKeiHIsntug54Hcr1pgaHiPqHFEaXI1IFP/EsOfROQZ8Mig9VTIRza6Tjg==
- dependencies:
- "@radix-ui/primitive" "1.1.3"
- "@radix-ui/react-context" "1.1.2"
- "@radix-ui/react-direction" "1.1.1"
- "@radix-ui/react-primitive" "2.1.3"
- "@radix-ui/react-roving-focus" "1.1.11"
- "@radix-ui/react-separator" "1.1.7"
- "@radix-ui/react-toggle-group" "1.1.11"
-
-"@radix-ui/react-tooltip@^1.2.4":
- version "1.2.8"
- resolved "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.2.8.tgz"
- integrity sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==
- dependencies:
- "@radix-ui/primitive" "1.1.3"
- "@radix-ui/react-compose-refs" "1.1.2"
- "@radix-ui/react-context" "1.1.2"
- "@radix-ui/react-dismissable-layer" "1.1.11"
- "@radix-ui/react-id" "1.1.1"
- "@radix-ui/react-popper" "1.2.8"
- "@radix-ui/react-portal" "1.1.9"
- "@radix-ui/react-presence" "1.1.5"
- "@radix-ui/react-primitive" "2.1.3"
- "@radix-ui/react-slot" "1.2.3"
- "@radix-ui/react-use-controllable-state" "1.2.2"
- "@radix-ui/react-visually-hidden" "1.2.3"
-
-"@radix-ui/react-use-callback-ref@1.1.1":
- version "1.1.1"
- resolved "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz"
- integrity sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==
-
-"@radix-ui/react-use-controllable-state@1.2.2":
- version "1.2.2"
- resolved "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz"
- integrity sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==
- dependencies:
- "@radix-ui/react-use-effect-event" "0.0.2"
- "@radix-ui/react-use-layout-effect" "1.1.1"
-
-"@radix-ui/react-use-effect-event@0.0.2":
- version "0.0.2"
- resolved "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz"
- integrity sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==
- dependencies:
- "@radix-ui/react-use-layout-effect" "1.1.1"
-
-"@radix-ui/react-use-escape-keydown@1.1.1":
- version "1.1.1"
- resolved "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz"
- integrity sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==
- dependencies:
- "@radix-ui/react-use-callback-ref" "1.1.1"
-
-"@radix-ui/react-use-layout-effect@1.1.1":
- version "1.1.1"
- resolved "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz"
- integrity sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==
-
-"@radix-ui/react-use-previous@1.1.1":
- version "1.1.1"
- resolved "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.1.tgz"
- integrity sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==
-
-"@radix-ui/react-use-rect@1.1.1":
- version "1.1.1"
- resolved "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz"
- integrity sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==
- dependencies:
- "@radix-ui/rect" "1.1.1"
-
-"@radix-ui/react-use-size@1.1.1":
- version "1.1.1"
- resolved "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz"
- integrity sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==
- dependencies:
- "@radix-ui/react-use-layout-effect" "1.1.1"
-
-"@radix-ui/react-visually-hidden@1.2.3":
- version "1.2.3"
- resolved "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.3.tgz"
- integrity sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==
- dependencies:
- "@radix-ui/react-primitive" "2.1.3"
-
-"@radix-ui/rect@1.1.1":
- version "1.1.1"
- resolved "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz"
- integrity sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==
-
-"@react-hook/intersection-observer@^3.1.1":
- version "3.1.2"
- resolved "https://registry.npmjs.org/@react-hook/intersection-observer/-/intersection-observer-3.1.2.tgz"
- integrity sha512-mWU3BMkmmzyYMSuhO9wu3eJVP21N8TcgYm9bZnTrMwuM818bEk+0NRM3hP+c/TqA9Ln5C7qE53p1H0QMtzYdvQ==
- dependencies:
- "@react-hook/passive-layout-effect" "^1.2.0"
- intersection-observer "^0.10.0"
-
-"@react-hook/passive-layout-effect@^1.2.0":
- version "1.2.1"
- resolved "https://registry.npmjs.org/@react-hook/passive-layout-effect/-/passive-layout-effect-1.2.1.tgz"
- integrity sha512-IwEphTD75liO8g+6taS+4oqz+nnroocNfWVHWz7j+N+ZO2vYrc6PV1q7GQhuahL0IOR7JccFTsFKQ/mb6iZWAg==
-
"@rolldown/pluginutils@1.0.0-beta.27":
version "1.0.0-beta.27"
resolved "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz"
@@ -1655,11 +977,6 @@
resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.50.0.tgz"
integrity sha512-SkE6YQp+CzpyOrbw7Oc4MgXFvTw2UIBElvAvLCo230pyxOLmYwRPwZ/L5lBe/VW/qT1ZgND9wJfOsdy0XptRvw==
-"@stitches/core@^1.2.6":
- version "1.2.8"
- resolved "https://registry.npmjs.org/@stitches/core/-/core-1.2.8.tgz"
- integrity sha512-Gfkvwk9o9kE9r9XNBmJRfV8zONvXThnm1tcuojL04Uy5uRyqg93DC83lDebl0rocZCfKSjUv+fWYtMQmEDJldg==
-
"@storybook/builder-vite@8.6.14":
version "8.6.14"
resolved "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-8.6.14.tgz"
@@ -1843,13 +1160,6 @@
dependencies:
"@types/deep-eql" "*"
-"@types/debug@^4.0.0", "@types/debug@^4.1.12":
- version "4.1.12"
- resolved "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz"
- integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==
- dependencies:
- "@types/ms" "*"
-
"@types/deep-eql@*":
version "4.0.2"
resolved "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz"
@@ -1860,42 +1170,16 @@
resolved "https://registry.npmjs.org/@types/doctrine/-/doctrine-0.0.9.tgz"
integrity sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==
-"@types/estree-jsx@^1.0.0":
- version "1.0.5"
- resolved "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz"
- integrity sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==
- dependencies:
- "@types/estree" "*"
-
-"@types/estree@*", "@types/estree@^1.0.0", "@types/estree@^1.0.6", "@types/estree@1.0.8":
+"@types/estree@^1.0.0", "@types/estree@^1.0.6", "@types/estree@1.0.8":
version "1.0.8"
resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz"
integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==
-"@types/hast@^3.0.0":
- version "3.0.4"
- resolved "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz"
- integrity sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==
- dependencies:
- "@types/unist" "*"
-
"@types/json-schema@^7.0.15":
version "7.0.15"
resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz"
integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==
-"@types/mdast@^4.0.0":
- version "4.0.4"
- resolved "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz"
- integrity sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==
- dependencies:
- "@types/unist" "*"
-
-"@types/ms@*":
- version "2.1.0"
- resolved "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz"
- integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==
-
"@types/node@^18.0.0 || ^20.0.0 || >=22.0.0", "@types/node@^22.15.11":
version "22.18.1"
resolved "https://registry.npmjs.org/@types/node/-/node-22.18.1.tgz"
@@ -1903,7 +1187,7 @@
dependencies:
undici-types "~6.21.0"
-"@types/react-dom@*", "@types/react-dom@^18.0.0 || ^19.0.0", "@types/react-dom@^19.1.6":
+"@types/react-dom@^18.0.0 || ^19.0.0", "@types/react-dom@^19.1.6":
version "19.1.9"
resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.9.tgz"
integrity sha512-qXRuZaOsAdXKFyOhRBg6Lqqc0yay13vN7KrIg4L7N4aaHN68ma9OK3NE1BoDFgFOTfM7zg+3/8+2n8rLUH3OKQ==
@@ -1920,16 +1204,6 @@
resolved "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.6.tgz"
integrity sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==
-"@types/unist@*", "@types/unist@^3.0.0":
- version "3.0.3"
- resolved "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz"
- integrity sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==
-
-"@types/unist@^2.0.0":
- version "2.0.11"
- resolved "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz"
- integrity sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==
-
"@typescript-eslint/eslint-plugin@8.42.0":
version "8.42.0"
resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.42.0.tgz"
@@ -2101,12 +1375,17 @@
loupe "^3.1.4"
tinyrainbow "^2.0.0"
-acorn-jsx@^5.0.0, acorn-jsx@^5.3.2:
+"@xmldom/xmldom@0.9.8":
+ version "0.9.8"
+ resolved "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.8.tgz"
+ integrity sha512-p96FSY54r+WJ50FIOsCOjyj/wavs8921hG5+kVMmZgKcvIKxMXHTrjNJvRgWa/zuX3B6t2lijLNFaOyuxUH+2A==
+
+acorn-jsx@^5.3.2:
version "5.3.2"
resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz"
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
-"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.0.0, acorn@^8.14.0, acorn@^8.15.0:
+"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.14.0, acorn@^8.15.0:
version "8.15.0"
resolved "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz"
integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==
@@ -2136,11 +1415,6 @@ ajv@^8.0.1:
json-schema-traverse "^1.0.0"
require-from-string "^2.0.2"
-anser@^2.1.1:
- version "2.3.2"
- resolved "https://registry.npmjs.org/anser/-/anser-2.3.2.tgz"
- integrity sha512-PMqBCBvrOVDRqLGooQb+z+t1Q0PiPyurUQeZRR5uHBOVZcW8B04KMmnT12USnhpNX2wCPagWzLVppQMUG3u0Dw==
-
ansi-regex@^5.0.1:
version "5.0.1"
resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz"
@@ -2173,13 +1447,6 @@ argparse@^2.0.1:
resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz"
integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
-aria-hidden@^1.2.4:
- version "1.2.6"
- resolved "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.6.tgz"
- integrity sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==
- dependencies:
- tslib "^2.0.0"
-
aria-query@^5.0.0, aria-query@5.3.0:
version "5.3.0"
resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz"
@@ -2329,11 +1596,6 @@ balanced-match@^2.0.0:
resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz"
integrity sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==
-base64-js@^1.3.1:
- version "1.5.1"
- resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz"
- integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
-
better-opn@^3.0.2:
version "3.0.2"
resolved "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz"
@@ -2378,14 +1640,6 @@ browserslist@^4.24.0, "browserslist@>= 4.21.0":
node-releases "^2.0.19"
update-browserslist-db "^1.1.3"
-buffer@^6.0.3:
- version "6.0.3"
- resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz"
- integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==
- dependencies:
- base64-js "^1.3.1"
- ieee754 "^1.2.1"
-
cac@^6.7.14:
version "6.7.14"
resolved "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz"
@@ -2440,11 +1694,6 @@ caniuse-lite@^1.0.30001737:
resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001741.tgz"
integrity sha512-QGUGitqsc8ARjLdgAfxETDhRbJ0REsP6O3I96TAth/mVjh2cYzN2u+3AzPP3aVSm2FehEItaJw1xd+IGBXWeSw==
-ccount@^2.0.0:
- version "2.0.1"
- resolved "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz"
- integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==
-
chai@^5.2.0:
version "5.3.3"
resolved "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz"
@@ -2464,52 +1713,17 @@ chalk@^4.0.0:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
-character-entities-html4@^2.0.0:
- version "2.1.0"
- resolved "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz"
- integrity sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==
-
-character-entities-legacy@^3.0.0:
- version "3.0.0"
- resolved "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz"
- integrity sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==
-
-character-entities@^2.0.0:
- version "2.0.2"
- resolved "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz"
- integrity sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==
-
-character-reference-invalid@^2.0.0:
- version "2.0.1"
- resolved "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz"
- integrity sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==
-
check-error@^2.1.1:
version "2.1.1"
resolved "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz"
integrity sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==
-classnames@^2.3.2:
- version "2.5.1"
- resolved "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz"
- integrity sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==
-
-clean-set@^1.1.2:
- version "1.1.2"
- resolved "https://registry.npmjs.org/clean-set/-/clean-set-1.1.2.tgz"
- integrity sha512-cA8uCj0qSoG9e0kevyOWXwPaELRPVg5Pxp6WskLMwerx257Zfnh8Nl0JBH59d7wQzij2CK7qEfJQK3RjuKKIug==
-
clsx@^2.1.1:
version "2.1.1"
resolved "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz"
integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==
-cm6-theme-basic-light@^0.2.0:
- version "0.2.0"
- resolved "https://registry.npmjs.org/cm6-theme-basic-light/-/cm6-theme-basic-light-0.2.0.tgz"
- integrity sha512-1prg2gv44sYfpHscP26uLT/ePrh0mlmVwMSoSd3zYKQ92Ab3jPRLzyCnpyOCQLJbK+YdNs4HvMRqMNYdy4pMhA==
-
-codemirror@^6.0.1:
+codemirror@^6.0.2:
version "6.0.2"
resolved "https://registry.npmjs.org/codemirror/-/codemirror-6.0.2.tgz"
integrity sha512-VhydHotNW5w1UGK0Qj96BwSk/Zqbp9WbnyK2W/eVMv4QyF41INRGpjUhFJY7/uDNuudSc33a/PKr4iDqRduvHw==
@@ -2539,10 +1753,10 @@ colord@^2.9.3:
resolved "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz"
integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==
-compute-scroll-into-view@^2.0.4:
- version "2.0.4"
- resolved "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-2.0.4.tgz"
- integrity sha512-y/ZA3BGnxoM/QHHQ2Uy49CLtnWPbt4tTPpEEZiEmmiWBFKjej7nEyH8Ryz54jH0MLXflUYA3Er2zUxPSJu5R+g==
+commander@13.1.0:
+ version "13.1.0"
+ resolved "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz"
+ integrity sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==
concat-map@0.0.1:
version "0.0.1"
@@ -2619,14 +1833,6 @@ csstype@^3.0.2:
resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz"
integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
-d@^1.0.1, d@^1.0.2, d@1:
- version "1.0.2"
- resolved "https://registry.npmjs.org/d/-/d-1.0.2.tgz"
- integrity sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==
- dependencies:
- es5-ext "^0.10.64"
- type "^2.7.2"
-
damerau-levenshtein@^1.0.8:
version "1.0.8"
resolved "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz"
@@ -2667,7 +1873,7 @@ data-view-byte-offset@^1.0.1:
es-errors "^1.3.0"
is-data-view "^1.0.1"
-debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.4.1, debug@4:
+debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.4.1, debug@4:
version "4.4.1"
resolved "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz"
integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==
@@ -2679,13 +1885,6 @@ decimal.js@^10.5.0:
resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz"
integrity sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==
-decode-named-character-reference@^1.0.0:
- version "1.2.0"
- resolved "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz"
- integrity sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==
- dependencies:
- character-entities "^2.0.0"
-
deep-eql@^5.0.1:
version "5.0.2"
resolved "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz"
@@ -2719,7 +1918,7 @@ define-properties@^1.1.3, define-properties@^1.2.1:
has-property-descriptors "^1.0.0"
object-keys "^1.1.1"
-dequal@^2.0.0, dequal@^2.0.2, dequal@^2.0.3:
+dequal@^2.0.3:
version "2.0.3"
resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz"
integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==
@@ -2729,18 +1928,6 @@ detect-node-es@^1.1.0:
resolved "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz"
integrity sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==
-devlop@^1.0.0, devlop@^1.1.0:
- version "1.1.0"
- resolved "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz"
- integrity sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==
- dependencies:
- dequal "^2.0.0"
-
-diff@^5.0.0, diff@^5.1.0:
- version "5.2.0"
- resolved "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz"
- integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==
-
dir-glob@^3.0.1:
version "3.0.1"
resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz"
@@ -2772,22 +1959,6 @@ dom-accessibility-api@^0.6.3:
resolved "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz"
integrity sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==
-dotenv@^16.0.3:
- version "16.6.1"
- resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz"
- integrity sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==
-
-downshift@^7.6.0:
- version "7.6.2"
- resolved "https://registry.npmjs.org/downshift/-/downshift-7.6.2.tgz"
- integrity sha512-iOv+E1Hyt3JDdL9yYcOgW7nZ7GQ2Uz6YbggwXvKUSleetYhU2nXD482Rz6CzvM4lvI1At34BYruKAL4swRGxaA==
- dependencies:
- "@babel/runtime" "^7.14.8"
- compute-scroll-into-view "^2.0.4"
- prop-types "^15.7.2"
- react-is "^17.0.2"
- tslib "^2.3.0"
-
dunder-proto@^1.0.0, dunder-proto@^1.0.1:
version "1.0.1"
resolved "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz"
@@ -2964,33 +2135,6 @@ es-to-primitive@^1.3.0:
is-date-object "^1.0.5"
is-symbol "^1.0.4"
-es5-ext@^0.10.35, es5-ext@^0.10.62, es5-ext@^0.10.64, es5-ext@~0.10.14:
- version "0.10.64"
- resolved "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz"
- integrity sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==
- dependencies:
- es6-iterator "^2.0.3"
- es6-symbol "^3.1.3"
- esniff "^2.0.1"
- next-tick "^1.1.0"
-
-es6-iterator@^2.0.3:
- version "2.0.3"
- resolved "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz"
- integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==
- dependencies:
- d "1"
- es5-ext "^0.10.35"
- es6-symbol "^3.1.1"
-
-es6-symbol@^3, es6-symbol@^3.1.1, es6-symbol@^3.1.3:
- version "3.1.4"
- resolved "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz"
- integrity sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==
- dependencies:
- d "^1.0.2"
- ext "^1.7.0"
-
esbuild-register@^3.5.0:
version "3.6.0"
resolved "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.6.0.tgz"
@@ -3035,21 +2179,11 @@ escalade@^3.2.0:
resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz"
integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==
-escape-carriage@^1.3.1:
- version "1.3.1"
- resolved "https://registry.npmjs.org/escape-carriage/-/escape-carriage-1.3.1.tgz"
- integrity sha512-GwBr6yViW3ttx1kb7/Oh+gKQ1/TrhYwxKqVmg5gS+BK+Qe2KrOa/Vh7w3HPBvgGf0LfcDGoY9I6NHKoA5Hozhw==
-
escape-string-regexp@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz"
integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
-escape-string-regexp@^5.0.0:
- version "5.0.0"
- resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz"
- integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==
-
eslint-config-mantine@^4.0.3:
version "4.0.3"
resolved "https://registry.npmjs.org/eslint-config-mantine/-/eslint-config-mantine-4.0.3.tgz"
@@ -3159,15 +2293,10 @@ eslint-visitor-keys@^4.2.1:
natural-compare "^1.4.0"
optionator "^0.9.3"
-esniff@^2.0.1:
- version "2.0.1"
- resolved "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz"
- integrity sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==
- dependencies:
- d "^1.0.1"
- es5-ext "^0.10.62"
- event-emitter "^0.3.5"
- type "^2.7.2"
+esm@^3.2.25:
+ version "3.2.25"
+ resolved "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz"
+ integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==
espree@^10.0.1, espree@^10.4.0:
version "10.4.0"
@@ -3202,19 +2331,6 @@ estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0:
resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz"
integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
-estree-util-is-identifier-name@^3.0.0:
- version "3.0.0"
- resolved "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz"
- integrity sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==
-
-estree-util-visit@^2.0.0:
- version "2.0.0"
- resolved "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz"
- integrity sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==
- dependencies:
- "@types/estree-jsx" "^1.0.0"
- "@types/unist" "^3.0.0"
-
estree-walker@^2.0.2:
version "2.0.2"
resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz"
@@ -3232,26 +2348,11 @@ esutils@^2.0.2:
resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz"
integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
-event-emitter@^0.3.5:
- version "0.3.5"
- resolved "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz"
- integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==
- dependencies:
- d "1"
- es5-ext "~0.10.14"
-
expect-type@^1.2.1:
version "1.2.2"
resolved "https://registry.npmjs.org/expect-type/-/expect-type-1.2.2.tgz"
integrity sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==
-ext@^1.7.0:
- version "1.7.0"
- resolved "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz"
- integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==
- dependencies:
- type "^2.7.2"
-
fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
version "3.1.3"
resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz"
@@ -3295,13 +2396,6 @@ fastq@^1.6.0:
dependencies:
reusify "^1.0.4"
-fault@^2.0.0:
- version "2.0.1"
- resolved "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz"
- integrity sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==
- dependencies:
- format "^0.2.0"
-
fdir@^6.4.4:
version "6.5.0"
resolved "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz"
@@ -3373,11 +2467,6 @@ foreground-child@^3.1.0:
cross-spawn "^7.0.6"
signal-exit "^4.0.1"
-format@^0.2.0:
- version "0.2.2"
- resolved "https://registry.npmjs.org/format/-/format-0.2.2.tgz"
- integrity sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==
-
function-bind@^1.1.2:
version "1.1.2"
resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz"
@@ -3625,11 +2714,6 @@ identity-obj-proxy@^3.0.0:
dependencies:
harmony-reflect "^1.4.6"
-ieee754@^1.2.1:
- version "1.2.1"
- resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz"
- integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
-
ignore@^5.2.0:
version "5.3.2"
resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz"
@@ -3682,24 +2766,6 @@ internal-slot@^1.1.0:
hasown "^2.0.2"
side-channel "^1.1.0"
-intersection-observer@^0.10.0:
- version "0.10.0"
- resolved "https://registry.npmjs.org/intersection-observer/-/intersection-observer-0.10.0.tgz"
- integrity sha512-fn4bQ0Xq8FTej09YC/jqKZwtijpvARlRp6wxL5WTA6yPe2YWSJ5RJh7Nm79rK2qB0wr6iDQzH60XGq5V/7u8YQ==
-
-is-alphabetical@^2.0.0:
- version "2.0.1"
- resolved "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz"
- integrity sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==
-
-is-alphanumerical@^2.0.0:
- version "2.0.1"
- resolved "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz"
- integrity sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==
- dependencies:
- is-alphabetical "^2.0.0"
- is-decimal "^2.0.0"
-
is-arguments@^1.0.4:
version "1.2.0"
resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz"
@@ -3777,11 +2843,6 @@ is-date-object@^1.0.5, is-date-object@^1.1.0:
call-bound "^1.0.2"
has-tostringtag "^1.0.2"
-is-decimal@^2.0.0:
- version "2.0.1"
- resolved "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz"
- integrity sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==
-
is-docker@^2.0.0, is-docker@^2.1.1:
version "2.2.1"
resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz"
@@ -3821,11 +2882,6 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3:
dependencies:
is-extglob "^2.1.1"
-is-hexadecimal@^2.0.0:
- version "2.0.1"
- resolved "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz"
- integrity sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==
-
is-map@^2.0.3:
version "2.0.3"
resolved "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz"
@@ -3942,11 +2998,6 @@ isexe@^2.0.0:
resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"
integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
-isomorphic.js@^0.2.4:
- version "0.2.5"
- resolved "https://registry.npmjs.org/isomorphic.js/-/isomorphic.js-0.2.5.tgz"
- integrity sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw==
-
iterator.prototype@^1.1.4:
version "1.1.5"
resolved "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz"
@@ -3978,7 +3029,7 @@ js-tokens@^9.0.1:
resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz"
integrity sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==
-js-yaml@^4.1.0, js-yaml@4.1.0:
+js-yaml@^4.1.0:
version "4.1.0"
resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz"
integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
@@ -4080,11 +3131,6 @@ kind-of@^6.0.2:
resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz"
integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
-kleur@^4.0.3:
- version "4.1.5"
- resolved "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz"
- integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==
-
known-css-properties@^0.36.0:
version "0.36.0"
resolved "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.36.0.tgz"
@@ -4115,18 +3161,6 @@ levn@^0.4.1:
prelude-ls "^1.2.1"
type-check "~0.4.0"
-lexical@^0.33.1, lexical@0.33.1:
- version "0.33.1"
- resolved "https://registry.npmjs.org/lexical/-/lexical-0.33.1.tgz"
- integrity sha512-+kiCS/GshQmCs/meMb8MQT4AMvw3S3Ef0lSCv2Xi6Itvs59OD+NjQWNfYkDteIbKtVE/w0Yiqh56VyGwIb8UcA==
-
-lib0@^0.2.99:
- version "0.2.114"
- resolved "https://registry.npmjs.org/lib0/-/lib0-0.2.114.tgz"
- integrity sha512-gcxmNFzA4hv8UYi8j43uPlQ7CGcyMJ2KQb5kZASw6SnAKAf10hK12i2fjrS3Cl/ugZa5Ui6WwIu1/6MIXiHttQ==
- dependencies:
- isomorphic.js "^0.2.4"
-
lines-and-columns@^1.1.6:
version "1.2.4"
resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz"
@@ -4149,11 +3183,6 @@ lodash.truncate@^4.4.2:
resolved "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz"
integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==
-longest-streak@^3.0.0:
- version "3.1.0"
- resolved "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz"
- integrity sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==
-
loose-envify@^1.4.0:
version "1.4.0"
resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz"
@@ -4183,7 +3212,7 @@ lru-cache@^5.1.1:
dependencies:
yallist "^3.0.2"
-lz-string@^1.4.4, lz-string@^1.5.0:
+lz-string@^1.5.0:
version "1.5.0"
resolved "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz"
integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==
@@ -4207,186 +3236,26 @@ map-or-similar@^1.5.0:
resolved "https://registry.npmjs.org/map-or-similar/-/map-or-similar-1.5.0.tgz"
integrity sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==
-markdown-table@^3.0.0:
- version "3.0.4"
- resolved "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz"
- integrity sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==
-
math-intrinsics@^1.1.0:
version "1.1.0"
resolved "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz"
integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==
+mathjax-full@^3.2.2:
+ version "3.2.2"
+ resolved "https://registry.npmjs.org/mathjax-full/-/mathjax-full-3.2.2.tgz"
+ integrity sha512-+LfG9Fik+OuI8SLwsiR02IVdjcnRCy5MufYLi0C3TdMT56L/pjB0alMVGgoWJF8pN9Rc7FESycZB9BMNWIid5w==
+ dependencies:
+ esm "^3.2.25"
+ mhchemparser "^4.1.0"
+ mj-context-menu "^0.6.1"
+ speech-rule-engine "^4.0.6"
+
mathml-tag-names@^2.1.3:
version "2.1.3"
resolved "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz"
integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==
-mdast-util-directive@^3.0.0:
- version "3.1.0"
- resolved "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-3.1.0.tgz"
- integrity sha512-I3fNFt+DHmpWCYAT7quoM6lHf9wuqtI+oCOfvILnoicNIqjh5E3dEJWiXuYME2gNe8vl1iMQwyUHa7bgFmak6Q==
- dependencies:
- "@types/mdast" "^4.0.0"
- "@types/unist" "^3.0.0"
- ccount "^2.0.0"
- devlop "^1.0.0"
- mdast-util-from-markdown "^2.0.0"
- mdast-util-to-markdown "^2.0.0"
- parse-entities "^4.0.0"
- stringify-entities "^4.0.0"
- unist-util-visit-parents "^6.0.0"
-
-mdast-util-from-markdown@^2.0.0:
- version "2.0.2"
- resolved "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz"
- integrity sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==
- dependencies:
- "@types/mdast" "^4.0.0"
- "@types/unist" "^3.0.0"
- decode-named-character-reference "^1.0.0"
- devlop "^1.0.0"
- mdast-util-to-string "^4.0.0"
- micromark "^4.0.0"
- micromark-util-decode-numeric-character-reference "^2.0.0"
- micromark-util-decode-string "^2.0.0"
- micromark-util-normalize-identifier "^2.0.0"
- micromark-util-symbol "^2.0.0"
- micromark-util-types "^2.0.0"
- unist-util-stringify-position "^4.0.0"
-
-mdast-util-frontmatter@^2.0.1:
- version "2.0.1"
- resolved "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-2.0.1.tgz"
- integrity sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==
- dependencies:
- "@types/mdast" "^4.0.0"
- devlop "^1.0.0"
- escape-string-regexp "^5.0.0"
- mdast-util-from-markdown "^2.0.0"
- mdast-util-to-markdown "^2.0.0"
- micromark-extension-frontmatter "^2.0.0"
-
-mdast-util-gfm-strikethrough@^2.0.0:
- version "2.0.0"
- resolved "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz"
- integrity sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==
- dependencies:
- "@types/mdast" "^4.0.0"
- mdast-util-from-markdown "^2.0.0"
- mdast-util-to-markdown "^2.0.0"
-
-mdast-util-gfm-table@^2.0.0:
- version "2.0.0"
- resolved "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz"
- integrity sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==
- dependencies:
- "@types/mdast" "^4.0.0"
- devlop "^1.0.0"
- markdown-table "^3.0.0"
- mdast-util-from-markdown "^2.0.0"
- mdast-util-to-markdown "^2.0.0"
-
-mdast-util-gfm-task-list-item@^2.0.0:
- version "2.0.0"
- resolved "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz"
- integrity sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==
- dependencies:
- "@types/mdast" "^4.0.0"
- devlop "^1.0.0"
- mdast-util-from-markdown "^2.0.0"
- mdast-util-to-markdown "^2.0.0"
-
-mdast-util-highlight-mark@^1.2.2:
- version "1.2.2"
- resolved "https://registry.npmjs.org/mdast-util-highlight-mark/-/mdast-util-highlight-mark-1.2.2.tgz"
- integrity sha512-OYumVoytj+B9YgwzBhBcYUCLYHIPvJtAvwnMyKhUXbfUFuER5S+FDZyu9fadUxm2TCT5fRYK3jQXh2ioWAxrMw==
- dependencies:
- micromark-extension-highlight-mark "1.2.0"
-
-mdast-util-mdx-expression@^2.0.0:
- version "2.0.1"
- resolved "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz"
- integrity sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==
- dependencies:
- "@types/estree-jsx" "^1.0.0"
- "@types/hast" "^3.0.0"
- "@types/mdast" "^4.0.0"
- devlop "^1.0.0"
- mdast-util-from-markdown "^2.0.0"
- mdast-util-to-markdown "^2.0.0"
-
-mdast-util-mdx-jsx@^3.0.0:
- version "3.2.0"
- resolved "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz"
- integrity sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==
- dependencies:
- "@types/estree-jsx" "^1.0.0"
- "@types/hast" "^3.0.0"
- "@types/mdast" "^4.0.0"
- "@types/unist" "^3.0.0"
- ccount "^2.0.0"
- devlop "^1.1.0"
- mdast-util-from-markdown "^2.0.0"
- mdast-util-to-markdown "^2.0.0"
- parse-entities "^4.0.0"
- stringify-entities "^4.0.0"
- unist-util-stringify-position "^4.0.0"
- vfile-message "^4.0.0"
-
-mdast-util-mdx@^3.0.0:
- version "3.0.0"
- resolved "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz"
- integrity sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==
- dependencies:
- mdast-util-from-markdown "^2.0.0"
- mdast-util-mdx-expression "^2.0.0"
- mdast-util-mdx-jsx "^3.0.0"
- mdast-util-mdxjs-esm "^2.0.0"
- mdast-util-to-markdown "^2.0.0"
-
-mdast-util-mdxjs-esm@^2.0.0:
- version "2.0.1"
- resolved "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz"
- integrity sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==
- dependencies:
- "@types/estree-jsx" "^1.0.0"
- "@types/hast" "^3.0.0"
- "@types/mdast" "^4.0.0"
- devlop "^1.0.0"
- mdast-util-from-markdown "^2.0.0"
- mdast-util-to-markdown "^2.0.0"
-
-mdast-util-phrasing@^4.0.0:
- version "4.1.0"
- resolved "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz"
- integrity sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==
- dependencies:
- "@types/mdast" "^4.0.0"
- unist-util-is "^6.0.0"
-
-mdast-util-to-markdown@^2.0.0, mdast-util-to-markdown@^2.1.0:
- version "2.1.2"
- resolved "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz"
- integrity sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==
- dependencies:
- "@types/mdast" "^4.0.0"
- "@types/unist" "^3.0.0"
- longest-streak "^3.0.0"
- mdast-util-phrasing "^4.0.0"
- mdast-util-to-string "^4.0.0"
- micromark-util-classify-character "^2.0.0"
- micromark-util-decode-string "^2.0.0"
- unist-util-visit "^5.0.0"
- zwitch "^2.0.0"
-
-mdast-util-to-string@^4.0.0:
- version "4.0.0"
- resolved "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz"
- integrity sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==
- dependencies:
- "@types/mdast" "^4.0.0"
-
mdn-data@^2.21.0:
version "2.24.0"
resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.24.0.tgz"
@@ -4414,362 +3283,10 @@ merge2@^1.3.0, merge2@^1.4.1:
resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz"
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
-micromark-core-commonmark@^2.0.0:
- version "2.0.3"
- resolved "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz"
- integrity sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==
- dependencies:
- decode-named-character-reference "^1.0.0"
- devlop "^1.0.0"
- micromark-factory-destination "^2.0.0"
- micromark-factory-label "^2.0.0"
- micromark-factory-space "^2.0.0"
- micromark-factory-title "^2.0.0"
- micromark-factory-whitespace "^2.0.0"
- micromark-util-character "^2.0.0"
- micromark-util-chunked "^2.0.0"
- micromark-util-classify-character "^2.0.0"
- micromark-util-html-tag-name "^2.0.0"
- micromark-util-normalize-identifier "^2.0.0"
- micromark-util-resolve-all "^2.0.0"
- micromark-util-subtokenize "^2.0.0"
- micromark-util-symbol "^2.0.0"
- micromark-util-types "^2.0.0"
-
-micromark-extension-directive@^3.0.0:
- version "3.0.2"
- resolved "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-3.0.2.tgz"
- integrity sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA==
- dependencies:
- devlop "^1.0.0"
- micromark-factory-space "^2.0.0"
- micromark-factory-whitespace "^2.0.0"
- micromark-util-character "^2.0.0"
- micromark-util-symbol "^2.0.0"
- micromark-util-types "^2.0.0"
- parse-entities "^4.0.0"
-
-micromark-extension-frontmatter@^2.0.0:
- version "2.0.0"
- resolved "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-2.0.0.tgz"
- integrity sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==
- dependencies:
- fault "^2.0.0"
- micromark-util-character "^2.0.0"
- micromark-util-symbol "^2.0.0"
- micromark-util-types "^2.0.0"
-
-micromark-extension-gfm-strikethrough@^2.0.0:
- version "2.1.0"
- resolved "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz"
- integrity sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==
- dependencies:
- devlop "^1.0.0"
- micromark-util-chunked "^2.0.0"
- micromark-util-classify-character "^2.0.0"
- micromark-util-resolve-all "^2.0.0"
- micromark-util-symbol "^2.0.0"
- micromark-util-types "^2.0.0"
-
-micromark-extension-gfm-table@^2.0.0:
- version "2.1.1"
- resolved "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz"
- integrity sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==
- dependencies:
- devlop "^1.0.0"
- micromark-factory-space "^2.0.0"
- micromark-util-character "^2.0.0"
- micromark-util-symbol "^2.0.0"
- micromark-util-types "^2.0.0"
-
-micromark-extension-gfm-task-list-item@^2.0.1:
- version "2.1.0"
- resolved "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz"
- integrity sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==
- dependencies:
- devlop "^1.0.0"
- micromark-factory-space "^2.0.0"
- micromark-util-character "^2.0.0"
- micromark-util-symbol "^2.0.0"
- micromark-util-types "^2.0.0"
-
-micromark-extension-highlight-mark@^1.2.0, micromark-extension-highlight-mark@1.2.0:
- version "1.2.0"
- resolved "https://registry.npmjs.org/micromark-extension-highlight-mark/-/micromark-extension-highlight-mark-1.2.0.tgz"
- integrity sha512-huGtbd/9kQsMk8u7nrVMaS5qH/47yDG6ZADggo5Owz5JoY8wdfQjfuy118/QiYNCvdFuFDbzT0A7K7Hp2cBsXA==
- dependencies:
- micromark-util-chunked "^2.0.0"
- micromark-util-classify-character "^2.0.0"
- micromark-util-resolve-all "^2.0.0"
- micromark-util-symbol "^2.0.0"
- micromark-util-types "^2.0.0"
- uvu "^0.5.6"
-
-micromark-extension-mdx-expression@^3.0.0:
- version "3.0.1"
- resolved "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz"
- integrity sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==
- dependencies:
- "@types/estree" "^1.0.0"
- devlop "^1.0.0"
- micromark-factory-mdx-expression "^2.0.0"
- micromark-factory-space "^2.0.0"
- micromark-util-character "^2.0.0"
- micromark-util-events-to-acorn "^2.0.0"
- micromark-util-symbol "^2.0.0"
- micromark-util-types "^2.0.0"
-
-micromark-extension-mdx-jsx@^3.0.0:
- version "3.0.2"
- resolved "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.2.tgz"
- integrity sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==
- dependencies:
- "@types/estree" "^1.0.0"
- devlop "^1.0.0"
- estree-util-is-identifier-name "^3.0.0"
- micromark-factory-mdx-expression "^2.0.0"
- micromark-factory-space "^2.0.0"
- micromark-util-character "^2.0.0"
- micromark-util-events-to-acorn "^2.0.0"
- micromark-util-symbol "^2.0.0"
- micromark-util-types "^2.0.0"
- vfile-message "^4.0.0"
-
-micromark-extension-mdx-md@^2.0.0:
- version "2.0.0"
- resolved "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz"
- integrity sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==
- dependencies:
- micromark-util-types "^2.0.0"
-
-micromark-extension-mdxjs-esm@^3.0.0:
- version "3.0.0"
- resolved "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz"
- integrity sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==
- dependencies:
- "@types/estree" "^1.0.0"
- devlop "^1.0.0"
- micromark-core-commonmark "^2.0.0"
- micromark-util-character "^2.0.0"
- micromark-util-events-to-acorn "^2.0.0"
- micromark-util-symbol "^2.0.0"
- micromark-util-types "^2.0.0"
- unist-util-position-from-estree "^2.0.0"
- vfile-message "^4.0.0"
-
-micromark-extension-mdxjs@^3.0.0:
- version "3.0.0"
- resolved "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz"
- integrity sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==
- dependencies:
- acorn "^8.0.0"
- acorn-jsx "^5.0.0"
- micromark-extension-mdx-expression "^3.0.0"
- micromark-extension-mdx-jsx "^3.0.0"
- micromark-extension-mdx-md "^2.0.0"
- micromark-extension-mdxjs-esm "^3.0.0"
- micromark-util-combine-extensions "^2.0.0"
- micromark-util-types "^2.0.0"
-
-micromark-factory-destination@^2.0.0:
- version "2.0.1"
- resolved "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz"
- integrity sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==
- dependencies:
- micromark-util-character "^2.0.0"
- micromark-util-symbol "^2.0.0"
- micromark-util-types "^2.0.0"
-
-micromark-factory-label@^2.0.0:
- version "2.0.1"
- resolved "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz"
- integrity sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==
- dependencies:
- devlop "^1.0.0"
- micromark-util-character "^2.0.0"
- micromark-util-symbol "^2.0.0"
- micromark-util-types "^2.0.0"
-
-micromark-factory-mdx-expression@^2.0.0:
- version "2.0.3"
- resolved "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.3.tgz"
- integrity sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==
- dependencies:
- "@types/estree" "^1.0.0"
- devlop "^1.0.0"
- micromark-factory-space "^2.0.0"
- micromark-util-character "^2.0.0"
- micromark-util-events-to-acorn "^2.0.0"
- micromark-util-symbol "^2.0.0"
- micromark-util-types "^2.0.0"
- unist-util-position-from-estree "^2.0.0"
- vfile-message "^4.0.0"
-
-micromark-factory-space@^2.0.0:
- version "2.0.1"
- resolved "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz"
- integrity sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==
- dependencies:
- micromark-util-character "^2.0.0"
- micromark-util-types "^2.0.0"
-
-micromark-factory-title@^2.0.0:
- version "2.0.1"
- resolved "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz"
- integrity sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==
- dependencies:
- micromark-factory-space "^2.0.0"
- micromark-util-character "^2.0.0"
- micromark-util-symbol "^2.0.0"
- micromark-util-types "^2.0.0"
-
-micromark-factory-whitespace@^2.0.0:
- version "2.0.1"
- resolved "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz"
- integrity sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==
- dependencies:
- micromark-factory-space "^2.0.0"
- micromark-util-character "^2.0.0"
- micromark-util-symbol "^2.0.0"
- micromark-util-types "^2.0.0"
-
-micromark-util-character@^2.0.0, micromark-util-character@^2.0.1:
- version "2.1.1"
- resolved "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz"
- integrity sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==
- dependencies:
- micromark-util-symbol "^2.0.0"
- micromark-util-types "^2.0.0"
-
-micromark-util-chunked@^2.0.0:
- version "2.0.1"
- resolved "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz"
- integrity sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==
- dependencies:
- micromark-util-symbol "^2.0.0"
-
-micromark-util-classify-character@^2.0.0:
- version "2.0.1"
- resolved "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz"
- integrity sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==
- dependencies:
- micromark-util-character "^2.0.0"
- micromark-util-symbol "^2.0.0"
- micromark-util-types "^2.0.0"
-
-micromark-util-combine-extensions@^2.0.0:
- version "2.0.1"
- resolved "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz"
- integrity sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==
- dependencies:
- micromark-util-chunked "^2.0.0"
- micromark-util-types "^2.0.0"
-
-micromark-util-decode-numeric-character-reference@^2.0.0:
- version "2.0.2"
- resolved "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz"
- integrity sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==
- dependencies:
- micromark-util-symbol "^2.0.0"
-
-micromark-util-decode-string@^2.0.0:
- version "2.0.1"
- resolved "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz"
- integrity sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==
- dependencies:
- decode-named-character-reference "^1.0.0"
- micromark-util-character "^2.0.0"
- micromark-util-decode-numeric-character-reference "^2.0.0"
- micromark-util-symbol "^2.0.0"
-
-micromark-util-encode@^2.0.0:
- version "2.0.1"
- resolved "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz"
- integrity sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==
-
-micromark-util-events-to-acorn@^2.0.0:
- version "2.0.3"
- resolved "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.3.tgz"
- integrity sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==
- dependencies:
- "@types/estree" "^1.0.0"
- "@types/unist" "^3.0.0"
- devlop "^1.0.0"
- estree-util-visit "^2.0.0"
- micromark-util-symbol "^2.0.0"
- micromark-util-types "^2.0.0"
- vfile-message "^4.0.0"
-
-micromark-util-html-tag-name@^2.0.0:
- version "2.0.1"
- resolved "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz"
- integrity sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==
-
-micromark-util-normalize-identifier@^2.0.0:
- version "2.0.1"
- resolved "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz"
- integrity sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==
- dependencies:
- micromark-util-symbol "^2.0.0"
-
-micromark-util-resolve-all@^2.0.0:
- version "2.0.1"
- resolved "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz"
- integrity sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==
- dependencies:
- micromark-util-types "^2.0.0"
-
-micromark-util-sanitize-uri@^2.0.0:
- version "2.0.1"
- resolved "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz"
- integrity sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==
- dependencies:
- micromark-util-character "^2.0.0"
- micromark-util-encode "^2.0.0"
- micromark-util-symbol "^2.0.0"
-
-micromark-util-subtokenize@^2.0.0:
- version "2.1.0"
- resolved "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz"
- integrity sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==
- dependencies:
- devlop "^1.0.0"
- micromark-util-chunked "^2.0.0"
- micromark-util-symbol "^2.0.0"
- micromark-util-types "^2.0.0"
-
-micromark-util-symbol@^2.0.0:
- version "2.0.1"
- resolved "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz"
- integrity sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==
-
-micromark-util-types@^2.0.0:
- version "2.0.2"
- resolved "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz"
- integrity sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==
-
-micromark@^4.0.0:
- version "4.0.2"
- resolved "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz"
- integrity sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==
- dependencies:
- "@types/debug" "^4.0.0"
- debug "^4.0.0"
- decode-named-character-reference "^1.0.0"
- devlop "^1.0.0"
- micromark-core-commonmark "^2.0.0"
- micromark-factory-space "^2.0.0"
- micromark-util-character "^2.0.0"
- micromark-util-chunked "^2.0.0"
- micromark-util-combine-extensions "^2.0.0"
- micromark-util-decode-numeric-character-reference "^2.0.0"
- micromark-util-encode "^2.0.0"
- micromark-util-normalize-identifier "^2.0.0"
- micromark-util-resolve-all "^2.0.0"
- micromark-util-sanitize-uri "^2.0.0"
- micromark-util-subtokenize "^2.0.0"
- micromark-util-symbol "^2.0.0"
- micromark-util-types "^2.0.0"
+mhchemparser@^4.1.0:
+ version "4.2.1"
+ resolved "https://registry.npmjs.org/mhchemparser/-/mhchemparser-4.2.1.tgz"
+ integrity sha512-kYmyrCirqJf3zZ9t/0wGgRZ4/ZJw//VwaRVGA75C4nhE60vtnIzhl9J9ndkX/h6hxSN7pjg/cE0VxbnNM+bnDQ==
micromatch@^4.0.8:
version "4.0.8"
@@ -4779,11 +3296,6 @@ micromatch@^4.0.8:
braces "^3.0.3"
picomatch "^2.3.1"
-mime-db@^1.52.0:
- version "1.54.0"
- resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz"
- integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==
-
min-indent@^1.0.0, min-indent@^1.0.1:
version "1.0.1"
resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz"
@@ -4813,10 +3325,10 @@ minimist@^1.2.6:
resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz"
integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==
-mri@^1.1.0:
- version "1.2.0"
- resolved "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz"
- integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==
+mj-context-menu@^0.6.1:
+ version "0.6.1"
+ resolved "https://registry.npmjs.org/mj-context-menu/-/mj-context-menu-0.6.1.tgz"
+ integrity sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA==
ms@^2.1.3:
version "2.1.3"
@@ -4833,11 +3345,6 @@ natural-compare@^1.4.0:
resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz"
integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
-next-tick@^1.1.0:
- version "1.1.0"
- resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz"
- integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==
-
node-releases@^2.0.19:
version "2.0.19"
resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz"
@@ -4931,11 +3438,6 @@ optionator@^0.9.3:
type-check "^0.4.0"
word-wrap "^1.2.5"
-outvariant@^1.3.0, outvariant@^1.4.0, outvariant@1.4.0:
- version "1.4.0"
- resolved "https://registry.npmjs.org/outvariant/-/outvariant-1.4.0.tgz"
- integrity sha512-AlWY719RF02ujitly7Kk/0QlV+pXGFDHrHf9O2OKqyqgBieaPOIeuSkL8sRK6j2WK+/ZAURq2kZsY0d8JapUiw==
-
own-keys@^1.0.1:
version "1.0.1"
resolved "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz"
@@ -4971,19 +3473,6 @@ parent-module@^1.0.0:
dependencies:
callsites "^3.0.0"
-parse-entities@^4.0.0:
- version "4.0.2"
- resolved "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz"
- integrity sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==
- dependencies:
- "@types/unist" "^2.0.0"
- character-entities-legacy "^3.0.0"
- character-reference-invalid "^2.0.0"
- decode-named-character-reference "^1.0.0"
- is-alphanumerical "^2.0.0"
- is-decimal "^2.0.0"
- is-hexadecimal "^2.0.0"
-
parse-json@^5.2.0:
version "5.2.0"
resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz"
@@ -5165,17 +3654,12 @@ pretty-format@^27.0.2:
ansi-styles "^5.0.0"
react-is "^17.0.1"
-prismjs@^1.30.0:
- version "1.30.0"
- resolved "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz"
- integrity sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==
-
process@^0.11.10:
version "0.11.10"
resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz"
integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==
-prop-types@^15.7.2, prop-types@^15.8.1:
+prop-types@^15.8.1:
version "15.8.1"
resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz"
integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
@@ -5194,13 +3678,6 @@ queue-microtask@^1.2.2:
resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz"
integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
-react-devtools-inline@4.4.0:
- version "4.4.0"
- resolved "https://registry.npmjs.org/react-devtools-inline/-/react-devtools-inline-4.4.0.tgz"
- integrity sha512-ES0GolSrKO8wsKbsEkVeiR/ZAaHQTY4zDh1UW8DImVmm8oaGLl3ijJDvSGe+qDRKPZdPRnDtWWnSvvrgxXdThQ==
- dependencies:
- es6-symbol "^3"
-
react-docgen-typescript@^2.2.2:
version "2.4.0"
resolved "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-2.4.0.tgz"
@@ -5222,31 +3699,19 @@ react-docgen@^7.0.0:
resolve "^1.22.1"
strip-indent "^4.0.0"
-"react-dom@^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom@^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom@^16.8.0 || ^17 || ^18 || ^19", "react-dom@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react-dom@^18.0.0 || ^19.0.0", "react-dom@^18.x || ^19.x", react-dom@^19.1.1, "react-dom@>= 18 || >= 19", react-dom@>=16.8.0, react-dom@>=17.0.0, react-dom@>=17.x, react-dom@>=18:
+"react-dom@^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react-dom@^18.0.0 || ^19.0.0", "react-dom@^18.x || ^19.x", react-dom@^19.1.1, react-dom@>=16.8.0, react-dom@>=18:
version "19.1.1"
resolved "https://registry.npmjs.org/react-dom/-/react-dom-19.1.1.tgz"
integrity sha512-Dlq/5LAZgF0Gaz6yiqZCf6VCcZs1ghAJyrsu84Q/GT0gV+mCxbfmKNoGRKBYMJ8IEdGPqu49YWXD02GCknEDkw==
dependencies:
scheduler "^0.26.0"
-react-error-boundary@^3.1.4:
- version "3.1.4"
- resolved "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-3.1.4.tgz"
- integrity sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==
- dependencies:
- "@babel/runtime" "^7.12.5"
-
-react-hook-form@^7.56.1:
- version "7.62.0"
- resolved "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.62.0.tgz"
- integrity sha512-7KWFejc98xqG/F4bAxpL41NB3o1nnvQO1RWZT3TqRZYL8RryQETGfEdVnJN2fy1crCiBLLjkRBVK05j24FxJGA==
-
react-is@^16.13.1:
version "16.13.1"
resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
-react-is@^17.0.1, react-is@^17.0.2:
+react-is@^17.0.1:
version "17.0.2"
resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz"
integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
@@ -5269,7 +3734,7 @@ react-remove-scroll-bar@^2.3.7:
react-style-singleton "^2.2.2"
tslib "^2.0.0"
-react-remove-scroll@^2.6.2, react-remove-scroll@^2.6.3:
+react-remove-scroll@^2.6.2:
version "2.7.1"
resolved "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.1.tgz"
integrity sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA==
@@ -5312,7 +3777,7 @@ react-textarea-autosize@8.5.9:
use-composed-ref "^1.3.0"
use-latest "^1.2.1"
-"react@^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react@^16.8.0 || ^17 || ^18 || ^19", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react@^16.x || ^17.x || ^18.x || ^19.0.0 || ^19.0.0-rc", "react@^18.0.0 || ^19.0.0", "react@^18.x || ^19.x", react@^19.1.1, "react@>= 18 || >= 19", react@>=16.12.0, react@>=16.13.1, react@>=16.8, react@>=16.8.0, react@>=17.0.0, react@>=17.x, react@>=18:
+"react@^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react@^18.0.0 || ^19.0.0", "react@^18.x || ^19.x", react@^19.1.1, react@>=16.8.0, react@>=18:
version "19.1.1"
resolved "https://registry.npmjs.org/react/-/react-19.1.1.tgz"
integrity sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ==
@@ -5442,13 +3907,6 @@ run-parallel@^1.1.9:
dependencies:
queue-microtask "^1.2.2"
-sade@^1.7.3:
- version "1.8.1"
- resolved "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz"
- integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==
- dependencies:
- mri "^1.1.0"
-
safe-array-concat@^1.1.3:
version "1.1.3"
resolved "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz"
@@ -5626,21 +4084,20 @@ source-map@~0.6.1:
resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+speech-rule-engine@^4.0.6:
+ version "4.1.2"
+ resolved "https://registry.npmjs.org/speech-rule-engine/-/speech-rule-engine-4.1.2.tgz"
+ integrity sha512-S6ji+flMEga+1QU79NDbwZ8Ivf0S/MpupQQiIC0rTpU/ZTKgcajijJJb1OcByBQDjrXCN1/DJtGz4ZJeBMPGJw==
+ dependencies:
+ "@xmldom/xmldom" "0.9.8"
+ commander "13.1.0"
+ wicked-good-xpath "1.3.0"
+
stackback@0.0.2:
version "0.0.2"
resolved "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz"
integrity sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==
-static-browser-server@1.0.3:
- version "1.0.3"
- resolved "https://registry.npmjs.org/static-browser-server/-/static-browser-server-1.0.3.tgz"
- integrity sha512-ZUyfgGDdFRbZGGJQ1YhiM930Yczz5VlbJObrQLlk24+qNHVQx4OlLcYswEUo3bIyNAbQUIUR9Yr5/Hqjzqb4zA==
- dependencies:
- "@open-draft/deferred-promise" "^2.1.0"
- dotenv "^16.0.3"
- mime-db "^1.52.0"
- outvariant "^1.3.0"
-
std-env@^3.9.0:
version "3.9.0"
resolved "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz"
@@ -5675,11 +4132,6 @@ storybook-dark-mode@^4.0.2:
dependencies:
"@storybook/core" "8.6.14"
-strict-event-emitter@^0.4.3:
- version "0.4.6"
- resolved "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.4.6.tgz"
- integrity sha512-12KWeb+wixJohmnwNFerbyiBrAlq5qJLwIt38etRtKtmmHyDSoGlIqFE9wx+4IwG0aDjI7GV8tc8ZccjWZZtTg==
-
"string-width-cjs@npm:string-width@^4.2.0":
version "4.2.3"
resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
@@ -5784,14 +4236,6 @@ string.prototype.trimstart@^1.0.8:
define-properties "^1.2.1"
es-object-atoms "^1.0.0"
-stringify-entities@^4.0.0:
- version "4.0.4"
- resolved "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz"
- integrity sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==
- dependencies:
- character-entities-html4 "^2.0.0"
- character-entities-legacy "^3.0.0"
-
"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
version "6.0.1"
resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz"
@@ -6082,7 +4526,7 @@ tsconfig-paths@^4.2.0:
minimist "^1.2.6"
strip-bom "^3.0.0"
-tslib@^2.0.0, tslib@^2.0.1, tslib@^2.1.0, tslib@^2.3.0:
+tslib@^2.0.0, tslib@^2.0.1, tslib@^2.1.0:
version "2.8.1"
resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz"
integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
@@ -6099,11 +4543,6 @@ type-fest@^4.27.0:
resolved "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz"
integrity sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==
-type@^2.7.2:
- version "2.7.3"
- resolved "https://registry.npmjs.org/type/-/type-2.7.3.tgz"
- integrity sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==
-
typed-array-buffer@^1.0.3:
version "1.0.3"
resolved "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz"
@@ -6179,51 +4618,6 @@ undici-types@~6.21.0:
resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz"
integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==
-unidiff@^1.0.2:
- version "1.0.4"
- resolved "https://registry.npmjs.org/unidiff/-/unidiff-1.0.4.tgz"
- integrity sha512-ynU0vsAXw0ir8roa+xPCUHmnJ5goc5BTM2Kuc3IJd8UwgaeRs7VSD5+eeaQL+xp1JtB92hu/Zy/Lgy7RZcr1pQ==
- dependencies:
- diff "^5.1.0"
-
-unist-util-is@^6.0.0:
- version "6.0.0"
- resolved "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz"
- integrity sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==
- dependencies:
- "@types/unist" "^3.0.0"
-
-unist-util-position-from-estree@^2.0.0:
- version "2.0.0"
- resolved "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz"
- integrity sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==
- dependencies:
- "@types/unist" "^3.0.0"
-
-unist-util-stringify-position@^4.0.0:
- version "4.0.0"
- resolved "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz"
- integrity sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==
- dependencies:
- "@types/unist" "^3.0.0"
-
-unist-util-visit-parents@^6.0.0:
- version "6.0.1"
- resolved "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz"
- integrity sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==
- dependencies:
- "@types/unist" "^3.0.0"
- unist-util-is "^6.0.0"
-
-unist-util-visit@^5.0.0:
- version "5.0.0"
- resolved "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz"
- integrity sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==
- dependencies:
- "@types/unist" "^3.0.0"
- unist-util-is "^6.0.0"
- unist-util-visit-parents "^6.0.0"
-
unplugin@^1.3.1:
version "1.16.1"
resolved "https://registry.npmjs.org/unplugin/-/unplugin-1.16.1.tgz"
@@ -6295,24 +4689,6 @@ util@^0.12.5:
is-typed-array "^1.1.3"
which-typed-array "^1.1.2"
-uvu@^0.5.6:
- version "0.5.6"
- resolved "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz"
- integrity sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==
- dependencies:
- dequal "^2.0.0"
- diff "^5.0.0"
- kleur "^4.0.3"
- sade "^1.7.3"
-
-vfile-message@^4.0.0:
- version "4.0.3"
- resolved "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz"
- integrity sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==
- dependencies:
- "@types/unist" "^3.0.0"
- unist-util-stringify-position "^4.0.0"
-
vite-node@3.2.4:
version "3.2.4"
resolved "https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz"
@@ -6493,6 +4869,11 @@ why-is-node-running@^2.3.0:
siginfo "^2.0.0"
stackback "0.0.2"
+wicked-good-xpath@1.3.0:
+ version "1.3.0"
+ resolved "https://registry.npmjs.org/wicked-good-xpath/-/wicked-good-xpath-1.3.0.tgz"
+ integrity sha512-Gd9+TUn5nXdwj/hFsPVx5cuHHiF5Bwuc30jZ4+ronF1qHK5O7HD0sgmXWSEgwKquT3ClLoKPVbO6qGwVwLzvAw==
+
word-wrap@^1.2.5:
version "1.2.5"
resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz"
@@ -6544,19 +4925,7 @@ yallist@^3.0.2:
resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz"
integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
-yjs@>=13.5.22:
- version "13.6.27"
- resolved "https://registry.npmjs.org/yjs/-/yjs-13.6.27.tgz"
- integrity sha512-OIDwaflOaq4wC6YlPBy2L6ceKeKuF7DeTxx+jPzv1FHn9tCZ0ZwSRnUBxD05E3yed46fv/FWJbvR+Ud7x0L7zw==
- dependencies:
- lib0 "^0.2.99"
-
yocto-queue@^0.1.0:
version "0.1.0"
resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz"
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
-
-zwitch@^2.0.0:
- version "2.0.4"
- resolved "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz"
- integrity sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==