UNPKG

@wener/console

Version:
138 lines (137 loc) 5.2 kB
function _define_property(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _object_spread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === "function") { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _define_property(target, key, source[key]); }); } return target; } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _object_spread_props(target, source) { source = source != null ? source : {}; if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } function _object_without_properties(source, excluded) { if (source == null) return {}; var target = {}, sourceKeys, key, i; if (typeof Reflect !== "undefined" && Reflect.ownKeys) { sourceKeys = Reflect.ownKeys(source); for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } return target; } target = _object_without_properties_loose(source, excluded); if (Object.getOwnPropertySymbols) { sourceKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } function _object_without_properties_loose(source, excluded) { if (source == null) return {}; var target = {}, sourceKeys = Object.getOwnPropertyNames(source), key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } return target; } import React, { cloneElement, Fragment } from "react"; import { FloatingPortal } from "@floating-ui/react"; import { cn } from "../utils/cn.js"; import { usePopover } from "./usePopover.js"; export var Tooltip = function (_0) { var children = _0.children, content = _0.content, portal = _0.portal, _0_click = _0.click, click = _0_click === void 0 ? false : _0_click, _0_placement = _0. // dismiss = true, // hover = true, // focus = false, // role = 'tooltip', placement, placement = _0_placement === void 0 ? "top" : _0_placement, className = _0.className, props = _object_without_properties(_0, [ "children", "content", "portal", "click", "placement", "className" ]); // not works in SSR if (typeof window === "undefined") return children; var _usePopover = usePopover({ hover: true, click: click, placement: placement }), refs = _usePopover.refs, getReferenceProps = _usePopover.getReferenceProps, getFloatingProps = _usePopover.getFloatingProps, floatingStyles = _usePopover.floatingStyles, open = _usePopover.open, context = _usePopover.context; if (!content) return children; var trigger = /*#__PURE__*/ cloneElement(children, getReferenceProps(_object_spread({ ref: refs.setReference }, children.props))); var Wrapper = portal ? FloatingPortal : Fragment; return /*#__PURE__*/ React.createElement(React.Fragment, null, trigger, open && /*#__PURE__*/ React.createElement(Wrapper, null, /*#__PURE__*/ React.createElement("div", _object_spread_props(_object_spread({ role: "tooltip", className: cn("Tooltip bg-neutral text-neutral-content max-w-xs rounded px-2 py-1 text-sm", className), ref: refs.setFloating }, getFloatingProps()), { style: floatingStyles }), content))); };