1+ import clx from 'classnames' ;
12import { observer } from 'mobx-react-lite' ;
23import React from 'react' ;
34
5+ import { useInjectable , getIcon } from '@opensumi/ide-core-browser' ;
6+
7+ import { ITerminalGroupViewService } from '../../common/controller' ;
48import { IWidget , IWidgetGroup } from '../../common/resize' ;
59
610import ResizeDelegate from './resize.delegate' ;
@@ -23,6 +27,7 @@ export default observer((props: IResizeViewProps) => {
2327 const { group, shadow } = props ;
2428 const [ event , setEvent ] = React . useState ( false ) ;
2529 const [ wholeWidth , setWholeWidth ] = React . useState ( Infinity ) ;
30+ const view = useInjectable < ITerminalGroupViewService > ( ITerminalGroupViewService ) ;
2631 const whole = React . useRef < HTMLDivElement | null > ( null ) ;
2732
2833 React . useEffect ( ( ) => {
@@ -31,6 +36,10 @@ export default observer((props: IResizeViewProps) => {
3136 }
3237 } ) ;
3338
39+ const handleRemoveWidget = React . useCallback ( ( widgetId : string ) => {
40+ view . removeWidget ( widgetId ) ;
41+ } , [ ] ) ;
42+
3443 return (
3544 < div className = { styles . resizeWrapper } ref = { whole } >
3645 < div
@@ -77,6 +86,14 @@ export default observer((props: IResizeViewProps) => {
7786 className = { styles . resizeItem }
7887 >
7988 { props . draw ( widget ) }
89+ { group . widgets . length > 1 && (
90+ < div
91+ className = { clx ( styles . closeBtn , getIcon ( 'close' ) ) }
92+ onClick = { ( ) => {
93+ handleRemoveWidget ( widget . id ) ;
94+ } }
95+ />
96+ ) }
8097 </ div >
8198 ) ) }
8299 </ div >
0 commit comments