@opensumi/ide-core-browser 2.25.3 → 2.25.4-next-1688526464.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/lib/common/common.command.d.ts +5 -0
  2. package/lib/common/common.command.d.ts.map +1 -1
  3. package/lib/common/common.command.js +17 -1
  4. package/lib/common/common.command.js.map +1 -1
  5. package/lib/components/actions/index.js +4 -4
  6. package/lib/components/actions/index.js.map +1 -1
  7. package/lib/components/layout/layout.d.ts +5 -5
  8. package/lib/components/layout/split-panel.d.ts.map +1 -1
  9. package/lib/components/layout/split-panel.js +40 -39
  10. package/lib/components/layout/split-panel.js.map +1 -1
  11. package/lib/layout/layout.interface.d.ts +2 -0
  12. package/lib/layout/layout.interface.d.ts.map +1 -1
  13. package/lib/layout/layout.interface.js.map +1 -1
  14. package/lib/markdown/index.d.ts.map +1 -1
  15. package/lib/markdown/index.js +0 -1
  16. package/lib/markdown/index.js.map +1 -1
  17. package/lib/menu/next/menu-id.d.ts +2 -1
  18. package/lib/menu/next/menu-id.d.ts.map +1 -1
  19. package/lib/menu/next/menu-id.js +2 -0
  20. package/lib/menu/next/menu-id.js.map +1 -1
  21. package/lib/preferences/settings.d.ts +4 -0
  22. package/lib/preferences/settings.d.ts.map +1 -1
  23. package/lib/react-providers/config-provider.d.ts +2 -1
  24. package/lib/react-providers/config-provider.d.ts.map +1 -1
  25. package/package.json +5 -5
  26. package/src/common/common.command.ts +17 -0
  27. package/src/components/actions/index.tsx +6 -6
  28. package/src/components/layout/split-panel.tsx +204 -168
  29. package/src/layout/layout.interface.ts +2 -0
  30. package/src/markdown/index.tsx +0 -1
  31. package/src/menu/next/menu-id.ts +2 -0
  32. package/src/preferences/settings.ts +4 -0
  33. package/src/react-providers/config-provider.tsx +3 -1
@@ -42,6 +42,10 @@ export interface IPreferenceViewDesc {
42
42
  hiddenInScope?: PreferenceScope[];
43
43
  }
