var _excluded = ["children", "container", "containerClass", "onClickOutside"];
function _extends() { _extends = Object.assign ? Object.assign.bind() : 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; }; return _extends.apply(this, arguments); }
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
import React from 'react';
import { useEventListener } from '../_hooks/EventListener';
import { mergeRefs } from '../_utils/mergeRefs';
/**
 * @deprecatedSince 11
 * @deprecated Intended for internal library development.
 */
export var ClickOutside = /*#__PURE__*/React.forwardRef(function ClickOutside(_ref, ref) {
  var children = _ref.children,
    container = _ref.container,
    containerClass = _ref.containerClass,
    onClickOutside = _ref.onClickOutside,
    props = _objectWithoutProperties(_ref, _excluded);
  var Component = container || 'div';
  var scope = React.useRef(null);

  // need useCallback?
  var handler = function handler(event) {
    var current = scope.current;
    if (!current) {
      return;
    }
    onClickOutside && !current.contains(event.target) && onClickOutside(event);
  };
  var options = {
    capture: true
  };
  useEventListener({
    event: 'click',
    handler: handler,
    options: options
  });
  useEventListener({
    event: 'touchend',
    handler: handler,
    options: options
  });
  return /*#__PURE__*/React.createElement(Component, _extends({}, props, {
    className: containerClass,
    ref: mergeRefs(ref, scope)
  }), children);
});
ClickOutside.displayName = 'ClickOutside';
//# sourceMappingURL=ClickOutside.js.map