File: //opt/textanalyse/web_console/node_modules/vega-view/src/cursor.js
import {isString} from 'vega-util';
const Default = 'default';
export default function(view) {
// get cursor signal, add to dataflow if needed
const cursor = view._signals.cursor || (view._signals.cursor = view.add({
user: Default,
item: null
}));
// evaluate cursor on each pointermove event
view.on(view.events('view', 'pointermove'), cursor,
(_, event) => {
const value = cursor.value,
user = value ? (isString(value) ? value : value.user) : Default,
item = event.item && event.item.cursor || null;
return (value && user === value.user && item == value.item)
? value
: {user: user, item: item};
}
);
// when cursor signal updates, set visible cursor
view.add(null, function(_) {
let user = _.cursor,
item = this.value;
if (!isString(user)) {
item = user.item;
user = user.user;
}
setCursor(view, user && user !== Default ? user : (item || user));
return item;
}, {cursor: cursor});
}
export function setCursor(view, cursor) {
const el = view.globalCursor()
? (typeof document !== 'undefined' && document.body)
: view.container();
if (el) {
return cursor == null
? el.style.removeProperty('cursor')
: (el.style.cursor = cursor);
}
}