44
44
  export interface ISettingSection {
45
+ /**
46
+ * 插件 ID
47
+ */
48
+ extensionId?: string;
45
49
  /**
46
50
  * 该 Section 的名字
47
51
  */
@@ -1 +1 @@
1
- {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/preferences/settings.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAElF,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,eAAO,MAAM,0BAA0B,eAAuC,CAAC;AAC/E,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,wBAAwB,EAAE,CAAC;IAEpC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,eAAe,OAAE;IAE/D,gBAAgB,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,aAAa,EAAE,CAAC;IAE3E,oBAAoB,CAAC,KAAK,EAAE,aAAa,GAAG,WAAW,CAAC;IAExD,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,WAAW,CAAC;IAE/E,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,uBAAuB,EAAE,CAAC;IACzG,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAAC;IAC7E,aAAa,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG;QAAE,KAAK,EAAE,GAAG,CAAC;QAAC,cAAc,EAAE,eAAe,CAAA;KAAE,CAAC;IAE/G,aAAa,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAE/E,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/C,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAE5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,aAAa,CAAC,EAAE,eAAe,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,WAAW,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACpC;;OAEG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,KAAK,EAAE,eAAe,CAAA;KAAE,CAAC,CAAC;IAC5D;;OAEG;IACH,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC;IAChC;;OAEG;IACH,aAAa,CAAC,EAAE,eAAe,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,uBAAwB,SAAQ,eAAe;IAC9D,WAAW,CAAC,EAAE,2BAA2B,EAAE,CAAC;IAC5C,WAAW,CAAC,EAAE,uBAAuB,EAAE,CAAC;CACzC;AAED,MAAM,WAAW,2BAA2B;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B"}
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/preferences/settings.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAElF,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,eAAO,MAAM,0BAA0B,eAAuC,CAAC;AAC/E,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,wBAAwB,EAAE,CAAC;IAEpC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,eAAe,OAAE;IAE/D,gBAAgB,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,aAAa,EAAE,CAAC;IAE3E,oBAAoB,CAAC,KAAK,EAAE,aAAa,GAAG,WAAW,CAAC;IAExD,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,WAAW,CAAC;IAE/E,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,uBAAuB,EAAE,CAAC;IACzG,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAAC;IAC7E,aAAa,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG;QAAE,KAAK,EAAE,GAAG,CAAC;QAAC,cAAc,EAAE,eAAe,CAAA;KAAE,CAAC;IAE/G,aAAa,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAE/E,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/C,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAE5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,aAAa,CAAC,EAAE,eAAe,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,WAAW,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACpC;;OAEG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,KAAK,EAAE,eAAe,CAAA;KAAE,CAAC,CAAC;IAC5D;;OAEG;IACH,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC;IAChC;;OAEG;IACH,aAAa,CAAC,EAAE,eAAe,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,uBAAwB,SAAQ,eAAe;IAC9D,WAAW,CAAC,EAAE,2BAA2B,EAAE,CAAC;IAC5C,WAAW,CAAC,EAAE,uBAAuB,EAAE,CAAC;CACzC;AAED,MAAM,WAAW,2BAA2B;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B"}
@@ -211,7 +211,7 @@ export interface AppConfig {
211
211
  * 视图组件内默认的组件样式资源 CDN 来源
212
212
  * 默认值为 'alipay'
213
213
  */
214
- componentCDNType?: 'unpkg' | 'jsdelivr' | 'alipay';
214
+ componentCDNType?: TComponentCDNType;
215
215
  /**
216
216
  * 指定前端是否为 Electron 环境 (Electron Renderer)
217
217
  * 为兼容老的逻辑,若不兼容则 fallback 到 isElectronRenderer 的判断
@@ -248,4 +248,5 @@ export declare const ConfigContext: React.Context<AppConfig>;
248
248
  export declare function ConfigProvider(props: React.PropsWithChildren<{
249
249
  value: AppConfig;
250
250
  }>): JSX.Element;
251
+ export type TComponentCDNType = 'unpkg' | 'jsdelivr' | 'alipay' | 'npmmirror';
251
252
  //# sourceMappingURL=config-provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-provider.d.ts","sourceRoot":"","sources":["../../src/react-providers/config-provider.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-provider.d.ts","sourceRoot":"","sources":["../../src/react-providers/config-provider.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opensumi/ide-core-browser",
3
- "version": "2.25.3",
3
+ "version": "2.25.4-next-1688526464.0",
4
4
  "description": "@opensumi/ide-core-browser",
5
5
  "files": [
6
6
  "lib",
@@ -18,9 +18,9 @@
18
18
  "build": "tsc --build ../../configs/ts/references/tsconfig.core-browser.json"
19
19
  },
20
20
  "dependencies": {
21
- "@opensumi/ide-components": "2.25.3",
22
- "@opensumi/ide-connection": "2.25.3",
23
- "@opensumi/ide-core-common": "2.25.3",
21
+ "@opensumi/ide-components": "2.25.4-next-1688526464.0",
22
+ "@opensumi/ide-connection": "2.25.4-next-1688526464.0",
23
+ "@opensumi/ide-core-common": "2.25.4-next-1688526464.0",
24
24
  "@opensumi/vscode-debugprotocol": "1.49.0-beta.1",
25
25
  "@vscode/codicons": "0.0.27",
26
26
  "ajv": "^6.10.0",
@@ -50,5 +50,5 @@
50
50
  "peerDependencies": {
51
51
  "react": ">=16.8.6"
52
52
  },
53
- "gitHead": "f4e9157217c34d71493d704d32d0d0cf2dc9cc41"
53
+ "gitHead": "5b91ede7c8aaff39b2132b7d171ace7385fee1db"
54
54
  }
@@ -363,6 +363,12 @@ export namespace EDITOR_COMMANDS {
363
363
  category: CATEGORY,
364
364
  };
365
365
 
366
+ export const MERGEEDITOR_RESET: Command = {
367
+ id: 'editor.mergeEditor.reset',
368
+ category: CATEGORY,
369
+ label: '%mergeEditor.reset%',
370
+ };
371
+
366
372
  export const CLOSE: Command = {
367
373
  id: 'editor.close',
368
374
  category: CATEGORY,
@@ -1012,3 +1018,14 @@ export namespace QUICK_OPEN_COMMANDS {
1012
1018
  id: 'editor.action.quickView',
1013
1019
  };
1014
1020
  }
1021
+
1022
+ export namespace SCM_COMMANDS {
1023
+ // git extension 1.71 版本之前存在下划线,这里为了做兼容处理: https://github.com/microsoft/vscode/blob/1.68.1/extensions/git/src/repository.ts#L613
1024
+ export const _GIT_OPEN_MERGE_EDITOR: Command = {
1025
+ id: '_git.openMergeEditor',
1026
+ };
1027
+ // git extension 1.71 版本之后就去掉了前面的下划线: https://github.com/microsoft/vscode/commit/c0ade8bc816386b7194d69fed878d4b9bb796d6c#diff-da56ff967ab1a9606c01af61dc926332afb862f13c8e5c74a575bc2aa1b15e43R411
1028
+ export const GIT_OPEN_MERGE_EDITOR: Command = {
1029
+ id: 'git.openMergeEditor',
1030
+ };
1031
+ }
@@ -108,9 +108,9 @@ export const MenuActionList: React.FC<{
108
108
  }
109
109
 
110
110
  return (
111
- <>
111
+ <React.Fragment key={`${menuNode.id}-${(menuNode as SubmenuItemNode).submenuId}-${index}`}>
112
112
  <Menu.SubMenu
113
- key={`${(menuNode as SubmenuItemNode).submenuId}-${index}`}
113
+ key={`${menuNode.id}-${(menuNode as SubmenuItemNode).submenuId}-${index}`}
114
114
  className={styles.submenuItem}
115
115
  popupClassName='kt-menu'
116
116
  title={<MenuAction hasSubmenu data={menuNode} iconService={iconService} />}
@@ -118,22 +118,22 @@ export const MenuActionList: React.FC<{
118
118
  {recursiveRender(menuNode.children, menuNode.label)}
119
119
  </Menu.SubMenu>
120
120
  {hasSeparator ? <Menu.Divider key={`divider-${index}`} className={styles.menuItemDivider} /> : null}
121
- </>
121
+ </React.Fragment>
122
122
  );
123
123
  }
124
124
 
125
125
  return (
126
- <>
126
+ <React.Fragment key={`${menuNode.id}-${index}`}>
127
127
  <Menu.Item
128
128
  id={`${menuNode.id}-${index}`}
129
- key={`${menuNode.id}-${key}-${index}`}
129
+ key={`${menuNode.id}-${index}`}
130
130
  className={styles.menuItem}
131
131
  disabled={menuNode.disabled}
132
132
  >
133
133
  <MenuAction data={menuNode} disabled={menuNode.disabled} iconService={iconService} />
134
134
  </Menu.Item>
135
135
  {hasSeparator ? <Menu.Divider key={`divider-${index}`} className={styles.menuItemDivider} /> : null}
136
- </>
136
+ </React.Fragment>
137
137
  );
138
138
  }),
139
139
  [],
@@ -79,6 +79,18 @@ export interface SplitPanelProps extends SplitChildProps {
79
79
  const getProp = (child: React.ReactNode, prop: string) =>
80
80
  child && child['props'] && (child['props'][prop] ?? child['props'][`data-sp-${prop}`]);
81
81
 
82
+ function getElementSize(element: any, totalFlexNum: number) {
83
+ if (getProp(element, 'savedSize')) {
84
+ return getProp(element, 'savedSize') + 'px';
85
+ } else if (getProp(element, 'defaultSize') !== undefined) {
86
+ return getProp(element, 'defaultSize') + 'px';
87
+ } else if (getProp(element, 'flex')) {
88
+ return (getProp(element, 'flex') / totalFlexNum) * 100 + '%';
89
+ } else {
90
+ return (1 / totalFlexNum) * 100 + '%';
91
+ }
92
+ }
93
+
82
94
  export const SplitPanel: React.FC<SplitPanelProps> = ({
83
95
  id,
84
96
  className,
@@ -95,12 +107,17 @@ export const SplitPanel: React.FC<SplitPanelProps> = ({
95
107
  }) => {
96
108
  const ResizeHandle = Layout.getResizeHandle(direction);
97
109
  // convert children to list
98
- const childList = React.Children.toArray(children);
99
- const totalFlexNum = childList.reduce(
100
- (accumulator, item) => accumulator + (getProp(item, 'flex') !== undefined ? getProp(item, 'flex') : 1),
101
- 0,
110
+ const childList = React.useMemo(() => React.Children.toArray(children), [children]);
111
+
112
+ const totalFlexNum = React.useMemo(
113
+ () =>
114
+ childList.reduce(
115
+ (accumulator, item) => accumulator + (getProp(item, 'flex') !== undefined ? getProp(item, 'flex') : 1),
116
+ 0,
117
+ ),
118
+ [childList],
102
119
  );
103
- const elements: React.ReactNodeArray = [];
120
+
104
121
  const resizeDelegates = React.useRef<IResizeHandleDelegate[]>([]);
105
122
  const eventBus = useInjectable<IEventBus>(IEventBus);
106
123
  const rootRef = React.useRef<HTMLElement>();
@@ -115,178 +132,197 @@ export const SplitPanel: React.FC<SplitPanelProps> = ({
115
132
  splitPanelService.panels = [];
116
133
 
117
134
  // 获取setSize的handle,对于最右端或最底部的视图,取上一个位置的handle
118
- const setSizeHandle = (index) => (size?: number, isLatter?: boolean) => {
119
- const targetIndex = isLatter ? index - 1 : index;
120
- const delegate = resizeDelegates.current[targetIndex];
121
- if (delegate) {
122
- delegate.setAbsoluteSize(
123
- size !== undefined ? size : getProp(childList[index], 'defaultSize'),
124
- isLatter,
125
- resizeKeep,
126
- );
127
- }
128
- };
129
-
130
- const setRelativeSizeHandle = (index) => (prev: number, next: number, isLatter?: boolean) => {
131
- const targetIndex = isLatter ? index - 1 : index;
132
- const delegate = resizeDelegates.current[targetIndex];
133
- if (delegate) {
134
- delegate.setRelativeSize(prev, next);
135
- }
136
- };
137
-
138
- const getSizeHandle = (index) => (isLatter?: boolean) => {
139
- const targetIndex = isLatter ? index - 1 : index;
140
- const delegate = resizeDelegates.current[targetIndex];
141
- if (delegate) {
142
- return delegate.getAbsoluteSize(isLatter);
143
- }
144
- return 0;
145
- };
135
+ const setSizeHandle = React.useCallback(
136
+ (index) => (size?: number, isLatter?: boolean) => {
137
+ const targetIndex = isLatter ? index - 1 : index;
138
+ const delegate = resizeDelegates.current[targetIndex];
139
+ if (delegate) {
140
+ delegate.setAbsoluteSize(
141
+ size !== undefined ? size : getProp(childList[index], 'defaultSize'),
142
+ isLatter,
143
+ resizeKeep,
144
+ );
145
+ }
146
+ },
147
+ [resizeDelegates.current],
148
+ );
146
149
 
147
- const getRelativeSizeHandle = (index) => (isLatter?: boolean) => {
148
- const targetIndex = isLatter ? index - 1 : index;
149
- const delegate = resizeDelegates.current[targetIndex];
150
- if (delegate) {
151
- return delegate.getRelativeSize();
152
- }
153
- return [0, 0];
154
- };
150
+ const setRelativeSizeHandle = React.useCallback(
151
+ (index) => (prev: number, next: number, isLatter?: boolean) => {
152
+ const targetIndex = isLatter ? index - 1 : index;
153
+ const delegate = resizeDelegates.current[targetIndex];
154
+ if (delegate) {
155
+ delegate.setRelativeSize(prev, next);
156
+ }
157
+ },
158
+ [resizeDelegates.current],
159
+ );
155
160
 
156
- const lockResizeHandle = (index) => (lock: boolean | undefined, isLatter?: boolean) => {
157
- const targetIndex = isLatter ? index - 1 : index;
158
- const newResizeState = resizeLockState.current.map((state, idx) =>
159
- idx === targetIndex ? (lock !== undefined ? lock : !state) : state,
160
- );
161
- resizeLockState.current = newResizeState;
162
- setLocks(newResizeState);
163
- };
161
+ const getSizeHandle = React.useCallback(
162
+ (index) => (isLatter?: boolean) => {
163
+ const targetIndex = isLatter ? index - 1 : index;
164
+ const delegate = resizeDelegates.current[targetIndex];
165
+ if (delegate) {
166
+ return delegate.getAbsoluteSize(isLatter);
167
+ }
168
+ return 0;
169
+ },
170
+ [resizeDelegates.current],
171
+ );
164
172
 
165
- const setMaxSizeHandle = (index) => (lock: boolean | undefined, isLatter?: boolean) => {
166
- const newMaxState = maxLockState.current.map((state, idx) =>
167
- idx === index ? (lock !== undefined ? lock : !state) : state,
168
- );
169
- maxLockState.current = newMaxState;
170
- setMaxLocks(newMaxState);
171
- };
173
+ const getRelativeSizeHandle = React.useCallback(
174
+ (index) => (isLatter?: boolean) => {
175
+ const targetIndex = isLatter ? index - 1 : index;
176
+ const delegate = resizeDelegates.current[targetIndex];
177
+ if (delegate) {
178
+ return delegate.getRelativeSize();
179
+ }
180
+ return [0, 0];
181
+ },
182
+ [resizeDelegates.current],
183
+ );
172
184
 
173
- const hidePanelHandle = (index: number) => (show?: boolean) => {
174
- const newHideState = hideState.current.map((state, idx) =>
175
- idx === index ? (show !== undefined ? !show : !state) : state,
176
- );
177
- hideState.current = newHideState;
178
- const location = getProp(childList[index], 'slot') || getProp(childList[index], 'id');
179
- if (location) {
180
- fireResizeEvent(location);
181
- }
182
- setHides(newHideState);
183
- };
185
+ const lockResizeHandle = React.useCallback(
186
+ (index) => (lock: boolean | undefined, isLatter?: boolean) => {
187
+ const targetIndex = isLatter ? index - 1 : index;
188
+ const newResizeState = resizeLockState.current.map((state, idx) =>
189
+ idx === targetIndex ? (lock !== undefined ? lock : !state) : state,
190
+ );
191
+ resizeLockState.current = newResizeState;
192
+ setLocks(newResizeState);
193
+ },
194
+ [resizeDelegates.current],
195
+ );
184
196
 
185
- const fireResizeEvent = (location?: string) => {
186
- if (location) {
187
- eventBus.fire(new ResizeEvent({ slotLocation: location }));
188
- }
189
- };
197
+ const setMaxSizeHandle = React.useCallback(
198
+ (index) => (lock: boolean | undefined, isLatter?: boolean) => {
199
+ const newMaxState = maxLockState.current.map((state, idx) =>
200
+ idx === index ? (lock !== undefined ? lock : !state) : state,
201
+ );
202
+ maxLockState.current = newMaxState;
203
+ setMaxLocks(newMaxState);
204
+ },
205
+ [resizeDelegates.current],
206
+ );
190
207
 
191
- childList.forEach((element, index) => {
192
- if (index !== 0) {
193
- const targetElement = index === 1 ? childList[index - 1] : childList[index];
194
- let flexMode: ResizeFlexMode | undefined;
195
- if (getProp(element, 'flexGrow')) {
196
- flexMode = ResizeFlexMode.Prev;
197
- } else if (getProp(childList[index - 1], 'flexGrow')) {
198
- flexMode = ResizeFlexMode.Next;
208
+ const hidePanelHandle = React.useCallback(
209
+ (index: number) => (show?: boolean) => {
210
+ const newHideState = hideState.current.map((state, idx) =>
211
+ idx === index ? (show !== undefined ? !show : !state) : state,
212
+ );
213
+ hideState.current = newHideState;
214
+ const location = getProp(childList[index], 'slot') || getProp(childList[index], 'id');
215
+ if (location) {
216
+ fireResizeEvent(location);
199
217
  }
200
- const noResize = getProp(targetElement, 'noResize') || locks[index - 1];
201
- if (!noResize) {
202
- elements.push(
203
- <ResizeHandle
204
- className={resizeHandleClassName}
205
- onResize={(prev, next) => {
206
- const prevLocation = getProp(childList[index - 1], 'slot') || getProp(childList[index - 1], 'id');
207
- const nextLocation = getProp(childList[index], 'slot') || getProp(childList[index], 'id');
208
- fireResizeEvent(prevLocation!);
209
- fireResizeEvent(nextLocation!);
210
- }}
211
- noColor={true}
212
- findNextElement={
213
- dynamicTarget
214
- ? (direction: boolean) => splitPanelService.getFirstResizablePanel(index - 1, direction)
215
- : undefined
216
- }
217
- findPrevElement={
218
- dynamicTarget
219
- ? (direction: boolean) => splitPanelService.getFirstResizablePanel(index - 1, direction, true)
220
- : undefined
221
- }
222
- key={`split-handle-${index}`}
223
- delegate={(delegate) => {
224
- resizeDelegates.current.push(delegate);
225
- }}
226
- flexMode={flexMode}
227
- />,
228
- );
218
+ setHides(newHideState);
219
+ },
220
+ [childList, hideState.current],
221
+ );
222
+
223
+ const fireResizeEvent = React.useCallback(
224
+ (location?: string) => {
225
+ if (location) {
226
+ eventBus.fire(new ResizeEvent({ slotLocation: location }));
229
227
  }
230
- }
228
+ },
229
+ [eventBus],
230
+ );
231
231
 
232
- elements.push(
233
- <PanelContext.Provider
234
- key={index}
235
- value={{
236
- setSize: setSizeHandle(index),
237
- getSize: getSizeHandle(index),
238
- setRelativeSize: setRelativeSizeHandle(index),
239
- getRelativeSize: getRelativeSizeHandle(index),
240
- lockSize: lockResizeHandle(index),
241
- setMaxSize: setMaxSizeHandle(index),
242
- hidePanel: hidePanelHandle(index),
243
- }}
244
- >
245
- <div
246
- data-min-resize={getProp(element, 'minResize')}
247
- data-max-resize={getProp(element, 'maxResize')}
248
- ref={(ele) => {
249
- if (ele && splitPanelService.panels.indexOf(ele) === -1) {
250
- splitPanelService.panels.push(ele);
251
- }
252
- }}
253
- id={getProp(element, 'id') /* @deprecated: query by data-view-id */}
254
- style={{
255
- // 手风琴场景,固定尺寸和 flex 尺寸混合布局;需要在 Resize Flex 模式下禁用
256
- ...(getProp(element, 'flex') &&
257
- !getProp(element, 'savedSize') &&
258
- !childList.find((item) => getProp(item, 'flexGrow'))
259
- ? { flex: getProp(element, 'flex') }
260
- : { [Layout.getSizeProperty(direction)]: getElementSize(element) }),
261
- // 相对尺寸带来的问题,必须限制最小最大尺寸
262
- [Layout.getMinSizeProperty(direction)]: getProp(element, 'minSize')
263
- ? getProp(element, 'minSize') + 'px'
264
- : '-1px',
265
- [Layout.getMaxSizeProperty(direction)]:
266
- maxLocks[index] && getProp(element, 'maxSize') ? getProp(element, 'maxSize') + 'px' : 'unset',
267
- // Resize Flex 模式下应用 flexGrow
268
- ...(getProp(element, 'flexGrow') !== undefined ? { flexGrow: getProp(element, 'flexGrow') } : {}),
269
- display: hides[index] ? 'none' : 'block',
270
- backgroundColor: getProp(element, 'backgroundColor'),
271
- }}
272
- >
273
- {element}
274
- </div>
275
- </PanelContext.Provider>,
276
- );
277
- });
232
+ const elements: React.ReactNodeArray = React.useMemo(
233
+ () =>
234
+ childList.map((element, index) => {
235
+ const result: JSX.Element[] = [];
278
236
 
279
- function getElementSize(element: any) {
280
- if (getProp(element, 'savedSize')) {
281
- return getProp(element, 'savedSize') + 'px';
282
- } else if (getProp(element, 'defaultSize') !== undefined) {
283
- return getProp(element, 'defaultSize') + 'px';
284
- } else if (getProp(element, 'flex')) {
285
- return (getProp(element, 'flex') / totalFlexNum) * 100 + '%';
286
- } else {
287
- return (1 / totalFlexNum) * 100 + '%';
288
- }
289
- }
237
+ if (index !== 0) {
238
+ const targetElement = index === 1 ? childList[index - 1] : childList[index];
239
+ let flexMode: ResizeFlexMode | undefined;
240
+ if (getProp(element, 'flexGrow')) {
241
+ flexMode = ResizeFlexMode.Prev;
242
+ } else if (getProp(childList[index - 1], 'flexGrow')) {
243
+ flexMode = ResizeFlexMode.Next;
244
+ }
245
+ const noResize = getProp(targetElement, 'noResize') || locks[index - 1];
246
+ if (!noResize) {
247
+ result.push(
248
+ <ResizeHandle
249
+ className={resizeHandleClassName}
250
+ onResize={(prev, next) => {
251
+ const prevLocation = getProp(childList[index - 1], 'slot') || getProp(childList[index - 1], 'id');
252
+ const nextLocation = getProp(childList[index], 'slot') || getProp(childList[index], 'id');
253
+ fireResizeEvent(prevLocation!);
254
+ fireResizeEvent(nextLocation!);
255
+ }}
256
+ noColor={true}
257
+ findNextElement={
258
+ dynamicTarget
259
+ ? (direction: boolean) => splitPanelService.getFirstResizablePanel(index - 1, direction)
260
+ : undefined
261
+ }
262
+ findPrevElement={
263
+ dynamicTarget
264
+ ? (direction: boolean) => splitPanelService.getFirstResizablePanel(index - 1, direction, true)
265
+ : undefined
266
+ }
267
+ key={`split-handle-${index}`}
268
+ delegate={(delegate) => {
269
+ resizeDelegates.current.push(delegate);
270
+ }}
271
+ flexMode={flexMode}
272
+ />,
273
+ );
274
+ }
275
+ }
276
+
277
+ result.push(
278
+ <PanelContext.Provider
279
+ key={index}
280
+ value={{
281
+ setSize: setSizeHandle(index),
282
+ getSize: getSizeHandle(index),
283
+ setRelativeSize: setRelativeSizeHandle(index),
284
+ getRelativeSize: getRelativeSizeHandle(index),
285
+ lockSize: lockResizeHandle(index),
286
+ setMaxSize: setMaxSizeHandle(index),
287
+ hidePanel: hidePanelHandle(index),
288
+ }}
289
+ >
290
+ <div
291
+ data-min-resize={getProp(element, 'minResize')}
292
+ data-max-resize={getProp(element, 'maxResize')}
293
+ ref={(ele) => {
294
+ if (ele && splitPanelService.panels.indexOf(ele) === -1) {
295
+ splitPanelService.panels.push(ele);
296
+ }
297
+ }}
298
+ id={getProp(element, 'id') /* @deprecated: query by data-view-id */}
299
+ style={{
300
+ // 手风琴场景,固定尺寸和 flex 尺寸混合布局;需要在 Resize Flex 模式下禁用
301
+ ...(getProp(element, 'flex') &&
302
+ !getProp(element, 'savedSize') &&
303
+ !childList.find((item) => getProp(item, 'flexGrow'))
304
+ ? { flex: getProp(element, 'flex') }
305
+ : { [Layout.getSizeProperty(direction)]: getElementSize(element, totalFlexNum) }),
306
+ // 相对尺寸带来的问题,必须限制最小最大尺寸
307
+ [Layout.getMinSizeProperty(direction)]: getProp(element, 'minSize')
308
+ ? getProp(element, 'minSize') + 'px'
309
+ : '-1px',
310
+ [Layout.getMaxSizeProperty(direction)]:
311
+ maxLocks[index] && getProp(element, 'maxSize') ? getProp(element, 'maxSize') + 'px' : 'unset',
312
+ // Resize Flex 模式下应用 flexGrow
313
+ ...(getProp(element, 'flexGrow') !== undefined ? { flexGrow: getProp(element, 'flexGrow') } : {}),
314
+ display: hides[index] ? 'none' : 'block',
315
+ backgroundColor: getProp(element, 'backgroundColor'),
316
+ }}
317
+ >
318
+ {element}
319
+ </div>
320
+ </PanelContext.Provider>,
321
+ );
322
+ return result;
323
+ }),
324
+ [children, childList, resizeHandleClassName, dynamicTarget, resizeDelegates.current, hides],
325
+ );
290
326
 
