@wener/console
Version:
Base console UI toolkit
138 lines (137 loc) • 5.2 kB
JavaScript
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)));
};