UNPKG

@wener/console

Version:
133 lines (132 loc) 4.49 kB
function _array_like_to_array(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } function _array_with_holes(arr) { if (Array.isArray(arr)) return arr; } function _iterable_to_array_limit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } function _non_iterable_rest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _sliced_to_array(arr, i) { return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest(); } function _unsupported_iterable_to_array(o, minLen) { if (!o) return; if (typeof o === "string") return _array_like_to_array(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen); } import React, { useEffect, useState } from "react"; import { createPortal } from "react-dom"; import { useStore } from "zustand"; import { useShallow } from "zustand/react/shallow"; import { getRootWindow } from "./ReactWindow.js"; import { WindowGuest } from "./WindowGuest.js"; (function (Window) { function closeAll() { getRootWindow().windows.forEach(function (v) { return v.close(); }); } Window.closeAll = closeAll; function minimizeAll() { getRootWindow().windows.forEach(function (v) { return v.minimize(true); }); } Window.minimizeAll = minimizeAll; function createWindowContainer(win) { var body = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : document.body; var id = "react-window-container-".concat(win.id); var host = document.getElementById(id); if (host) { return host; } host = document.createElement("div"); host.setAttribute("data-react-window-id", win.id); host.id = id; host.className = "fixed overflow-hidden w-screen h-screen left-0 top-0 pointer-events-none isolate z-40"; body.appendChild(host); return host; } Window.Host = function (param) { var _param_body = param.body, body = _param_body === void 0 ? document.body : _param_body; var window = getRootWindow(); var _useState = _sliced_to_array(useState(null), 2), container = _useState[0], setContainer = _useState[1]; var store = window.store; useEffect(function () { var ele = createWindowContainer(window, body); setContainer(ele); store.setState({ childrenElement: ele }); return function () { ele.remove(); }; }, [ window.id ]); var windows = useStore(store, useShallow(function (param) { var windows = param.windows; return windows; })); return /*#__PURE__*/ React.createElement(React.Fragment, null, container && windows.map(function (win) { return /*#__PURE__*/ createPortal(/*#__PURE__*/ React.createElement(WindowGuest, { key: win.id, win: win }), container, win.id); })); }; function getRoot() { return getRootWindow(); } Window.getRoot = getRoot; function open(opts) { getRootWindow().open(opts); } Window.open = open; })(Window || (Window = {})); export var Window;