) {
switch (e.key) {
case 'Tab':
e.preventDefault();
blur();
break;
case 'Escape':
reset();
blur();
break;
case 'z':
if (os === 'macOS' ? e.metaKey : e.ctrlKey) {
reset();
highlightFileName();
}
break;
}
}
// Focus and highlight when renaming is allowed
useEffect(() => {
if (allowRename) {
getExplorerStore().isRenaming = true;
setTimeout(() => {
if (ref.current) {
ref.current.focus();
highlightFileName();
}
});
} else getExplorerStore().isRenaming = false;
}, [allowRename]);
// Handle renaming when triggered from outside
useEffect(() => {
if (selected) {
if (explorerStore.isRenaming && !allowRename) setAllowRename(true);
else if (!explorerStore.isRenaming && allowRename) setAllowRename(false);
}
}, [explorerStore.isRenaming]);
// Rename or blur on Enter key
useKey('Enter', (e) => {
if (allowRename) {
e.preventDefault();
blur();
} else if (selected) setAllowRename(true);
});
return (
{
if (selected || allowRename) e.stopPropagation();
if (selected) setAllowRename(true);
}}
onBlur={() => {
rename();
setAllowRename(false);
}}
onKeyDown={handleKeyDown}
{...props}
>
{fileName}
);
};