UNPKG

kepler.gl

Version:

kepler.gl is a webgl based application to visualize large scale location data in the browser

36 lines (34 loc) 4.04 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = useOnClickOutside; var _document = _interopRequireDefault(require("global/document")); var _react = require("react"); // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project function useOnClickOutside(onClose) { var disabled = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; var containerRef = (0, _react.useRef)(null); var handleClickOutside = (0, _react.useCallback)(function (e) { if (containerRef.current && !containerRef.current.contains(e.target)) { onClose(e); } }, [onClose]); (0, _react.useEffect)(function () { if (disabled) { return; } _document["default"].addEventListener('click', handleClickOutside, { capture: true }); return function () { _document["default"].removeEventListener('click', handleClickOutside, { capture: true }); }; }, [handleClickOutside, disabled]); return containerRef; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZG9jdW1lbnQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdCIsInVzZU9uQ2xpY2tPdXRzaWRlIiwib25DbG9zZSIsImRpc2FibGVkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiY29udGFpbmVyUmVmIiwidXNlUmVmIiwiaGFuZGxlQ2xpY2tPdXRzaWRlIiwidXNlQ2FsbGJhY2siLCJlIiwiY3VycmVudCIsImNvbnRhaW5zIiwidGFyZ2V0IiwidXNlRWZmZWN0IiwiZG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwiY2FwdHVyZSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlLW9uLWNsaWNrLW91dHNpZGUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBkb2N1bWVudCBmcm9tICdnbG9iYWwvZG9jdW1lbnQnO1xuaW1wb3J0IHt1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWYsIE11dGFibGVSZWZPYmplY3R9IGZyb20gJ3JlYWN0JztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZU9uQ2xpY2tPdXRzaWRlPFQgZXh0ZW5kcyBIVE1MRWxlbWVudD4oXG4gIG9uQ2xvc2U6IChlKSA9PiB2b2lkLFxuICBkaXNhYmxlZCA9IGZhbHNlXG4pOiBNdXRhYmxlUmVmT2JqZWN0PFQgfCBudWxsPiB7XG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZjxUPihudWxsKTtcbiAgY29uc3QgaGFuZGxlQ2xpY2tPdXRzaWRlID0gdXNlQ2FsbGJhY2soXG4gICAgZSA9PiB7XG4gICAgICBpZiAoY29udGFpbmVyUmVmLmN1cnJlbnQgJiYgIWNvbnRhaW5lclJlZi5jdXJyZW50LmNvbnRhaW5zKGUudGFyZ2V0KSkge1xuICAgICAgICBvbkNsb3NlKGUpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW29uQ2xvc2VdXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNsaWNrT3V0c2lkZSwge2NhcHR1cmU6IHRydWV9KTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNsaWNrT3V0c2lkZSwge2NhcHR1cmU6IHRydWV9KTtcbiAgICB9O1xuICB9LCBbaGFuZGxlQ2xpY2tPdXRzaWRlLCBkaXNhYmxlZF0pO1xuXG4gIHJldHVybiBjb250YWluZXJSZWY7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFHQSxJQUFBQSxTQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFELE9BQUE7QUFKQTtBQUNBOztBQUllLFNBQVNFLGlCQUFpQkEsQ0FDdkNDLE9BQW9CLEVBRVE7RUFBQSxJQUQ1QkMsUUFBUSxHQUFBQyxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBRSxTQUFBLEdBQUFGLFNBQUEsTUFBRyxLQUFLO0VBRWhCLElBQU1HLFlBQVksR0FBRyxJQUFBQyxhQUFNLEVBQUksSUFBSSxDQUFDO0VBQ3BDLElBQU1DLGtCQUFrQixHQUFHLElBQUFDLGtCQUFXLEVBQ3BDLFVBQUFDLENBQUMsRUFBSTtJQUNILElBQUlKLFlBQVksQ0FBQ0ssT0FBTyxJQUFJLENBQUNMLFlBQVksQ0FBQ0ssT0FBTyxDQUFDQyxRQUFRLENBQUNGLENBQUMsQ0FBQ0csTUFBTSxDQUFDLEVBQUU7TUFDcEVaLE9BQU8sQ0FBQ1MsQ0FBQyxDQUFDO0lBQ1o7RUFDRixDQUFDLEVBQ0QsQ0FBQ1QsT0FBTyxDQUNWLENBQUM7RUFFRCxJQUFBYSxnQkFBUyxFQUFDLFlBQU07SUFDZCxJQUFJWixRQUFRLEVBQUU7TUFDWjtJQUNGO0lBRUFhLG9CQUFRLENBQUNDLGdCQUFnQixDQUFDLE9BQU8sRUFBRVIsa0JBQWtCLEVBQUU7TUFBQ1MsT0FBTyxFQUFFO0lBQUksQ0FBQyxDQUFDO0lBRXZFLE9BQU8sWUFBTTtNQUNYRixvQkFBUSxDQUFDRyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUVWLGtCQUFrQixFQUFFO1FBQUNTLE9BQU8sRUFBRTtNQUFJLENBQUMsQ0FBQztJQUM1RSxDQUFDO0VBQ0gsQ0FBQyxFQUFFLENBQUNULGtCQUFrQixFQUFFTixRQUFRLENBQUMsQ0FBQztFQUVsQyxPQUFPSSxZQUFZO0FBQ3JCIiwiaWdub3JlTGlzdCI6W119