focuser.js
Home
/
src /
webvowl /
js /
modules /
focuser.js
module.exports = function ( graph ){
var focuser = {},
focusedElement;
var elementTools = webvowl.util.elementTools();
focuser.handle = function ( selectedElement, forced ){
// Don't display details on a drag event, which will be prevented
if ( d3.event && d3.event.defaultPrevented && forced === undefined ) {
return;
}
if ( focusedElement !== undefined ) {
focusedElement.toggleFocus();
}
if ( focusedElement !== selectedElement && selectedElement ) {
selectedElement.toggleFocus();
focusedElement = selectedElement;
} else {
focusedElement = undefined;
}
if ( focusedElement && focusedElement.focused() ) {
graph.options().editSidebar().updateSelectionInformation(focusedElement);
if ( elementTools.isProperty(selectedElement) === true ) {
var inversed = false;
if ( selectedElement.inverse() ) {
inversed = true;
}
graph.activateHoverElementsForProperties(true, selectedElement, inversed, graph.isTouchDevice());
}
else {
graph.activateHoverElements(true, selectedElement, graph.isTouchDevice());
}
}
else {
graph.options().editSidebar().updateSelectionInformation(undefined);
graph.removeEditElements();
}
};
/**
* Removes the focus if an element is focussed.
*/
focuser.reset = function (){
if ( focusedElement ) {
focusedElement.toggleFocus();
focusedElement = undefined;
}
};
return focuser;
};