atom-nuclide
Version:
A unified developer experience for web and mobile development, built as a suite of features on top of Atom to provide hackability and the support of an active community.
55 lines (44 loc) • 1.57 kB
JavaScript
Object.defineProperty(exports, '__esModule', {
value: true
});
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
exports.default = addTooltip;
/*
* Copyright (c) 2015-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the license found in the LICENSE file in
* the root directory of this source tree.
*/
var _reactForAtom2;
function _reactForAtom() {
return _reactForAtom2 = require('react-for-atom');
}
/**
* Adds a self-disposing Atom's tooltip to a react element.
*
* Typical usage:
* <div ref={addTooltip({title: 'My awesome tooltip', delay: 100, placement: 'top'})} />
* or, if the ref needs to be preserved:
* <div ref={c => {
* addTooltip({title: 'My awesome tooltip', delay: 100, placement: 'top'})(c);
* this._myDiv = c;
* }} />
*/
function addTooltip(options) {
var prevRefDisposable = undefined;
return function (elementRef) {
if (prevRefDisposable != null) {
prevRefDisposable.dispose();
prevRefDisposable = null;
}
if (elementRef != null) {
// $FlowFixMe -- findDOMNode takes a React.Component or an HTMLElement.
var node = (_reactForAtom2 || _reactForAtom()).ReactDOM.findDOMNode(elementRef);
prevRefDisposable = atom.tooltips.add(node, _extends({
keyBindingTarget: node
}, options));
}
};
}
module.exports = exports.default;