@launchmenu/applet-window-manager
Version:
An applet to manage LMs window
59 lines • 7 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.PositionInputContent = void 0;
const core_1 = require("@launchmenu/core");
const electron_1 = require("electron");
const model_react_1 = require("model-react");
const react_1 = __importDefault(require("react"));
/**
* A component for showing content to control the window position
*/
const PositionInputContent = ({ browserWindowField, field }) => {
const [h] = model_react_1.useDataHook();
const browserWindow = browserWindowField.get(h);
const setPosition = (position) => {
if (!browserWindow)
return;
const displays = electron_1.remote.screen.getAllDisplays().map(display => display.bounds);
// Find the display to put the window in
const { x, y } = field.get();
const display = displays.find(display => display.x <= x &&
display.x + display.width > x &&
display.y <= y &&
display.y + display.height > y) || electron_1.remote.screen.getPrimaryDisplay().bounds;
// Find the exact coordinates
const windowWidth = window.document.body.clientWidth;
const windowHeight = window.document.body.clientHeight;
const newX = Math.round(display.x + (display.width - windowWidth) * position.x);
const newY = Math.round(display.y + (display.height - windowHeight) * position.y);
// Update the position
field.set({ x: newX, y: newY });
};
const positions = [
[
{ x: 0, y: 0, name: "top left" },
{ x: 0.5, y: 0, name: "top" },
{ x: 1, y: 0, name: "top right" },
],
[
{ x: 0, y: 0.5, name: "left" },
{ x: 0.5, y: 0.5, name: "middle" },
{ x: 1, y: 0.5, name: "right" },
],
[
{ x: 0, y: 1, name: "bottom left" },
{ x: 0.5, y: 1, name: "bottom" },
{ x: 1, y: 1, name: "bottom right" },
],
];
return (react_1.default.createElement(core_1.Box, null,
react_1.default.createElement(core_1.Box, { padding: "medium", background: "secondary", borderRadius: "small", css: { WebkitAppRegion: "drag", WebkitUserSelect: "none" } }, "Click and drag here to move the window"),
react_1.default.createElement(core_1.Box, null,
react_1.default.createElement(core_1.Box, { marginY: "medium" }, "Or click one of the buttons below to snap to a position"),
react_1.default.createElement(core_1.Box, { display: "flex", flexDirection: "column", gap: "small" }, positions.map((row, i) => (react_1.default.createElement(core_1.Box, { display: "flex", gap: "small", key: i }, row.map(({ x, y, name }, j) => (react_1.default.createElement(core_1.Button, { flexGrow: 1, onClick: () => setPosition({ x, y }), key: j }, name))))))))));
};
exports.PositionInputContent = PositionInputContent;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9zaXRpb25JbnB1dENvbnRlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcG9zaXRpb24vUG9zaXRpb25JbnB1dENvbnRlbnQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDJDQUFnRTtBQUNoRSx1Q0FBK0M7QUFDL0MsNkNBQXdDO0FBQ3hDLGtEQUEyQztBQUUzQzs7R0FFRztBQUNJLE1BQU0sb0JBQW9CLEdBRzVCLENBQUMsRUFBQyxrQkFBa0IsRUFBRSxLQUFLLEVBQUMsRUFBRSxFQUFFO0lBQ2pDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyx5QkFBVyxFQUFFLENBQUM7SUFDMUIsTUFBTSxhQUFhLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hELE1BQU0sV0FBVyxHQUFHLENBQUMsUUFBbUIsRUFBRSxFQUFFO1FBQ3hDLElBQUksQ0FBQyxhQUFhO1lBQUUsT0FBTztRQUMzQixNQUFNLFFBQVEsR0FBRyxpQkFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFL0Usd0NBQXdDO1FBQ3hDLE1BQU0sRUFBQyxDQUFDLEVBQUUsQ0FBQyxFQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzNCLE1BQU0sT0FBTyxHQUNULFFBQVEsQ0FBQyxJQUFJLENBQ1QsT0FBTyxDQUFDLEVBQUUsQ0FDTixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDZCxPQUFPLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxLQUFLLEdBQUcsQ0FBQztZQUM3QixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDZCxPQUFPLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUNyQyxJQUFJLGlCQUFNLENBQUMsTUFBTSxDQUFDLGlCQUFp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