UNPKG

@wener/console

Version:
128 lines (127 loc) 5.57 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; } import React, { memo, useMemo } from "react"; import { HiMiniArrowsPointingIn } from "react-icons/hi2"; import { PiBrowsersLight } from "react-icons/pi"; import { VscClose, VscCloseAll, VscPrimitiveSquare } from "react-icons/vsc"; import { FloatingFocusManager, useTransitionStyles } from "@floating-ui/react"; import { usePopover } from "../../floating/index.js"; import { getRootWindow } from "../ReactWindow.js"; import { Window } from "../Window.js"; var WindowControlPopoverContent = function (props) { var root = getRootWindow(); // 避免单次操作内 layout 发生变化 var top = useMemo(function () { return root.top; }, []); var count = root.windows.length; return /*#__PURE__*/ React.createElement("ul", _object_spread({ className: "border-color menu menu-sm rounded-box bg-base-100 w-44 border" }, props), top && /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement("li", { className: "menu-title" }, "\u5F53\u524D\u7A97\u53E3"), /*#__PURE__*/ React.createElement("li", null, /*#__PURE__*/ React.createElement("a", { onClick: function () { top.close(); } }, /*#__PURE__*/ React.createElement(VscClose, null), "\u5173\u95ED")), /*#__PURE__*/ React.createElement("li", null, /*#__PURE__*/ React.createElement("a", { onClick: function () { top.center(); } }, /*#__PURE__*/ React.createElement(VscPrimitiveSquare, null), "\u5C45\u4E2D"))), /*#__PURE__*/ React.createElement("li", { className: "menu-title" }, "\u7A97\u53E3\u7BA1\u7406 (", count, ")"), /*#__PURE__*/ React.createElement("li", null, /*#__PURE__*/ React.createElement("a", { onClick: function () { Window.closeAll(); } }, /*#__PURE__*/ React.createElement(VscCloseAll, null), "\u5173\u95ED\u6240\u6709\u7A97\u53E3")), /*#__PURE__*/ React.createElement("li", null, /*#__PURE__*/ React.createElement("a", { onClick: function () { Window.minimizeAll(); } }, /*#__PURE__*/ React.createElement(HiMiniArrowsPointingIn, null), "\u6700\u5C0F\u5316\u6240\u6709\u7A97\u53E3"))); }; export var WindowControlButton = /*#__PURE__*/ memo(function () { var _usePopover = usePopover({ placement: "left-start" }), refs = _usePopover.refs, getFloatingProps = _usePopover.getFloatingProps, getReferenceProps = _usePopover.getReferenceProps, open = _usePopover.open, setOpen = _usePopover.setOpen, floatingStyles = _usePopover.floatingStyles, context = _usePopover.context, nodeId = _usePopover.nodeId; var _useTransitionStyles = useTransitionStyles(context, { initial: { opacity: 0, transform: "translateY(-10px)" }, close: { opacity: 0, transform: "translateY(10px)" } }), isMounted = _useTransitionStyles.isMounted, styles = _useTransitionStyles.styles; return /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement("button", _object_spread({ type: "button", className: "btn btn-square btn-ghost btn-sm self-center", ref: refs.setReference }, getReferenceProps()), /*#__PURE__*/ React.createElement(PiBrowsersLight, { className: "h-5 w-5 opacity-75" })), isMounted && /*#__PURE__*/ React.createElement(FloatingFocusManager, { context: context }, /*#__PURE__*/ React.createElement("div", _object_spread_props(_object_spread({ ref: refs.setFloating }, getFloatingProps()), { style: floatingStyles, className: "z-50" }), /*#__PURE__*/ React.createElement(WindowControlPopoverContent, { style: styles, onClick: function () { setOpen(false); } })))); });