diff --git a/extensions/void/package-lock.json b/extensions/void/package-lock.json index a7f8924e..4dc634b3 100644 --- a/extensions/void/package-lock.json +++ b/extensions/void/package-lock.json @@ -9,6 +9,7 @@ "version": "0.0.1", "dependencies": { "@anthropic-ai/sdk": "^0.27.1", + "@monaco-editor/react": "^4.6.0", "openai": "^4.57.0" }, "devDependencies": { @@ -556,6 +557,32 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@monaco-editor/loader": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@monaco-editor/loader/-/loader-1.4.0.tgz", + "integrity": "sha512-00ioBig0x642hytVspPl7DbQyaSWRaolYie/UFNjoTdvoKPzo6xrXLhTk9ixgIKcLH5b5vDOjVNiGyY+uDCUlg==", + "license": "MIT", + "dependencies": { + "state-local": "^1.0.6" + }, + "peerDependencies": { + "monaco-editor": ">= 0.21.0 < 1" + } + }, + "node_modules/@monaco-editor/react": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@monaco-editor/react/-/react-4.6.0.tgz", + "integrity": "sha512-RFkU9/i7cN2bsq/iTkurMWOEErmYcY6JiQI3Jn+WeR/FGISH8JbHERjpS9oRuSOPvDMJI0Z8nJeKkbOs9sBYQw==", + "license": "MIT", + "dependencies": { + "@monaco-editor/loader": "^1.4.0" + }, + "peerDependencies": { + "monaco-editor": ">= 0.25.0 < 1", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -4410,8 +4437,7 @@ "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/js-yaml": { "version": "4.1.0", @@ -4582,7 +4608,6 @@ "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, "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -5532,6 +5557,13 @@ "node": ">=10" } }, + "node_modules/monaco-editor": { + "version": "0.52.0", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.52.0.tgz", + "integrity": "sha512-OeWhNpABLCeTqubfqLMXGsqf6OmPU6pHM85kF3dhy6kq5hnhuVS1p3VrEW/XhWHc71P2tHyS5JFySD8mgs1crw==", + "license": "MIT", + "peer": true + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -6498,7 +6530,6 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", - "dev": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -6510,7 +6541,6 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", - "dev": true, "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", @@ -7075,7 +7105,6 @@ "version": "0.23.2", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", - "dev": true, "license": "MIT", "dependencies": { "loose-envify": "^1.1.0" @@ -7254,6 +7283,12 @@ "node": ">=8" } }, + "node_modules/state-local": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/state-local/-/state-local-1.0.7.tgz", + "integrity": "sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==", + "license": "MIT" + }, "node_modules/stdin-discarder": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.1.0.tgz", diff --git a/extensions/void/package.json b/extensions/void/package.json index 32d9b22e..7f507c86 100644 --- a/extensions/void/package.json +++ b/extensions/void/package.json @@ -146,6 +146,7 @@ }, "dependencies": { "@anthropic-ai/sdk": "^0.27.1", + "@monaco-editor/react": "^4.6.0", "openai": "^4.57.0" } } diff --git a/extensions/void/src/sidebar/markdown/BlockCode.tsx b/extensions/void/src/sidebar/markdown/BlockCode.tsx index 5da01e10..c1113b57 100644 --- a/extensions/void/src/sidebar/markdown/BlockCode.tsx +++ b/extensions/void/src/sidebar/markdown/BlockCode.tsx @@ -10,7 +10,9 @@ enum CopyButtonState { Error = "Could not copy", } -const COPY_FEEDBACK_TIMEOUT = 1000 +const COPY_FEEDBACK_TIMEOUT = 1000 // amount of time to say 'Copied!' + + // code block with toolbar (Apply, Copy, etc) at top const BlockCode = ({ @@ -74,8 +76,73 @@ const BlockCode = ({ ) - return ( + return (<> + + {/* { + + + const model = editor.getModel() + model?.setEOL(monaco.editor.EndOfLineSequence.LF) + if (modelRef) + modelRef.current = model + + // model?.updateOptions({ tabSize: 4 }) // apparently this should get set on the model, not the editor () + + monaco?.editor.setTheme('whatever') + + + }} + loading='' + defaultValue={initValue} + defaultLanguage={'python'} + + onChange={() => { onChangeText?.() }} + height={'100%'} // 100% or the exact pixel height + theme={'whatever'} + + + options={{ + matchBrackets: 'always', + detectIndentation: false, // we always want a tab size of 4 + tabSize: 4, + insertSpaces: true, + + // glyphMargin: false, + // renderIndentGuides: false, + + + + // fontSize: 15, + wordWrapColumn: 10000, // we want this to be infinity + // automaticLayout: true, + wordWrap: 'bounded', // 'off' + // wordBreak: 'keepAll', + // automaticLayout: true, + // lineDecorationsWidth: 0, + lineNumbersMinChars: 4, + lineNumbers: isPseudocode ? 'off' : 'on', + renderLineHighlight: 'none', + minimap: { enabled: false }, + scrollBeyondLastColumn: 0, + scrollBeyondLastLine: false, + scrollbar: { + alwaysConsumeMouseWheel: false, //height !== undefined + // vertical: 'hidden', + // horizontal: 'hidden' + }, + + overviewRulerLanes: 0, + readOnly: !onChangeText, + quickSuggestions: false, + + ...options + }} + /> */} + +
+ {!hideToolbar && (
{toolbar || defaultToolbar}
@@ -94,6 +161,7 @@ const BlockCode = ({
+ ) }