From 16afcb199747eb21684c596dac8bc5cf1defb8e8 Mon Sep 17 00:00:00 2001 From: Andy Zhang Date: Tue, 13 Feb 2024 12:05:04 -0800 Subject: [PATCH 01/12] Add extension version --- rollup.config.js | 9 ++++++++- src/utils/identity.ts | 3 ++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/rollup.config.js b/rollup.config.js index 344c7cf..f22f04e 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -5,6 +5,9 @@ import dts from "rollup-plugin-dts"; import banner2 from 'rollup-plugin-banner2' import packageJson from "./package.json" assert { type: "json" }; +const version = packageJson.version ?? null; + + export default [ { input: "src/index.ts", @@ -26,7 +29,11 @@ export default [ commonjs(), typescript({ tsconfig: "./tsconfig.json" }), banner2(() => ` - "use client"; +"use client"; + +if (typeof window !== "undefined") { + window.CODEIUM_REACT_CODE_VERSION = ${version ? `${JSON.stringify(version)}` : null}; +} `) ], }, diff --git a/src/utils/identity.ts b/src/utils/identity.ts index 9590ebc..7b1ff39 100644 --- a/src/utils/identity.ts +++ b/src/utils/identity.ts @@ -23,7 +23,8 @@ export const getBrowserVersion = () => { */ export const getPackageVersion = () => { try { - return require('../../package.json').version; + // @ts-ignore + return window.CODEIUM_REACT_CODE_VERSION ? window.CODEIUM_REACT_CODE_VERSION : null; } catch (e) { return null; } From 436c248eae17f82d70ee040d6d06acc4da40a694 Mon Sep 17 00:00:00 2001 From: Kevin Hou Date: Tue, 13 Feb 2024 13:54:10 -0800 Subject: [PATCH 02/12] Removing logging --- src/components/CodeiumEditor/CompletionProvider.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/components/CodeiumEditor/CompletionProvider.ts b/src/components/CodeiumEditor/CompletionProvider.ts index b0df60e..4c14c9a 100644 --- a/src/components/CodeiumEditor/CompletionProvider.ts +++ b/src/components/CodeiumEditor/CompletionProvider.ts @@ -131,10 +131,6 @@ export class MonacoCompletionProvider { ); includedOtherDocs = includedOtherDocs.slice(0, 10); } - console.log( - `Included other documents: ${includedOtherDocs.length}`, - includedOtherDocs.map((d) => d.toJson()), - ); // Get completions. let getCompletionsResponse: GetCompletionsResponse; From d3700a9d71984baeb09433382ca4cfd94b114909 Mon Sep 17 00:00:00 2001 From: Kevin Hou Date: Tue, 13 Feb 2024 14:13:21 -0800 Subject: [PATCH 03/12] Merge user settings with defaults --- .../CodeiumEditor/CodeiumEditor.tsx | 41 ++++++++++--------- src/utils/merge.ts | 31 ++++++++++++++ 2 files changed, 53 insertions(+), 19 deletions(-) create mode 100644 src/utils/merge.ts diff --git a/src/components/CodeiumEditor/CodeiumEditor.tsx b/src/components/CodeiumEditor/CodeiumEditor.tsx index 3266d3c..5aab388 100644 --- a/src/components/CodeiumEditor/CodeiumEditor.tsx +++ b/src/components/CodeiumEditor/CodeiumEditor.tsx @@ -12,6 +12,7 @@ import { LanguageServerService } from '../../api/proto/exa/language_server_pb/la import { InlineCompletionProvider } from './InlineCompletionProvider'; import { CodeiumLogo } from '../CodeiumLogo/CodeiumLogo'; import { Document } from '../../models'; +import { deepMerge } from '../../utils/merge'; export interface CodeiumEditorProps extends EditorProps { language: string; @@ -184,26 +185,28 @@ export const CodeiumEditor: React.FC = ({ width={layout.width} height={layout.height} onMount={handleEditorDidMount} - options={{ - scrollBeyondLastColumn: 0, - scrollbar: { - alwaysConsumeMouseWheel: false, + options={deepMerge( + props.options, + { + scrollBeyondLastColumn: 0, + scrollbar: { + alwaysConsumeMouseWheel: false, + }, + codeLens: false, + // for resizing, but apparently might have "severe performance impact" + // automaticLayout: true, + minimap: { + enabled: false, + }, + quickSuggestions: false, + folding: false, + foldingHighlight: false, + foldingImportsByDefault: false, + links: false, + fontSize: 14, + wordWrap: 'on', }, - codeLens: false, - // for resizing, but apparently might have "severe performance impact" - // automaticLayout: true, - minimap: { - enabled: false, - }, - quickSuggestions: false, - folding: false, - foldingHighlight: false, - foldingImportsByDefault: false, - links: false, - fontSize: 14, - wordWrap: 'on', - ...props.options, - }} + )} /> ); diff --git a/src/utils/merge.ts b/src/utils/merge.ts new file mode 100644 index 0000000..df87541 --- /dev/null +++ b/src/utils/merge.ts @@ -0,0 +1,31 @@ +/** + * Merges a partial object with a fallback object, deeply combining the two. + * + * @param {Partial} partial - the partial object to merge (can be undefined) + * @param {T} fallback - the fallback object to merge with + * @return {T} the merged object + */ +export function deepMerge(partial: Partial | undefined, fallback: T): T { + const merged: any = { ...fallback }; + + for (const key in partial) { + if (typeof partial[key] === 'object' && !Array.isArray(partial[key])) { + if ( + fallback[key] && + typeof fallback[key] === 'object' && + !Array.isArray(fallback[key]) + ) { + merged[key] = deepMerge( + partial[key] as Partial | undefined, + fallback[key] as T, + ); + } else { + merged[key] = { ...partial[key] }; + } + } else { + merged[key] = partial[key]; + } + } + + return merged; +} From 64ad4b4d7ab779ea45dab2ce64aeb132ef0ea95d Mon Sep 17 00:00:00 2001 From: Kevin Hou Date: Tue, 13 Feb 2024 14:19:57 -0800 Subject: [PATCH 04/12] Working options merge --- src/stories/CodeiumEditor.stories.tsx | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/stories/CodeiumEditor.stories.tsx b/src/stories/CodeiumEditor.stories.tsx index 717f6e8..2d78b7d 100644 --- a/src/stories/CodeiumEditor.stories.tsx +++ b/src/stories/CodeiumEditor.stories.tsx @@ -167,6 +167,11 @@ export const MultiFileContext: Story = { args: { ...baseParams, language: 'javascript', + options: { + scrollbar: { + vertical: 'hidden', + }, + }, value: `// You have context over a sample HTML page. // Codeium's generation will take this context into account when suggesting. From 788bae38304e88c4f95bcaaa7ca21e94c029574a Mon Sep 17 00:00:00 2001 From: Andy Zhang Date: Tue, 13 Feb 2024 14:24:49 -0800 Subject: [PATCH 05/12] Update version to 1.0.9 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 89a2b6b..d5860a2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@codeium/react-code-editor", - "version": "1.0.8", + "version": "1.0.9", "description": "AI-powered React component", "main": "dist/index.js", "type": "module", From 9aa1bec425d451d121513d6c51d3e311bbe0a9ef Mon Sep 17 00:00:00 2001 From: Andy Zhang Date: Tue, 13 Feb 2024 14:36:08 -0800 Subject: [PATCH 06/12] Update version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d5860a2..dd765ed 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@codeium/react-code-editor", - "version": "1.0.9", + "version": "1.0.10", "description": "AI-powered React component", "main": "dist/index.js", "type": "module", From 95abf18947f13a0e85f2903adf5f75511d32fc96 Mon Sep 17 00:00:00 2001 From: Kevin Hou Date: Thu, 15 Feb 2024 16:52:52 -0800 Subject: [PATCH 07/12] Plain text editor --- .../CodeiumEditor/CodeiumEditor.tsx | 14 ++++ src/stories/CodeiumEditor.stories.tsx | 68 +++++++++++++++++++ 2 files changed, 82 insertions(+) diff --git a/src/components/CodeiumEditor/CodeiumEditor.tsx b/src/components/CodeiumEditor/CodeiumEditor.tsx index 5aab388..2b78e7a 100644 --- a/src/components/CodeiumEditor/CodeiumEditor.tsx +++ b/src/components/CodeiumEditor/CodeiumEditor.tsx @@ -34,6 +34,16 @@ export interface CodeiumEditorProps extends EditorProps { * documents. */ otherDocuments?: Document[]; + + /** + * Optional classname for the container. + */ + containerClassName?: string; + + /** + * Optional styles for the container. + */ + containerStyle?: React.CSSProperties; } /** @@ -43,6 +53,8 @@ export interface CodeiumEditorProps extends EditorProps { export const CodeiumEditor: React.FC = ({ languageServerAddress = 'https://web-backend.codeium.com', otherDocuments = [], + containerClassName = '', + containerStyle = {}, ...props }) => { const editorRef = useRef(null); @@ -166,7 +178,9 @@ export const CodeiumEditor: React.FC = ({ style={{ ...layout, position: 'relative', + ...containerStyle, }} + className={containerClassName} > ( +
+

Plain Text

+