UNPKG

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
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;