forgeplus-react/src/forge/Newfile/webIDE.jsx

153 lines
4.7 KiB
JavaScript

import React , { useEffect, useState, useMemo }from 'react';
import { AppRenderer, requireModule } from 'alex';
import { SlotLocation } from './plugins/idePlugin';
import css from './extensions/alex-ext-public.css-language-features-worker.js';
import html from './extensions/alex-ext-public.html-language-features-worker.js';
import json from './extensions/alex-ext-public.json-language-features-worker.js';
import markdown from './extensions/alex-ext-public.markdown-language-features-worker.js';
import typescript from './extensions/alex-ext-public.typescript-language-features-worker.js';
import anycode from './extensions/alex-ext-public.anycode.js';
import anycodeCSharp from './extensions/alex-ext-public.anycode-c-sharp.js';
import anycodeCpp from './extensions/alex-ext-public.anycode-cpp.js';
import anycodeGo from './extensions/alex-ext-public.anycode-go.js';
import anycodeJava from './extensions/alex-ext-public.anycode-java.js';
import anycodePhp from './extensions/alex-ext-public.anycode-php.js';
import anycodePython from './extensions/alex-ext-public.anycode-python.js';
import anycodeRust from './extensions/alex-ext-public.anycode-rust.js';
import anycodeTypescript from './extensions/alex-ext-public.anycode-typescript.js';
import codeRunner from './extensions/alex-ext-public.code-runner-for-web.js';
import emmet from './extensions/alex-ext-public.emmet.js';
import codeswing from './extensions/alex-ext-public.codeswing.js';
import referencesView from './extensions/alex-ext-public.references-view.js';
import gitlens from './extensions/alex-ext-public.gitlens.js';
import graph from './extensions/alex-ext-public.git-graph.js';
import imagePreview from './extensions/alex-ext-public.image-preview.js';
import webSCM from './extensions/alex-ext-public.web-scm.js';
import * as SCMPlugin from './plugins/web-scm.plugin';
import * as AlexApp from './plugins/alex-app.plugin';
import './index.scss';
const CodeServiceModule = requireModule(
'@alipay/alex-code-service'
).CodeServiceModule;
const CodeAPIModule = requireModule('@alipay/alex-code-api').CodeAPIModule;
const layoutConfig = {
[SlotLocation.top]: {
modules: ['@opensumi/ide-menu-bar'],
},
[SlotLocation.action]: {
modules: [''],
},
[SlotLocation.left]: {
modules: [
'@opensumi/ide-explorer',
// 暂时移除搜索能力
// '@opensumi/ide-search',
'@opensumi/ide-extension-manager',
'@opensumi/ide-scm',
],
},
[SlotLocation.main]: {
modules: ['@opensumi/ide-editor'],
},
[SlotLocation.bottom]: {
modules: ['@opensumi/ide-output', '@opensumi/ide-markers'],
},
[SlotLocation.statusBar]: {
modules: ['@opensumi/ide-status-bar'],
},
[SlotLocation.extra]: {
modules: ['breadcrumb-menu'],
},
};
// const platformConfig = {
// gitlink: {
// owner: 'Gitlink',
// name: 'forgeplus',
// refPath: '',
// commit: '',
// },
// };
const platform = 'gitlink';
// let pathParts = location.pathname.split('/').filter(Boolean);
// const config = platformConfig[platform];
// if (pathParts[1]) {
// config.owner = pathParts[1];
// }
// if (pathParts[2]) {
// config.name = pathParts[2];
// }
// config.refPath = pathParts.slice(3).join('/');
const WebIDE = ( props) => {
const { match: { params: { owner, projectsId, branchName } }, } = props;
return (<AppRenderer
appConfig={{
plugins: [SCMPlugin, AlexApp],
modules: [
CodeServiceModule.Config({
platform: platform,
owner: owner,
name: projectsId,
refPath: 'tree/'+branchName,
commit: '',
hash: window.location.hash,
gitlink: {
// webpack 代理转发
// endpoint: '/code-service',
// endpoint:''
origin: 'https://testforgeplus.trustie.net',
endpoint: 'https://testforgeplus.trustie.net'
},
}),
CodeAPIModule,
// StartupModule,
],
extensionMetadata: [
css,
html,
json,
markdown,
typescript,
// TODO 后续增加插件 这些插件暂时还没有在公网发布
gitlens,
graph,
imagePreview,
webSCM,
referencesView,
codeswing,
emmet,
anycodeCSharp,
anycodeCpp,
anycodeGo,
anycodeJava,
anycodePhp,
anycodePython,
anycodeRust,
anycodeTypescript,
anycode,
codeRunner,
],
workspaceDir: `${platform}/${owner}/${projectsId}`,
layoutConfig,
defaultPreferences: {
'general.theme': 'opensumi-light',
},
}}
runtimeConfig={{
biz: 'alex',
// scm文件树
scmFileTree: true,
}}
/>
)};
export default WebIDE;