diff --git a/packages/startup/src/provider/index.tsx b/packages/startup/src/provider/index.tsx
index a2eb2a39..e3375ec7 100644
--- a/packages/startup/src/provider/index.tsx
+++ b/packages/startup/src/provider/index.tsx
@@ -1,67 +1,75 @@
import { AppProvider, CodeEditor, DiffEditor } from '@codeblitzjs/ide-core';
-import React from 'react';
+import React, { useEffect, useState } from 'react';
import { createRoot } from 'react-dom/client';
import '@codeblitzjs/ide-core/languages';
-import { SampleModule } from './module'
+import { SampleModule, diffsDeferred } from './module'
import '../index.css';
import './index.css'
-const App = () => (
- ',
- 'main.css': 'body {}',
- 'main.js': 'console.log("main")',
- 'package.json': '{\n "name": "startup"\n}',
- });
- },
- },
- }
- },
- }}
- >
- {
+ const [diffs, setDiffs] = useState<{filePath: string, oldFileContent: string | null, newFileContent: string | null }[]>([])
+
+ useEffect(() => {
+ setTimeout(() => {
+ const diffs = [{
+ filePath: 'a.js',
+ oldFileContent: null,
+ newFileContent: 'console.log(123)'
+ }, {
+ filePath: 'a1.js',
+ oldFileContent: 'const add = (x, y) => {\n return x + y\n}',
+ newFileContent: 'const add = (x, y) => {\n return x + y + 1\n}'
+ }]
+ setDiffs(diffs)
+ diffsDeferred.resolve(diffs)
+ }, 1000)
+ }, [])
+
+ if (!diffs) return null
+
+ return (
+
-
-
+ {diffs.map(({ filePath, oldFileContent, newFileContent }) => {
+ if (!oldFileContent) {
+ return (
+
+ )
+ } else {
+ return (
+
+ )
}
- }}
- style={{ width: 1000, height: 300 }}
- />
-
-);
+ })}
+
+ )
+};
createRoot(document.getElementById('main') as HTMLElement).render();
diff --git a/packages/startup/src/provider/module.ts b/packages/startup/src/provider/module.ts
index db166f6c..a04835af 100644
--- a/packages/startup/src/provider/module.ts
+++ b/packages/startup/src/provider/module.ts
@@ -1,18 +1,9 @@
import { Autowired, Injectable, Provider } from '@opensumi/di';
import { BrowserModule } from '@opensumi/ide-core-browser';
import { IEditorDocumentModelContentProvider, BrowserEditorContribution, IEditorDocumentModelContentRegistry } from '@opensumi/ide-editor/lib/browser'
-import { URI, Emitter, Event, Domain } from '@opensumi/ide-core-common'
+import { URI, Emitter, Event, Domain, Deferred } from '@opensumi/ide-core-common'
-const contentMap = {
- 'a1.js': `const add = (x, y) => {
- return x + y
-}
-`,
- 'a2.js': `const add = (x, y) => {
- return x + y + 1
-}
-`,
-}
+export const diffsDeferred = new Deferred<{filePath: string, oldFileContent: string | null, newFileContent: string }[]>()
@Injectable()
export class SampleSchemeDocumentProvider implements IEditorDocumentModelContentProvider {
@@ -21,11 +12,15 @@ export class SampleSchemeDocumentProvider implements IEditorDocumentModelContent
}
async provideEditorDocumentModelContent(uri: URI): Promise {
- return contentMap[uri.codeUri.path.slice(1)]
+ const diffs = await diffsDeferred.promise
+ const diff = diffs.find(item => item.filePath === uri.codeUri.path.slice(1))
+ if (!diff) return ''
+ if (uri.authority === 'new') return diff.newFileContent
+ return diff.oldFileContent || ''
}
isReadonly() {
- return true;
+ return false;
}
private _onDidChangeContent: Emitter = new Emitter();