291
327
  React.useEffect(() => {
292
328
  if (rootRef.current) {
@@ -311,7 +347,7 @@ export const SplitPanel: React.FC<SplitPanelProps> = ({
311
347
  className={clsx(styles['split-panel'], className)}
312
348
  style={{ flexDirection: Layout.getFlexDirection(direction), ...style }}
313
349
  >
314
- {elements}
350
+ {elements.filter(Boolean)}
315
351
  </div>
316
352
  );
317
353
  };
@@ -2,6 +2,7 @@ import type React from 'react';
2
2
 
3
3
  import { MaybeNull, BasicEvent } from '@opensumi/ide-core-common';
4
4
 
5
+ import { Layout } from '../components/layout/index';
5
6
  import type { IMenu, IContextMenu } from '../menu/next';
6
7
  import type { SlotLocation } from '../react-providers';
7
8
 
@@ -75,6 +76,7 @@ export interface ExtViewContainerOptions {
75
76
  fromExtension?: boolean;
76
77
  // viewContainer 最小高度,默认 120
77
78
  miniSize?: number;
79
+ alignment?: Layout.alignment;
78
80
  }
79
81
  export const ComponentRegistry = Symbol('ComponentRegistry');
80
82
 
@@ -22,7 +22,6 @@ export const toMarkdownHtml = (message: string): string => {
22
22
  gfm: true,
23
23
  breaks: false,
24
24
  pedantic: false,
25
- sanitize: true,
26
25
  smartLists: true,
27
26
  smartypants: false,
28
27
  renderer,
@@ -84,6 +84,8 @@ export enum MenuId {
84
84
  // setting.json
85
85
  SettingJSONGlyphMarginContext = 'settingJson/glyphMargin/context',
86
86
  SubSettingJSONGlyphMarginContext = 'sub/settingJson/glyphMargin/context',
87
+ // merge editor context
88
+ MergeEditorResultTitleContext = 'mergeEditor/result/title/context',
87
89
  }
88
90
 
89
91
  export function getTabbarCommonMenuId(location: string) {
@@ -49,6 +49,10 @@ export interface IPreferenceViewDesc {
49
49
  }
50
50
 
51
51
  export interface ISettingSection {
52
+ /**
53
+ * 插件 ID
54
+ */
55
+ extensionId?: string;
52
56
  /**
53
57
  * 该 Section 的名字
54
58
  */
@@ -216,7 +216,7 @@ export interface AppConfig {
216
216
  * 视图组件内默认的组件样式资源 CDN 来源
217
217
  * 默认值为 'alipay'
218
218
  */
219
- componentCDNType?: 'unpkg' | 'jsdelivr' | 'alipay';
219
+ componentCDNType?: TComponentCDNType;
220
220
  /**
221
221
  * 指定前端是否为 Electron 环境 (Electron Renderer)
222
222
  * 为兼容老的逻辑,若不兼容则 fallback 到 isElectronRenderer 的判断
@@ -277,3 +277,5 @@ export function ConfigProvider(props: React.PropsWithChildren<{ value: AppConfig
277
277
 
278
278
  return React.createElement(extraContextProvider, { children: app });
279
279
  }
280
+
281
+ export type TComponentCDNType = 'unpkg' | 'jsdelivr' | 'alipay' | 'npmmirror';