mudlet-map-editor 0.20.0 → 0.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-lib/{ScriptCodeEditor-Dtgis0Nh.js → ScriptCodeEditor-BHx_AhoB.js} +19 -7
- package/dist-lib/assets/sessionWorker-DrI4-wnQ.js +38 -0
- package/dist-lib/assets/{ts.worker-C20_IzgO.js → ts.worker-BcKzzBCP.js} +9 -9
- package/dist-lib/editor/sessionSaver.d.ts +11 -0
- package/dist-lib/editor/sessionWorker.d.ts +18 -0
- package/dist-lib/index.js +149 -84
- package/dist-lib/{monaco.contribution-CRzon75s.js → monaco.contribution-CoQcDhVH.js} +1 -1
- package/dist-lib/{tsMode-J2Knw729.js → tsMode-BnfSMFGJ.js} +2 -2
- package/package.json +2 -2
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { MudletMap } from '../mapIO';
|
|
2
|
+
import type { Command } from './types';
|
|
3
|
+
export interface SaveSessionArgs {
|
|
4
|
+
fileName: string;
|
|
5
|
+
map: MudletMap;
|
|
6
|
+
undoStack: Command[];
|
|
7
|
+
currentAreaId: number | null;
|
|
8
|
+
currentZ: number;
|
|
9
|
+
existingId?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function saveSessionAsync(args: SaveSessionArgs): Promise<string>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { MudletMap } from '../mapIO';
|
|
2
|
+
import type { Command } from './types';
|
|
3
|
+
export interface SaveSessionRequest {
|
|
4
|
+
reqId: number;
|
|
5
|
+
fileName: string;
|
|
6
|
+
map: MudletMap;
|
|
7
|
+
undoStack: Command[];
|
|
8
|
+
currentAreaId: number | null;
|
|
9
|
+
currentZ: number;
|
|
10
|
+
existingId?: string;
|
|
11
|
+
}
|
|
12
|
+
export type SaveSessionResponse = {
|
|
13
|
+
reqId: number;
|
|
14
|
+
id: string;
|
|
15
|
+
} | {
|
|
16
|
+
reqId: number;
|
|
17
|
+
error: string;
|
|
18
|
+
};
|
package/dist-lib/index.js
CHANGED
|
@@ -278,7 +278,7 @@ function ne({ label: e, value: t, options: n, onChange: r, searchable: a, emptyT
|
|
|
278
278
|
let t = D[e];
|
|
279
279
|
t && (r(t.value), d(!1));
|
|
280
280
|
};
|
|
281
|
-
|
|
281
|
+
i(() => {
|
|
282
282
|
if (!u) {
|
|
283
283
|
g("");
|
|
284
284
|
return;
|
|
@@ -295,7 +295,9 @@ function ne({ label: e, value: t, options: n, onChange: r, searchable: a, emptyT
|
|
|
295
295
|
u,
|
|
296
296
|
_,
|
|
297
297
|
D
|
|
298
|
-
])
|
|
298
|
+
]);
|
|
299
|
+
let A = S.current?.closest(".mudlet-editor-root") ?? document.body;
|
|
300
|
+
return /* @__PURE__ */ m("div", {
|
|
299
301
|
className: "dropdown-select",
|
|
300
302
|
children: [/* @__PURE__ */ m("button", {
|
|
301
303
|
ref: S,
|
|
@@ -350,7 +352,7 @@ function ne({ label: e, value: t, options: n, onChange: r, searchable: a, emptyT
|
|
|
350
352
|
children: e.label
|
|
351
353
|
}, e.value))]
|
|
352
354
|
})]
|
|
353
|
-
})] }),
|
|
355
|
+
})] }), A)]
|
|
354
356
|
});
|
|
355
357
|
}
|
|
356
358
|
//#endregion
|
|
@@ -6389,7 +6391,14 @@ function Qt({ entries: e }) {
|
|
|
6389
6391
|
});
|
|
6390
6392
|
}
|
|
6391
6393
|
function $t({ onClose: e }) {
|
|
6392
|
-
let [t, n] = c(!1), r = Gt.filter((e) => e.detail === "Read" || e.detail === "I/O" || e.kind !== "function"), i = Gt.filter((e) => e.detail === "Write")
|
|
6394
|
+
let [t, n] = c(!1), r = Gt.filter((e) => e.detail === "Read" || e.detail === "I/O" || e.kind !== "function"), i = Gt.filter((e) => e.detail === "Write"), a = async () => {
|
|
6395
|
+
let e = Zt();
|
|
6396
|
+
try {
|
|
6397
|
+
await navigator.clipboard.writeText(e), n(!0), setTimeout(() => n(!1), 1500);
|
|
6398
|
+
} catch {
|
|
6399
|
+
window.prompt("Copy the prompt text:", e);
|
|
6400
|
+
}
|
|
6401
|
+
}, o = document.querySelector(".mudlet-editor-root") ?? document.body;
|
|
6393
6402
|
return v(/* @__PURE__ */ p("div", {
|
|
6394
6403
|
className: "modal-overlay",
|
|
6395
6404
|
onClick: e,
|
|
@@ -6438,14 +6447,7 @@ function $t({ onClose: e }) {
|
|
|
6438
6447
|
}), /* @__PURE__ */ p("button", {
|
|
6439
6448
|
type: "button",
|
|
6440
6449
|
className: "ai-prompt-copy-btn",
|
|
6441
|
-
onClick:
|
|
6442
|
-
let e = Zt();
|
|
6443
|
-
try {
|
|
6444
|
-
await navigator.clipboard.writeText(e), n(!0), setTimeout(() => n(!1), 1500);
|
|
6445
|
-
} catch {
|
|
6446
|
-
window.prompt("Copy the prompt text:", e);
|
|
6447
|
-
}
|
|
6448
|
-
},
|
|
6450
|
+
onClick: a,
|
|
6449
6451
|
title: "Copy AI-friendly API reference to clipboard",
|
|
6450
6452
|
children: t ? "Copied!" : "Copy for AI"
|
|
6451
6453
|
})]
|
|
@@ -6548,7 +6550,7 @@ function $t({ onClose: e }) {
|
|
|
6548
6550
|
]
|
|
6549
6551
|
})]
|
|
6550
6552
|
})
|
|
6551
|
-
}),
|
|
6553
|
+
}), o);
|
|
6552
6554
|
}
|
|
6553
6555
|
//#endregion
|
|
6554
6556
|
//#region src/components/panels/ScriptLibraryModal.tsx
|
|
@@ -6640,7 +6642,7 @@ function en({ library: e, currentName: t, onLoad: n, onDelete: r, onClose: a })
|
|
|
6640
6642
|
}
|
|
6641
6643
|
//#endregion
|
|
6642
6644
|
//#region src/components/panels/ScriptPanel.tsx
|
|
6643
|
-
var tn = r(() => import("./ScriptCodeEditor-
|
|
6645
|
+
var tn = r(() => import("./ScriptCodeEditor-BHx_AhoB.js"));
|
|
6644
6646
|
function nn() {
|
|
6645
6647
|
let { t: e } = d("panels");
|
|
6646
6648
|
return /* @__PURE__ */ m("div", {
|
|
@@ -9740,7 +9742,7 @@ function Cr({ value: e, options: t, onChange: n, searchPlaceholder: r = "Search
|
|
|
9740
9742
|
let t = S[e];
|
|
9741
9743
|
t && (n(t), o(!1));
|
|
9742
9744
|
};
|
|
9743
|
-
|
|
9745
|
+
i(() => {
|
|
9744
9746
|
if (!a) {
|
|
9745
9747
|
u("");
|
|
9746
9748
|
return;
|
|
@@ -9757,7 +9759,9 @@ function Cr({ value: e, options: t, onChange: n, searchPlaceholder: r = "Search
|
|
|
9757
9759
|
a,
|
|
9758
9760
|
d,
|
|
9759
9761
|
S
|
|
9760
|
-
])
|
|
9762
|
+
]);
|
|
9763
|
+
let T = y.current?.closest(".mudlet-editor-root") ?? document.body;
|
|
9764
|
+
return /* @__PURE__ */ m("div", {
|
|
9761
9765
|
className: "dropdown-select",
|
|
9762
9766
|
style: { flex: 1 },
|
|
9763
9767
|
children: [/* @__PURE__ */ m("button", {
|
|
@@ -9812,7 +9816,7 @@ function Cr({ value: e, options: t, onChange: n, searchPlaceholder: r = "Search
|
|
|
9812
9816
|
children: t
|
|
9813
9817
|
}, t))]
|
|
9814
9818
|
})]
|
|
9815
|
-
})] }),
|
|
9819
|
+
})] }), T)]
|
|
9816
9820
|
});
|
|
9817
9821
|
}
|
|
9818
9822
|
//#endregion
|
|
@@ -16246,9 +16250,9 @@ function va(e, t) {
|
|
|
16246
16250
|
if (e.currentAreaId == null) return !1;
|
|
16247
16251
|
let t = r.getArea(e.currentAreaId);
|
|
16248
16252
|
return t ? t.getRooms().every((t) => t.z !== e.currentZ) : !1;
|
|
16249
|
-
}, () => i.getViewportBounds())
|
|
16250
|
-
|
|
16251
|
-
let
|
|
16253
|
+
}, () => i.getViewportBounds());
|
|
16254
|
+
i.addLiveEffect("editor.marquee", o), i.addLiveEffect("editor.selection", s), i.addLiveEffect("editor.hover", c), i.addLiveEffect("editor.rubberband", l), i.addLiveEffect("editor.snap", u), i.addLiveEffect("editor.connectHandles", d), i.addLiveEffect("editor.customLinePreview", f), i.addLiveEffect("editor.selectedLink", p), i.addLiveEffect("editor.labelHalo", m), i.addLiveEffect("editor.selectionCenter", h), i.addLiveEffect("editor.ghostRooms", g), i.addLiveEffect("editor.route", _), i.addLiveEffect("editor.gridOverlay", v);
|
|
16255
|
+
let y = {
|
|
16252
16256
|
renderer: i,
|
|
16253
16257
|
reader: r,
|
|
16254
16258
|
settings: n,
|
|
@@ -16267,18 +16271,18 @@ function va(e, t) {
|
|
|
16267
16271
|
i.refresh(), s.syncPositions(), c.syncPositions(), u.syncPositions(), d.syncPositions(), m.syncPositions(), h.syncPositions(), g.syncPositions(), _.syncPositions();
|
|
16268
16272
|
},
|
|
16269
16273
|
destroy() {
|
|
16270
|
-
delete t.dataset.editorCursor,
|
|
16274
|
+
delete t.dataset.editorCursor, x(), i.removeLiveEffect("editor.selection"), i.removeLiveEffect("editor.hover"), i.removeLiveEffect("editor.rubberband"), i.removeLiveEffect("editor.snap"), i.removeLiveEffect("editor.connectHandles"), o.destroy(), i.removeLiveEffect("editor.marquee"), s.destroy(), c.destroy(), l.destroy(), u.destroy(), d.destroy(), f.destroy(), i.removeLiveEffect("editor.customLinePreview"), p.destroy(), i.removeLiveEffect("editor.selectedLink"), m.destroy(), i.removeLiveEffect("editor.labelHalo"), h.destroy(), i.removeLiveEffect("editor.selectionCenter"), g.destroy(), i.removeLiveEffect("editor.ghostRooms"), _.destroy(), i.removeLiveEffect("editor.route"), v.destroy(), i.removeLiveEffect("editor.gridOverlay"), i.destroy();
|
|
16271
16275
|
}
|
|
16272
16276
|
};
|
|
16273
|
-
a.current =
|
|
16274
|
-
let
|
|
16277
|
+
a.current = y;
|
|
16278
|
+
let x = _a({
|
|
16275
16279
|
renderer: i,
|
|
16276
16280
|
container: t,
|
|
16277
16281
|
settings: n,
|
|
16278
|
-
refresh: () =>
|
|
16279
|
-
scene:
|
|
16282
|
+
refresh: () => y.refresh(),
|
|
16283
|
+
scene: y
|
|
16280
16284
|
});
|
|
16281
|
-
return
|
|
16285
|
+
return y;
|
|
16282
16286
|
}
|
|
16283
16287
|
//#endregion
|
|
16284
16288
|
//#region src/editor/clipboard.ts
|
|
@@ -16407,8 +16411,62 @@ function wa(e, t, n, r, i) {
|
|
|
16407
16411
|
}, i);
|
|
16408
16412
|
}
|
|
16409
16413
|
//#endregion
|
|
16414
|
+
//#region src/editor/sessionSaver.ts
|
|
16415
|
+
var Ta = null, Ea = !1, Da = 1, Oa = /* @__PURE__ */ new Map();
|
|
16416
|
+
function ka(e) {
|
|
16417
|
+
for (let t of Oa.values()) t.reject(e);
|
|
16418
|
+
Oa.clear();
|
|
16419
|
+
}
|
|
16420
|
+
function Aa() {
|
|
16421
|
+
if (Ea) return null;
|
|
16422
|
+
if (Ta) return Ta;
|
|
16423
|
+
try {
|
|
16424
|
+
return Ta = new Worker(new URL(
|
|
16425
|
+
/* @vite-ignore */
|
|
16426
|
+
"" + new URL("assets/sessionWorker-DrI4-wnQ.js", import.meta.url).href,
|
|
16427
|
+
"" + import.meta.url
|
|
16428
|
+
), { type: "module" }), Ta.onmessage = (e) => {
|
|
16429
|
+
let t = e.data, n = Oa.get(t.reqId);
|
|
16430
|
+
n && (Oa.delete(t.reqId), "error" in t ? n.reject(Error(t.error)) : n.resolve(t.id));
|
|
16431
|
+
}, Ta.onerror = () => {
|
|
16432
|
+
Ea = !0, ka(/* @__PURE__ */ Error("session worker error")), Ta?.terminate(), Ta = null;
|
|
16433
|
+
}, Ta;
|
|
16434
|
+
} catch {
|
|
16435
|
+
return Ea = !0, null;
|
|
16436
|
+
}
|
|
16437
|
+
}
|
|
16438
|
+
function ja(e) {
|
|
16439
|
+
return qr(e.fileName, e.map, e.undoStack, e.currentAreaId, e.currentZ, e.existingId);
|
|
16440
|
+
}
|
|
16441
|
+
async function Ma(e) {
|
|
16442
|
+
let t = Aa();
|
|
16443
|
+
if (t) {
|
|
16444
|
+
let n = Da++;
|
|
16445
|
+
try {
|
|
16446
|
+
return await new Promise((r, i) => {
|
|
16447
|
+
Oa.set(n, {
|
|
16448
|
+
resolve: r,
|
|
16449
|
+
reject: i
|
|
16450
|
+
});
|
|
16451
|
+
try {
|
|
16452
|
+
let r = {
|
|
16453
|
+
reqId: n,
|
|
16454
|
+
...e
|
|
16455
|
+
};
|
|
16456
|
+
t.postMessage(r);
|
|
16457
|
+
} catch (e) {
|
|
16458
|
+
Oa.delete(n), i(e instanceof Error ? e : Error(String(e)));
|
|
16459
|
+
}
|
|
16460
|
+
});
|
|
16461
|
+
} catch (e) {
|
|
16462
|
+
Ea = !0, Ta?.terminate(), Ta = null, console.warn("Session worker save failed; falling back to main thread:", e);
|
|
16463
|
+
}
|
|
16464
|
+
}
|
|
16465
|
+
return ja(e);
|
|
16466
|
+
}
|
|
16467
|
+
//#endregion
|
|
16410
16468
|
//#region src/App.tsx
|
|
16411
|
-
function
|
|
16469
|
+
function Na() {
|
|
16412
16470
|
return {
|
|
16413
16471
|
top: 104,
|
|
16414
16472
|
right: z.getState().panelWidth + 24,
|
|
@@ -16416,7 +16474,7 @@ function Ta() {
|
|
|
16416
16474
|
left: 24
|
|
16417
16475
|
};
|
|
16418
16476
|
}
|
|
16419
|
-
var
|
|
16477
|
+
var Pa = {
|
|
16420
16478
|
1: "select",
|
|
16421
16479
|
2: "connect",
|
|
16422
16480
|
3: "unlink",
|
|
@@ -16425,7 +16483,7 @@ var Ea = {
|
|
|
16425
16483
|
6: "delete",
|
|
16426
16484
|
7: "pan",
|
|
16427
16485
|
8: "paint"
|
|
16428
|
-
},
|
|
16486
|
+
}, Fa = {
|
|
16429
16487
|
ArrowLeft: {
|
|
16430
16488
|
dx: -1,
|
|
16431
16489
|
dy: 0
|
|
@@ -16443,30 +16501,30 @@ var Ea = {
|
|
|
16443
16501
|
dy: -1
|
|
16444
16502
|
}
|
|
16445
16503
|
};
|
|
16446
|
-
function
|
|
16504
|
+
function Ia(e, t) {
|
|
16447
16505
|
let n = Oe.t.bind(Oe), r = [n(`editor:status.${e}`, { count: t.count })];
|
|
16448
16506
|
return t.externalExitsStubbed > 0 && r.push(n("editor:status.externalExitsStubbed", { count: t.externalExitsStubbed })), t.externalSpecialExitsDropped > 0 && r.push(n("editor:status.specialExitsDropped", { count: t.externalSpecialExitsDropped })), r.join(" · ");
|
|
16449
16507
|
}
|
|
16450
|
-
function
|
|
16451
|
-
let { t: r } = d("editor"), a = s(null), l = s(null), u = B((e) => e.map), h = B((e) => e.swatchPaletteOpen), g = u != null, _ = B((e) => e.currentAreaId), v = B((e) => e.currentZ), y = B((e) => e.activeTool), b = B((e) => e.pending), x = B((e) => e.hover), S = B((e) => e.spaceHeld), C = B((e) => e.panelCollapsed), w = B((e) => e.
|
|
16508
|
+
function La({ plugins: e = [], title: n = "Mudlet Map Editor" }) {
|
|
16509
|
+
let { t: r } = d("editor"), a = s(null), l = s(null), u = B((e) => e.map), h = B((e) => e.swatchPaletteOpen), g = u != null, _ = B((e) => e.currentAreaId), v = B((e) => e.currentZ), y = B((e) => e.activeTool), b = B((e) => e.pending), x = B((e) => e.hover), S = B((e) => e.spaceHeld), C = B((e) => e.panelCollapsed), w = B((e) => e.undo), T = B((e) => e.redo), E = B((e) => e.panRequest), [D, O] = c(!1), [k, A] = c(!1), [j, M] = c(!1), [P, F] = c(!1), [I, L] = c(() => new URLSearchParams(window.location.search).get("map")), R = o(() => e.flatMap((e) => e.swatchSets?.() ?? []), [e]), V = o(() => e.flatMap((e) => e.sidebarTabs?.() ?? []), [e]), H = o(() => e.flatMap((e) => e.roomPanelSections?.() ?? []), [e]), U = o(() => {
|
|
16452
16510
|
for (let t of e) if (typeof t.renderLogo == "function") return t.renderLogo();
|
|
16453
|
-
}, [e]),
|
|
16511
|
+
}, [e]), ee = o(() => {
|
|
16454
16512
|
let t = e.map((e) => e.toolbarActions).filter((e) => typeof e == "function");
|
|
16455
16513
|
if (t.length !== 0) return (e) => t.reduce((e, t) => t(e), e);
|
|
16456
16514
|
}, [e]);
|
|
16457
16515
|
i(() => {
|
|
16458
|
-
z.setState({ pluginSwatchSets:
|
|
16459
|
-
}, [
|
|
16516
|
+
z.setState({ pluginSwatchSets: R });
|
|
16517
|
+
}, [R]), i(() => {
|
|
16460
16518
|
e.length !== 0 && (async () => {
|
|
16461
16519
|
for (let t of e) await t.onAppReady?.();
|
|
16462
16520
|
})();
|
|
16463
16521
|
}, []), i(() => {
|
|
16464
|
-
import("./ScriptCodeEditor-
|
|
16522
|
+
import("./ScriptCodeEditor-BHx_AhoB.js");
|
|
16465
16523
|
}, []);
|
|
16466
|
-
let
|
|
16524
|
+
let W = s(u);
|
|
16467
16525
|
i(() => {
|
|
16468
|
-
let t =
|
|
16469
|
-
if (
|
|
16526
|
+
let t = W.current;
|
|
16527
|
+
if (W.current = u, u && u !== t) for (let t of e) t.onMapOpened?.(u);
|
|
16470
16528
|
else if (t && !u) for (let t of e) t.onMapClosed?.();
|
|
16471
16529
|
}, [u]), i(() => {
|
|
16472
16530
|
if (!u) {
|
|
@@ -16494,21 +16552,21 @@ function ka({ plugins: e = [], title: n = "Mudlet Map Editor" }) {
|
|
|
16494
16552
|
let t = Pe();
|
|
16495
16553
|
Object.keys(t).length > 0 && Ie(e, t);
|
|
16496
16554
|
let { currentAreaId: n, currentZ: r } = z.getState();
|
|
16497
|
-
return n != null && e.setArea(n, r,
|
|
16555
|
+
return n != null && e.setArea(n, r, Na()), () => {
|
|
16498
16556
|
e.destroy(), l.current = null;
|
|
16499
16557
|
};
|
|
16500
16558
|
}, [u]), i(() => {
|
|
16501
16559
|
let e = l.current;
|
|
16502
16560
|
if (!e || !g || _ == null) return;
|
|
16503
16561
|
let t = z.getState().navigateTo;
|
|
16504
|
-
t ? (z.setState({ navigateTo: null }), e.setAreaAt(_, v, t.mapX, t.mapY)) : e.setArea(_, v,
|
|
16562
|
+
t ? (z.setState({ navigateTo: null }), e.setAreaAt(_, v, t.mapX, t.mapY)) : e.setArea(_, v, Na());
|
|
16505
16563
|
}, [
|
|
16506
16564
|
_,
|
|
16507
16565
|
v,
|
|
16508
16566
|
g
|
|
16509
16567
|
]), i(() => {
|
|
16510
|
-
!
|
|
16511
|
-
}, [
|
|
16568
|
+
!E || !l.current || (z.setState({ panRequest: null }), l.current.renderer.camera.panToMapPoint(E.mapX, E.mapY), l.current.refresh());
|
|
16569
|
+
}, [E]), i(() => {
|
|
16512
16570
|
let e = a.current;
|
|
16513
16571
|
if (!e) return;
|
|
16514
16572
|
if (S) {
|
|
@@ -16546,12 +16604,19 @@ function ka({ plugins: e = [], title: n = "Mudlet Map Editor" }) {
|
|
|
16546
16604
|
let { map: e, loaded: t, undo: n, currentAreaId: r, currentZ: i, sessionId: a } = z.getState();
|
|
16547
16605
|
if (!e || !t) return;
|
|
16548
16606
|
let o = setTimeout(() => {
|
|
16549
|
-
|
|
16607
|
+
Ma({
|
|
16608
|
+
fileName: t.fileName,
|
|
16609
|
+
map: e,
|
|
16610
|
+
undoStack: n,
|
|
16611
|
+
currentAreaId: r,
|
|
16612
|
+
currentZ: i,
|
|
16613
|
+
existingId: a ?? void 0
|
|
16614
|
+
}).then((e) => {
|
|
16550
16615
|
a || z.setState({ sessionId: e });
|
|
16551
16616
|
}).catch(console.error);
|
|
16552
16617
|
}, 1500);
|
|
16553
16618
|
return () => clearTimeout(o);
|
|
16554
|
-
}, [w]), i(() => {
|
|
16619
|
+
}, [w, T]), i(() => {
|
|
16555
16620
|
let e = (e) => {
|
|
16556
16621
|
let t = e;
|
|
16557
16622
|
if (!t) return !1;
|
|
@@ -16568,15 +16633,15 @@ function ka({ plugins: e = [], title: n = "Mudlet Map Editor" }) {
|
|
|
16568
16633
|
return;
|
|
16569
16634
|
}
|
|
16570
16635
|
if ((t.ctrlKey || t.metaKey) && t.key.toLowerCase() === "f") {
|
|
16571
|
-
t.preventDefault(),
|
|
16636
|
+
t.preventDefault(), M((e) => !e);
|
|
16572
16637
|
return;
|
|
16573
16638
|
}
|
|
16574
16639
|
if ((t.ctrlKey || t.metaKey) && !t.shiftKey && t.key.toLowerCase() === "z") {
|
|
16575
|
-
t.preventDefault(),
|
|
16640
|
+
t.preventDefault(), ie();
|
|
16576
16641
|
return;
|
|
16577
16642
|
}
|
|
16578
16643
|
if ((t.ctrlKey || t.metaKey) && (t.shiftKey && t.key.toLowerCase() === "z" || t.key.toLowerCase() === "y")) {
|
|
16579
|
-
t.preventDefault(),
|
|
16644
|
+
t.preventDefault(), G();
|
|
16580
16645
|
return;
|
|
16581
16646
|
}
|
|
16582
16647
|
if ((t.ctrlKey || t.metaKey) && !t.shiftKey && t.key.toLowerCase() === "c") {
|
|
@@ -16588,7 +16653,7 @@ function ka({ plugins: e = [], title: n = "Mudlet Map Editor" }) {
|
|
|
16588
16653
|
return;
|
|
16589
16654
|
}
|
|
16590
16655
|
if ((t.ctrlKey || t.metaKey) && !t.shiftKey && t.key.toLowerCase() === "v") {
|
|
16591
|
-
|
|
16656
|
+
re();
|
|
16592
16657
|
return;
|
|
16593
16658
|
}
|
|
16594
16659
|
if ((t.ctrlKey || t.metaKey) && !t.shiftKey && t.key.toLowerCase() === "d") {
|
|
@@ -16608,7 +16673,7 @@ function ka({ plugins: e = [], title: n = "Mudlet Map Editor" }) {
|
|
|
16608
16673
|
kind: "room",
|
|
16609
16674
|
ids: n.newIds
|
|
16610
16675
|
},
|
|
16611
|
-
status:
|
|
16676
|
+
status: Ia("duplicated", n)
|
|
16612
16677
|
});
|
|
16613
16678
|
return;
|
|
16614
16679
|
}
|
|
@@ -16627,7 +16692,7 @@ function ka({ plugins: e = [], title: n = "Mudlet Map Editor" }) {
|
|
|
16627
16692
|
return;
|
|
16628
16693
|
}
|
|
16629
16694
|
if (t.key === "Delete" || t.key === "Backspace") {
|
|
16630
|
-
|
|
16695
|
+
ne();
|
|
16631
16696
|
return;
|
|
16632
16697
|
}
|
|
16633
16698
|
if (t.key === "g" || t.key === "G") {
|
|
@@ -16635,13 +16700,13 @@ function ka({ plugins: e = [], title: n = "Mudlet Map Editor" }) {
|
|
|
16635
16700
|
return;
|
|
16636
16701
|
}
|
|
16637
16702
|
if (t.key === "f" || t.key === "F") {
|
|
16638
|
-
l.current?.renderer.fitArea(
|
|
16703
|
+
l.current?.renderer.fitArea(Na());
|
|
16639
16704
|
return;
|
|
16640
16705
|
}
|
|
16641
|
-
if (
|
|
16706
|
+
if (Pa[t.key]) {
|
|
16642
16707
|
let e = z.getState();
|
|
16643
16708
|
e.pending?.kind === "customLine" && l.current && (qn(e.pending, l.current), z.bumpData()), z.setState({
|
|
16644
|
-
activeTool:
|
|
16709
|
+
activeTool: Pa[t.key],
|
|
16645
16710
|
pending: null
|
|
16646
16711
|
});
|
|
16647
16712
|
return;
|
|
@@ -16657,14 +16722,14 @@ function ka({ plugins: e = [], title: n = "Mudlet Map Editor" }) {
|
|
|
16657
16722
|
} });
|
|
16658
16723
|
return;
|
|
16659
16724
|
}
|
|
16660
|
-
if (
|
|
16725
|
+
if (Fa[t.key]) {
|
|
16661
16726
|
let e = z.getState();
|
|
16662
16727
|
if (e.activeTool !== "select" || !e.selection || !e.map) return;
|
|
16663
16728
|
if (e.selection.kind === "label") {
|
|
16664
16729
|
let { id: n, areaId: i } = e.selection, a = l.current?.reader.getLabelSnapshot(i, n);
|
|
16665
16730
|
if (!a) return;
|
|
16666
16731
|
t.preventDefault();
|
|
16667
|
-
let o = (t.shiftKey ? 5 : 1) * e.gridStep, s =
|
|
16732
|
+
let o = (t.shiftKey ? 5 : 1) * e.gridStep, s = Fa[t.key], c = s.dx * o, u = s.dy * o, d = [...a.pos], f = [
|
|
16668
16733
|
a.pos[0] + c,
|
|
16669
16734
|
a.pos[1] + u,
|
|
16670
16735
|
a.pos[2]
|
|
@@ -16683,7 +16748,7 @@ function ka({ plugins: e = [], title: n = "Mudlet Map Editor" }) {
|
|
|
16683
16748
|
}
|
|
16684
16749
|
if (e.selection.kind !== "room") return;
|
|
16685
16750
|
t.preventDefault();
|
|
16686
|
-
let n = (t.shiftKey ? 5 : 1) * e.gridStep, i =
|
|
16751
|
+
let n = (t.shiftKey ? 5 : 1) * e.gridStep, i = Fa[t.key], a = i.dx * n, o = i.dy * n, s = [];
|
|
16687
16752
|
for (let t of e.selection.ids) {
|
|
16688
16753
|
let n = e.map.rooms[t];
|
|
16689
16754
|
if (!n) continue;
|
|
@@ -16726,9 +16791,9 @@ function ka({ plugins: e = [], title: n = "Mudlet Map Editor" }) {
|
|
|
16726
16791
|
}
|
|
16727
16792
|
};
|
|
16728
16793
|
window.addEventListener("keydown", i), window.addEventListener("keyup", t), window.addEventListener("blur", n);
|
|
16729
|
-
let a = () => l.current?.renderer.fitArea(
|
|
16730
|
-
return window.addEventListener("editor:undo",
|
|
16731
|
-
window.removeEventListener("keydown", i), window.removeEventListener("keyup", t), window.removeEventListener("blur", n), window.removeEventListener("editor:undo",
|
|
16794
|
+
let a = () => l.current?.renderer.fitArea(Na());
|
|
16795
|
+
return window.addEventListener("editor:undo", ie), window.addEventListener("editor:redo", G), window.addEventListener("editor:fit", a), () => {
|
|
16796
|
+
window.removeEventListener("keydown", i), window.removeEventListener("keyup", t), window.removeEventListener("blur", n), window.removeEventListener("editor:undo", ie), window.removeEventListener("editor:redo", G), window.removeEventListener("editor:fit", a);
|
|
16732
16797
|
};
|
|
16733
16798
|
}, []), i(() => {
|
|
16734
16799
|
let e = (e) => {
|
|
@@ -16742,7 +16807,7 @@ function ka({ plugins: e = [], title: n = "Mudlet Map Editor" }) {
|
|
|
16742
16807
|
window.removeEventListener("dragover", e), window.removeEventListener("drop", t);
|
|
16743
16808
|
};
|
|
16744
16809
|
}, []);
|
|
16745
|
-
let
|
|
16810
|
+
let ne = () => {
|
|
16746
16811
|
let e = z.getState();
|
|
16747
16812
|
if (!e.map) return;
|
|
16748
16813
|
let t = e.selection;
|
|
@@ -16908,7 +16973,7 @@ function ka({ plugins: e = [], title: n = "Mudlet Map Editor" }) {
|
|
|
16908
16973
|
return;
|
|
16909
16974
|
}
|
|
16910
16975
|
}
|
|
16911
|
-
},
|
|
16976
|
+
}, re = () => {
|
|
16912
16977
|
let e = z.getState();
|
|
16913
16978
|
if (!e.map || !e.clipboard || e.currentAreaId == null) return;
|
|
16914
16979
|
let t, n;
|
|
@@ -16929,12 +16994,12 @@ function ka({ plugins: e = [], title: n = "Mudlet Map Editor" }) {
|
|
|
16929
16994
|
kind: "room",
|
|
16930
16995
|
ids: r.newIds
|
|
16931
16996
|
},
|
|
16932
|
-
status:
|
|
16997
|
+
status: Ia("pasted", r)
|
|
16933
16998
|
}));
|
|
16934
|
-
},
|
|
16999
|
+
}, ie = () => {
|
|
16935
17000
|
let { changed: e, structural: t } = at(l.current);
|
|
16936
17001
|
e && (l.current?.refresh(), t ? z.bumpStructure() : z.bumpData(), z.setState({ status: r("status.undone") }));
|
|
16937
|
-
},
|
|
17002
|
+
}, G = () => {
|
|
16938
17003
|
let { changed: e, structural: t } = ot(l.current);
|
|
16939
17004
|
e && (l.current?.refresh(), t ? z.bumpStructure() : z.bumpData(), z.setState({ status: r("status.redone") }));
|
|
16940
17005
|
};
|
|
@@ -16951,44 +17016,44 @@ function ka({ plugins: e = [], title: n = "Mudlet Map Editor" }) {
|
|
|
16951
17016
|
!g && /* @__PURE__ */ p(ni, {}),
|
|
16952
17017
|
/* @__PURE__ */ p(Me, {
|
|
16953
17018
|
title: n,
|
|
16954
|
-
logo:
|
|
16955
|
-
transformActions:
|
|
16956
|
-
onHelpClick: () =>
|
|
16957
|
-
onLoadFromUrl: () =>
|
|
17019
|
+
logo: U,
|
|
17020
|
+
transformActions: ee,
|
|
17021
|
+
onHelpClick: () => O(!0),
|
|
17022
|
+
onLoadFromUrl: () => A(!0),
|
|
16958
17023
|
onSave: (t) => {
|
|
16959
17024
|
for (let n of e) n.onMapSave?.(t);
|
|
16960
17025
|
},
|
|
16961
|
-
onSearchClick: () =>
|
|
16962
|
-
onSettingsClick: () =>
|
|
17026
|
+
onSearchClick: () => M((e) => !e),
|
|
17027
|
+
onSettingsClick: () => F(!0)
|
|
16963
17028
|
}),
|
|
16964
17029
|
/* @__PURE__ */ p(Br, {
|
|
16965
17030
|
sceneRef: l,
|
|
16966
|
-
extraTabs:
|
|
16967
|
-
pluginRoomSections:
|
|
17031
|
+
extraTabs: V,
|
|
17032
|
+
pluginRoomSections: H
|
|
16968
17033
|
})
|
|
16969
17034
|
]
|
|
16970
17035
|
}),
|
|
16971
17036
|
/* @__PURE__ */ p(Vr, { sceneRef: l }),
|
|
16972
17037
|
h && /* @__PURE__ */ p(ri, { sceneRef: l }),
|
|
16973
17038
|
e.map((e, n) => /* @__PURE__ */ p(t, { children: e.renderOverlay?.() }, n)),
|
|
16974
|
-
|
|
17039
|
+
j && g && /* @__PURE__ */ m(f, { children: [/* @__PURE__ */ p("div", {
|
|
16975
17040
|
style: {
|
|
16976
17041
|
position: "fixed",
|
|
16977
17042
|
inset: 0,
|
|
16978
17043
|
zIndex: 399
|
|
16979
17044
|
},
|
|
16980
|
-
onMouseDown: () =>
|
|
16981
|
-
}), /* @__PURE__ */ p(Ti, { onClose: () =>
|
|
17045
|
+
onMouseDown: () => M(!1)
|
|
17046
|
+
}), /* @__PURE__ */ p(Ti, { onClose: () => M(!1) })] }),
|
|
16982
17047
|
/* @__PURE__ */ p(Ei, { sceneRef: l }),
|
|
16983
|
-
|
|
16984
|
-
onClose: () =>
|
|
17048
|
+
P && g && /* @__PURE__ */ p(Re, {
|
|
17049
|
+
onClose: () => F(!1),
|
|
16985
17050
|
sceneRef: l
|
|
16986
17051
|
}),
|
|
16987
|
-
|
|
16988
|
-
(
|
|
16989
|
-
initialUrl:
|
|
17052
|
+
D && /* @__PURE__ */ p(ae, { onClose: () => O(!1) }),
|
|
17053
|
+
(k || I) && /* @__PURE__ */ p(ze, {
|
|
17054
|
+
initialUrl: I ?? void 0,
|
|
16990
17055
|
onClose: () => {
|
|
16991
|
-
|
|
17056
|
+
A(!1), L(null);
|
|
16992
17057
|
}
|
|
16993
17058
|
})
|
|
16994
17059
|
]
|
|
@@ -16996,9 +17061,9 @@ function ka({ plugins: e = [], title: n = "Mudlet Map Editor" }) {
|
|
|
16996
17061
|
}
|
|
16997
17062
|
//#endregion
|
|
16998
17063
|
//#region src/editor/mapBytes.ts
|
|
16999
|
-
function
|
|
17064
|
+
function Ra() {
|
|
17000
17065
|
let { map: e } = z.getState();
|
|
17001
17066
|
return e ? H(e) : null;
|
|
17002
17067
|
}
|
|
17003
17068
|
//#endregion
|
|
17004
|
-
export {
|
|
17069
|
+
export { La as App, Ae as LanguageSwitcher, Te as addTranslations, Ee as changeLanguage, De as getCurrentLanguage, Ra as getMapBytes, W as loadUrlIntoStore, X as pushCommand, z as store, B as useEditorState };
|
|
@@ -109,7 +109,7 @@ var n = /* @__PURE__ */ ((e) => (e[e.ES3 = 0] = "ES3", e[e.ES5 = 1] = "ES5", e[e
|
|
|
109
109
|
onlyVisible: !1
|
|
110
110
|
}, {}, {}, i);
|
|
111
111
|
function s() {
|
|
112
|
-
return import("./tsMode-
|
|
112
|
+
return import("./tsMode-BnfSMFGJ.js");
|
|
113
113
|
}
|
|
114
114
|
e.onLanguage("typescript", () => s().then((e) => e.setupTypeScript(a))), e.onLanguage("javascript", () => s().then((e) => e.setupJavaScript(o)));
|
|
115
115
|
//#endregion
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { a as e, c as t, f as n, h as r, o as i, p as a } from "./editor.api2-PX2PsJx9.js";
|
|
2
|
-
import { r as o } from "./monaco.contribution-
|
|
2
|
+
import { r as o } from "./monaco.contribution-CoQcDhVH.js";
|
|
3
3
|
//#region node_modules/monaco-editor/esm/vs/common/workers.js
|
|
4
4
|
function s(e, t) {
|
|
5
5
|
let n = globalThis.MonacoEnvironment;
|
|
@@ -66,7 +66,7 @@ var d = class {
|
|
|
66
66
|
moduleId: "vs/language/typescript/tsWorker",
|
|
67
67
|
createWorker: () => new Worker(new URL(
|
|
68
68
|
/* @vite-ignore */
|
|
69
|
-
"
|
|
69
|
+
"" + new URL("assets/ts.worker-BcKzzBCP.js", import.meta.url).href,
|
|
70
70
|
"" + import.meta.url
|
|
71
71
|
), { type: "module" }),
|
|
72
72
|
label: this._modeId,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mudlet-map-editor",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.21.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Mudlet Map Editor",
|
|
6
6
|
"keywords": [
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"konva": "^10.2.5",
|
|
53
53
|
"monaco-editor": "^0.55.1",
|
|
54
54
|
"mudlet-map-binary-reader": "^0.9.0",
|
|
55
|
-
"mudlet-map-renderer": "
|
|
55
|
+
"mudlet-map-renderer": "^2.3.1",
|
|
56
56
|
"react": "^19.2.5",
|
|
57
57
|
"react-dom": "^19.2.5",
|
|
58
58
|
"react-i18next": "^17.0.6"
|