mudlet-map-editor 0.5.0 → 0.6.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/components/SpreadShrinkPopup.d.ts +8 -0
- package/dist-lib/editor/effects/GhostRoomsEffect.d.ts +21 -0
- package/dist-lib/editor/effects/SelectionCenterEffect.d.ts +19 -0
- package/dist-lib/editor/store.d.ts +7 -0
- package/dist-lib/index.js +1107 -764
- package/dist-lib/styles.css +1 -1
- package/package.json +1 -1
package/dist-lib/index.js
CHANGED
|
@@ -76,7 +76,8 @@ var T = C(), E = {
|
|
|
76
76
|
activeSwatchSetId: T.activeSwatchSetId,
|
|
77
77
|
activeSwatchId: T.activeSwatchId,
|
|
78
78
|
swatchPaletteOpen: !1,
|
|
79
|
-
sessionId: null
|
|
79
|
+
sessionId: null,
|
|
80
|
+
spreadShrink: null
|
|
80
81
|
}, D = new class {
|
|
81
82
|
state = E;
|
|
82
83
|
listeners = /* @__PURE__ */ new Set();
|
|
@@ -104,7 +105,7 @@ function O(e) {
|
|
|
104
105
|
//#endregion
|
|
105
106
|
//#region node_modules/vite-plugin-node-polyfills/shims/buffer/dist/index.js
|
|
106
107
|
var k = {}, A = {};
|
|
107
|
-
A.byteLength = R, A.toByteArray =
|
|
108
|
+
A.byteLength = R, A.toByteArray = z, A.fromByteArray = te;
|
|
108
109
|
for (var j = [], M = [], N = typeof Uint8Array < "u" ? Uint8Array : Array, P = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", F = 0, I = P.length; F < I; ++F) j[F] = P[F], M[P.charCodeAt(F)] = F;
|
|
109
110
|
M[45] = 62, M[95] = 63;
|
|
110
111
|
function L(e) {
|
|
@@ -119,27 +120,27 @@ function R(e) {
|
|
|
119
120
|
var t = L(e), n = t[0], r = t[1];
|
|
120
121
|
return (n + r) * 3 / 4 - r;
|
|
121
122
|
}
|
|
122
|
-
function
|
|
123
|
+
function ee(e, t, n) {
|
|
123
124
|
return (t + n) * 3 / 4 - n;
|
|
124
125
|
}
|
|
125
|
-
function
|
|
126
|
-
var t, n = L(e), r = n[0], i = n[1], a = new N(
|
|
126
|
+
function z(e) {
|
|
127
|
+
var t, n = L(e), r = n[0], i = n[1], a = new N(ee(e, r, i)), o = 0, s = i > 0 ? r - 4 : r, c;
|
|
127
128
|
for (c = 0; c < s; c += 4) t = M[e.charCodeAt(c)] << 18 | M[e.charCodeAt(c + 1)] << 12 | M[e.charCodeAt(c + 2)] << 6 | M[e.charCodeAt(c + 3)], a[o++] = t >> 16 & 255, a[o++] = t >> 8 & 255, a[o++] = t & 255;
|
|
128
129
|
return i === 2 && (t = M[e.charCodeAt(c)] << 2 | M[e.charCodeAt(c + 1)] >> 4, a[o++] = t & 255), i === 1 && (t = M[e.charCodeAt(c)] << 10 | M[e.charCodeAt(c + 1)] << 4 | M[e.charCodeAt(c + 2)] >> 2, a[o++] = t >> 8 & 255, a[o++] = t & 255), a;
|
|
129
130
|
}
|
|
130
|
-
function
|
|
131
|
+
function B(e) {
|
|
131
132
|
return j[e >> 18 & 63] + j[e >> 12 & 63] + j[e >> 6 & 63] + j[e & 63];
|
|
132
133
|
}
|
|
133
|
-
function
|
|
134
|
-
for (var r, i = [], a = t; a < n; a += 3) r = (e[a] << 16 & 16711680) + (e[a + 1] << 8 & 65280) + (e[a + 2] & 255), i.push(
|
|
134
|
+
function V(e, t, n) {
|
|
135
|
+
for (var r, i = [], a = t; a < n; a += 3) r = (e[a] << 16 & 16711680) + (e[a + 1] << 8 & 65280) + (e[a + 2] & 255), i.push(B(r));
|
|
135
136
|
return i.join("");
|
|
136
137
|
}
|
|
137
|
-
function
|
|
138
|
-
for (var t, n = e.length, r = n % 3, i = [], a = 16383, o = 0, s = n - r; o < s; o += a) i.push(
|
|
138
|
+
function te(e) {
|
|
139
|
+
for (var t, n = e.length, r = n % 3, i = [], a = 16383, o = 0, s = n - r; o < s; o += a) i.push(V(e, o, o + a > s ? s : o + a));
|
|
139
140
|
return r === 1 ? (t = e[n - 1], i.push(j[t >> 2] + j[t << 4 & 63] + "==")) : r === 2 && (t = (e[n - 2] << 8) + e[n - 1], i.push(j[t >> 10] + j[t >> 4 & 63] + j[t << 2 & 63] + "=")), i.join("");
|
|
140
141
|
}
|
|
141
|
-
var
|
|
142
|
-
|
|
142
|
+
var ne = {};
|
|
143
|
+
ne.read = function(e, t, n, r, i) {
|
|
143
144
|
var a, o, s = i * 8 - r - 1, c = (1 << s) - 1, l = c >> 1, u = -7, d = n ? i - 1 : 0, f = n ? -1 : 1, p = e[t + d];
|
|
144
145
|
for (d += f, a = p & (1 << -u) - 1, p >>= -u, u += s; u > 0; a = a * 256 + e[t + d], d += f, u -= 8);
|
|
145
146
|
for (o = a & (1 << -u) - 1, a >>= -u, u += r; u > 0; o = o * 256 + e[t + d], d += f, u -= 8);
|
|
@@ -147,13 +148,13 @@ te.read = function(e, t, n, r, i) {
|
|
|
147
148
|
else if (a === c) return o ? NaN : (p ? -1 : 1) * Infinity;
|
|
148
149
|
else o += 2 ** r, a -= l;
|
|
149
150
|
return (p ? -1 : 1) * o * 2 ** (a - r);
|
|
150
|
-
},
|
|
151
|
+
}, ne.write = function(e, t, n, r, i, a) {
|
|
151
152
|
var o, s, c, l = a * 8 - i - 1, u = (1 << l) - 1, d = u >> 1, f = i === 23 ? 2 ** -24 - 2 ** -77 : 0, p = r ? 0 : a - 1, m = r ? 1 : -1, h = +(t < 0 || t === 0 && 1 / t < 0);
|
|
152
153
|
for (t = Math.abs(t), isNaN(t) || t === Infinity ? (s = +!!isNaN(t), o = u) : (o = Math.floor(Math.log(t) / Math.LN2), t * (c = 2 ** -o) < 1 && (o--, c *= 2), o + d >= 1 ? t += f / c : t += f * 2 ** (1 - d), t * c >= 2 && (o++, c /= 2), o + d >= u ? (s = 0, o = u) : o + d >= 1 ? (s = (t * c - 1) * 2 ** i, o += d) : (s = t * 2 ** (d - 1) * 2 ** i, o = 0)); i >= 8; e[n + p] = s & 255, p += m, s /= 256, i -= 8);
|
|
153
154
|
for (o = o << i | s, l += i; l > 0; e[n + p] = o & 255, p += m, o /= 256, l -= 8);
|
|
154
155
|
e[n + p - m] |= h * 128;
|
|
155
156
|
}, (function(e) {
|
|
156
|
-
let t = A, n =
|
|
157
|
+
let t = A, n = ne, r = typeof Symbol == "function" && typeof Symbol.for == "function" ? Symbol.for("nodejs.util.inspect.custom") : null;
|
|
157
158
|
e.Buffer = u, e.SlowBuffer = x, e.INSPECT_MAX_BYTES = 50;
|
|
158
159
|
let i = 2147483647;
|
|
159
160
|
e.kMaxLength = i;
|
|
@@ -335,7 +336,7 @@ te.read = function(e, t, n, r, i) {
|
|
|
335
336
|
let r = !1;
|
|
336
337
|
if ((t === void 0 || t < 0) && (t = 0), t > this.length || ((n === void 0 || n > this.length) && (n = this.length), n <= 0) || (n >>>= 0, t >>>= 0, n <= t)) return "";
|
|
337
338
|
for (e ||= "utf8";;) switch (e) {
|
|
338
|
-
case "hex": return
|
|
339
|
+
case "hex": return ee(this, t, n);
|
|
339
340
|
case "utf8":
|
|
340
341
|
case "utf-8": return P(this, t, n);
|
|
341
342
|
case "ascii": return L(this, t, n);
|
|
@@ -345,7 +346,7 @@ te.read = function(e, t, n, r, i) {
|
|
|
345
346
|
case "ucs2":
|
|
346
347
|
case "ucs-2":
|
|
347
348
|
case "utf16le":
|
|
348
|
-
case "utf-16le": return
|
|
349
|
+
case "utf-16le": return z(this, t, n);
|
|
349
350
|
default:
|
|
350
351
|
if (r) throw TypeError("Unknown encoding: " + e);
|
|
351
352
|
e = (e + "").toLowerCase(), r = !0;
|
|
@@ -541,14 +542,14 @@ te.read = function(e, t, n, r, i) {
|
|
|
541
542
|
for (let i = t; i < n; ++i) r += String.fromCharCode(e[i]);
|
|
542
543
|
return r;
|
|
543
544
|
}
|
|
544
|
-
function
|
|
545
|
+
function ee(e, t, n) {
|
|
545
546
|
let r = e.length;
|
|
546
547
|
(!t || t < 0) && (t = 0), (!n || n < 0 || n > r) && (n = r);
|
|
547
548
|
let i = "";
|
|
548
549
|
for (let r = t; r < n; ++r) i += _e[e[r]];
|
|
549
550
|
return i;
|
|
550
551
|
}
|
|
551
|
-
function
|
|
552
|
+
function z(e, t, n) {
|
|
552
553
|
let r = e.slice(t, n), i = "";
|
|
553
554
|
for (let e = 0; e < r.length - 1; e += 2) i += String.fromCharCode(r[e] + r[e + 1] * 256);
|
|
554
555
|
return i;
|
|
@@ -559,30 +560,30 @@ te.read = function(e, t, n, r, i) {
|
|
|
559
560
|
let r = this.subarray(e, t);
|
|
560
561
|
return Object.setPrototypeOf(r, u.prototype), r;
|
|
561
562
|
};
|
|
562
|
-
function
|
|
563
|
+
function B(e, t, n) {
|
|
563
564
|
if (e % 1 != 0 || e < 0) throw RangeError("offset is not uint");
|
|
564
565
|
if (e + t > n) throw RangeError("Trying to access beyond buffer length");
|
|
565
566
|
}
|
|
566
567
|
u.prototype.readUintLE = u.prototype.readUIntLE = function(e, t, n) {
|
|
567
|
-
e >>>= 0, t >>>= 0, n ||
|
|
568
|
+
e >>>= 0, t >>>= 0, n || B(e, t, this.length);
|
|
568
569
|
let r = this[e], i = 1, a = 0;
|
|
569
570
|
for (; ++a < t && (i *= 256);) r += this[e + a] * i;
|
|
570
571
|
return r;
|
|
571
572
|
}, u.prototype.readUintBE = u.prototype.readUIntBE = function(e, t, n) {
|
|
572
|
-
e >>>= 0, t >>>= 0, n ||
|
|
573
|
+
e >>>= 0, t >>>= 0, n || B(e, t, this.length);
|
|
573
574
|
let r = this[e + --t], i = 1;
|
|
574
575
|
for (; t > 0 && (i *= 256);) r += this[e + --t] * i;
|
|
575
576
|
return r;
|
|
576
577
|
}, u.prototype.readUint8 = u.prototype.readUInt8 = function(e, t) {
|
|
577
|
-
return e >>>= 0, t ||
|
|
578
|
+
return e >>>= 0, t || B(e, 1, this.length), this[e];
|
|
578
579
|
}, u.prototype.readUint16LE = u.prototype.readUInt16LE = function(e, t) {
|
|
579
|
-
return e >>>= 0, t ||
|
|
580
|
+
return e >>>= 0, t || B(e, 2, this.length), this[e] | this[e + 1] << 8;
|
|
580
581
|
}, u.prototype.readUint16BE = u.prototype.readUInt16BE = function(e, t) {
|
|
581
|
-
return e >>>= 0, t ||
|
|
582
|
+
return e >>>= 0, t || B(e, 2, this.length), this[e] << 8 | this[e + 1];
|
|
582
583
|
}, u.prototype.readUint32LE = u.prototype.readUInt32LE = function(e, t) {
|
|
583
|
-
return e >>>= 0, t ||
|
|
584
|
+
return e >>>= 0, t || B(e, 4, this.length), (this[e] | this[e + 1] << 8 | this[e + 2] << 16) + this[e + 3] * 16777216;
|
|
584
585
|
}, u.prototype.readUint32BE = u.prototype.readUInt32BE = function(e, t) {
|
|
585
|
-
return e >>>= 0, t ||
|
|
586
|
+
return e >>>= 0, t || B(e, 4, this.length), this[e] * 16777216 + (this[e + 1] << 16 | this[e + 2] << 8 | this[e + 3]);
|
|
586
587
|
}, u.prototype.readBigUInt64LE = ve(function(e) {
|
|
587
588
|
e >>>= 0, ce(e, "offset");
|
|
588
589
|
let t = this[e], n = this[e + 7];
|
|
@@ -596,29 +597,29 @@ te.read = function(e, t, n, r, i) {
|
|
|
596
597
|
let r = t * 2 ** 24 + this[++e] * 2 ** 16 + this[++e] * 2 ** 8 + this[++e], i = this[++e] * 2 ** 24 + this[++e] * 2 ** 16 + this[++e] * 2 ** 8 + n;
|
|
597
598
|
return (BigInt(r) << BigInt(32)) + BigInt(i);
|
|
598
599
|
}), u.prototype.readIntLE = function(e, t, n) {
|
|
599
|
-
e >>>= 0, t >>>= 0, n ||
|
|
600
|
+
e >>>= 0, t >>>= 0, n || B(e, t, this.length);
|
|
600
601
|
let r = this[e], i = 1, a = 0;
|
|
601
602
|
for (; ++a < t && (i *= 256);) r += this[e + a] * i;
|
|
602
603
|
return i *= 128, r >= i && (r -= 2 ** (8 * t)), r;
|
|
603
604
|
}, u.prototype.readIntBE = function(e, t, n) {
|
|
604
|
-
e >>>= 0, t >>>= 0, n ||
|
|
605
|
+
e >>>= 0, t >>>= 0, n || B(e, t, this.length);
|
|
605
606
|
let r = t, i = 1, a = this[e + --r];
|
|
606
607
|
for (; r > 0 && (i *= 256);) a += this[e + --r] * i;
|
|
607
608
|
return i *= 128, a >= i && (a -= 2 ** (8 * t)), a;
|
|
608
609
|
}, u.prototype.readInt8 = function(e, t) {
|
|
609
|
-
return e >>>= 0, t ||
|
|
610
|
+
return e >>>= 0, t || B(e, 1, this.length), this[e] & 128 ? (255 - this[e] + 1) * -1 : this[e];
|
|
610
611
|
}, u.prototype.readInt16LE = function(e, t) {
|
|
611
|
-
e >>>= 0, t ||
|
|
612
|
+
e >>>= 0, t || B(e, 2, this.length);
|
|
612
613
|
let n = this[e] | this[e + 1] << 8;
|
|
613
614
|
return n & 32768 ? n | 4294901760 : n;
|
|
614
615
|
}, u.prototype.readInt16BE = function(e, t) {
|
|
615
|
-
e >>>= 0, t ||
|
|
616
|
+
e >>>= 0, t || B(e, 2, this.length);
|
|
616
617
|
let n = this[e + 1] | this[e] << 8;
|
|
617
618
|
return n & 32768 ? n | 4294901760 : n;
|
|
618
619
|
}, u.prototype.readInt32LE = function(e, t) {
|
|
619
|
-
return e >>>= 0, t ||
|
|
620
|
+
return e >>>= 0, t || B(e, 4, this.length), this[e] | this[e + 1] << 8 | this[e + 2] << 16 | this[e + 3] << 24;
|
|
620
621
|
}, u.prototype.readInt32BE = function(e, t) {
|
|
621
|
-
return e >>>= 0, t ||
|
|
622
|
+
return e >>>= 0, t || B(e, 4, this.length), this[e] << 24 | this[e + 1] << 16 | this[e + 2] << 8 | this[e + 3];
|
|
622
623
|
}, u.prototype.readBigInt64LE = ve(function(e) {
|
|
623
624
|
e >>>= 0, ce(e, "offset");
|
|
624
625
|
let t = this[e], n = this[e + 7];
|
|
@@ -632,15 +633,15 @@ te.read = function(e, t, n, r, i) {
|
|
|
632
633
|
let r = (t << 24) + this[++e] * 2 ** 16 + this[++e] * 2 ** 8 + this[++e];
|
|
633
634
|
return (BigInt(r) << BigInt(32)) + BigInt(this[++e] * 2 ** 24 + this[++e] * 2 ** 16 + this[++e] * 2 ** 8 + n);
|
|
634
635
|
}), u.prototype.readFloatLE = function(e, t) {
|
|
635
|
-
return e >>>= 0, t ||
|
|
636
|
+
return e >>>= 0, t || B(e, 4, this.length), n.read(this, e, !0, 23, 4);
|
|
636
637
|
}, u.prototype.readFloatBE = function(e, t) {
|
|
637
|
-
return e >>>= 0, t ||
|
|
638
|
+
return e >>>= 0, t || B(e, 4, this.length), n.read(this, e, !1, 23, 4);
|
|
638
639
|
}, u.prototype.readDoubleLE = function(e, t) {
|
|
639
|
-
return e >>>= 0, t ||
|
|
640
|
+
return e >>>= 0, t || B(e, 8, this.length), n.read(this, e, !0, 52, 8);
|
|
640
641
|
}, u.prototype.readDoubleBE = function(e, t) {
|
|
641
|
-
return e >>>= 0, t ||
|
|
642
|
+
return e >>>= 0, t || B(e, 8, this.length), n.read(this, e, !1, 52, 8);
|
|
642
643
|
};
|
|
643
|
-
function
|
|
644
|
+
function V(e, t, n, r, i, a) {
|
|
644
645
|
if (!u.isBuffer(e)) throw TypeError("\"buffer\" argument must be a Buffer instance");
|
|
645
646
|
if (t > i || t < a) throw RangeError("\"value\" argument is out of bounds");
|
|
646
647
|
if (n + r > e.length) throw RangeError("Index out of range");
|
|
@@ -648,7 +649,7 @@ te.read = function(e, t, n, r, i) {
|
|
|
648
649
|
u.prototype.writeUintLE = u.prototype.writeUIntLE = function(e, t, n, r) {
|
|
649
650
|
if (e = +e, t >>>= 0, n >>>= 0, !r) {
|
|
650
651
|
let r = 2 ** (8 * n) - 1;
|
|
651
|
-
|
|
652
|
+
V(this, e, t, n, r, 0);
|
|
652
653
|
}
|
|
653
654
|
let i = 1, a = 0;
|
|
654
655
|
for (this[t] = e & 255; ++a < n && (i *= 256);) this[t + a] = e / i & 255;
|
|
@@ -656,30 +657,30 @@ te.read = function(e, t, n, r, i) {
|
|
|
656
657
|
}, u.prototype.writeUintBE = u.prototype.writeUIntBE = function(e, t, n, r) {
|
|
657
658
|
if (e = +e, t >>>= 0, n >>>= 0, !r) {
|
|
658
659
|
let r = 2 ** (8 * n) - 1;
|
|
659
|
-
|
|
660
|
+
V(this, e, t, n, r, 0);
|
|
660
661
|
}
|
|
661
662
|
let i = n - 1, a = 1;
|
|
662
663
|
for (this[t + i] = e & 255; --i >= 0 && (a *= 256);) this[t + i] = e / a & 255;
|
|
663
664
|
return t + n;
|
|
664
665
|
}, u.prototype.writeUint8 = u.prototype.writeUInt8 = function(e, t, n) {
|
|
665
|
-
return e = +e, t >>>= 0, n ||
|
|
666
|
+
return e = +e, t >>>= 0, n || V(this, e, t, 1, 255, 0), this[t] = e & 255, t + 1;
|
|
666
667
|
}, u.prototype.writeUint16LE = u.prototype.writeUInt16LE = function(e, t, n) {
|
|
667
|
-
return e = +e, t >>>= 0, n ||
|
|
668
|
+
return e = +e, t >>>= 0, n || V(this, e, t, 2, 65535, 0), this[t] = e & 255, this[t + 1] = e >>> 8, t + 2;
|
|
668
669
|
}, u.prototype.writeUint16BE = u.prototype.writeUInt16BE = function(e, t, n) {
|
|
669
|
-
return e = +e, t >>>= 0, n ||
|
|
670
|
+
return e = +e, t >>>= 0, n || V(this, e, t, 2, 65535, 0), this[t] = e >>> 8, this[t + 1] = e & 255, t + 2;
|
|
670
671
|
}, u.prototype.writeUint32LE = u.prototype.writeUInt32LE = function(e, t, n) {
|
|
671
|
-
return e = +e, t >>>= 0, n ||
|
|
672
|
+
return e = +e, t >>>= 0, n || V(this, e, t, 4, 4294967295, 0), this[t + 3] = e >>> 24, this[t + 2] = e >>> 16, this[t + 1] = e >>> 8, this[t] = e & 255, t + 4;
|
|
672
673
|
}, u.prototype.writeUint32BE = u.prototype.writeUInt32BE = function(e, t, n) {
|
|
673
|
-
return e = +e, t >>>= 0, n ||
|
|
674
|
+
return e = +e, t >>>= 0, n || V(this, e, t, 4, 4294967295, 0), this[t] = e >>> 24, this[t + 1] = e >>> 16, this[t + 2] = e >>> 8, this[t + 3] = e & 255, t + 4;
|
|
674
675
|
};
|
|
675
|
-
function
|
|
676
|
+
function te(e, t, n, r, i) {
|
|
676
677
|
se(t, r, i, e, n, 7);
|
|
677
678
|
let a = Number(t & BigInt(4294967295));
|
|
678
679
|
e[n++] = a, a >>= 8, e[n++] = a, a >>= 8, e[n++] = a, a >>= 8, e[n++] = a;
|
|
679
680
|
let o = Number(t >> BigInt(32) & BigInt(4294967295));
|
|
680
681
|
return e[n++] = o, o >>= 8, e[n++] = o, o >>= 8, e[n++] = o, o >>= 8, e[n++] = o, n;
|
|
681
682
|
}
|
|
682
|
-
function
|
|
683
|
+
function re(e, t, n, r, i) {
|
|
683
684
|
se(t, r, i, e, n, 7);
|
|
684
685
|
let a = Number(t & BigInt(4294967295));
|
|
685
686
|
e[n + 7] = a, a >>= 8, e[n + 6] = a, a >>= 8, e[n + 5] = a, a >>= 8, e[n + 4] = a;
|
|
@@ -687,13 +688,13 @@ te.read = function(e, t, n, r, i) {
|
|
|
687
688
|
return e[n + 3] = o, o >>= 8, e[n + 2] = o, o >>= 8, e[n + 1] = o, o >>= 8, e[n] = o, n + 8;
|
|
688
689
|
}
|
|
689
690
|
u.prototype.writeBigUInt64LE = ve(function(e, t = 0) {
|
|
690
|
-
return
|
|
691
|
+
return te(this, e, t, BigInt(0), BigInt("0xffffffffffffffff"));
|
|
691
692
|
}), u.prototype.writeBigUInt64BE = ve(function(e, t = 0) {
|
|
692
|
-
return
|
|
693
|
+
return re(this, e, t, BigInt(0), BigInt("0xffffffffffffffff"));
|
|
693
694
|
}), u.prototype.writeIntLE = function(e, t, n, r) {
|
|
694
695
|
if (e = +e, t >>>= 0, !r) {
|
|
695
696
|
let r = 2 ** (8 * n - 1);
|
|
696
|
-
|
|
697
|
+
V(this, e, t, n, r - 1, -r);
|
|
697
698
|
}
|
|
698
699
|
let i = 0, a = 1, o = 0;
|
|
699
700
|
for (this[t] = e & 255; ++i < n && (a *= 256);) e < 0 && o === 0 && this[t + i - 1] !== 0 && (o = 1), this[t + i] = (e / a >> 0) - o & 255;
|
|
@@ -701,44 +702,44 @@ te.read = function(e, t, n, r, i) {
|
|
|
701
702
|
}, u.prototype.writeIntBE = function(e, t, n, r) {
|
|
702
703
|
if (e = +e, t >>>= 0, !r) {
|
|
703
704
|
let r = 2 ** (8 * n - 1);
|
|
704
|
-
|
|
705
|
+
V(this, e, t, n, r - 1, -r);
|
|
705
706
|
}
|
|
706
707
|
let i = n - 1, a = 1, o = 0;
|
|
707
708
|
for (this[t + i] = e & 255; --i >= 0 && (a *= 256);) e < 0 && o === 0 && this[t + i + 1] !== 0 && (o = 1), this[t + i] = (e / a >> 0) - o & 255;
|
|
708
709
|
return t + n;
|
|
709
710
|
}, u.prototype.writeInt8 = function(e, t, n) {
|
|
710
|
-
return e = +e, t >>>= 0, n ||
|
|
711
|
+
return e = +e, t >>>= 0, n || V(this, e, t, 1, 127, -128), e < 0 && (e = 255 + e + 1), this[t] = e & 255, t + 1;
|
|
711
712
|
}, u.prototype.writeInt16LE = function(e, t, n) {
|
|
712
|
-
return e = +e, t >>>= 0, n ||
|
|
713
|
+
return e = +e, t >>>= 0, n || V(this, e, t, 2, 32767, -32768), this[t] = e & 255, this[t + 1] = e >>> 8, t + 2;
|
|
713
714
|
}, u.prototype.writeInt16BE = function(e, t, n) {
|
|
714
|
-
return e = +e, t >>>= 0, n ||
|
|
715
|
+
return e = +e, t >>>= 0, n || V(this, e, t, 2, 32767, -32768), this[t] = e >>> 8, this[t + 1] = e & 255, t + 2;
|
|
715
716
|
}, u.prototype.writeInt32LE = function(e, t, n) {
|
|
716
|
-
return e = +e, t >>>= 0, n ||
|
|
717
|
+
return e = +e, t >>>= 0, n || V(this, e, t, 4, 2147483647, -2147483648), this[t] = e & 255, this[t + 1] = e >>> 8, this[t + 2] = e >>> 16, this[t + 3] = e >>> 24, t + 4;
|
|
717
718
|
}, u.prototype.writeInt32BE = function(e, t, n) {
|
|
718
|
-
return e = +e, t >>>= 0, n ||
|
|
719
|
+
return e = +e, t >>>= 0, n || V(this, e, t, 4, 2147483647, -2147483648), e < 0 && (e = 4294967295 + e + 1), this[t] = e >>> 24, this[t + 1] = e >>> 16, this[t + 2] = e >>> 8, this[t + 3] = e & 255, t + 4;
|
|
719
720
|
}, u.prototype.writeBigInt64LE = ve(function(e, t = 0) {
|
|
720
|
-
return
|
|
721
|
+
return te(this, e, t, -BigInt("0x8000000000000000"), BigInt("0x7fffffffffffffff"));
|
|
721
722
|
}), u.prototype.writeBigInt64BE = ve(function(e, t = 0) {
|
|
722
|
-
return
|
|
723
|
+
return re(this, e, t, -BigInt("0x8000000000000000"), BigInt("0x7fffffffffffffff"));
|
|
723
724
|
});
|
|
724
|
-
function
|
|
725
|
+
function ie(e, t, n, r, i, a) {
|
|
725
726
|
if (n + r > e.length || n < 0) throw RangeError("Index out of range");
|
|
726
727
|
}
|
|
727
|
-
function
|
|
728
|
-
return t = +t, r >>>= 0, a ||
|
|
728
|
+
function H(e, t, r, i, a) {
|
|
729
|
+
return t = +t, r >>>= 0, a || ie(e, t, r, 4), n.write(e, t, r, i, 23, 4), r + 4;
|
|
729
730
|
}
|
|
730
731
|
u.prototype.writeFloatLE = function(e, t, n) {
|
|
731
|
-
return
|
|
732
|
+
return H(this, e, t, !0, n);
|
|
732
733
|
}, u.prototype.writeFloatBE = function(e, t, n) {
|
|
733
|
-
return
|
|
734
|
+
return H(this, e, t, !1, n);
|
|
734
735
|
};
|
|
735
|
-
function
|
|
736
|
-
return t = +t, r >>>= 0, a ||
|
|
736
|
+
function U(e, t, r, i, a) {
|
|
737
|
+
return t = +t, r >>>= 0, a || ie(e, t, r, 8), n.write(e, t, r, i, 52, 8), r + 8;
|
|
737
738
|
}
|
|
738
739
|
u.prototype.writeDoubleLE = function(e, t, n) {
|
|
739
|
-
return
|
|
740
|
+
return U(this, e, t, !0, n);
|
|
740
741
|
}, u.prototype.writeDoubleBE = function(e, t, n) {
|
|
741
|
-
return
|
|
742
|
+
return U(this, e, t, !1, n);
|
|
742
743
|
}, u.prototype.copy = function(e, t, n, r) {
|
|
743
744
|
if (!u.isBuffer(e)) throw TypeError("argument should be a Buffer");
|
|
744
745
|
if (n ||= 0, !r && r !== 0 && (r = this.length), t >= e.length && (t = e.length), t ||= 0, r > 0 && r < n && (r = n), r === n || e.length === 0 || this.length === 0) return 0;
|
|
@@ -769,9 +770,9 @@ te.read = function(e, t, n, r, i) {
|
|
|
769
770
|
}
|
|
770
771
|
return this;
|
|
771
772
|
};
|
|
772
|
-
let
|
|
773
|
-
function
|
|
774
|
-
|
|
773
|
+
let W = {};
|
|
774
|
+
function G(e, t, n) {
|
|
775
|
+
W[e] = class extends n {
|
|
775
776
|
constructor() {
|
|
776
777
|
super(), Object.defineProperty(this, "message", {
|
|
777
778
|
value: t.apply(this, arguments),
|
|
@@ -795,11 +796,11 @@ te.read = function(e, t, n, r, i) {
|
|
|
795
796
|
}
|
|
796
797
|
};
|
|
797
798
|
}
|
|
798
|
-
|
|
799
|
+
G("ERR_BUFFER_OUT_OF_BOUNDS", function(e) {
|
|
799
800
|
return e ? `${e} is outside of buffer bounds` : "Attempt to access memory outside buffer bounds";
|
|
800
|
-
}, RangeError),
|
|
801
|
+
}, RangeError), G("ERR_INVALID_ARG_TYPE", function(e, t) {
|
|
801
802
|
return `The "${e}" argument must be of type number. Received type ${typeof t}`;
|
|
802
|
-
}, TypeError),
|
|
803
|
+
}, TypeError), G("ERR_OUT_OF_RANGE", function(e, t, n) {
|
|
803
804
|
let r = `The value of "${e}" is out of range.`, i = n;
|
|
804
805
|
return Number.isInteger(n) && Math.abs(n) > 2 ** 32 ? i = ae(String(n)) : typeof n == "bigint" && (i = String(n), (n > BigInt(2) ** BigInt(32) || n < -(BigInt(2) ** BigInt(32))) && (i = ae(i)), i += "n"), r += ` It must be ${t}. Received ${i}`, r;
|
|
805
806
|
}, RangeError);
|
|
@@ -814,15 +815,15 @@ te.read = function(e, t, n, r, i) {
|
|
|
814
815
|
function se(e, t, n, r, i, a) {
|
|
815
816
|
if (e > n || e < t) {
|
|
816
817
|
let r = typeof t == "bigint" ? "n" : "", i;
|
|
817
|
-
throw i = a > 3 ? t === 0 || t === BigInt(0) ? `>= 0${r} and < 2${r} ** ${(a + 1) * 8}${r}` : `>= -(2${r} ** ${(a + 1) * 8 - 1}${r}) and < 2 ** ${(a + 1) * 8 - 1}${r}` : `>= ${t}${r} and <= ${n}${r}`, new
|
|
818
|
+
throw i = a > 3 ? t === 0 || t === BigInt(0) ? `>= 0${r} and < 2${r} ** ${(a + 1) * 8}${r}` : `>= -(2${r} ** ${(a + 1) * 8 - 1}${r}) and < 2 ** ${(a + 1) * 8 - 1}${r}` : `>= ${t}${r} and <= ${n}${r}`, new W.ERR_OUT_OF_RANGE("value", i, e);
|
|
818
819
|
}
|
|
819
820
|
oe(r, i, a);
|
|
820
821
|
}
|
|
821
822
|
function ce(e, t) {
|
|
822
|
-
if (typeof e != "number") throw new
|
|
823
|
+
if (typeof e != "number") throw new W.ERR_INVALID_ARG_TYPE(t, "number", e);
|
|
823
824
|
}
|
|
824
825
|
function le(e, t, n) {
|
|
825
|
-
throw Math.floor(e) === e ? t < 0 ? new
|
|
826
|
+
throw Math.floor(e) === e ? t < 0 ? new W.ERR_BUFFER_OUT_OF_BOUNDS() : new W.ERR_OUT_OF_RANGE(n || "offset", `>= ${+!!n} and <= ${t}`, e) : (ce(e, n), new W.ERR_OUT_OF_RANGE(n || "offset", "an integer", e));
|
|
826
827
|
}
|
|
827
828
|
let ue = /[^+/0-9A-Za-z-_]/g;
|
|
828
829
|
function de(e) {
|
|
@@ -907,20 +908,20 @@ te.read = function(e, t, n, r, i) {
|
|
|
907
908
|
throw Error("BigInt not supported");
|
|
908
909
|
}
|
|
909
910
|
})(k), k.Buffer, k.Blob, k.BlobOptions;
|
|
910
|
-
var
|
|
911
|
+
var re = k.Buffer;
|
|
911
912
|
k.File, k.FileOptions, k.INSPECT_MAX_BYTES, k.SlowBuffer, k.TranscodeEncoding, k.atob, k.btoa, k.constants, k.isAscii, k.isUtf8, k.kMaxLength, k.kStringMaxLength, k.resolveObjectURL, k.transcode;
|
|
912
913
|
//#endregion
|
|
913
914
|
//#region src/mapIO.ts
|
|
914
|
-
function
|
|
915
|
-
return o(
|
|
915
|
+
function ie(e) {
|
|
916
|
+
return o(re.from(e));
|
|
916
917
|
}
|
|
917
|
-
function
|
|
918
|
+
function H(e) {
|
|
918
919
|
return new Uint8Array(c(e));
|
|
919
920
|
}
|
|
920
|
-
function
|
|
921
|
+
function U(e) {
|
|
921
922
|
return s(e);
|
|
922
923
|
}
|
|
923
|
-
function
|
|
924
|
+
function W() {
|
|
924
925
|
return {
|
|
925
926
|
version: 20,
|
|
926
927
|
rooms: {},
|
|
@@ -970,7 +971,7 @@ function G() {
|
|
|
970
971
|
}
|
|
971
972
|
//#endregion
|
|
972
973
|
//#region src/editor/loadFile.ts
|
|
973
|
-
async function
|
|
974
|
+
async function G(e, t) {
|
|
974
975
|
try {
|
|
975
976
|
D.setState({ status: "Fetching…" });
|
|
976
977
|
let n = await fetch(e);
|
|
@@ -988,7 +989,7 @@ async function ie(e, t) {
|
|
|
988
989
|
}
|
|
989
990
|
let s = new Uint8Array(o), c = 0;
|
|
990
991
|
for (let e of a) s.set(e, c), c += e.length;
|
|
991
|
-
let l = e.split("/").pop()?.split("?")[0] || "map.dat", u =
|
|
992
|
+
let l = e.split("/").pop()?.split("?")[0] || "map.dat", u = ie(s.buffer), d = Number(Object.keys(u.areaNames)[0] ?? -1), f = Number.isNaN(d) ? null : d;
|
|
992
993
|
D.setState({
|
|
993
994
|
map: u,
|
|
994
995
|
loaded: { fileName: l },
|
|
@@ -1010,7 +1011,7 @@ async function ie(e, t) {
|
|
|
1010
1011
|
async function ae(e) {
|
|
1011
1012
|
try {
|
|
1012
1013
|
D.setState({ status: `Reading ${e.name}…` });
|
|
1013
|
-
let t =
|
|
1014
|
+
let t = ie(await e.arrayBuffer()), n = Number(Object.keys(t.areaNames)[0] ?? -1), r = Number.isNaN(n) ? null : n;
|
|
1014
1015
|
D.setState({
|
|
1015
1016
|
map: t,
|
|
1016
1017
|
loaded: { fileName: e.name },
|
|
@@ -1306,7 +1307,7 @@ function ue({ title: e = "Mudlet Map Editor", onHelpClick: t, onLoadFromUrl: a,
|
|
|
1306
1307
|
l,
|
|
1307
1308
|
h,
|
|
1308
1309
|
P
|
|
1309
|
-
]), L = r(null), [R,
|
|
1310
|
+
]), L = r(null), [R, ee] = i(""), z = () => {
|
|
1310
1311
|
let e = parseInt(R, 10);
|
|
1311
1312
|
if (Number.isNaN(e)) return;
|
|
1312
1313
|
let t = D.getState();
|
|
@@ -1328,9 +1329,9 @@ function ue({ title: e = "Mudlet Map Editor", onHelpClick: t, onLoadFromUrl: a,
|
|
|
1328
1329
|
ids: [e]
|
|
1329
1330
|
},
|
|
1330
1331
|
pending: null
|
|
1331
|
-
}), D.bumpStructure(),
|
|
1332
|
-
},
|
|
1333
|
-
let e =
|
|
1332
|
+
}), D.bumpStructure(), ee("");
|
|
1333
|
+
}, B = () => {
|
|
1334
|
+
let e = W();
|
|
1334
1335
|
D.setState({
|
|
1335
1336
|
map: e,
|
|
1336
1337
|
loaded: { fileName: "new-map.dat" },
|
|
@@ -1345,7 +1346,7 @@ function ue({ title: e = "Mudlet Map Editor", onHelpClick: t, onLoadFromUrl: a,
|
|
|
1345
1346
|
status: "New map created · 0 rooms · 1 area",
|
|
1346
1347
|
sessionId: null
|
|
1347
1348
|
}), D.bumpStructure();
|
|
1348
|
-
},
|
|
1349
|
+
}, V = ae;
|
|
1349
1350
|
return /* @__PURE__ */ f("div", {
|
|
1350
1351
|
className: "toolbar",
|
|
1351
1352
|
children: [/* @__PURE__ */ f("div", {
|
|
@@ -1360,7 +1361,7 @@ function ue({ title: e = "Mudlet Map Editor", onHelpClick: t, onLoadFromUrl: a,
|
|
|
1360
1361
|
/* @__PURE__ */ d("button", {
|
|
1361
1362
|
type: "button",
|
|
1362
1363
|
title: "New Map",
|
|
1363
|
-
onClick:
|
|
1364
|
+
onClick: B,
|
|
1364
1365
|
children: /* @__PURE__ */ f("svg", {
|
|
1365
1366
|
width: "16",
|
|
1366
1367
|
height: "16",
|
|
@@ -1428,7 +1429,7 @@ function ue({ title: e = "Mudlet Map Editor", onHelpClick: t, onLoadFromUrl: a,
|
|
|
1428
1429
|
style: { display: "none" },
|
|
1429
1430
|
onChange: (e) => {
|
|
1430
1431
|
let t = e.target.files?.[0];
|
|
1431
|
-
t &&
|
|
1432
|
+
t && V(t), e.target.value = "";
|
|
1432
1433
|
}
|
|
1433
1434
|
})]
|
|
1434
1435
|
}),
|
|
@@ -1483,7 +1484,7 @@ function ue({ title: e = "Mudlet Map Editor", onHelpClick: t, onLoadFromUrl: a,
|
|
|
1483
1484
|
onClick: () => {
|
|
1484
1485
|
let e = D.getState();
|
|
1485
1486
|
if (!(!e.map || !e.loaded)) try {
|
|
1486
|
-
let t =
|
|
1487
|
+
let t = H(e.map), n = t.buffer.slice(t.byteOffset, t.byteOffset + t.byteLength), r = new Blob([n], { type: "application/octet-stream" }), i = URL.createObjectURL(r), a = document.createElement("a");
|
|
1487
1488
|
a.href = i, a.download = e.loaded.fileName.replace(/\.dat$/i, "") + "-edited.dat", document.body.appendChild(a), a.click(), a.remove(), URL.revokeObjectURL(i), D.setState((e) => ({
|
|
1488
1489
|
savedUndoLength: e.undo.length,
|
|
1489
1490
|
status: `Saved ${a.download}`
|
|
@@ -1594,15 +1595,15 @@ function ue({ title: e = "Mudlet Map Editor", onHelpClick: t, onLoadFromUrl: a,
|
|
|
1594
1595
|
min: 1,
|
|
1595
1596
|
placeholder: "ID",
|
|
1596
1597
|
value: R,
|
|
1597
|
-
onChange: (e) =>
|
|
1598
|
+
onChange: (e) => ee(e.target.value),
|
|
1598
1599
|
onKeyDown: (e) => {
|
|
1599
|
-
e.key === "Enter" &&
|
|
1600
|
+
e.key === "Enter" && z();
|
|
1600
1601
|
}
|
|
1601
1602
|
}),
|
|
1602
1603
|
/* @__PURE__ */ d("button", {
|
|
1603
1604
|
type: "button",
|
|
1604
1605
|
className: "toolbar-goto-btn",
|
|
1605
|
-
onClick:
|
|
1606
|
+
onClick: z,
|
|
1606
1607
|
disabled: R === "",
|
|
1607
1608
|
children: "Go"
|
|
1608
1609
|
})
|
|
@@ -1623,25 +1624,9 @@ function ue({ title: e = "Mudlet Map Editor", onHelpClick: t, onLoadFromUrl: a,
|
|
|
1623
1624
|
className: "tool-btn",
|
|
1624
1625
|
title: "Search rooms and labels (Ctrl+F)",
|
|
1625
1626
|
onClick: s,
|
|
1626
|
-
children: [/* @__PURE__ */
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
viewBox: "0 0 16 16",
|
|
1630
|
-
fill: "none",
|
|
1631
|
-
"aria-hidden": "true",
|
|
1632
|
-
style: { flexShrink: 0 },
|
|
1633
|
-
children: [/* @__PURE__ */ d("circle", {
|
|
1634
|
-
cx: "6.5",
|
|
1635
|
-
cy: "6.5",
|
|
1636
|
-
r: "4.5",
|
|
1637
|
-
stroke: "currentColor",
|
|
1638
|
-
strokeWidth: "1.4"
|
|
1639
|
-
}), /* @__PURE__ */ d("path", {
|
|
1640
|
-
d: "M10.5 10.5L14 14",
|
|
1641
|
-
stroke: "currentColor",
|
|
1642
|
-
strokeWidth: "1.4",
|
|
1643
|
-
strokeLinecap: "round"
|
|
1644
|
-
})]
|
|
1627
|
+
children: [/* @__PURE__ */ d("span", {
|
|
1628
|
+
className: "tool-key",
|
|
1629
|
+
children: "^F"
|
|
1645
1630
|
}), /* @__PURE__ */ d("span", { children: "Search" })]
|
|
1646
1631
|
})
|
|
1647
1632
|
] }),
|
|
@@ -1778,7 +1763,7 @@ function ue({ title: e = "Mudlet Map Editor", onHelpClick: t, onLoadFromUrl: a,
|
|
|
1778
1763
|
//#region src/components/UrlLoadModal.tsx
|
|
1779
1764
|
function de({ onClose: e, initialUrl: n }) {
|
|
1780
1765
|
let [r, a] = i(n ?? ""), [o, s] = i(!1), [c, l] = i(null), u = async (t = r.trim()) => {
|
|
1781
|
-
t && (a(t), s(!0), l(0), await
|
|
1766
|
+
t && (a(t), s(!0), l(0), await G(t, l), s(!1), l(null), D.getState().map && e());
|
|
1782
1767
|
};
|
|
1783
1768
|
return t(() => {
|
|
1784
1769
|
n && u(n);
|
|
@@ -2714,7 +2699,7 @@ function Y(e, t) {
|
|
|
2714
2699
|
redo: []
|
|
2715
2700
|
})), r;
|
|
2716
2701
|
}
|
|
2717
|
-
function
|
|
2702
|
+
function X(e, t) {
|
|
2718
2703
|
if (e.length === 0) return !1;
|
|
2719
2704
|
if (e.length === 1) return Y(e[0], t);
|
|
2720
2705
|
let n = D.getState();
|
|
@@ -2730,7 +2715,7 @@ function De(e, t) {
|
|
|
2730
2715
|
redo: []
|
|
2731
2716
|
})), r;
|
|
2732
2717
|
}
|
|
2733
|
-
function
|
|
2718
|
+
function De(e) {
|
|
2734
2719
|
let t = D.getState();
|
|
2735
2720
|
if (!t.map || t.undo.length === 0) return {
|
|
2736
2721
|
changed: !1,
|
|
@@ -2745,7 +2730,7 @@ function Oe(e) {
|
|
|
2745
2730
|
structural: r
|
|
2746
2731
|
};
|
|
2747
2732
|
}
|
|
2748
|
-
function
|
|
2733
|
+
function Oe(e) {
|
|
2749
2734
|
let t = D.getState();
|
|
2750
2735
|
if (!t.map || t.redo.length === 0) return {
|
|
2751
2736
|
changed: !1,
|
|
@@ -2760,7 +2745,7 @@ function ke(e) {
|
|
|
2760
2745
|
structural: r
|
|
2761
2746
|
};
|
|
2762
2747
|
}
|
|
2763
|
-
function
|
|
2748
|
+
function ke(e, t, n, r) {
|
|
2764
2749
|
if (n === 0 && r === 0) return [];
|
|
2765
2750
|
let i = e.rooms[t];
|
|
2766
2751
|
if (!i) return [];
|
|
@@ -2795,14 +2780,14 @@ function Ae(e, t, n, r) {
|
|
|
2795
2780
|
}
|
|
2796
2781
|
return a;
|
|
2797
2782
|
}
|
|
2798
|
-
function
|
|
2783
|
+
function Ae(e, t) {
|
|
2799
2784
|
return Ce(e, t).map((t) => ({
|
|
2800
2785
|
roomId: t.roomId,
|
|
2801
2786
|
dir: t.dir,
|
|
2802
2787
|
was: J(e.rooms[t.roomId], t.dir)
|
|
2803
2788
|
}));
|
|
2804
2789
|
}
|
|
2805
|
-
function
|
|
2790
|
+
function je(e, t) {
|
|
2806
2791
|
let n = new Set(t), r = new Map(t.map((e) => [e, []]));
|
|
2807
2792
|
for (let t of Object.keys(e.rooms)) {
|
|
2808
2793
|
let i = Number(t);
|
|
@@ -2821,7 +2806,7 @@ function Me(e, t) {
|
|
|
2821
2806
|
}
|
|
2822
2807
|
//#endregion
|
|
2823
2808
|
//#region src/components/panelShared.tsx
|
|
2824
|
-
function
|
|
2809
|
+
function Me({ id: e, name: t, className: n }) {
|
|
2825
2810
|
return /* @__PURE__ */ f("button", {
|
|
2826
2811
|
type: "button",
|
|
2827
2812
|
className: n ?? "exit-target",
|
|
@@ -2870,7 +2855,7 @@ function Ne({ id: e, name: t, className: n }) {
|
|
|
2870
2855
|
]
|
|
2871
2856
|
});
|
|
2872
2857
|
}
|
|
2873
|
-
function
|
|
2858
|
+
function Z({ label: e, children: t, as: n = "label" }) {
|
|
2874
2859
|
return /* @__PURE__ */ f(n, {
|
|
2875
2860
|
className: "field",
|
|
2876
2861
|
children: [/* @__PURE__ */ d("span", {
|
|
@@ -2879,7 +2864,7 @@ function X({ label: e, children: t, as: n = "label" }) {
|
|
|
2879
2864
|
}), t]
|
|
2880
2865
|
});
|
|
2881
2866
|
}
|
|
2882
|
-
function
|
|
2867
|
+
function Ne({ checked: e, onChange: t, description: n }) {
|
|
2883
2868
|
return /* @__PURE__ */ f("label", {
|
|
2884
2869
|
className: "field checkbox-field",
|
|
2885
2870
|
children: [/* @__PURE__ */ d("input", {
|
|
@@ -2889,7 +2874,7 @@ function Pe({ checked: e, onChange: t, description: n }) {
|
|
|
2889
2874
|
}), /* @__PURE__ */ d("span", { children: n })]
|
|
2890
2875
|
});
|
|
2891
2876
|
}
|
|
2892
|
-
function
|
|
2877
|
+
function Pe({ activeTool: e }) {
|
|
2893
2878
|
return /* @__PURE__ */ d("p", {
|
|
2894
2879
|
className: "hint-tool",
|
|
2895
2880
|
children: {
|
|
@@ -2904,7 +2889,7 @@ function Fe({ activeTool: e }) {
|
|
|
2904
2889
|
}[e] ?? ""
|
|
2905
2890
|
});
|
|
2906
2891
|
}
|
|
2907
|
-
function
|
|
2892
|
+
function Fe({ data: e, onCommit: t }) {
|
|
2908
2893
|
let [n, r] = i(""), [a, o] = i(""), s = () => {
|
|
2909
2894
|
let e = n.trim();
|
|
2910
2895
|
e && (t(e, null, a), r(""), o(""));
|
|
@@ -2971,14 +2956,14 @@ function Ie({ data: e, onCommit: t }) {
|
|
|
2971
2956
|
]
|
|
2972
2957
|
});
|
|
2973
2958
|
}
|
|
2974
|
-
function
|
|
2959
|
+
function Ie(e) {
|
|
2975
2960
|
return "#" + [
|
|
2976
2961
|
e.r,
|
|
2977
2962
|
e.g,
|
|
2978
2963
|
e.b
|
|
2979
2964
|
].map((e) => e.toString(16).padStart(2, "0")).join("");
|
|
2980
2965
|
}
|
|
2981
|
-
function
|
|
2966
|
+
function Le(e) {
|
|
2982
2967
|
return {
|
|
2983
2968
|
spec: 1,
|
|
2984
2969
|
alpha: 255,
|
|
@@ -2990,7 +2975,7 @@ function Re(e) {
|
|
|
2990
2975
|
}
|
|
2991
2976
|
//#endregion
|
|
2992
2977
|
//#region src/components/AreaManagerModal.tsx
|
|
2993
|
-
function
|
|
2978
|
+
function Re({ sceneRef: e }) {
|
|
2994
2979
|
let t = O((e) => e.map), [n, r] = i(""), [a, o] = i(null), [s, c] = i(""), [l, u] = i(null), [p, m] = i(null);
|
|
2995
2980
|
if (!t) return /* @__PURE__ */ d("div", {
|
|
2996
2981
|
className: "modal-empty",
|
|
@@ -3062,7 +3047,7 @@ function ze({ sceneRef: e }) {
|
|
|
3062
3047
|
}, y = () => {
|
|
3063
3048
|
if (!l || l.moveTarget === "") return;
|
|
3064
3049
|
let t = Number(l.moveTarget);
|
|
3065
|
-
|
|
3050
|
+
X([{
|
|
3066
3051
|
kind: "moveRoomsToArea",
|
|
3067
3052
|
roomIds: [...l.rooms],
|
|
3068
3053
|
fromAreaId: l.id,
|
|
@@ -3161,7 +3146,7 @@ function ze({ sceneRef: e }) {
|
|
|
3161
3146
|
}),
|
|
3162
3147
|
p === n && /* @__PURE__ */ d("div", {
|
|
3163
3148
|
className: "area-ud-section",
|
|
3164
|
-
children: /* @__PURE__ */ d(
|
|
3149
|
+
children: /* @__PURE__ */ d(Fe, {
|
|
3165
3150
|
data: t.areas[n]?.userData ?? {},
|
|
3166
3151
|
onCommit: (t, r, i) => {
|
|
3167
3152
|
Y({
|
|
@@ -3233,14 +3218,14 @@ function ze({ sceneRef: e }) {
|
|
|
3233
3218
|
}
|
|
3234
3219
|
//#endregion
|
|
3235
3220
|
//#region src/components/EnvManagerModal.tsx
|
|
3236
|
-
function
|
|
3221
|
+
function ze(e) {
|
|
3237
3222
|
return "#" + [
|
|
3238
3223
|
e.r,
|
|
3239
3224
|
e.g,
|
|
3240
3225
|
e.b
|
|
3241
3226
|
].map((e) => e.toString(16).padStart(2, "0")).join("");
|
|
3242
3227
|
}
|
|
3243
|
-
function
|
|
3228
|
+
function Be(e) {
|
|
3244
3229
|
return {
|
|
3245
3230
|
spec: 1,
|
|
3246
3231
|
alpha: 255,
|
|
@@ -3250,7 +3235,7 @@ function Ve(e) {
|
|
|
3250
3235
|
pad: 0
|
|
3251
3236
|
};
|
|
3252
3237
|
}
|
|
3253
|
-
function
|
|
3238
|
+
function Ve({ sceneRef: e }) {
|
|
3254
3239
|
let t = O((e) => e.map), n = O((e) => e.dataVersion), [r, a] = i(""), [o, s] = i(null), [c, l] = i(!1), [u, p] = i(""), [m, h] = i("#888888");
|
|
3255
3240
|
if (!t) return /* @__PURE__ */ d("div", {
|
|
3256
3241
|
className: "modal-empty",
|
|
@@ -3271,7 +3256,7 @@ function He({ sceneRef: e }) {
|
|
|
3271
3256
|
}, S = () => {
|
|
3272
3257
|
s(null), p(String(x())), l(!0);
|
|
3273
3258
|
}, C = (n, r) => {
|
|
3274
|
-
let i =
|
|
3259
|
+
let i = Be(r);
|
|
3275
3260
|
Y({
|
|
3276
3261
|
kind: "setCustomEnvColor",
|
|
3277
3262
|
envId: n,
|
|
@@ -3292,7 +3277,7 @@ function He({ sceneRef: e }) {
|
|
|
3292
3277
|
D.setState({ status: "Env IDs 1–256 are reserved. Use 257 or higher." });
|
|
3293
3278
|
return;
|
|
3294
3279
|
}
|
|
3295
|
-
let r =
|
|
3280
|
+
let r = Be(m);
|
|
3296
3281
|
Y({
|
|
3297
3282
|
kind: "setCustomEnvColor",
|
|
3298
3283
|
envId: n,
|
|
@@ -3397,7 +3382,7 @@ function He({ sceneRef: e }) {
|
|
|
3397
3382
|
}),
|
|
3398
3383
|
/* @__PURE__ */ d("input", {
|
|
3399
3384
|
type: "color",
|
|
3400
|
-
value:
|
|
3385
|
+
value: ze(t.mCustomEnvColors[y.envId]),
|
|
3401
3386
|
onChange: (e) => C(y.envId, e.target.value),
|
|
3402
3387
|
style: {
|
|
3403
3388
|
width: "100%",
|
|
@@ -3422,7 +3407,7 @@ function He({ sceneRef: e }) {
|
|
|
3422
3407
|
}
|
|
3423
3408
|
//#endregion
|
|
3424
3409
|
//#region src/components/panels/HistoryPanel.tsx
|
|
3425
|
-
function
|
|
3410
|
+
function He(e) {
|
|
3426
3411
|
switch (e.kind) {
|
|
3427
3412
|
case "moveRoom": return `Move room #${e.id}`;
|
|
3428
3413
|
case "addRoom": return `Add room #${e.id}`;
|
|
@@ -3464,10 +3449,10 @@ function Ue(e) {
|
|
|
3464
3449
|
case "setLabelNoScaling": return `${e.to ? "Disable" : "Enable"} zoom scaling on label #${e.id}`;
|
|
3465
3450
|
case "setLabelShowOnTop": return `Set label #${e.id} ${e.to ? "foreground" : "background"}`;
|
|
3466
3451
|
case "resizeLabel": return `Resize label #${e.id}`;
|
|
3467
|
-
case "batch": return
|
|
3452
|
+
case "batch": return He(e.cmds[0]);
|
|
3468
3453
|
}
|
|
3469
3454
|
}
|
|
3470
|
-
function
|
|
3455
|
+
function Ue({ cmd: e, className: t, onClick: n, title: r }) {
|
|
3471
3456
|
return /* @__PURE__ */ f("button", {
|
|
3472
3457
|
type: "button",
|
|
3473
3458
|
className: t,
|
|
@@ -3475,23 +3460,23 @@ function We({ cmd: e, className: t, onClick: n, title: r }) {
|
|
|
3475
3460
|
title: r,
|
|
3476
3461
|
children: [/* @__PURE__ */ d("span", {
|
|
3477
3462
|
className: "history-label",
|
|
3478
|
-
children:
|
|
3463
|
+
children: He(e)
|
|
3479
3464
|
}), e.kind === "batch" && e.cmds.slice(1).map((e, t) => /* @__PURE__ */ d("span", {
|
|
3480
3465
|
className: "history-sub",
|
|
3481
|
-
children:
|
|
3466
|
+
children: He(e)
|
|
3482
3467
|
}, t))]
|
|
3483
3468
|
});
|
|
3484
3469
|
}
|
|
3485
|
-
function
|
|
3470
|
+
function We({ sceneRef: e }) {
|
|
3486
3471
|
let t = O((e) => e.undo), n = O((e) => e.redo), r = (t, n) => {
|
|
3487
3472
|
let r = e.current, i = !1;
|
|
3488
3473
|
for (let e = 0; e < t; e++) {
|
|
3489
|
-
let e =
|
|
3474
|
+
let e = De(r);
|
|
3490
3475
|
if (!e.changed) break;
|
|
3491
3476
|
e.structural && (i = !0);
|
|
3492
3477
|
}
|
|
3493
3478
|
for (let e = 0; e < n; e++) {
|
|
3494
|
-
let e =
|
|
3479
|
+
let e = Oe(r);
|
|
3495
3480
|
if (!e.changed) break;
|
|
3496
3481
|
e.structural && (i = !0);
|
|
3497
3482
|
}
|
|
@@ -3502,7 +3487,7 @@ function Ge({ sceneRef: e }) {
|
|
|
3502
3487
|
children: /* @__PURE__ */ f("div", {
|
|
3503
3488
|
className: "history-list",
|
|
3504
3489
|
children: [
|
|
3505
|
-
n.map((e, t) => /* @__PURE__ */ d(
|
|
3490
|
+
n.map((e, t) => /* @__PURE__ */ d(Ue, {
|
|
3506
3491
|
cmd: e,
|
|
3507
3492
|
className: "history-item history-undone",
|
|
3508
3493
|
onClick: () => r(0, n.length - t),
|
|
@@ -3518,7 +3503,7 @@ function Ge({ sceneRef: e }) {
|
|
|
3518
3503
|
children: "Current state"
|
|
3519
3504
|
})]
|
|
3520
3505
|
}),
|
|
3521
|
-
i.map((e, t) => /* @__PURE__ */ d(
|
|
3506
|
+
i.map((e, t) => /* @__PURE__ */ d(Ue, {
|
|
3522
3507
|
cmd: e,
|
|
3523
3508
|
className: "history-item history-done",
|
|
3524
3509
|
onClick: () => r(t + 1, 0),
|
|
@@ -3535,7 +3520,7 @@ function Ge({ sceneRef: e }) {
|
|
|
3535
3520
|
}
|
|
3536
3521
|
//#endregion
|
|
3537
3522
|
//#region src/components/panels/MapPanel.tsx
|
|
3538
|
-
function
|
|
3523
|
+
function Ge(e, t) {
|
|
3539
3524
|
let n = [], r = e.current?.reader;
|
|
3540
3525
|
if (r) for (let e of r.getAreas()) {
|
|
3541
3526
|
let t = e.getAreaId(), r = e.getAreaName();
|
|
@@ -3577,7 +3562,7 @@ function Ke(e, t) {
|
|
|
3577
3562
|
}
|
|
3578
3563
|
return n;
|
|
3579
3564
|
}
|
|
3580
|
-
function
|
|
3565
|
+
function Ke(e) {
|
|
3581
3566
|
let t = D.getState(), n = e.areaId !== t.currentAreaId, r = e.z !== t.currentZ, i = e.x, a = -e.y;
|
|
3582
3567
|
n || r ? (D.setState({
|
|
3583
3568
|
selection: {
|
|
@@ -3605,7 +3590,7 @@ function qe(e) {
|
|
|
3605
3590
|
sidebarTab: "selection"
|
|
3606
3591
|
});
|
|
3607
3592
|
}
|
|
3608
|
-
function
|
|
3593
|
+
function qe(e) {
|
|
3609
3594
|
let t = D.getState(), n = t.map?.rooms[e.roomId];
|
|
3610
3595
|
if (!n) return;
|
|
3611
3596
|
let r = n.area !== t.currentAreaId, i = n.z !== t.currentZ;
|
|
@@ -3633,7 +3618,7 @@ function Je(e) {
|
|
|
3633
3618
|
sidebarTab: "selection"
|
|
3634
3619
|
});
|
|
3635
3620
|
}
|
|
3636
|
-
function
|
|
3621
|
+
function Je({ sceneRef: e }) {
|
|
3637
3622
|
let t = O((e) => e.map);
|
|
3638
3623
|
if (O((e) => e.structureVersion), O((e) => e.dataVersion), !t) return /* @__PURE__ */ f("div", {
|
|
3639
3624
|
className: "panel-content",
|
|
@@ -3642,7 +3627,7 @@ function Ye({ sceneRef: e }) {
|
|
|
3642
3627
|
children: "Drag a .dat file in or load from toolbar."
|
|
3643
3628
|
})]
|
|
3644
3629
|
});
|
|
3645
|
-
let n = Object.keys(t.rooms).length, r = Object.keys(t.areas).length, i = Object.keys(t.mCustomEnvColors).length, a =
|
|
3630
|
+
let n = Object.keys(t.rooms).length, r = Object.keys(t.areas).length, i = Object.keys(t.mCustomEnvColors).length, a = Ge(e, t);
|
|
3646
3631
|
return /* @__PURE__ */ f("div", {
|
|
3647
3632
|
className: "panel-content",
|
|
3648
3633
|
children: [
|
|
@@ -3693,7 +3678,7 @@ function Ye({ sceneRef: e }) {
|
|
|
3693
3678
|
]
|
|
3694
3679
|
}),
|
|
3695
3680
|
/* @__PURE__ */ d("h4", { children: "User Data" }),
|
|
3696
|
-
/* @__PURE__ */ d(
|
|
3681
|
+
/* @__PURE__ */ d(Fe, {
|
|
3697
3682
|
data: t.mUserData ?? {},
|
|
3698
3683
|
onCommit: (t, n, r) => {
|
|
3699
3684
|
Y({
|
|
@@ -3732,7 +3717,7 @@ function Ye({ sceneRef: e }) {
|
|
|
3732
3717
|
/* @__PURE__ */ d("button", {
|
|
3733
3718
|
type: "button",
|
|
3734
3719
|
className: "warning-go-btn",
|
|
3735
|
-
onClick: () =>
|
|
3720
|
+
onClick: () => Ke(e),
|
|
3736
3721
|
children: "Go"
|
|
3737
3722
|
})
|
|
3738
3723
|
]
|
|
@@ -3759,7 +3744,7 @@ function Ye({ sceneRef: e }) {
|
|
|
3759
3744
|
/* @__PURE__ */ d("button", {
|
|
3760
3745
|
type: "button",
|
|
3761
3746
|
className: "warning-go-btn",
|
|
3762
|
-
onClick: () =>
|
|
3747
|
+
onClick: () => qe(e),
|
|
3763
3748
|
children: "Go"
|
|
3764
3749
|
})
|
|
3765
3750
|
]
|
|
@@ -3771,7 +3756,7 @@ function Ye({ sceneRef: e }) {
|
|
|
3771
3756
|
}
|
|
3772
3757
|
//#endregion
|
|
3773
3758
|
//#region src/components/panels/ExitPanel.tsx
|
|
3774
|
-
function
|
|
3759
|
+
function Ye({ selection: e, map: t, sceneRef: n }) {
|
|
3775
3760
|
let r = t.rooms[e.fromId], i = t.rooms[e.toId], a = {
|
|
3776
3761
|
north: "south",
|
|
3777
3762
|
south: "north",
|
|
@@ -3813,7 +3798,7 @@ function Xe({ selection: e, map: t, sceneRef: n }) {
|
|
|
3813
3798
|
/* @__PURE__ */ f("div", {
|
|
3814
3799
|
className: "exit-flow",
|
|
3815
3800
|
children: [
|
|
3816
|
-
/* @__PURE__ */ d(
|
|
3801
|
+
/* @__PURE__ */ d(Me, {
|
|
3817
3802
|
id: e.fromId,
|
|
3818
3803
|
name: r?.name
|
|
3819
3804
|
}),
|
|
@@ -3848,7 +3833,7 @@ function Xe({ selection: e, map: t, sceneRef: n }) {
|
|
|
3848
3833
|
})
|
|
3849
3834
|
]
|
|
3850
3835
|
}),
|
|
3851
|
-
/* @__PURE__ */ d(
|
|
3836
|
+
/* @__PURE__ */ d(Me, {
|
|
3852
3837
|
id: e.toId,
|
|
3853
3838
|
name: i?.name
|
|
3854
3839
|
})
|
|
@@ -3864,10 +3849,10 @@ function Xe({ selection: e, map: t, sceneRef: n }) {
|
|
|
3864
3849
|
}
|
|
3865
3850
|
//#endregion
|
|
3866
3851
|
//#region src/editor/coords.ts
|
|
3867
|
-
function
|
|
3852
|
+
function Xe(e, t) {
|
|
3868
3853
|
return Math.round(e / t) * t;
|
|
3869
3854
|
}
|
|
3870
|
-
function
|
|
3855
|
+
function Ze(e, t, n, r) {
|
|
3871
3856
|
let i = t.getBoundingClientRect(), a = e.backend.viewport.clientToMapPoint(n, r, {
|
|
3872
3857
|
left: i.left,
|
|
3873
3858
|
top: i.top
|
|
@@ -3881,7 +3866,7 @@ function Qe(e, t, n, r) {
|
|
|
3881
3866
|
}
|
|
3882
3867
|
//#endregion
|
|
3883
3868
|
//#region src/editor/hitTest.ts
|
|
3884
|
-
function
|
|
3869
|
+
function Qe(e, t, n, r, i) {
|
|
3885
3870
|
let a = i.getArea(e);
|
|
3886
3871
|
if (!a) return null;
|
|
3887
3872
|
let o = a.getPlane(t);
|
|
@@ -3896,7 +3881,7 @@ function $e(e, t, n, r, i) {
|
|
|
3896
3881
|
}
|
|
3897
3882
|
return c;
|
|
3898
3883
|
}
|
|
3899
|
-
function
|
|
3884
|
+
function $e(e, t, n, r, i) {
|
|
3900
3885
|
let a = i.getArea(e);
|
|
3901
3886
|
if (!a) return [];
|
|
3902
3887
|
let o = a.getPlane(t);
|
|
@@ -3911,7 +3896,7 @@ function et(e, t, n, r, i) {
|
|
|
3911
3896
|
}
|
|
3912
3897
|
return c;
|
|
3913
3898
|
}
|
|
3914
|
-
function
|
|
3899
|
+
function et(e, t, n, r, i, a, o, s) {
|
|
3915
3900
|
let c = [], l = e.backend.culling?.findRoomAtMapPoint?.(i, a);
|
|
3916
3901
|
if (l) {
|
|
3917
3902
|
let e = t.rooms[l.id];
|
|
@@ -3920,19 +3905,19 @@ function tt(e, t, n, r, i, a, o, s) {
|
|
|
3920
3905
|
id: Number(i)
|
|
3921
3906
|
});
|
|
3922
3907
|
}
|
|
3923
|
-
let u =
|
|
3908
|
+
let u = $e(n, r, i, a, s);
|
|
3924
3909
|
for (let e = u.length - 1; e >= 0; e--) c.push({
|
|
3925
3910
|
kind: "label",
|
|
3926
3911
|
id: u[e].id,
|
|
3927
3912
|
areaId: u[e].areaId
|
|
3928
3913
|
});
|
|
3929
|
-
let d =
|
|
3914
|
+
let d = ct(e, i, a, o);
|
|
3930
3915
|
d && c.push({
|
|
3931
3916
|
kind: "customLine",
|
|
3932
3917
|
roomId: d.roomId,
|
|
3933
3918
|
exitName: d.exitName
|
|
3934
3919
|
});
|
|
3935
|
-
let f =
|
|
3920
|
+
let f = st(e, i, a, o);
|
|
3936
3921
|
return f && c.push({
|
|
3937
3922
|
kind: "exit",
|
|
3938
3923
|
fromId: f.fromId,
|
|
@@ -3940,7 +3925,7 @@ function tt(e, t, n, r, i, a, o, s) {
|
|
|
3940
3925
|
dir: f.dir
|
|
3941
3926
|
}), c;
|
|
3942
3927
|
}
|
|
3943
|
-
function
|
|
3928
|
+
function tt(e, t, n, r) {
|
|
3944
3929
|
let i = .05, a = e.x - i, o = e.y - i, s = e.w + i * 2, c = e.h + i * 2, l = Math.max(.15, r), u = [
|
|
3945
3930
|
[
|
|
3946
3931
|
a,
|
|
@@ -3992,7 +3977,7 @@ function nt(e, t, n, r) {
|
|
|
3992
3977
|
}
|
|
3993
3978
|
return d?.handle ?? null;
|
|
3994
3979
|
}
|
|
3995
|
-
function
|
|
3980
|
+
function nt(e, t, n, r, i) {
|
|
3996
3981
|
let a = e.areas[t];
|
|
3997
3982
|
if (!a) return null;
|
|
3998
3983
|
for (let t of a.rooms) {
|
|
@@ -4001,22 +3986,22 @@ function rt(e, t, n, r, i) {
|
|
|
4001
3986
|
}
|
|
4002
3987
|
return null;
|
|
4003
3988
|
}
|
|
4004
|
-
function
|
|
3989
|
+
function rt(e, t, n, r, i, a) {
|
|
4005
3990
|
let o = i - n, s = a - r, c = o * o + s * s;
|
|
4006
3991
|
if (c < 1e-9) return Math.hypot(e - n, t - r);
|
|
4007
3992
|
let l = ((e - n) * o + (t - r) * s) / c;
|
|
4008
3993
|
return l = Math.max(0, Math.min(1, l)), Math.hypot(e - (n + l * o), t - (r + l * s));
|
|
4009
3994
|
}
|
|
4010
|
-
function
|
|
3995
|
+
function it(e, t, n) {
|
|
4011
3996
|
if (e.length < 4) return Infinity;
|
|
4012
3997
|
let r = Infinity;
|
|
4013
3998
|
for (let i = 0; i + 3 < e.length; i += 2) {
|
|
4014
|
-
let a =
|
|
3999
|
+
let a = rt(t, n, e[i], e[i + 1], e[i + 2], e[i + 3]);
|
|
4015
4000
|
a < r && (r = a);
|
|
4016
4001
|
}
|
|
4017
4002
|
return r;
|
|
4018
4003
|
}
|
|
4019
|
-
var
|
|
4004
|
+
var at = [
|
|
4020
4005
|
[
|
|
4021
4006
|
0,
|
|
4022
4007
|
-1,
|
|
@@ -4058,18 +4043,18 @@ var ot = [
|
|
|
4058
4043
|
"northwest"
|
|
4059
4044
|
]
|
|
4060
4045
|
];
|
|
4061
|
-
function
|
|
4046
|
+
function ot(e, t, n) {
|
|
4062
4047
|
let r = e.x - t.x, i = e.y - t.y;
|
|
4063
4048
|
if (r === 0 && i === 0) return "east";
|
|
4064
4049
|
let a = (Math.atan2(i, r) * 180 / Math.PI + 360) % 360;
|
|
4065
4050
|
return a < 22.5 || a >= 337.5 ? "east" : a < 67.5 ? "southeast" : a < 112.5 ? "south" : a < 157.5 ? "southwest" : a < 202.5 ? "west" : a < 247.5 ? "northwest" : a < 292.5 ? "north" : "northeast";
|
|
4066
4051
|
}
|
|
4067
|
-
function
|
|
4052
|
+
function st(e, t, n, r) {
|
|
4068
4053
|
let i = r * .35, a = e.getDrawnExits(), o = null;
|
|
4069
4054
|
for (let e of a) {
|
|
4070
4055
|
let r = Infinity, a = !0;
|
|
4071
4056
|
for (let i of e.data.lines) {
|
|
4072
|
-
let e =
|
|
4057
|
+
let e = it(i.points, t, n);
|
|
4073
4058
|
if (e < r) {
|
|
4074
4059
|
r = e;
|
|
4075
4060
|
let o = Math.hypot(t - i.points[0], n - i.points[1]), s = i.points.length - 2;
|
|
@@ -4077,7 +4062,7 @@ function ct(e, t, n, r) {
|
|
|
4077
4062
|
}
|
|
4078
4063
|
}
|
|
4079
4064
|
for (let i of e.data.arrows) {
|
|
4080
|
-
let o =
|
|
4065
|
+
let o = it(i.points, t, n);
|
|
4081
4066
|
if (o < r) {
|
|
4082
4067
|
r = o;
|
|
4083
4068
|
let s = Math.hypot(t - i.points[0], n - i.points[1]), c = i.points.length - 2, l = Math.hypot(t - i.points[c], n - i.points[c + 1]);
|
|
@@ -4111,10 +4096,10 @@ function ct(e, t, n, r) {
|
|
|
4111
4096
|
dir: o.bDir
|
|
4112
4097
|
} : null : null;
|
|
4113
4098
|
}
|
|
4114
|
-
function
|
|
4099
|
+
function ct(e, t, n, r) {
|
|
4115
4100
|
let i = r * .5, a = null;
|
|
4116
4101
|
for (let r of e.getDrawnSpecialExits()) {
|
|
4117
|
-
let e =
|
|
4102
|
+
let e = it(r.points, t, n);
|
|
4118
4103
|
e < i && (a === null || e < a.dist) && (a = {
|
|
4119
4104
|
roomId: r.roomId,
|
|
4120
4105
|
exitName: r.exitName,
|
|
@@ -4126,13 +4111,13 @@ function lt(e, t, n, r) {
|
|
|
4126
4111
|
exitName: a.exitName
|
|
4127
4112
|
} : null;
|
|
4128
4113
|
}
|
|
4129
|
-
function
|
|
4114
|
+
function lt(e, t, n, r, i, a) {
|
|
4130
4115
|
let o = a * .5;
|
|
4131
4116
|
for (let a of e.getDrawnSpecialExits()) {
|
|
4132
4117
|
if (a.roomId !== t || a.exitName !== n) continue;
|
|
4133
4118
|
let e = null;
|
|
4134
4119
|
for (let t = 0; t + 3 < a.points.length; t += 2) {
|
|
4135
|
-
let n =
|
|
4120
|
+
let n = rt(r, i, a.points[t], a.points[t + 1], a.points[t + 2], a.points[t + 3]);
|
|
4136
4121
|
n < o && (e === null || n < e.dist) && (e = {
|
|
4137
4122
|
segIdx: t / 2,
|
|
4138
4123
|
dist: n
|
|
@@ -4142,7 +4127,7 @@ function ut(e, t, n, r, i, a) {
|
|
|
4142
4127
|
}
|
|
4143
4128
|
return null;
|
|
4144
4129
|
}
|
|
4145
|
-
function
|
|
4130
|
+
function ut(e, t, n, r, i, a) {
|
|
4146
4131
|
let o = a * .45;
|
|
4147
4132
|
for (let a of e.getDrawnSpecialExits()) {
|
|
4148
4133
|
if (a.roomId !== t || a.exitName !== n) continue;
|
|
@@ -4160,21 +4145,21 @@ function dt(e, t, n, r, i, a) {
|
|
|
4160
4145
|
}
|
|
4161
4146
|
//#endregion
|
|
4162
4147
|
//#region src/editor/tools.ts
|
|
4163
|
-
var
|
|
4164
|
-
function
|
|
4165
|
-
|
|
4148
|
+
var dt = null;
|
|
4149
|
+
function ft(e) {
|
|
4150
|
+
dt = e;
|
|
4166
4151
|
}
|
|
4167
|
-
function
|
|
4168
|
-
return
|
|
4152
|
+
function Q(e, t) {
|
|
4153
|
+
return Ze(e.renderer, e.container, t.clientX, t.clientY);
|
|
4169
4154
|
}
|
|
4170
|
-
function
|
|
4171
|
-
let n =
|
|
4155
|
+
function pt(e, t) {
|
|
4156
|
+
let n = Q(e, t), r = D.getState();
|
|
4172
4157
|
return r.snapToGrid ? {
|
|
4173
|
-
x:
|
|
4174
|
-
y:
|
|
4158
|
+
x: Xe(n.x, r.gridStep),
|
|
4159
|
+
y: Xe(n.y, r.gridStep)
|
|
4175
4160
|
} : n;
|
|
4176
4161
|
}
|
|
4177
|
-
function
|
|
4162
|
+
function mt() {
|
|
4178
4163
|
let e = D.getState();
|
|
4179
4164
|
return !e.map || e.currentAreaId == null ? null : {
|
|
4180
4165
|
map: e.map,
|
|
@@ -4183,8 +4168,8 @@ function ht() {
|
|
|
4183
4168
|
state: e
|
|
4184
4169
|
};
|
|
4185
4170
|
}
|
|
4186
|
-
function
|
|
4187
|
-
if (!
|
|
4171
|
+
function $(e, t) {
|
|
4172
|
+
if (!mt()) return null;
|
|
4188
4173
|
let n = e.container.getBoundingClientRect(), r = e.renderer.backend.viewport.clientToMapPoint(t.clientX, t.clientY, {
|
|
4189
4174
|
left: n.left,
|
|
4190
4175
|
top: n.top
|
|
@@ -4193,14 +4178,14 @@ function Q(e, t) {
|
|
|
4193
4178
|
let i = e.renderer.backend.culling?.findRoomAtMapPoint?.(r.x, r.y);
|
|
4194
4179
|
return i ? e.scene.getRenderRoom(i.id) ?? null : null;
|
|
4195
4180
|
}
|
|
4196
|
-
var
|
|
4181
|
+
var ht = .15, gt = {
|
|
4197
4182
|
id: "select",
|
|
4198
4183
|
cursor: "default",
|
|
4199
4184
|
onPointerDown(e, t) {
|
|
4200
4185
|
if (e.button !== 0) return !1;
|
|
4201
4186
|
let n = D.getState();
|
|
4202
4187
|
if (n.contextMenu && D.setState({ contextMenu: null }), n.pending?.kind === "pickExit") {
|
|
4203
|
-
let r =
|
|
4188
|
+
let r = $(t, e);
|
|
4204
4189
|
if (r && n.map) {
|
|
4205
4190
|
let { fromId: e, dir: i } = n.pending, a = n.map.rooms[e];
|
|
4206
4191
|
if (a) {
|
|
@@ -4225,8 +4210,8 @@ var gt = .15, _t = {
|
|
|
4225
4210
|
return !0;
|
|
4226
4211
|
}
|
|
4227
4212
|
if (n.pending?.kind === "pickSpecialExit") {
|
|
4228
|
-
let r =
|
|
4229
|
-
return r &&
|
|
4213
|
+
let r = $(t, e), i = n.pending.fromId;
|
|
4214
|
+
return r && dt && dt(r.id), D.setState({
|
|
4230
4215
|
pending: null,
|
|
4231
4216
|
selection: {
|
|
4232
4217
|
kind: "room",
|
|
@@ -4235,7 +4220,7 @@ var gt = .15, _t = {
|
|
|
4235
4220
|
}), !0;
|
|
4236
4221
|
}
|
|
4237
4222
|
if (n.pending?.kind === "pickSwatch") {
|
|
4238
|
-
let r =
|
|
4223
|
+
let r = $(t, e);
|
|
4239
4224
|
if (r && n.map) {
|
|
4240
4225
|
let e = n.map.rooms[r.id];
|
|
4241
4226
|
e && window.dispatchEvent(new CustomEvent("editor:swatchRoomPicked", { detail: {
|
|
@@ -4245,9 +4230,9 @@ var gt = .15, _t = {
|
|
|
4245
4230
|
}
|
|
4246
4231
|
return D.setState({ pending: null }), !0;
|
|
4247
4232
|
}
|
|
4248
|
-
let r =
|
|
4233
|
+
let r = Q(t, e), i = mt();
|
|
4249
4234
|
if (e.altKey) {
|
|
4250
|
-
let e = i ?
|
|
4235
|
+
let e = i ? et(t.renderer, i.map, i.areaId, i.z, r.x, r.y, t.settings.roomSize, t.scene.reader) : [];
|
|
4251
4236
|
if (e.length > 0) {
|
|
4252
4237
|
let t = Math.round(r.x), i = Math.round(r.y), a = n.hitCycle, o = a && a.x === t && a.y === i ? (a.index + 1) % e.length : 0, s = e[o];
|
|
4253
4238
|
D.setState({
|
|
@@ -4256,15 +4241,15 @@ var gt = .15, _t = {
|
|
|
4256
4241
|
y: i,
|
|
4257
4242
|
index: o
|
|
4258
4243
|
},
|
|
4259
|
-
selection:
|
|
4244
|
+
selection: It(s),
|
|
4260
4245
|
sidebarTab: "selection",
|
|
4261
|
-
status: `Selected ${
|
|
4246
|
+
status: `Selected ${Lt(s)} (${o + 1}/${e.length})`
|
|
4262
4247
|
});
|
|
4263
4248
|
}
|
|
4264
4249
|
return !0;
|
|
4265
4250
|
}
|
|
4266
4251
|
if (D.setState({ hitCycle: null }), n.selection?.kind === "customLine" && i) {
|
|
4267
|
-
let i =
|
|
4252
|
+
let i = ut(t.renderer, n.selection.roomId, n.selection.exitName, r.x, r.y, t.settings.roomSize);
|
|
4268
4253
|
if (i !== null) {
|
|
4269
4254
|
let r = n.map?.rooms[n.selection.roomId], a = r?.customLines?.[n.selection.exitName] ? [...r.customLines[n.selection.exitName]] : [];
|
|
4270
4255
|
return D.setState({
|
|
@@ -4299,7 +4284,7 @@ var gt = .15, _t = {
|
|
|
4299
4284
|
}), c = t.renderer.backend.viewport.clientToMapPoint(8, 0, {
|
|
4300
4285
|
left: o.left,
|
|
4301
4286
|
top: o.top
|
|
4302
|
-
}), l = s && c ? Math.abs(c.x - s.x) : .25, u =
|
|
4287
|
+
}), l = s && c ? Math.abs(c.x - s.x) : .25, u = tt(n, r.x, r.y, l);
|
|
4303
4288
|
if (u) return D.setState({ pending: {
|
|
4304
4289
|
kind: "labelResize",
|
|
4305
4290
|
labelId: i.id,
|
|
@@ -4310,7 +4295,7 @@ var gt = .15, _t = {
|
|
|
4310
4295
|
} }), t.container.setPointerCapture(e.pointerId), !0;
|
|
4311
4296
|
}
|
|
4312
4297
|
}
|
|
4313
|
-
let a =
|
|
4298
|
+
let a = Qe(i.areaId, i.z, r.x, r.y, t.scene.reader);
|
|
4314
4299
|
if (a) {
|
|
4315
4300
|
let n = t.scene.reader.getLabelSnapshot(a.areaId, a.id), i = n ? n.pos[0] : 0, o = n ? -n.pos[1] : 0;
|
|
4316
4301
|
return D.setState({
|
|
@@ -4331,7 +4316,7 @@ var gt = .15, _t = {
|
|
|
4331
4316
|
}), t.container.setPointerCapture(e.pointerId), !0;
|
|
4332
4317
|
}
|
|
4333
4318
|
}
|
|
4334
|
-
let a =
|
|
4319
|
+
let a = $(t, e);
|
|
4335
4320
|
if (a && n.selection?.kind === "room") {
|
|
4336
4321
|
let e = a, r = n.selection.ids.find((n) => {
|
|
4337
4322
|
let r = t.scene.getRenderRoom(n);
|
|
@@ -4402,13 +4387,13 @@ var gt = .15, _t = {
|
|
|
4402
4387
|
}), t.container.setPointerCapture(e.pointerId), !0;
|
|
4403
4388
|
}
|
|
4404
4389
|
if (i) {
|
|
4405
|
-
let e =
|
|
4390
|
+
let e = ct(t.renderer, r.x, r.y, t.settings.roomSize);
|
|
4406
4391
|
if (e) return D.setState({ selection: {
|
|
4407
4392
|
kind: "customLine",
|
|
4408
4393
|
roomId: e.roomId,
|
|
4409
4394
|
exitName: e.exitName
|
|
4410
4395
|
} }), !0;
|
|
4411
|
-
let n =
|
|
4396
|
+
let n = st(t.renderer, r.x, r.y, t.settings.roomSize);
|
|
4412
4397
|
if (n) return D.setState({ selection: {
|
|
4413
4398
|
kind: "exit",
|
|
4414
4399
|
fromId: n.fromId,
|
|
@@ -4416,7 +4401,7 @@ var gt = .15, _t = {
|
|
|
4416
4401
|
dir: n.dir
|
|
4417
4402
|
} }), !0;
|
|
4418
4403
|
}
|
|
4419
|
-
let o =
|
|
4404
|
+
let o = Q(t, e);
|
|
4420
4405
|
return D.setState({ pending: {
|
|
4421
4406
|
kind: "marquee",
|
|
4422
4407
|
startX: o.x,
|
|
@@ -4431,15 +4416,15 @@ var gt = .15, _t = {
|
|
|
4431
4416
|
onPointerMove(e, t) {
|
|
4432
4417
|
let n = D.getState();
|
|
4433
4418
|
if (n.pending?.kind === "customLinePoint") {
|
|
4434
|
-
let r =
|
|
4419
|
+
let r = pt(t, e);
|
|
4435
4420
|
return t.scene.reader.setCustomLinePoint(n.pending.roomId, n.pending.exitName, n.pending.pointIndex, r.x, r.y), t.refresh(), D.bumpData(), !0;
|
|
4436
4421
|
}
|
|
4437
4422
|
if (n.pending?.kind === "marquee") {
|
|
4438
|
-
let r =
|
|
4423
|
+
let r = Q(t, e), i = {
|
|
4439
4424
|
...n.pending,
|
|
4440
4425
|
currentX: r.x,
|
|
4441
4426
|
currentY: r.y
|
|
4442
|
-
}, a =
|
|
4427
|
+
}, a = _t(Math.min(i.startX, r.x), Math.max(i.startX, r.x), Math.min(i.startY, r.y), Math.max(i.startY, r.y)), o;
|
|
4443
4428
|
if (i.ctrlHeld) {
|
|
4444
4429
|
let e = new Set(i.preExistingIds);
|
|
4445
4430
|
for (let t of a) e.has(t) ? e.delete(t) : e.add(t);
|
|
@@ -4458,28 +4443,28 @@ var gt = .15, _t = {
|
|
|
4458
4443
|
}), !0;
|
|
4459
4444
|
}
|
|
4460
4445
|
if (n.pending?.kind === "labelDrag") {
|
|
4461
|
-
let r =
|
|
4446
|
+
let r = Q(t, e), i = {
|
|
4462
4447
|
x: r.x - n.pending.offsetX,
|
|
4463
4448
|
y: r.y - n.pending.offsetY
|
|
4464
4449
|
}, a = n.snapToGrid ? {
|
|
4465
|
-
x:
|
|
4466
|
-
y:
|
|
4450
|
+
x: Xe(i.x, n.gridStep),
|
|
4451
|
+
y: Xe(i.y, n.gridStep)
|
|
4467
4452
|
} : i, o = t.scene.reader.getLabelSnapshot(n.pending.areaId, n.pending.labelId), s = o ? a.x - o.pos[0] : 1, c = o ? a.y - -o.pos[1] : 1;
|
|
4468
4453
|
return (s !== 0 || c !== 0) && (t.scene.reader.moveLabel(n.pending.areaId, n.pending.labelId, a.x, a.y), t.refresh(), D.bumpData()), !0;
|
|
4469
4454
|
}
|
|
4470
4455
|
if (n.pending?.kind === "labelResize") {
|
|
4471
|
-
let r =
|
|
4456
|
+
let r = Q(t, e), i = n.pending, a = n.labelAspectRatioLocked && i.originSize[1] > 0 ? i.originSize[0] / i.originSize[1] : void 0, o = At(i.handle, i.originPos[0], -i.originPos[1], i.originSize[0], i.originSize[1], r.x, r.y, a), s = t.scene.reader.getLabelSnapshot(i.areaId, i.labelId);
|
|
4472
4457
|
return (!s || o.x !== s.pos[0] || o.y !== -s.pos[1] || o.w !== s.size[0] || o.h !== s.size[1]) && (t.scene.reader.moveLabel(i.areaId, i.labelId, o.x, o.y), t.scene.reader.setLabelSize(i.areaId, i.labelId, o.w, o.h), t.scene.refresh()), !0;
|
|
4473
4458
|
}
|
|
4474
|
-
if (n.pending?.kind !== "drag") return
|
|
4459
|
+
if (n.pending?.kind !== "drag") return Rt(t, e), !1;
|
|
4475
4460
|
let r = t.scene.getRenderRoom(n.pending.roomId);
|
|
4476
4461
|
if (!r) return !0;
|
|
4477
|
-
let i =
|
|
4462
|
+
let i = Q(t, e), a = {
|
|
4478
4463
|
x: i.x - n.pending.offsetX,
|
|
4479
4464
|
y: i.y - n.pending.offsetY
|
|
4480
4465
|
}, o = n.snapToGrid ? {
|
|
4481
|
-
x:
|
|
4482
|
-
y:
|
|
4466
|
+
x: Xe(a.x, n.gridStep),
|
|
4467
|
+
y: Xe(a.y, n.gridStep)
|
|
4483
4468
|
} : a, s = o.x - r.x, c = o.y - r.y;
|
|
4484
4469
|
if (s !== 0 || c !== 0) {
|
|
4485
4470
|
if (t.scene.reader.moveRoom(n.pending.roomId, o.x, o.y, r.z), n.pending.multiOrigins) for (let { id: e } of n.pending.multiOrigins) {
|
|
@@ -4537,7 +4522,7 @@ var gt = .15, _t = {
|
|
|
4537
4522
|
t.container.releasePointerCapture(e.pointerId);
|
|
4538
4523
|
} catch {}
|
|
4539
4524
|
let r = n.pending, i = Math.abs(r.currentX - r.startX), a = Math.abs(r.currentY - r.startY);
|
|
4540
|
-
return i <=
|
|
4525
|
+
return i <= ht && a <= ht && !r.ctrlHeld && !r.shiftHeld && D.setState({ selection: null }), D.setState({ pending: null }), !0;
|
|
4541
4526
|
}
|
|
4542
4527
|
if (n.pending?.kind === "labelDrag" && n.map) {
|
|
4543
4528
|
let e = n.pending, r = t.scene.reader.getLabelSnapshot(e.areaId, e.labelId);
|
|
@@ -4639,9 +4624,17 @@ var gt = .15, _t = {
|
|
|
4639
4624
|
onContextMenu(e, t) {
|
|
4640
4625
|
let n = D.getState();
|
|
4641
4626
|
if (!n.map) return !1;
|
|
4642
|
-
|
|
4627
|
+
if (n.spreadShrink) {
|
|
4628
|
+
let r = $(t, e);
|
|
4629
|
+
if (r) return D.setState({ spreadShrink: {
|
|
4630
|
+
...n.spreadShrink,
|
|
4631
|
+
centerMode: "anchor",
|
|
4632
|
+
anchorRoomId: r.id
|
|
4633
|
+
} }), !0;
|
|
4634
|
+
}
|
|
4635
|
+
let r = Q(t, e), i = mt();
|
|
4643
4636
|
if (i) {
|
|
4644
|
-
let n =
|
|
4637
|
+
let n = et(t.renderer, i.map, i.areaId, i.z, r.x, r.y, t.settings.roomSize, t.scene.reader).filter((e) => e.kind !== "exit" && e.kind !== "customLine");
|
|
4645
4638
|
if (n.length > 1) return D.setState({ contextMenu: {
|
|
4646
4639
|
kind: "disambiguate",
|
|
4647
4640
|
hits: n,
|
|
@@ -4649,7 +4642,7 @@ var gt = .15, _t = {
|
|
|
4649
4642
|
screenY: e.clientY
|
|
4650
4643
|
} }), !0;
|
|
4651
4644
|
}
|
|
4652
|
-
let a =
|
|
4645
|
+
let a = $(t, e);
|
|
4653
4646
|
if (a) return D.setState({ contextMenu: {
|
|
4654
4647
|
kind: "room",
|
|
4655
4648
|
roomId: a.id,
|
|
@@ -4657,7 +4650,7 @@ var gt = .15, _t = {
|
|
|
4657
4650
|
screenY: e.clientY
|
|
4658
4651
|
} }), !0;
|
|
4659
4652
|
if (i) {
|
|
4660
|
-
let n =
|
|
4653
|
+
let n = Qe(i.areaId, i.z, r.x, r.y, t.scene.reader);
|
|
4661
4654
|
if (n) return D.setState({
|
|
4662
4655
|
selection: {
|
|
4663
4656
|
kind: "label",
|
|
@@ -4677,7 +4670,7 @@ var gt = .15, _t = {
|
|
|
4677
4670
|
if (n.selection?.kind !== "customLine") return !1;
|
|
4678
4671
|
let o = n.selection, s = n.map.rooms[o.roomId], c = s?.customLines?.[o.exitName];
|
|
4679
4672
|
if (!s || !c) return !1;
|
|
4680
|
-
let l =
|
|
4673
|
+
let l = ut(t.renderer, o.roomId, o.exitName, r.x, r.y, t.settings.roomSize);
|
|
4681
4674
|
if (l !== null) return D.setState({
|
|
4682
4675
|
selection: {
|
|
4683
4676
|
kind: "customLine",
|
|
@@ -4694,10 +4687,10 @@ var gt = .15, _t = {
|
|
|
4694
4687
|
screenY: e.clientY
|
|
4695
4688
|
}
|
|
4696
4689
|
}), !0;
|
|
4697
|
-
let u =
|
|
4690
|
+
let u = lt(t.renderer, o.roomId, o.exitName, r.x, r.y, t.settings.roomSize);
|
|
4698
4691
|
if (u !== null) {
|
|
4699
|
-
let n =
|
|
4700
|
-
return
|
|
4692
|
+
let n = pt(t, e);
|
|
4693
|
+
return vt(t, o.roomId, o.exitName, u.insertIndex, n.x, n.y), !0;
|
|
4701
4694
|
}
|
|
4702
4695
|
return !1;
|
|
4703
4696
|
},
|
|
@@ -4724,7 +4717,7 @@ var gt = .15, _t = {
|
|
|
4724
4717
|
D.setState({ pending: null });
|
|
4725
4718
|
}
|
|
4726
4719
|
};
|
|
4727
|
-
function
|
|
4720
|
+
function _t(e, t, n, r) {
|
|
4728
4721
|
let i = D.getState();
|
|
4729
4722
|
if (!i.map || i.currentAreaId == null) return [];
|
|
4730
4723
|
let a = [];
|
|
@@ -4735,7 +4728,7 @@ function vt(e, t, n, r) {
|
|
|
4735
4728
|
}
|
|
4736
4729
|
return a;
|
|
4737
4730
|
}
|
|
4738
|
-
function
|
|
4731
|
+
function vt(e, t, n, r, i, a) {
|
|
4739
4732
|
let o = D.getState();
|
|
4740
4733
|
if (!o.map) return;
|
|
4741
4734
|
let s = o.map.rooms[t], c = s?.customLines?.[n];
|
|
@@ -4775,17 +4768,17 @@ function yt(e, t, n, r, i, a) {
|
|
|
4775
4768
|
status: `Added waypoint to '${n}' on room ${t}`
|
|
4776
4769
|
});
|
|
4777
4770
|
}
|
|
4778
|
-
var
|
|
4771
|
+
var yt = {
|
|
4779
4772
|
id: "connect",
|
|
4780
4773
|
cursor: "crosshair",
|
|
4781
4774
|
onPointerDown(e, t) {
|
|
4782
4775
|
if (e.button !== 0) return !1;
|
|
4783
|
-
let n =
|
|
4776
|
+
let n = $(t, e);
|
|
4784
4777
|
if (!n) return D.getState().pending?.kind === "connect" && D.setState({
|
|
4785
4778
|
pending: null,
|
|
4786
4779
|
status: "Connect cancelled."
|
|
4787
4780
|
}), !0;
|
|
4788
|
-
let r =
|
|
4781
|
+
let r = Q(t, e), i = ot(r, {
|
|
4789
4782
|
x: n.x,
|
|
4790
4783
|
y: n.y
|
|
4791
4784
|
}, t.settings.roomSize);
|
|
@@ -4810,10 +4803,10 @@ var bt = {
|
|
|
4810
4803
|
return !0;
|
|
4811
4804
|
},
|
|
4812
4805
|
onPointerMove(e, t) {
|
|
4813
|
-
let n = D.getState(), r =
|
|
4806
|
+
let n = D.getState(), r = Q(t, e), i = $(t, e), a = i ? i.id : null;
|
|
4814
4807
|
if (n.pending?.kind === "connect") {
|
|
4815
4808
|
let e = null;
|
|
4816
|
-
return i && i.id !== n.pending.sourceId && (e =
|
|
4809
|
+
return i && i.id !== n.pending.sourceId && (e = ot(r, {
|
|
4817
4810
|
x: i.x,
|
|
4818
4811
|
y: i.y
|
|
4819
4812
|
}, t.settings.roomSize)), D.setState({ pending: {
|
|
@@ -4823,7 +4816,7 @@ var bt = {
|
|
|
4823
4816
|
targetDir: e
|
|
4824
4817
|
} }), !0;
|
|
4825
4818
|
}
|
|
4826
|
-
return
|
|
4819
|
+
return Rt(t, e), !1;
|
|
4827
4820
|
},
|
|
4828
4821
|
onPointerUp(e, t) {
|
|
4829
4822
|
let n = D.getState();
|
|
@@ -4832,13 +4825,13 @@ var bt = {
|
|
|
4832
4825
|
try {
|
|
4833
4826
|
t.container.releasePointerCapture(e.pointerId);
|
|
4834
4827
|
} catch {}
|
|
4835
|
-
return r.hoverTargetId != null && r.hoverTargetId !== r.sourceId ?
|
|
4828
|
+
return r.hoverTargetId != null && r.hoverTargetId !== r.sourceId ? bt(t, r.sourceId, r.hoverTargetId, r.sourceDir, r.targetDir, e.shiftKey) : D.setState({ status: "Connect cancelled." }), D.setState({ pending: null }), !0;
|
|
4836
4829
|
},
|
|
4837
4830
|
onCancel() {
|
|
4838
4831
|
D.setState({ pending: null });
|
|
4839
4832
|
}
|
|
4840
4833
|
};
|
|
4841
|
-
function
|
|
4834
|
+
function bt(e, t, n, r, i, a) {
|
|
4842
4835
|
let o = e.scene.getRenderRoom(t), s = e.scene.getRenderRoom(n);
|
|
4843
4836
|
if (!o || !s) return;
|
|
4844
4837
|
let c = r ?? Se(o.x, o.y, s.x, s.y);
|
|
@@ -4861,16 +4854,16 @@ function xt(e, t, n, r, i, a) {
|
|
|
4861
4854
|
let g = h ? `Connected ${t}.${c} ↔ ${n}.${f}` : `Connected ${t}.${c} → ${n}`;
|
|
4862
4855
|
D.setState({ status: g });
|
|
4863
4856
|
}
|
|
4864
|
-
var
|
|
4857
|
+
var xt = {
|
|
4865
4858
|
id: "unlink",
|
|
4866
4859
|
cursor: "crosshair",
|
|
4867
4860
|
onPointerDown(e, t) {
|
|
4868
4861
|
if (e.button !== 0) return !1;
|
|
4869
|
-
let n =
|
|
4862
|
+
let n = mt();
|
|
4870
4863
|
if (!n) return !1;
|
|
4871
|
-
let r =
|
|
4864
|
+
let r = Q(t, e), i = $(t, e), a = t.settings.roomSize / 2;
|
|
4872
4865
|
if (!(i && Math.abs(r.x - i.x) <= a && Math.abs(r.y - i.y) <= a)) {
|
|
4873
|
-
let e =
|
|
4866
|
+
let e = ct(t.renderer, r.x, r.y, t.settings.roomSize);
|
|
4874
4867
|
if (e) {
|
|
4875
4868
|
let r = n.map.rooms[e.roomId], i = r?.customLines?.[e.exitName] ?? [], a = r?.customLinesColor?.[e.exitName] ?? {
|
|
4876
4869
|
spec: 1,
|
|
@@ -4893,7 +4886,7 @@ var St = {
|
|
|
4893
4886
|
let c = D.getState();
|
|
4894
4887
|
return c.selection?.kind === "customLine" && c.selection.roomId === e.roomId && c.selection.exitName === e.exitName && D.setState({ selection: null }), D.setState({ status: `Removed custom line '${e.exitName}' from room ${e.roomId}` }), !0;
|
|
4895
4888
|
}
|
|
4896
|
-
let i =
|
|
4889
|
+
let i = st(t.renderer, r.x, r.y, t.settings.roomSize);
|
|
4897
4890
|
if (i) {
|
|
4898
4891
|
if (!n.map.rooms[i.fromId]) return !0;
|
|
4899
4892
|
let e = me[i.dir], r = n.map.rooms[i.toId], a = r && we(e) && J(r, e) === i.fromId ? {
|
|
@@ -4942,17 +4935,17 @@ var St = {
|
|
|
4942
4935
|
}, t.scene), t.refresh(), D.bumpData(), D.setState({ status: `Removed all exits from room ${i.id}` }), !0);
|
|
4943
4936
|
},
|
|
4944
4937
|
onPointerMove(e, t) {
|
|
4945
|
-
|
|
4938
|
+
Rt(t, e);
|
|
4946
4939
|
}
|
|
4947
|
-
},
|
|
4940
|
+
}, St = {
|
|
4948
4941
|
id: "addRoom",
|
|
4949
4942
|
cursor: "crosshair",
|
|
4950
4943
|
onPointerDown(e, t) {
|
|
4951
4944
|
if (e.button !== 0) return !1;
|
|
4952
|
-
let n =
|
|
4945
|
+
let n = mt();
|
|
4953
4946
|
if (!n) return !1;
|
|
4954
|
-
let { x: r, y: i } =
|
|
4955
|
-
if (
|
|
4947
|
+
let { x: r, y: i } = pt(t, e), a = r, o = -i;
|
|
4948
|
+
if (nt(n.map, n.areaId, a, o, n.z)) return D.setState({ status: "Cell is already occupied." }), !0;
|
|
4956
4949
|
let s = be(n.map);
|
|
4957
4950
|
return Y({
|
|
4958
4951
|
kind: "addRoom",
|
|
@@ -4969,17 +4962,17 @@ var St = {
|
|
|
4969
4962
|
}), !0;
|
|
4970
4963
|
},
|
|
4971
4964
|
onPointerMove(e, t) {
|
|
4972
|
-
let n =
|
|
4973
|
-
D.setState({ snapCursor: n }),
|
|
4965
|
+
let n = pt(t, e);
|
|
4966
|
+
D.setState({ snapCursor: n }), Rt(t, e);
|
|
4974
4967
|
}
|
|
4975
|
-
},
|
|
4968
|
+
}, Ct = {
|
|
4976
4969
|
id: "delete",
|
|
4977
4970
|
cursor: "not-allowed",
|
|
4978
4971
|
onPointerDown(e, t) {
|
|
4979
4972
|
if (e.button !== 0) return !1;
|
|
4980
|
-
let n =
|
|
4973
|
+
let n = mt();
|
|
4981
4974
|
if (!n) return !1;
|
|
4982
|
-
let r =
|
|
4975
|
+
let r = Q(t, e), i = Qe(n.areaId, n.z, r.x, r.y, t.scene.reader);
|
|
4983
4976
|
if (i) {
|
|
4984
4977
|
let e = t.scene.reader.getLabelSnapshot(i.areaId, i.id);
|
|
4985
4978
|
if (e) {
|
|
@@ -4993,9 +4986,9 @@ var St = {
|
|
|
4993
4986
|
}
|
|
4994
4987
|
return !0;
|
|
4995
4988
|
}
|
|
4996
|
-
let a =
|
|
4989
|
+
let a = $(t, e), o = t.settings.roomSize / 2;
|
|
4997
4990
|
if (!(a && Math.abs(r.x - a.x) <= o && Math.abs(r.y - a.y) <= o)) {
|
|
4998
|
-
let e =
|
|
4991
|
+
let e = ct(t.renderer, r.x, r.y, t.settings.roomSize);
|
|
4999
4992
|
if (e) {
|
|
5000
4993
|
let r = n.map.rooms[e.roomId], i = r?.customLines?.[e.exitName] ?? [], a = r?.customLinesColor?.[e.exitName] ?? {
|
|
5001
4994
|
spec: 1,
|
|
@@ -5018,7 +5011,7 @@ var St = {
|
|
|
5018
5011
|
let c = D.getState();
|
|
5019
5012
|
return c.selection?.kind === "customLine" && c.selection.roomId === e.roomId && c.selection.exitName === e.exitName && D.setState({ selection: null }), D.setState({ status: `Removed custom line '${e.exitName}' from room ${e.roomId}` }), !0;
|
|
5020
5013
|
}
|
|
5021
|
-
let i =
|
|
5014
|
+
let i = st(t.renderer, r.x, r.y, t.settings.roomSize);
|
|
5022
5015
|
if (i) {
|
|
5023
5016
|
if (!n.map.rooms[i.fromId]) return !0;
|
|
5024
5017
|
let e = me[i.dir], r = n.map.rooms[i.toId], a = r && we(e) && J(r, e) === i.fromId ? {
|
|
@@ -5040,7 +5033,7 @@ var St = {
|
|
|
5040
5033
|
if (!a) return D.setState({ status: "No exit, custom line, or room under cursor." }), !0;
|
|
5041
5034
|
let s = n.map.rooms[a.id];
|
|
5042
5035
|
if (!s) return !0;
|
|
5043
|
-
let c = { ...s }, l =
|
|
5036
|
+
let c = { ...s }, l = Ae(n.map, a.id);
|
|
5044
5037
|
Y({
|
|
5045
5038
|
kind: "deleteRoom",
|
|
5046
5039
|
id: a.id,
|
|
@@ -5052,37 +5045,37 @@ var St = {
|
|
|
5052
5045
|
return u.selection?.kind === "room" && u.selection.ids.includes(a.id) && D.setState({ selection: null }), D.setState({ status: `Deleted room ${a.id}` }), !0;
|
|
5053
5046
|
},
|
|
5054
5047
|
onPointerMove(e, t) {
|
|
5055
|
-
|
|
5048
|
+
Rt(t, e);
|
|
5056
5049
|
}
|
|
5057
|
-
},
|
|
5050
|
+
}, wt = !1, Tt = {
|
|
5058
5051
|
id: "pan",
|
|
5059
5052
|
cursor: "grab",
|
|
5060
5053
|
onPointerDown(e, t) {
|
|
5061
|
-
return e.button !== 0 || e.pointerType !== "mouse" ? !1 : (t.renderer.backend.viewport.startDrag(e.clientX, e.clientY),
|
|
5054
|
+
return e.button !== 0 || e.pointerType !== "mouse" ? !1 : (t.renderer.backend.viewport.startDrag(e.clientX, e.clientY), wt = !0, !0);
|
|
5062
5055
|
},
|
|
5063
5056
|
onPointerMove(e, t) {
|
|
5064
5057
|
if (e.pointerType === "mouse") {
|
|
5065
|
-
if (!
|
|
5058
|
+
if (!wt) {
|
|
5066
5059
|
if (e.buttons === 0) return;
|
|
5067
|
-
t.renderer.backend.viewport.startDrag(e.clientX, e.clientY),
|
|
5060
|
+
t.renderer.backend.viewport.startDrag(e.clientX, e.clientY), wt = !0;
|
|
5068
5061
|
}
|
|
5069
5062
|
return t.renderer.backend.viewport.updateDrag(e.clientX, e.clientY), t.refresh(), !0;
|
|
5070
5063
|
}
|
|
5071
5064
|
},
|
|
5072
5065
|
onPointerUp(e, t) {
|
|
5073
|
-
return
|
|
5066
|
+
return wt ? (t.renderer.backend.viewport.endDrag(), wt = !1, !0) : !1;
|
|
5074
5067
|
},
|
|
5075
5068
|
onCancel(e) {
|
|
5076
|
-
|
|
5069
|
+
wt &&= (e.renderer.backend.viewport.endDrag(), !1);
|
|
5077
5070
|
}
|
|
5078
|
-
},
|
|
5071
|
+
}, Et = {
|
|
5079
5072
|
id: "customLine",
|
|
5080
5073
|
cursor: "crosshair",
|
|
5081
5074
|
onPointerDown(e, t) {
|
|
5082
5075
|
let n = D.getState();
|
|
5083
5076
|
if (!n.pending || n.pending.kind !== "customLine" || e.button !== 0) return !1;
|
|
5084
|
-
let r =
|
|
5085
|
-
return
|
|
5077
|
+
let r = pt(t, e), i = [...n.pending.points, [r.x, r.y]];
|
|
5078
|
+
return Dt(n.pending, i, t), D.setState({ pending: {
|
|
5086
5079
|
...n.pending,
|
|
5087
5080
|
points: i,
|
|
5088
5081
|
cursor: r
|
|
@@ -5090,31 +5083,31 @@ var St = {
|
|
|
5090
5083
|
},
|
|
5091
5084
|
onContextMenu(e, t) {
|
|
5092
5085
|
let n = D.getState();
|
|
5093
|
-
return n.pending?.kind === "customLine" ? (
|
|
5086
|
+
return n.pending?.kind === "customLine" ? (kt(n.pending, t), !0) : !1;
|
|
5094
5087
|
},
|
|
5095
5088
|
onPointerMove(e, t) {
|
|
5096
|
-
let n = D.getState(), r =
|
|
5089
|
+
let n = D.getState(), r = pt(t, e);
|
|
5097
5090
|
return n.pending?.kind === "customLine" ? (D.setState({ pending: {
|
|
5098
5091
|
...n.pending,
|
|
5099
5092
|
cursor: r
|
|
5100
|
-
} }), !0) : (
|
|
5093
|
+
} }), !0) : (Rt(t, e), !1);
|
|
5101
5094
|
},
|
|
5102
5095
|
onPointerUp() {
|
|
5103
5096
|
return !1;
|
|
5104
5097
|
},
|
|
5105
5098
|
onCancel(e) {
|
|
5106
5099
|
let t = D.getState();
|
|
5107
|
-
t.pending?.kind === "customLine" && e &&
|
|
5100
|
+
t.pending?.kind === "customLine" && e && Ot(t.pending, e.scene), D.setState({
|
|
5108
5101
|
pending: null,
|
|
5109
5102
|
status: "Custom line cancelled."
|
|
5110
5103
|
}), D.bumpData();
|
|
5111
5104
|
}
|
|
5112
5105
|
};
|
|
5113
|
-
function
|
|
5106
|
+
function Dt(e, t, n) {
|
|
5114
5107
|
let r = t.slice(1).map(([e, t]) => [e, -t]);
|
|
5115
5108
|
n.scene.reader.setCustomLine(e.roomId, e.exitName, r, e.color, e.style, e.arrow), n.refresh();
|
|
5116
5109
|
}
|
|
5117
|
-
function
|
|
5110
|
+
function Ot(e, t) {
|
|
5118
5111
|
if (e.previousSnapshot) {
|
|
5119
5112
|
let n = e.previousSnapshot;
|
|
5120
5113
|
t.reader.setCustomLine(e.roomId, e.exitName, n.points, n.color, n.style, n.arrow);
|
|
@@ -5128,10 +5121,10 @@ function kt(e, t) {
|
|
|
5128
5121
|
}
|
|
5129
5122
|
t.refresh();
|
|
5130
5123
|
}
|
|
5131
|
-
function
|
|
5124
|
+
function kt(e, t) {
|
|
5132
5125
|
if (!D.getState().map) return;
|
|
5133
5126
|
if (e.points.length < 2) {
|
|
5134
|
-
t &&
|
|
5127
|
+
t && Ot(e, t.scene), D.setState({
|
|
5135
5128
|
pending: null,
|
|
5136
5129
|
activeTool: "select",
|
|
5137
5130
|
status: "Need at least 1 waypoint — cancelled."
|
|
@@ -5170,7 +5163,7 @@ function At(e, t) {
|
|
|
5170
5163
|
status: `Custom line '${e.exitName}' saved on room ${e.roomId}`
|
|
5171
5164
|
});
|
|
5172
5165
|
}
|
|
5173
|
-
function
|
|
5166
|
+
function At(e, t, n, r, i, a, o, s) {
|
|
5174
5167
|
let c = t, l = t + r, u = n, d = n + i;
|
|
5175
5168
|
switch (e) {
|
|
5176
5169
|
case "nw":
|
|
@@ -5231,19 +5224,19 @@ function jt(e, t, n, r, i, a, o, s) {
|
|
|
5231
5224
|
h
|
|
5232
5225
|
};
|
|
5233
5226
|
}
|
|
5234
|
-
function
|
|
5227
|
+
function jt(e) {
|
|
5235
5228
|
let t = 0;
|
|
5236
5229
|
for (let n of Object.values(e.labels ?? {})) for (let e of n) e.id > t && (t = e.id);
|
|
5237
5230
|
return t + 1;
|
|
5238
5231
|
}
|
|
5239
|
-
var
|
|
5232
|
+
var Mt = {
|
|
5240
5233
|
id: "addLabel",
|
|
5241
5234
|
cursor: "crosshair",
|
|
5242
5235
|
onPointerDown(e, t) {
|
|
5243
5236
|
if (e.button !== 0) return !1;
|
|
5244
|
-
let n =
|
|
5237
|
+
let n = mt();
|
|
5245
5238
|
if (!n) return !1;
|
|
5246
|
-
let r =
|
|
5239
|
+
let r = pt(t, e);
|
|
5247
5240
|
return D.setState({ pending: {
|
|
5248
5241
|
kind: "labelRect",
|
|
5249
5242
|
areaId: n.areaId,
|
|
@@ -5257,15 +5250,15 @@ var Nt = {
|
|
|
5257
5250
|
onPointerMove(e, t) {
|
|
5258
5251
|
let n = D.getState();
|
|
5259
5252
|
if (n.pending?.kind === "labelRect") {
|
|
5260
|
-
let r =
|
|
5253
|
+
let r = Q(t, e);
|
|
5261
5254
|
return D.setState({ pending: {
|
|
5262
5255
|
...n.pending,
|
|
5263
5256
|
currentX: r.x,
|
|
5264
5257
|
currentY: r.y
|
|
5265
5258
|
} }), !0;
|
|
5266
5259
|
}
|
|
5267
|
-
let r =
|
|
5268
|
-
D.setState({ snapCursor: r }),
|
|
5260
|
+
let r = pt(t, e);
|
|
5261
|
+
D.setState({ snapCursor: r }), Rt(t, e);
|
|
5269
5262
|
},
|
|
5270
5263
|
onPointerUp(e, t) {
|
|
5271
5264
|
let n = D.getState();
|
|
@@ -5273,9 +5266,9 @@ var Nt = {
|
|
|
5273
5266
|
try {
|
|
5274
5267
|
t.container.releasePointerCapture(e.pointerId);
|
|
5275
5268
|
} catch {}
|
|
5276
|
-
let r = n.pending, i =
|
|
5269
|
+
let r = n.pending, i = mt();
|
|
5277
5270
|
if (!i) return D.setState({ pending: null }), !0;
|
|
5278
|
-
let a = Math.abs(r.currentX - r.startX), o = Math.abs(r.currentY - r.startY), s = a < .5 ? 4 : a, c = o < .5 ? 1 : o, l = a < .5 ? r.startX : Math.min(r.startX, r.currentX), u = o < .5 ? r.startY : Math.min(r.startY, r.currentY), d =
|
|
5271
|
+
let a = Math.abs(r.currentX - r.startX), o = Math.abs(r.currentY - r.startY), s = a < .5 ? 4 : a, c = o < .5 ? 1 : o, l = a < .5 ? r.startX : Math.min(r.startX, r.currentX), u = o < .5 ? r.startY : Math.min(r.startY, r.currentY), d = jt(i.map), f = {
|
|
5279
5272
|
id: d,
|
|
5280
5273
|
pos: [
|
|
5281
5274
|
l,
|
|
@@ -5323,13 +5316,13 @@ var Nt = {
|
|
|
5323
5316
|
D.setState({ pending: null });
|
|
5324
5317
|
}
|
|
5325
5318
|
};
|
|
5326
|
-
function
|
|
5319
|
+
function Nt(e) {
|
|
5327
5320
|
return !e.activeSwatchSetId || !e.activeSwatchId ? null : [...e.swatchSets, ...e.pluginSwatchSets].find((t) => t.id === e.activeSwatchSetId)?.swatches.find((t) => t.id === e.activeSwatchId) ?? null;
|
|
5328
5321
|
}
|
|
5329
|
-
function
|
|
5322
|
+
function Pt(e, t, n) {
|
|
5330
5323
|
let r = D.getState();
|
|
5331
5324
|
if (r.pending?.kind !== "paint") return;
|
|
5332
|
-
let i =
|
|
5325
|
+
let i = $(e, t);
|
|
5333
5326
|
if (!i || r.pending.painted.some((e) => e.id === i.id)) return;
|
|
5334
5327
|
let a = r.map?.rooms[i.id];
|
|
5335
5328
|
if (!a) return;
|
|
@@ -5345,31 +5338,31 @@ function Ft(e, t, n) {
|
|
|
5345
5338
|
painted: c
|
|
5346
5339
|
} });
|
|
5347
5340
|
}
|
|
5348
|
-
var
|
|
5349
|
-
select:
|
|
5350
|
-
connect:
|
|
5351
|
-
unlink:
|
|
5352
|
-
addRoom:
|
|
5353
|
-
delete:
|
|
5354
|
-
pan:
|
|
5355
|
-
customLine:
|
|
5356
|
-
addLabel:
|
|
5341
|
+
var Ft = {
|
|
5342
|
+
select: gt,
|
|
5343
|
+
connect: yt,
|
|
5344
|
+
unlink: xt,
|
|
5345
|
+
addRoom: St,
|
|
5346
|
+
delete: Ct,
|
|
5347
|
+
pan: Tt,
|
|
5348
|
+
customLine: Et,
|
|
5349
|
+
addLabel: Mt,
|
|
5357
5350
|
paint: {
|
|
5358
5351
|
id: "paint",
|
|
5359
5352
|
cursor: "cell",
|
|
5360
5353
|
onPointerDown(e, t) {
|
|
5361
5354
|
if (e.button !== 0) return !1;
|
|
5362
|
-
let n =
|
|
5355
|
+
let n = Nt(D.getState());
|
|
5363
5356
|
return n ? (D.setState({ pending: {
|
|
5364
5357
|
kind: "paint",
|
|
5365
5358
|
painted: []
|
|
5366
|
-
} }), t.container.setPointerCapture(e.pointerId),
|
|
5359
|
+
} }), t.container.setPointerCapture(e.pointerId), Pt(t, e, n), !0) : (D.setState({ status: "No swatch selected — open the Swatches palette first." }), !0);
|
|
5367
5360
|
},
|
|
5368
5361
|
onPointerMove(e, t) {
|
|
5369
5362
|
let n = D.getState();
|
|
5370
|
-
if (n.pending?.kind !== "paint") return
|
|
5371
|
-
let r =
|
|
5372
|
-
return r &&
|
|
5363
|
+
if (n.pending?.kind !== "paint") return Rt(t, e), !1;
|
|
5364
|
+
let r = Nt(n);
|
|
5365
|
+
return r && Pt(t, e, r), !0;
|
|
5373
5366
|
},
|
|
5374
5367
|
onPointerUp(e, t) {
|
|
5375
5368
|
let n = D.getState();
|
|
@@ -5377,7 +5370,7 @@ var It = {
|
|
|
5377
5370
|
try {
|
|
5378
5371
|
t.container.releasePointerCapture(e.pointerId);
|
|
5379
5372
|
} catch {}
|
|
5380
|
-
let r = n.pending.painted, i =
|
|
5373
|
+
let r = n.pending.painted, i = Nt(n);
|
|
5381
5374
|
if (r.length > 0 && i) {
|
|
5382
5375
|
let e = [];
|
|
5383
5376
|
for (let { id: t, prevSymbol: n, prevEnv: a } of r) n !== i.symbol && e.push({
|
|
@@ -5416,7 +5409,7 @@ var It = {
|
|
|
5416
5409
|
}
|
|
5417
5410
|
}
|
|
5418
5411
|
};
|
|
5419
|
-
function
|
|
5412
|
+
function It(e) {
|
|
5420
5413
|
switch (e.kind) {
|
|
5421
5414
|
case "room": return {
|
|
5422
5415
|
kind: "room",
|
|
@@ -5440,7 +5433,7 @@ function Lt(e) {
|
|
|
5440
5433
|
};
|
|
5441
5434
|
}
|
|
5442
5435
|
}
|
|
5443
|
-
function
|
|
5436
|
+
function Lt(e) {
|
|
5444
5437
|
switch (e.kind) {
|
|
5445
5438
|
case "room": return `room ${e.id}`;
|
|
5446
5439
|
case "label": return `label ${e.id}`;
|
|
@@ -5448,12 +5441,12 @@ function Rt(e) {
|
|
|
5448
5441
|
case "exit": return `exit ${e.dir} (${e.fromId}→${e.toId})`;
|
|
5449
5442
|
}
|
|
5450
5443
|
}
|
|
5451
|
-
function
|
|
5452
|
-
let n =
|
|
5444
|
+
function Rt(e, t) {
|
|
5445
|
+
let n = mt();
|
|
5453
5446
|
if (!n) return;
|
|
5454
|
-
let r =
|
|
5447
|
+
let r = Q(e, t), i = $(e, t), a = null;
|
|
5455
5448
|
if (i) {
|
|
5456
|
-
let t =
|
|
5449
|
+
let t = ot(r, {
|
|
5457
5450
|
x: i.x,
|
|
5458
5451
|
y: i.y
|
|
5459
5452
|
}, e.settings.roomSize);
|
|
@@ -5463,21 +5456,21 @@ function zt(e, t) {
|
|
|
5463
5456
|
handleDir: t
|
|
5464
5457
|
};
|
|
5465
5458
|
} else {
|
|
5466
|
-
let t =
|
|
5459
|
+
let t = Qe(n.areaId, n.z, r.x, r.y, e.scene.reader);
|
|
5467
5460
|
if (t) a = {
|
|
5468
5461
|
kind: "label",
|
|
5469
5462
|
id: t.id,
|
|
5470
5463
|
areaId: t.areaId
|
|
5471
5464
|
};
|
|
5472
5465
|
else {
|
|
5473
|
-
let t =
|
|
5466
|
+
let t = ct(e.renderer, r.x, r.y, e.settings.roomSize);
|
|
5474
5467
|
if (t) a = {
|
|
5475
5468
|
kind: "customLine",
|
|
5476
5469
|
roomId: t.roomId,
|
|
5477
5470
|
exitName: t.exitName
|
|
5478
5471
|
};
|
|
5479
5472
|
else {
|
|
5480
|
-
let t =
|
|
5473
|
+
let t = st(e.renderer, r.x, r.y, e.settings.roomSize);
|
|
5481
5474
|
t && (a = {
|
|
5482
5475
|
kind: "exit",
|
|
5483
5476
|
...t
|
|
@@ -5486,18 +5479,18 @@ function zt(e, t) {
|
|
|
5486
5479
|
}
|
|
5487
5480
|
}
|
|
5488
5481
|
let o = D.getState().hover;
|
|
5489
|
-
|
|
5482
|
+
zt(o, a) || D.setState({ hover: a });
|
|
5490
5483
|
}
|
|
5491
|
-
function
|
|
5484
|
+
function zt(e, t) {
|
|
5492
5485
|
return e === t ? !0 : !e || !t || e.kind !== t.kind ? !1 : e.kind === "room" && t.kind === "room" ? e.id === t.id && e.handleDir === t.handleDir : e.kind === "exit" && t.kind === "exit" ? e.fromId === t.fromId && e.toId === t.toId && e.dir === t.dir : e.kind === "customLine" && t.kind === "customLine" ? e.roomId === t.roomId && e.exitName === t.exitName : e.kind === "label" && t.kind === "label" ? e.id === t.id && e.areaId === t.areaId : !1;
|
|
5493
5486
|
}
|
|
5494
5487
|
//#endregion
|
|
5495
5488
|
//#region src/components/panels/CustomLinePanel.tsx
|
|
5496
|
-
function
|
|
5489
|
+
function Bt({ pending: e, sceneRef: t }) {
|
|
5497
5490
|
let n = (t) => D.setState({ pending: {
|
|
5498
5491
|
...e,
|
|
5499
5492
|
...t
|
|
5500
|
-
} }), r =
|
|
5493
|
+
} }), r = Ie(e.color), i = (r) => {
|
|
5501
5494
|
n(r);
|
|
5502
5495
|
let i = t.current;
|
|
5503
5496
|
if (!i) return;
|
|
@@ -5521,7 +5514,7 @@ function Vt({ pending: e, sceneRef: t }) {
|
|
|
5521
5514
|
"Click to add waypoints · right-click or Enter to finish · Esc cancels."
|
|
5522
5515
|
]
|
|
5523
5516
|
}),
|
|
5524
|
-
/* @__PURE__ */ d(
|
|
5517
|
+
/* @__PURE__ */ d(Z, {
|
|
5525
5518
|
label: "Exit Name",
|
|
5526
5519
|
children: /* @__PURE__ */ d("span", {
|
|
5527
5520
|
className: "readonly",
|
|
@@ -5552,7 +5545,7 @@ function Vt({ pending: e, sceneRef: t }) {
|
|
|
5552
5545
|
}), /* @__PURE__ */ d("input", {
|
|
5553
5546
|
type: "color",
|
|
5554
5547
|
value: r,
|
|
5555
|
-
onChange: (e) => i({ color:
|
|
5548
|
+
onChange: (e) => i({ color: Le(e.target.value) })
|
|
5556
5549
|
})]
|
|
5557
5550
|
}),
|
|
5558
5551
|
/* @__PURE__ */ f("div", {
|
|
@@ -5613,14 +5606,14 @@ function Vt({ pending: e, sceneRef: t }) {
|
|
|
5613
5606
|
},
|
|
5614
5607
|
children: [/* @__PURE__ */ d("button", {
|
|
5615
5608
|
type: "button",
|
|
5616
|
-
onClick: () =>
|
|
5609
|
+
onClick: () => kt(e),
|
|
5617
5610
|
disabled: e.points.length < 2,
|
|
5618
5611
|
style: { flex: 1 },
|
|
5619
5612
|
children: "Finish"
|
|
5620
5613
|
}), /* @__PURE__ */ d("button", {
|
|
5621
5614
|
type: "button",
|
|
5622
5615
|
onClick: () => {
|
|
5623
|
-
t.current &&
|
|
5616
|
+
t.current && Ot(e, t.current), D.setState({
|
|
5624
5617
|
pending: null,
|
|
5625
5618
|
activeTool: "select",
|
|
5626
5619
|
status: "Custom line cancelled."
|
|
@@ -5634,8 +5627,8 @@ function Vt({ pending: e, sceneRef: t }) {
|
|
|
5634
5627
|
})
|
|
5635
5628
|
});
|
|
5636
5629
|
}
|
|
5637
|
-
function
|
|
5638
|
-
let r = t.rooms[e.roomId], a = r?.customLines?.[e.exitName], o = r?.customLinesColor?.[e.exitName], s = r?.customLinesStyle?.[e.exitName] ?? 1, c = r?.customLinesArrow?.[e.exitName] ?? !1, l = r?.mSpecialExits?.[e.exitName], p = J(r, he[e.exitName] ?? e.exitName), m = l ?? (p != null && p > 0 ? p : void 0), h = m == null ? null : t.rooms[m], [g, _] = i(o ?
|
|
5630
|
+
function Vt({ selection: e, map: t, sceneRef: n }) {
|
|
5631
|
+
let r = t.rooms[e.roomId], a = r?.customLines?.[e.exitName], o = r?.customLinesColor?.[e.exitName], s = r?.customLinesStyle?.[e.exitName] ?? 1, c = r?.customLinesArrow?.[e.exitName] ?? !1, l = r?.mSpecialExits?.[e.exitName], p = J(r, he[e.exitName] ?? e.exitName), m = l ?? (p != null && p > 0 ? p : void 0), h = m == null ? null : t.rooms[m], [g, _] = i(o ? Ie(o) : "#ffffff"), [v, y] = i(s), [b, x] = i(c), [S, C] = i(null);
|
|
5639
5632
|
if (!r || !a) return /* @__PURE__ */ d("h3", { children: "Custom line not found" });
|
|
5640
5633
|
let w = (e) => ({
|
|
5641
5634
|
points: a,
|
|
@@ -5745,7 +5738,7 @@ function Ht({ selection: e, map: t, sceneRef: n }) {
|
|
|
5745
5738
|
children: [/* @__PURE__ */ d("span", {
|
|
5746
5739
|
className: "label",
|
|
5747
5740
|
children: h == null ? "Room" : "From"
|
|
5748
|
-
}), /* @__PURE__ */ d(
|
|
5741
|
+
}), /* @__PURE__ */ d(Me, {
|
|
5749
5742
|
id: e.roomId,
|
|
5750
5743
|
name: r.name
|
|
5751
5744
|
})]
|
|
@@ -5755,7 +5748,7 @@ function Ht({ selection: e, map: t, sceneRef: n }) {
|
|
|
5755
5748
|
children: [/* @__PURE__ */ d("span", {
|
|
5756
5749
|
className: "label",
|
|
5757
5750
|
children: "To"
|
|
5758
|
-
}), /* @__PURE__ */ d(
|
|
5751
|
+
}), /* @__PURE__ */ d(Me, {
|
|
5759
5752
|
id: m,
|
|
5760
5753
|
name: h.name
|
|
5761
5754
|
})]
|
|
@@ -5793,7 +5786,7 @@ function Ht({ selection: e, map: t, sceneRef: n }) {
|
|
|
5793
5786
|
type: "color",
|
|
5794
5787
|
value: g,
|
|
5795
5788
|
onChange: (e) => _(e.target.value),
|
|
5796
|
-
onBlur: (e) => E({ color:
|
|
5789
|
+
onBlur: (e) => E({ color: Le(e.target.value) })
|
|
5797
5790
|
})]
|
|
5798
5791
|
}),
|
|
5799
5792
|
/* @__PURE__ */ f("div", {
|
|
@@ -5898,7 +5891,7 @@ function Ht({ selection: e, map: t, sceneRef: n }) {
|
|
|
5898
5891
|
width: "100%"
|
|
5899
5892
|
},
|
|
5900
5893
|
onClick: () => {
|
|
5901
|
-
let t = D.getState().gridStep, r = a.map(([e, n]) => [
|
|
5894
|
+
let t = D.getState().gridStep, r = a.map(([e, n]) => [Xe(e, t), -Xe(-n, t)]);
|
|
5902
5895
|
if (!r.some((e, t) => e[0] !== a[t][0] || e[1] !== a[t][1])) {
|
|
5903
5896
|
D.setState({ status: `Custom line '${e.exitName}' already on grid.` });
|
|
5904
5897
|
return;
|
|
@@ -5936,28 +5929,28 @@ function Ht({ selection: e, map: t, sceneRef: n }) {
|
|
|
5936
5929
|
}
|
|
5937
5930
|
//#endregion
|
|
5938
5931
|
//#region src/editor/labelPixmap.ts
|
|
5939
|
-
var
|
|
5940
|
-
function
|
|
5932
|
+
var Ht = 64;
|
|
5933
|
+
function Ut(e) {
|
|
5941
5934
|
return `rgba(${e.r},${e.g},${e.b},${(e.alpha / 255).toFixed(3)})`;
|
|
5942
5935
|
}
|
|
5943
|
-
function
|
|
5936
|
+
function Wt(e) {
|
|
5944
5937
|
let t = document.createElement("canvas"), n = t.getContext("2d");
|
|
5945
5938
|
if (!n) return "";
|
|
5946
|
-
let r = Math.max(1, Math.round(e.size[0] *
|
|
5947
|
-
if (t.width = r * a, t.height = i * a, n.scale(a, a), n.fillStyle =
|
|
5939
|
+
let r = Math.max(1, Math.round(e.size[0] * Ht)), i = Math.max(1, Math.round(e.size[1] * Ht)), a = window.devicePixelRatio || 1;
|
|
5940
|
+
if (t.width = r * a, t.height = i * a, n.scale(a, a), n.fillStyle = Ut(e.bgColor), n.fillRect(0, 0, r, i), !e.text) return t.toDataURL("image/png");
|
|
5948
5941
|
let { font: o } = e;
|
|
5949
5942
|
n.font = [
|
|
5950
5943
|
o.italic ? "italic" : "",
|
|
5951
5944
|
o.bold ? "bold" : "",
|
|
5952
5945
|
`${o.size}px`,
|
|
5953
5946
|
`"${o.family}", sans-serif`
|
|
5954
|
-
].filter(Boolean).join(" "), n.fillStyle =
|
|
5947
|
+
].filter(Boolean).join(" "), n.fillStyle = Ut(e.fgColor), n.textBaseline = "middle", n.textAlign = "center";
|
|
5955
5948
|
let s = e.text.split("\n"), c = o.size * 1.25, l = (i - s.length * c) / 2 + c / 2, u = r / 2;
|
|
5956
5949
|
for (let t = 0; t < s.length; t++) {
|
|
5957
5950
|
let i = l + t * c;
|
|
5958
|
-
if (e.outlineColor && e.outlineColor.alpha > 0 && (n.strokeStyle =
|
|
5951
|
+
if (e.outlineColor && e.outlineColor.alpha > 0 && (n.strokeStyle = Ut(e.outlineColor), n.lineWidth = Math.max(1, o.size / 12), n.lineJoin = "round", n.strokeText(s[t], u, i, r)), n.fillText(s[t], u, i, r), o.underline || o.strikeout) {
|
|
5959
5952
|
let r = n.measureText(s[t]).width, a = u - r / 2, c = u + r / 2;
|
|
5960
|
-
if (n.strokeStyle =
|
|
5953
|
+
if (n.strokeStyle = Ut(e.fgColor), n.lineWidth = Math.max(1, o.size / 14), o.underline) {
|
|
5961
5954
|
let e = i + o.size * .6;
|
|
5962
5955
|
n.beginPath(), n.moveTo(a, e), n.lineTo(c, e), n.stroke();
|
|
5963
5956
|
}
|
|
@@ -5966,13 +5959,13 @@ function Gt(e) {
|
|
|
5966
5959
|
}
|
|
5967
5960
|
return t.toDataURL("image/png");
|
|
5968
5961
|
}
|
|
5969
|
-
function
|
|
5962
|
+
function Gt(e) {
|
|
5970
5963
|
let t = e.includes(",") ? e.split(",")[1] : e;
|
|
5971
|
-
return t ?
|
|
5964
|
+
return t ? re.from(t, "base64") : re.alloc(0);
|
|
5972
5965
|
}
|
|
5973
5966
|
//#endregion
|
|
5974
5967
|
//#region src/components/FontPicker.tsx
|
|
5975
|
-
function
|
|
5968
|
+
function Kt({ value: e, options: n, onChange: a }) {
|
|
5976
5969
|
let [o, s] = i(!1), [c, p] = i(""), [m, h] = i(-1), [g, _] = i({}), v = r(null), y = r(null), b = r(null), x = c.trim() ? n.filter((e) => e.toLowerCase().includes(c.toLowerCase())) : n;
|
|
5977
5970
|
t(() => {
|
|
5978
5971
|
let t = x.findIndex((t) => t === e);
|
|
@@ -6075,7 +6068,7 @@ function qt({ value: e, options: n, onChange: a }) {
|
|
|
6075
6068
|
}
|
|
6076
6069
|
//#endregion
|
|
6077
6070
|
//#region src/components/panels/LabelPanel.tsx
|
|
6078
|
-
var
|
|
6071
|
+
var qt = [
|
|
6079
6072
|
"Arial",
|
|
6080
6073
|
"Arial Black",
|
|
6081
6074
|
"Comic Sans MS",
|
|
@@ -6088,9 +6081,9 @@ var Jt = [
|
|
|
6088
6081
|
"Times New Roman",
|
|
6089
6082
|
"Trebuchet MS",
|
|
6090
6083
|
"Verdana"
|
|
6091
|
-
],
|
|
6092
|
-
function
|
|
6093
|
-
let a = O((e) => e.dataVersion), o = O((e) => e.labelAspectRatioLocked), s = n.current?.reader.getLabelSnapshot(e.areaId, e.id), [c, l] = i(s?.text ?? ""), [p, m] = i(String(s?.size[0] ?? 4)), [h, g] = i(String(s?.size[1] ?? 1)), [_, v] = i(s?.bgColor.alpha ?? 255), [y, b] = i(s?.outlineColor?.alpha ?? 0), [x, S] = i(
|
|
6084
|
+
], Jt = (e, t) => e.r === t.r && e.g === t.g && e.b === t.b && e.alpha === t.alpha, Yt = (e, t) => e === void 0 && t === void 0 ? !0 : e === void 0 || t === void 0 ? !1 : Jt(e, t), Xt = 64;
|
|
6085
|
+
function Zt({ selection: e, sceneRef: n }) {
|
|
6086
|
+
let a = O((e) => e.dataVersion), o = O((e) => e.labelAspectRatioLocked), s = n.current?.reader.getLabelSnapshot(e.areaId, e.id), [c, l] = i(s?.text ?? ""), [p, m] = i(String(s?.size[0] ?? 4)), [h, g] = i(String(s?.size[1] ?? 1)), [_, v] = i(s?.bgColor.alpha ?? 255), [y, b] = i(s?.outlineColor?.alpha ?? 0), [x, S] = i(qt);
|
|
6094
6087
|
t(() => {
|
|
6095
6088
|
"queryLocalFonts" in window && window.queryLocalFonts?.().then((e) => {
|
|
6096
6089
|
let t = [...new Set(e.map((e) => e.family))].sort();
|
|
@@ -6119,7 +6112,7 @@ function Qt({ selection: e, sceneRef: n }) {
|
|
|
6119
6112
|
})
|
|
6120
6113
|
});
|
|
6121
6114
|
let N = (t) => {
|
|
6122
|
-
let n =
|
|
6115
|
+
let n = Wt(t);
|
|
6123
6116
|
return n === t.pixMap ? [] : [{
|
|
6124
6117
|
kind: "setLabelPixmap",
|
|
6125
6118
|
areaId: e.areaId,
|
|
@@ -6136,7 +6129,7 @@ function Qt({ selection: e, sceneRef: n }) {
|
|
|
6136
6129
|
...r,
|
|
6137
6130
|
text: E.current
|
|
6138
6131
|
};
|
|
6139
|
-
|
|
6132
|
+
X([{
|
|
6140
6133
|
kind: "setLabelText",
|
|
6141
6134
|
areaId: e.areaId,
|
|
6142
6135
|
id: e.id,
|
|
@@ -6154,7 +6147,7 @@ function Qt({ selection: e, sceneRef: n }) {
|
|
|
6154
6147
|
...r,
|
|
6155
6148
|
size: [i, a]
|
|
6156
6149
|
};
|
|
6157
|
-
|
|
6150
|
+
X([{
|
|
6158
6151
|
kind: "setLabelSize",
|
|
6159
6152
|
areaId: e.areaId,
|
|
6160
6153
|
id: e.id,
|
|
@@ -6171,7 +6164,7 @@ function Qt({ selection: e, sceneRef: n }) {
|
|
|
6171
6164
|
fg: s.fgColor,
|
|
6172
6165
|
bg: s.bgColor
|
|
6173
6166
|
};
|
|
6174
|
-
if (j.current = null, !i ||
|
|
6167
|
+
if (j.current = null, !i || Jt(a.fg, t) && Jt(a.bg, r)) return;
|
|
6175
6168
|
let o = i.reader.getLabelSnapshot(e.areaId, e.id);
|
|
6176
6169
|
if (!o) return;
|
|
6177
6170
|
let c = {
|
|
@@ -6179,7 +6172,7 @@ function Qt({ selection: e, sceneRef: n }) {
|
|
|
6179
6172
|
fgColor: t,
|
|
6180
6173
|
bgColor: r
|
|
6181
6174
|
};
|
|
6182
|
-
|
|
6175
|
+
X([{
|
|
6183
6176
|
kind: "setLabelColors",
|
|
6184
6177
|
areaId: e.areaId,
|
|
6185
6178
|
id: e.id,
|
|
@@ -6199,7 +6192,7 @@ function Qt({ selection: e, sceneRef: n }) {
|
|
|
6199
6192
|
from: i.noScaling,
|
|
6200
6193
|
to: t
|
|
6201
6194
|
}, r), r.refresh(), D.bumpData());
|
|
6202
|
-
},
|
|
6195
|
+
}, ee = (t) => {
|
|
6203
6196
|
let r = n.current;
|
|
6204
6197
|
if (!r) return;
|
|
6205
6198
|
let i = r.reader.getLabelSnapshot(e.areaId, e.id);
|
|
@@ -6210,7 +6203,7 @@ function Qt({ selection: e, sceneRef: n }) {
|
|
|
6210
6203
|
from: i.showOnTop,
|
|
6211
6204
|
to: t
|
|
6212
6205
|
}, r), r.refresh(), D.bumpData());
|
|
6213
|
-
},
|
|
6206
|
+
}, z = (t) => {
|
|
6214
6207
|
let r = n.current;
|
|
6215
6208
|
if (!r) return;
|
|
6216
6209
|
let i = r.reader.getLabelSnapshot(e.areaId, e.id);
|
|
@@ -6219,7 +6212,7 @@ function Qt({ selection: e, sceneRef: n }) {
|
|
|
6219
6212
|
...i.font,
|
|
6220
6213
|
...t
|
|
6221
6214
|
};
|
|
6222
|
-
|
|
6215
|
+
X([{
|
|
6223
6216
|
kind: "setLabelFont",
|
|
6224
6217
|
areaId: e.areaId,
|
|
6225
6218
|
id: e.id,
|
|
@@ -6229,32 +6222,32 @@ function Qt({ selection: e, sceneRef: n }) {
|
|
|
6229
6222
|
...i,
|
|
6230
6223
|
font: a
|
|
6231
6224
|
})], r), r.refresh(), D.bumpData();
|
|
6232
|
-
},
|
|
6225
|
+
}, B = () => {
|
|
6233
6226
|
M.current ||= { color: s.outlineColor };
|
|
6234
|
-
},
|
|
6227
|
+
}, V = (t) => {
|
|
6235
6228
|
let r = n.current, i = M.current ?? { color: s.outlineColor };
|
|
6236
|
-
if (M.current = null, !r ||
|
|
6229
|
+
if (M.current = null, !r || Yt(i.color, t)) return;
|
|
6237
6230
|
let a = r.reader.getLabelSnapshot(e.areaId, e.id);
|
|
6238
6231
|
if (!a) return;
|
|
6239
6232
|
let o = {
|
|
6240
6233
|
...a,
|
|
6241
6234
|
outlineColor: t
|
|
6242
6235
|
};
|
|
6243
|
-
|
|
6236
|
+
X([{
|
|
6244
6237
|
kind: "setLabelOutlineColor",
|
|
6245
6238
|
areaId: e.areaId,
|
|
6246
6239
|
id: e.id,
|
|
6247
6240
|
from: i.color,
|
|
6248
6241
|
to: t
|
|
6249
6242
|
}, ...N(o)], r), r.refresh(), D.bumpData();
|
|
6250
|
-
},
|
|
6243
|
+
}, te = () => {
|
|
6251
6244
|
let t = n.current;
|
|
6252
6245
|
if (!t) return;
|
|
6253
6246
|
let r = t.reader.getLabelSnapshot(e.areaId, e.id);
|
|
6254
6247
|
if (!r || !r.text) return;
|
|
6255
6248
|
let i = document.createElement("canvas").getContext("2d");
|
|
6256
6249
|
if (!i) return;
|
|
6257
|
-
let a = Math.max(1, Math.round(r.size[0] *
|
|
6250
|
+
let a = Math.max(1, Math.round(r.size[0] * Xt)), o = Math.max(1, Math.round(r.size[1] * Xt)), s = a - 16, c = o - 16;
|
|
6258
6251
|
if (s <= 0 || c <= 0) return;
|
|
6259
6252
|
let l = r.text.split("\n"), { font: u } = r, d = Math.floor(c / (l.length * 1.25)), f = 1, p = d, m = 1;
|
|
6260
6253
|
for (; f <= p;) {
|
|
@@ -6266,13 +6259,13 @@ function Qt({ selection: e, sceneRef: n }) {
|
|
|
6266
6259
|
`"${u.family}", sans-serif`
|
|
6267
6260
|
].filter(Boolean).join(" "), Math.max(...l.map((e) => i.measureText(e).width)) <= s ? (m = e, f = e + 1) : p = e - 1;
|
|
6268
6261
|
}
|
|
6269
|
-
m !== r.font.size &&
|
|
6270
|
-
},
|
|
6262
|
+
m !== r.font.size && z({ size: m });
|
|
6263
|
+
}, ne = () => {
|
|
6271
6264
|
let t = n.current;
|
|
6272
6265
|
if (!t) return;
|
|
6273
6266
|
let r = t.reader.getLabelSnapshot(e.areaId, e.id);
|
|
6274
6267
|
if (!r) return;
|
|
6275
|
-
let i =
|
|
6268
|
+
let i = Wt(r);
|
|
6276
6269
|
i !== r.pixMap && (Y({
|
|
6277
6270
|
kind: "setLabelPixmap",
|
|
6278
6271
|
areaId: e.areaId,
|
|
@@ -6280,7 +6273,7 @@ function Qt({ selection: e, sceneRef: n }) {
|
|
|
6280
6273
|
from: r.pixMap,
|
|
6281
6274
|
to: i
|
|
6282
6275
|
}, t), t.refresh(), D.bumpData());
|
|
6283
|
-
},
|
|
6276
|
+
}, re = () => {
|
|
6284
6277
|
let t = document.createElement("input");
|
|
6285
6278
|
t.type = "file", t.accept = "image/*", t.onchange = () => {
|
|
6286
6279
|
let r = t.files?.[0];
|
|
@@ -6293,8 +6286,8 @@ function Qt({ selection: e, sceneRef: n }) {
|
|
|
6293
6286
|
if (!i) return;
|
|
6294
6287
|
let a = i.reader.getLabelSnapshot(e.areaId, e.id);
|
|
6295
6288
|
if (!a) return;
|
|
6296
|
-
let o = Math.max(.1, Math.round(r.naturalWidth /
|
|
6297
|
-
|
|
6289
|
+
let o = Math.max(.1, Math.round(r.naturalWidth / Xt * 100) / 100), s = Math.max(.1, Math.round(r.naturalHeight / Xt * 100) / 100);
|
|
6290
|
+
X([
|
|
6298
6291
|
{
|
|
6299
6292
|
kind: "setLabelImageSrc",
|
|
6300
6293
|
areaId: e.areaId,
|
|
@@ -6320,13 +6313,13 @@ function Qt({ selection: e, sceneRef: n }) {
|
|
|
6320
6313
|
}, r.src = t;
|
|
6321
6314
|
}, i.readAsDataURL(r);
|
|
6322
6315
|
}, t.click();
|
|
6323
|
-
},
|
|
6316
|
+
}, ie = () => {
|
|
6324
6317
|
let t = n.current;
|
|
6325
6318
|
if (!t) return;
|
|
6326
6319
|
let r = t.reader.getLabelSnapshot(e.areaId, e.id);
|
|
6327
6320
|
if (!r || !r.imageSrc) return;
|
|
6328
|
-
let i =
|
|
6329
|
-
|
|
6321
|
+
let i = Wt(r);
|
|
6322
|
+
X([{
|
|
6330
6323
|
kind: "setLabelImageSrc",
|
|
6331
6324
|
areaId: e.areaId,
|
|
6332
6325
|
id: e.id,
|
|
@@ -6339,14 +6332,14 @@ function Qt({ selection: e, sceneRef: n }) {
|
|
|
6339
6332
|
from: r.pixMap,
|
|
6340
6333
|
to: i
|
|
6341
6334
|
}], t), t.refresh(), D.setState({ labelAspectRatioLocked: !1 }), D.bumpData();
|
|
6342
|
-
},
|
|
6335
|
+
}, H = !!s.imageSrc, U = Ie(s.fgColor), W = Ie(s.bgColor), G = s.outlineColor ?? {
|
|
6343
6336
|
spec: 1,
|
|
6344
6337
|
r: 0,
|
|
6345
6338
|
g: 0,
|
|
6346
6339
|
b: 0,
|
|
6347
6340
|
alpha: 0,
|
|
6348
6341
|
pad: 0
|
|
6349
|
-
}, ae =
|
|
6342
|
+
}, ae = Ie(G), oe = (e) => ({
|
|
6350
6343
|
flex: 1,
|
|
6351
6344
|
padding: "4px 0",
|
|
6352
6345
|
fontSize: 12,
|
|
@@ -6381,18 +6374,18 @@ function Qt({ selection: e, sceneRef: n }) {
|
|
|
6381
6374
|
overflow: "hidden"
|
|
6382
6375
|
},
|
|
6383
6376
|
children: [/* @__PURE__ */ d("button", {
|
|
6384
|
-
style: oe(!
|
|
6377
|
+
style: oe(!H),
|
|
6385
6378
|
onClick: () => {
|
|
6386
|
-
|
|
6379
|
+
H && ie();
|
|
6387
6380
|
},
|
|
6388
6381
|
children: "Text"
|
|
6389
6382
|
}), /* @__PURE__ */ d("button", {
|
|
6390
6383
|
style: {
|
|
6391
|
-
...oe(
|
|
6384
|
+
...oe(H),
|
|
6392
6385
|
borderLeft: "1px solid var(--border, #444)"
|
|
6393
6386
|
},
|
|
6394
6387
|
onClick: () => {
|
|
6395
|
-
|
|
6388
|
+
H || re();
|
|
6396
6389
|
},
|
|
6397
6390
|
children: "Image"
|
|
6398
6391
|
})]
|
|
@@ -6400,7 +6393,7 @@ function Qt({ selection: e, sceneRef: n }) {
|
|
|
6400
6393
|
/* @__PURE__ */ f("div", {
|
|
6401
6394
|
className: "field-row",
|
|
6402
6395
|
children: [
|
|
6403
|
-
/* @__PURE__ */ d(
|
|
6396
|
+
/* @__PURE__ */ d(Z, {
|
|
6404
6397
|
label: "Width",
|
|
6405
6398
|
children: /* @__PURE__ */ d("input", {
|
|
6406
6399
|
type: "number",
|
|
@@ -6418,7 +6411,7 @@ function Qt({ selection: e, sceneRef: n }) {
|
|
|
6418
6411
|
style: { width: 70 }
|
|
6419
6412
|
})
|
|
6420
6413
|
}),
|
|
6421
|
-
/* @__PURE__ */ d(
|
|
6414
|
+
/* @__PURE__ */ d(Z, {
|
|
6422
6415
|
label: "Height",
|
|
6423
6416
|
children: /* @__PURE__ */ d("input", {
|
|
6424
6417
|
type: "number",
|
|
@@ -6447,17 +6440,17 @@ function Qt({ selection: e, sceneRef: n }) {
|
|
|
6447
6440
|
})
|
|
6448
6441
|
]
|
|
6449
6442
|
}),
|
|
6450
|
-
/* @__PURE__ */ d(
|
|
6443
|
+
/* @__PURE__ */ d(Ne, {
|
|
6451
6444
|
checked: s.showOnTop,
|
|
6452
|
-
onChange:
|
|
6445
|
+
onChange: ee,
|
|
6453
6446
|
description: "Show on top (foreground)"
|
|
6454
6447
|
}),
|
|
6455
|
-
/* @__PURE__ */ d(
|
|
6448
|
+
/* @__PURE__ */ d(Ne, {
|
|
6456
6449
|
checked: !s.noScaling,
|
|
6457
6450
|
onChange: (e) => R(!e),
|
|
6458
6451
|
description: "Scale with zoom"
|
|
6459
6452
|
}),
|
|
6460
|
-
|
|
6453
|
+
H && /* @__PURE__ */ d(Z, {
|
|
6461
6454
|
label: "Image",
|
|
6462
6455
|
children: /* @__PURE__ */ f("div", {
|
|
6463
6456
|
style: {
|
|
@@ -6475,14 +6468,14 @@ function Qt({ selection: e, sceneRef: n }) {
|
|
|
6475
6468
|
borderRadius: 3
|
|
6476
6469
|
}
|
|
6477
6470
|
}), /* @__PURE__ */ d("button", {
|
|
6478
|
-
onClick:
|
|
6471
|
+
onClick: re,
|
|
6479
6472
|
style: { alignSelf: "flex-start" },
|
|
6480
6473
|
children: "Replace image..."
|
|
6481
6474
|
})]
|
|
6482
6475
|
})
|
|
6483
6476
|
}),
|
|
6484
|
-
!
|
|
6485
|
-
/* @__PURE__ */ d(
|
|
6477
|
+
!H && /* @__PURE__ */ f(u, { children: [
|
|
6478
|
+
/* @__PURE__ */ d(Z, {
|
|
6486
6479
|
label: "Text",
|
|
6487
6480
|
children: /* @__PURE__ */ d("textarea", {
|
|
6488
6481
|
value: c,
|
|
@@ -6502,30 +6495,30 @@ function Qt({ selection: e, sceneRef: n }) {
|
|
|
6502
6495
|
display: "flex",
|
|
6503
6496
|
gap: 8
|
|
6504
6497
|
},
|
|
6505
|
-
children: [/* @__PURE__ */ d(
|
|
6498
|
+
children: [/* @__PURE__ */ d(Z, {
|
|
6506
6499
|
label: "Text color",
|
|
6507
6500
|
as: "div",
|
|
6508
6501
|
children: /* @__PURE__ */ d("input", {
|
|
6509
6502
|
type: "color",
|
|
6510
|
-
defaultValue:
|
|
6503
|
+
defaultValue: U,
|
|
6511
6504
|
onMouseDown: I,
|
|
6512
|
-
onBlur: (e) => L(
|
|
6513
|
-
}, `fg-${e.id}-${
|
|
6514
|
-
}), /* @__PURE__ */ d(
|
|
6505
|
+
onBlur: (e) => L(Le(e.target.value), s.bgColor)
|
|
6506
|
+
}, `fg-${e.id}-${U}`)
|
|
6507
|
+
}), /* @__PURE__ */ d(Z, {
|
|
6515
6508
|
label: "BG color",
|
|
6516
6509
|
as: "div",
|
|
6517
6510
|
children: /* @__PURE__ */ d("input", {
|
|
6518
6511
|
type: "color",
|
|
6519
|
-
defaultValue:
|
|
6512
|
+
defaultValue: W,
|
|
6520
6513
|
onMouseDown: I,
|
|
6521
6514
|
onBlur: (e) => L(s.fgColor, {
|
|
6522
|
-
...
|
|
6515
|
+
...Le(e.target.value),
|
|
6523
6516
|
alpha: s.bgColor.alpha
|
|
6524
6517
|
})
|
|
6525
|
-
}, `bg-${e.id}-${
|
|
6518
|
+
}, `bg-${e.id}-${W}`)
|
|
6526
6519
|
})]
|
|
6527
6520
|
}),
|
|
6528
|
-
/* @__PURE__ */ d(
|
|
6521
|
+
/* @__PURE__ */ d(Z, {
|
|
6529
6522
|
label: "BG alpha",
|
|
6530
6523
|
children: /* @__PURE__ */ f("div", {
|
|
6531
6524
|
style: {
|
|
@@ -6562,16 +6555,16 @@ function Qt({ selection: e, sceneRef: n }) {
|
|
|
6562
6555
|
})]
|
|
6563
6556
|
})
|
|
6564
6557
|
}),
|
|
6565
|
-
/* @__PURE__ */ d(
|
|
6558
|
+
/* @__PURE__ */ d(Z, {
|
|
6566
6559
|
label: "Font",
|
|
6567
6560
|
as: "div",
|
|
6568
|
-
children: /* @__PURE__ */ d(
|
|
6561
|
+
children: /* @__PURE__ */ d(Kt, {
|
|
6569
6562
|
value: s.font.family,
|
|
6570
6563
|
options: x,
|
|
6571
|
-
onChange: (e) =>
|
|
6564
|
+
onChange: (e) => z({ family: e })
|
|
6572
6565
|
})
|
|
6573
6566
|
}),
|
|
6574
|
-
/* @__PURE__ */ d(
|
|
6567
|
+
/* @__PURE__ */ d(Z, {
|
|
6575
6568
|
label: "Size",
|
|
6576
6569
|
children: /* @__PURE__ */ f("div", {
|
|
6577
6570
|
style: {
|
|
@@ -6587,14 +6580,14 @@ function Qt({ selection: e, sceneRef: n }) {
|
|
|
6587
6580
|
defaultValue: s.font.size,
|
|
6588
6581
|
onBlur: (e) => {
|
|
6589
6582
|
let t = parseInt(e.target.value, 10);
|
|
6590
|
-
t > 0 &&
|
|
6583
|
+
t > 0 && z({ size: t });
|
|
6591
6584
|
},
|
|
6592
6585
|
onKeyDown: (e) => e.key === "Enter" && e.target.blur(),
|
|
6593
6586
|
style: { width: 60 }
|
|
6594
6587
|
}, `font-size-${e.id}-${s.font.size}`),
|
|
6595
6588
|
/* @__PURE__ */ d("button", {
|
|
6596
6589
|
title: "Auto-fit font size to fill label area",
|
|
6597
|
-
onClick:
|
|
6590
|
+
onClick: te,
|
|
6598
6591
|
style: {
|
|
6599
6592
|
height: 24,
|
|
6600
6593
|
padding: "0 6px",
|
|
@@ -6635,7 +6628,7 @@ function Qt({ selection: e, sceneRef: n }) {
|
|
|
6635
6628
|
]
|
|
6636
6629
|
].map(([e, t, n]) => /* @__PURE__ */ d("button", {
|
|
6637
6630
|
title: t,
|
|
6638
|
-
onClick: () =>
|
|
6631
|
+
onClick: () => z({ [t]: !s.font[t] }),
|
|
6639
6632
|
style: {
|
|
6640
6633
|
width: 24,
|
|
6641
6634
|
height: 24,
|
|
@@ -6654,20 +6647,20 @@ function Qt({ selection: e, sceneRef: n }) {
|
|
|
6654
6647
|
]
|
|
6655
6648
|
})
|
|
6656
6649
|
}),
|
|
6657
|
-
/* @__PURE__ */ d(
|
|
6650
|
+
/* @__PURE__ */ d(Z, {
|
|
6658
6651
|
label: "Outline color",
|
|
6659
6652
|
as: "div",
|
|
6660
6653
|
children: /* @__PURE__ */ d("input", {
|
|
6661
6654
|
type: "color",
|
|
6662
6655
|
defaultValue: ae,
|
|
6663
|
-
onMouseDown:
|
|
6664
|
-
onBlur: (e) =>
|
|
6665
|
-
...
|
|
6666
|
-
...
|
|
6656
|
+
onMouseDown: B,
|
|
6657
|
+
onBlur: (e) => V({
|
|
6658
|
+
...G,
|
|
6659
|
+
...Le(e.target.value)
|
|
6667
6660
|
})
|
|
6668
6661
|
}, `outline-${e.id}-${ae}`)
|
|
6669
6662
|
}),
|
|
6670
|
-
/* @__PURE__ */ d(
|
|
6663
|
+
/* @__PURE__ */ d(Z, {
|
|
6671
6664
|
label: "Outline alpha",
|
|
6672
6665
|
children: /* @__PURE__ */ f("div", {
|
|
6673
6666
|
style: {
|
|
@@ -6683,19 +6676,19 @@ function Qt({ selection: e, sceneRef: n }) {
|
|
|
6683
6676
|
step: 1,
|
|
6684
6677
|
value: y,
|
|
6685
6678
|
style: { flex: 1 },
|
|
6686
|
-
onPointerDown:
|
|
6679
|
+
onPointerDown: B,
|
|
6687
6680
|
onChange: (e) => b(parseInt(e.target.value, 10)),
|
|
6688
6681
|
onPointerUp: (e) => {
|
|
6689
6682
|
let t = parseInt(e.target.value, 10);
|
|
6690
|
-
|
|
6691
|
-
...
|
|
6683
|
+
V(t === 0 ? void 0 : {
|
|
6684
|
+
...G,
|
|
6692
6685
|
alpha: t
|
|
6693
6686
|
});
|
|
6694
6687
|
},
|
|
6695
6688
|
onBlur: (e) => {
|
|
6696
6689
|
let t = parseInt(e.target.value, 10);
|
|
6697
|
-
|
|
6698
|
-
...
|
|
6690
|
+
V(t === 0 ? void 0 : {
|
|
6691
|
+
...G,
|
|
6699
6692
|
alpha: t
|
|
6700
6693
|
});
|
|
6701
6694
|
}
|
|
@@ -6710,7 +6703,7 @@ function Qt({ selection: e, sceneRef: n }) {
|
|
|
6710
6703
|
})]
|
|
6711
6704
|
})
|
|
6712
6705
|
}),
|
|
6713
|
-
/* @__PURE__ */ d(
|
|
6706
|
+
/* @__PURE__ */ d(Z, {
|
|
6714
6707
|
label: "Pixmap",
|
|
6715
6708
|
children: /* @__PURE__ */ f("div", {
|
|
6716
6709
|
style: {
|
|
@@ -6731,7 +6724,7 @@ function Qt({ selection: e, sceneRef: n }) {
|
|
|
6731
6724
|
className: "hint",
|
|
6732
6725
|
children: "No pixmap stored"
|
|
6733
6726
|
}), /* @__PURE__ */ d("button", {
|
|
6734
|
-
onClick:
|
|
6727
|
+
onClick: ne,
|
|
6735
6728
|
style: { alignSelf: "flex-start" },
|
|
6736
6729
|
children: "Regenerate pixmap"
|
|
6737
6730
|
})]
|
|
@@ -6743,7 +6736,7 @@ function Qt({ selection: e, sceneRef: n }) {
|
|
|
6743
6736
|
}
|
|
6744
6737
|
//#endregion
|
|
6745
6738
|
//#region src/components/EnvPicker.tsx
|
|
6746
|
-
function
|
|
6739
|
+
function Qt({ map: e, sceneRef: n, currentEnvId: a, onSelect: o, onClose: s }) {
|
|
6747
6740
|
let c = r(null), [l, u] = i("");
|
|
6748
6741
|
t(() => {
|
|
6749
6742
|
let e = (e) => {
|
|
@@ -6818,7 +6811,7 @@ function $t({ map: e, sceneRef: n, currentEnvId: a, onSelect: o, onClose: s }) {
|
|
|
6818
6811
|
}
|
|
6819
6812
|
//#endregion
|
|
6820
6813
|
//#region src/components/icons.tsx
|
|
6821
|
-
function
|
|
6814
|
+
function $t() {
|
|
6822
6815
|
return /* @__PURE__ */ f("svg", {
|
|
6823
6816
|
width: "10",
|
|
6824
6817
|
height: "12",
|
|
@@ -6841,7 +6834,7 @@ function en() {
|
|
|
6841
6834
|
})]
|
|
6842
6835
|
});
|
|
6843
6836
|
}
|
|
6844
|
-
function
|
|
6837
|
+
function en({ locked: e }) {
|
|
6845
6838
|
return /* @__PURE__ */ f("svg", {
|
|
6846
6839
|
width: "10",
|
|
6847
6840
|
height: "12",
|
|
@@ -6878,7 +6871,7 @@ function tn({ locked: e }) {
|
|
|
6878
6871
|
]
|
|
6879
6872
|
});
|
|
6880
6873
|
}
|
|
6881
|
-
function
|
|
6874
|
+
function tn() {
|
|
6882
6875
|
return /* @__PURE__ */ f("svg", {
|
|
6883
6876
|
width: "12",
|
|
6884
6877
|
height: "8",
|
|
@@ -6911,7 +6904,7 @@ function nn() {
|
|
|
6911
6904
|
]
|
|
6912
6905
|
});
|
|
6913
6906
|
}
|
|
6914
|
-
function
|
|
6907
|
+
function nn() {
|
|
6915
6908
|
return /* @__PURE__ */ f("svg", {
|
|
6916
6909
|
width: "11",
|
|
6917
6910
|
height: "11",
|
|
@@ -6932,7 +6925,7 @@ function rn() {
|
|
|
6932
6925
|
})]
|
|
6933
6926
|
});
|
|
6934
6927
|
}
|
|
6935
|
-
function
|
|
6928
|
+
function rn() {
|
|
6936
6929
|
return /* @__PURE__ */ f("svg", {
|
|
6937
6930
|
width: "10",
|
|
6938
6931
|
height: "10",
|
|
@@ -6988,7 +6981,7 @@ function an() {
|
|
|
6988
6981
|
}
|
|
6989
6982
|
//#endregion
|
|
6990
6983
|
//#region src/components/RoomPanel.tsx
|
|
6991
|
-
var
|
|
6984
|
+
var an = [
|
|
6992
6985
|
"north",
|
|
6993
6986
|
"northeast",
|
|
6994
6987
|
"east",
|
|
@@ -7001,7 +6994,7 @@ var on = [
|
|
|
7001
6994
|
"down",
|
|
7002
6995
|
"in",
|
|
7003
6996
|
"out"
|
|
7004
|
-
],
|
|
6997
|
+
], on = [
|
|
7005
6998
|
[
|
|
7006
6999
|
"northwest",
|
|
7007
7000
|
"north",
|
|
@@ -7017,7 +7010,7 @@ var on = [
|
|
|
7017
7010
|
"south",
|
|
7018
7011
|
"southeast"
|
|
7019
7012
|
]
|
|
7020
|
-
],
|
|
7013
|
+
], sn = [[
|
|
7021
7014
|
"up",
|
|
7022
7015
|
null,
|
|
7023
7016
|
"down"
|
|
@@ -7025,7 +7018,7 @@ var on = [
|
|
|
7025
7018
|
"in",
|
|
7026
7019
|
null,
|
|
7027
7020
|
"out"
|
|
7028
|
-
]],
|
|
7021
|
+
]], cn = {
|
|
7029
7022
|
north: "N",
|
|
7030
7023
|
northeast: "NE",
|
|
7031
7024
|
east: "E",
|
|
@@ -7038,29 +7031,29 @@ var on = [
|
|
|
7038
7031
|
down: "Dn",
|
|
7039
7032
|
in: "In",
|
|
7040
7033
|
out: "Out"
|
|
7041
|
-
},
|
|
7034
|
+
}, ln = [
|
|
7042
7035
|
"No door (click to set)",
|
|
7043
7036
|
"Open door",
|
|
7044
7037
|
"Closed door",
|
|
7045
7038
|
"Locked door"
|
|
7046
|
-
],
|
|
7039
|
+
], un = [
|
|
7047
7040
|
"",
|
|
7048
7041
|
"door-open",
|
|
7049
7042
|
"door-closed",
|
|
7050
7043
|
"door-locked"
|
|
7051
7044
|
];
|
|
7052
|
-
function
|
|
7053
|
-
let l = n.ids[0], p = O((e) => e.pending), [m, h] = i(a.name ?? ""), [g, _] = i(String(a.weight ?? 1)), [v, y] = i(a.symbol ?? ""), [b, x] = i(a.userData?.["system.fallback_symbol_color"] ?? null), [S, C] = i(!1), [w, T] = i(""), [E, k] = i(""), [A, j] = i({}), [M, N] = i(null), [P, F] = i("#ffffff"), [I, L] = i(1), [R,
|
|
7054
|
-
|
|
7055
|
-
let
|
|
7056
|
-
|
|
7057
|
-
let
|
|
7058
|
-
|
|
7059
|
-
let
|
|
7060
|
-
|
|
7045
|
+
function dn({ selection: n, room: a, map: o, sceneRef: s, pluginSections: c = [] }) {
|
|
7046
|
+
let l = n.ids[0], p = O((e) => e.pending), [m, h] = i(a.name ?? ""), [g, _] = i(String(a.weight ?? 1)), [v, y] = i(a.symbol ?? ""), [b, x] = i(a.userData?.["system.fallback_symbol_color"] ?? null), [S, C] = i(!1), [w, T] = i(""), [E, k] = i(""), [A, j] = i({}), [M, N] = i(null), [P, F] = i("#ffffff"), [I, L] = i(1), [R, ee] = i(!1), [z, B] = i(!1), V = r(k);
|
|
7047
|
+
V.current = k, t(() => (ft((e) => V.current(String(e))), () => ft(null)), []);
|
|
7048
|
+
let te = r(m);
|
|
7049
|
+
te.current = m;
|
|
7050
|
+
let ne = r(g);
|
|
7051
|
+
ne.current = g;
|
|
7052
|
+
let re = r(v);
|
|
7053
|
+
re.current = v, t(() => {
|
|
7061
7054
|
let e = a, t = l;
|
|
7062
7055
|
return () => {
|
|
7063
|
-
let n = !1, r =
|
|
7056
|
+
let n = !1, r = re.current;
|
|
7064
7057
|
r !== e.symbol && (Y({
|
|
7065
7058
|
kind: "setRoomField",
|
|
7066
7059
|
id: t,
|
|
@@ -7068,7 +7061,7 @@ function fn({ selection: n, room: a, map: o, sceneRef: s, pluginSections: c = []
|
|
|
7068
7061
|
from: e.symbol,
|
|
7069
7062
|
to: r
|
|
7070
7063
|
}, s.current), n = !0);
|
|
7071
|
-
let i =
|
|
7064
|
+
let i = te.current;
|
|
7072
7065
|
i !== e.name && (Y({
|
|
7073
7066
|
kind: "setRoomField",
|
|
7074
7067
|
id: t,
|
|
@@ -7076,7 +7069,7 @@ function fn({ selection: n, room: a, map: o, sceneRef: s, pluginSections: c = []
|
|
|
7076
7069
|
from: e.name,
|
|
7077
7070
|
to: i
|
|
7078
7071
|
}, s.current), n = !0);
|
|
7079
|
-
let a = Number(
|
|
7072
|
+
let a = Number(ne.current);
|
|
7080
7073
|
!Number.isNaN(a) && a !== e.weight && (Y({
|
|
7081
7074
|
kind: "setRoomField",
|
|
7082
7075
|
id: t,
|
|
@@ -7086,11 +7079,11 @@ function fn({ selection: n, room: a, map: o, sceneRef: s, pluginSections: c = []
|
|
|
7086
7079
|
}, s.current), n = !0), n && (s.current?.refresh(), D.bumpData());
|
|
7087
7080
|
};
|
|
7088
7081
|
}, [a]), t(() => {
|
|
7089
|
-
h(a.name ?? ""), _(String(a.weight ?? 1)), y(a.symbol ?? ""), x(a.userData?.["system.fallback_symbol_color"] ?? null), C(!1), T(""), k(""), j({}), N(null),
|
|
7082
|
+
h(a.name ?? ""), _(String(a.weight ?? 1)), y(a.symbol ?? ""), x(a.userData?.["system.fallback_symbol_color"] ?? null), C(!1), T(""), k(""), j({}), N(null), B(!1);
|
|
7090
7083
|
let e = D.getState().pending;
|
|
7091
7084
|
(e?.kind === "pickExit" || e?.kind === "pickSpecialExit") && D.setState({ pending: null });
|
|
7092
7085
|
}, [a]);
|
|
7093
|
-
let
|
|
7086
|
+
let ie = (e, t) => {
|
|
7094
7087
|
let n = a[e], r = t;
|
|
7095
7088
|
if (e === "weight" || e === "environment") {
|
|
7096
7089
|
let e = Number(t);
|
|
@@ -7104,7 +7097,7 @@ function fn({ selection: n, room: a, map: o, sceneRef: s, pluginSections: c = []
|
|
|
7104
7097
|
from: n,
|
|
7105
7098
|
to: r
|
|
7106
7099
|
}, s.current), s.current?.refresh(), D.bumpData(), D.setState({ status: `Updated ${e} on room ${l}` }));
|
|
7107
|
-
},
|
|
7100
|
+
}, H = (e) => {
|
|
7108
7101
|
e !== a.environment && (Y({
|
|
7109
7102
|
kind: "setRoomField",
|
|
7110
7103
|
id: l,
|
|
@@ -7112,7 +7105,7 @@ function fn({ selection: n, room: a, map: o, sceneRef: s, pluginSections: c = []
|
|
|
7112
7105
|
from: a.environment,
|
|
7113
7106
|
to: e
|
|
7114
7107
|
}, s.current), s.current?.refresh(), D.bumpData(), D.setState({ status: `Room ${l} environment → ${e}` }));
|
|
7115
|
-
},
|
|
7108
|
+
}, U = (e) => {
|
|
7116
7109
|
let t = "system.fallback_symbol_color", n = a.userData?.[t] ?? null, r = e;
|
|
7117
7110
|
n !== r && (Y({
|
|
7118
7111
|
kind: "setUserDataEntry",
|
|
@@ -7121,7 +7114,7 @@ function fn({ selection: n, room: a, map: o, sceneRef: s, pluginSections: c = []
|
|
|
7121
7114
|
from: n,
|
|
7122
7115
|
to: r
|
|
7123
7116
|
}, s.current), s.current?.refresh(), D.bumpData());
|
|
7124
|
-
},
|
|
7117
|
+
}, W = (e, t) => {
|
|
7125
7118
|
if (!o.rooms[t]) return;
|
|
7126
7119
|
let n = a[e];
|
|
7127
7120
|
Y({
|
|
@@ -7132,7 +7125,7 @@ function fn({ selection: n, room: a, map: o, sceneRef: s, pluginSections: c = []
|
|
|
7132
7125
|
previous: n,
|
|
7133
7126
|
reverse: null
|
|
7134
7127
|
}, s.current), s.current?.refresh(), D.bumpData(), D.setState({ status: `Exit ${e} → room ${t} added.` });
|
|
7135
|
-
},
|
|
7128
|
+
}, G = (e, t, n) => {
|
|
7136
7129
|
Y({
|
|
7137
7130
|
kind: "setDoor",
|
|
7138
7131
|
roomId: l,
|
|
@@ -7179,7 +7172,7 @@ function fn({ selection: n, room: a, map: o, sceneRef: s, pluginSections: c = []
|
|
|
7179
7172
|
roomId: l,
|
|
7180
7173
|
dir: e,
|
|
7181
7174
|
stub: !0
|
|
7182
|
-
}, s.current) :
|
|
7175
|
+
}, s.current) : X([{
|
|
7183
7176
|
kind: "removeExit",
|
|
7184
7177
|
fromId: l,
|
|
7185
7178
|
dir: e,
|
|
@@ -7260,8 +7253,8 @@ function fn({ selection: n, room: a, map: o, sceneRef: s, pluginSections: c = []
|
|
|
7260
7253
|
},
|
|
7261
7254
|
style: a.customLinesStyle?.[i] ?? 1,
|
|
7262
7255
|
arrow: a.customLinesArrow?.[i] ?? !1
|
|
7263
|
-
} : null, u =
|
|
7264
|
-
if (
|
|
7256
|
+
} : null, u = Le(P), d = null, f = _e[i];
|
|
7257
|
+
if (z && f) {
|
|
7265
7258
|
let e = a?.[f];
|
|
7266
7259
|
if (e !== void 0 && e !== -1) {
|
|
7267
7260
|
let t = o.rooms[e], r = me[f];
|
|
@@ -7318,7 +7311,7 @@ function fn({ selection: n, room: a, map: o, sceneRef: s, pluginSections: c = []
|
|
|
7318
7311
|
} });
|
|
7319
7312
|
return;
|
|
7320
7313
|
}
|
|
7321
|
-
F("#ffffff"), L(1),
|
|
7314
|
+
F("#ffffff"), L(1), ee(!1), B(!1), N(e);
|
|
7322
7315
|
}, be = (e) => /* @__PURE__ */ f("div", {
|
|
7323
7316
|
className: "cl-form cl-form-inline",
|
|
7324
7317
|
children: [
|
|
@@ -7373,7 +7366,7 @@ function fn({ selection: n, room: a, map: o, sceneRef: s, pluginSections: c = []
|
|
|
7373
7366
|
}), /* @__PURE__ */ d("input", {
|
|
7374
7367
|
type: "checkbox",
|
|
7375
7368
|
checked: R,
|
|
7376
|
-
onChange: (e) =>
|
|
7369
|
+
onChange: (e) => ee(e.target.checked)
|
|
7377
7370
|
})]
|
|
7378
7371
|
}),
|
|
7379
7372
|
/* @__PURE__ */ f("div", {
|
|
@@ -7384,8 +7377,8 @@ function fn({ selection: n, room: a, map: o, sceneRef: s, pluginSections: c = []
|
|
|
7384
7377
|
children: "Both ways"
|
|
7385
7378
|
}), /* @__PURE__ */ d("input", {
|
|
7386
7379
|
type: "checkbox",
|
|
7387
|
-
checked:
|
|
7388
|
-
onChange: (e) =>
|
|
7380
|
+
checked: z,
|
|
7381
|
+
onChange: (e) => B(e.target.checked)
|
|
7389
7382
|
})]
|
|
7390
7383
|
}),
|
|
7391
7384
|
/* @__PURE__ */ f("div", {
|
|
@@ -7415,7 +7408,7 @@ function fn({ selection: n, room: a, map: o, sceneRef: s, pluginSections: c = []
|
|
|
7415
7408
|
className: "cc-header",
|
|
7416
7409
|
children: [/* @__PURE__ */ d("span", {
|
|
7417
7410
|
className: "cc-label",
|
|
7418
|
-
children:
|
|
7411
|
+
children: cn[e]
|
|
7419
7412
|
}), /* @__PURE__ */ f("span", {
|
|
7420
7413
|
className: "cc-header-btn-slot",
|
|
7421
7414
|
children: [
|
|
@@ -7455,7 +7448,7 @@ function fn({ selection: n, room: a, map: o, sceneRef: s, pluginSections: c = []
|
|
|
7455
7448
|
/* @__PURE__ */ f("div", {
|
|
7456
7449
|
className: "cc-middle",
|
|
7457
7450
|
children: [
|
|
7458
|
-
r && /* @__PURE__ */ d(
|
|
7451
|
+
r && /* @__PURE__ */ d(Me, {
|
|
7459
7452
|
id: n,
|
|
7460
7453
|
className: "cc-target"
|
|
7461
7454
|
}),
|
|
@@ -7476,7 +7469,7 @@ function fn({ selection: n, room: a, map: o, sceneRef: s, pluginSections: c = []
|
|
|
7476
7469
|
})),
|
|
7477
7470
|
onBlur: (n) => {
|
|
7478
7471
|
let r = parseInt(n.target.value, 10);
|
|
7479
|
-
isNaN(r) || (
|
|
7472
|
+
isNaN(r) || (W(t, r), j((t) => ({
|
|
7480
7473
|
...t,
|
|
7481
7474
|
[e]: ""
|
|
7482
7475
|
})));
|
|
@@ -7493,7 +7486,7 @@ function fn({ selection: n, room: a, map: o, sceneRef: s, pluginSections: c = []
|
|
|
7493
7486
|
fromId: l,
|
|
7494
7487
|
dir: t
|
|
7495
7488
|
} }),
|
|
7496
|
-
children: /* @__PURE__ */ d(
|
|
7489
|
+
children: /* @__PURE__ */ d(rn, {})
|
|
7497
7490
|
})]
|
|
7498
7491
|
})
|
|
7499
7492
|
]
|
|
@@ -7503,11 +7496,11 @@ function fn({ selection: n, room: a, map: o, sceneRef: s, pluginSections: c = []
|
|
|
7503
7496
|
children: [
|
|
7504
7497
|
/* @__PURE__ */ d("button", {
|
|
7505
7498
|
type: "button",
|
|
7506
|
-
className: `cc-door-btn ${
|
|
7507
|
-
title: c ?
|
|
7499
|
+
className: `cc-door-btn ${un[u]}${c ? "" : " cc-dim"}`,
|
|
7500
|
+
title: c ? ln[u] : void 0,
|
|
7508
7501
|
disabled: !c,
|
|
7509
|
-
onClick: c ? () =>
|
|
7510
|
-
children: /* @__PURE__ */ d(
|
|
7502
|
+
onClick: c ? () => G(t, u, (u + 1) % 4) : void 0,
|
|
7503
|
+
children: /* @__PURE__ */ d($t, {})
|
|
7511
7504
|
}),
|
|
7512
7505
|
/* @__PURE__ */ d("button", {
|
|
7513
7506
|
type: "button",
|
|
@@ -7515,11 +7508,11 @@ function fn({ selection: n, room: a, map: o, sceneRef: s, pluginSections: c = []
|
|
|
7515
7508
|
title: c ? h ? "Locked — click to unlock" : "Unlocked — click to lock" : void 0,
|
|
7516
7509
|
disabled: !c,
|
|
7517
7510
|
onClick: c ? () => oe(t, h) : void 0,
|
|
7518
|
-
children: /* @__PURE__ */ d(
|
|
7511
|
+
children: /* @__PURE__ */ d(en, { locked: h })
|
|
7519
7512
|
}),
|
|
7520
7513
|
/* @__PURE__ */ f("span", {
|
|
7521
7514
|
className: `cc-weight-wrap${c ? "" : " cc-dim"}`,
|
|
7522
|
-
children: [/* @__PURE__ */ d(
|
|
7515
|
+
children: [/* @__PURE__ */ d(tn, {}), /* @__PURE__ */ d("input", {
|
|
7523
7516
|
type: "number",
|
|
7524
7517
|
className: "cc-weight",
|
|
7525
7518
|
min: 1,
|
|
@@ -7561,16 +7554,16 @@ function fn({ selection: n, room: a, map: o, sceneRef: s, pluginSections: c = []
|
|
|
7561
7554
|
let e = s.current;
|
|
7562
7555
|
e && (e.renderer.backend.viewport.panToMapPoint(a.x, -a.y), e.refresh());
|
|
7563
7556
|
},
|
|
7564
|
-
children: /* @__PURE__ */ d(
|
|
7557
|
+
children: /* @__PURE__ */ d(nn, {})
|
|
7565
7558
|
})]
|
|
7566
7559
|
})]
|
|
7567
7560
|
}),
|
|
7568
|
-
/* @__PURE__ */ d(
|
|
7561
|
+
/* @__PURE__ */ d(Z, {
|
|
7569
7562
|
label: "Name",
|
|
7570
7563
|
children: /* @__PURE__ */ d("input", {
|
|
7571
7564
|
value: m,
|
|
7572
7565
|
onChange: (e) => h(e.target.value),
|
|
7573
|
-
onBlur: () =>
|
|
7566
|
+
onBlur: () => ie("name", m),
|
|
7574
7567
|
onKeyDown: (e) => {
|
|
7575
7568
|
e.key === "Enter" && e.target.blur();
|
|
7576
7569
|
}
|
|
@@ -7597,16 +7590,16 @@ function fn({ selection: n, room: a, map: o, sceneRef: s, pluginSections: c = []
|
|
|
7597
7590
|
className: "env-id-label",
|
|
7598
7591
|
children: ["#", a.environment]
|
|
7599
7592
|
}),
|
|
7600
|
-
S && /* @__PURE__ */ d(
|
|
7593
|
+
S && /* @__PURE__ */ d(Qt, {
|
|
7601
7594
|
map: o,
|
|
7602
7595
|
sceneRef: s,
|
|
7603
7596
|
currentEnvId: a.environment,
|
|
7604
|
-
onSelect:
|
|
7597
|
+
onSelect: H,
|
|
7605
7598
|
onClose: () => C(!1)
|
|
7606
7599
|
})
|
|
7607
7600
|
]
|
|
7608
7601
|
})]
|
|
7609
|
-
}), /* @__PURE__ */ d(
|
|
7602
|
+
}), /* @__PURE__ */ d(Z, {
|
|
7610
7603
|
label: "Symbol",
|
|
7611
7604
|
children: /* @__PURE__ */ f("div", {
|
|
7612
7605
|
className: "symbol-row",
|
|
@@ -7615,7 +7608,7 @@ function fn({ selection: n, room: a, map: o, sceneRef: s, pluginSections: c = []
|
|
|
7615
7608
|
value: v,
|
|
7616
7609
|
maxLength: 4,
|
|
7617
7610
|
onChange: (e) => y(e.target.value),
|
|
7618
|
-
onBlur: () =>
|
|
7611
|
+
onBlur: () => ie("symbol", v)
|
|
7619
7612
|
}),
|
|
7620
7613
|
/* @__PURE__ */ d("input", {
|
|
7621
7614
|
type: "color",
|
|
@@ -7624,7 +7617,7 @@ function fn({ selection: n, room: a, map: o, sceneRef: s, pluginSections: c = []
|
|
|
7624
7617
|
title: "Symbol color (stored in userData as system.fallback_symbol_color)",
|
|
7625
7618
|
onChange: (e) => x(e.target.value),
|
|
7626
7619
|
onBlur: () => {
|
|
7627
|
-
b !== null &&
|
|
7620
|
+
b !== null && U(b);
|
|
7628
7621
|
}
|
|
7629
7622
|
}),
|
|
7630
7623
|
/* @__PURE__ */ d("button", {
|
|
@@ -7633,7 +7626,7 @@ function fn({ selection: n, room: a, map: o, sceneRef: s, pluginSections: c = []
|
|
|
7633
7626
|
style: { visibility: b === null ? "hidden" : "visible" },
|
|
7634
7627
|
title: "Clear symbol color",
|
|
7635
7628
|
onClick: () => {
|
|
7636
|
-
x(null),
|
|
7629
|
+
x(null), U(null);
|
|
7637
7630
|
},
|
|
7638
7631
|
children: "×"
|
|
7639
7632
|
})
|
|
@@ -7644,7 +7637,7 @@ function fn({ selection: n, room: a, map: o, sceneRef: s, pluginSections: c = []
|
|
|
7644
7637
|
/* @__PURE__ */ d("h4", { children: "Exits" }),
|
|
7645
7638
|
/* @__PURE__ */ d("div", {
|
|
7646
7639
|
className: "compass-rose",
|
|
7647
|
-
children:
|
|
7640
|
+
children: on.flat().map((e, t) => e === null ? /* @__PURE__ */ f("div", {
|
|
7648
7641
|
className: "compass-cell compass-center",
|
|
7649
7642
|
children: [/* @__PURE__ */ d("button", {
|
|
7650
7643
|
type: "button",
|
|
@@ -7657,7 +7650,7 @@ function fn({ selection: n, room: a, map: o, sceneRef: s, pluginSections: c = []
|
|
|
7657
7650
|
lock: !a.isLocked
|
|
7658
7651
|
}, s.current), s.current?.refresh(), D.bumpData();
|
|
7659
7652
|
},
|
|
7660
|
-
children: /* @__PURE__ */ d(
|
|
7653
|
+
children: /* @__PURE__ */ d(en, { locked: a.isLocked })
|
|
7661
7654
|
}), /* @__PURE__ */ d("input", {
|
|
7662
7655
|
type: "number",
|
|
7663
7656
|
className: "cc-room-weight",
|
|
@@ -7665,16 +7658,16 @@ function fn({ selection: n, room: a, map: o, sceneRef: s, pluginSections: c = []
|
|
|
7665
7658
|
value: g,
|
|
7666
7659
|
title: "Room weight",
|
|
7667
7660
|
onChange: (e) => _(e.target.value),
|
|
7668
|
-
onBlur: () =>
|
|
7661
|
+
onBlur: () => ie("weight", g),
|
|
7669
7662
|
onKeyDown: (e) => e.key === "Enter" && e.target.blur()
|
|
7670
7663
|
}, `${l}-w`)]
|
|
7671
7664
|
}, t) : xe(e))
|
|
7672
7665
|
}),
|
|
7673
7666
|
/* @__PURE__ */ d("div", {
|
|
7674
7667
|
className: "compass-extra",
|
|
7675
|
-
children:
|
|
7668
|
+
children: sn.flat().map((e, t) => e === null ? /* @__PURE__ */ d("div", { className: "compass-vert-spacer" }, t) : xe(e))
|
|
7676
7669
|
}),
|
|
7677
|
-
M !== null &&
|
|
7670
|
+
M !== null && an.includes(M) && be(M),
|
|
7678
7671
|
/* @__PURE__ */ d("h4", { children: "Special Exits" }),
|
|
7679
7672
|
/* @__PURE__ */ f("div", {
|
|
7680
7673
|
className: "special-exits-list",
|
|
@@ -7711,7 +7704,7 @@ function fn({ selection: n, room: a, map: o, sceneRef: s, pluginSections: c = []
|
|
|
7711
7704
|
}),
|
|
7712
7705
|
/* @__PURE__ */ d("div", {
|
|
7713
7706
|
className: "cc-middle",
|
|
7714
|
-
children: /* @__PURE__ */ d(
|
|
7707
|
+
children: /* @__PURE__ */ d(Me, {
|
|
7715
7708
|
id: n,
|
|
7716
7709
|
className: "cc-target"
|
|
7717
7710
|
})
|
|
@@ -7721,14 +7714,14 @@ function fn({ selection: n, room: a, map: o, sceneRef: s, pluginSections: c = []
|
|
|
7721
7714
|
children: [
|
|
7722
7715
|
/* @__PURE__ */ d("button", {
|
|
7723
7716
|
type: "button",
|
|
7724
|
-
className: `cc-door-btn ${
|
|
7725
|
-
title:
|
|
7717
|
+
className: `cc-door-btn ${un[r]}`,
|
|
7718
|
+
title: ln[r],
|
|
7726
7719
|
onClick: () => de(t, r, (r + 1) % 4),
|
|
7727
|
-
children: /* @__PURE__ */ d(
|
|
7720
|
+
children: /* @__PURE__ */ d($t, {})
|
|
7728
7721
|
}),
|
|
7729
7722
|
/* @__PURE__ */ f("span", {
|
|
7730
7723
|
className: "cc-weight-wrap",
|
|
7731
|
-
children: [/* @__PURE__ */ d(
|
|
7724
|
+
children: [/* @__PURE__ */ d(tn, {}), /* @__PURE__ */ d("input", {
|
|
7732
7725
|
type: "number",
|
|
7733
7726
|
className: "cc-weight",
|
|
7734
7727
|
min: 1,
|
|
@@ -7778,7 +7771,7 @@ function fn({ selection: n, room: a, map: o, sceneRef: s, pluginSections: c = []
|
|
|
7778
7771
|
fromId: l
|
|
7779
7772
|
} });
|
|
7780
7773
|
},
|
|
7781
|
-
children: /* @__PURE__ */ d(
|
|
7774
|
+
children: /* @__PURE__ */ d(rn, {})
|
|
7782
7775
|
})]
|
|
7783
7776
|
}),
|
|
7784
7777
|
/* @__PURE__ */ d("button", {
|
|
@@ -7835,7 +7828,7 @@ function fn({ selection: n, room: a, map: o, sceneRef: s, pluginSections: c = []
|
|
|
7835
7828
|
sceneRef: s
|
|
7836
7829
|
}) }, t.id)),
|
|
7837
7830
|
/* @__PURE__ */ d("h4", { children: "User Data" }),
|
|
7838
|
-
/* @__PURE__ */ d(
|
|
7831
|
+
/* @__PURE__ */ d(Fe, {
|
|
7839
7832
|
data: a.userData,
|
|
7840
7833
|
onCommit: (e, t, n) => {
|
|
7841
7834
|
Y({
|
|
@@ -7852,7 +7845,7 @@ function fn({ selection: n, room: a, map: o, sceneRef: s, pluginSections: c = []
|
|
|
7852
7845
|
}
|
|
7853
7846
|
//#endregion
|
|
7854
7847
|
//#region src/components/SidePanel.tsx
|
|
7855
|
-
var
|
|
7848
|
+
var fn = [
|
|
7856
7849
|
{
|
|
7857
7850
|
id: "selection",
|
|
7858
7851
|
label: "Sel"
|
|
@@ -7874,11 +7867,11 @@ var pn = [
|
|
|
7874
7867
|
label: "Map"
|
|
7875
7868
|
}
|
|
7876
7869
|
];
|
|
7877
|
-
function
|
|
7870
|
+
function pn({ sceneRef: e, extraTabs: t = [], pluginRoomSections: n = [] }) {
|
|
7878
7871
|
let r = O((e) => e.selection), i = O((e) => e.map), a = O((e) => e.activeTool), o = O((e) => e.pending), s = O((e) => e.sidebarTab), c = O((e) => e.panelCollapsed), l = O((e) => e.undo.length);
|
|
7879
7872
|
O((e) => e.dataVersion);
|
|
7880
7873
|
let u = i ? Object.keys(i.mCustomEnvColors).length : 0, p = i ? Object.keys(i.areaNames).length : 0;
|
|
7881
|
-
if (a === "customLine" && o?.kind === "customLine") return /* @__PURE__ */ d(
|
|
7874
|
+
if (a === "customLine" && o?.kind === "customLine") return /* @__PURE__ */ d(Bt, {
|
|
7882
7875
|
pending: o,
|
|
7883
7876
|
sceneRef: e
|
|
7884
7877
|
});
|
|
@@ -7892,7 +7885,7 @@ function mn({ sceneRef: e, extraTabs: t = [], pluginRoomSections: n = [] }) {
|
|
|
7892
7885
|
children: "◀"
|
|
7893
7886
|
}), /* @__PURE__ */ d("div", {
|
|
7894
7887
|
className: "side-panel-tabs side-panel-tabs--vert",
|
|
7895
|
-
children: [...
|
|
7888
|
+
children: [...fn, ...t].map((e) => /* @__PURE__ */ d("button", {
|
|
7896
7889
|
type: "button",
|
|
7897
7890
|
className: `side-panel-tab${s === e.id ? " active" : ""}`,
|
|
7898
7891
|
onClick: () => D.setState({
|
|
@@ -7962,19 +7955,19 @@ function mn({ sceneRef: e, extraTabs: t = [], pluginRoomSections: n = [] }) {
|
|
|
7962
7955
|
});
|
|
7963
7956
|
if (s === "areas") return /* @__PURE__ */ f("div", {
|
|
7964
7957
|
className: "side-panel",
|
|
7965
|
-
children: [m, /* @__PURE__ */ d(
|
|
7958
|
+
children: [m, /* @__PURE__ */ d(Re, { sceneRef: e })]
|
|
7966
7959
|
});
|
|
7967
7960
|
if (s === "envs") return /* @__PURE__ */ f("div", {
|
|
7968
7961
|
className: "side-panel",
|
|
7969
|
-
children: [m, /* @__PURE__ */ d(
|
|
7962
|
+
children: [m, /* @__PURE__ */ d(Ve, { sceneRef: e })]
|
|
7970
7963
|
});
|
|
7971
7964
|
if (s === "history") return /* @__PURE__ */ f("div", {
|
|
7972
7965
|
className: "side-panel",
|
|
7973
|
-
children: [m, /* @__PURE__ */ d(
|
|
7966
|
+
children: [m, /* @__PURE__ */ d(We, { sceneRef: e })]
|
|
7974
7967
|
});
|
|
7975
7968
|
if (s === "map") return /* @__PURE__ */ f("div", {
|
|
7976
7969
|
className: "side-panel",
|
|
7977
|
-
children: [m, /* @__PURE__ */ d(
|
|
7970
|
+
children: [m, /* @__PURE__ */ d(Je, { sceneRef: e })]
|
|
7978
7971
|
});
|
|
7979
7972
|
let h = t.find((e) => e.id === s);
|
|
7980
7973
|
if (h) return /* @__PURE__ */ f("div", {
|
|
@@ -7986,7 +7979,7 @@ function mn({ sceneRef: e, extraTabs: t = [], pluginRoomSections: n = [] }) {
|
|
|
7986
7979
|
});
|
|
7987
7980
|
if (r?.kind === "label") return /* @__PURE__ */ f("div", {
|
|
7988
7981
|
className: "side-panel",
|
|
7989
|
-
children: [m, /* @__PURE__ */ d(
|
|
7982
|
+
children: [m, /* @__PURE__ */ d(Zt, {
|
|
7990
7983
|
selection: r,
|
|
7991
7984
|
sceneRef: e
|
|
7992
7985
|
})]
|
|
@@ -7995,7 +7988,7 @@ function mn({ sceneRef: e, extraTabs: t = [], pluginRoomSections: n = [] }) {
|
|
|
7995
7988
|
className: "side-panel",
|
|
7996
7989
|
children: [m, /* @__PURE__ */ d("div", {
|
|
7997
7990
|
className: "panel-content",
|
|
7998
|
-
children: /* @__PURE__ */ d(
|
|
7991
|
+
children: /* @__PURE__ */ d(Ye, {
|
|
7999
7992
|
selection: r,
|
|
8000
7993
|
map: i,
|
|
8001
7994
|
sceneRef: e
|
|
@@ -8006,7 +7999,7 @@ function mn({ sceneRef: e, extraTabs: t = [], pluginRoomSections: n = [] }) {
|
|
|
8006
7999
|
className: "side-panel",
|
|
8007
8000
|
children: [m, /* @__PURE__ */ d("div", {
|
|
8008
8001
|
className: "panel-content",
|
|
8009
|
-
children: /* @__PURE__ */ d(
|
|
8002
|
+
children: /* @__PURE__ */ d(Vt, {
|
|
8010
8003
|
selection: r,
|
|
8011
8004
|
map: i,
|
|
8012
8005
|
sceneRef: e
|
|
@@ -8034,12 +8027,12 @@ function mn({ sceneRef: e, extraTabs: t = [], pluginRoomSections: n = [] }) {
|
|
|
8034
8027
|
className: "hint",
|
|
8035
8028
|
children: "Select a room with the Select tool to edit its properties."
|
|
8036
8029
|
}),
|
|
8037
|
-
/* @__PURE__ */ d(
|
|
8030
|
+
/* @__PURE__ */ d(Pe, { activeTool: a })
|
|
8038
8031
|
]
|
|
8039
8032
|
})]
|
|
8040
8033
|
}) : /* @__PURE__ */ f("div", {
|
|
8041
8034
|
className: "side-panel",
|
|
8042
|
-
children: [m, /* @__PURE__ */ d(
|
|
8035
|
+
children: [m, /* @__PURE__ */ d(dn, {
|
|
8043
8036
|
selection: r,
|
|
8044
8037
|
room: g,
|
|
8045
8038
|
map: i,
|
|
@@ -8050,7 +8043,7 @@ function mn({ sceneRef: e, extraTabs: t = [], pluginRoomSections: n = [] }) {
|
|
|
8050
8043
|
}
|
|
8051
8044
|
//#endregion
|
|
8052
8045
|
//#region src/components/ContextMenu.tsx
|
|
8053
|
-
function
|
|
8046
|
+
function mn({ sceneRef: e }) {
|
|
8054
8047
|
let n = O((e) => e.contextMenu), a = r(null), [o, s] = i(null), [c, l] = i(null);
|
|
8055
8048
|
if (t(() => {
|
|
8056
8049
|
if (!n) {
|
|
@@ -8066,12 +8059,12 @@ function hn({ sceneRef: e }) {
|
|
|
8066
8059
|
window.removeEventListener("keydown", t), window.removeEventListener("mousedown", r, !0);
|
|
8067
8060
|
};
|
|
8068
8061
|
}, [n]), !n) return null;
|
|
8069
|
-
let
|
|
8062
|
+
let p = () => D.setState({ contextMenu: null }), m = () => {
|
|
8070
8063
|
if (n.kind !== "customLinePoint") return;
|
|
8071
8064
|
let t = D.getState();
|
|
8072
|
-
if (!t.map) return
|
|
8065
|
+
if (!t.map) return p();
|
|
8073
8066
|
let r = t.map.rooms[n.roomId], i = r?.customLines?.[n.exitName];
|
|
8074
|
-
if (!r || !i || n.pointIndex < 0 || n.pointIndex >= i.length) return
|
|
8067
|
+
if (!r || !i || n.pointIndex < 0 || n.pointIndex >= i.length) return p();
|
|
8075
8068
|
let a = r.customLinesColor?.[n.exitName] ?? {
|
|
8076
8069
|
spec: 1,
|
|
8077
8070
|
alpha: 255,
|
|
@@ -8108,7 +8101,7 @@ function hn({ sceneRef: e }) {
|
|
|
8108
8101
|
if (n.kind === "disambiguate") {
|
|
8109
8102
|
let t = D.getState(), r = (e) => {
|
|
8110
8103
|
e.kind === "room" ? D.setState({
|
|
8111
|
-
selection:
|
|
8104
|
+
selection: It(e),
|
|
8112
8105
|
contextMenu: {
|
|
8113
8106
|
kind: "room",
|
|
8114
8107
|
roomId: e.id,
|
|
@@ -8117,7 +8110,7 @@ function hn({ sceneRef: e }) {
|
|
|
8117
8110
|
},
|
|
8118
8111
|
sidebarTab: "selection"
|
|
8119
8112
|
}) : e.kind === "label" ? D.setState({
|
|
8120
|
-
selection:
|
|
8113
|
+
selection: It(e),
|
|
8121
8114
|
contextMenu: {
|
|
8122
8115
|
kind: "label",
|
|
8123
8116
|
areaId: e.areaId,
|
|
@@ -8127,10 +8120,10 @@ function hn({ sceneRef: e }) {
|
|
|
8127
8120
|
},
|
|
8128
8121
|
sidebarTab: "selection"
|
|
8129
8122
|
}) : D.setState({
|
|
8130
|
-
selection:
|
|
8123
|
+
selection: It(e),
|
|
8131
8124
|
contextMenu: null,
|
|
8132
8125
|
sidebarTab: "selection",
|
|
8133
|
-
status: `Selected ${
|
|
8126
|
+
status: `Selected ${Lt(e)}`
|
|
8134
8127
|
});
|
|
8135
8128
|
}, i = (n) => {
|
|
8136
8129
|
if (n.kind === "room") {
|
|
@@ -8141,7 +8134,7 @@ function hn({ sceneRef: e }) {
|
|
|
8141
8134
|
let t = (e.current?.reader.getLabelSnapshot(n.areaId, n.id))?.text?.trim();
|
|
8142
8135
|
return t ? `Label: "${t.length > 24 ? t.slice(0, 24) + "…" : t}"` : `Label ${n.id}`;
|
|
8143
8136
|
}
|
|
8144
|
-
return
|
|
8137
|
+
return Lt(n);
|
|
8145
8138
|
};
|
|
8146
8139
|
return /* @__PURE__ */ f("div", {
|
|
8147
8140
|
ref: a,
|
|
@@ -8173,7 +8166,7 @@ function hn({ sceneRef: e }) {
|
|
|
8173
8166
|
children: /* @__PURE__ */ d("button", {
|
|
8174
8167
|
type: "button",
|
|
8175
8168
|
className: "context-menu-item danger",
|
|
8176
|
-
onClick:
|
|
8169
|
+
onClick: m,
|
|
8177
8170
|
children: "Delete waypoint"
|
|
8178
8171
|
})
|
|
8179
8172
|
});
|
|
@@ -8296,7 +8289,7 @@ function hn({ sceneRef: e }) {
|
|
|
8296
8289
|
type: "button",
|
|
8297
8290
|
className: "context-menu-item danger",
|
|
8298
8291
|
onClick: () => {
|
|
8299
|
-
if (!t) return
|
|
8292
|
+
if (!t) return p();
|
|
8300
8293
|
Y({
|
|
8301
8294
|
kind: "deleteLabel",
|
|
8302
8295
|
areaId: n.areaId,
|
|
@@ -8314,19 +8307,19 @@ function hn({ sceneRef: e }) {
|
|
|
8314
8307
|
});
|
|
8315
8308
|
}
|
|
8316
8309
|
if (n.kind !== "room") return null;
|
|
8317
|
-
let
|
|
8318
|
-
|
|
8319
|
-
areaId:
|
|
8320
|
-
x: String(
|
|
8321
|
-
y: String(
|
|
8322
|
-
z: String(
|
|
8310
|
+
let h = D.getState(), g = h.map?.rooms[n.roomId], _ = h.map?.areaNames ?? {}, v = h.selection, y = v?.kind === "room" && v.ids.length > 1 && v.ids.includes(n.roomId) ? v.ids : null, b = () => {
|
|
8311
|
+
g && s({
|
|
8312
|
+
areaId: g.area,
|
|
8313
|
+
x: String(g.x),
|
|
8314
|
+
y: String(g.y),
|
|
8315
|
+
z: String(g.z)
|
|
8323
8316
|
});
|
|
8324
|
-
},
|
|
8317
|
+
}, x = () => {
|
|
8325
8318
|
let t = D.getState();
|
|
8326
|
-
if (!t.map) return
|
|
8319
|
+
if (!t.map) return p();
|
|
8327
8320
|
let r = t.map.rooms[n.roomId];
|
|
8328
|
-
if (!r) return
|
|
8329
|
-
let i = { ...r }, a =
|
|
8321
|
+
if (!r) return p();
|
|
8322
|
+
let i = { ...r }, a = Ae(t.map, n.roomId);
|
|
8330
8323
|
Y({
|
|
8331
8324
|
kind: "deleteRoom",
|
|
8332
8325
|
id: n.roomId,
|
|
@@ -8339,21 +8332,21 @@ function hn({ sceneRef: e }) {
|
|
|
8339
8332
|
status: `Deleted room ${n.roomId}`,
|
|
8340
8333
|
contextMenu: null
|
|
8341
8334
|
});
|
|
8342
|
-
},
|
|
8343
|
-
if (!o || !
|
|
8335
|
+
}, S = () => {
|
|
8336
|
+
if (!o || !g || !h.map) return;
|
|
8344
8337
|
let t = parseInt(o.x, 10), r = parseInt(o.y, 10), i = parseInt(o.z, 10);
|
|
8345
8338
|
if (isNaN(t) || isNaN(r) || isNaN(i)) return;
|
|
8346
8339
|
let a = [];
|
|
8347
|
-
if (
|
|
8348
|
-
let e = t -
|
|
8349
|
-
o.areaId !==
|
|
8340
|
+
if (y) {
|
|
8341
|
+
let e = t - g.x, n = r - g.y, s = i - g.z;
|
|
8342
|
+
o.areaId !== g.area && a.push({
|
|
8350
8343
|
kind: "moveRoomsToArea",
|
|
8351
|
-
roomIds:
|
|
8352
|
-
fromAreaId:
|
|
8344
|
+
roomIds: y,
|
|
8345
|
+
fromAreaId: g.area,
|
|
8353
8346
|
toAreaId: o.areaId
|
|
8354
8347
|
});
|
|
8355
|
-
for (let t of
|
|
8356
|
-
let r =
|
|
8348
|
+
for (let t of y) {
|
|
8349
|
+
let r = h.map.rooms[t];
|
|
8357
8350
|
if (!r) continue;
|
|
8358
8351
|
let i = r.x + e, o = r.y + n, c = r.z + s;
|
|
8359
8352
|
(i !== r.x || o !== r.y || c !== r.z) && a.push({
|
|
@@ -8369,33 +8362,33 @@ function hn({ sceneRef: e }) {
|
|
|
8369
8362
|
y: o,
|
|
8370
8363
|
z: c
|
|
8371
8364
|
}
|
|
8372
|
-
}), a.push(...
|
|
8365
|
+
}), a.push(...ke(h.map, t, e, n));
|
|
8373
8366
|
}
|
|
8374
8367
|
} else {
|
|
8375
|
-
o.areaId !==
|
|
8368
|
+
o.areaId !== g.area && a.push({
|
|
8376
8369
|
kind: "moveRoomsToArea",
|
|
8377
8370
|
roomIds: [n.roomId],
|
|
8378
|
-
fromAreaId:
|
|
8371
|
+
fromAreaId: g.area,
|
|
8379
8372
|
toAreaId: o.areaId
|
|
8380
8373
|
});
|
|
8381
|
-
let e = t -
|
|
8382
|
-
(t !==
|
|
8374
|
+
let e = t - g.x, s = r - g.y;
|
|
8375
|
+
(t !== g.x || r !== g.y || i !== g.z) && a.push({
|
|
8383
8376
|
kind: "moveRoom",
|
|
8384
8377
|
id: n.roomId,
|
|
8385
8378
|
from: {
|
|
8386
|
-
x:
|
|
8387
|
-
y:
|
|
8388
|
-
z:
|
|
8379
|
+
x: g.x,
|
|
8380
|
+
y: g.y,
|
|
8381
|
+
z: g.z
|
|
8389
8382
|
},
|
|
8390
8383
|
to: {
|
|
8391
8384
|
x: t,
|
|
8392
8385
|
y: r,
|
|
8393
8386
|
z: i
|
|
8394
8387
|
}
|
|
8395
|
-
}), a.push(...
|
|
8388
|
+
}), a.push(...ke(h.map, n.roomId, e, s));
|
|
8396
8389
|
}
|
|
8397
|
-
a.length > 0 && (
|
|
8398
|
-
let s = o.areaId !== (
|
|
8390
|
+
a.length > 0 && (X(a, e.current), e.current?.refresh(), D.bumpStructure(), D.setState({ status: y ? `Moved ${y.length} rooms to area ${o.areaId} (${t}, ${r}, ${i})` : `Moved room ${n.roomId} to area ${o.areaId} (${t}, ${r}, ${i})` }));
|
|
8391
|
+
let s = o.areaId !== (h.currentAreaId ?? g.area), c = i !== h.currentZ;
|
|
8399
8392
|
D.setState({
|
|
8400
8393
|
contextMenu: null,
|
|
8401
8394
|
currentAreaId: o.areaId,
|
|
@@ -8405,7 +8398,7 @@ function hn({ sceneRef: e }) {
|
|
|
8405
8398
|
mapY: -r
|
|
8406
8399
|
} : null
|
|
8407
8400
|
});
|
|
8408
|
-
},
|
|
8401
|
+
}, C = Object.entries(_).map(([e, t]) => ({
|
|
8409
8402
|
id: Number(e),
|
|
8410
8403
|
name: t
|
|
8411
8404
|
})).sort((e, t) => e.name.localeCompare(t.name));
|
|
@@ -8420,7 +8413,7 @@ function hn({ sceneRef: e }) {
|
|
|
8420
8413
|
children: [
|
|
8421
8414
|
/* @__PURE__ */ d("div", {
|
|
8422
8415
|
className: "context-menu-title",
|
|
8423
|
-
children:
|
|
8416
|
+
children: y ? `Move ${y.length} rooms to` : `Move room ${n.roomId} to`
|
|
8424
8417
|
}),
|
|
8425
8418
|
/* @__PURE__ */ f("div", {
|
|
8426
8419
|
className: "context-menu-field",
|
|
@@ -8430,7 +8423,7 @@ function hn({ sceneRef: e }) {
|
|
|
8430
8423
|
...t,
|
|
8431
8424
|
areaId: Number(e.target.value)
|
|
8432
8425
|
}),
|
|
8433
|
-
children:
|
|
8426
|
+
children: C.map(({ id: e, name: t }) => /* @__PURE__ */ d("option", {
|
|
8434
8427
|
value: e,
|
|
8435
8428
|
children: t
|
|
8436
8429
|
}, e))
|
|
@@ -8484,7 +8477,7 @@ function hn({ sceneRef: e }) {
|
|
|
8484
8477
|
}), /* @__PURE__ */ d("button", {
|
|
8485
8478
|
type: "button",
|
|
8486
8479
|
className: "context-menu-btn primary",
|
|
8487
|
-
onClick:
|
|
8480
|
+
onClick: S,
|
|
8488
8481
|
children: "Move"
|
|
8489
8482
|
})]
|
|
8490
8483
|
})
|
|
@@ -8498,34 +8491,61 @@ function hn({ sceneRef: e }) {
|
|
|
8498
8491
|
},
|
|
8499
8492
|
onContextMenu: (e) => e.preventDefault(),
|
|
8500
8493
|
children: [
|
|
8501
|
-
/* @__PURE__ */
|
|
8494
|
+
/* @__PURE__ */ d("div", {
|
|
8502
8495
|
className: "context-menu-title",
|
|
8503
|
-
children:
|
|
8496
|
+
children: y ? `${y.length} rooms` : `Room ${n.roomId}`
|
|
8504
8497
|
}),
|
|
8505
8498
|
/* @__PURE__ */ d("button", {
|
|
8506
8499
|
type: "button",
|
|
8507
8500
|
className: "context-menu-item",
|
|
8508
|
-
onClick:
|
|
8501
|
+
onClick: b,
|
|
8509
8502
|
children: "Move to…"
|
|
8510
8503
|
}),
|
|
8504
|
+
y && /* @__PURE__ */ f(u, { children: [/* @__PURE__ */ d("button", {
|
|
8505
|
+
type: "button",
|
|
8506
|
+
className: "context-menu-item",
|
|
8507
|
+
onClick: () => D.setState({
|
|
8508
|
+
spreadShrink: {
|
|
8509
|
+
mode: "spread",
|
|
8510
|
+
factor: 2,
|
|
8511
|
+
centerMode: "centroid",
|
|
8512
|
+
anchorRoomId: null
|
|
8513
|
+
},
|
|
8514
|
+
contextMenu: null
|
|
8515
|
+
}),
|
|
8516
|
+
children: "Spread…"
|
|
8517
|
+
}), /* @__PURE__ */ d("button", {
|
|
8518
|
+
type: "button",
|
|
8519
|
+
className: "context-menu-item",
|
|
8520
|
+
onClick: () => D.setState({
|
|
8521
|
+
spreadShrink: {
|
|
8522
|
+
mode: "shrink",
|
|
8523
|
+
factor: .5,
|
|
8524
|
+
centerMode: "centroid",
|
|
8525
|
+
anchorRoomId: null
|
|
8526
|
+
},
|
|
8527
|
+
contextMenu: null
|
|
8528
|
+
}),
|
|
8529
|
+
children: "Shrink…"
|
|
8530
|
+
})] }),
|
|
8511
8531
|
/* @__PURE__ */ d("button", {
|
|
8512
8532
|
type: "button",
|
|
8513
8533
|
className: "context-menu-item danger",
|
|
8514
|
-
onClick:
|
|
8515
|
-
children: "Delete room"
|
|
8534
|
+
onClick: x,
|
|
8535
|
+
children: y ? `Delete ${y.length} rooms` : "Delete room"
|
|
8516
8536
|
})
|
|
8517
8537
|
]
|
|
8518
8538
|
});
|
|
8519
8539
|
}
|
|
8520
8540
|
//#endregion
|
|
8521
8541
|
//#region src/editor/session.ts
|
|
8522
|
-
var
|
|
8542
|
+
var hn = "mudlet-map-editor", gn = "sessions", _n = 2;
|
|
8523
8543
|
function vn() {
|
|
8524
8544
|
return new Promise((e, t) => {
|
|
8525
|
-
let n = indexedDB.open(
|
|
8545
|
+
let n = indexedDB.open(hn, _n);
|
|
8526
8546
|
n.onupgradeneeded = (e) => {
|
|
8527
8547
|
let t = n.result;
|
|
8528
|
-
e.oldVersion < 2 && t.objectStoreNames.contains(
|
|
8548
|
+
e.oldVersion < 2 && t.objectStoreNames.contains(gn) && t.deleteObjectStore(gn), t.createObjectStore(gn, { keyPath: "id" });
|
|
8529
8549
|
}, n.onsuccess = () => e(n.result), n.onerror = () => t(n.error);
|
|
8530
8550
|
});
|
|
8531
8551
|
}
|
|
@@ -8535,7 +8555,7 @@ function yn(e) {
|
|
|
8535
8555
|
return t;
|
|
8536
8556
|
}
|
|
8537
8557
|
async function bn(e, t, n, r, i, a) {
|
|
8538
|
-
let o =
|
|
8558
|
+
let o = H(t), s = o.buffer.slice(o.byteOffset, o.byteOffset + o.byteLength), c = a ?? crypto.randomUUID(), l = {
|
|
8539
8559
|
id: c,
|
|
8540
8560
|
fileName: e,
|
|
8541
8561
|
mapBytes: s,
|
|
@@ -8547,8 +8567,8 @@ async function bn(e, t, n, r, i, a) {
|
|
|
8547
8567
|
roomCount: Object.keys(t.rooms).length
|
|
8548
8568
|
}, u = await vn();
|
|
8549
8569
|
return new Promise((e, t) => {
|
|
8550
|
-
let n = u.transaction(
|
|
8551
|
-
n.objectStore(
|
|
8570
|
+
let n = u.transaction(gn, "readwrite");
|
|
8571
|
+
n.objectStore(gn).put(l), n.oncomplete = () => {
|
|
8552
8572
|
u.close(), e(c);
|
|
8553
8573
|
}, n.onerror = () => {
|
|
8554
8574
|
u.close(), t(n.error);
|
|
@@ -8558,7 +8578,7 @@ async function bn(e, t, n, r, i, a) {
|
|
|
8558
8578
|
async function xn() {
|
|
8559
8579
|
let e = await vn();
|
|
8560
8580
|
return new Promise((t, n) => {
|
|
8561
|
-
let r = e.transaction(
|
|
8581
|
+
let r = e.transaction(gn, "readonly").objectStore(gn).getAll();
|
|
8562
8582
|
r.onsuccess = () => {
|
|
8563
8583
|
e.close(), t(r.result.sort((e, t) => t.savedAt - e.savedAt));
|
|
8564
8584
|
}, r.onerror = () => {
|
|
@@ -8569,8 +8589,8 @@ async function xn() {
|
|
|
8569
8589
|
async function Sn() {
|
|
8570
8590
|
let e = await vn();
|
|
8571
8591
|
return new Promise((t, n) => {
|
|
8572
|
-
let r = e.transaction(
|
|
8573
|
-
r.objectStore(
|
|
8592
|
+
let r = e.transaction(gn, "readwrite");
|
|
8593
|
+
r.objectStore(gn).clear(), r.oncomplete = () => {
|
|
8574
8594
|
e.close(), t();
|
|
8575
8595
|
}, r.onerror = () => {
|
|
8576
8596
|
e.close(), n(r.error);
|
|
@@ -8580,8 +8600,8 @@ async function Sn() {
|
|
|
8580
8600
|
async function Cn(e) {
|
|
8581
8601
|
let t = await vn();
|
|
8582
8602
|
return new Promise((n, r) => {
|
|
8583
|
-
let i = t.transaction(
|
|
8584
|
-
i.objectStore(
|
|
8603
|
+
let i = t.transaction(gn, "readwrite");
|
|
8604
|
+
i.objectStore(gn).delete(e), i.oncomplete = () => {
|
|
8585
8605
|
t.close(), n();
|
|
8586
8606
|
}, i.onerror = () => {
|
|
8587
8607
|
t.close(), r(i.error);
|
|
@@ -8589,7 +8609,7 @@ async function Cn(e) {
|
|
|
8589
8609
|
});
|
|
8590
8610
|
}
|
|
8591
8611
|
function wn(e) {
|
|
8592
|
-
let t =
|
|
8612
|
+
let t = ie(e.mapBytes);
|
|
8593
8613
|
if (Object.keys(e.imageSrcs).length > 0) for (let n of Object.values(t.labels)) for (let t of n) {
|
|
8594
8614
|
let n = e.imageSrcs[String(t.id)];
|
|
8595
8615
|
n && (t.imageSrc = n);
|
|
@@ -8782,46 +8802,46 @@ function An({ sceneRef: e }) {
|
|
|
8782
8802
|
};
|
|
8783
8803
|
return window.addEventListener("editor:swatchRoomPicked", e), () => window.removeEventListener("editor:swatchRoomPicked", e);
|
|
8784
8804
|
}, []);
|
|
8785
|
-
let
|
|
8805
|
+
let ee = (t) => {
|
|
8786
8806
|
let n = e.current?.reader;
|
|
8787
8807
|
return n ? n.getColorValue(t) : "rgb(114,1,0)";
|
|
8788
|
-
},
|
|
8808
|
+
}, z = (e, t, n) => {
|
|
8789
8809
|
let r = t === void 0 ? o : t, i = n === void 0 ? s : n;
|
|
8790
8810
|
D.setState({
|
|
8791
8811
|
swatchSets: e,
|
|
8792
8812
|
activeSwatchSetId: r,
|
|
8793
8813
|
activeSwatchId: i
|
|
8794
8814
|
}), w(e, r, i);
|
|
8795
|
-
},
|
|
8815
|
+
}, B = () => {
|
|
8796
8816
|
let e = v.trim() || "New Set", t = crypto.randomUUID();
|
|
8797
|
-
|
|
8817
|
+
z([...n, {
|
|
8798
8818
|
id: t,
|
|
8799
8819
|
name: e,
|
|
8800
8820
|
swatches: []
|
|
8801
8821
|
}], t, null), y(""), _(!1);
|
|
8802
|
-
},
|
|
8803
|
-
R &&
|
|
8822
|
+
}, V = (e) => {
|
|
8823
|
+
R && z(n.map((t) => t.id === R.id ? {
|
|
8804
8824
|
...t,
|
|
8805
8825
|
name: e
|
|
8806
8826
|
} : t));
|
|
8807
|
-
},
|
|
8827
|
+
}, te = () => {
|
|
8808
8828
|
if (!R || n.length <= 1 || !window.confirm(`Delete set "${R.name}"?`)) return;
|
|
8809
8829
|
let e = n.filter((e) => e.id !== R.id);
|
|
8810
|
-
|
|
8811
|
-
},
|
|
8830
|
+
z(e, e[0]?.id ?? null, null);
|
|
8831
|
+
}, ne = (e) => {
|
|
8812
8832
|
D.setState({
|
|
8813
8833
|
activeSwatchSetId: e,
|
|
8814
8834
|
activeSwatchId: null
|
|
8815
8835
|
}), w(n, e, null);
|
|
8816
|
-
}, ne = (e) => {
|
|
8817
|
-
D.setState({ activeSwatchId: e }), w(n, o, e);
|
|
8818
8836
|
}, re = (e) => {
|
|
8837
|
+
D.setState({ activeSwatchId: e }), w(n, o, e);
|
|
8838
|
+
}, ie = (e) => {
|
|
8819
8839
|
E(e.id), A(e.name), M(e.symbol), P(e.environment), I(!1);
|
|
8820
|
-
},
|
|
8840
|
+
}, H = () => {
|
|
8821
8841
|
E("new"), A(""), M(""), P(-1), I(!1);
|
|
8822
|
-
},
|
|
8842
|
+
}, U = () => {
|
|
8823
8843
|
E(null), I(!1);
|
|
8824
|
-
},
|
|
8844
|
+
}, W = () => {
|
|
8825
8845
|
if (!R || !T) return;
|
|
8826
8846
|
let e = k.trim() || "Swatch", t = j.slice(0, 4);
|
|
8827
8847
|
if (T === "new") {
|
|
@@ -8831,11 +8851,11 @@ function An({ sceneRef: e }) {
|
|
|
8831
8851
|
symbol: t,
|
|
8832
8852
|
environment: N
|
|
8833
8853
|
};
|
|
8834
|
-
|
|
8854
|
+
z(n.map((e) => e.id === R.id ? {
|
|
8835
8855
|
...e,
|
|
8836
8856
|
swatches: [...e.swatches, i]
|
|
8837
8857
|
} : e), o, r);
|
|
8838
|
-
} else
|
|
8858
|
+
} else z(n.map((n) => n.id === R.id ? {
|
|
8839
8859
|
...n,
|
|
8840
8860
|
swatches: n.swatches.map((n) => n.id === T ? {
|
|
8841
8861
|
...n,
|
|
@@ -8845,8 +8865,8 @@ function An({ sceneRef: e }) {
|
|
|
8845
8865
|
} : n)
|
|
8846
8866
|
} : n));
|
|
8847
8867
|
E(null), I(!1);
|
|
8848
|
-
},
|
|
8849
|
-
R &&
|
|
8868
|
+
}, G = (e) => {
|
|
8869
|
+
R && z(n.map((t) => t.id === R.id ? {
|
|
8850
8870
|
...t,
|
|
8851
8871
|
swatches: t.swatches.filter((t) => t.id !== e)
|
|
8852
8872
|
} : t), void 0, s === e ? null : void 0);
|
|
@@ -8889,7 +8909,7 @@ function An({ sceneRef: e }) {
|
|
|
8889
8909
|
value: S,
|
|
8890
8910
|
onChange: (e) => C(e.target.value),
|
|
8891
8911
|
onKeyDown: (e) => {
|
|
8892
|
-
e.key === "Enter" && (
|
|
8912
|
+
e.key === "Enter" && (V(S), x(!1)), e.key === "Escape" && x(!1);
|
|
8893
8913
|
},
|
|
8894
8914
|
autoFocus: !0
|
|
8895
8915
|
}),
|
|
@@ -8897,7 +8917,7 @@ function An({ sceneRef: e }) {
|
|
|
8897
8917
|
type: "button",
|
|
8898
8918
|
className: "swatch-icon-btn",
|
|
8899
8919
|
onClick: () => {
|
|
8900
|
-
|
|
8920
|
+
V(S), x(!1);
|
|
8901
8921
|
},
|
|
8902
8922
|
children: "✓"
|
|
8903
8923
|
}),
|
|
@@ -8910,7 +8930,7 @@ function An({ sceneRef: e }) {
|
|
|
8910
8930
|
] }) : /* @__PURE__ */ f(u, { children: [/* @__PURE__ */ d("select", {
|
|
8911
8931
|
className: "swatch-set-select",
|
|
8912
8932
|
value: R?.id ?? "",
|
|
8913
|
-
onChange: (e) =>
|
|
8933
|
+
onChange: (e) => ne(e.target.value),
|
|
8914
8934
|
children: L.map((e) => /* @__PURE__ */ d("option", {
|
|
8915
8935
|
value: e.id,
|
|
8916
8936
|
children: e.name
|
|
@@ -8928,7 +8948,7 @@ function An({ sceneRef: e }) {
|
|
|
8928
8948
|
className: "swatch-icon-btn swatch-icon-btn-danger",
|
|
8929
8949
|
title: "Delete set",
|
|
8930
8950
|
disabled: n.length <= 1,
|
|
8931
|
-
onClick:
|
|
8951
|
+
onClick: te,
|
|
8932
8952
|
children: "🗑"
|
|
8933
8953
|
})] })] }), g ? /* @__PURE__ */ f(u, { children: [
|
|
8934
8954
|
/* @__PURE__ */ d("input", {
|
|
@@ -8937,14 +8957,14 @@ function An({ sceneRef: e }) {
|
|
|
8937
8957
|
value: v,
|
|
8938
8958
|
onChange: (e) => y(e.target.value),
|
|
8939
8959
|
onKeyDown: (e) => {
|
|
8940
|
-
e.key === "Enter" &&
|
|
8960
|
+
e.key === "Enter" && B(), e.key === "Escape" && (_(!1), y(""));
|
|
8941
8961
|
},
|
|
8942
8962
|
autoFocus: !0
|
|
8943
8963
|
}),
|
|
8944
8964
|
/* @__PURE__ */ d("button", {
|
|
8945
8965
|
type: "button",
|
|
8946
8966
|
className: "swatch-icon-btn",
|
|
8947
|
-
onClick:
|
|
8967
|
+
onClick: B,
|
|
8948
8968
|
children: "✓"
|
|
8949
8969
|
}),
|
|
8950
8970
|
/* @__PURE__ */ d("button", {
|
|
@@ -8967,12 +8987,12 @@ function An({ sceneRef: e }) {
|
|
|
8967
8987
|
className: "swatch-grid",
|
|
8968
8988
|
children: [R.swatches.map((e) => /* @__PURE__ */ f("div", {
|
|
8969
8989
|
className: `swatch-chip${s === e.id ? " active" : ""}${T === e.id ? " editing" : ""}`,
|
|
8970
|
-
onClick: () =>
|
|
8990
|
+
onClick: () => re(e.id),
|
|
8971
8991
|
title: `${e.name} · env ${e.environment}${e.symbol ? ` · "${e.symbol}"` : ""}`,
|
|
8972
8992
|
children: [
|
|
8973
8993
|
/* @__PURE__ */ d("span", {
|
|
8974
8994
|
className: "swatch-chip-env",
|
|
8975
|
-
style: { background:
|
|
8995
|
+
style: { background: ee(e.environment) }
|
|
8976
8996
|
}),
|
|
8977
8997
|
e.symbol && /* @__PURE__ */ d("span", {
|
|
8978
8998
|
className: "swatch-chip-symbol",
|
|
@@ -8987,7 +9007,7 @@ function An({ sceneRef: e }) {
|
|
|
8987
9007
|
className: "swatch-chip-edit",
|
|
8988
9008
|
title: "Edit",
|
|
8989
9009
|
onClick: (t) => {
|
|
8990
|
-
t.stopPropagation(),
|
|
9010
|
+
t.stopPropagation(), ie(e);
|
|
8991
9011
|
},
|
|
8992
9012
|
children: "✏"
|
|
8993
9013
|
}), /* @__PURE__ */ d("button", {
|
|
@@ -8995,7 +9015,7 @@ function An({ sceneRef: e }) {
|
|
|
8995
9015
|
className: "swatch-chip-del",
|
|
8996
9016
|
title: "Delete",
|
|
8997
9017
|
onClick: (t) => {
|
|
8998
|
-
t.stopPropagation(),
|
|
9018
|
+
t.stopPropagation(), G(e.id);
|
|
8999
9019
|
},
|
|
9000
9020
|
children: "×"
|
|
9001
9021
|
})] })
|
|
@@ -9004,7 +9024,7 @@ function An({ sceneRef: e }) {
|
|
|
9004
9024
|
type: "button",
|
|
9005
9025
|
className: "swatch-add-btn",
|
|
9006
9026
|
title: "Add swatch",
|
|
9007
|
-
onClick:
|
|
9027
|
+
onClick: H,
|
|
9008
9028
|
children: "+"
|
|
9009
9029
|
})]
|
|
9010
9030
|
}),
|
|
@@ -9025,7 +9045,7 @@ function An({ sceneRef: e }) {
|
|
|
9025
9045
|
value: k,
|
|
9026
9046
|
onChange: (e) => A(e.target.value),
|
|
9027
9047
|
onKeyDown: (e) => {
|
|
9028
|
-
e.key === "Enter" &&
|
|
9048
|
+
e.key === "Enter" && W(), e.key === "Escape" && U();
|
|
9029
9049
|
},
|
|
9030
9050
|
autoFocus: !0
|
|
9031
9051
|
}),
|
|
@@ -9036,7 +9056,7 @@ function An({ sceneRef: e }) {
|
|
|
9036
9056
|
value: j,
|
|
9037
9057
|
onChange: (e) => M(e.target.value),
|
|
9038
9058
|
onKeyDown: (e) => {
|
|
9039
|
-
e.key === "Enter" &&
|
|
9059
|
+
e.key === "Enter" && W(), e.key === "Escape" && U();
|
|
9040
9060
|
}
|
|
9041
9061
|
}),
|
|
9042
9062
|
/* @__PURE__ */ f("div", {
|
|
@@ -9044,14 +9064,14 @@ function An({ sceneRef: e }) {
|
|
|
9044
9064
|
children: [/* @__PURE__ */ d("button", {
|
|
9045
9065
|
type: "button",
|
|
9046
9066
|
className: "swatch-env-btn",
|
|
9047
|
-
style: { background:
|
|
9067
|
+
style: { background: ee(N) },
|
|
9048
9068
|
title: `Env ${N === -1 ? "none" : N} — click to change`,
|
|
9049
9069
|
onClick: () => I((e) => !e),
|
|
9050
9070
|
children: /* @__PURE__ */ d("span", {
|
|
9051
9071
|
className: "swatch-env-id",
|
|
9052
9072
|
children: N === -1 ? "−" : N
|
|
9053
9073
|
})
|
|
9054
|
-
}), F && c && /* @__PURE__ */ d(
|
|
9074
|
+
}), F && c && /* @__PURE__ */ d(Qt, {
|
|
9055
9075
|
map: c,
|
|
9056
9076
|
sceneRef: e,
|
|
9057
9077
|
currentEnvId: N,
|
|
@@ -9072,14 +9092,14 @@ function An({ sceneRef: e }) {
|
|
|
9072
9092
|
type: "button",
|
|
9073
9093
|
className: "swatch-edit-ok",
|
|
9074
9094
|
title: "Save",
|
|
9075
|
-
onClick:
|
|
9095
|
+
onClick: W,
|
|
9076
9096
|
children: "✓"
|
|
9077
9097
|
}),
|
|
9078
9098
|
/* @__PURE__ */ d("button", {
|
|
9079
9099
|
type: "button",
|
|
9080
9100
|
className: "swatch-edit-cancel",
|
|
9081
9101
|
title: "Cancel",
|
|
9082
|
-
onClick:
|
|
9102
|
+
onClick: U,
|
|
9083
9103
|
children: "✕"
|
|
9084
9104
|
})
|
|
9085
9105
|
]
|
|
@@ -9334,15 +9354,173 @@ function Mn({ onClose: e }) {
|
|
|
9334
9354
|
});
|
|
9335
9355
|
}
|
|
9336
9356
|
//#endregion
|
|
9357
|
+
//#region src/components/SpreadShrinkPopup.tsx
|
|
9358
|
+
function Nn({ sceneRef: e }) {
|
|
9359
|
+
let n = O((e) => e.spreadShrink), i = O((e) => e.selection), a = r(null);
|
|
9360
|
+
if (t(() => {
|
|
9361
|
+
if (!n) return;
|
|
9362
|
+
let e = () => D.setState({ spreadShrink: null }), t = (t) => {
|
|
9363
|
+
t.key === "Escape" && e();
|
|
9364
|
+
}, r = (t) => {
|
|
9365
|
+
t.button === 0 && a.current && !a.current.contains(t.target) && e();
|
|
9366
|
+
};
|
|
9367
|
+
return window.addEventListener("keydown", t), window.addEventListener("mousedown", r, !0), () => {
|
|
9368
|
+
window.removeEventListener("keydown", t), window.removeEventListener("mousedown", r, !0);
|
|
9369
|
+
};
|
|
9370
|
+
}, [n]), !n || !i || i.kind !== "room") return null;
|
|
9371
|
+
let { mode: o, factor: s, centerMode: c, anchorRoomId: l } = n, p = (e) => {
|
|
9372
|
+
D.setState({ spreadShrink: {
|
|
9373
|
+
...n,
|
|
9374
|
+
mode: e,
|
|
9375
|
+
factor: e === "spread" ? 2 : .5
|
|
9376
|
+
} });
|
|
9377
|
+
}, m = (e) => {
|
|
9378
|
+
D.setState({ spreadShrink: {
|
|
9379
|
+
...n,
|
|
9380
|
+
centerMode: e,
|
|
9381
|
+
anchorRoomId: null
|
|
9382
|
+
} });
|
|
9383
|
+
}, h = (e) => {
|
|
9384
|
+
let t = parseFloat(e);
|
|
9385
|
+
!isNaN(t) && t > 0 && D.setState({ spreadShrink: {
|
|
9386
|
+
...n,
|
|
9387
|
+
factor: t
|
|
9388
|
+
} });
|
|
9389
|
+
};
|
|
9390
|
+
return /* @__PURE__ */ f("div", {
|
|
9391
|
+
ref: a,
|
|
9392
|
+
className: "spread-shrink-popup",
|
|
9393
|
+
onContextMenu: (e) => e.preventDefault(),
|
|
9394
|
+
children: [
|
|
9395
|
+
/* @__PURE__ */ f("div", {
|
|
9396
|
+
className: "spread-shrink-title",
|
|
9397
|
+
children: [
|
|
9398
|
+
o === "spread" ? "Spread" : "Shrink",
|
|
9399
|
+
" ",
|
|
9400
|
+
i.ids.length,
|
|
9401
|
+
" rooms"
|
|
9402
|
+
]
|
|
9403
|
+
}),
|
|
9404
|
+
/* @__PURE__ */ f("div", {
|
|
9405
|
+
className: "spread-shrink-mode",
|
|
9406
|
+
children: [/* @__PURE__ */ d("button", {
|
|
9407
|
+
type: "button",
|
|
9408
|
+
className: `spread-shrink-tab${o === "spread" ? " active" : ""}`,
|
|
9409
|
+
onClick: () => p("spread"),
|
|
9410
|
+
children: "Spread"
|
|
9411
|
+
}), /* @__PURE__ */ d("button", {
|
|
9412
|
+
type: "button",
|
|
9413
|
+
className: `spread-shrink-tab${o === "shrink" ? " active" : ""}`,
|
|
9414
|
+
onClick: () => p("shrink"),
|
|
9415
|
+
children: "Shrink"
|
|
9416
|
+
})]
|
|
9417
|
+
}),
|
|
9418
|
+
/* @__PURE__ */ f("div", {
|
|
9419
|
+
className: "spread-shrink-mode",
|
|
9420
|
+
children: [/* @__PURE__ */ d("button", {
|
|
9421
|
+
type: "button",
|
|
9422
|
+
className: `spread-shrink-tab${c === "centroid" ? " active" : ""}`,
|
|
9423
|
+
onClick: () => m("centroid"),
|
|
9424
|
+
children: "Centroid"
|
|
9425
|
+
}), /* @__PURE__ */ d("button", {
|
|
9426
|
+
type: "button",
|
|
9427
|
+
className: `spread-shrink-tab${c === "anchor" ? " active" : ""}`,
|
|
9428
|
+
onClick: () => m("anchor"),
|
|
9429
|
+
children: "Anchor"
|
|
9430
|
+
})]
|
|
9431
|
+
}),
|
|
9432
|
+
c === "anchor" && /* @__PURE__ */ d("div", {
|
|
9433
|
+
className: "spread-shrink-anchor",
|
|
9434
|
+
children: l === null ? /* @__PURE__ */ d("span", {
|
|
9435
|
+
className: "spread-shrink-anchor-hint",
|
|
9436
|
+
children: "Right-click a room to set anchor"
|
|
9437
|
+
}) : /* @__PURE__ */ f(u, { children: [/* @__PURE__ */ f("span", { children: ["Anchor: room ", l] }), /* @__PURE__ */ d("button", {
|
|
9438
|
+
type: "button",
|
|
9439
|
+
className: "spread-shrink-anchor-clear",
|
|
9440
|
+
onClick: () => m("anchor"),
|
|
9441
|
+
children: "×"
|
|
9442
|
+
})] })
|
|
9443
|
+
}),
|
|
9444
|
+
/* @__PURE__ */ f("div", {
|
|
9445
|
+
className: "spread-shrink-field",
|
|
9446
|
+
children: [/* @__PURE__ */ d("label", { children: "Scale factor" }), /* @__PURE__ */ d("input", {
|
|
9447
|
+
type: "number",
|
|
9448
|
+
min: "0.01",
|
|
9449
|
+
max: "10",
|
|
9450
|
+
step: "0.1",
|
|
9451
|
+
value: s,
|
|
9452
|
+
onChange: (e) => h(e.target.value)
|
|
9453
|
+
})]
|
|
9454
|
+
}),
|
|
9455
|
+
/* @__PURE__ */ f("div", {
|
|
9456
|
+
className: "spread-shrink-actions",
|
|
9457
|
+
children: [/* @__PURE__ */ d("button", {
|
|
9458
|
+
type: "button",
|
|
9459
|
+
className: "context-menu-btn",
|
|
9460
|
+
onClick: () => D.setState({ spreadShrink: null }),
|
|
9461
|
+
children: "Cancel"
|
|
9462
|
+
}), /* @__PURE__ */ d("button", {
|
|
9463
|
+
type: "button",
|
|
9464
|
+
className: "context-menu-btn primary",
|
|
9465
|
+
onClick: () => {
|
|
9466
|
+
let t = D.getState(), n = t.selection, r = e.current;
|
|
9467
|
+
if (!n || n.kind !== "room" || !r || !t.map) return;
|
|
9468
|
+
let i = [];
|
|
9469
|
+
for (let e of n.ids) {
|
|
9470
|
+
let n = r.getRenderRoom(e);
|
|
9471
|
+
!n || n.z !== t.currentZ || n.area !== t.currentAreaId || i.push({
|
|
9472
|
+
id: e,
|
|
9473
|
+
rx: n.x,
|
|
9474
|
+
ry: n.y
|
|
9475
|
+
});
|
|
9476
|
+
}
|
|
9477
|
+
if (i.length < 2) {
|
|
9478
|
+
D.setState({ spreadShrink: null });
|
|
9479
|
+
return;
|
|
9480
|
+
}
|
|
9481
|
+
let a = t.spreadShrink, c, l;
|
|
9482
|
+
if (a.centerMode === "anchor" && a.anchorRoomId !== null) {
|
|
9483
|
+
let e = r.getRenderRoom(a.anchorRoomId);
|
|
9484
|
+
c = e ? e.x : i.reduce((e, t) => e + t.rx, 0) / i.length, l = e ? e.y : i.reduce((e, t) => e + t.ry, 0) / i.length;
|
|
9485
|
+
} else c = i.reduce((e, t) => e + t.rx, 0) / i.length, l = i.reduce((e, t) => e + t.ry, 0) / i.length;
|
|
9486
|
+
let u = t.snapToGrid ? (e) => Math.round(e / t.gridStep) * t.gridStep : Math.round, d = [];
|
|
9487
|
+
for (let { id: e, rx: n, ry: r } of i) {
|
|
9488
|
+
let i = u(c + (n - c) * s), a = u(l + (r - l) * s), o = t.map.rooms[e];
|
|
9489
|
+
if (!o) continue;
|
|
9490
|
+
let f = i, p = -a;
|
|
9491
|
+
f === o.x && p === o.y || (d.push({
|
|
9492
|
+
kind: "moveRoom",
|
|
9493
|
+
id: e,
|
|
9494
|
+
from: {
|
|
9495
|
+
x: o.x,
|
|
9496
|
+
y: o.y,
|
|
9497
|
+
z: o.z
|
|
9498
|
+
},
|
|
9499
|
+
to: {
|
|
9500
|
+
x: f,
|
|
9501
|
+
y: p,
|
|
9502
|
+
z: o.z
|
|
9503
|
+
}
|
|
9504
|
+
}), d.push(...ke(t.map, e, f - o.x, p - o.y)));
|
|
9505
|
+
}
|
|
9506
|
+
d.length > 0 && (X(d, r), r.refresh(), D.bumpStructure(), D.setState({ status: `${o === "spread" ? "Spread" : "Shrunk"} ${i.length} rooms (×${s.toFixed(2)})` })), D.setState({ spreadShrink: null });
|
|
9507
|
+
},
|
|
9508
|
+
children: "Apply"
|
|
9509
|
+
})]
|
|
9510
|
+
})
|
|
9511
|
+
]
|
|
9512
|
+
});
|
|
9513
|
+
}
|
|
9514
|
+
//#endregion
|
|
9337
9515
|
//#region src/editor/reader/EditorMapReader.ts
|
|
9338
|
-
var
|
|
9516
|
+
var Pn = {
|
|
9339
9517
|
1: "solid line",
|
|
9340
9518
|
2: "dash line",
|
|
9341
9519
|
3: "dot line",
|
|
9342
9520
|
4: "dash dot line",
|
|
9343
9521
|
5: "dash dot dot line"
|
|
9344
9522
|
};
|
|
9345
|
-
function
|
|
9523
|
+
function Fn(e, t) {
|
|
9346
9524
|
let n = {
|
|
9347
9525
|
id: e,
|
|
9348
9526
|
__raw: t
|
|
@@ -9431,7 +9609,7 @@ function Pn(e, t) {
|
|
|
9431
9609
|
g: 255,
|
|
9432
9610
|
b: 255
|
|
9433
9611
|
},
|
|
9434
|
-
style:
|
|
9612
|
+
style: Pn[t.customLinesStyle?.[r]] ?? "solid line",
|
|
9435
9613
|
arrow: t.customLinesArrow?.[r] ?? !1
|
|
9436
9614
|
}
|
|
9437
9615
|
};
|
|
@@ -9442,7 +9620,7 @@ function Pn(e, t) {
|
|
|
9442
9620
|
configurable: !0
|
|
9443
9621
|
}), n;
|
|
9444
9622
|
}
|
|
9445
|
-
function
|
|
9623
|
+
function In(e) {
|
|
9446
9624
|
let t = {
|
|
9447
9625
|
north: "south",
|
|
9448
9626
|
south: "north",
|
|
@@ -9508,7 +9686,7 @@ function Fn(e) {
|
|
|
9508
9686
|
}
|
|
9509
9687
|
return r;
|
|
9510
9688
|
}
|
|
9511
|
-
function
|
|
9689
|
+
function Ln(e) {
|
|
9512
9690
|
if (!e || e.length === 0) return "";
|
|
9513
9691
|
if (typeof e == "string") return e.includes(",") ? e.split(",")[1] : e;
|
|
9514
9692
|
try {
|
|
@@ -9517,10 +9695,10 @@ function In(e) {
|
|
|
9517
9695
|
return "";
|
|
9518
9696
|
}
|
|
9519
9697
|
}
|
|
9520
|
-
function
|
|
9521
|
-
e.pixMapBase64 === void 0 && (e.pixMapBase64 =
|
|
9698
|
+
function Rn(e) {
|
|
9699
|
+
e.pixMapBase64 === void 0 && (e.pixMapBase64 = Ln(e.pixMap));
|
|
9522
9700
|
}
|
|
9523
|
-
function
|
|
9701
|
+
function zn(e, t) {
|
|
9524
9702
|
let n = e.id;
|
|
9525
9703
|
if (!e.font) {
|
|
9526
9704
|
let r = t[`system.labelFont_${n}`];
|
|
@@ -9550,7 +9728,7 @@ function Rn(e, t) {
|
|
|
9550
9728
|
});
|
|
9551
9729
|
}
|
|
9552
9730
|
}
|
|
9553
|
-
function
|
|
9731
|
+
function Bn(e, t) {
|
|
9554
9732
|
let n = e.id, r = e.font;
|
|
9555
9733
|
if (r?.family) {
|
|
9556
9734
|
let e = r.bold ? 75 : 50;
|
|
@@ -9561,7 +9739,7 @@ function zn(e, t) {
|
|
|
9561
9739
|
t[`system.labelOutlineColor_${n}`] = `${r}|${i}|${a}|${o}`;
|
|
9562
9740
|
} else t[`system.labelOutlineColor_${n}`] = "0|0|0|0";
|
|
9563
9741
|
}
|
|
9564
|
-
function
|
|
9742
|
+
function Vn(e) {
|
|
9565
9743
|
return {
|
|
9566
9744
|
id: e.id,
|
|
9567
9745
|
pos: [...e.pos],
|
|
@@ -9577,7 +9755,7 @@ function Bn(e) {
|
|
|
9577
9755
|
imageSrc: e.imageSrc
|
|
9578
9756
|
};
|
|
9579
9757
|
}
|
|
9580
|
-
var
|
|
9758
|
+
var Hn = class {
|
|
9581
9759
|
constructor(e, t) {
|
|
9582
9760
|
this.rooms = e, this.labels = t;
|
|
9583
9761
|
}
|
|
@@ -9607,7 +9785,7 @@ var Vn = class {
|
|
|
9607
9785
|
setLabels(e) {
|
|
9608
9786
|
this.labels = e;
|
|
9609
9787
|
}
|
|
9610
|
-
},
|
|
9788
|
+
}, Un = class {
|
|
9611
9789
|
planes = {};
|
|
9612
9790
|
exits = /* @__PURE__ */ new Map();
|
|
9613
9791
|
version = 0;
|
|
@@ -9675,19 +9853,19 @@ var Vn = class {
|
|
|
9675
9853
|
let t = {};
|
|
9676
9854
|
for (let [n, r] of Object.entries(e)) {
|
|
9677
9855
|
let e = Number(n);
|
|
9678
|
-
t[e] = new
|
|
9856
|
+
t[e] = new Hn(r, this.labels.filter((t) => t.Z === e));
|
|
9679
9857
|
}
|
|
9680
9858
|
this.planes = t;
|
|
9681
9859
|
}
|
|
9682
9860
|
rebuildExits() {
|
|
9683
|
-
this.exits =
|
|
9861
|
+
this.exits = In(this.rooms);
|
|
9684
9862
|
}
|
|
9685
9863
|
};
|
|
9686
|
-
function
|
|
9864
|
+
function Wn(e) {
|
|
9687
9865
|
let t = e[0] / 255, n = e[1] / 255, r = e[2] / 255;
|
|
9688
9866
|
return (Math.max(t, n, r) + Math.min(t, n, r)) / 2;
|
|
9689
9867
|
}
|
|
9690
|
-
var
|
|
9868
|
+
var Gn = {
|
|
9691
9869
|
rgb: [
|
|
9692
9870
|
114,
|
|
9693
9871
|
1,
|
|
@@ -9700,17 +9878,17 @@ var Wn = {
|
|
|
9700
9878
|
225
|
|
9701
9879
|
],
|
|
9702
9880
|
symbolColorValue: "rgb(225,225,225)"
|
|
9703
|
-
},
|
|
9881
|
+
}, Kn = class {
|
|
9704
9882
|
rooms = {};
|
|
9705
9883
|
areas = {};
|
|
9706
9884
|
colors = {};
|
|
9707
9885
|
constructor(e) {
|
|
9708
9886
|
this.raw = e;
|
|
9709
|
-
let { colors: t } =
|
|
9887
|
+
let { colors: t } = U(e);
|
|
9710
9888
|
for (let e of t) this.colors[e.envId] = {
|
|
9711
9889
|
rgb: e.colors,
|
|
9712
9890
|
rgbValue: `rgb(${e.colors.join(",")})`,
|
|
9713
|
-
symbolColor:
|
|
9891
|
+
symbolColor: Wn(e.colors) > .41 ? [
|
|
9714
9892
|
25,
|
|
9715
9893
|
25,
|
|
9716
9894
|
25
|
|
@@ -9719,19 +9897,19 @@ var Wn = {
|
|
|
9719
9897
|
255,
|
|
9720
9898
|
255
|
|
9721
9899
|
],
|
|
9722
|
-
symbolColorValue:
|
|
9900
|
+
symbolColorValue: Wn(e.colors) > .41 ? "rgb(25,25,25)" : "rgb(225,255,255)"
|
|
9723
9901
|
};
|
|
9724
9902
|
for (let [t, n] of Object.entries(e.areas)) {
|
|
9725
9903
|
let r = Number(t), i = [];
|
|
9726
9904
|
for (let t of n.rooms) {
|
|
9727
9905
|
let n = e.rooms[t];
|
|
9728
9906
|
if (!n) continue;
|
|
9729
|
-
let r =
|
|
9907
|
+
let r = Fn(t, n);
|
|
9730
9908
|
this.rooms[t] = r, i.push(r);
|
|
9731
9909
|
}
|
|
9732
9910
|
let a = e.labels?.[r] ?? [], o = e.areas[r]?.userData ?? {};
|
|
9733
|
-
for (let e of a)
|
|
9734
|
-
this.areas[r] = new
|
|
9911
|
+
for (let e of a) Rn(e), zn(e, o);
|
|
9912
|
+
this.areas[r] = new Un(r, e.areaNames[r] ?? `Area ${r}`, i, a.map((e) => this.toRendererLabel(e, r)));
|
|
9735
9913
|
}
|
|
9736
9914
|
}
|
|
9737
9915
|
toRendererLabel(e, t) {
|
|
@@ -9788,10 +9966,10 @@ var Wn = {
|
|
|
9788
9966
|
return !1;
|
|
9789
9967
|
}
|
|
9790
9968
|
getColorValue(e) {
|
|
9791
|
-
return this.colors[e]?.rgbValue ??
|
|
9969
|
+
return this.colors[e]?.rgbValue ?? Gn.rgbValue;
|
|
9792
9970
|
}
|
|
9793
9971
|
getSymbolColor(e, t) {
|
|
9794
|
-
let n = this.colors[e] ??
|
|
9972
|
+
let n = this.colors[e] ?? Gn, r = Math.min(Math.max(t ?? 1, 0), 1), i = n.symbolColor.join(",");
|
|
9795
9973
|
return r === 1 ? `rgba(${i})` : `rgba(${i}, ${r})`;
|
|
9796
9974
|
}
|
|
9797
9975
|
moveRoom(e, t, n, r) {
|
|
@@ -9825,7 +10003,7 @@ var Wn = {
|
|
|
9825
10003
|
this.raw.rooms[e] = t;
|
|
9826
10004
|
let n = this.raw.areas[t.area];
|
|
9827
10005
|
n && !n.rooms.includes(e) && n.rooms.push(e);
|
|
9828
|
-
let r =
|
|
10006
|
+
let r = Fn(e, t);
|
|
9829
10007
|
this.rooms[e] = r, this.areas[t.area]?.addRoomLive(r);
|
|
9830
10008
|
}
|
|
9831
10009
|
setSpecialExit(e, t, n) {
|
|
@@ -9921,7 +10099,7 @@ var Wn = {
|
|
|
9921
10099
|
isZone: !1,
|
|
9922
10100
|
zoneAreaRef: -1,
|
|
9923
10101
|
userData: {}
|
|
9924
|
-
}, this.raw.areaNames[e] = t, this.areas[e] = new
|
|
10102
|
+
}, this.raw.areaNames[e] = t, this.areas[e] = new Un(e, t, [], []);
|
|
9925
10103
|
}
|
|
9926
10104
|
removeArea(e) {
|
|
9927
10105
|
delete this.raw.areas[e], delete this.raw.areaNames[e], delete this.areas[e];
|
|
@@ -9949,11 +10127,11 @@ var Wn = {
|
|
|
9949
10127
|
}
|
|
9950
10128
|
setCustomEnvColor(e, t) {
|
|
9951
10129
|
t === null ? delete this.raw.mCustomEnvColors[e] : this.raw.mCustomEnvColors[e] = t;
|
|
9952
|
-
let { colors: n } =
|
|
10130
|
+
let { colors: n } = U(this.raw);
|
|
9953
10131
|
for (let e of n) this.colors[e.envId] = {
|
|
9954
10132
|
rgb: e.colors,
|
|
9955
10133
|
rgbValue: `rgb(${e.colors.join(",")})`,
|
|
9956
|
-
symbolColor:
|
|
10134
|
+
symbolColor: Wn(e.colors) > .41 ? [
|
|
9957
10135
|
25,
|
|
9958
10136
|
25,
|
|
9959
10137
|
25
|
|
@@ -9962,17 +10140,17 @@ var Wn = {
|
|
|
9962
10140
|
255,
|
|
9963
10141
|
255
|
|
9964
10142
|
],
|
|
9965
|
-
symbolColorValue:
|
|
10143
|
+
symbolColorValue: Wn(e.colors) > .41 ? "rgb(25,25,25)" : "rgb(225,255,255)"
|
|
9966
10144
|
};
|
|
9967
10145
|
t === null && delete this.colors[e];
|
|
9968
10146
|
}
|
|
9969
10147
|
getLabelSnapshot(e, t) {
|
|
9970
10148
|
let n = this.raw.labels[e]?.find((e) => e.id === t);
|
|
9971
|
-
return n ?
|
|
10149
|
+
return n ? Vn(n) : null;
|
|
9972
10150
|
}
|
|
9973
10151
|
addLabel(e, t) {
|
|
9974
10152
|
this.raw.labels[e] || (this.raw.labels[e] = []);
|
|
9975
|
-
let n = t.pixMap ||
|
|
10153
|
+
let n = t.pixMap || Wt(t), r = {
|
|
9976
10154
|
id: t.id,
|
|
9977
10155
|
labelId: t.id,
|
|
9978
10156
|
areaId: e,
|
|
@@ -9981,7 +10159,7 @@ var Wn = {
|
|
|
9981
10159
|
text: t.text,
|
|
9982
10160
|
fgColor: { ...t.fgColor },
|
|
9983
10161
|
bgColor: { ...t.bgColor },
|
|
9984
|
-
pixMap:
|
|
10162
|
+
pixMap: Gt(n),
|
|
9985
10163
|
pixMapBase64: n.includes(",") ? n.split(",")[1] : n,
|
|
9986
10164
|
noScaling: t.noScaling,
|
|
9987
10165
|
showOnTop: t.showOnTop,
|
|
@@ -9990,7 +10168,7 @@ var Wn = {
|
|
|
9990
10168
|
};
|
|
9991
10169
|
this.raw.labels[e].push(r);
|
|
9992
10170
|
let i = this.raw.areas[e]?.userData;
|
|
9993
|
-
i &&
|
|
10171
|
+
i && Bn(r, i), this.syncRendererLabels(e);
|
|
9994
10172
|
}
|
|
9995
10173
|
removeLabel(e, t) {
|
|
9996
10174
|
if (!this.raw.labels[e]) return;
|
|
@@ -10012,7 +10190,7 @@ var Wn = {
|
|
|
10012
10190
|
}
|
|
10013
10191
|
setLabelPixmap(e, t, n) {
|
|
10014
10192
|
let r = this.raw.labels[e]?.find((e) => e.id === t);
|
|
10015
|
-
r && (r.pixMap =
|
|
10193
|
+
r && (r.pixMap = Gt(n), r.pixMapBase64 = n.includes(",") ? n.split(",")[1] : n, this.syncRendererLabels(e));
|
|
10016
10194
|
}
|
|
10017
10195
|
setLabelImageSrc(e, t, n) {
|
|
10018
10196
|
let r = this.raw.labels[e]?.find((e) => e.id === t);
|
|
@@ -10023,14 +10201,14 @@ var Wn = {
|
|
|
10023
10201
|
if (!r) return;
|
|
10024
10202
|
r.font = { ...n };
|
|
10025
10203
|
let i = this.raw.areas[e]?.userData;
|
|
10026
|
-
i &&
|
|
10204
|
+
i && Bn(r, i), this.syncRendererLabels(e);
|
|
10027
10205
|
}
|
|
10028
10206
|
setLabelOutlineColor(e, t, n) {
|
|
10029
10207
|
let r = this.raw.labels[e]?.find((e) => e.id === t);
|
|
10030
10208
|
if (!r) return;
|
|
10031
10209
|
r.outlineColor = n ? { ...n } : void 0;
|
|
10032
10210
|
let i = this.raw.areas[e]?.userData;
|
|
10033
|
-
i &&
|
|
10211
|
+
i && Bn(r, i), this.syncRendererLabels(e);
|
|
10034
10212
|
}
|
|
10035
10213
|
setLabelNoScaling(e, t, n) {
|
|
10036
10214
|
let r = this.raw.labels[e]?.find((e) => e.id === t);
|
|
@@ -10061,10 +10239,10 @@ var Wn = {
|
|
|
10061
10239
|
restoreAreaWithRooms(e, t, n, r) {
|
|
10062
10240
|
let i = [];
|
|
10063
10241
|
for (let { id: e, room: t } of n) {
|
|
10064
|
-
let n =
|
|
10242
|
+
let n = Fn(e, t);
|
|
10065
10243
|
this.rooms[e] = n, i.push(n);
|
|
10066
10244
|
}
|
|
10067
|
-
this.areas[e] = new
|
|
10245
|
+
this.areas[e] = new Un(e, t, i, []);
|
|
10068
10246
|
for (let e of r) {
|
|
10069
10247
|
let t = this.areas[e];
|
|
10070
10248
|
t && (t.rebuildExits(), t.markDirty());
|
|
@@ -10103,7 +10281,7 @@ var Wn = {
|
|
|
10103
10281
|
}
|
|
10104
10282
|
for (let e of this.getAreas()) n.has(e.getAreaId()) || e.rebuildExits();
|
|
10105
10283
|
}
|
|
10106
|
-
},
|
|
10284
|
+
}, qn = class {
|
|
10107
10285
|
rects = /* @__PURE__ */ new Map();
|
|
10108
10286
|
layer;
|
|
10109
10287
|
unsubscribe;
|
|
@@ -10147,7 +10325,7 @@ var Wn = {
|
|
|
10147
10325
|
}
|
|
10148
10326
|
this.layer.batchDraw();
|
|
10149
10327
|
}
|
|
10150
|
-
},
|
|
10328
|
+
}, Jn = "#ffcc00", Yn = .9, Xn = .3, Zn = .2, Qn = class {
|
|
10151
10329
|
roomRect;
|
|
10152
10330
|
linkGroup;
|
|
10153
10331
|
layer;
|
|
@@ -10158,7 +10336,7 @@ var Wn = {
|
|
|
10158
10336
|
}
|
|
10159
10337
|
attach(e) {
|
|
10160
10338
|
this.layer = e, this.roomRect = new h.Rect({
|
|
10161
|
-
stroke:
|
|
10339
|
+
stroke: Jn,
|
|
10162
10340
|
strokeWidth: .06,
|
|
10163
10341
|
listening: !1,
|
|
10164
10342
|
visible: !1,
|
|
@@ -10206,23 +10384,23 @@ var Wn = {
|
|
|
10206
10384
|
}
|
|
10207
10385
|
for (let t of e.data.lines) this.linkGroup.add(new h.Line({
|
|
10208
10386
|
points: [...t.points],
|
|
10209
|
-
stroke:
|
|
10387
|
+
stroke: Jn,
|
|
10210
10388
|
strokeWidth: r,
|
|
10211
10389
|
dash: t.dash ? [...t.dash] : void 0,
|
|
10212
10390
|
listening: !1,
|
|
10213
10391
|
lineCap: "round",
|
|
10214
|
-
opacity:
|
|
10392
|
+
opacity: Yn
|
|
10215
10393
|
}));
|
|
10216
10394
|
for (let t of e.data.arrows) this.linkGroup.add(new h.Arrow({
|
|
10217
10395
|
points: [...t.points],
|
|
10218
|
-
stroke:
|
|
10219
|
-
fill:
|
|
10396
|
+
stroke: Jn,
|
|
10397
|
+
fill: Jn,
|
|
10220
10398
|
strokeWidth: r,
|
|
10221
10399
|
dash: t.dash ? [...t.dash] : void 0,
|
|
10222
10400
|
pointerLength: t.pointerLength,
|
|
10223
10401
|
pointerWidth: t.pointerWidth,
|
|
10224
10402
|
listening: !1,
|
|
10225
|
-
opacity:
|
|
10403
|
+
opacity: Yn
|
|
10226
10404
|
}));
|
|
10227
10405
|
this.linkGroup.visible(!0);
|
|
10228
10406
|
} else if (t.kind === "customLine") {
|
|
@@ -10233,33 +10411,33 @@ var Wn = {
|
|
|
10233
10411
|
}
|
|
10234
10412
|
let i = e.hasArrow && e.points.length >= 4 ? new h.Arrow({
|
|
10235
10413
|
points: [...e.points],
|
|
10236
|
-
stroke:
|
|
10237
|
-
fill:
|
|
10414
|
+
stroke: Jn,
|
|
10415
|
+
fill: Jn,
|
|
10238
10416
|
strokeWidth: r,
|
|
10239
10417
|
dash: e.dash ? [...e.dash] : void 0,
|
|
10240
|
-
pointerLength:
|
|
10241
|
-
pointerWidth:
|
|
10418
|
+
pointerLength: Xn,
|
|
10419
|
+
pointerWidth: Zn,
|
|
10242
10420
|
listening: !1,
|
|
10243
10421
|
lineCap: "round",
|
|
10244
10422
|
lineJoin: "round",
|
|
10245
|
-
opacity:
|
|
10423
|
+
opacity: Yn
|
|
10246
10424
|
}) : new h.Line({
|
|
10247
10425
|
points: [...e.points],
|
|
10248
|
-
stroke:
|
|
10426
|
+
stroke: Jn,
|
|
10249
10427
|
strokeWidth: r,
|
|
10250
10428
|
dash: e.dash ? [...e.dash] : void 0,
|
|
10251
10429
|
listening: !1,
|
|
10252
10430
|
lineCap: "round",
|
|
10253
10431
|
lineJoin: "round",
|
|
10254
|
-
opacity:
|
|
10432
|
+
opacity: Yn
|
|
10255
10433
|
});
|
|
10256
10434
|
this.linkGroup.add(i), this.linkGroup.visible(!0);
|
|
10257
10435
|
}
|
|
10258
10436
|
this.layer.batchDraw();
|
|
10259
10437
|
}
|
|
10260
|
-
},
|
|
10261
|
-
function
|
|
10262
|
-
for (let [t, n, r] of
|
|
10438
|
+
}, $n = .6;
|
|
10439
|
+
function er(e) {
|
|
10440
|
+
for (let [t, n, r] of at) if (r === e) return {
|
|
10263
10441
|
ox: t,
|
|
10264
10442
|
oy: n
|
|
10265
10443
|
};
|
|
@@ -10268,7 +10446,7 @@ function $n(e) {
|
|
|
10268
10446
|
oy: 0
|
|
10269
10447
|
};
|
|
10270
10448
|
}
|
|
10271
|
-
var
|
|
10449
|
+
var tr = class {
|
|
10272
10450
|
line;
|
|
10273
10451
|
dirLabel;
|
|
10274
10452
|
layer;
|
|
@@ -10315,14 +10493,14 @@ var er = class {
|
|
|
10315
10493
|
}
|
|
10316
10494
|
let r = n.getRenderRoom(t.sourceId);
|
|
10317
10495
|
if (!r) return;
|
|
10318
|
-
let i = t.hoverTargetId == null ? null : n.getRenderRoom(t.hoverTargetId), a = (n.settings.roomSize ??
|
|
10496
|
+
let i = t.hoverTargetId == null ? null : n.getRenderRoom(t.hoverTargetId), a = (n.settings.roomSize ?? $n) / 2, o = r.x, s = r.y;
|
|
10319
10497
|
if (t.sourceDir) {
|
|
10320
|
-
let { ox: e, oy: n } =
|
|
10498
|
+
let { ox: e, oy: n } = er(t.sourceDir);
|
|
10321
10499
|
o = r.x + e * a, s = r.y + n * a;
|
|
10322
10500
|
}
|
|
10323
10501
|
let c, l;
|
|
10324
10502
|
if (i && t.targetDir) {
|
|
10325
|
-
let { ox: e, oy: n } =
|
|
10503
|
+
let { ox: e, oy: n } = er(t.targetDir);
|
|
10326
10504
|
c = i.x + e * a, l = i.y + n * a;
|
|
10327
10505
|
} else i ? (c = i.x, l = i.y) : (c = t.cursorMap?.x ?? r.x, l = t.cursorMap?.y ?? r.y);
|
|
10328
10506
|
let u = !0, d = "";
|
|
@@ -10343,7 +10521,7 @@ var er = class {
|
|
|
10343
10521
|
l
|
|
10344
10522
|
]), this.line.stroke(f), this.line.fill(f), this.line.visible(!0), d ? (this.dirLabel.text(d), this.dirLabel.fill(f), this.dirLabel.x((o + c) / 2 + .2), this.dirLabel.y((s + l) / 2 + .2), this.dirLabel.visible(!0)) : this.dirLabel.visible(!1), this.layer.batchDraw();
|
|
10345
10523
|
}
|
|
10346
|
-
},
|
|
10524
|
+
}, nr = class {
|
|
10347
10525
|
rect;
|
|
10348
10526
|
layer;
|
|
10349
10527
|
unsubscribe;
|
|
@@ -10379,7 +10557,7 @@ var er = class {
|
|
|
10379
10557
|
}
|
|
10380
10558
|
this.rect.x(t.x), this.rect.y(t.y), this.rect.visible(!0), this.layer.batchDraw();
|
|
10381
10559
|
}
|
|
10382
|
-
},
|
|
10560
|
+
}, rr = class {
|
|
10383
10561
|
source;
|
|
10384
10562
|
target;
|
|
10385
10563
|
layer;
|
|
@@ -10403,7 +10581,7 @@ var er = class {
|
|
|
10403
10581
|
listening: !1,
|
|
10404
10582
|
visible: !1
|
|
10405
10583
|
}), t = /* @__PURE__ */ new Map();
|
|
10406
|
-
for (let [, , n] of
|
|
10584
|
+
for (let [, , n] of at) {
|
|
10407
10585
|
let r = new h.Circle({
|
|
10408
10586
|
radius: this.roomSize * .12,
|
|
10409
10587
|
fill: "rgba(143, 184, 255, 0.85)",
|
|
@@ -10420,7 +10598,7 @@ var er = class {
|
|
|
10420
10598
|
}
|
|
10421
10599
|
placeHandles(e, t, n, r) {
|
|
10422
10600
|
let i = this.roomSize / 2, a = r === "drag-source" || r === "drag-target" ? "#7fff9f" : "#ffd27f", o = r === "drag-source" || r === "drag-target" ? "#ffffff" : "#cfe1ff";
|
|
10423
|
-
for (let [r, s, c] of
|
|
10601
|
+
for (let [r, s, c] of at) {
|
|
10424
10602
|
let l = e.handles.get(c);
|
|
10425
10603
|
l.x(t.x + r * i), l.y(t.y + s * i), l.fill(c === n ? a : "rgba(143, 184, 255, 0.85)"), l.stroke(c === n ? o : "#cfe1ff");
|
|
10426
10604
|
}
|
|
@@ -10457,7 +10635,7 @@ var er = class {
|
|
|
10457
10635
|
}
|
|
10458
10636
|
this.layer.batchDraw();
|
|
10459
10637
|
}
|
|
10460
|
-
},
|
|
10638
|
+
}, ir = "rgba(255, 220, 60, 0.9)", ar = .55, or = class {
|
|
10461
10639
|
group;
|
|
10462
10640
|
layer;
|
|
10463
10641
|
unsubscribe;
|
|
@@ -10530,14 +10708,14 @@ var er = class {
|
|
|
10530
10708
|
if (o) {
|
|
10531
10709
|
let t = this.resolveTargetRoom(e, o.roomId, o.exitName);
|
|
10532
10710
|
if (t) {
|
|
10533
|
-
let { x: e, y: n } = t, r =
|
|
10711
|
+
let { x: e, y: n } = t, r = ar, i = new h.Line({
|
|
10534
10712
|
points: [
|
|
10535
10713
|
e - r,
|
|
10536
10714
|
n,
|
|
10537
10715
|
e + r,
|
|
10538
10716
|
n
|
|
10539
10717
|
],
|
|
10540
|
-
stroke:
|
|
10718
|
+
stroke: ir,
|
|
10541
10719
|
strokeWidth: a,
|
|
10542
10720
|
listening: !1,
|
|
10543
10721
|
lineCap: "round"
|
|
@@ -10548,7 +10726,7 @@ var er = class {
|
|
|
10548
10726
|
e,
|
|
10549
10727
|
n + r
|
|
10550
10728
|
],
|
|
10551
|
-
stroke:
|
|
10729
|
+
stroke: ir,
|
|
10552
10730
|
strokeWidth: a,
|
|
10553
10731
|
listening: !1,
|
|
10554
10732
|
lineCap: "round"
|
|
@@ -10578,11 +10756,11 @@ var er = class {
|
|
|
10578
10756
|
y: c.y
|
|
10579
10757
|
};
|
|
10580
10758
|
}
|
|
10581
|
-
},
|
|
10582
|
-
shadowColor:
|
|
10759
|
+
}, sr = "#00e5ff", cr = {
|
|
10760
|
+
shadowColor: sr,
|
|
10583
10761
|
shadowBlur: 4,
|
|
10584
10762
|
shadowOpacity: .8
|
|
10585
|
-
},
|
|
10763
|
+
}, lr = .3, ur = .2, dr = class {
|
|
10586
10764
|
group;
|
|
10587
10765
|
layer;
|
|
10588
10766
|
unsubscribe;
|
|
@@ -10620,22 +10798,22 @@ var er = class {
|
|
|
10620
10798
|
}
|
|
10621
10799
|
for (let t of e.data.lines) this.group.add(new h.Line({
|
|
10622
10800
|
points: [...t.points],
|
|
10623
|
-
stroke:
|
|
10801
|
+
stroke: sr,
|
|
10624
10802
|
strokeWidth: .08,
|
|
10625
10803
|
dash: t.dash ? [...t.dash] : void 0,
|
|
10626
10804
|
listening: !1,
|
|
10627
|
-
...
|
|
10805
|
+
...cr
|
|
10628
10806
|
}));
|
|
10629
10807
|
for (let t of e.data.arrows) this.group.add(new h.Arrow({
|
|
10630
10808
|
points: [...t.points],
|
|
10631
|
-
stroke:
|
|
10632
|
-
fill:
|
|
10809
|
+
stroke: sr,
|
|
10810
|
+
fill: sr,
|
|
10633
10811
|
strokeWidth: .08,
|
|
10634
10812
|
dash: t.dash ? [...t.dash] : void 0,
|
|
10635
10813
|
pointerLength: t.pointerLength,
|
|
10636
10814
|
pointerWidth: t.pointerWidth,
|
|
10637
10815
|
listening: !1,
|
|
10638
|
-
...
|
|
10816
|
+
...cr
|
|
10639
10817
|
}));
|
|
10640
10818
|
this.group.visible(!0), this.layer.batchDraw();
|
|
10641
10819
|
return;
|
|
@@ -10648,28 +10826,28 @@ var er = class {
|
|
|
10648
10826
|
}
|
|
10649
10827
|
let r = e.hasArrow && e.points.length >= 4 ? new h.Arrow({
|
|
10650
10828
|
points: [...e.points],
|
|
10651
|
-
stroke:
|
|
10652
|
-
fill:
|
|
10829
|
+
stroke: sr,
|
|
10830
|
+
fill: sr,
|
|
10653
10831
|
strokeWidth: .08,
|
|
10654
10832
|
dash: e.dash ? [...e.dash] : void 0,
|
|
10655
|
-
pointerLength:
|
|
10656
|
-
pointerWidth:
|
|
10833
|
+
pointerLength: lr,
|
|
10834
|
+
pointerWidth: ur,
|
|
10657
10835
|
listening: !1,
|
|
10658
|
-
...
|
|
10836
|
+
...cr
|
|
10659
10837
|
}) : new h.Line({
|
|
10660
10838
|
points: [...e.points],
|
|
10661
|
-
stroke:
|
|
10839
|
+
stroke: sr,
|
|
10662
10840
|
strokeWidth: .08,
|
|
10663
10841
|
dash: e.dash ? [...e.dash] : void 0,
|
|
10664
10842
|
listening: !1,
|
|
10665
|
-
...
|
|
10843
|
+
...cr
|
|
10666
10844
|
});
|
|
10667
10845
|
this.group.add(r), this.group.add(new h.Circle({
|
|
10668
10846
|
x: e.points[0],
|
|
10669
10847
|
y: e.points[1],
|
|
10670
10848
|
radius: .1,
|
|
10671
10849
|
fill: "#1a2030",
|
|
10672
|
-
stroke:
|
|
10850
|
+
stroke: sr,
|
|
10673
10851
|
strokeWidth: .04,
|
|
10674
10852
|
listening: !1
|
|
10675
10853
|
}));
|
|
@@ -10680,8 +10858,8 @@ var er = class {
|
|
|
10680
10858
|
x: e.points[t],
|
|
10681
10859
|
y: e.points[t + 1],
|
|
10682
10860
|
radius: r ? .14 : .1,
|
|
10683
|
-
fill: r ? "#ffffff" :
|
|
10684
|
-
stroke: r ?
|
|
10861
|
+
fill: r ? "#ffffff" : sr,
|
|
10862
|
+
stroke: r ? sr : "#ffffff",
|
|
10685
10863
|
strokeWidth: r ? .06 : .04,
|
|
10686
10864
|
listening: !1
|
|
10687
10865
|
}));
|
|
@@ -10694,13 +10872,13 @@ var er = class {
|
|
|
10694
10872
|
};
|
|
10695
10873
|
//#endregion
|
|
10696
10874
|
//#region src/editor/effects/GridOverlayEffect.ts
|
|
10697
|
-
function
|
|
10875
|
+
function fr(e, t) {
|
|
10698
10876
|
let n = e.match(/rgba?\(\s*(\d+),\s*(\d+),\s*(\d+)(?:,\s*([\d.]+))?\s*\)/);
|
|
10699
10877
|
if (!n) return e;
|
|
10700
10878
|
let r = n[4] === void 0 ? 1 : parseFloat(n[4]);
|
|
10701
10879
|
return `rgba(${n[1]}, ${n[2]}, ${n[3]}, ${Math.min(1, r * t)})`;
|
|
10702
10880
|
}
|
|
10703
|
-
var
|
|
10881
|
+
var pr = class {
|
|
10704
10882
|
gridShape;
|
|
10705
10883
|
axisShape;
|
|
10706
10884
|
labelShape;
|
|
@@ -10732,7 +10910,7 @@ var fr = class {
|
|
|
10732
10910
|
}), this.axisShape = new h.Shape({
|
|
10733
10911
|
listening: !1,
|
|
10734
10912
|
visible: !1,
|
|
10735
|
-
stroke:
|
|
10913
|
+
stroke: fr(this.gridColor, 2),
|
|
10736
10914
|
strokeWidth: this.gridLineWidth * 2,
|
|
10737
10915
|
sceneFunc: (e, t) => {
|
|
10738
10916
|
let { minX: n, maxX: r, minY: i, maxY: a } = this.bounds;
|
|
@@ -10746,7 +10924,7 @@ var fr = class {
|
|
|
10746
10924
|
text: "(0,0)",
|
|
10747
10925
|
fontSize: this.gridSize,
|
|
10748
10926
|
fontFamily: "monospace",
|
|
10749
|
-
fill:
|
|
10927
|
+
fill: fr(this.gridColor, 2)
|
|
10750
10928
|
}), e.add(this.gridShape), e.add(this.axisShape), e.add(this.labelShape), this.unsubscribe = D.subscribe(() => this.syncVisibility());
|
|
10751
10929
|
}
|
|
10752
10930
|
updateViewport(e, t, n) {
|
|
@@ -10760,7 +10938,7 @@ var fr = class {
|
|
|
10760
10938
|
let e = this.getIsEmpty();
|
|
10761
10939
|
e && (this.bounds = this.getViewportBounds()), this.gridShape.visible() !== e && (this.gridShape.visible(e), this.axisShape.visible(e), this.labelShape.visible(e), this.layer.batchDraw());
|
|
10762
10940
|
}
|
|
10763
|
-
},
|
|
10941
|
+
}, mr = class {
|
|
10764
10942
|
rect;
|
|
10765
10943
|
layer;
|
|
10766
10944
|
unsubscribe;
|
|
@@ -10794,7 +10972,7 @@ var fr = class {
|
|
|
10794
10972
|
};
|
|
10795
10973
|
//#endregion
|
|
10796
10974
|
//#region src/editor/effects/LabelHaloEffect.ts
|
|
10797
|
-
function
|
|
10975
|
+
function hr(e, t, n, r) {
|
|
10798
10976
|
return [
|
|
10799
10977
|
{
|
|
10800
10978
|
id: "nw",
|
|
@@ -10838,7 +11016,7 @@ function mr(e, t, n, r) {
|
|
|
10838
11016
|
}
|
|
10839
11017
|
];
|
|
10840
11018
|
}
|
|
10841
|
-
var
|
|
11019
|
+
var gr = class {
|
|
10842
11020
|
selRect;
|
|
10843
11021
|
hoverRect;
|
|
10844
11022
|
previewRect;
|
|
@@ -10928,7 +11106,7 @@ var hr = class {
|
|
|
10928
11106
|
for (let e of this.handles) e.visible(!1);
|
|
10929
11107
|
return;
|
|
10930
11108
|
}
|
|
10931
|
-
let t = .05, n = e.x - t, r = e.y - t, i = e.w + t * 2, a = e.h + t * 2, o = this.handleSize, s =
|
|
11109
|
+
let t = .05, n = e.x - t, r = e.y - t, i = e.w + t * 2, a = e.h + t * 2, o = this.handleSize, s = hr(n, r, i, a);
|
|
10932
11110
|
for (let e = 0; e < this.handles.length; e++) {
|
|
10933
11111
|
let t = this.handles[e], n = s[e];
|
|
10934
11112
|
t.x(n.x - o / 2), t.y(n.y - o / 2), t.width(o), t.height(o), t.visible(!0);
|
|
@@ -10947,13 +11125,170 @@ var hr = class {
|
|
|
10947
11125
|
} else this.previewRect.visible(!1);
|
|
10948
11126
|
this.layer.batchDraw();
|
|
10949
11127
|
}
|
|
11128
|
+
}, _r = class {
|
|
11129
|
+
hLine;
|
|
11130
|
+
vLine;
|
|
11131
|
+
dot;
|
|
11132
|
+
layer;
|
|
11133
|
+
unsubscribe;
|
|
11134
|
+
constructor(e) {
|
|
11135
|
+
this.sceneRef = e;
|
|
11136
|
+
}
|
|
11137
|
+
attach(e) {
|
|
11138
|
+
this.layer = e;
|
|
11139
|
+
let t = {
|
|
11140
|
+
stroke: "rgba(0, 229, 255, 0.7)",
|
|
11141
|
+
strokeWidth: .05,
|
|
11142
|
+
listening: !1,
|
|
11143
|
+
visible: !1
|
|
11144
|
+
};
|
|
11145
|
+
this.hLine = new h.Line({
|
|
11146
|
+
...t,
|
|
11147
|
+
points: [
|
|
11148
|
+
0,
|
|
11149
|
+
0,
|
|
11150
|
+
0,
|
|
11151
|
+
0
|
|
11152
|
+
]
|
|
11153
|
+
}), this.vLine = new h.Line({
|
|
11154
|
+
...t,
|
|
11155
|
+
points: [
|
|
11156
|
+
0,
|
|
11157
|
+
0,
|
|
11158
|
+
0,
|
|
11159
|
+
0
|
|
11160
|
+
]
|
|
11161
|
+
}), this.dot = new h.Circle({
|
|
11162
|
+
radius: .07,
|
|
11163
|
+
fill: "rgba(0, 229, 255, 0.6)",
|
|
11164
|
+
listening: !1,
|
|
11165
|
+
visible: !1
|
|
11166
|
+
}), e.add(this.hLine), e.add(this.vLine), e.add(this.dot), this.unsubscribe = D.subscribe((e) => this.sync(e)), this.sync(D.getState());
|
|
11167
|
+
}
|
|
11168
|
+
updateViewport(e, t, n) {
|
|
11169
|
+
let r = Math.max(.02, 1.5 / t);
|
|
11170
|
+
this.hLine?.strokeWidth(r), this.vLine?.strokeWidth(r), this.layer?.batchDraw();
|
|
11171
|
+
}
|
|
11172
|
+
syncPositions() {
|
|
11173
|
+
this.sync(D.getState());
|
|
11174
|
+
}
|
|
11175
|
+
destroy() {
|
|
11176
|
+
this.unsubscribe?.(), this.hLine?.destroy(), this.vLine?.destroy(), this.dot?.destroy();
|
|
11177
|
+
}
|
|
11178
|
+
sync(e) {
|
|
11179
|
+
if (!this.layer) return;
|
|
11180
|
+
let t = e.selection, n = this.sceneRef.current, r = () => {
|
|
11181
|
+
this.hLine?.visible(!1), this.vLine?.visible(!1), this.dot?.visible(!1), this.layer.batchDraw();
|
|
11182
|
+
};
|
|
11183
|
+
if (!t || t.kind !== "room" || t.ids.length < 2 || !n) return r();
|
|
11184
|
+
let { spreadShrink: i } = e, a, o;
|
|
11185
|
+
if (i?.centerMode === "anchor" && i.anchorRoomId !== null) {
|
|
11186
|
+
let e = n.getRenderRoom(i.anchorRoomId);
|
|
11187
|
+
if (!e) return r();
|
|
11188
|
+
a = e.x, o = e.y;
|
|
11189
|
+
} else {
|
|
11190
|
+
let i = [];
|
|
11191
|
+
for (let r of t.ids) {
|
|
11192
|
+
let t = n.getRenderRoom(r);
|
|
11193
|
+
!t || t.z !== e.currentZ || t.area !== e.currentAreaId || i.push({
|
|
11194
|
+
x: t.x,
|
|
11195
|
+
y: t.y
|
|
11196
|
+
});
|
|
11197
|
+
}
|
|
11198
|
+
if (i.length < 2) return r();
|
|
11199
|
+
a = i.reduce((e, t) => e + t.x, 0) / i.length, o = i.reduce((e, t) => e + t.y, 0) / i.length;
|
|
11200
|
+
}
|
|
11201
|
+
let s = .3;
|
|
11202
|
+
this.hLine.points([
|
|
11203
|
+
a - s,
|
|
11204
|
+
o,
|
|
11205
|
+
a + s,
|
|
11206
|
+
o
|
|
11207
|
+
]), this.hLine.visible(!0), this.vLine.points([
|
|
11208
|
+
a,
|
|
11209
|
+
o - s,
|
|
11210
|
+
a,
|
|
11211
|
+
o + s
|
|
11212
|
+
]), this.vLine.visible(!0), this.dot.x(a), this.dot.y(o), this.dot.visible(!0), this.layer.batchDraw();
|
|
11213
|
+
}
|
|
11214
|
+
};
|
|
11215
|
+
//#endregion
|
|
11216
|
+
//#region src/editor/effects/GhostRoomsEffect.ts
|
|
11217
|
+
function vr(e, t) {
|
|
11218
|
+
let n = e.match(/\d+/g);
|
|
11219
|
+
return !n || n.length < 3 ? `rgba(128, 128, 128, ${t})` : `rgba(${n[0]}, ${n[1]}, ${n[2]}, ${t})`;
|
|
11220
|
+
}
|
|
11221
|
+
var yr = class {
|
|
11222
|
+
rects = /* @__PURE__ */ new Map();
|
|
11223
|
+
layer;
|
|
11224
|
+
unsubscribe;
|
|
11225
|
+
strokeWidth = .06;
|
|
11226
|
+
dash = [.2, .15];
|
|
11227
|
+
constructor(e, t) {
|
|
11228
|
+
this.roomSize = e, this.sceneRef = t;
|
|
11229
|
+
}
|
|
11230
|
+
attach(e) {
|
|
11231
|
+
this.layer = e, this.unsubscribe = D.subscribe((e) => this.sync(e)), this.sync(D.getState());
|
|
11232
|
+
}
|
|
11233
|
+
updateViewport(e, t, n) {
|
|
11234
|
+
this.strokeWidth = Math.max(.03, 2 / t), this.dash = [Math.max(.1, 6 / t), Math.max(.08, 5 / t)], this.rects.forEach((e) => {
|
|
11235
|
+
e.strokeWidth(this.strokeWidth), e.dash([...this.dash]);
|
|
11236
|
+
}), this.layer?.batchDraw();
|
|
11237
|
+
}
|
|
11238
|
+
syncPositions() {
|
|
11239
|
+
this.sync(D.getState());
|
|
11240
|
+
}
|
|
11241
|
+
destroy() {
|
|
11242
|
+
this.unsubscribe?.(), this.rects.forEach((e) => e.destroy()), this.rects.clear();
|
|
11243
|
+
}
|
|
11244
|
+
computePositions(e) {
|
|
11245
|
+
let t = /* @__PURE__ */ new Map(), { selection: n, spreadShrink: r, currentAreaId: i, currentZ: a } = e, o = this.sceneRef.current;
|
|
11246
|
+
if (!r || !n || n.kind !== "room" || !o) return t;
|
|
11247
|
+
let s = [];
|
|
11248
|
+
for (let e of n.ids) {
|
|
11249
|
+
let t = o.getRenderRoom(e);
|
|
11250
|
+
!t || t.z !== a || t.area !== i || s.push({
|
|
11251
|
+
id: e,
|
|
11252
|
+
x: t.x,
|
|
11253
|
+
y: t.y
|
|
11254
|
+
});
|
|
11255
|
+
}
|
|
11256
|
+
if (s.length < 2) return t;
|
|
11257
|
+
let c, l;
|
|
11258
|
+
if (r.centerMode === "anchor" && r.anchorRoomId !== null) {
|
|
11259
|
+
let e = o.getRenderRoom(r.anchorRoomId);
|
|
11260
|
+
c = e ? e.x : s.reduce((e, t) => e + t.x, 0) / s.length, l = e ? e.y : s.reduce((e, t) => e + t.y, 0) / s.length;
|
|
11261
|
+
} else c = s.reduce((e, t) => e + t.x, 0) / s.length, l = s.reduce((e, t) => e + t.y, 0) / s.length;
|
|
11262
|
+
let { factor: u } = r, d = e.snapToGrid ? (t) => Math.round(t / e.gridStep) * e.gridStep : (e) => e;
|
|
11263
|
+
for (let { id: e, x: n, y: r } of s) t.set(e, {
|
|
11264
|
+
x: d(c + (n - c) * u),
|
|
11265
|
+
y: d(l + (r - l) * u)
|
|
11266
|
+
});
|
|
11267
|
+
return t;
|
|
11268
|
+
}
|
|
11269
|
+
sync(e) {
|
|
11270
|
+
if (!this.layer) return;
|
|
11271
|
+
let t = this.sceneRef.current, n = this.computePositions(e);
|
|
11272
|
+
for (let [e, t] of this.rects) n.has(e) || (t.destroy(), this.rects.delete(e));
|
|
11273
|
+
let r = .05, i = this.roomSize + r * 2;
|
|
11274
|
+
for (let [e, a] of n) {
|
|
11275
|
+
let n = t?.getRenderRoom(e), o = t?.reader.getColorValue(n?.env ?? 1) ?? "rgb(128,128,128)", s = vr(o, .2), c = vr(o, .65), l = this.rects.get(e);
|
|
11276
|
+
l || (l = new h.Rect({
|
|
11277
|
+
strokeWidth: this.strokeWidth,
|
|
11278
|
+
dash: [...this.dash],
|
|
11279
|
+
cornerRadius: .04,
|
|
11280
|
+
listening: !1
|
|
11281
|
+
}), this.layer.add(l), this.rects.set(e, l)), l.fill(s), l.stroke(c), l.x(a.x - this.roomSize / 2 - r), l.y(a.y - this.roomSize / 2 - r), l.width(i), l.height(i);
|
|
11282
|
+
}
|
|
11283
|
+
this.layer.batchDraw();
|
|
11284
|
+
}
|
|
10950
11285
|
};
|
|
10951
11286
|
//#endregion
|
|
10952
11287
|
//#region src/editor/pointerController.ts
|
|
10953
|
-
function
|
|
11288
|
+
function br(e) {
|
|
10954
11289
|
let { container: t } = e, n = null, r = null, i = D.getState().spaceHeld, a = D.subscribe((r) => {
|
|
10955
11290
|
if (!i && r.spaceHeld && n !== null) {
|
|
10956
|
-
|
|
11291
|
+
Ft[r.activeTool].onCancel?.(e);
|
|
10957
11292
|
try {
|
|
10958
11293
|
t.releasePointerCapture(n);
|
|
10959
11294
|
} catch {}
|
|
@@ -10971,7 +11306,7 @@ function gr(e) {
|
|
|
10971
11306
|
e.renderer.backend.viewport.startDrag(i.clientX - n.left, i.clientY - n.top), r = i.pointerId, t.setPointerCapture(i.pointerId), o(i);
|
|
10972
11307
|
return;
|
|
10973
11308
|
}
|
|
10974
|
-
let a = D.getState().pending?.kind, l =
|
|
11309
|
+
let a = D.getState().pending?.kind, l = Ft[a === "pickSwatch" || a === "pickExit" || a === "pickSpecialExit" ? "select" : s()];
|
|
10975
11310
|
!l.onPointerDown || !c(i) || l.onPointerDown(i, e) && (n = i.pointerId, o(i));
|
|
10976
11311
|
}, u = (i) => {
|
|
10977
11312
|
if (r === i.pointerId) {
|
|
@@ -10979,7 +11314,7 @@ function gr(e) {
|
|
|
10979
11314
|
e.renderer.backend.viewport.updateDrag(i.clientX - n.left, i.clientY - n.top), e.refresh(), o(i);
|
|
10980
11315
|
return;
|
|
10981
11316
|
}
|
|
10982
|
-
(
|
|
11317
|
+
(Ft[s()].onPointerMove?.(i, e) || n === i.pointerId) && o(i);
|
|
10983
11318
|
}, d = (i) => {
|
|
10984
11319
|
if (r === i.pointerId) {
|
|
10985
11320
|
e.renderer.backend.viewport.endDrag();
|
|
@@ -10989,14 +11324,14 @@ function gr(e) {
|
|
|
10989
11324
|
r = null, o(i);
|
|
10990
11325
|
return;
|
|
10991
11326
|
}
|
|
10992
|
-
let a =
|
|
11327
|
+
let a = Ft[s()].onPointerUp?.(i, e), c = n === i.pointerId;
|
|
10993
11328
|
c && (n = null), (a || c) && o(i);
|
|
10994
11329
|
}, f = (t) => {
|
|
10995
11330
|
if (r === t.pointerId) {
|
|
10996
11331
|
e.renderer.backend.viewport.endDrag(), r = null;
|
|
10997
11332
|
return;
|
|
10998
11333
|
}
|
|
10999
|
-
|
|
11334
|
+
Ft[s()].onCancel?.(e), n === t.pointerId && (n = null, o(t));
|
|
11000
11335
|
}, p = () => {
|
|
11001
11336
|
D.getState().hover && D.setState({ hover: null });
|
|
11002
11337
|
}, m = (e) => {
|
|
@@ -11008,7 +11343,7 @@ function gr(e) {
|
|
|
11008
11343
|
}, h = (e) => {
|
|
11009
11344
|
e.button !== 1 && (e.button === 0 || e.button === 2) && s() !== "pan" && o(e);
|
|
11010
11345
|
}, g = (t) => {
|
|
11011
|
-
t.preventDefault(),
|
|
11346
|
+
t.preventDefault(), Ft[s()].onContextMenu?.(t, e);
|
|
11012
11347
|
}, _ = { capture: !0 };
|
|
11013
11348
|
return t.addEventListener("pointerdown", l, _), t.addEventListener("pointermove", u, _), t.addEventListener("pointerup", d, _), t.addEventListener("pointercancel", f, _), t.addEventListener("pointerleave", p), t.addEventListener("mousedown", m, _), t.addEventListener("mouseup", h, _), t.addEventListener("contextmenu", g), () => {
|
|
11014
11349
|
a(), t.removeEventListener("pointerdown", l, _), t.removeEventListener("pointermove", u, _), t.removeEventListener("pointerup", d, _), t.removeEventListener("pointercancel", f, _), t.removeEventListener("pointerleave", p), t.removeEventListener("mousedown", m, _), t.removeEventListener("mouseup", h, _), t.removeEventListener("contextmenu", g);
|
|
@@ -11016,17 +11351,17 @@ function gr(e) {
|
|
|
11016
11351
|
}
|
|
11017
11352
|
//#endregion
|
|
11018
11353
|
//#region src/editor/scene.ts
|
|
11019
|
-
function
|
|
11354
|
+
function xr(e, t) {
|
|
11020
11355
|
let n = m();
|
|
11021
11356
|
n.gridEnabled = !0, n.highlightCurrentRoom = !1, n.areaName = !1, n.labelRenderMode = "image", t.dataset.editorCursor = "true";
|
|
11022
|
-
let r = new
|
|
11357
|
+
let r = new Kn(e), i = new p(r, n, t), a = { current: null }, o = new mr(), s = new qn(n.roomSize, a), c = new Qn(n.roomSize, a), l = new tr(a), u = new nr(n.roomSize), d = new rr(n.roomSize, a), f = new or(a), h = new dr(a, n.roomSize), g = new gr(a), _ = new _r(a), v = new yr(n.roomSize, a), y = new pr(n.gridColor, n.gridLineWidth, n.gridSize, () => {
|
|
11023
11358
|
let e = D.getState();
|
|
11024
11359
|
if (e.currentAreaId == null) return !1;
|
|
11025
11360
|
let t = r.getArea(e.currentAreaId);
|
|
11026
11361
|
return t ? t.getRooms().every((t) => t.z !== e.currentZ) : !1;
|
|
11027
11362
|
}, () => i.backend.viewport.getViewportBounds());
|
|
11028
|
-
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", h), i.addLiveEffect("editor.labelHalo", g), i.addLiveEffect("editor.
|
|
11029
|
-
let
|
|
11363
|
+
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", h), i.addLiveEffect("editor.labelHalo", g), i.addLiveEffect("editor.selectionCenter", _), i.addLiveEffect("editor.ghostRooms", v), i.addLiveEffect("editor.gridOverlay", y);
|
|
11364
|
+
let b = {
|
|
11030
11365
|
renderer: i,
|
|
11031
11366
|
reader: r,
|
|
11032
11367
|
settings: n,
|
|
@@ -11036,36 +11371,36 @@ function _r(e, t) {
|
|
|
11036
11371
|
setArea(e, t, n) {
|
|
11037
11372
|
i.drawArea(e, t);
|
|
11038
11373
|
let a = r.getArea(e);
|
|
11039
|
-
!a || a.getRooms().every((e) => e.z !== t) ? i.backend.viewport.panToMapPoint(0, 0) : i.fitArea(n),
|
|
11374
|
+
!a || a.getRooms().every((e) => e.z !== t) ? i.backend.viewport.panToMapPoint(0, 0) : i.fitArea(n), y.syncVisibility();
|
|
11040
11375
|
},
|
|
11041
11376
|
setAreaAt(e, t, n, r) {
|
|
11042
|
-
i.drawArea(e, t), i.backend.viewport.panToMapPoint(n, r),
|
|
11377
|
+
i.drawArea(e, t), i.backend.viewport.panToMapPoint(n, r), y.syncVisibility();
|
|
11043
11378
|
},
|
|
11044
11379
|
refresh() {
|
|
11045
|
-
i.refresh(), s.syncPositions(), g.syncPositions();
|
|
11380
|
+
i.refresh(), s.syncPositions(), g.syncPositions(), _.syncPositions(), v.syncPositions();
|
|
11046
11381
|
},
|
|
11047
11382
|
destroy() {
|
|
11048
|
-
delete t.dataset.editorCursor,
|
|
11383
|
+
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"), h.destroy(), i.removeLiveEffect("editor.selectedLink"), g.destroy(), i.removeLiveEffect("editor.labelHalo"), _.destroy(), i.removeLiveEffect("editor.selectionCenter"), v.destroy(), i.removeLiveEffect("editor.ghostRooms"), y.destroy(), i.removeLiveEffect("editor.gridOverlay"), i.destroy();
|
|
11049
11384
|
}
|
|
11050
11385
|
};
|
|
11051
|
-
a.current =
|
|
11052
|
-
let
|
|
11386
|
+
a.current = b;
|
|
11387
|
+
let x = br({
|
|
11053
11388
|
renderer: i,
|
|
11054
11389
|
container: t,
|
|
11055
11390
|
settings: n,
|
|
11056
11391
|
refresh: () => i.refresh(),
|
|
11057
|
-
scene:
|
|
11392
|
+
scene: b
|
|
11058
11393
|
});
|
|
11059
|
-
return
|
|
11394
|
+
return b;
|
|
11060
11395
|
}
|
|
11061
11396
|
//#endregion
|
|
11062
11397
|
//#region src/App.tsx
|
|
11063
|
-
var
|
|
11398
|
+
var Sr = {
|
|
11064
11399
|
top: 104,
|
|
11065
11400
|
right: 464,
|
|
11066
11401
|
bottom: 24,
|
|
11067
11402
|
left: 24
|
|
11068
|
-
},
|
|
11403
|
+
}, Cr = {
|
|
11069
11404
|
1: "select",
|
|
11070
11405
|
2: "connect",
|
|
11071
11406
|
3: "unlink",
|
|
@@ -11074,7 +11409,7 @@ var vr = {
|
|
|
11074
11409
|
6: "delete",
|
|
11075
11410
|
7: "pan",
|
|
11076
11411
|
8: "paint"
|
|
11077
|
-
},
|
|
11412
|
+
}, wr = {
|
|
11078
11413
|
ArrowLeft: {
|
|
11079
11414
|
dx: -1,
|
|
11080
11415
|
dy: 0
|
|
@@ -11092,43 +11427,43 @@ var vr = {
|
|
|
11092
11427
|
dy: -1
|
|
11093
11428
|
}
|
|
11094
11429
|
};
|
|
11095
|
-
function
|
|
11096
|
-
let s = r(null), c = r(null), l = O((e) => e.map),
|
|
11430
|
+
function Tr({ plugins: a = [], title: o = "Mudlet Map Editor" }) {
|
|
11431
|
+
let s = r(null), c = r(null), l = O((e) => e.map), p = O((e) => e.swatchPaletteOpen), m = l != null, h = O((e) => e.currentAreaId), g = O((e) => e.currentZ), _ = O((e) => e.activeTool), v = O((e) => e.pending), y = O((e) => e.hover), b = O((e) => e.spaceHeld), x = O((e) => e.panelCollapsed), C = O((e) => e.dataVersion), w = O((e) => e.panRequest), [T, E] = i(!1), [k, A] = i(!1), [j, M] = i(!1), [N, P] = i(() => new URLSearchParams(window.location.search).get("map")), F = n(() => a.flatMap((e) => e.swatchSets?.() ?? []), [a]), I = n(() => a.flatMap((e) => e.sidebarTabs?.() ?? []), [a]), L = n(() => a.flatMap((e) => e.roomPanelSections?.() ?? []), [a]);
|
|
11097
11432
|
t(() => {
|
|
11098
|
-
D.setState({ pluginSwatchSets:
|
|
11099
|
-
}, [
|
|
11433
|
+
D.setState({ pluginSwatchSets: F });
|
|
11434
|
+
}, [F]), t(() => {
|
|
11100
11435
|
a.length !== 0 && (async () => {
|
|
11101
11436
|
for (let e of a) await e.onAppReady?.();
|
|
11102
11437
|
})();
|
|
11103
11438
|
}, []);
|
|
11104
|
-
let
|
|
11439
|
+
let R = r(l);
|
|
11105
11440
|
t(() => {
|
|
11106
|
-
let e =
|
|
11107
|
-
if (
|
|
11441
|
+
let e = R.current;
|
|
11442
|
+
if (R.current = l, l && l !== e) for (let e of a) e.onMapOpened?.(l);
|
|
11108
11443
|
else if (e && !l) for (let e of a) e.onMapClosed?.();
|
|
11109
11444
|
}, [l]), t(() => {
|
|
11110
11445
|
if (!l || !s.current) return;
|
|
11111
|
-
let e =
|
|
11446
|
+
let e = xr(l, s.current);
|
|
11112
11447
|
c.current = e;
|
|
11113
11448
|
let { currentAreaId: t, currentZ: n } = D.getState();
|
|
11114
|
-
return t != null && e.setArea(t, n,
|
|
11449
|
+
return t != null && e.setArea(t, n, Sr), () => {
|
|
11115
11450
|
e.destroy(), c.current = null;
|
|
11116
11451
|
};
|
|
11117
11452
|
}, [l]), t(() => {
|
|
11118
11453
|
let e = c.current;
|
|
11119
|
-
if (!e || !
|
|
11454
|
+
if (!e || !m || h == null) return;
|
|
11120
11455
|
let t = D.getState().navigateTo;
|
|
11121
|
-
t ? (D.setState({ navigateTo: null }), e.setAreaAt(
|
|
11456
|
+
t ? (D.setState({ navigateTo: null }), e.setAreaAt(h, g, t.mapX, t.mapY)) : e.setArea(h, g, Sr);
|
|
11122
11457
|
}, [
|
|
11123
|
-
m,
|
|
11124
11458
|
h,
|
|
11125
|
-
|
|
11459
|
+
g,
|
|
11460
|
+
m
|
|
11126
11461
|
]), t(() => {
|
|
11127
|
-
!
|
|
11128
|
-
}, [
|
|
11462
|
+
!w || !c.current || (D.setState({ panRequest: null }), c.current.renderer.backend.viewport.panToMapPoint(w.mapX, w.mapY), c.current.refresh());
|
|
11463
|
+
}, [w]), t(() => {
|
|
11129
11464
|
let e = s.current;
|
|
11130
11465
|
if (!e) return;
|
|
11131
|
-
if (
|
|
11466
|
+
if (b) {
|
|
11132
11467
|
let t = () => {
|
|
11133
11468
|
e.style.cursor = "grabbing";
|
|
11134
11469
|
}, n = () => {
|
|
@@ -11138,12 +11473,12 @@ function xr({ plugins: a = [], title: o = "Mudlet Map Editor" }) {
|
|
|
11138
11473
|
e.removeEventListener("pointerdown", t), e.removeEventListener("pointerup", n), e.removeEventListener("pointercancel", n);
|
|
11139
11474
|
};
|
|
11140
11475
|
}
|
|
11141
|
-
if (
|
|
11476
|
+
if (v?.kind === "pickExit" || v?.kind === "pickSpecialExit" || v?.kind === "pickSwatch") {
|
|
11142
11477
|
e.style.cursor = "crosshair";
|
|
11143
11478
|
return;
|
|
11144
11479
|
}
|
|
11145
11480
|
let t = {
|
|
11146
|
-
select:
|
|
11481
|
+
select: y ? "pointer" : "default",
|
|
11147
11482
|
connect: "crosshair",
|
|
11148
11483
|
unlink: "crosshair",
|
|
11149
11484
|
addRoom: "crosshair",
|
|
@@ -11153,12 +11488,12 @@ function xr({ plugins: a = [], title: o = "Mudlet Map Editor" }) {
|
|
|
11153
11488
|
addLabel: "crosshair",
|
|
11154
11489
|
paint: "cell"
|
|
11155
11490
|
};
|
|
11156
|
-
e.style.cursor = t[
|
|
11491
|
+
e.style.cursor = t[_];
|
|
11157
11492
|
}, [
|
|
11158
|
-
|
|
11159
|
-
v,
|
|
11493
|
+
_,
|
|
11160
11494
|
y,
|
|
11161
|
-
|
|
11495
|
+
b,
|
|
11496
|
+
v
|
|
11162
11497
|
]), t(() => {
|
|
11163
11498
|
let { map: e, loaded: t, undo: n, currentAreaId: r, currentZ: i, sessionId: a } = D.getState();
|
|
11164
11499
|
if (!e || !t) return;
|
|
@@ -11168,7 +11503,7 @@ function xr({ plugins: a = [], title: o = "Mudlet Map Editor" }) {
|
|
|
11168
11503
|
}).catch(console.error);
|
|
11169
11504
|
}, 1500);
|
|
11170
11505
|
return () => clearTimeout(o);
|
|
11171
|
-
}, [
|
|
11506
|
+
}, [C]), t(() => {
|
|
11172
11507
|
let e = (e) => {
|
|
11173
11508
|
let t = e?.tagName;
|
|
11174
11509
|
return t === "INPUT" || t === "TEXTAREA" || t === "SELECT";
|
|
@@ -11183,7 +11518,7 @@ function xr({ plugins: a = [], title: o = "Mudlet Map Editor" }) {
|
|
|
11183
11518
|
return;
|
|
11184
11519
|
}
|
|
11185
11520
|
if ((t.ctrlKey || t.metaKey) && t.key.toLowerCase() === "f") {
|
|
11186
|
-
t.preventDefault(),
|
|
11521
|
+
t.preventDefault(), M((e) => !e);
|
|
11187
11522
|
return;
|
|
11188
11523
|
}
|
|
11189
11524
|
if ((t.ctrlKey || t.metaKey) && !t.shiftKey && t.key.toLowerCase() === "z") {
|
|
@@ -11196,12 +11531,12 @@ function xr({ plugins: a = [], title: o = "Mudlet Map Editor" }) {
|
|
|
11196
11531
|
}
|
|
11197
11532
|
if (t.key === "Enter") {
|
|
11198
11533
|
let e = D.getState();
|
|
11199
|
-
e.pending?.kind === "customLine" &&
|
|
11534
|
+
e.pending?.kind === "customLine" && kt(e.pending);
|
|
11200
11535
|
return;
|
|
11201
11536
|
}
|
|
11202
11537
|
if (t.key === "Escape") {
|
|
11203
11538
|
let e = D.getState();
|
|
11204
|
-
e.pending ? (e.pending.kind === "customLine" && c.current &&
|
|
11539
|
+
e.pending ? (e.pending.kind === "customLine" && c.current && Ot(e.pending, c.current), D.setState({
|
|
11205
11540
|
pending: null,
|
|
11206
11541
|
activeTool: e.pending.kind === "customLine" ? "select" : e.activeTool,
|
|
11207
11542
|
status: "Cancelled."
|
|
@@ -11209,7 +11544,7 @@ function xr({ plugins: a = [], title: o = "Mudlet Map Editor" }) {
|
|
|
11209
11544
|
return;
|
|
11210
11545
|
}
|
|
11211
11546
|
if (t.key === "Delete" || t.key === "Backspace") {
|
|
11212
|
-
|
|
11547
|
+
ee();
|
|
11213
11548
|
return;
|
|
11214
11549
|
}
|
|
11215
11550
|
if (t.key === "g" || t.key === "G") {
|
|
@@ -11217,13 +11552,13 @@ function xr({ plugins: a = [], title: o = "Mudlet Map Editor" }) {
|
|
|
11217
11552
|
return;
|
|
11218
11553
|
}
|
|
11219
11554
|
if (t.key === "f" || t.key === "F") {
|
|
11220
|
-
c.current?.renderer.fitArea(
|
|
11555
|
+
c.current?.renderer.fitArea(Sr);
|
|
11221
11556
|
return;
|
|
11222
11557
|
}
|
|
11223
|
-
if (
|
|
11558
|
+
if (Cr[t.key]) {
|
|
11224
11559
|
let e = D.getState();
|
|
11225
|
-
e.pending?.kind === "customLine" && c.current && (
|
|
11226
|
-
activeTool:
|
|
11560
|
+
e.pending?.kind === "customLine" && c.current && (Ot(e.pending, c.current), D.bumpData()), D.setState({
|
|
11561
|
+
activeTool: Cr[t.key],
|
|
11227
11562
|
pending: null
|
|
11228
11563
|
});
|
|
11229
11564
|
return;
|
|
@@ -11239,14 +11574,14 @@ function xr({ plugins: a = [], title: o = "Mudlet Map Editor" }) {
|
|
|
11239
11574
|
} });
|
|
11240
11575
|
return;
|
|
11241
11576
|
}
|
|
11242
|
-
if (
|
|
11577
|
+
if (wr[t.key]) {
|
|
11243
11578
|
let e = D.getState();
|
|
11244
11579
|
if (e.activeTool !== "select" || !e.selection || !e.map) return;
|
|
11245
11580
|
if (e.selection.kind === "label") {
|
|
11246
11581
|
let { id: n, areaId: r } = e.selection, i = c.current?.reader.getLabelSnapshot(r, n);
|
|
11247
11582
|
if (!i) return;
|
|
11248
11583
|
t.preventDefault();
|
|
11249
|
-
let a = (t.shiftKey ? 5 : 1) * e.gridStep, o =
|
|
11584
|
+
let a = (t.shiftKey ? 5 : 1) * e.gridStep, o = wr[t.key], s = o.dx * a, l = o.dy * a, u = [...i.pos], d = [
|
|
11250
11585
|
i.pos[0] + s,
|
|
11251
11586
|
i.pos[1] + l,
|
|
11252
11587
|
i.pos[2]
|
|
@@ -11265,7 +11600,7 @@ function xr({ plugins: a = [], title: o = "Mudlet Map Editor" }) {
|
|
|
11265
11600
|
}
|
|
11266
11601
|
if (e.selection.kind !== "room") return;
|
|
11267
11602
|
t.preventDefault();
|
|
11268
|
-
let n = (t.shiftKey ? 5 : 1) * e.gridStep, r =
|
|
11603
|
+
let n = (t.shiftKey ? 5 : 1) * e.gridStep, r = wr[t.key], i = r.dx * n, a = r.dy * n, o = [];
|
|
11269
11604
|
for (let t of e.selection.ids) {
|
|
11270
11605
|
let n = e.map.rooms[t];
|
|
11271
11606
|
if (!n) continue;
|
|
@@ -11273,7 +11608,7 @@ function xr({ plugins: a = [], title: o = "Mudlet Map Editor" }) {
|
|
|
11273
11608
|
x: n.x,
|
|
11274
11609
|
y: n.y,
|
|
11275
11610
|
z: n.z
|
|
11276
|
-
}, s =
|
|
11611
|
+
}, s = ke(e.map, t, i, a);
|
|
11277
11612
|
c.current?.reader.moveRoom(t, n.x + i, -(n.y + a), n.z);
|
|
11278
11613
|
let l = {
|
|
11279
11614
|
x: n.x,
|
|
@@ -11303,7 +11638,7 @@ function xr({ plugins: a = [], title: o = "Mudlet Map Editor" }) {
|
|
|
11303
11638
|
}
|
|
11304
11639
|
};
|
|
11305
11640
|
window.addEventListener("keydown", r), window.addEventListener("keyup", t), window.addEventListener("blur", n);
|
|
11306
|
-
let i = () => c.current?.renderer.fitArea(
|
|
11641
|
+
let i = () => c.current?.renderer.fitArea(Sr);
|
|
11307
11642
|
return window.addEventListener("editor:undo", z), window.addEventListener("editor:redo", B), window.addEventListener("editor:fit", i), () => {
|
|
11308
11643
|
window.removeEventListener("keydown", r), window.removeEventListener("keyup", t), window.removeEventListener("blur", n), window.removeEventListener("editor:undo", z), window.removeEventListener("editor:redo", B), window.removeEventListener("editor:fit", i);
|
|
11309
11644
|
};
|
|
@@ -11319,7 +11654,7 @@ function xr({ plugins: a = [], title: o = "Mudlet Map Editor" }) {
|
|
|
11319
11654
|
window.removeEventListener("dragover", e), window.removeEventListener("drop", t);
|
|
11320
11655
|
};
|
|
11321
11656
|
}, []);
|
|
11322
|
-
let
|
|
11657
|
+
let ee = () => {
|
|
11323
11658
|
let e = D.getState();
|
|
11324
11659
|
if (!e.map) return;
|
|
11325
11660
|
let t = e.selection;
|
|
@@ -11327,7 +11662,7 @@ function xr({ plugins: a = [], title: o = "Mudlet Map Editor" }) {
|
|
|
11327
11662
|
if (t.kind === "room") {
|
|
11328
11663
|
if (e.currentAreaId == null) return;
|
|
11329
11664
|
if (t.ids.length > 1) {
|
|
11330
|
-
let n =
|
|
11665
|
+
let n = je(e.map, t.ids), r = [];
|
|
11331
11666
|
for (let i of t.ids) {
|
|
11332
11667
|
let t = e.map.rooms[i];
|
|
11333
11668
|
t && r.push({
|
|
@@ -11350,7 +11685,7 @@ function xr({ plugins: a = [], title: o = "Mudlet Map Editor" }) {
|
|
|
11350
11685
|
}
|
|
11351
11686
|
let n = t.ids[0], r = e.map.rooms[n];
|
|
11352
11687
|
if (!r) return;
|
|
11353
|
-
let i = { ...r }, a =
|
|
11688
|
+
let i = { ...r }, a = Ae(e.map, n);
|
|
11354
11689
|
Y({
|
|
11355
11690
|
kind: "deleteRoom",
|
|
11356
11691
|
id: n,
|
|
@@ -11465,14 +11800,14 @@ function xr({ plugins: a = [], title: o = "Mudlet Map Editor" }) {
|
|
|
11465
11800
|
}
|
|
11466
11801
|
}
|
|
11467
11802
|
}, z = () => {
|
|
11468
|
-
let { changed: e, structural: t } =
|
|
11803
|
+
let { changed: e, structural: t } = De(c.current);
|
|
11469
11804
|
e && (c.current?.refresh(), t ? D.bumpStructure() : D.bumpData(), D.setState({ status: "Undone" }));
|
|
11470
11805
|
}, B = () => {
|
|
11471
|
-
let { changed: e, structural: t } =
|
|
11806
|
+
let { changed: e, structural: t } = Oe(c.current);
|
|
11472
11807
|
e && (c.current?.refresh(), t ? D.bumpStructure() : D.bumpData(), D.setState({ status: "Redone" }));
|
|
11473
11808
|
};
|
|
11474
11809
|
return /* @__PURE__ */ f("div", {
|
|
11475
|
-
className: `app${
|
|
11810
|
+
className: `app${x ? " panel-collapsed" : ""}`,
|
|
11476
11811
|
children: [
|
|
11477
11812
|
/* @__PURE__ */ f("div", {
|
|
11478
11813
|
className: "map-viewport",
|
|
@@ -11481,32 +11816,40 @@ function xr({ plugins: a = [], title: o = "Mudlet Map Editor" }) {
|
|
|
11481
11816
|
ref: s,
|
|
11482
11817
|
className: "map-container"
|
|
11483
11818
|
}),
|
|
11484
|
-
!
|
|
11819
|
+
!m && /* @__PURE__ */ d(kn, {}),
|
|
11485
11820
|
/* @__PURE__ */ d(ue, {
|
|
11486
11821
|
title: o,
|
|
11487
|
-
onHelpClick: () =>
|
|
11488
|
-
onLoadFromUrl: () =>
|
|
11822
|
+
onHelpClick: () => E(!0),
|
|
11823
|
+
onLoadFromUrl: () => A(!0),
|
|
11489
11824
|
onSave: (e) => {
|
|
11490
11825
|
for (let t of a) t.onMapSave?.(e);
|
|
11491
11826
|
},
|
|
11492
|
-
onSearchClick: () =>
|
|
11827
|
+
onSearchClick: () => M((e) => !e)
|
|
11493
11828
|
}),
|
|
11494
|
-
/* @__PURE__ */ d(
|
|
11829
|
+
/* @__PURE__ */ d(pn, {
|
|
11495
11830
|
sceneRef: c,
|
|
11496
|
-
extraTabs:
|
|
11497
|
-
pluginRoomSections:
|
|
11831
|
+
extraTabs: I,
|
|
11832
|
+
pluginRoomSections: L
|
|
11498
11833
|
})
|
|
11499
11834
|
]
|
|
11500
11835
|
}),
|
|
11501
|
-
/* @__PURE__ */ d(
|
|
11502
|
-
|
|
11836
|
+
/* @__PURE__ */ d(mn, { sceneRef: c }),
|
|
11837
|
+
p && /* @__PURE__ */ d(An, { sceneRef: c }),
|
|
11503
11838
|
a.map((t, n) => /* @__PURE__ */ d(e, { children: t.renderOverlay?.() }, n)),
|
|
11504
|
-
|
|
11505
|
-
|
|
11506
|
-
|
|
11507
|
-
|
|
11839
|
+
j && m && /* @__PURE__ */ f(u, { children: [/* @__PURE__ */ d("div", {
|
|
11840
|
+
style: {
|
|
11841
|
+
position: "fixed",
|
|
11842
|
+
inset: 0,
|
|
11843
|
+
zIndex: 399
|
|
11844
|
+
},
|
|
11845
|
+
onMouseDown: () => M(!1)
|
|
11846
|
+
}), /* @__PURE__ */ d(Mn, { onClose: () => M(!1) })] }),
|
|
11847
|
+
/* @__PURE__ */ d(Nn, { sceneRef: c }),
|
|
11848
|
+
T && /* @__PURE__ */ d(le, { onClose: () => E(!1) }),
|
|
11849
|
+
(k || N) && /* @__PURE__ */ d(de, {
|
|
11850
|
+
initialUrl: N ?? void 0,
|
|
11508
11851
|
onClose: () => {
|
|
11509
|
-
|
|
11852
|
+
A(!1), P(null);
|
|
11510
11853
|
}
|
|
11511
11854
|
})
|
|
11512
11855
|
]
|
|
@@ -11514,9 +11857,9 @@ function xr({ plugins: a = [], title: o = "Mudlet Map Editor" }) {
|
|
|
11514
11857
|
}
|
|
11515
11858
|
//#endregion
|
|
11516
11859
|
//#region src/editor/mapBytes.ts
|
|
11517
|
-
function
|
|
11860
|
+
function Er() {
|
|
11518
11861
|
let { map: e } = D.getState();
|
|
11519
|
-
return e ?
|
|
11862
|
+
return e ? H(e) : null;
|
|
11520
11863
|
}
|
|
11521
11864
|
//#endregion
|
|
11522
|
-
export {
|
|
11865
|
+
export { Tr as App, Er as getMapBytes, G as loadUrlIntoStore, Y as pushCommand, D as store, O as useEditorState };
|