@wener/console
Version:
Base console UI toolkit
203 lines (202 loc) • 7.43 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 from "react";
import { Menu } from "@base-ui/react/menu";
import { cn } from "@wener/console";
import { flexRender } from "@wener/reaction";
import { clsx } from "clsx";
import { pick } from "es-toolkit";
import { match } from "ts-pattern";
import { isNodeTypeOf } from "../utils/isNodeTypeOf.js";
export var DaisyDropdownMenuComposite = function (_0) {
var items = _0.items, children = _0.children, trigger = _0.trigger, portal = _0.portal, className = _0.className, props = _object_without_properties(_0, [
"items",
"children",
"trigger",
"portal",
"className"
]);
trigger || (trigger = children);
if (trigger) {
if (!isNodeTypeOf(trigger, [
Menu.Trigger,
DaisyDropdownMenuTrigger
])) {
var last = trigger;
trigger = /*#__PURE__*/ React.createElement(DaisyDropdownMenuTrigger, null, last);
}
}
var content = /*#__PURE__*/ React.createElement(Menu.Positioner, {
side: "bottom",
align: "end",
sideOffset: 5
}, /*#__PURE__*/ React.createElement(Menu.Popup, {
className: cn("menu menu-sm rounded-box bg-base-200 z-30 w-52", className)
}, items.map(function (item, key) {
return match(item).with({
type: "label"
}, function (_0) {
var label = _0.label, type = _0.type, className = _0.className, children = _0.children, props = _object_without_properties(_0, [
"label",
"type",
"className",
"children"
]);
return /*#__PURE__*/ React.createElement(Menu.GroupLabel, _object_spread({
key: key,
className: cn("menu-title", className)
}, props), label || children);
}).with({
type: "separator"
}, function (_0) {
var type = _0.type, className = _0.className, props = _object_without_properties(_0, [
"type",
"className"
]);
return /*#__PURE__*/ React.createElement(Menu.Separator, _object_spread({
key: key,
className: cn("bg-base-300 m-[5px] h-px", className)
}, props));
}).otherwise(function (_0) {
var label = _0.label, icon = _0.icon, type = _0.type, className = _0.className, children = _0.children, props = _object_without_properties(_0, [
"label",
"icon",
"type",
"className",
"children"
]);
return /*#__PURE__*/ React.createElement(Menu.Item, _object_spread_props(_object_spread({
key: key
}, props), {
render: /*#__PURE__*/ React.createElement("li", {
className: clsx("outline-none select-none", "group/item", "data-[disabled]:disabled data-[disabled]:pointer-events-none", className)
}, /*#__PURE__*/ React.createElement("a", {
className: clsx("group-data-[highlighted]/item:active")
}, flexRender(icon, {
className: "size-4"
}), label))
}));
});
})));
return /*#__PURE__*/ React.createElement(Menu.Root, pick(props, [
"open",
"onOpenChange",
"modal",
"defaultOpen"
]), trigger, portal && /*#__PURE__*/ React.createElement(Menu.Portal, null, content), !portal && content);
};
export var DaisyDropdownMenuTrigger = function (_0) {
var className = _0.className, props = _object_without_properties(_0, [
"className"
]);
return /*#__PURE__*/ React.createElement(Menu.Trigger, _object_spread({
className: cn("btn relative", className)
}, props));
};
export var DaisyDropdownMenu = {
Composite: DaisyDropdownMenuComposite,
Trigger: DaisyDropdownMenuTrigger,
Root: Menu.Root,
Portal: Menu.Portal,
Positioner: Menu.Positioner,
Popup: Menu.Popup,
Item: Menu.Item,
Separator: Menu.Separator,
GroupLabel: Menu.GroupLabel
};