feat: replace react-ace with @uiw/react-codemirror
react-ace v14 is CommonJS-only with no ESM entry point, making it fundamentally incompatible with Vite's ESM-first dev server. Every CJS interop workaround failed. Switched to @uiw/react-codemirror v4.25 which ships proper dual ESM+CJS and works with Vite out of the box. Changes: - Remove ace-builds and react-ace dependencies - Add @uiw/react-codemirror + 16 @codemirror/lang-* packages - Add @uiw/codemirror-theme-tomorrow-night-blue (closest to ACE's 'tomorrow') - Add @replit/codemirror-lang-csharp for C# support - Rewrite EditorPanel.tsx: delete 108 lines of ACE boilerplate (?url imports, setModuleUrl, CJS interop hack), replace with ~30 lines of clean CodeMirror language extension setup - Delete vite.d.ts (only needed for ACE ?url import types) - Remove optimizeDeps.include from vite.config.ts (not needed for CM) - Add CodeMirror flex layout CSS to index.css Supported languages: JavaScript/JSX, TypeScript/TSX, Python, JSON, HTML, CSS, Less, YAML, Markdown, SQL, Java, Go, Rust, C/C++, C#, PHP, XML. Unsupported types fall back to plain text. Verified: tsc clean, vite build passes, heartbeat worker intact.
This commit is contained in:
parent
dc54ea3dec
commit
c705cbd3d9
@ -11,9 +11,25 @@
|
|||||||
"author": "Robert Colbert <rob.colbert@openplatform.us>",
|
"author": "Robert Colbert <rob.colbert@openplatform.us>",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ace-builds": "^1.44.0",
|
"@codemirror/lang-cpp": "^6.0.3",
|
||||||
"marked": "^16.0.0",
|
"@codemirror/lang-css": "^6.3.1",
|
||||||
"react-ace": "^14.0.1",
|
"@codemirror/lang-go": "^6.0.1",
|
||||||
|
"@codemirror/lang-html": "^6.4.11",
|
||||||
|
"@codemirror/lang-java": "^6.0.2",
|
||||||
|
"@codemirror/lang-javascript": "^6.2.5",
|
||||||
|
"@codemirror/lang-json": "^6.0.2",
|
||||||
|
"@codemirror/lang-less": "^6.0.2",
|
||||||
|
"@codemirror/lang-markdown": "^6.5.0",
|
||||||
|
"@codemirror/lang-php": "^6.0.2",
|
||||||
|
"@codemirror/lang-python": "^6.2.1",
|
||||||
|
"@codemirror/lang-rust": "^6.0.2",
|
||||||
|
"@codemirror/lang-sql": "^6.10.0",
|
||||||
|
"@codemirror/lang-xml": "^6.1.0",
|
||||||
|
"@codemirror/lang-yaml": "^6.1.3",
|
||||||
|
"@replit/codemirror-lang-csharp": "^6.2.0",
|
||||||
|
"@uiw/codemirror-theme-tomorrow-night-blue": "^4.25.9",
|
||||||
|
"@uiw/react-codemirror": "^4.25.9",
|
||||||
|
"marked": "^16.4.2",
|
||||||
"slug": "^11.0.1"
|
"slug": "^11.0.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,115 +1,27 @@
|
|||||||
import { useState, useCallback, useEffect } from 'react';
|
import { useState, useCallback, useEffect, useMemo } from 'react';
|
||||||
import * as ReactAceModule from 'react-ace';
|
import CodeMirror from '@uiw/react-codemirror';
|
||||||
import * as aceModule from 'ace-builds';
|
import { tomorrowNightBlue } from '@uiw/codemirror-theme-tomorrow-night-blue';
|
||||||
|
|
||||||
// react-ace v14 ships CommonJS, so the default export may be nested under
|
// Language extensions
|
||||||
// `.default` when Vite pre-bundles it for the dev server. Handle both cases.
|
import { javascript } from '@codemirror/lang-javascript';
|
||||||
const Ace = (ReactAceModule as any).default || ReactAceModule;
|
import { python } from '@codemirror/lang-python';
|
||||||
const ace = (aceModule as any).default || aceModule;
|
import { json } from '@codemirror/lang-json';
|
||||||
|
import { html } from '@codemirror/lang-html';
|
||||||
|
import { css } from '@codemirror/lang-css';
|
||||||
|
import { yaml } from '@codemirror/lang-yaml';
|
||||||
|
import { markdown } from '@codemirror/lang-markdown';
|
||||||
|
import { sql } from '@codemirror/lang-sql';
|
||||||
|
import { java } from '@codemirror/lang-java';
|
||||||
|
import { go } from '@codemirror/lang-go';
|
||||||
|
import { rust } from '@codemirror/lang-rust';
|
||||||
|
import { cpp } from '@codemirror/lang-cpp';
|
||||||
|
import { php } from '@codemirror/lang-php';
|
||||||
|
import { xml } from '@codemirror/lang-xml';
|
||||||
|
import { less } from '@codemirror/lang-less';
|
||||||
|
import { csharp } from '@replit/codemirror-lang-csharp';
|
||||||
|
|
||||||
// ── Vite ?url imports for ACE modes ──────────────────────────────────────
|
import { WorkspaceMode } from '../lib/types';
|
||||||
// These resolve at build time to asset URLs. We register them with ACE's
|
import { socketClient } from '../lib/socket';
|
||||||
// module system via setModuleUrl() so that ACE can lazy-load them at runtime
|
|
||||||
// without relying on broken dynamic import() or script-tag detection.
|
|
||||||
//
|
|
||||||
// See: https://github.com/ajaxorg/ace/issues/4597
|
|
||||||
// ─────────────────────────────────────────────────────────────────────────
|
|
||||||
|
|
||||||
import modeJavascriptUrl from "ace-builds/src-noconflict/mode-javascript?url";
|
|
||||||
import modeTypescriptUrl from "ace-builds/src-noconflict/mode-typescript?url";
|
|
||||||
import modePythonUrl from "ace-builds/src-noconflict/mode-python?url";
|
|
||||||
import modeJsonUrl from "ace-builds/src-noconflict/mode-json?url";
|
|
||||||
import modeHtmlUrl from "ace-builds/src-noconflict/mode-html?url";
|
|
||||||
import modeCssUrl from "ace-builds/src-noconflict/mode-css?url";
|
|
||||||
import modeYamlUrl from "ace-builds/src-noconflict/mode-yaml?url";
|
|
||||||
import modeMarkdownUrl from "ace-builds/src-noconflict/mode-markdown?url";
|
|
||||||
import modeShUrl from "ace-builds/src-noconflict/mode-sh?url";
|
|
||||||
import modeSqlUrl from "ace-builds/src-noconflict/mode-sql?url";
|
|
||||||
import modeJavaUrl from "ace-builds/src-noconflict/mode-java?url";
|
|
||||||
import modeGolangUrl from "ace-builds/src-noconflict/mode-golang?url";
|
|
||||||
import modeRustUrl from "ace-builds/src-noconflict/mode-rust?url";
|
|
||||||
import modeCsharpUrl from "ace-builds/src-noconflict/mode-csharp?url";
|
|
||||||
import modePhpUrl from "ace-builds/src-noconflict/mode-php?url";
|
|
||||||
import modeRubyUrl from "ace-builds/src-noconflict/mode-ruby?url";
|
|
||||||
import modeCcppUrl from "ace-builds/src-noconflict/mode-c_cpp?url";
|
|
||||||
import modeScssUrl from "ace-builds/src-noconflict/mode-scss?url";
|
|
||||||
import modeLessUrl from "ace-builds/src-noconflict/mode-less?url";
|
|
||||||
import modeXmlUrl from "ace-builds/src-noconflict/mode-xml?url";
|
|
||||||
import modeDockerfileUrl from "ace-builds/src-noconflict/mode-dockerfile?url";
|
|
||||||
import modeMakefileUrl from "ace-builds/src-noconflict/mode-makefile?url";
|
|
||||||
import modeSassUrl from "ace-builds/src-noconflict/mode-sass?url";
|
|
||||||
import modeTextUrl from "ace-builds/src-noconflict/mode-text?url";
|
|
||||||
|
|
||||||
// Workers (for syntax validation — currently disabled via useWorker:false,
|
|
||||||
// but registered in case we want to enable them later)
|
|
||||||
import workerJavascriptUrl from "ace-builds/src-noconflict/worker-javascript?url";
|
|
||||||
import workerJsonUrl from "ace-builds/src-noconflict/worker-json?url";
|
|
||||||
import workerCssUrl from "ace-builds/src-noconflict/worker-css?url";
|
|
||||||
import workerHtmlUrl from "ace-builds/src-noconflict/worker-html?url";
|
|
||||||
|
|
||||||
// Theme
|
|
||||||
import themeTomorrowUrl from "ace-builds/src-noconflict/theme-tomorrow?url";
|
|
||||||
|
|
||||||
// Extensions
|
|
||||||
import extLanguageToolsUrl from "ace-builds/src-noconflict/ext-language_tools?url";
|
|
||||||
import extSearchboxUrl from "ace-builds/src-noconflict/ext-searchbox?url";
|
|
||||||
|
|
||||||
// ── Register all modules with ACE ────────────────────────────────────────
|
|
||||||
|
|
||||||
const MODE_URLS: Record<string, string> = {
|
|
||||||
javascript: modeJavascriptUrl,
|
|
||||||
typescript: modeTypescriptUrl,
|
|
||||||
python: modePythonUrl,
|
|
||||||
json: modeJsonUrl,
|
|
||||||
html: modeHtmlUrl,
|
|
||||||
css: modeCssUrl,
|
|
||||||
yaml: modeYamlUrl,
|
|
||||||
markdown: modeMarkdownUrl,
|
|
||||||
sh: modeShUrl,
|
|
||||||
sql: modeSqlUrl,
|
|
||||||
java: modeJavaUrl,
|
|
||||||
golang: modeGolangUrl,
|
|
||||||
rust: modeRustUrl,
|
|
||||||
csharp: modeCsharpUrl,
|
|
||||||
php: modePhpUrl,
|
|
||||||
ruby: modeRubyUrl,
|
|
||||||
c_cpp: modeCcppUrl,
|
|
||||||
scss: modeScssUrl,
|
|
||||||
less: modeLessUrl,
|
|
||||||
xml: modeXmlUrl,
|
|
||||||
dockerfile: modeDockerfileUrl,
|
|
||||||
makefile: modeMakefileUrl,
|
|
||||||
sass: modeSassUrl,
|
|
||||||
text: modeTextUrl,
|
|
||||||
};
|
|
||||||
|
|
||||||
const WORKER_URLS: Record<string, string> = {
|
|
||||||
javascript: workerJavascriptUrl,
|
|
||||||
typescript: workerJavascriptUrl, // TS mode shares the JS worker
|
|
||||||
json: workerJsonUrl,
|
|
||||||
css: workerCssUrl,
|
|
||||||
html: workerHtmlUrl,
|
|
||||||
};
|
|
||||||
|
|
||||||
// Register modes
|
|
||||||
for (const [mode, url] of Object.entries(MODE_URLS)) {
|
|
||||||
ace.config.setModuleUrl(`ace/mode/${mode}`, url);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Register workers
|
|
||||||
for (const [mode, url] of Object.entries(WORKER_URLS)) {
|
|
||||||
ace.config.setModuleUrl(`ace/mode/${mode}_worker`, url);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Register theme and extensions
|
|
||||||
ace.config.setModuleUrl("ace/theme/tomorrow", themeTomorrowUrl);
|
|
||||||
ace.config.setModuleUrl("ace/ext/language_tools", extLanguageToolsUrl);
|
|
||||||
ace.config.setModuleUrl("ace/ext/searchbox", extSearchboxUrl);
|
|
||||||
|
|
||||||
// ── Component ────────────────────────────────────────────────────────────
|
|
||||||
|
|
||||||
import { WorkspaceMode } from "../lib/types";
|
|
||||||
import { socketClient } from "../lib/socket";
|
|
||||||
|
|
||||||
interface EditorPanelProps {
|
interface EditorPanelProps {
|
||||||
workspaceMode: WorkspaceMode;
|
workspaceMode: WorkspaceMode;
|
||||||
@ -128,88 +40,112 @@ interface EditorState {
|
|||||||
successMessage?: string;
|
successMessage?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Map file extensions to ACE language modes
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
function detectLanguage(filePath: string): string {
|
type Extension = any;
|
||||||
const ext = filePath.split(".").pop()?.toLowerCase();
|
|
||||||
const languageMap: Record<string, string> = {
|
/**
|
||||||
js: "javascript",
|
* Map a language key to a CodeMirror language extension array.
|
||||||
jsx: "javascript",
|
* Returns an empty array for unsupported types (plain text).
|
||||||
ts: "typescript",
|
*/
|
||||||
tsx: "typescript",
|
function getLanguageExtensions(language: string): Extension[] {
|
||||||
py: "python",
|
const extensionMap: Record<string, (() => Extension)[]> = {
|
||||||
rb: "ruby",
|
javascript: [() => javascript({ jsx: true })],
|
||||||
java: "java",
|
typescript: [() => javascript({ jsx: true, typescript: true })],
|
||||||
c: "c_cpp",
|
python: [() => python()],
|
||||||
cpp: "c_cpp",
|
json: [() => json()],
|
||||||
h: "c_cpp",
|
html: [() => html()],
|
||||||
hpp: "c_cpp",
|
css: [() => css()],
|
||||||
cs: "csharp",
|
yaml: [() => yaml()],
|
||||||
go: "golang",
|
markdown: [() => markdown()],
|
||||||
rs: "rust",
|
sql: [() => sql()],
|
||||||
php: "php",
|
java: [() => java()],
|
||||||
html: "html",
|
golang: [() => go()],
|
||||||
htm: "html",
|
rust: [() => rust()],
|
||||||
css: "css",
|
c_cpp: [() => cpp()],
|
||||||
scss: "scss",
|
csharp: [() => csharp()],
|
||||||
sass: "sass",
|
php: [() => php()],
|
||||||
less: "less",
|
xml: [() => xml()],
|
||||||
json: "json",
|
less: [() => less()],
|
||||||
xml: "xml",
|
|
||||||
yaml: "yaml",
|
|
||||||
yml: "yaml",
|
|
||||||
md: "markdown",
|
|
||||||
sql: "sql",
|
|
||||||
sh: "sh",
|
|
||||||
bash: "sh",
|
|
||||||
dockerfile: "dockerfile",
|
|
||||||
makefile: "makefile",
|
|
||||||
};
|
};
|
||||||
return languageMap[ext || ""] || "text";
|
const factories = extensionMap[language];
|
||||||
|
return factories ? factories.map(fn => fn()) : [];
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function EditorPanel({
|
/** Map file extension string to a language key used by getLanguageExtensions. */
|
||||||
workspaceMode,
|
function detectLanguage(filePath: string): string {
|
||||||
filePath,
|
const ext = filePath.split('.').pop()?.toLowerCase();
|
||||||
onCloseFile,
|
const languageMap: Record<string, string> = {
|
||||||
}: EditorPanelProps) {
|
js: 'javascript',
|
||||||
|
jsx: 'javascript',
|
||||||
|
ts: 'typescript',
|
||||||
|
tsx: 'typescript',
|
||||||
|
py: 'python',
|
||||||
|
java: 'java',
|
||||||
|
c: 'c_cpp',
|
||||||
|
cpp: 'c_cpp',
|
||||||
|
h: 'c_cpp',
|
||||||
|
hpp: 'c_cpp',
|
||||||
|
cs: 'csharp',
|
||||||
|
go: 'golang',
|
||||||
|
rs: 'rust',
|
||||||
|
php: 'php',
|
||||||
|
html: 'html',
|
||||||
|
htm: 'html',
|
||||||
|
css: 'css',
|
||||||
|
scss: 'css', // CM6 has no official SCSS; CSS is close enough
|
||||||
|
less: 'less',
|
||||||
|
json: 'json',
|
||||||
|
xml: 'xml',
|
||||||
|
yaml: 'yaml',
|
||||||
|
yml: 'yaml',
|
||||||
|
md: 'markdown',
|
||||||
|
sql: 'sql',
|
||||||
|
};
|
||||||
|
return languageMap[ext || ''] || 'text';
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function EditorPanel({ workspaceMode, filePath, onCloseFile }: EditorPanelProps) {
|
||||||
const [state, setState] = useState<EditorState>({
|
const [state, setState] = useState<EditorState>({
|
||||||
content: "",
|
content: '',
|
||||||
originalContent: "",
|
originalContent: '',
|
||||||
isDirty: false,
|
isDirty: false,
|
||||||
isLoading: false,
|
isLoading: false,
|
||||||
isSaving: false,
|
isSaving: false,
|
||||||
language: "text",
|
language: 'text',
|
||||||
});
|
});
|
||||||
|
|
||||||
const isReadOnly = workspaceMode === WorkspaceMode.Agent;
|
const isReadOnly = workspaceMode === WorkspaceMode.Agent;
|
||||||
const isReadWrite = workspaceMode === WorkspaceMode.User;
|
|
||||||
|
// Build extensions array from current language
|
||||||
|
const extensions = useMemo(
|
||||||
|
() => getLanguageExtensions(state.language),
|
||||||
|
[state.language],
|
||||||
|
);
|
||||||
|
|
||||||
// Load file when filePath changes
|
// Load file when filePath changes
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (filePath) {
|
if (filePath) {
|
||||||
loadFile(filePath);
|
loadFile(filePath);
|
||||||
} else {
|
} else {
|
||||||
// Clear editor when no file is selected
|
|
||||||
setState({
|
setState({
|
||||||
content: "",
|
content: '',
|
||||||
originalContent: "",
|
originalContent: '',
|
||||||
isDirty: false,
|
isDirty: false,
|
||||||
isLoading: false,
|
isLoading: false,
|
||||||
isSaving: false,
|
isSaving: false,
|
||||||
language: "text",
|
language: 'text',
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}, [filePath]);
|
}, [filePath]);
|
||||||
|
|
||||||
const loadFile = useCallback(async (path: string) => {
|
const loadFile = useCallback(async (path: string) => {
|
||||||
setState((prev) => ({ ...prev, isLoading: true, error: undefined }));
|
setState(prev => ({ ...prev, isLoading: true, error: undefined }));
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const result = await socketClient.requestFileRead({ path });
|
const result = await socketClient.requestFileRead({ path });
|
||||||
|
|
||||||
if (result.success && result.content !== undefined) {
|
if (result.success && result.content !== undefined) {
|
||||||
const language = detectLanguage(path);
|
const language = detectLanguage(path);
|
||||||
// No dynamic import needed — all modes are registered via setModuleUrl at module load time
|
|
||||||
setState({
|
setState({
|
||||||
content: result.content,
|
content: result.content,
|
||||||
originalContent: result.content,
|
originalContent: result.content,
|
||||||
@ -219,17 +155,17 @@ export default function EditorPanel({
|
|||||||
language,
|
language,
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
setState((prev) => ({
|
setState(prev => ({
|
||||||
...prev,
|
...prev,
|
||||||
isLoading: false,
|
isLoading: false,
|
||||||
error: result.error || "Failed to load file",
|
error: result.error || 'Failed to load file',
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
setState((prev) => ({
|
setState(prev => ({
|
||||||
...prev,
|
...prev,
|
||||||
isLoading: false,
|
isLoading: false,
|
||||||
error: error instanceof Error ? error.message : "Failed to load file",
|
error: error instanceof Error ? error.message : 'Failed to load file',
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
}, []);
|
}, []);
|
||||||
@ -237,7 +173,7 @@ export default function EditorPanel({
|
|||||||
const saveFile = useCallback(async () => {
|
const saveFile = useCallback(async () => {
|
||||||
if (!filePath || isReadOnly) return;
|
if (!filePath || isReadOnly) return;
|
||||||
|
|
||||||
setState((prev) => ({ ...prev, isSaving: true, error: undefined }));
|
setState(prev => ({ ...prev, isSaving: true, error: undefined }));
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const result = await socketClient.requestFileWrite({
|
const result = await socketClient.requestFileWrite({
|
||||||
@ -246,78 +182,63 @@ export default function EditorPanel({
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (result.success) {
|
if (result.success) {
|
||||||
setState((prev) => ({
|
setState(prev => ({
|
||||||
...prev,
|
...prev,
|
||||||
isSaving: false,
|
isSaving: false,
|
||||||
originalContent: prev.content,
|
originalContent: prev.content,
|
||||||
isDirty: false,
|
isDirty: false,
|
||||||
successMessage: "File saved successfully",
|
successMessage: 'File saved successfully',
|
||||||
}));
|
}));
|
||||||
|
|
||||||
// Clear success message after 3 seconds
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
setState((prev) => ({ ...prev, successMessage: undefined }));
|
setState(prev => ({ ...prev, successMessage: undefined }));
|
||||||
}, 3000);
|
}, 3000);
|
||||||
} else {
|
} else {
|
||||||
setState((prev) => ({
|
setState(prev => ({
|
||||||
...prev,
|
...prev,
|
||||||
isSaving: false,
|
isSaving: false,
|
||||||
error: result.error || "Failed to save file",
|
error: result.error || 'Failed to save file',
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
setState((prev) => ({
|
setState(prev => ({
|
||||||
...prev,
|
...prev,
|
||||||
isSaving: false,
|
isSaving: false,
|
||||||
error: error instanceof Error ? error.message : "Failed to save file",
|
error: error instanceof Error ? error.message : 'Failed to save file',
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
}, [filePath, state.content, isReadOnly]);
|
}, [filePath, state.content, isReadOnly]);
|
||||||
|
|
||||||
const handleContentChange = useCallback((newValue: string) => {
|
const handleContentChange = useCallback((newValue: string) => {
|
||||||
setState((prev) => ({
|
setState(prev => ({
|
||||||
...prev,
|
...prev,
|
||||||
content: newValue,
|
content: newValue,
|
||||||
isDirty: newValue !== prev.originalContent,
|
isDirty: newValue !== prev.originalContent,
|
||||||
}));
|
}));
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const handleKeyDown = useCallback(
|
const handleKeyDown = useCallback((e: KeyboardEvent) => {
|
||||||
(e: KeyboardEvent) => {
|
// Ctrl+S or Cmd+S to save
|
||||||
// Ctrl+S or Cmd+S to save
|
if ((e.ctrlKey || e.metaKey) && e.key === 's') {
|
||||||
if ((e.ctrlKey || e.metaKey) && e.key === "s") {
|
e.preventDefault();
|
||||||
e.preventDefault();
|
if (!isReadOnly && state.isDirty) {
|
||||||
if (!isReadOnly && state.isDirty) {
|
saveFile();
|
||||||
saveFile();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
[saveFile, isReadOnly, state.isDirty],
|
}, [saveFile, isReadOnly, state.isDirty]);
|
||||||
);
|
|
||||||
|
|
||||||
// Add keyboard listener
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
window.addEventListener("keydown", handleKeyDown);
|
window.addEventListener('keydown', handleKeyDown);
|
||||||
return () => window.removeEventListener("keydown", handleKeyDown);
|
return () => window.removeEventListener('keydown', handleKeyDown);
|
||||||
}, [handleKeyDown]);
|
}, [handleKeyDown]);
|
||||||
|
|
||||||
// If no file is selected, show placeholder
|
// No file selected — show placeholder
|
||||||
if (!filePath) {
|
if (!filePath) {
|
||||||
return (
|
return (
|
||||||
<div className="flex-1 flex items-center justify-center bg-bg-secondary">
|
<div className="flex-1 flex items-center justify-center bg-bg-secondary">
|
||||||
<div className="text-center text-text-muted">
|
<div className="text-center text-text-muted">
|
||||||
<svg
|
<svg className="w-16 h-16 mx-auto mb-4 opacity-50" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
||||||
className="w-16 h-16 mx-auto mb-4 opacity-50"
|
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={1.5} d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" />
|
||||||
fill="none"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
stroke="currentColor"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
strokeLinecap="round"
|
|
||||||
strokeLinejoin="round"
|
|
||||||
strokeWidth={1.5}
|
|
||||||
d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"
|
|
||||||
/>
|
|
||||||
</svg>
|
</svg>
|
||||||
<p className="text-lg font-medium">No file open</p>
|
<p className="text-lg font-medium">No file open</p>
|
||||||
<p className="text-sm mt-2">Select a file from the tree to edit</p>
|
<p className="text-sm mt-2">Select a file from the tree to edit</p>
|
||||||
@ -359,11 +280,11 @@ export default function EditorPanel({
|
|||||||
disabled={isReadOnly || !state.isDirty || state.isSaving}
|
disabled={isReadOnly || !state.isDirty || state.isSaving}
|
||||||
className={`px-3 py-1.5 text-xs font-medium rounded transition-colors ${
|
className={`px-3 py-1.5 text-xs font-medium rounded transition-colors ${
|
||||||
isReadOnly || !state.isDirty || state.isSaving
|
isReadOnly || !state.isDirty || state.isSaving
|
||||||
? "bg-bg-secondary text-text-muted cursor-not-allowed"
|
? 'bg-bg-secondary text-text-muted cursor-not-allowed'
|
||||||
: "bg-brand text-white hover:bg-brand/80"
|
: 'bg-brand text-white hover:bg-brand/80'
|
||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
{state.isSaving ? "Saving..." : "Save"}
|
{state.isSaving ? 'Saving...' : 'Save'}
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
{onCloseFile && (
|
{onCloseFile && (
|
||||||
@ -372,18 +293,8 @@ export default function EditorPanel({
|
|||||||
className="p-1.5 text-text-muted hover:text-text-primary hover:bg-bg-secondary rounded transition-colors"
|
className="p-1.5 text-text-muted hover:text-text-primary hover:bg-bg-secondary rounded transition-colors"
|
||||||
title="Close file"
|
title="Close file"
|
||||||
>
|
>
|
||||||
<svg
|
<svg className="w-4 h-4" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
||||||
className="w-4 h-4"
|
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M6 18L18 6M6 6l12 12" />
|
||||||
fill="none"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
stroke="currentColor"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
strokeLinecap="round"
|
|
||||||
strokeLinejoin="round"
|
|
||||||
strokeWidth={2}
|
|
||||||
d="M6 18L18 6M6 6l12 12"
|
|
||||||
/>
|
|
||||||
</svg>
|
</svg>
|
||||||
</button>
|
</button>
|
||||||
)}
|
)}
|
||||||
@ -394,18 +305,8 @@ export default function EditorPanel({
|
|||||||
{state.error && (
|
{state.error && (
|
||||||
<div className="px-4 py-3 bg-red-500/10 border-b border-red-500/20">
|
<div className="px-4 py-3 bg-red-500/10 border-b border-red-500/20">
|
||||||
<div className="flex items-start gap-2">
|
<div className="flex items-start gap-2">
|
||||||
<svg
|
<svg className="w-5 h-5 text-red-500 flex-shrink-0 mt-0.5" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
||||||
className="w-5 h-5 text-red-500 flex-shrink-0 mt-0.5"
|
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
|
||||||
fill="none"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
stroke="currentColor"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
strokeLinecap="round"
|
|
||||||
strokeLinejoin="round"
|
|
||||||
strokeWidth={2}
|
|
||||||
d="M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
|
|
||||||
/>
|
|
||||||
</svg>
|
</svg>
|
||||||
<div className="flex-1">
|
<div className="flex-1">
|
||||||
<p className="text-sm text-red-500">{state.error}</p>
|
<p className="text-sm text-red-500">{state.error}</p>
|
||||||
@ -430,33 +331,27 @@ export default function EditorPanel({
|
|||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{/* ACE Editor */}
|
{/* CodeMirror Editor */}
|
||||||
{!state.isLoading && (
|
{!state.isLoading && (
|
||||||
<div className="flex-1 min-h-0">
|
<div className="flex-1 min-h-0 cm-editor-container">
|
||||||
<Ace
|
<CodeMirror
|
||||||
mode={state.language}
|
|
||||||
theme="tomorrow"
|
|
||||||
name="editor"
|
|
||||||
value={state.content}
|
value={state.content}
|
||||||
onChange={handleContentChange}
|
onChange={handleContentChange}
|
||||||
width="100%"
|
extensions={extensions}
|
||||||
height="100%"
|
theme={tomorrowNightBlue}
|
||||||
fontSize={14}
|
editable={!isReadOnly}
|
||||||
showPrintMargin={false}
|
basicSetup={{
|
||||||
showGutter={true}
|
lineNumbers: true,
|
||||||
highlightActiveLine={true}
|
highlightActiveLine: true,
|
||||||
readOnly={isReadOnly}
|
highlightActiveLineGutter: true,
|
||||||
setOptions={{
|
foldGutter: true,
|
||||||
useWorker: false,
|
indentOnInput: true,
|
||||||
enableBasicAutocompletion: true,
|
bracketMatching: true,
|
||||||
enableLiveAutocompletion: false,
|
closeBrackets: true,
|
||||||
enableSnippets: false,
|
autocompletion: false,
|
||||||
tabSize: 2,
|
tabSize: 2,
|
||||||
indentedAutoWrap: true,
|
|
||||||
showLineNumbers: true,
|
|
||||||
wrap: false,
|
|
||||||
}}
|
}}
|
||||||
editorProps={{ $blockScrolling: true }}
|
style={{ height: '100%', fontSize: '14px' }}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@ -101,6 +101,23 @@ textarea {
|
|||||||
animation: strobe 1.2s ease-in-out infinite;
|
animation: strobe 1.2s ease-in-out infinite;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ── CodeMirror Editor Layout ─────────────────────────────── */
|
||||||
|
/* Make the CodeMirror component fill its flex container. */
|
||||||
|
.cm-editor-container {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
min-height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cm-editor-container .cm-editor {
|
||||||
|
flex: 1;
|
||||||
|
min-height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cm-editor-container .cm-scroller {
|
||||||
|
min-height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* ── Gadget Markdown Styles ─────────────────────────────────── */
|
/* ── Gadget Markdown Styles ─────────────────────────────────── */
|
||||||
/* Dense, technical display — no blog-style whitespace */
|
/* Dense, technical display — no blog-style whitespace */
|
||||||
|
|
||||||
|
|||||||
17
gadget-code/frontend/src/types/vite.d.ts
vendored
17
gadget-code/frontend/src/types/vite.d.ts
vendored
@ -1,17 +0,0 @@
|
|||||||
// Type declarations for Vite-specific import suffixes
|
|
||||||
// These allow TypeScript to understand Vite's ?url and ?raw import patterns
|
|
||||||
|
|
||||||
declare module '*?url' {
|
|
||||||
const url: string;
|
|
||||||
export default url;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module '*?raw' {
|
|
||||||
const content: string;
|
|
||||||
export default content;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module '*?worker' {
|
|
||||||
const worker: new () => Worker;
|
|
||||||
export default worker;
|
|
||||||
}
|
|
||||||
@ -11,9 +11,6 @@ export default defineConfig({
|
|||||||
plugins: [react()],
|
plugins: [react()],
|
||||||
root: '.',
|
root: '.',
|
||||||
publicDir: 'public',
|
publicDir: 'public',
|
||||||
optimizeDeps: {
|
|
||||||
include: ['react-ace', 'ace-builds'],
|
|
||||||
},
|
|
||||||
server: {
|
server: {
|
||||||
port: 5174,
|
port: 5174,
|
||||||
host: '0.0.0.0',
|
host: '0.0.0.0',
|
||||||
|
|||||||
@ -231,15 +231,63 @@ importers:
|
|||||||
|
|
||||||
frontend:
|
frontend:
|
||||||
dependencies:
|
dependencies:
|
||||||
ace-builds:
|
'@codemirror/lang-cpp':
|
||||||
specifier: ^1.44.0
|
specifier: ^6.0.3
|
||||||
version: 1.44.0
|
version: 6.0.3
|
||||||
|
'@codemirror/lang-css':
|
||||||
|
specifier: ^6.3.1
|
||||||
|
version: 6.3.1
|
||||||
|
'@codemirror/lang-go':
|
||||||
|
specifier: ^6.0.1
|
||||||
|
version: 6.0.1
|
||||||
|
'@codemirror/lang-html':
|
||||||
|
specifier: ^6.4.11
|
||||||
|
version: 6.4.11
|
||||||
|
'@codemirror/lang-java':
|
||||||
|
specifier: ^6.0.2
|
||||||
|
version: 6.0.2
|
||||||
|
'@codemirror/lang-javascript':
|
||||||
|
specifier: ^6.2.5
|
||||||
|
version: 6.2.5
|
||||||
|
'@codemirror/lang-json':
|
||||||
|
specifier: ^6.0.2
|
||||||
|
version: 6.0.2
|
||||||
|
'@codemirror/lang-less':
|
||||||
|
specifier: ^6.0.2
|
||||||
|
version: 6.0.2
|
||||||
|
'@codemirror/lang-markdown':
|
||||||
|
specifier: ^6.5.0
|
||||||
|
version: 6.5.0
|
||||||
|
'@codemirror/lang-php':
|
||||||
|
specifier: ^6.0.2
|
||||||
|
version: 6.0.2
|
||||||
|
'@codemirror/lang-python':
|
||||||
|
specifier: ^6.2.1
|
||||||
|
version: 6.2.1
|
||||||
|
'@codemirror/lang-rust':
|
||||||
|
specifier: ^6.0.2
|
||||||
|
version: 6.0.2
|
||||||
|
'@codemirror/lang-sql':
|
||||||
|
specifier: ^6.10.0
|
||||||
|
version: 6.10.0
|
||||||
|
'@codemirror/lang-xml':
|
||||||
|
specifier: ^6.1.0
|
||||||
|
version: 6.1.0
|
||||||
|
'@codemirror/lang-yaml':
|
||||||
|
specifier: ^6.1.3
|
||||||
|
version: 6.1.3
|
||||||
|
'@replit/codemirror-lang-csharp':
|
||||||
|
specifier: ^6.2.0
|
||||||
|
version: 6.2.0(@codemirror/autocomplete@6.20.2)(@codemirror/language@6.12.3)(@codemirror/state@6.6.0)(@codemirror/view@6.42.1)(@lezer/common@1.5.2)(@lezer/highlight@1.2.3)(@lezer/lr@1.4.10)
|
||||||
|
'@uiw/codemirror-theme-tomorrow-night-blue':
|
||||||
|
specifier: ^4.25.9
|
||||||
|
version: 4.25.9(@codemirror/language@6.12.3)(@codemirror/state@6.6.0)(@codemirror/view@6.42.1)
|
||||||
|
'@uiw/react-codemirror':
|
||||||
|
specifier: ^4.25.9
|
||||||
|
version: 4.25.9(@babel/runtime@7.29.2)(@codemirror/autocomplete@6.20.2)(@codemirror/language@6.12.3)(@codemirror/lint@6.9.6)(@codemirror/search@6.7.0)(@codemirror/state@6.6.0)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.42.1)(codemirror@6.0.2)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
|
||||||
marked:
|
marked:
|
||||||
specifier: ^16.0.0
|
specifier: ^16.4.2
|
||||||
version: 16.0.0
|
version: 16.4.2
|
||||||
react-ace:
|
|
||||||
specifier: ^14.0.1
|
|
||||||
version: 14.0.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
|
|
||||||
slug:
|
slug:
|
||||||
specifier: ^11.0.1
|
specifier: ^11.0.1
|
||||||
version: 11.0.1
|
version: 11.0.1
|
||||||
@ -301,6 +349,75 @@ packages:
|
|||||||
resolution: {integrity: sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==}
|
resolution: {integrity: sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
|
'@codemirror/autocomplete@6.20.2':
|
||||||
|
resolution: {integrity: sha512-G5FPkgIiLjOgZMjqVjvuKQ1rGPtHogLldJr33eFJdVLtmwY+giGrlv/ewljLz6b9BSQLkjxuwBc6g6omDM+YxQ==}
|
||||||
|
|
||||||
|
'@codemirror/commands@6.10.3':
|
||||||
|
resolution: {integrity: sha512-JFRiqhKu+bvSkDLI+rUhJwSxQxYb759W5GBezE8Uc8mHLqC9aV/9aTC7yJSqCtB3F00pylrLCwnyS91Ap5ej4Q==}
|
||||||
|
|
||||||
|
'@codemirror/lang-cpp@6.0.3':
|
||||||
|
resolution: {integrity: sha512-URM26M3vunFFn9/sm6rzqrBzDgfWuDixp85uTY49wKudToc2jTHUrKIGGKs+QWND+YLofNNZpxcNGRynFJfvgA==}
|
||||||
|
|
||||||
|
'@codemirror/lang-css@6.3.1':
|
||||||
|
resolution: {integrity: sha512-kr5fwBGiGtmz6l0LSJIbno9QrifNMUusivHbnA1H6Dmqy4HZFte3UAICix1VuKo0lMPKQr2rqB+0BkKi/S3Ejg==}
|
||||||
|
|
||||||
|
'@codemirror/lang-go@6.0.1':
|
||||||
|
resolution: {integrity: sha512-7fNvbyNylvqCphW9HD6WFnRpcDjr+KXX/FgqXy5H5ZS0eC5edDljukm/yNgYkwTsgp2busdod50AOTIy6Jikfg==}
|
||||||
|
|
||||||
|
'@codemirror/lang-html@6.4.11':
|
||||||
|
resolution: {integrity: sha512-9NsXp7Nwp891pQchI7gPdTwBuSuT3K65NGTHWHNJ55HjYcHLllr0rbIZNdOzas9ztc1EUVBlHou85FFZS4BNnw==}
|
||||||
|
|
||||||
|
'@codemirror/lang-java@6.0.2':
|
||||||
|
resolution: {integrity: sha512-m5Nt1mQ/cznJY7tMfQTJchmrjdjQ71IDs+55d1GAa8DGaB8JXWsVCkVT284C3RTASaY43YknrK2X3hPO/J3MOQ==}
|
||||||
|
|
||||||
|
'@codemirror/lang-javascript@6.2.5':
|
||||||
|
resolution: {integrity: sha512-zD4e5mS+50htS7F+TYjBPsiIFGanfVqg4HyUz6WNFikgOPf2BgKlx+TQedI1w6n/IqRBVBbBWmGFdLB/7uxO4A==}
|
||||||
|
|
||||||
|
'@codemirror/lang-json@6.0.2':
|
||||||
|
resolution: {integrity: sha512-x2OtO+AvwEHrEwR0FyyPtfDUiloG3rnVTSZV1W8UteaLL8/MajQd8DpvUb2YVzC+/T18aSDv0H9mu+xw0EStoQ==}
|
||||||
|
|
||||||
|
'@codemirror/lang-less@6.0.2':
|
||||||
|
resolution: {integrity: sha512-EYdQTG22V+KUUk8Qq582g7FMnCZeEHsyuOJisHRft/mQ+ZSZ2w51NupvDUHiqtsOy7It5cHLPGfHQLpMh9bqpQ==}
|
||||||
|
|
||||||
|
'@codemirror/lang-markdown@6.5.0':
|
||||||
|
resolution: {integrity: sha512-0K40bZ35jpHya6FriukbgaleaqzBLZfOh7HuzqbMxBXkbYMJDxfF39c23xOgxFezR+3G+tR2/Mup+Xk865OMvw==}
|
||||||
|
|
||||||
|
'@codemirror/lang-php@6.0.2':
|
||||||
|
resolution: {integrity: sha512-ZKy2v1n8Fc8oEXj0Th0PUMXzQJ0AIR6TaZU+PbDHExFwdu+guzOA4jmCHS1Nz4vbFezwD7LyBdDnddSJeScMCA==}
|
||||||
|
|
||||||
|
'@codemirror/lang-python@6.2.1':
|
||||||
|
resolution: {integrity: sha512-IRjC8RUBhn9mGR9ywecNhB51yePWCGgvHfY1lWN/Mrp3cKuHr0isDKia+9HnvhiWNnMpbGhWrkhuWOc09exRyw==}
|
||||||
|
|
||||||
|
'@codemirror/lang-rust@6.0.2':
|
||||||
|
resolution: {integrity: sha512-EZaGjCUegtiU7kSMvOfEZpaCReowEf3yNidYu7+vfuGTm9ow4mthAparY5hisJqOHmJowVH3Upu+eJlUji6qqA==}
|
||||||
|
|
||||||
|
'@codemirror/lang-sql@6.10.0':
|
||||||
|
resolution: {integrity: sha512-6ayPkEd/yRw0XKBx5uAiToSgGECo/GY2NoJIHXIIQh1EVwLuKoU8BP/qK0qH5NLXAbtJRLuT73hx7P9X34iO4w==}
|
||||||
|
|
||||||
|
'@codemirror/lang-xml@6.1.0':
|
||||||
|
resolution: {integrity: sha512-3z0blhicHLfwi2UgkZYRPioSgVTo9PV5GP5ducFH6FaHy0IAJRg+ixj5gTR1gnT/glAIC8xv4w2VL1LoZfs+Jg==}
|
||||||
|
|
||||||
|
'@codemirror/lang-yaml@6.1.3':
|
||||||
|
resolution: {integrity: sha512-AZ8DJBuXGVHybpBQhmZtgew5//4hv3tdkXnr3vDmOUMJRuB6vn/uuwtmTOTlqEaQFg3hQSVeA90NmvIQyUV6FQ==}
|
||||||
|
|
||||||
|
'@codemirror/language@6.12.3':
|
||||||
|
resolution: {integrity: sha512-QwCZW6Tt1siP37Jet9Tb02Zs81TQt6qQrZR2H+eGMcFsL1zMrk2/b9CLC7/9ieP1fjIUMgviLWMmgiHoJrj+ZA==}
|
||||||
|
|
||||||
|
'@codemirror/lint@6.9.6':
|
||||||
|
resolution: {integrity: sha512-6Kp7r6XfCi/D/5sdXieMfg9pJU1bUEx96WITuLU6ESaKizCz0QHFMjY/TaFSbigDdEAIgi93itLBIUETP4oK+A==}
|
||||||
|
|
||||||
|
'@codemirror/search@6.7.0':
|
||||||
|
resolution: {integrity: sha512-ZvGm99wc/s2cITtMT15LFdn8aH/aS+V+DqyGq/N5ZlV5vWtH+nILvC2nw0zX7ByNoHHDZ2IxxdW38O0tc5nVHg==}
|
||||||
|
|
||||||
|
'@codemirror/state@6.6.0':
|
||||||
|
resolution: {integrity: sha512-4nbvra5R5EtiCzr9BTHiTLc+MLXK2QGiAVYMyi8PkQd3SR+6ixar/Q/01Fa21TBIDOZXgeWV4WppsQolSreAPQ==}
|
||||||
|
|
||||||
|
'@codemirror/theme-one-dark@6.1.3':
|
||||||
|
resolution: {integrity: sha512-NzBdIvEJmx6fjeremiGp3t/okrLPYT0d9orIc7AFun8oZcRk58aejkqhv6spnz4MLAevrKNPMQYXEWMg4s+sKA==}
|
||||||
|
|
||||||
|
'@codemirror/view@6.42.1':
|
||||||
|
resolution: {integrity: sha512-ToN3oFc0nsxNUYVF5P0ztLgbC4UPPjPtA9aKYhkOKQaZASpOUo6ISXyQLP66ctVwlDc+j6Jv0uK5IFALkiXztg==}
|
||||||
|
|
||||||
'@csstools/color-helpers@6.0.2':
|
'@csstools/color-helpers@6.0.2':
|
||||||
resolution: {integrity: sha512-LMGQLS9EuADloEFkcTBR3BwV/CGHV7zyDxVRtVDTwdI2Ca4it0CCVTT9wCkxSgokjE5Ho41hEPgb8OEUwoXr6Q==}
|
resolution: {integrity: sha512-LMGQLS9EuADloEFkcTBR3BwV/CGHV7zyDxVRtVDTwdI2Ca4it0CCVTT9wCkxSgokjE5Ho41hEPgb8OEUwoXr6Q==}
|
||||||
engines: {node: '>=20.19.0'}
|
engines: {node: '>=20.19.0'}
|
||||||
@ -687,6 +804,57 @@ packages:
|
|||||||
'@kurkle/color@0.3.4':
|
'@kurkle/color@0.3.4':
|
||||||
resolution: {integrity: sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==}
|
resolution: {integrity: sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==}
|
||||||
|
|
||||||
|
'@lezer/common@1.5.2':
|
||||||
|
resolution: {integrity: sha512-sxQE460fPZyU3sdc8lafxiPwJHBzZRy/udNFynGQky1SePYBdhkBl1kOagA9uT3pxR8K09bOrmTUqA9wb/PjSQ==}
|
||||||
|
|
||||||
|
'@lezer/cpp@1.1.5':
|
||||||
|
resolution: {integrity: sha512-DIhSXmYtJKLehrjzDFN+2cPt547ySQ41nA8yqcDf/GxMc+YM736xqltFkvADL2M0VebU5I+3+4ks2Vv+Kyq3Aw==}
|
||||||
|
|
||||||
|
'@lezer/css@1.3.3':
|
||||||
|
resolution: {integrity: sha512-RzBo8r+/6QJeow7aPHIpGVIH59xTcJXp399820gZoMo9noQDRVpJLheIBUicYwKcsbOYoBRoLZlf2720dG/4Tg==}
|
||||||
|
|
||||||
|
'@lezer/go@1.0.1':
|
||||||
|
resolution: {integrity: sha512-xToRsYxwsgJNHTgNdStpcvmbVuKxTapV0dM0wey1geMMRc9aggoVyKgzYp41D2/vVOx+Ii4hmE206kvxIXBVXQ==}
|
||||||
|
|
||||||
|
'@lezer/highlight@1.2.3':
|
||||||
|
resolution: {integrity: sha512-qXdH7UqTvGfdVBINrgKhDsVTJTxactNNxLk7+UMwZhU13lMHaOBlJe9Vqp907ya56Y3+ed2tlqzys7jDkTmW0g==}
|
||||||
|
|
||||||
|
'@lezer/html@1.3.13':
|
||||||
|
resolution: {integrity: sha512-oI7n6NJml729m7pjm9lvLvmXbdoMoi2f+1pwSDJkl9d68zGr7a9Btz8NdHTGQZtW2DA25ybeuv/SyDb9D5tseg==}
|
||||||
|
|
||||||
|
'@lezer/java@1.1.3':
|
||||||
|
resolution: {integrity: sha512-yHquUfujwg6Yu4Fd1GNHCvidIvJwi/1Xu2DaKl/pfWIA2c1oXkVvawH3NyXhCaFx4OdlYBVX5wvz2f7Aoa/4Xw==}
|
||||||
|
|
||||||
|
'@lezer/javascript@1.5.4':
|
||||||
|
resolution: {integrity: sha512-vvYx3MhWqeZtGPwDStM2dwgljd5smolYD2lR2UyFcHfxbBQebqx8yjmFmxtJ/E6nN6u1D9srOiVWm3Rb4tmcUA==}
|
||||||
|
|
||||||
|
'@lezer/json@1.0.3':
|
||||||
|
resolution: {integrity: sha512-BP9KzdF9Y35PDpv04r0VeSTKDeox5vVr3efE7eBbx3r4s3oNLfunchejZhjArmeieBH+nVOpgIiBJpEAv8ilqQ==}
|
||||||
|
|
||||||
|
'@lezer/lr@1.4.10':
|
||||||
|
resolution: {integrity: sha512-rnCpTIBafOx4mRp43xOxDJbFipJm/c0cia/V5TiGlhmMa+wsSdoGmUN3w5Bqrks/09Q/D4tNAmWaT8p6NRi77A==}
|
||||||
|
|
||||||
|
'@lezer/markdown@1.6.3':
|
||||||
|
resolution: {integrity: sha512-jpGm5Ps+XErS+xA4urw7ogEGkeZOahVQF21Z6oECF0sj+2liwZopd2+I8uH5I/vZsRuuze3OxBREIANLf6KKUw==}
|
||||||
|
|
||||||
|
'@lezer/php@1.0.5':
|
||||||
|
resolution: {integrity: sha512-W7asp9DhM6q0W6DYNwIkLSKOvxlXRrif+UXBMxzsJUuqmhE7oVU+gS3THO4S/Puh7Xzgm858UNaFi6dxTP8dJA==}
|
||||||
|
|
||||||
|
'@lezer/python@1.1.18':
|
||||||
|
resolution: {integrity: sha512-31FiUrU7z9+d/ElGQLJFXl+dKOdx0jALlP3KEOsGTex8mvj+SoE1FgItcHWK/axkxCHGUSpqIHt6JAWfWu9Rhg==}
|
||||||
|
|
||||||
|
'@lezer/rust@1.0.2':
|
||||||
|
resolution: {integrity: sha512-Lz5sIPBdF2FUXcWeCu1//ojFAZqzTQNRga0aYv6dYXqJqPfMdCAI0NzajWUd4Xijj1IKJLtjoXRPMvTKWBcqKg==}
|
||||||
|
|
||||||
|
'@lezer/xml@1.0.6':
|
||||||
|
resolution: {integrity: sha512-CdDwirL0OEaStFue/66ZmFSeppuL6Dwjlk8qk153mSQwiSH/Dlri4GNymrNWnUmPl2Um7QfV1FO9KFUyX3Twww==}
|
||||||
|
|
||||||
|
'@lezer/yaml@1.0.4':
|
||||||
|
resolution: {integrity: sha512-2lrrHqxalACEbxIbsjhqGpSW8kWpUKuY6RHgnSAFZa6qK62wvnPxA8hGOwOoDbwHcOFs5M4o27mjGu+P7TvBmw==}
|
||||||
|
|
||||||
|
'@marijn/find-cluster-break@1.0.2':
|
||||||
|
resolution: {integrity: sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==}
|
||||||
|
|
||||||
'@mongodb-js/saslprep@1.3.0':
|
'@mongodb-js/saslprep@1.3.0':
|
||||||
resolution: {integrity: sha512-zlayKCsIjYb7/IdfqxorK5+xUMyi4vOKcFy10wKJYc63NSdKI8mNME+uJqfatkPmOSMMUiojrL58IePKBm3gvQ==}
|
resolution: {integrity: sha512-zlayKCsIjYb7/IdfqxorK5+xUMyi4vOKcFy10wKJYc63NSdKI8mNME+uJqfatkPmOSMMUiojrL58IePKBm3gvQ==}
|
||||||
|
|
||||||
@ -746,6 +914,17 @@ packages:
|
|||||||
engines: {node: '>=18'}
|
engines: {node: '>=18'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
|
'@replit/codemirror-lang-csharp@6.2.0':
|
||||||
|
resolution: {integrity: sha512-6utbaWkoymhoAXj051mkRp+VIJlpwUgCX9Toevz3YatiZsz512fw3OVCedXQx+WcR0wb6zVHjChnuxqfCLtFVQ==}
|
||||||
|
peerDependencies:
|
||||||
|
'@codemirror/autocomplete': ^6.0.0
|
||||||
|
'@codemirror/language': ^6.0.0
|
||||||
|
'@codemirror/state': ^6.0.0
|
||||||
|
'@codemirror/view': ^6.0.0
|
||||||
|
'@lezer/common': ^1.0.0
|
||||||
|
'@lezer/highlight': ^1.0.0
|
||||||
|
'@lezer/lr': ^1.0.0
|
||||||
|
|
||||||
'@rolldown/binding-android-arm64@1.0.0-rc.17':
|
'@rolldown/binding-android-arm64@1.0.0-rc.17':
|
||||||
resolution: {integrity: sha512-s70pVGhw4zqGeFnXWvAzJDlvxhlRollagdCCKRgOsgUOH3N1l0LIxf83AtGzmb5SiVM4Hjl5HyarMRfdfj3DaQ==}
|
resolution: {integrity: sha512-s70pVGhw4zqGeFnXWvAzJDlvxhlRollagdCCKRgOsgUOH3N1l0LIxf83AtGzmb5SiVM4Hjl5HyarMRfdfj3DaQ==}
|
||||||
engines: {node: ^20.19.0 || >=22.12.0}
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
@ -1076,6 +1255,38 @@ packages:
|
|||||||
'@types/whatwg-url@11.0.5':
|
'@types/whatwg-url@11.0.5':
|
||||||
resolution: {integrity: sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==}
|
resolution: {integrity: sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==}
|
||||||
|
|
||||||
|
'@uiw/codemirror-extensions-basic-setup@4.25.9':
|
||||||
|
resolution: {integrity: sha512-QFAqr+pu6lDmNpAlecODcF49TlsrZ0bj15zPzfhiqSDl+Um3EsDLFLppixC7kFLn+rdDM2LTvVjn5CPvefpRgw==}
|
||||||
|
peerDependencies:
|
||||||
|
'@codemirror/autocomplete': '>=6.0.0'
|
||||||
|
'@codemirror/commands': '>=6.0.0'
|
||||||
|
'@codemirror/language': '>=6.0.0'
|
||||||
|
'@codemirror/lint': '>=6.0.0'
|
||||||
|
'@codemirror/search': '>=6.0.0'
|
||||||
|
'@codemirror/state': '>=6.0.0'
|
||||||
|
'@codemirror/view': '>=6.0.0'
|
||||||
|
|
||||||
|
'@uiw/codemirror-theme-tomorrow-night-blue@4.25.9':
|
||||||
|
resolution: {integrity: sha512-iG2wCXO/rkJIrvW7rJY7Ehh4yushw8X4vQnstjArxofR6uNrE9ay3Ut7M0cxrwY7z8YIU5f7NQFODE/h3HNmVA==}
|
||||||
|
|
||||||
|
'@uiw/codemirror-themes@4.25.9':
|
||||||
|
resolution: {integrity: sha512-DAHKb/L9ELwjY4nCf/MP/mIllHOn4GQe7RR4x8AMJuNeh9nGRRoo1uPxrxMmUL/bKqe6kDmDbIZ2AlhlqyIJuw==}
|
||||||
|
peerDependencies:
|
||||||
|
'@codemirror/language': '>=6.0.0'
|
||||||
|
'@codemirror/state': '>=6.0.0'
|
||||||
|
'@codemirror/view': '>=6.0.0'
|
||||||
|
|
||||||
|
'@uiw/react-codemirror@4.25.9':
|
||||||
|
resolution: {integrity: sha512-HftqCBUYShAOH0pGi1CHP8vfm5L8fQ3+0j0VI6lQD6QpK+UBu3J7nxfEN5O/BXMilMNf9ZyFJRvRcuMMOLHMng==}
|
||||||
|
peerDependencies:
|
||||||
|
'@babel/runtime': '>=7.11.0'
|
||||||
|
'@codemirror/state': '>=6.0.0'
|
||||||
|
'@codemirror/theme-one-dark': '>=6.0.0'
|
||||||
|
'@codemirror/view': '>=6.0.0'
|
||||||
|
codemirror: '>=6.0.0'
|
||||||
|
react: '>=17.0.0'
|
||||||
|
react-dom: '>=17.0.0'
|
||||||
|
|
||||||
'@vitejs/plugin-react@6.0.1':
|
'@vitejs/plugin-react@6.0.1':
|
||||||
resolution: {integrity: sha512-l9X/E3cDb+xY3SWzlG1MOGt2usfEHGMNIaegaUGFsLkb3RCn/k8/TOXBcab+OndDI4TBtktT8/9BwwW8Vi9KUQ==}
|
resolution: {integrity: sha512-l9X/E3cDb+xY3SWzlG1MOGt2usfEHGMNIaegaUGFsLkb3RCn/k8/TOXBcab+OndDI4TBtktT8/9BwwW8Vi9KUQ==}
|
||||||
engines: {node: ^20.19.0 || >=22.12.0}
|
engines: {node: ^20.19.0 || >=22.12.0}
|
||||||
@ -1129,9 +1340,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==}
|
resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==}
|
||||||
engines: {node: '>= 0.6'}
|
engines: {node: '>= 0.6'}
|
||||||
|
|
||||||
ace-builds@1.44.0:
|
|
||||||
resolution: {integrity: sha512-PFNMSYqFdEUkul2Ntud0HvA09AgY+F1ag0UYdpMH60wNI/qOA8cB8tlTgoALMEwIdUPJK2CjrIQ7OnbiSS/ugQ==}
|
|
||||||
|
|
||||||
acorn@7.4.1:
|
acorn@7.4.1:
|
||||||
resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==}
|
resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==}
|
||||||
engines: {node: '>=0.4.0'}
|
engines: {node: '>=0.4.0'}
|
||||||
@ -1339,6 +1547,9 @@ packages:
|
|||||||
resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==}
|
resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
|
|
||||||
|
codemirror@6.0.2:
|
||||||
|
resolution: {integrity: sha512-VhydHotNW5w1UGK0Qj96BwSk/Zqbp9WbnyK2W/eVMv4QyF41INRGpjUhFJY7/uDNuudSc33a/PKr4iDqRduvHw==}
|
||||||
|
|
||||||
color-convert@2.0.1:
|
color-convert@2.0.1:
|
||||||
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
|
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
|
||||||
engines: {node: '>=7.0.0'}
|
engines: {node: '>=7.0.0'}
|
||||||
@ -1425,6 +1636,9 @@ packages:
|
|||||||
resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==}
|
resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==}
|
||||||
engines: {node: '>= 0.10'}
|
engines: {node: '>= 0.10'}
|
||||||
|
|
||||||
|
crelt@1.0.6:
|
||||||
|
resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==}
|
||||||
|
|
||||||
cron-parser@4.9.0:
|
cron-parser@4.9.0:
|
||||||
resolution: {integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==}
|
resolution: {integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==}
|
||||||
engines: {node: '>=12.0.0'}
|
engines: {node: '>=12.0.0'}
|
||||||
@ -1524,9 +1738,6 @@ packages:
|
|||||||
diacritics@1.3.0:
|
diacritics@1.3.0:
|
||||||
resolution: {integrity: sha512-wlwEkqcsaxvPJML+rDh/2iS824jbREk6DUMUKkEaSlxdYHeS43cClJtsWglvw2RfeXGm6ohKDqsXteJ5sP5enA==}
|
resolution: {integrity: sha512-wlwEkqcsaxvPJML+rDh/2iS824jbREk6DUMUKkEaSlxdYHeS43cClJtsWglvw2RfeXGm6ohKDqsXteJ5sP5enA==}
|
||||||
|
|
||||||
diff-match-patch@1.0.5:
|
|
||||||
resolution: {integrity: sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==}
|
|
||||||
|
|
||||||
dir-glob@3.0.1:
|
dir-glob@3.0.1:
|
||||||
resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
|
resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
@ -2087,10 +2298,6 @@ packages:
|
|||||||
lodash.defaults@4.2.0:
|
lodash.defaults@4.2.0:
|
||||||
resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==}
|
resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==}
|
||||||
|
|
||||||
lodash.get@4.4.2:
|
|
||||||
resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==}
|
|
||||||
deprecated: This package is deprecated. Use the optional chaining (?.) operator instead.
|
|
||||||
|
|
||||||
lodash.includes@4.3.0:
|
lodash.includes@4.3.0:
|
||||||
resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==}
|
resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==}
|
||||||
|
|
||||||
@ -2100,10 +2307,6 @@ packages:
|
|||||||
lodash.isboolean@3.0.3:
|
lodash.isboolean@3.0.3:
|
||||||
resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==}
|
resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==}
|
||||||
|
|
||||||
lodash.isequal@4.5.0:
|
|
||||||
resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==}
|
|
||||||
deprecated: This package is deprecated. Use require('node:util').isDeepStrictEqual instead.
|
|
||||||
|
|
||||||
lodash.isfinite@3.3.2:
|
lodash.isfinite@3.3.2:
|
||||||
resolution: {integrity: sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==}
|
resolution: {integrity: sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==}
|
||||||
|
|
||||||
@ -2125,10 +2328,6 @@ packages:
|
|||||||
lodash@4.17.21:
|
lodash@4.17.21:
|
||||||
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
|
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
|
||||||
|
|
||||||
loose-envify@1.4.0:
|
|
||||||
resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
|
|
||||||
hasBin: true
|
|
||||||
|
|
||||||
lru-cache@11.3.5:
|
lru-cache@11.3.5:
|
||||||
resolution: {integrity: sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw==}
|
resolution: {integrity: sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw==}
|
||||||
engines: {node: 20 || >=22}
|
engines: {node: 20 || >=22}
|
||||||
@ -2153,6 +2352,11 @@ packages:
|
|||||||
engines: {node: '>= 20'}
|
engines: {node: '>= 20'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
|
marked@16.4.2:
|
||||||
|
resolution: {integrity: sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA==}
|
||||||
|
engines: {node: '>= 20'}
|
||||||
|
hasBin: true
|
||||||
|
|
||||||
math-intrinsics@1.1.0:
|
math-intrinsics@1.1.0:
|
||||||
resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
|
resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
@ -2456,9 +2660,6 @@ packages:
|
|||||||
promise@7.3.1:
|
promise@7.3.1:
|
||||||
resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==}
|
resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==}
|
||||||
|
|
||||||
prop-types@15.8.1:
|
|
||||||
resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
|
|
||||||
|
|
||||||
proxy-addr@2.0.7:
|
proxy-addr@2.0.7:
|
||||||
resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
|
resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
|
||||||
engines: {node: '>= 0.10'}
|
engines: {node: '>= 0.10'}
|
||||||
@ -2541,20 +2742,11 @@ packages:
|
|||||||
resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==}
|
resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==}
|
||||||
engines: {node: '>= 0.8'}
|
engines: {node: '>= 0.8'}
|
||||||
|
|
||||||
react-ace@14.0.1:
|
|
||||||
resolution: {integrity: sha512-z6YAZ20PNf/FqmYEic//G/UK6uw0rn21g58ASgHJHl9rfE4nITQLqthr9rHMVQK4ezwohJbp2dGrZpkq979PYQ==}
|
|
||||||
peerDependencies:
|
|
||||||
react: ^0.13.0 || ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
|
|
||||||
react-dom: ^0.13.0 || ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
|
|
||||||
|
|
||||||
react-dom@19.2.5:
|
react-dom@19.2.5:
|
||||||
resolution: {integrity: sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag==}
|
resolution: {integrity: sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
react: ^19.2.5
|
react: ^19.2.5
|
||||||
|
|
||||||
react-is@16.13.1:
|
|
||||||
resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
|
|
||||||
|
|
||||||
react-is@17.0.2:
|
react-is@17.0.2:
|
||||||
resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==}
|
resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==}
|
||||||
|
|
||||||
@ -2861,6 +3053,9 @@ packages:
|
|||||||
strnum@1.1.2:
|
strnum@1.1.2:
|
||||||
resolution: {integrity: sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==}
|
resolution: {integrity: sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==}
|
||||||
|
|
||||||
|
style-mod@4.1.3:
|
||||||
|
resolution: {integrity: sha512-i/n8VsZydrugj3Iuzll8+x/00GH2vnYsk1eomD8QiRrSAeW6ItbCQDtfXCeJHd0iwiNagqjQkvpvREEPtW3IoQ==}
|
||||||
|
|
||||||
supports-color@7.2.0:
|
supports-color@7.2.0:
|
||||||
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
|
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
@ -3098,6 +3293,9 @@ packages:
|
|||||||
resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==}
|
resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
|
|
||||||
|
w3c-keyname@2.2.8:
|
||||||
|
resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==}
|
||||||
|
|
||||||
w3c-xmlserializer@5.0.0:
|
w3c-xmlserializer@5.0.0:
|
||||||
resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==}
|
resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==}
|
||||||
engines: {node: '>=18'}
|
engines: {node: '>=18'}
|
||||||
@ -3251,6 +3449,179 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
css-tree: 3.2.1
|
css-tree: 3.2.1
|
||||||
|
|
||||||
|
'@codemirror/autocomplete@6.20.2':
|
||||||
|
dependencies:
|
||||||
|
'@codemirror/language': 6.12.3
|
||||||
|
'@codemirror/state': 6.6.0
|
||||||
|
'@codemirror/view': 6.42.1
|
||||||
|
'@lezer/common': 1.5.2
|
||||||
|
|
||||||
|
'@codemirror/commands@6.10.3':
|
||||||
|
dependencies:
|
||||||
|
'@codemirror/language': 6.12.3
|
||||||
|
'@codemirror/state': 6.6.0
|
||||||
|
'@codemirror/view': 6.42.1
|
||||||
|
'@lezer/common': 1.5.2
|
||||||
|
|
||||||
|
'@codemirror/lang-cpp@6.0.3':
|
||||||
|
dependencies:
|
||||||
|
'@codemirror/language': 6.12.3
|
||||||
|
'@lezer/cpp': 1.1.5
|
||||||
|
|
||||||
|
'@codemirror/lang-css@6.3.1':
|
||||||
|
dependencies:
|
||||||
|
'@codemirror/autocomplete': 6.20.2
|
||||||
|
'@codemirror/language': 6.12.3
|
||||||
|
'@codemirror/state': 6.6.0
|
||||||
|
'@lezer/common': 1.5.2
|
||||||
|
'@lezer/css': 1.3.3
|
||||||
|
|
||||||
|
'@codemirror/lang-go@6.0.1':
|
||||||
|
dependencies:
|
||||||
|
'@codemirror/autocomplete': 6.20.2
|
||||||
|
'@codemirror/language': 6.12.3
|
||||||
|
'@codemirror/state': 6.6.0
|
||||||
|
'@lezer/common': 1.5.2
|
||||||
|
'@lezer/go': 1.0.1
|
||||||
|
|
||||||
|
'@codemirror/lang-html@6.4.11':
|
||||||
|
dependencies:
|
||||||
|
'@codemirror/autocomplete': 6.20.2
|
||||||
|
'@codemirror/lang-css': 6.3.1
|
||||||
|
'@codemirror/lang-javascript': 6.2.5
|
||||||
|
'@codemirror/language': 6.12.3
|
||||||
|
'@codemirror/state': 6.6.0
|
||||||
|
'@codemirror/view': 6.42.1
|
||||||
|
'@lezer/common': 1.5.2
|
||||||
|
'@lezer/css': 1.3.3
|
||||||
|
'@lezer/html': 1.3.13
|
||||||
|
|
||||||
|
'@codemirror/lang-java@6.0.2':
|
||||||
|
dependencies:
|
||||||
|
'@codemirror/language': 6.12.3
|
||||||
|
'@lezer/java': 1.1.3
|
||||||
|
|
||||||
|
'@codemirror/lang-javascript@6.2.5':
|
||||||
|
dependencies:
|
||||||
|
'@codemirror/autocomplete': 6.20.2
|
||||||
|
'@codemirror/language': 6.12.3
|
||||||
|
'@codemirror/lint': 6.9.6
|
||||||
|
'@codemirror/state': 6.6.0
|
||||||
|
'@codemirror/view': 6.42.1
|
||||||
|
'@lezer/common': 1.5.2
|
||||||
|
'@lezer/javascript': 1.5.4
|
||||||
|
|
||||||
|
'@codemirror/lang-json@6.0.2':
|
||||||
|
dependencies:
|
||||||
|
'@codemirror/language': 6.12.3
|
||||||
|
'@lezer/json': 1.0.3
|
||||||
|
|
||||||
|
'@codemirror/lang-less@6.0.2':
|
||||||
|
dependencies:
|
||||||
|
'@codemirror/lang-css': 6.3.1
|
||||||
|
'@codemirror/language': 6.12.3
|
||||||
|
'@lezer/common': 1.5.2
|
||||||
|
'@lezer/highlight': 1.2.3
|
||||||
|
'@lezer/lr': 1.4.10
|
||||||
|
|
||||||
|
'@codemirror/lang-markdown@6.5.0':
|
||||||
|
dependencies:
|
||||||
|
'@codemirror/autocomplete': 6.20.2
|
||||||
|
'@codemirror/lang-html': 6.4.11
|
||||||
|
'@codemirror/language': 6.12.3
|
||||||
|
'@codemirror/state': 6.6.0
|
||||||
|
'@codemirror/view': 6.42.1
|
||||||
|
'@lezer/common': 1.5.2
|
||||||
|
'@lezer/markdown': 1.6.3
|
||||||
|
|
||||||
|
'@codemirror/lang-php@6.0.2':
|
||||||
|
dependencies:
|
||||||
|
'@codemirror/lang-html': 6.4.11
|
||||||
|
'@codemirror/language': 6.12.3
|
||||||
|
'@codemirror/state': 6.6.0
|
||||||
|
'@lezer/common': 1.5.2
|
||||||
|
'@lezer/php': 1.0.5
|
||||||
|
|
||||||
|
'@codemirror/lang-python@6.2.1':
|
||||||
|
dependencies:
|
||||||
|
'@codemirror/autocomplete': 6.20.2
|
||||||
|
'@codemirror/language': 6.12.3
|
||||||
|
'@codemirror/state': 6.6.0
|
||||||
|
'@lezer/common': 1.5.2
|
||||||
|
'@lezer/python': 1.1.18
|
||||||
|
|
||||||
|
'@codemirror/lang-rust@6.0.2':
|
||||||
|
dependencies:
|
||||||
|
'@codemirror/language': 6.12.3
|
||||||
|
'@lezer/rust': 1.0.2
|
||||||
|
|
||||||
|
'@codemirror/lang-sql@6.10.0':
|
||||||
|
dependencies:
|
||||||
|
'@codemirror/autocomplete': 6.20.2
|
||||||
|
'@codemirror/language': 6.12.3
|
||||||
|
'@codemirror/state': 6.6.0
|
||||||
|
'@lezer/common': 1.5.2
|
||||||
|
'@lezer/highlight': 1.2.3
|
||||||
|
'@lezer/lr': 1.4.10
|
||||||
|
|
||||||
|
'@codemirror/lang-xml@6.1.0':
|
||||||
|
dependencies:
|
||||||
|
'@codemirror/autocomplete': 6.20.2
|
||||||
|
'@codemirror/language': 6.12.3
|
||||||
|
'@codemirror/state': 6.6.0
|
||||||
|
'@codemirror/view': 6.42.1
|
||||||
|
'@lezer/common': 1.5.2
|
||||||
|
'@lezer/xml': 1.0.6
|
||||||
|
|
||||||
|
'@codemirror/lang-yaml@6.1.3':
|
||||||
|
dependencies:
|
||||||
|
'@codemirror/autocomplete': 6.20.2
|
||||||
|
'@codemirror/language': 6.12.3
|
||||||
|
'@codemirror/state': 6.6.0
|
||||||
|
'@lezer/common': 1.5.2
|
||||||
|
'@lezer/highlight': 1.2.3
|
||||||
|
'@lezer/lr': 1.4.10
|
||||||
|
'@lezer/yaml': 1.0.4
|
||||||
|
|
||||||
|
'@codemirror/language@6.12.3':
|
||||||
|
dependencies:
|
||||||
|
'@codemirror/state': 6.6.0
|
||||||
|
'@codemirror/view': 6.42.1
|
||||||
|
'@lezer/common': 1.5.2
|
||||||
|
'@lezer/highlight': 1.2.3
|
||||||
|
'@lezer/lr': 1.4.10
|
||||||
|
style-mod: 4.1.3
|
||||||
|
|
||||||
|
'@codemirror/lint@6.9.6':
|
||||||
|
dependencies:
|
||||||
|
'@codemirror/state': 6.6.0
|
||||||
|
'@codemirror/view': 6.42.1
|
||||||
|
crelt: 1.0.6
|
||||||
|
|
||||||
|
'@codemirror/search@6.7.0':
|
||||||
|
dependencies:
|
||||||
|
'@codemirror/state': 6.6.0
|
||||||
|
'@codemirror/view': 6.42.1
|
||||||
|
crelt: 1.0.6
|
||||||
|
|
||||||
|
'@codemirror/state@6.6.0':
|
||||||
|
dependencies:
|
||||||
|
'@marijn/find-cluster-break': 1.0.2
|
||||||
|
|
||||||
|
'@codemirror/theme-one-dark@6.1.3':
|
||||||
|
dependencies:
|
||||||
|
'@codemirror/language': 6.12.3
|
||||||
|
'@codemirror/state': 6.6.0
|
||||||
|
'@codemirror/view': 6.42.1
|
||||||
|
'@lezer/highlight': 1.2.3
|
||||||
|
|
||||||
|
'@codemirror/view@6.42.1':
|
||||||
|
dependencies:
|
||||||
|
'@codemirror/state': 6.6.0
|
||||||
|
crelt: 1.0.6
|
||||||
|
style-mod: 4.1.3
|
||||||
|
w3c-keyname: 2.2.8
|
||||||
|
|
||||||
'@csstools/color-helpers@6.0.2': {}
|
'@csstools/color-helpers@6.0.2': {}
|
||||||
|
|
||||||
'@csstools/css-calc@3.2.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)':
|
'@csstools/css-calc@3.2.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)':
|
||||||
@ -3471,6 +3842,95 @@ snapshots:
|
|||||||
|
|
||||||
'@kurkle/color@0.3.4': {}
|
'@kurkle/color@0.3.4': {}
|
||||||
|
|
||||||
|
'@lezer/common@1.5.2': {}
|
||||||
|
|
||||||
|
'@lezer/cpp@1.1.5':
|
||||||
|
dependencies:
|
||||||
|
'@lezer/common': 1.5.2
|
||||||
|
'@lezer/highlight': 1.2.3
|
||||||
|
'@lezer/lr': 1.4.10
|
||||||
|
|
||||||
|
'@lezer/css@1.3.3':
|
||||||
|
dependencies:
|
||||||
|
'@lezer/common': 1.5.2
|
||||||
|
'@lezer/highlight': 1.2.3
|
||||||
|
'@lezer/lr': 1.4.10
|
||||||
|
|
||||||
|
'@lezer/go@1.0.1':
|
||||||
|
dependencies:
|
||||||
|
'@lezer/common': 1.5.2
|
||||||
|
'@lezer/highlight': 1.2.3
|
||||||
|
'@lezer/lr': 1.4.10
|
||||||
|
|
||||||
|
'@lezer/highlight@1.2.3':
|
||||||
|
dependencies:
|
||||||
|
'@lezer/common': 1.5.2
|
||||||
|
|
||||||
|
'@lezer/html@1.3.13':
|
||||||
|
dependencies:
|
||||||
|
'@lezer/common': 1.5.2
|
||||||
|
'@lezer/highlight': 1.2.3
|
||||||
|
'@lezer/lr': 1.4.10
|
||||||
|
|
||||||
|
'@lezer/java@1.1.3':
|
||||||
|
dependencies:
|
||||||
|
'@lezer/common': 1.5.2
|
||||||
|
'@lezer/highlight': 1.2.3
|
||||||
|
'@lezer/lr': 1.4.10
|
||||||
|
|
||||||
|
'@lezer/javascript@1.5.4':
|
||||||
|
dependencies:
|
||||||
|
'@lezer/common': 1.5.2
|
||||||
|
'@lezer/highlight': 1.2.3
|
||||||
|
'@lezer/lr': 1.4.10
|
||||||
|
|
||||||
|
'@lezer/json@1.0.3':
|
||||||
|
dependencies:
|
||||||
|
'@lezer/common': 1.5.2
|
||||||
|
'@lezer/highlight': 1.2.3
|
||||||
|
'@lezer/lr': 1.4.10
|
||||||
|
|
||||||
|
'@lezer/lr@1.4.10':
|
||||||
|
dependencies:
|
||||||
|
'@lezer/common': 1.5.2
|
||||||
|
|
||||||
|
'@lezer/markdown@1.6.3':
|
||||||
|
dependencies:
|
||||||
|
'@lezer/common': 1.5.2
|
||||||
|
'@lezer/highlight': 1.2.3
|
||||||
|
|
||||||
|
'@lezer/php@1.0.5':
|
||||||
|
dependencies:
|
||||||
|
'@lezer/common': 1.5.2
|
||||||
|
'@lezer/highlight': 1.2.3
|
||||||
|
'@lezer/lr': 1.4.10
|
||||||
|
|
||||||
|
'@lezer/python@1.1.18':
|
||||||
|
dependencies:
|
||||||
|
'@lezer/common': 1.5.2
|
||||||
|
'@lezer/highlight': 1.2.3
|
||||||
|
'@lezer/lr': 1.4.10
|
||||||
|
|
||||||
|
'@lezer/rust@1.0.2':
|
||||||
|
dependencies:
|
||||||
|
'@lezer/common': 1.5.2
|
||||||
|
'@lezer/highlight': 1.2.3
|
||||||
|
'@lezer/lr': 1.4.10
|
||||||
|
|
||||||
|
'@lezer/xml@1.0.6':
|
||||||
|
dependencies:
|
||||||
|
'@lezer/common': 1.5.2
|
||||||
|
'@lezer/highlight': 1.2.3
|
||||||
|
'@lezer/lr': 1.4.10
|
||||||
|
|
||||||
|
'@lezer/yaml@1.0.4':
|
||||||
|
dependencies:
|
||||||
|
'@lezer/common': 1.5.2
|
||||||
|
'@lezer/highlight': 1.2.3
|
||||||
|
'@lezer/lr': 1.4.10
|
||||||
|
|
||||||
|
'@marijn/find-cluster-break@1.0.2': {}
|
||||||
|
|
||||||
'@mongodb-js/saslprep@1.3.0':
|
'@mongodb-js/saslprep@1.3.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
sparse-bitfield: 3.0.3
|
sparse-bitfield: 3.0.3
|
||||||
@ -3518,6 +3978,16 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
playwright: 1.59.1
|
playwright: 1.59.1
|
||||||
|
|
||||||
|
'@replit/codemirror-lang-csharp@6.2.0(@codemirror/autocomplete@6.20.2)(@codemirror/language@6.12.3)(@codemirror/state@6.6.0)(@codemirror/view@6.42.1)(@lezer/common@1.5.2)(@lezer/highlight@1.2.3)(@lezer/lr@1.4.10)':
|
||||||
|
dependencies:
|
||||||
|
'@codemirror/autocomplete': 6.20.2
|
||||||
|
'@codemirror/language': 6.12.3
|
||||||
|
'@codemirror/state': 6.6.0
|
||||||
|
'@codemirror/view': 6.42.1
|
||||||
|
'@lezer/common': 1.5.2
|
||||||
|
'@lezer/highlight': 1.2.3
|
||||||
|
'@lezer/lr': 1.4.10
|
||||||
|
|
||||||
'@rolldown/binding-android-arm64@1.0.0-rc.17':
|
'@rolldown/binding-android-arm64@1.0.0-rc.17':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
@ -3807,6 +4277,47 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@types/webidl-conversions': 7.0.3
|
'@types/webidl-conversions': 7.0.3
|
||||||
|
|
||||||
|
'@uiw/codemirror-extensions-basic-setup@4.25.9(@codemirror/autocomplete@6.20.2)(@codemirror/commands@6.10.3)(@codemirror/language@6.12.3)(@codemirror/lint@6.9.6)(@codemirror/search@6.7.0)(@codemirror/state@6.6.0)(@codemirror/view@6.42.1)':
|
||||||
|
dependencies:
|
||||||
|
'@codemirror/autocomplete': 6.20.2
|
||||||
|
'@codemirror/commands': 6.10.3
|
||||||
|
'@codemirror/language': 6.12.3
|
||||||
|
'@codemirror/lint': 6.9.6
|
||||||
|
'@codemirror/search': 6.7.0
|
||||||
|
'@codemirror/state': 6.6.0
|
||||||
|
'@codemirror/view': 6.42.1
|
||||||
|
|
||||||
|
'@uiw/codemirror-theme-tomorrow-night-blue@4.25.9(@codemirror/language@6.12.3)(@codemirror/state@6.6.0)(@codemirror/view@6.42.1)':
|
||||||
|
dependencies:
|
||||||
|
'@uiw/codemirror-themes': 4.25.9(@codemirror/language@6.12.3)(@codemirror/state@6.6.0)(@codemirror/view@6.42.1)
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- '@codemirror/language'
|
||||||
|
- '@codemirror/state'
|
||||||
|
- '@codemirror/view'
|
||||||
|
|
||||||
|
'@uiw/codemirror-themes@4.25.9(@codemirror/language@6.12.3)(@codemirror/state@6.6.0)(@codemirror/view@6.42.1)':
|
||||||
|
dependencies:
|
||||||
|
'@codemirror/language': 6.12.3
|
||||||
|
'@codemirror/state': 6.6.0
|
||||||
|
'@codemirror/view': 6.42.1
|
||||||
|
|
||||||
|
'@uiw/react-codemirror@4.25.9(@babel/runtime@7.29.2)(@codemirror/autocomplete@6.20.2)(@codemirror/language@6.12.3)(@codemirror/lint@6.9.6)(@codemirror/search@6.7.0)(@codemirror/state@6.6.0)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.42.1)(codemirror@6.0.2)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)':
|
||||||
|
dependencies:
|
||||||
|
'@babel/runtime': 7.29.2
|
||||||
|
'@codemirror/commands': 6.10.3
|
||||||
|
'@codemirror/state': 6.6.0
|
||||||
|
'@codemirror/theme-one-dark': 6.1.3
|
||||||
|
'@codemirror/view': 6.42.1
|
||||||
|
'@uiw/codemirror-extensions-basic-setup': 4.25.9(@codemirror/autocomplete@6.20.2)(@codemirror/commands@6.10.3)(@codemirror/language@6.12.3)(@codemirror/lint@6.9.6)(@codemirror/search@6.7.0)(@codemirror/state@6.6.0)(@codemirror/view@6.42.1)
|
||||||
|
codemirror: 6.0.2
|
||||||
|
react: 19.2.5
|
||||||
|
react-dom: 19.2.5(react@19.2.5)
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- '@codemirror/autocomplete'
|
||||||
|
- '@codemirror/language'
|
||||||
|
- '@codemirror/lint'
|
||||||
|
- '@codemirror/search'
|
||||||
|
|
||||||
'@vitejs/plugin-react@6.0.1(vite@8.0.10(@types/node@24.0.4)(esbuild@0.25.5)(jiti@2.6.1)(less@4.3.0)(tsx@4.21.0))':
|
'@vitejs/plugin-react@6.0.1(vite@8.0.10(@types/node@24.0.4)(esbuild@0.25.5)(jiti@2.6.1)(less@4.3.0)(tsx@4.21.0))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@rolldown/pluginutils': 1.0.0-rc.7
|
'@rolldown/pluginutils': 1.0.0-rc.7
|
||||||
@ -3866,8 +4377,6 @@ snapshots:
|
|||||||
mime-types: 3.0.1
|
mime-types: 3.0.1
|
||||||
negotiator: 1.0.0
|
negotiator: 1.0.0
|
||||||
|
|
||||||
ace-builds@1.44.0: {}
|
|
||||||
|
|
||||||
acorn@7.4.1: {}
|
acorn@7.4.1: {}
|
||||||
|
|
||||||
ansi-regex@5.0.1: {}
|
ansi-regex@5.0.1: {}
|
||||||
@ -4121,6 +4630,16 @@ snapshots:
|
|||||||
|
|
||||||
cluster-key-slot@1.1.2: {}
|
cluster-key-slot@1.1.2: {}
|
||||||
|
|
||||||
|
codemirror@6.0.2:
|
||||||
|
dependencies:
|
||||||
|
'@codemirror/autocomplete': 6.20.2
|
||||||
|
'@codemirror/commands': 6.10.3
|
||||||
|
'@codemirror/language': 6.12.3
|
||||||
|
'@codemirror/lint': 6.9.6
|
||||||
|
'@codemirror/search': 6.7.0
|
||||||
|
'@codemirror/state': 6.6.0
|
||||||
|
'@codemirror/view': 6.42.1
|
||||||
|
|
||||||
color-convert@2.0.1:
|
color-convert@2.0.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
color-name: 1.1.4
|
color-name: 1.1.4
|
||||||
@ -4208,6 +4727,8 @@ snapshots:
|
|||||||
object-assign: 4.1.1
|
object-assign: 4.1.1
|
||||||
vary: 1.1.2
|
vary: 1.1.2
|
||||||
|
|
||||||
|
crelt@1.0.6: {}
|
||||||
|
|
||||||
cron-parser@4.9.0:
|
cron-parser@4.9.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
luxon: 3.6.1
|
luxon: 3.6.1
|
||||||
@ -4275,8 +4796,6 @@ snapshots:
|
|||||||
|
|
||||||
diacritics@1.3.0: {}
|
diacritics@1.3.0: {}
|
||||||
|
|
||||||
diff-match-patch@1.0.5: {}
|
|
||||||
|
|
||||||
dir-glob@3.0.1:
|
dir-glob@3.0.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
path-type: 4.0.0
|
path-type: 4.0.0
|
||||||
@ -4946,16 +5465,12 @@ snapshots:
|
|||||||
|
|
||||||
lodash.defaults@4.2.0: {}
|
lodash.defaults@4.2.0: {}
|
||||||
|
|
||||||
lodash.get@4.4.2: {}
|
|
||||||
|
|
||||||
lodash.includes@4.3.0: {}
|
lodash.includes@4.3.0: {}
|
||||||
|
|
||||||
lodash.isarguments@3.1.0: {}
|
lodash.isarguments@3.1.0: {}
|
||||||
|
|
||||||
lodash.isboolean@3.0.3: {}
|
lodash.isboolean@3.0.3: {}
|
||||||
|
|
||||||
lodash.isequal@4.5.0: {}
|
|
||||||
|
|
||||||
lodash.isfinite@3.3.2: {}
|
lodash.isfinite@3.3.2: {}
|
||||||
|
|
||||||
lodash.isinteger@4.0.4: {}
|
lodash.isinteger@4.0.4: {}
|
||||||
@ -4970,10 +5485,6 @@ snapshots:
|
|||||||
|
|
||||||
lodash@4.17.21: {}
|
lodash@4.17.21: {}
|
||||||
|
|
||||||
loose-envify@1.4.0:
|
|
||||||
dependencies:
|
|
||||||
js-tokens: 4.0.0
|
|
||||||
|
|
||||||
lru-cache@11.3.5: {}
|
lru-cache@11.3.5: {}
|
||||||
|
|
||||||
luxon@3.6.1: {}
|
luxon@3.6.1: {}
|
||||||
@ -4992,6 +5503,8 @@ snapshots:
|
|||||||
|
|
||||||
marked@16.0.0: {}
|
marked@16.0.0: {}
|
||||||
|
|
||||||
|
marked@16.4.2: {}
|
||||||
|
|
||||||
math-intrinsics@1.1.0: {}
|
math-intrinsics@1.1.0: {}
|
||||||
|
|
||||||
mdn-data@2.27.1: {}
|
mdn-data@2.27.1: {}
|
||||||
@ -5268,12 +5781,6 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
asap: 2.0.6
|
asap: 2.0.6
|
||||||
|
|
||||||
prop-types@15.8.1:
|
|
||||||
dependencies:
|
|
||||||
loose-envify: 1.4.0
|
|
||||||
object-assign: 4.1.1
|
|
||||||
react-is: 16.13.1
|
|
||||||
|
|
||||||
proxy-addr@2.0.7:
|
proxy-addr@2.0.7:
|
||||||
dependencies:
|
dependencies:
|
||||||
forwarded: 0.2.0
|
forwarded: 0.2.0
|
||||||
@ -5389,23 +5896,11 @@ snapshots:
|
|||||||
iconv-lite: 0.6.3
|
iconv-lite: 0.6.3
|
||||||
unpipe: 1.0.0
|
unpipe: 1.0.0
|
||||||
|
|
||||||
react-ace@14.0.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5):
|
|
||||||
dependencies:
|
|
||||||
ace-builds: 1.44.0
|
|
||||||
diff-match-patch: 1.0.5
|
|
||||||
lodash.get: 4.4.2
|
|
||||||
lodash.isequal: 4.5.0
|
|
||||||
prop-types: 15.8.1
|
|
||||||
react: 19.2.5
|
|
||||||
react-dom: 19.2.5(react@19.2.5)
|
|
||||||
|
|
||||||
react-dom@19.2.5(react@19.2.5):
|
react-dom@19.2.5(react@19.2.5):
|
||||||
dependencies:
|
dependencies:
|
||||||
react: 19.2.5
|
react: 19.2.5
|
||||||
scheduler: 0.27.0
|
scheduler: 0.27.0
|
||||||
|
|
||||||
react-is@16.13.1: {}
|
|
||||||
|
|
||||||
react-is@17.0.2: {}
|
react-is@17.0.2: {}
|
||||||
|
|
||||||
react-router-dom@7.14.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5):
|
react-router-dom@7.14.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5):
|
||||||
@ -5792,6 +6287,8 @@ snapshots:
|
|||||||
|
|
||||||
strnum@1.1.2: {}
|
strnum@1.1.2: {}
|
||||||
|
|
||||||
|
style-mod@4.1.3: {}
|
||||||
|
|
||||||
supports-color@7.2.0:
|
supports-color@7.2.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
has-flag: 4.0.0
|
has-flag: 4.0.0
|
||||||
@ -5964,6 +6461,8 @@ snapshots:
|
|||||||
|
|
||||||
void-elements@3.1.0: {}
|
void-elements@3.1.0: {}
|
||||||
|
|
||||||
|
w3c-keyname@2.2.8: {}
|
||||||
|
|
||||||
w3c-xmlserializer@5.0.0:
|
w3c-xmlserializer@5.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
xml-name-validator: 5.0.0
|
xml-name-validator: 5.0.0
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user