From b073e583c0f35d1676c8f8fc4e786925ef58123d Mon Sep 17 00:00:00 2001 From: Hsieh Chin Fan Date: Sat, 5 Oct 2024 17:00:12 +0800 Subject: feat: add menu items for map managing --- src/MenuItem.mjs | 24 +++++++++++++++++++++++- src/dumbymap.mjs | 2 ++ src/editor.mjs | 7 +++++++ 3 files changed, 32 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/MenuItem.mjs b/src/MenuItem.mjs index dbe984f..138b317 100644 --- a/src/MenuItem.mjs +++ b/src/MenuItem.mjs @@ -343,8 +343,30 @@ export const toggleMapFocus = map => onclick: () => map.classList.toggle('focus') }) +/** + * getCoordinatesByPixels. + * + * @param {HTMLElement} map instance + * @param {Number[]} xy -- pixel of window + */ export const getCoordinatesByPixels = (map, xy) => new Item({ text: 'Get Coordinates', - onclick: () => console.log(map.renderer.unproject(xy)) + onclick: () => { + const [x, y] = map.renderer.unproject(xy) + const xyString = `[${x.toFixed(7)}, ${y.toFixed(7)}]` + navigator.clipboard.writeText(xyString) + window.alert(`${xyString} copied to clipboard`) + } + }) + +/** + * restoreCamera. + * + * @param {HTMLElement} map + */ +export const restoreCamera = map => + new Item({ + text: 'Restore Camera', + onclick: () => map.renderer.restoreCamera() }) diff --git a/src/dumbymap.mjs b/src/dumbymap.mjs index 7489b1a..8f049b2 100644 --- a/src/dumbymap.mjs +++ b/src/dumbymap.mjs @@ -445,6 +445,8 @@ export const generateMaps = (container, { delay } = {}) => { // Focus or Print Map Results menu.appendChild(menuItem.toggleMapFocus(map)) menu.appendChild(menuItem.renderResults(dumbymap, map)) + menu.appendChild(menuItem.getCoordinatesByPixels(map, [e.x, e.y])) + menu.appendChild(menuItem.restoreCamera(map)) } else { // Toggle block focus const block = e.target.closest('.dumby-block') diff --git a/src/editor.mjs b/src/editor.mjs index 9fe9e75..cdc699d 100644 --- a/src/editor.mjs +++ b/src/editor.mjs @@ -808,4 +808,11 @@ new window.MutationObserver(mutaions => { }) // }}} +const addMapRandomlyByPreset = () => { + if (Object.keys(aliasesForMapOptions).length === 0) return + cm.replaceRange('\n```map\n```\n', cm.getCursor()); // adds a new line + + +} + // vim: sw=2 ts=2 foldmethod=marker foldmarker={{{,}}} -- cgit v1.2.3-70-g09d2