JSFiddle - React, Tailwind, and code Playground
HTML
You don't actually need any library in order to do this.<br />
<textarea id="yourText">
</textarea>
<div id="yourToolbar">Toolbar</div>
CSS
#yourText{
width:75%;
height: 20ex;
}
#yourToolbar{
position: absolute;
top: -1000px;
left: -1000px;
background: #aaa;
padding: 2ex 8ex;
opacity: 0;
}
JavaScript
//config:
var hide_delay = 2000;//ms
var mx=0,my=0; //mouse x,y
var opacity_hi = .85;
yourText = document.getElementById('yourText');
yourToolbar = document.getElementById('yourToolbar');
var hiding = null;
yourText.addEventListener('mouseenter',function(e){
setTimeout(function(){
yourToolbar.style.opacity=opacity_hi;
//this CSS3 renders faster:
yourToolbar.style.transform='translate('+(1000+mx-10)+'px,'+(1000+my+10)+'px)';
yourToolbar.style.webkitTransform='translate('+(1000+mx-10)+'px,'+(1000+my+10)+'px)';
},hide_delay/2);
if(hiding != null)
clearTimeout(hiding);
});
yourToolbar.addEventListener('mouseenter',function(e){
if(hiding != null)
clearTimeout(hiding);
});
function hide(){
hiding = setTimeout(function(){
yourToolbar.style.opacity=0;
}, hide_delay);
}
yourText.addEventListener('mouseleave',hide);
yourToolbar.addEventListener('mouseleave',hide);
yourText.addEventListener('mousemove',function(e){
mx=e.pageX;
my=e.pageY;
if(hiding != null)
clearTimeout(hiding);
});