nc-planner/scripts/resize-menus.js

45 lines
1.3 KiB
JavaScript

import { recall, save } from "./storage.js";
import { registerLoadCallback } from "./main.js";
registerLoadCallback(() => {
const handles = document.querySelectorAll('[data-resize]');
handles.forEach(handle => {
handle.addEventListener("mousedown", startResize);
const stored = recall(`${handle.dataset.resize}-size`);
if (stored) {
document.body.style.setProperty(`--${handle.dataset.resize}-size`, stored);
}
});
});
function startResize(e) {
window.addEventListener("mouseup", endResize);
window.addEventListener("mousemove", resize);
document.body.dataset.resizing = e.target.dataset.resize;
}
function resize(e) {
const resizing = document.body.dataset.resizing;
let size = 0.25;
switch (resizing) {
case "left-menu":
size = e.pageX / window.innerWidth;
break;
case "right-menu":
size = 1 - e.pageX / window.innerWidth;
break;
case "bottom-menu":
size = 1 - e.pageY / window.innerHeight;
break;
}
size = Math.max(0.05, Math.min(size, 0.5));
document.body.style.setProperty(`--${resizing}-size`, `${size*100}%`);
save(`${resizing}-size`, `${size*100}%`);
}
function endResize() {
window.removeEventListener("mouseup", endResize);
window.removeEventListener("mousemove", resize);
delete document.body.dataset.resizing;
}