@@ -106,7 +106,10 @@ const TabV = forwardRef<HTMLDivElement, TabVProps>((props, ref) => {
106106 onRename,
107107 renameRef,
108108 } = props ;
109- const [ originalName , setOriginalName ] = useState ( tabName ) ;
109+ const MaxTabNameLength = 14 ;
110+ const truncateTabName = ( name : string ) => [ ...( name ?? "" ) ] . slice ( 0 , MaxTabNameLength ) . join ( "" ) ;
111+ const displayName = truncateTabName ( tabName ) ;
112+ const [ originalName , setOriginalName ] = useState ( displayName ) ;
110113 const [ isEditable , setIsEditable ] = useState ( false ) ;
111114
112115 const editableRef = useRef < HTMLDivElement > ( null ) ;
@@ -116,7 +119,7 @@ const TabV = forwardRef<HTMLDivElement, TabVProps>((props, ref) => {
116119 useImperativeHandle ( ref , ( ) => tabRef . current as HTMLDivElement ) ;
117120
118121 useEffect ( ( ) => {
119- setOriginalName ( tabName ) ;
122+ setOriginalName ( truncateTabName ( tabName ) ) ;
120123 } , [ tabName ] ) ;
121124
122125 useEffect ( ( ) => {
@@ -192,8 +195,11 @@ const TabV = forwardRef<HTMLDivElement, TabVProps>((props, ref) => {
192195 event . preventDefault ( ) ;
193196 event . stopPropagation ( ) ;
194197 } else if ( curLen >= 14 && ! [ "Backspace" , "Delete" , "ArrowLeft" , "ArrowRight" ] . includes ( event . key ) ) {
195- event . preventDefault ( ) ;
196- event . stopPropagation ( ) ;
198+ const selection = window . getSelection ( ) ;
199+ if ( ! selection || selection . isCollapsed ) {
200+ event . preventDefault ( ) ;
201+ event . stopPropagation ( ) ;
202+ }
197203 }
198204 } ;
199205
@@ -233,7 +239,7 @@ const TabV = forwardRef<HTMLDivElement, TabVProps>((props, ref) => {
233239 onKeyDown = { handleKeyDown }
234240 suppressContentEditableWarning = { true }
235241 >
236- { tabName }
242+ { displayName }
237243 </ div >
238244 < TabBadges badges = { badges } flagColor = { flagColor } />
239245 < Button
0 commit comments