diff --git a/frontend/src/lib/components/DiffEditor.svelte b/frontend/src/lib/components/DiffEditor.svelte index 524c7e264c..186712f214 100644 --- a/frontend/src/lib/components/DiffEditor.svelte +++ b/frontend/src/lib/components/DiffEditor.svelte @@ -32,6 +32,7 @@ defaultModified?: string readOnly?: boolean buttons?: ButtonProp[] + modifiedModel?: meditor.ITextModel } let { @@ -44,7 +45,8 @@ defaultOriginal = undefined, defaultModified = undefined, readOnly = false, - buttons = [] + buttons = [], + modifiedModel }: Props = $props() let diffEditor: meditor.IStandaloneDiffEditor | undefined = $state(undefined) @@ -72,11 +74,8 @@ lineNumbersMinChars: 2, scrollbar: { alwaysConsumeMouseWheel: false } }) - if ( - defaultOriginal !== undefined && - defaultModified !== undefined && - defaultLang !== undefined - ) { + + if (defaultLang !== undefined) { setupModel(defaultLang, defaultOriginal, defaultModified, defaultModifiedLang) } } @@ -87,16 +86,12 @@ modified?: string, modifiedLang?: string ) { + const o = meditor.createModel(original ?? '', lang) + const m = modifiedModel ?? meditor.createModel(modified ?? '', modifiedLang ?? lang) diffEditor?.setModel({ - original: meditor.createModel('', lang), - modified: meditor.createModel('', modifiedLang ?? lang) + original: o, + modified: m }) - if (original) { - setOriginal(original) - } - if (modified) { - setModified(modified) - } } export function setOriginal(code: string) { @@ -113,6 +108,15 @@ defaultModified = code } + export function setModifiedModel(model: meditor.ITextModel) { + const curr = diffEditor?.getModel() + if (!curr) return + diffEditor?.setModel({ + original: curr.original, + modified: model + }) + } + export function getModified(): string { return diffEditor?.getModel()?.modified.getValue() ?? '' } diff --git a/frontend/src/lib/components/ScriptEditor.svelte b/frontend/src/lib/components/ScriptEditor.svelte index 677d69fa4c..e7ebe6c0d1 100644 --- a/frontend/src/lib/components/ScriptEditor.svelte +++ b/frontend/src/lib/components/ScriptEditor.svelte @@ -48,6 +48,7 @@ import { triggerableByAI } from '$lib/actions/triggerableByAI.svelte' import AssetsDropdownButton from './assets/AssetsDropdownButton.svelte' import { assetEq, type AssetWithAltAccessType } from './assets/lib' + import { editor as meditor } from 'monaco-editor' interface Props { // Exported @@ -403,7 +404,7 @@ function showDiffMode() { diffMode = true diffEditor?.setOriginal(lastDeployedCode ?? '') - diffEditor?.setModified(editor?.getCode() ?? '') + diffEditor?.setModifiedModel(editor?.getModel() as meditor.ITextModel) diffEditor?.show() editor?.hide() } @@ -628,6 +629,7 @@