bc-deeplib 1.2.0 → 2.1.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/deeplib.d.ts +145 -100
- package/dist/deeplib.js +412 -278
- package/dist/deeplib.js.map +2 -2
- package/dist/public/dl_images/arrow_left.svg +9 -1
- package/dist/public/dl_images/arrow_right.svg +9 -1
- package/dist/public/dl_images/bookmark.svg +17 -0
- package/dist/public/dl_images/bug.svg +9 -1
- package/dist/public/dl_images/exit.svg +12 -1
- package/dist/public/dl_images/notebook.svg +10 -1
- package/dist/public/dl_images/transfer.svg +9 -1
- package/dist/public/dl_images/trash_bin.svg +18 -1
- package/dist/public/dl_translations/en.lang +6 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/vendored_types/utility.d.ts +3 -0
- package/package.json +11 -11
package/dist/deeplib.js
CHANGED
|
@@ -28,7 +28,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
28
28
|
// node_modules/.pnpm/bondage-club-mod-sdk@1.2.0/node_modules/bondage-club-mod-sdk/dist/bcmodsdk.js
|
|
29
29
|
var require_bcmodsdk = __commonJS({
|
|
30
30
|
"node_modules/.pnpm/bondage-club-mod-sdk@1.2.0/node_modules/bondage-club-mod-sdk/dist/bcmodsdk.js"(exports) {
|
|
31
|
-
var bcModSdk = function() {
|
|
31
|
+
var bcModSdk = (function() {
|
|
32
32
|
"use strict";
|
|
33
33
|
const o = "1.2.0";
|
|
34
34
|
function e(o2) {
|
|
@@ -44,7 +44,7 @@ var require_bcmodsdk = __commonJS({
|
|
|
44
44
|
__name(n, "n");
|
|
45
45
|
function r(o2) {
|
|
46
46
|
const e2 = /* @__PURE__ */ new Set();
|
|
47
|
-
return o2.filter((o3) => !e2.has(o3) && e2.add(o3));
|
|
47
|
+
return o2.filter(((o3) => !e2.has(o3) && e2.add(o3)));
|
|
48
48
|
}
|
|
49
49
|
__name(r, "r");
|
|
50
50
|
const i = /* @__PURE__ */ new Map(), a = /* @__PURE__ */ new Set();
|
|
@@ -67,13 +67,13 @@ Patch2:
|
|
|
67
67
|
${a2}`), t2.set(e3, a2), n2.add(r3.name);
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
|
-
e2.sort((o3, e3) => e3.priority - o3.priority);
|
|
71
|
-
const r2 = function(o3, e3) {
|
|
70
|
+
e2.sort(((o3, e3) => e3.priority - o3.priority));
|
|
71
|
+
const r2 = (function(o3, e3) {
|
|
72
72
|
if (0 === e3.size) return o3;
|
|
73
73
|
let t3 = o3.toString().replaceAll("\r\n", "\n");
|
|
74
74
|
for (const [n3, r3] of e3.entries()) t3.includes(n3) || c(`ModSDK: Patching ${o3.name}: Patch ${n3} not applied`), t3 = t3.replaceAll(n3, r3);
|
|
75
75
|
return (0, eval)(`(${t3})`);
|
|
76
|
-
}(o2.original, t2);
|
|
76
|
+
})(o2.original, t2);
|
|
77
77
|
let i2 = /* @__PURE__ */ __name(function(e3) {
|
|
78
78
|
var t3, i3;
|
|
79
79
|
const a2 = null === (i3 = (t3 = m.errorReporterHooks).hookChainExit) || void 0 === i3 ? void 0 : i3.call(t3, o2.name, n2), c2 = r2.apply(this, e3);
|
|
@@ -102,7 +102,7 @@ ${a2}`), t2.set(e3, a2), n2.add(r3.name);
|
|
|
102
102
|
for (let t2 = 0; t2 < a2.length - 1; t2++) if (e3 = e3[a2[t2]], !n(e3)) throw new Error(`ModSDK: Function ${o2} to be patched not found; ${a2.slice(0, t2 + 1).join(".")} is not object`);
|
|
103
103
|
const c2 = e3[a2[a2.length - 1]];
|
|
104
104
|
if ("function" != typeof c2) throw new Error(`ModSDK: Function ${o2} to be patched not found`);
|
|
105
|
-
const l2 = function(o3) {
|
|
105
|
+
const l2 = (function(o3) {
|
|
106
106
|
let e4 = -1;
|
|
107
107
|
for (const n2 of t.encode(o3)) {
|
|
108
108
|
let o4 = 255 & (e4 ^ n2);
|
|
@@ -110,13 +110,13 @@ ${a2}`), t2.set(e3, a2), n2.add(r3.name);
|
|
|
110
110
|
e4 = e4 >>> 8 ^ o4;
|
|
111
111
|
}
|
|
112
112
|
return ((-1 ^ e4) >>> 0).toString(16).padStart(8, "0").toUpperCase();
|
|
113
|
-
}(c2.toString().replaceAll("\r\n", "\n")), d2 = { name: o2, original: c2, originalHash: l2 };
|
|
113
|
+
})(c2.toString().replaceAll("\r\n", "\n")), d2 = { name: o2, original: c2, originalHash: l2 };
|
|
114
114
|
r2 = Object.assign(Object.assign({}, d2), { precomputed: s(d2), router: /* @__PURE__ */ __name(() => {
|
|
115
|
-
}, "router"), context: e3, contextProperty: a2[a2.length - 1] }), r2.router = /* @__PURE__ */ function(o3) {
|
|
115
|
+
}, "router"), context: e3, contextProperty: a2[a2.length - 1] }), r2.router = /* @__PURE__ */ (function(o3) {
|
|
116
116
|
return function(...e4) {
|
|
117
117
|
return o3.precomputed.enter.apply(this, [e4]);
|
|
118
118
|
};
|
|
119
|
-
}(r2), i.set(o2, r2), e3[r2.contextProperty] = r2.router;
|
|
119
|
+
})(r2), i.set(o2, r2), e3[r2.contextProperty] = r2.router;
|
|
120
120
|
}
|
|
121
121
|
return r2;
|
|
122
122
|
}
|
|
@@ -127,7 +127,7 @@ ${a2}`), t2.set(e3, a2), n2.add(r3.name);
|
|
|
127
127
|
__name(d, "d");
|
|
128
128
|
function p() {
|
|
129
129
|
const o2 = /* @__PURE__ */ new Map();
|
|
130
|
-
for (const [e2, t2] of i) o2.set(e2, { name: e2, original: t2.original, originalHash: t2.originalHash, sdkEntrypoint: t2.router, currentEntrypoint: t2.context[t2.contextProperty], hookedByMods: r(t2.precomputed.hooks.map((o3) => o3.mod)), patchedByMods: Array.from(t2.precomputed.patchesSources) });
|
|
130
|
+
for (const [e2, t2] of i) o2.set(e2, { name: e2, original: t2.original, originalHash: t2.originalHash, sdkEntrypoint: t2.router, currentEntrypoint: t2.context[t2.contextProperty], hookedByMods: r(t2.precomputed.hooks.map(((o3) => o3.mod))), patchedByMods: Array.from(t2.precomputed.patchesSources) });
|
|
131
131
|
return o2;
|
|
132
132
|
}
|
|
133
133
|
__name(p, "p");
|
|
@@ -152,7 +152,7 @@ Was the mod loaded multiple times?`), u(a2));
|
|
|
152
152
|
g2.loaded || e(`Mod ${r2} attempted to call SDK function after being unloaded`);
|
|
153
153
|
const s3 = t3(...n2);
|
|
154
154
|
return null == c3 || c3(), s3;
|
|
155
|
-
}, "s"), p2 = { unload: s2("unload", () => u(g2)), hookFunction: s2("hookFunction", (o3, t3, n2) => {
|
|
155
|
+
}, "s"), p2 = { unload: s2("unload", (() => u(g2))), hookFunction: s2("hookFunction", ((o3, t3, n2) => {
|
|
156
156
|
"string" == typeof o3 && o3 || e(`Mod ${r2} failed to patch a function: Expected function name string, got ${typeof o3}`);
|
|
157
157
|
const i3 = l(o3), a3 = c2(i3);
|
|
158
158
|
"number" != typeof t3 && e(`Mod ${r2} failed to hook function '${o3}': Expected priority number, got ${typeof t3}`), "function" != typeof n2 && e(`Mod ${r2} failed to hook function '${o3}': Expected hook function, got ${typeof n2}`);
|
|
@@ -161,24 +161,24 @@ Was the mod loaded multiple times?`), u(a2));
|
|
|
161
161
|
const o4 = a3.hooks.indexOf(s3);
|
|
162
162
|
o4 >= 0 && (a3.hooks.splice(o4, 1), d());
|
|
163
163
|
};
|
|
164
|
-
}), patchFunction: s2("patchFunction", (o3, t3) => {
|
|
164
|
+
})), patchFunction: s2("patchFunction", ((o3, t3) => {
|
|
165
165
|
"string" == typeof o3 && o3 || e(`Mod ${r2} failed to patch a function: Expected function name string, got ${typeof o3}`);
|
|
166
166
|
const i3 = l(o3), a3 = c2(i3);
|
|
167
167
|
n(t3) || e(`Mod ${r2} failed to patch function '${o3}': Expected patches object, got ${typeof t3}`);
|
|
168
168
|
for (const [n2, i4] of Object.entries(t3)) "string" == typeof i4 ? a3.patches.set(n2, i4) : null === i4 ? a3.patches.delete(n2) : e(`Mod ${r2} failed to patch function '${o3}': Invalid format of patch '${n2}'`);
|
|
169
169
|
d();
|
|
170
|
-
}), removePatches: s2("removePatches", (o3) => {
|
|
170
|
+
})), removePatches: s2("removePatches", ((o3) => {
|
|
171
171
|
"string" == typeof o3 && o3 || e(`Mod ${r2} failed to patch a function: Expected function name string, got ${typeof o3}`);
|
|
172
172
|
const t3 = l(o3);
|
|
173
173
|
c2(t3).patches.clear(), d();
|
|
174
|
-
}), callOriginal: s2("callOriginal", (o3, t3, n2) => {
|
|
174
|
+
})), callOriginal: s2("callOriginal", ((o3, t3, n2) => {
|
|
175
175
|
"string" == typeof o3 && o3 || e(`Mod ${r2} failed to call a function: Expected function name string, got ${typeof o3}`);
|
|
176
176
|
const i3 = l(o3);
|
|
177
177
|
return Array.isArray(t3) || e(`Mod ${r2} failed to call a function: Expected args array, got ${typeof t3}`), i3.original.apply(null != n2 ? n2 : globalThis, t3);
|
|
178
|
-
}), getOriginalHash: s2("getOriginalHash", (o3) => {
|
|
178
|
+
})), getOriginalHash: s2("getOriginalHash", ((o3) => {
|
|
179
179
|
"string" == typeof o3 && o3 || e(`Mod ${r2} failed to get hash: Expected function name string, got ${typeof o3}`);
|
|
180
180
|
return l(o3).originalHash;
|
|
181
|
-
}) }, g2 = { name: o2.name, fullName: o2.fullName, version: o2.version, repository: o2.repository, allowReplace: i2, api: p2, loaded: true, patching: /* @__PURE__ */ new Map() };
|
|
181
|
+
})) }, g2 = { name: o2.name, fullName: o2.fullName, version: o2.version, repository: o2.repository, allowReplace: i2, api: p2, loaded: true, patching: /* @__PURE__ */ new Map() };
|
|
182
182
|
return f.set(o2.name, g2), Object.freeze(p2);
|
|
183
183
|
}
|
|
184
184
|
__name(g, "g");
|
|
@@ -189,13 +189,13 @@ Was the mod loaded multiple times?`), u(a2));
|
|
|
189
189
|
}
|
|
190
190
|
__name(h, "h");
|
|
191
191
|
let m;
|
|
192
|
-
const y = void 0 === window.bcModSdk ? window.bcModSdk = function() {
|
|
192
|
+
const y = void 0 === window.bcModSdk ? window.bcModSdk = (function() {
|
|
193
193
|
const e2 = { version: o, apiVersion: 1, registerMod: g, getModsInfo: h, getPatchingInfo: p, errorReporterHooks: Object.seal({ apiEndpointEnter: null, hookEnter: null, hookChainExit: null }) };
|
|
194
194
|
return m = e2, Object.freeze(e2);
|
|
195
|
-
}() : (n(window.bcModSdk) || e("Failed to init Mod SDK: Name already in use"), 1 !== window.bcModSdk.apiVersion && e(`Failed to init Mod SDK: Different version already loaded ('1.2.0' vs '${window.bcModSdk.version}')`), window.bcModSdk.version !== o && alert(`Mod SDK warning: Loading different but compatible versions ('1.2.0' vs '${window.bcModSdk.version}')
|
|
195
|
+
})() : (n(window.bcModSdk) || e("Failed to init Mod SDK: Name already in use"), 1 !== window.bcModSdk.apiVersion && e(`Failed to init Mod SDK: Different version already loaded ('1.2.0' vs '${window.bcModSdk.version}')`), window.bcModSdk.version !== o && alert(`Mod SDK warning: Loading different but compatible versions ('1.2.0' vs '${window.bcModSdk.version}')
|
|
196
196
|
One of mods you are using is using an old version of SDK. It will work for now but please inform author to update`), window.bcModSdk);
|
|
197
197
|
return "undefined" != typeof exports && (Object.defineProperty(exports, "__esModule", { value: true }), exports.default = y), y;
|
|
198
|
-
}();
|
|
198
|
+
})();
|
|
199
199
|
}
|
|
200
200
|
});
|
|
201
201
|
|
|
@@ -297,12 +297,13 @@ var BaseModule = class {
|
|
|
297
297
|
};
|
|
298
298
|
|
|
299
299
|
// src/base/base_subscreen.ts
|
|
300
|
-
function setSubscreen(subscreen) {
|
|
300
|
+
async function setSubscreen(subscreen) {
|
|
301
301
|
if (!GUI.instance) {
|
|
302
302
|
throw new Error("Attempt to set subscreen before init");
|
|
303
303
|
}
|
|
304
|
-
|
|
305
|
-
|
|
304
|
+
const screenName = typeof subscreen === "string" ? subscreen : subscreen?.options.name;
|
|
305
|
+
const screenId = `${BaseSubscreen.id}_${screenName}`;
|
|
306
|
+
await CommonSetScreen(...["DeepLibMod", `${screenId}`]);
|
|
306
307
|
}
|
|
307
308
|
__name(setSubscreen, "setSubscreen");
|
|
308
309
|
var BaseSubscreen = class _BaseSubscreen {
|
|
@@ -317,28 +318,39 @@ var BaseSubscreen = class _BaseSubscreen {
|
|
|
317
318
|
options;
|
|
318
319
|
/** Reference to the module this subscreen belongs to. */
|
|
319
320
|
module;
|
|
320
|
-
|
|
321
|
+
/** Identifier for internal use to avoid screen name collisions. */
|
|
322
|
+
static id = CommonGenerateUniqueID();
|
|
323
|
+
/** Optional configuration flags for a BaseSubscreen instance. */
|
|
324
|
+
static subscreenOptions = {
|
|
325
|
+
drawCharacter: true,
|
|
326
|
+
name: "UNKNOWN",
|
|
327
|
+
icon: "",
|
|
328
|
+
background: "Sheet",
|
|
329
|
+
doShowExitButton: true,
|
|
330
|
+
doShowTitle: true,
|
|
331
|
+
settingsWidth: 1e3
|
|
332
|
+
};
|
|
333
|
+
constructor(module) {
|
|
321
334
|
if (module) this.module = module;
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
return "";
|
|
335
|
+
const ctor = this.constructor;
|
|
336
|
+
this.options = {
|
|
337
|
+
..._BaseSubscreen.subscreenOptions,
|
|
338
|
+
...ctor.subscreenOptions
|
|
339
|
+
};
|
|
340
|
+
const screenName = this.options.name;
|
|
341
|
+
const screenId = `${_BaseSubscreen.id}_${screenName}`;
|
|
342
|
+
exportToGlobal(`${screenId}Load`, this.load.bind(this));
|
|
343
|
+
exportToGlobal(`${screenId}Run`, this.run.bind(this));
|
|
344
|
+
exportToGlobal(`${screenId}Click`, this.click.bind(this));
|
|
345
|
+
exportToGlobal(`${screenId}Exit`, this.exit.bind(this));
|
|
346
|
+
exportToGlobal(`${screenId}Unload`, this.unload.bind(this));
|
|
347
|
+
exportToGlobal(`${screenId}Resize`, this.resize.bind(this));
|
|
348
|
+
exportToGlobal(`${screenId}Background`, this.options.background);
|
|
349
|
+
CommonCSVCache[ScreenFileGetTranslation("DeepLibMod", screenId)] = [];
|
|
338
350
|
}
|
|
339
351
|
/** Changes the currently active subscreen. */
|
|
340
|
-
setSubscreen(screen) {
|
|
341
|
-
return setSubscreen(screen);
|
|
352
|
+
async setSubscreen(screen) {
|
|
353
|
+
return await setSubscreen(screen);
|
|
342
354
|
}
|
|
343
355
|
/** Gets this subscreen's settings object from its parent module. */
|
|
344
356
|
get settings() {
|
|
@@ -385,15 +397,14 @@ var BaseSubscreen = class _BaseSubscreen {
|
|
|
385
397
|
*/
|
|
386
398
|
managePageElementsVisibility() {
|
|
387
399
|
this.pageStructure.forEach((item, ix) => {
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
}
|
|
400
|
+
item.forEach((setting) => {
|
|
401
|
+
const element = ElementWrap(`${setting.id}-container`) ?? ElementWrap(`${setting.id}`);
|
|
402
|
+
if (ix != _BaseSubscreen.currentPage - 1) {
|
|
403
|
+
if (element) domUtil.hide(element);
|
|
404
|
+
} else {
|
|
405
|
+
if (element) domUtil.unhide(element);
|
|
406
|
+
}
|
|
407
|
+
});
|
|
397
408
|
});
|
|
398
409
|
}
|
|
399
410
|
/**
|
|
@@ -413,8 +424,8 @@ var BaseSubscreen = class _BaseSubscreen {
|
|
|
413
424
|
if (!module.settings || !Object.keys(module.settings).length) module.registerDefaultSettings();
|
|
414
425
|
}
|
|
415
426
|
_BaseSubscreen.currentPage = 1;
|
|
416
|
-
layout.
|
|
417
|
-
const settingsElement = layout.
|
|
427
|
+
layout.getSubscreen();
|
|
428
|
+
const settingsElement = layout.getSettingsDiv();
|
|
418
429
|
layout.appendToSubscreen(settingsElement);
|
|
419
430
|
const menu = ElementMenu.Create("deeplib-nav-menu", []);
|
|
420
431
|
layout.appendToSubscreen(menu);
|
|
@@ -429,12 +440,38 @@ var BaseSubscreen = class _BaseSubscreen {
|
|
|
429
440
|
});
|
|
430
441
|
ElementMenu.PrependItem(menu, backNext);
|
|
431
442
|
}
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
443
|
+
if (this.options.help) {
|
|
444
|
+
const onClick = this.options.help.onClick;
|
|
445
|
+
let action = /* @__PURE__ */ __name(() => {
|
|
446
|
+
}, "action");
|
|
447
|
+
if (typeof onClick === "string" || onClick instanceof URL) {
|
|
448
|
+
action = /* @__PURE__ */ __name(() => window.open(onClick, "_blank"), "action");
|
|
449
|
+
} else if (typeof onClick === "function") {
|
|
450
|
+
action = onClick;
|
|
451
|
+
} else if (onClick instanceof _BaseSubscreen) {
|
|
452
|
+
action = /* @__PURE__ */ __name(async () => await this.setSubscreen(onClick), "action");
|
|
453
|
+
}
|
|
454
|
+
this.options.help.tooltip ??= getText("settings.button.help_button_hint");
|
|
455
|
+
this.options.help.icon ??= `${PUBLIC_URL}/dl_images/bookmark.svg`;
|
|
456
|
+
const helpButton = advElement.createButton({
|
|
457
|
+
id: "deeplib-help",
|
|
458
|
+
size: [90, 90],
|
|
459
|
+
onClick: action,
|
|
460
|
+
options: {
|
|
461
|
+
image: this.options.help.icon,
|
|
462
|
+
tooltip: this.options.help.tooltip
|
|
463
|
+
}
|
|
464
|
+
});
|
|
465
|
+
ElementMenu.AppendButton(menu, helpButton);
|
|
466
|
+
}
|
|
467
|
+
if (this.options.doShowTitle) {
|
|
468
|
+
const subscreenTitle = advElement.createLabel({
|
|
469
|
+
id: "deeplib-subscreen-title",
|
|
470
|
+
label: getText(`${this.options.name}.title`).replace("$ModVersion", ModSdkManager.ModInfo.version)
|
|
471
|
+
});
|
|
472
|
+
layout.appendToSubscreen(subscreenTitle);
|
|
473
|
+
}
|
|
474
|
+
if (this.options.doShowExitButton) {
|
|
438
475
|
const exitButton = advElement.createButton({
|
|
439
476
|
id: "deeplib-exit",
|
|
440
477
|
size: [90, 90],
|
|
@@ -471,6 +508,9 @@ var BaseSubscreen = class _BaseSubscreen {
|
|
|
471
508
|
case "custom":
|
|
472
509
|
element = advElement.createCustom(item);
|
|
473
510
|
break;
|
|
511
|
+
case "dropdown":
|
|
512
|
+
element = advElement.createDropdown(item);
|
|
513
|
+
break;
|
|
474
514
|
}
|
|
475
515
|
layout.appendToSettingsDiv(element);
|
|
476
516
|
})
|
|
@@ -499,27 +539,30 @@ var BaseSubscreen = class _BaseSubscreen {
|
|
|
499
539
|
exit() {
|
|
500
540
|
CharacterAppearanceForceUpCharacter = -1;
|
|
501
541
|
CharacterLoadCanvas(Player);
|
|
502
|
-
|
|
503
|
-
|
|
542
|
+
const returnScreen = typeof this.options.returnScreen === "function" ? this.options.returnScreen() : this.options.returnScreen;
|
|
543
|
+
if (returnScreen instanceof _BaseSubscreen || !returnScreen) {
|
|
544
|
+
setSubscreen(returnScreen ?? "mainmenu").then(() => {
|
|
545
|
+
modStorage.save();
|
|
546
|
+
});
|
|
547
|
+
} else if (Array.isArray(returnScreen)) {
|
|
548
|
+
CommonSetScreen(...returnScreen).then(() => {
|
|
549
|
+
modStorage.save();
|
|
550
|
+
});
|
|
551
|
+
}
|
|
504
552
|
}
|
|
505
553
|
/**
|
|
506
554
|
* Called when the window is resized.
|
|
507
555
|
* Also checks for overflow in the settings div and applies styling accordingly.
|
|
508
556
|
*/
|
|
509
|
-
resize(
|
|
557
|
+
resize(_onLoad = false) {
|
|
510
558
|
const offset = this.options.drawCharacter ? 0 : 380;
|
|
511
559
|
const subscreen = layout.getSubscreen();
|
|
512
560
|
const settingsDiv = layout.getSettingsDiv();
|
|
513
|
-
ElementSetPosition(subscreen
|
|
514
|
-
ElementSetSize(subscreen
|
|
515
|
-
ElementSetFontSize(subscreen
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
ElementSetSize(settingsDiv || "", 600 + offset, 660);
|
|
519
|
-
} else {
|
|
520
|
-
ElementSetPosition(settingsDiv || "", 530 - offset, 170);
|
|
521
|
-
ElementSetSize(settingsDiv || "", 1e3 + offset, 660);
|
|
522
|
-
}
|
|
561
|
+
ElementSetPosition(subscreen, 0, 0);
|
|
562
|
+
ElementSetSize(subscreen, 2e3, 1e3);
|
|
563
|
+
ElementSetFontSize(subscreen, "auto");
|
|
564
|
+
ElementSetPosition(settingsDiv, 530 - offset, 170);
|
|
565
|
+
ElementSetSize(settingsDiv, this.options.settingsWidth ?? 1e3 + offset, 660);
|
|
523
566
|
ElementSetPosition("deeplib-subscreen-title", 530 - offset, 75);
|
|
524
567
|
ElementSetSize("deeplib-subscreen-title", 800, 60);
|
|
525
568
|
ElementSetPosition("deeplib-nav-menu", 1905, 75, "top-right");
|
|
@@ -645,7 +688,6 @@ var styles_default = `.deeplib-subscreen,
|
|
|
645
688
|
grid-auto-rows: min-content;
|
|
646
689
|
padding: min(1dvh, 0.5dvw);
|
|
647
690
|
gap: 0.3em;
|
|
648
|
-
overflow-y: scroll;
|
|
649
691
|
}
|
|
650
692
|
|
|
651
693
|
.deeplib-misc {
|
|
@@ -665,6 +707,7 @@ var styles_default = `.deeplib-subscreen,
|
|
|
665
707
|
padding: min(1vh, 0.5vw);
|
|
666
708
|
font-size: 0.8em;
|
|
667
709
|
border: min(0.2vh, 0.1vw) solid var(--deeplib-border-color);
|
|
710
|
+
z-index: 1;
|
|
668
711
|
}
|
|
669
712
|
|
|
670
713
|
.deeplib-overflow-box {
|
|
@@ -682,14 +725,14 @@ var styles_default = `.deeplib-subscreen,
|
|
|
682
725
|
border-radius: min(1dvh, 0.5dvw);
|
|
683
726
|
border: min(0.2vh, 0.1vw) solid var(--deeplib-border-color);
|
|
684
727
|
}
|
|
685
|
-
.deeplib-prev-next .deeplib-prev-next-button {
|
|
686
|
-
height: 100%;
|
|
687
|
-
aspect-ratio: 1;
|
|
688
|
-
}
|
|
689
728
|
.deeplib-prev-next .deeplib-prev-next-button:hover {
|
|
690
729
|
background-color: var(--deeplib-element-hover-color);
|
|
691
730
|
border-radius: var(--deeplib-border-radius);
|
|
692
731
|
}
|
|
732
|
+
.deeplib-prev-next .deeplib-prev-next-button {
|
|
733
|
+
height: 100%;
|
|
734
|
+
aspect-ratio: 1;
|
|
735
|
+
}
|
|
693
736
|
.deeplib-prev-next .deeplib-prev-next-label {
|
|
694
737
|
white-space: nowrap;
|
|
695
738
|
}
|
|
@@ -729,6 +772,9 @@ var styles_default = `.deeplib-subscreen,
|
|
|
729
772
|
.deeplib-checkbox-container input.deeplib-input {
|
|
730
773
|
width: min(5vh, 2.5vw);
|
|
731
774
|
height: min(5vh, 2.5vw);
|
|
775
|
+
width: min(5dvh, 2.5dvw);
|
|
776
|
+
height: min(5dvh, 2.5dvw);
|
|
777
|
+
border-radius: min(1vh, 0.5vw);
|
|
732
778
|
border-radius: min(1dvh, 0.5dvw);
|
|
733
779
|
}
|
|
734
780
|
|
|
@@ -746,16 +792,18 @@ var styles_default = `.deeplib-subscreen,
|
|
|
746
792
|
|
|
747
793
|
.deeplib-input-container:has(label.deeplib-text) {
|
|
748
794
|
margin-top: min(1vh, 0.5vw);
|
|
795
|
+
margin-top: min(1dvh, 0.5dvw);
|
|
749
796
|
}
|
|
750
797
|
|
|
751
798
|
.deeplib-input-container input.deeplib-input {
|
|
752
799
|
font-size: 0.6em;
|
|
753
|
-
padding:
|
|
800
|
+
padding: min(1vh, 0.5vw);
|
|
801
|
+
padding: min(1dvh, 0.5dvw);
|
|
754
802
|
background-color: transparent;
|
|
755
803
|
outline: none;
|
|
756
|
-
|
|
757
|
-
padding-right: min(1vh, 0.5vw);
|
|
804
|
+
min-height: min(5vh, 2.5vw);
|
|
758
805
|
min-height: min(5dvh, 2.5dvw);
|
|
806
|
+
border-radius: min(1vh, 0.5vw);
|
|
759
807
|
border-radius: min(1dvh, 0.5dvw);
|
|
760
808
|
}
|
|
761
809
|
|
|
@@ -763,6 +811,8 @@ var styles_default = `.deeplib-subscreen,
|
|
|
763
811
|
padding: 0px;
|
|
764
812
|
width: min(5vh, 2.5vw);
|
|
765
813
|
height: min(5vh, 2.5vw);
|
|
814
|
+
width: min(5dvh, 2.5dvw);
|
|
815
|
+
height: min(5dvh, 2.5dvw);
|
|
766
816
|
border-radius: 0px;
|
|
767
817
|
}
|
|
768
818
|
|
|
@@ -771,15 +821,19 @@ var styles_default = `.deeplib-subscreen,
|
|
|
771
821
|
cursor: not-allowed;
|
|
772
822
|
}
|
|
773
823
|
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
-
|
|
777
|
-
|
|
824
|
+
.deeplib-dropdown-container {
|
|
825
|
+
display: flex;
|
|
826
|
+
flex-direction: row;
|
|
827
|
+
align-items: center;
|
|
828
|
+
gap: min(2vh, 1vw);
|
|
829
|
+
gap: min(2dvh, 1dvw);
|
|
830
|
+
color: var(--deeplib-text-color);
|
|
778
831
|
}
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
-
|
|
832
|
+
.deeplib-dropdown-container select {
|
|
833
|
+
padding: 0 min(1vh, 0.5vw);
|
|
834
|
+
padding: 0 min(1dvh, 0.5dvw);
|
|
835
|
+
border-radius: min(1vh, 0.5vw);
|
|
836
|
+
border-radius: min(1dvh, 0.5dvw);
|
|
783
837
|
}
|
|
784
838
|
|
|
785
839
|
.deeplib-highlight-text {
|
|
@@ -874,7 +928,7 @@ input[type=number] {
|
|
|
874
928
|
height: 100dvh;
|
|
875
929
|
background-color: rgba(0, 0, 0, 0.5);
|
|
876
930
|
}
|
|
877
|
-
/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiL21lZGlhL05WTUUvU3R1ZmYvQ29kZS9CQy9CQy1EZWVwTGliL3NyYy9zdHlsZXMiLCJzb3VyY2VzIjpbInZhcnMuc2NzcyIsImJ1dHRvbnMuc2NzcyIsImVsZW1lbnRzLnNjc3MiLCJpbnB1dHMuc2NzcyIsIm1lc3NhZ2VzLnNjc3MiLCJtb2RhbC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7RUFFRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FDZEY7RUFDRTtFQUNBO0VBQ0E7OztBQUdGO0FBQUE7RUFFRTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7RUFDQTtFQUNBOzs7QUFHRjtFQUNFOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTs7O0FDM0NGO0VBQ0U7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7OztBQUdGO0VBQ0U7OztBQUdGO0VBQ0U7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBTUU7RUFDQTs7QUFOQTtFQUNFO0VBQ0E7O0FBT0o7RUFDRTs7O0FBSUo7RUFDRTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTtFQUNBOzs7QUN6R0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFJRjtFQUNFO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7OztBQUdGO0FBQUE7RUFFRTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7OztBQzdERjtFQUNFO0VBQ0E7OztBQUdGO0FBQUE7RUFFRTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtBQUFBO0VBRUU7OztBQUdGO0VBQ0U7RUFDQTtFQUNBOzs7QUM3QkY7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7O0FBR0Y7RUFDRTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFOztBQUtOO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7OztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EiLCJzb3VyY2VzQ29udGVudCI6WyIuZGVlcGxpYi1zdWJzY3JlZW4sXG4uZGVlcGxpYi1tb2RhbCB7XG4gIC0tZGVlcGxpYi1iYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10bWQtbWFpbiwgd2hpdGUpO1xuICAtLWRlZXBsaWItZWxlbWVudC1jb2xvcjogdmFyKC0tdG1kLWVsZW1lbnQsIHdoaXRlKTtcbiAgLS1kZWVwbGliLWVsZW1lbnQtaG92ZXItY29sb3I6IHZhcigtLXRtZC1lbGVtZW50LWhvdmVyLCBjeWFuKTtcbiAgLS1kZWVwbGliLWFjY2VudC1jb2xvcjogdmFyKC0tdG1kLWFjY2VudCwgI0ZGRkY4OCk7XG4gIC0tZGVlcGxpYi1ibG9ja2VkLWNvbG9yOiB2YXIoLS10bWQtYmxvY2tlZCwgcmVkKTtcbiAgLS1kZWVwbGliLXRleHQtY29sb3I6IHZhcigtLXRtZC10ZXh0LCBibGFjayk7XG4gIC0tZGVlcGxpYi1pY29uLWNvbG9yOiB2YXIoLS10bWQtYWNjZW50LCBibGFjayk7XG4gIC0tZGVlcGxpYi1pY29uLWhvdmVyLWNvbG9yOiB2YXIoLS10bWQtYWNjZW50LWhvdmVyLCBibGFjayk7XG4gIC0tZGVlcGxpYi1ib3JkZXItY29sb3I6IHZhcigtLXRtZC1hY2NlbnQsIGJsYWNrKTtcbiAgLS1kZWVwbGliLWJvcmRlci13aWR0aDogbWluKDAuMnZoLCAwLjF2dyk7XG4gIC0tZGVlcGxpYi1ib3JkZXItd2lkdGg6IG1pbigwLjJkdmgsIDAuMWR2dyk7XG4gIC0tZGVlcGxpYi1ib3JkZXItcmFkaXVzOiBtaW4oMXZoLCAwLjV2dyk7XG4gIC0tZGVlcGxpYi1ib3JkZXItcmFkaXVzOiBtaW4oMWR2aCwgMC41ZHZ3KTtcbn1cbiIsIi5kZWVwbGliLWJ1dHRvbiB7XG4gIGNvbG9yOiB2YXIoLS1kZWVwbGliLXRleHQtY29sb3IpO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuXG4uZGVlcGxpYi1idXR0b24uYnV0dG9uLXN0eWxpbmcsXG4uZGVlcGxpYi1idXR0b24uYnV0dG9uLXN0eWxpbmc6OmJlZm9yZSB7XG4gIGJvcmRlci1yYWRpdXM6IG1pbigxLjBkdmgsIDAuNWR2dyk7XG59XG5cbi5kZWVwbGliLWJ1dHRvbiBpbWcge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMCU7XG4gIGxlZnQ6IDAlO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1kZWVwbGliLWljb24tY29sb3IpO1xuICBiYWNrZ3JvdW5kLWJsZW5kLW1vZGU6IG11bHRpcGx5O1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG4gIG1hc2stcG9zaXRpb246IGxlZnQ7XG4gIG1hc2stc2l6ZTogY29udGFpbjtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgY29sb3I6IHRyYW5zcGFyZW50O1xuXG4gIGJhY2tncm91bmQtaW1hZ2U6IHZhcigtLWltYWdlKTtcbiAgbWFzay1pbWFnZTogdmFyKC0taW1hZ2UpO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLmRlZXBsaWItYnV0dG9uOmhvdmVyIGltZyB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWRlZXBsaWItaWNvbi1ob3Zlci1jb2xvcik7XG59XG5cbi5kZWVwbGliLWJ1dHRvbiAuYnV0dG9uLWxhYmVsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgY29sb3I6IHZhcigtLWRlZXBsaWItdGV4dC1jb2xvcik7XG4gIGZvbnQtc2l6ZTogbWluKDMuNmR2aCwgMS44ZHZ3KTtcbn1cblxuLmRlZXBsaWItYnV0dG9uIC5idXR0b24tdG9vbHRpcCB7XG4gIGJvcmRlci1yYWRpdXM6IG1pbigxLjBkdmgsIDAuNWR2dyk7XG59XG4iLCIjZGVlcGxpYi1wYWdlLWxhYmVsIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbiNkZWVwbGliLXN1YnNjcmVlbi10aXRsZSB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGNvbG9yOiB2YXIoLS1kZWVwbGliLXRleHQtY29sb3IpO1xufVxuXG4uZGVlcGxpYi10ZXh0IHtcbiAgY29sb3I6IHZhcigtLWRlZXBsaWItdGV4dC1jb2xvcik7XG59XG5cbi5kZWVwbGliLXN1YnNjcmVlbiB7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi5kZWVwbGliLXN1YnNjcmVlbiAqIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgcG9pbnRlci1ldmVudHM6IGFsbDtcbn1cblxuLmRlZXBsaWItc2V0dGluZ3Mge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLWF1dG8tcm93czogbWluLWNvbnRlbnQ7XG4gIHBhZGRpbmc6IG1pbigxLjBkdmgsIDAuNWR2dyk7XG4gIGdhcDogMC4zZW07XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcbn1cblxuLmRlZXBsaWItbWlzYyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZTtcbiAgZ2FwOiBtaW4oMXZoLCAwLjV2dyk7XG59XG5cbi5kZWVwbGliLXRvb2x0aXAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1kZWVwbGliLWVsZW1lbnQtY29sb3IpO1xuICBjb2xvcjogdmFyKC0tZGVlcGxpYi10ZXh0LWNvbG9yKTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGJvcmRlci1yYWRpdXM6IG1pbigxLjBkdmgsIDAuNWR2dyk7XG4gIHBhZGRpbmc6IG1pbigxdmgsIDAuNXZ3KTtcbiAgZm9udC1zaXplOiAwLjhlbTtcbiAgYm9yZGVyOiBtaW4oMC4ydmgsIDAuMXZ3KSBzb2xpZCB2YXIoLS1kZWVwbGliLWJvcmRlci1jb2xvcik7XG59XG5cbi5kZWVwbGliLW92ZXJmbG93LWJveCB7XG4gIGJvcmRlcjogdmFyKC0tZGVlcGxpYi1ib3JkZXItY29sb3IpIHNvbGlkIHZhcigtLWRlZXBsaWItYm9yZGVyLXdpZHRoKTtcbn1cblxuLmRlZXBsaWItcHJldi1uZXh0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBnYXA6IG1pbigyZHZoLCAxZHZ3KTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZGVlcGxpYi1lbGVtZW50LWNvbG9yKTtcbiAgY29sb3I6IHZhcigtLWRlZXBsaWItdGV4dC1jb2xvcik7XG4gIGJvcmRlci1yYWRpdXM6IG1pbigxLjBkdmgsIDAuNWR2dyk7XG4gIGJvcmRlcjogbWluKDAuMnZoLCAwLjF2dykgc29saWQgdmFyKC0tZGVlcGxpYi1ib3JkZXItY29sb3IpO1xuXG4gIC5kZWVwbGliLXByZXYtbmV4dC1idXR0b24ge1xuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZGVlcGxpYi1lbGVtZW50LWhvdmVyLWNvbG9yKTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWRlZXBsaWItYm9yZGVyLXJhZGl1cyk7XG4gICAgfVxuICAgIFxuICAgIGhlaWdodDogMTAwJTtcbiAgICBhc3BlY3QtcmF0aW86IDE7XG4gIH1cblxuICAuZGVlcGxpYi1wcmV2LW5leHQtbGFiZWwge1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIH1cbn1cblxuI2RlZXBsaWItbmF2LW1lbnUge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBnYXA6IG1pbigyZHZoLCAxZHZ3KTtcbn1cblxuI2RlZXBsaWItc3RvcmFnZS1tZXRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwcHg7XG4gIGxlZnQ6IDBweDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZGVlcGxpYi1lbGVtZW50LWNvbG9yKTtcbiAgYm9yZGVyOiB2YXIoLS1kZWVwbGliLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tZGVlcGxpYi1ib3JkZXItY29sb3IpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1kZWVwbGliLWJvcmRlci1yYWRpdXMpO1xuICB6LWluZGV4OiAtMTtcbn1cblxuI2RlZXBsaWItc3RvcmFnZS1iYXIge1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAwJTtcbiAgYmFja2dyb3VuZDogdmFyKC0tZGVlcGxpYi1hY2NlbnQtY29sb3IpO1xufVxuIiwiLmRlZXBsaWItY2hlY2tib3gtY29udGFpbmVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAwLjNlbTtcbn1cblxuLmRlZXBsaWItY2hlY2tib3gtY29udGFpbmVyIGlucHV0LmRlZXBsaWItaW5wdXQge1xuICB3aWR0aDogbWluKDV2aCwgMi41dncpO1xuICBoZWlnaHQ6IG1pbig1dmgsIDIuNXZ3KTtcbiAgYm9yZGVyLXJhZGl1czogbWluKDEuMGR2aCwgMC41ZHZ3KTtcbn1cblxuLmRlZXBsaWItY2hlY2tib3gtY29udGFpbmVyIGlucHV0LmRlZXBsaWItaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdOmNoZWNrZWQ6OmJlZm9yZSB7XG4gIHdpZHRoOiA4MCU7XG4gIGhlaWdodDogODAlO1xufVxuXG4uZGVlcGxpYi1pbnB1dC1jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDAuM2VtO1xufVxuXG4uZGVlcGxpYi1pbnB1dC1jb250YWluZXI6aGFzKGxhYmVsLmRlZXBsaWItdGV4dCkge1xuICBtYXJnaW4tdG9wOiBtaW4oMXZoLCAwLjV2dyk7XG59XG5cbi5kZWVwbGliLWlucHV0LWNvbnRhaW5lciBpbnB1dC5kZWVwbGliLWlucHV0IHtcbiAgZm9udC1zaXplOiAwLjZlbTtcbiAgcGFkZGluZzogNXB4IDA7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBvdXRsaW5lOiBub25lO1xuICBwYWRkaW5nLWxlZnQ6IG1pbigxdmgsIDAuNXZ3KTtcbiAgcGFkZGluZy1yaWdodDogbWluKDF2aCwgMC41dncpO1xuICBtaW4taGVpZ2h0OiBtaW4oNWR2aCwgMi41ZHZ3KTtcbiAgYm9yZGVyLXJhZGl1czogbWluKDEuMGR2aCwgMC41ZHZ3KTtcbn1cblxuXG4uZGVlcGxpYi1pbnB1dC1jb250YWluZXIgaW5wdXQuZGVlcGxpYi1pbnB1dFt0eXBlPVwiY29sb3JcIl0ge1xuICBwYWRkaW5nOiAwcHg7XG4gIHdpZHRoOiBtaW4oNXZoLCAyLjV2dyk7XG4gIGhlaWdodDogbWluKDV2aCwgMi41dncpO1xuICBib3JkZXItcmFkaXVzOiAwcHg7XG59XG5cbi5kZWVwbGliLWlucHV0LWNvbnRhaW5lciBpbnB1dC5kZWVwbGliLWlucHV0W3R5cGU9XCJjb2xvclwiXTpkaXNhYmxlZCB7XG4gIGJvcmRlcjogdmFyKC0tZGVlcGxpYi1ibG9ja2VkLWNvbG9yKSBzb2xpZCB2YXIoLS1kZWVwbGliLWJvcmRlci13aWR0aCk7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG59XG5cbmlucHV0Ojotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uLFxuaW5wdXQ6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIG1hcmdpbjogMDtcbn1cblxuaW5wdXRbdHlwZT1udW1iZXJdIHtcbiAgYXBwZWFyYW5jZTogdGV4dGZpZWxkO1xuICAtbW96LWFwcGVhcmFuY2U6IHRleHRmaWVsZDtcbn1cbiIsIi5kZWVwbGliLWhpZ2hsaWdodC10ZXh0IHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGNvbG9yOiByZ2IoMjAzLCAxODUsIDIzKTtcbn1cblxuI1RleHRBcmVhQ2hhdExvZ1tkYXRhLWNvbG9ydGhlbWU9J2RhcmsnXSBkaXYuQ2hhdE1lc3NhZ2UuZGVlcGxpYi1tZXNzYWdlLFxuI1RleHRBcmVhQ2hhdExvZ1tkYXRhLWNvbG9ydGhlbWU9J2RhcmsyJ10gZGl2LkNoYXRNZXNzYWdlLmRlZXBsaWItbWVzc2FnZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWRlZXBsaWItZWxlbWVudC1jb2xvcik7XG4gIGJvcmRlcjogbWluKDAuMmR2aCwgMC4xZHZ3KSBzb2xpZCB2YXIoLS1kZWVwbGliLWJvcmRlci1jb2xvcik7XG4gIGNvbG9yOiB2YXIoLS1kZWVwbGliLXRleHQtY29sb3IpO1xufVxuXG4jVGV4dEFyZWFDaGF0TG9nIGRpdi5DaGF0TWVzc2FnZS5kZWVwbGliLW1lc3NhZ2Uge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlO1xuICBib3JkZXI6IG1pbigwLjJkdmgsIDAuMWR2dykgc29saWQgIzQ0MDE3MTtcbiAgY29sb3I6ICMxMTE7XG4gIHBhZGRpbmctbGVmdDogbWluKDAuNmR2aCwgMC4zZHZ3KTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7XG59XG5cbiNUZXh0QXJlYUNoYXRMb2dbZGF0YS1jb2xvcnRoZW1lPSdkYXJrJ10gZGl2LkNoYXRNZXNzYWdlLmRlZXBsaWItbWVzc2FnZSBhLFxuI1RleHRBcmVhQ2hhdExvZ1tkYXRhLWNvbG9ydGhlbWU9J2RhcmsyJ10gZGl2LkNoYXRNZXNzYWdlLmRlZXBsaWItbWVzc2FnZSBhIHtcbiAgY29sb3I6IHZhcigtLWRlZXBsaWItdGV4dC1jb2xvcik7XG59XG5cbiNUZXh0QXJlYUNoYXRMb2cgZGl2LkNoYXRNZXNzYWdlLmRlZXBsaWItbWVzc2FnZSBhIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgY29sb3I6ICMxMTE7XG59XG4iLCIuZGVlcGxpYi1tb2RhbCB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAxMCU7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICB6LWluZGV4OiAxMDAxO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAwLjVlbTtcbiAgd2lkdGg6IG1heCg1MGR2dywgMjVkdmgpO1xuICBmb250LXNpemU6IG1pbig0ZHZoLCAyZHZ3KTtcbiAgcGFkZGluZzogbWluKDJkdmgsIDFkdncpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1kZWVwbGliLWVsZW1lbnQtY29sb3IpO1xuICBib3JkZXItcmFkaXVzOiBtaW4oMS4yZHZoLCAwLjZkdncpO1xuICBib3JkZXI6IG1pbigwLjJkdmgsIDAuMWR2dykgc29saWQgdmFyKC0tZGVlcGxpYi1ib3JkZXItY29sb3IpO1xuICBjb2xvcjogdmFyKC0tZGVlcGxpYi10ZXh0LWNvbG9yKTtcblxuICAuZGVlcGxpYi1tb2RhbC1pbnB1dCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgZm9udC1zaXplOiBtaW4oMi42ZHZoLCAxLjhkdncpO1xuICAgIGJvcmRlci1yYWRpdXM6IG1pbigxLjBkdmgsIDAuNWR2dyk7XG4gICAgcGFkZGluZzogbWluKDFkdmgsIDAuNWR2dyk7XG4gIH1cblxuICBpbnB1dC5kZWVwbGliLW1vZGFsLWlucHV0IHtcbiAgICBtYXgtd2lkdGg6IG1heCg1MGR2aCwgMjVkdncpO1xuICB9XG5cbiAgLmRlZXBsaWItbW9kYWwtYnV0dG9uLWNvbnRhaW5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgZ2FwOiAwLjVlbTtcbiAgICB3aWR0aDogMTAwJTtcblxuICAgIC5kZWVwbGliLWJ1dHRvbiB7XG4gICAgICBmb250LXNpemU6IDAuOGVtO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgcGFkZGluZzogbWluKDAuNHZoLCAwLjJ2dykgbWluKDJ2aCwgMXZ3KTtcblxuICAgICAgLmJ1dHRvbi1sYWJlbCB7XG4gICAgICAgIGRpc3BsYXk6IGNvbnRlbnRzO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5kZWVwbGliLW1vZGFsLXByb21wdC1jb250YWluZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB9XG59XG5cbi5kZWVwbGliLW1vZGFsLWJsb2NrZXIge1xuICB6LWluZGV4OiAxMDAwO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMGR2dztcbiAgaGVpZ2h0OiAxMDBkdmg7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcbn1cbiJdfQ== */`;
|
|
931
|
+
/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiL21lZGlhL05WTUUvU3R1ZmYvQ29kZS9iYy9CQy1EZWVwTGliL3NyYy9zdHlsZXMiLCJzb3VyY2VzIjpbInZhcnMuc2NzcyIsImJ1dHRvbnMuc2NzcyIsImVsZW1lbnRzLnNjc3MiLCJpbnB1dHMuc2NzcyIsIm1lc3NhZ2VzLnNjc3MiLCJtb2RhbC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7RUFFRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FDZEY7RUFDRTtFQUNBO0VBQ0E7OztBQUdGO0FBQUE7RUFFRTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7RUFDQTtFQUNBOzs7QUFHRjtFQUNFOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTs7O0FDM0NGO0VBQ0U7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7OztBQUdGO0VBQ0U7OztBQUdGO0VBQ0U7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUdFO0VBQ0U7RUFDQTs7QUFISjtFQU1FO0VBQ0E7O0FBR0Y7RUFDRTs7O0FBSUo7RUFDRTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTtFQUNBOzs7QUN6R0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7O0FDdkVKO0VBQ0U7RUFDQTs7O0FBR0Y7QUFBQTtFQUVFO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0FBQUE7RUFFRTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQzdCRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0U7O0FBS047RUFDRTtFQUNBO0VBQ0E7RUFDQTs7O0FBSUo7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSIsInNvdXJjZXNDb250ZW50IjpbIi5kZWVwbGliLXN1YnNjcmVlbixcbi5kZWVwbGliLW1vZGFsIHtcbiAgLS1kZWVwbGliLWJhY2tncm91bmQtY29sb3I6IHZhcigtLXRtZC1tYWluLCB3aGl0ZSk7XG4gIC0tZGVlcGxpYi1lbGVtZW50LWNvbG9yOiB2YXIoLS10bWQtZWxlbWVudCwgd2hpdGUpO1xuICAtLWRlZXBsaWItZWxlbWVudC1ob3Zlci1jb2xvcjogdmFyKC0tdG1kLWVsZW1lbnQtaG92ZXIsIGN5YW4pO1xuICAtLWRlZXBsaWItYWNjZW50LWNvbG9yOiB2YXIoLS10bWQtYWNjZW50LCAjRkZGRjg4KTtcbiAgLS1kZWVwbGliLWJsb2NrZWQtY29sb3I6IHZhcigtLXRtZC1ibG9ja2VkLCByZWQpO1xuICAtLWRlZXBsaWItdGV4dC1jb2xvcjogdmFyKC0tdG1kLXRleHQsIGJsYWNrKTtcbiAgLS1kZWVwbGliLWljb24tY29sb3I6IHZhcigtLXRtZC1hY2NlbnQsIGJsYWNrKTtcbiAgLS1kZWVwbGliLWljb24taG92ZXItY29sb3I6IHZhcigtLXRtZC1hY2NlbnQtaG92ZXIsIGJsYWNrKTtcbiAgLS1kZWVwbGliLWJvcmRlci1jb2xvcjogdmFyKC0tdG1kLWFjY2VudCwgYmxhY2spO1xuICAtLWRlZXBsaWItYm9yZGVyLXdpZHRoOiBtaW4oMC4ydmgsIDAuMXZ3KTtcbiAgLS1kZWVwbGliLWJvcmRlci13aWR0aDogbWluKDAuMmR2aCwgMC4xZHZ3KTtcbiAgLS1kZWVwbGliLWJvcmRlci1yYWRpdXM6IG1pbigxdmgsIDAuNXZ3KTtcbiAgLS1kZWVwbGliLWJvcmRlci1yYWRpdXM6IG1pbigxZHZoLCAwLjVkdncpO1xufVxuIiwiLmRlZXBsaWItYnV0dG9uIHtcbiAgY29sb3I6IHZhcigtLWRlZXBsaWItdGV4dC1jb2xvcik7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG5cbi5kZWVwbGliLWJ1dHRvbi5idXR0b24tc3R5bGluZyxcbi5kZWVwbGliLWJ1dHRvbi5idXR0b24tc3R5bGluZzo6YmVmb3JlIHtcbiAgYm9yZGVyLXJhZGl1czogbWluKDEuMGR2aCwgMC41ZHZ3KTtcbn1cblxuLmRlZXBsaWItYnV0dG9uIGltZyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwJTtcbiAgbGVmdDogMCU7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IGxlZnQ7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWRlZXBsaWItaWNvbi1jb2xvcik7XG4gIGJhY2tncm91bmQtYmxlbmQtbW9kZTogbXVsdGlwbHk7XG4gIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcbiAgbWFzay1wb3NpdGlvbjogbGVmdDtcbiAgbWFzay1zaXplOiBjb250YWluO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuICBjb2xvcjogdHJhbnNwYXJlbnQ7XG5cbiAgYmFja2dyb3VuZC1pbWFnZTogdmFyKC0taW1hZ2UpO1xuICBtYXNrLWltYWdlOiB2YXIoLS1pbWFnZSk7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4uZGVlcGxpYi1idXR0b246aG92ZXIgaW1nIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZGVlcGxpYi1pY29uLWhvdmVyLWNvbG9yKTtcbn1cblxuLmRlZXBsaWItYnV0dG9uIC5idXR0b24tbGFiZWwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICBjb2xvcjogdmFyKC0tZGVlcGxpYi10ZXh0LWNvbG9yKTtcbiAgZm9udC1zaXplOiBtaW4oMy42ZHZoLCAxLjhkdncpO1xufVxuXG4uZGVlcGxpYi1idXR0b24gLmJ1dHRvbi10b29sdGlwIHtcbiAgYm9yZGVyLXJhZGl1czogbWluKDEuMGR2aCwgMC41ZHZ3KTtcbn1cbiIsIiNkZWVwbGliLXBhZ2UtbGFiZWwge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cblxuI2RlZXBsaWItc3Vic2NyZWVuLXRpdGxlIHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgY29sb3I6IHZhcigtLWRlZXBsaWItdGV4dC1jb2xvcik7XG59XG5cbi5kZWVwbGliLXRleHQge1xuICBjb2xvcjogdmFyKC0tZGVlcGxpYi10ZXh0LWNvbG9yKTtcbn1cblxuLmRlZXBsaWItc3Vic2NyZWVuIHtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiAwO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLmRlZXBsaWItc3Vic2NyZWVuICoge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBwb2ludGVyLWV2ZW50czogYWxsO1xufVxuXG4uZGVlcGxpYi1zZXR0aW5ncyB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtYXV0by1yb3dzOiBtaW4tY29udGVudDtcbiAgcGFkZGluZzogbWluKDEuMGR2aCwgMC41ZHZ3KTtcbiAgZ2FwOiAwLjNlbTtcbn1cblxuLmRlZXBsaWItbWlzYyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZTtcbiAgZ2FwOiBtaW4oMXZoLCAwLjV2dyk7XG59XG5cbi5kZWVwbGliLXRvb2x0aXAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1kZWVwbGliLWVsZW1lbnQtY29sb3IpO1xuICBjb2xvcjogdmFyKC0tZGVlcGxpYi10ZXh0LWNvbG9yKTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGJvcmRlci1yYWRpdXM6IG1pbigxLjBkdmgsIDAuNWR2dyk7XG4gIHBhZGRpbmc6IG1pbigxdmgsIDAuNXZ3KTtcbiAgZm9udC1zaXplOiAwLjhlbTtcbiAgYm9yZGVyOiBtaW4oMC4ydmgsIDAuMXZ3KSBzb2xpZCB2YXIoLS1kZWVwbGliLWJvcmRlci1jb2xvcik7XG4gIHotaW5kZXg6IDE7XG59XG5cbi5kZWVwbGliLW92ZXJmbG93LWJveCB7XG4gIGJvcmRlcjogdmFyKC0tZGVlcGxpYi1ib3JkZXItY29sb3IpIHNvbGlkIHZhcigtLWRlZXBsaWItYm9yZGVyLXdpZHRoKTtcbn1cblxuLmRlZXBsaWItcHJldi1uZXh0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBnYXA6IG1pbigyZHZoLCAxZHZ3KTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZGVlcGxpYi1lbGVtZW50LWNvbG9yKTtcbiAgY29sb3I6IHZhcigtLWRlZXBsaWItdGV4dC1jb2xvcik7XG4gIGJvcmRlci1yYWRpdXM6IG1pbigxLjBkdmgsIDAuNWR2dyk7XG4gIGJvcmRlcjogbWluKDAuMnZoLCAwLjF2dykgc29saWQgdmFyKC0tZGVlcGxpYi1ib3JkZXItY29sb3IpO1xuXG4gIC5kZWVwbGliLXByZXYtbmV4dC1idXR0b24ge1xuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZGVlcGxpYi1lbGVtZW50LWhvdmVyLWNvbG9yKTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWRlZXBsaWItYm9yZGVyLXJhZGl1cyk7XG4gICAgfVxuICAgIFxuICAgIGhlaWdodDogMTAwJTtcbiAgICBhc3BlY3QtcmF0aW86IDE7XG4gIH1cblxuICAuZGVlcGxpYi1wcmV2LW5leHQtbGFiZWwge1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIH1cbn1cblxuI2RlZXBsaWItbmF2LW1lbnUge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBnYXA6IG1pbigyZHZoLCAxZHZ3KTtcbn1cblxuI2RlZXBsaWItc3RvcmFnZS1tZXRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwcHg7XG4gIGxlZnQ6IDBweDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZGVlcGxpYi1lbGVtZW50LWNvbG9yKTtcbiAgYm9yZGVyOiB2YXIoLS1kZWVwbGliLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tZGVlcGxpYi1ib3JkZXItY29sb3IpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1kZWVwbGliLWJvcmRlci1yYWRpdXMpO1xuICB6LWluZGV4OiAtMTtcbn1cblxuI2RlZXBsaWItc3RvcmFnZS1iYXIge1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAwJTtcbiAgYmFja2dyb3VuZDogdmFyKC0tZGVlcGxpYi1hY2NlbnQtY29sb3IpO1xufVxuIiwiLmRlZXBsaWItY2hlY2tib3gtY29udGFpbmVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAwLjNlbTtcbn1cblxuLmRlZXBsaWItY2hlY2tib3gtY29udGFpbmVyIGlucHV0LmRlZXBsaWItaW5wdXQge1xuICB3aWR0aDogbWluKDV2aCwgMi41dncpO1xuICBoZWlnaHQ6IG1pbig1dmgsIDIuNXZ3KTtcbiAgd2lkdGg6IG1pbig1ZHZoLCAyLjVkdncpO1xuICBoZWlnaHQ6IG1pbig1ZHZoLCAyLjVkdncpO1xuICBib3JkZXItcmFkaXVzOiBtaW4oMS4wdmgsIDAuNXZ3KTtcbiAgYm9yZGVyLXJhZGl1czogbWluKDEuMGR2aCwgMC41ZHZ3KTtcbn1cblxuLmRlZXBsaWItY2hlY2tib3gtY29udGFpbmVyIGlucHV0LmRlZXBsaWItaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdOmNoZWNrZWQ6OmJlZm9yZSB7XG4gIHdpZHRoOiA4MCU7XG4gIGhlaWdodDogODAlO1xufVxuXG4uZGVlcGxpYi1pbnB1dC1jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDAuM2VtO1xufVxuXG4uZGVlcGxpYi1pbnB1dC1jb250YWluZXI6aGFzKGxhYmVsLmRlZXBsaWItdGV4dCkge1xuICBtYXJnaW4tdG9wOiBtaW4oMXZoLCAwLjV2dyk7XG4gIG1hcmdpbi10b3A6IG1pbigxZHZoLCAwLjVkdncpO1xufVxuXG4uZGVlcGxpYi1pbnB1dC1jb250YWluZXIgaW5wdXQuZGVlcGxpYi1pbnB1dCB7XG4gIGZvbnQtc2l6ZTogMC42ZW07XG4gIHBhZGRpbmc6IG1pbigxdmgsIDAuNXZ3KTtcbiAgcGFkZGluZzogbWluKDFkdmgsIDAuNWR2dyk7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBvdXRsaW5lOiBub25lO1xuICBtaW4taGVpZ2h0OiBtaW4oNXZoLCAyLjV2dyk7XG4gIG1pbi1oZWlnaHQ6IG1pbig1ZHZoLCAyLjVkdncpO1xuICBib3JkZXItcmFkaXVzOiBtaW4oMS4wdmgsIDAuNXZ3KTtcbiAgYm9yZGVyLXJhZGl1czogbWluKDEuMGR2aCwgMC41ZHZ3KTtcbn1cblxuLmRlZXBsaWItaW5wdXQtY29udGFpbmVyIGlucHV0LmRlZXBsaWItaW5wdXRbdHlwZT1cImNvbG9yXCJdIHtcbiAgcGFkZGluZzogMHB4O1xuICB3aWR0aDogbWluKDV2aCwgMi41dncpO1xuICBoZWlnaHQ6IG1pbig1dmgsIDIuNXZ3KTtcbiAgd2lkdGg6IG1pbig1ZHZoLCAyLjVkdncpO1xuICBoZWlnaHQ6IG1pbig1ZHZoLCAyLjVkdncpO1xuICBib3JkZXItcmFkaXVzOiAwcHg7XG59XG5cbi5kZWVwbGliLWlucHV0LWNvbnRhaW5lciBpbnB1dC5kZWVwbGliLWlucHV0W3R5cGU9XCJjb2xvclwiXTpkaXNhYmxlZCB7XG4gIGJvcmRlcjogdmFyKC0tZGVlcGxpYi1ibG9ja2VkLWNvbG9yKSBzb2xpZCB2YXIoLS1kZWVwbGliLWJvcmRlci13aWR0aCk7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG59XG5cbi5kZWVwbGliLWRyb3Bkb3duLWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogbWluKDJ2aCwgMXZ3KTtcbiAgZ2FwOiBtaW4oMmR2aCwgMWR2dyk7XG4gIGNvbG9yOiB2YXIoLS1kZWVwbGliLXRleHQtY29sb3IpO1xuXG4gIHNlbGVjdCB7XG4gICAgcGFkZGluZzogMCBtaW4oMXZoLCAwLjV2dyk7XG4gICAgcGFkZGluZzogMCBtaW4oMWR2aCwgMC41ZHZ3KTtcbiAgICBib3JkZXItcmFkaXVzOiBtaW4oMXZoLCAwLjV2dyk7XG4gICAgYm9yZGVyLXJhZGl1czogbWluKDFkdmgsIDAuNWR2dyk7XG4gIH1cbn0iLCIuZGVlcGxpYi1oaWdobGlnaHQtdGV4dCB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBjb2xvcjogcmdiKDIwMywgMTg1LCAyMyk7XG59XG5cbiNUZXh0QXJlYUNoYXRMb2dbZGF0YS1jb2xvcnRoZW1lPSdkYXJrJ10gZGl2LkNoYXRNZXNzYWdlLmRlZXBsaWItbWVzc2FnZSxcbiNUZXh0QXJlYUNoYXRMb2dbZGF0YS1jb2xvcnRoZW1lPSdkYXJrMiddIGRpdi5DaGF0TWVzc2FnZS5kZWVwbGliLW1lc3NhZ2Uge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1kZWVwbGliLWVsZW1lbnQtY29sb3IpO1xuICBib3JkZXI6IG1pbigwLjJkdmgsIDAuMWR2dykgc29saWQgdmFyKC0tZGVlcGxpYi1ib3JkZXItY29sb3IpO1xuICBjb2xvcjogdmFyKC0tZGVlcGxpYi10ZXh0LWNvbG9yKTtcbn1cblxuI1RleHRBcmVhQ2hhdExvZyBkaXYuQ2hhdE1lc3NhZ2UuZGVlcGxpYi1tZXNzYWdlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTtcbiAgYm9yZGVyOiBtaW4oMC4yZHZoLCAwLjFkdncpIHNvbGlkICM0NDAxNzE7XG4gIGNvbG9yOiAjMTExO1xuICBwYWRkaW5nLWxlZnQ6IG1pbigwLjZkdmgsIDAuM2R2dyk7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xufVxuXG4jVGV4dEFyZWFDaGF0TG9nW2RhdGEtY29sb3J0aGVtZT0nZGFyayddIGRpdi5DaGF0TWVzc2FnZS5kZWVwbGliLW1lc3NhZ2UgYSxcbiNUZXh0QXJlYUNoYXRMb2dbZGF0YS1jb2xvcnRoZW1lPSdkYXJrMiddIGRpdi5DaGF0TWVzc2FnZS5kZWVwbGliLW1lc3NhZ2UgYSB7XG4gIGNvbG9yOiB2YXIoLS1kZWVwbGliLXRleHQtY29sb3IpO1xufVxuXG4jVGV4dEFyZWFDaGF0TG9nIGRpdi5DaGF0TWVzc2FnZS5kZWVwbGliLW1lc3NhZ2UgYSB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGNvbG9yOiAjMTExO1xufVxuIiwiLmRlZXBsaWItbW9kYWwge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMTAlO1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgei1pbmRleDogMTAwMTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMC41ZW07XG4gIHdpZHRoOiBtYXgoNTBkdncsIDI1ZHZoKTtcbiAgZm9udC1zaXplOiBtaW4oNGR2aCwgMmR2dyk7XG4gIHBhZGRpbmc6IG1pbigyZHZoLCAxZHZ3KTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZGVlcGxpYi1lbGVtZW50LWNvbG9yKTtcbiAgYm9yZGVyLXJhZGl1czogbWluKDEuMmR2aCwgMC42ZHZ3KTtcbiAgYm9yZGVyOiBtaW4oMC4yZHZoLCAwLjFkdncpIHNvbGlkIHZhcigtLWRlZXBsaWItYm9yZGVyLWNvbG9yKTtcbiAgY29sb3I6IHZhcigtLWRlZXBsaWItdGV4dC1jb2xvcik7XG5cbiAgLmRlZXBsaWItbW9kYWwtaW5wdXQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGZvbnQtc2l6ZTogbWluKDIuNmR2aCwgMS44ZHZ3KTtcbiAgICBib3JkZXItcmFkaXVzOiBtaW4oMS4wZHZoLCAwLjVkdncpO1xuICAgIHBhZGRpbmc6IG1pbigxZHZoLCAwLjVkdncpO1xuICB9XG5cbiAgaW5wdXQuZGVlcGxpYi1tb2RhbC1pbnB1dCB7XG4gICAgbWF4LXdpZHRoOiBtYXgoNTBkdmgsIDI1ZHZ3KTtcbiAgfVxuXG4gIC5kZWVwbGliLW1vZGFsLWJ1dHRvbi1jb250YWluZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgIGdhcDogMC41ZW07XG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgICAuZGVlcGxpYi1idXR0b24ge1xuICAgICAgZm9udC1zaXplOiAwLjhlbTtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICB3aWR0aDogYXV0bztcbiAgICAgIHBhZGRpbmc6IG1pbigwLjR2aCwgMC4ydncpIG1pbigydmgsIDF2dyk7XG5cbiAgICAgIC5idXR0b24tbGFiZWwge1xuICAgICAgICBkaXNwbGF5OiBjb250ZW50cztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuZGVlcGxpYi1tb2RhbC1wcm9tcHQtY29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgfVxufVxuXG4uZGVlcGxpYi1tb2RhbC1ibG9ja2VyIHtcbiAgei1pbmRleDogMTAwMDtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDBkdnc7XG4gIGhlaWdodDogMTAwZHZoO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7XG59XG4iXX0= */`;
|
|
878
932
|
|
|
879
933
|
// src/base/initialization.ts
|
|
880
934
|
var modStorage;
|
|
@@ -921,7 +975,6 @@ async function init(options) {
|
|
|
921
975
|
await options.initFunction?.();
|
|
922
976
|
if (options.mainMenuOptions)
|
|
923
977
|
MainMenu.setOptions(options.mainMenuOptions);
|
|
924
|
-
VersionModule.checkVersionUpdate();
|
|
925
978
|
for (const m of modules()) {
|
|
926
979
|
if (m.defaultSettings && hasGetter(m, "defaultSettings") && m.settings && hasSetter(m, "settings")) {
|
|
927
980
|
if (Object.entries(m.defaultSettings).length === 0) continue;
|
|
@@ -999,8 +1052,6 @@ var GUI = class _GUI extends BaseModule {
|
|
|
999
1052
|
_subscreens;
|
|
1000
1053
|
/** The mod's main menu screen. */
|
|
1001
1054
|
_mainMenu;
|
|
1002
|
-
/** The currently active subscreen, or `null` if none is active. */
|
|
1003
|
-
_currentSubscreen = null;
|
|
1004
1055
|
/** Options defining how the mod's settings button is displayed and behaves. */
|
|
1005
1056
|
_modButtonOptions;
|
|
1006
1057
|
/** Returns all registered subscreens. */
|
|
@@ -1011,38 +1062,12 @@ var GUI = class _GUI extends BaseModule {
|
|
|
1011
1062
|
get mainMenu() {
|
|
1012
1063
|
return this._mainMenu;
|
|
1013
1064
|
}
|
|
1014
|
-
/** Returns the currently active subscreen. */
|
|
1015
|
-
get currentSubscreen() {
|
|
1016
|
-
return this._currentSubscreen;
|
|
1017
|
-
}
|
|
1018
|
-
/**
|
|
1019
|
-
* Sets the current subscreen.
|
|
1020
|
-
* Accepts either a `BaseSubscreen` instance or the `name` of a subscreen.
|
|
1021
|
-
*
|
|
1022
|
-
* @throws If a string is provided but no subscreen with that name exists.
|
|
1023
|
-
*/
|
|
1024
|
-
set currentSubscreen(subscreen) {
|
|
1025
|
-
if (this._currentSubscreen) {
|
|
1026
|
-
this._currentSubscreen.unload();
|
|
1027
|
-
}
|
|
1028
|
-
if (typeof subscreen === "string") {
|
|
1029
|
-
const scr = this._subscreens?.find((s) => s.name === subscreen);
|
|
1030
|
-
if (!scr) throw `Failed to find screen name ${subscreen}`;
|
|
1031
|
-
this._currentSubscreen = scr;
|
|
1032
|
-
} else {
|
|
1033
|
-
this._currentSubscreen = subscreen;
|
|
1034
|
-
}
|
|
1035
|
-
if (this._currentSubscreen) {
|
|
1036
|
-
this._currentSubscreen.load();
|
|
1037
|
-
this._currentSubscreen.resize(true);
|
|
1038
|
-
}
|
|
1039
|
-
}
|
|
1040
1065
|
/**
|
|
1041
1066
|
* Creates the GUI instance and initializes the main menu.
|
|
1042
1067
|
*
|
|
1043
1068
|
* @throws If another `GUI` instance already exists.
|
|
1044
1069
|
*/
|
|
1045
|
-
constructor(
|
|
1070
|
+
constructor(guiOptions = null) {
|
|
1046
1071
|
super();
|
|
1047
1072
|
if (_GUI.instance) {
|
|
1048
1073
|
throw new Error("Duplicate initialization");
|
|
@@ -1050,9 +1075,9 @@ var GUI = class _GUI extends BaseModule {
|
|
|
1050
1075
|
for (const module of modules()) {
|
|
1051
1076
|
if (!module.settingsScreen) continue;
|
|
1052
1077
|
}
|
|
1053
|
-
this._mainMenu = new MainMenu(this);
|
|
1078
|
+
this._mainMenu = guiOptions?.mainMenu ? new guiOptions.mainMenu(this) : new MainMenu(this);
|
|
1054
1079
|
this._subscreens = [this._mainMenu];
|
|
1055
|
-
this._modButtonOptions =
|
|
1080
|
+
this._modButtonOptions = guiOptions;
|
|
1056
1081
|
_GUI.instance = this;
|
|
1057
1082
|
}
|
|
1058
1083
|
/**
|
|
@@ -1063,43 +1088,25 @@ var GUI = class _GUI extends BaseModule {
|
|
|
1063
1088
|
* - Sets up the main menu and its subscreens.
|
|
1064
1089
|
*/
|
|
1065
1090
|
load() {
|
|
1091
|
+
if (!this._modButtonOptions) return;
|
|
1066
1092
|
for (const module of modules()) {
|
|
1067
1093
|
if (!module.settingsScreen) continue;
|
|
1068
|
-
this._subscreens.push(new module.settingsScreen(
|
|
1094
|
+
this._subscreens.push(new module.settingsScreen(module));
|
|
1069
1095
|
}
|
|
1070
1096
|
this._mainMenu.subscreens = this._subscreens;
|
|
1071
1097
|
PreferenceRegisterExtensionSetting({
|
|
1072
|
-
Identifier: this._modButtonOptions.
|
|
1073
|
-
ButtonText: this._modButtonOptions.
|
|
1074
|
-
Image: this._modButtonOptions.
|
|
1075
|
-
load: /* @__PURE__ */ __name(() => {
|
|
1076
|
-
setSubscreen(
|
|
1098
|
+
Identifier: this._modButtonOptions.identifier,
|
|
1099
|
+
ButtonText: this._modButtonOptions.buttonText,
|
|
1100
|
+
Image: this._modButtonOptions.image,
|
|
1101
|
+
load: /* @__PURE__ */ __name(async () => {
|
|
1102
|
+
await setSubscreen(this._mainMenu);
|
|
1077
1103
|
}, "load"),
|
|
1078
1104
|
run: /* @__PURE__ */ __name(() => {
|
|
1079
|
-
if (this._currentSubscreen) {
|
|
1080
|
-
this._currentSubscreen.run();
|
|
1081
|
-
const newCanvasPosition = [MainCanvas.canvas.offsetLeft, MainCanvas.canvas.offsetTop, MainCanvas.canvas.clientWidth, MainCanvas.canvas.clientHeight];
|
|
1082
|
-
if (!CommonArraysEqual(newCanvasPosition, DrawCanvasPosition)) {
|
|
1083
|
-
DrawCanvasPosition = newCanvasPosition;
|
|
1084
|
-
this._currentSubscreen.resize(false);
|
|
1085
|
-
}
|
|
1086
|
-
}
|
|
1087
1105
|
}, "run"),
|
|
1088
1106
|
click: /* @__PURE__ */ __name(() => {
|
|
1089
|
-
if (this._currentSubscreen) {
|
|
1090
|
-
this._currentSubscreen.click();
|
|
1091
|
-
}
|
|
1092
1107
|
}, "click"),
|
|
1093
1108
|
exit: /* @__PURE__ */ __name(() => {
|
|
1094
|
-
|
|
1095
|
-
this._currentSubscreen.exit();
|
|
1096
|
-
}
|
|
1097
|
-
}, "exit"),
|
|
1098
|
-
unload: /* @__PURE__ */ __name(() => {
|
|
1099
|
-
if (this._currentSubscreen) {
|
|
1100
|
-
this._currentSubscreen.unload();
|
|
1101
|
-
}
|
|
1102
|
-
}, "unload")
|
|
1109
|
+
}, "exit")
|
|
1103
1110
|
});
|
|
1104
1111
|
}
|
|
1105
1112
|
};
|
|
@@ -1112,29 +1119,38 @@ var VersionModule = class _VersionModule extends BaseModule {
|
|
|
1112
1119
|
/** Whether the current session is running a new version compared to stored data */
|
|
1113
1120
|
static isItNewVersion = false;
|
|
1114
1121
|
/** The current mod version (retrieved from `ModSdkManager.ModInfo.version`) */
|
|
1115
|
-
static
|
|
1122
|
+
static version;
|
|
1116
1123
|
/** Message to display when a new version is detected */
|
|
1117
|
-
static
|
|
1124
|
+
static newVersionMessage = "";
|
|
1118
1125
|
/** List of registered migration handlers, sorted by version */
|
|
1119
|
-
static
|
|
1126
|
+
static migrators = [];
|
|
1127
|
+
/** Optional lifecycle hook. Runs before each migration */
|
|
1128
|
+
static beforeEach;
|
|
1129
|
+
/** Optional lifecycle hook. Runs after each migration */
|
|
1130
|
+
static afterEach;
|
|
1131
|
+
/** Optional lifecycle hook. Runs before all migrations */
|
|
1132
|
+
static beforeAll;
|
|
1133
|
+
/** Optional lifecycle hook. Runs after all migrations */
|
|
1134
|
+
static afterAll;
|
|
1135
|
+
constructor(options) {
|
|
1136
|
+
super();
|
|
1137
|
+
_VersionModule.newVersionMessage = options.newVersionMessage;
|
|
1138
|
+
_VersionModule.beforeEach = options.beforeEach;
|
|
1139
|
+
_VersionModule.afterEach = options.afterEach;
|
|
1140
|
+
_VersionModule.beforeAll = options.beforeAll;
|
|
1141
|
+
_VersionModule.afterAll = options.afterAll;
|
|
1142
|
+
}
|
|
1120
1143
|
/**
|
|
1121
1144
|
* Initializes the module on load:
|
|
1122
1145
|
* - Stores the current mod version.
|
|
1123
1146
|
* - Hooks into `ChatRoomSync` to show a "new version" message when applicable.
|
|
1124
1147
|
*/
|
|
1125
1148
|
load() {
|
|
1126
|
-
_VersionModule.
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
next(args);
|
|
1132
|
-
if (modStorage.playerStorage.GlobalModule.doShowNewVersionMessage && _VersionModule.isItNewVersion) {
|
|
1133
|
-
_VersionModule.sendNewVersionMessage();
|
|
1134
|
-
}
|
|
1135
|
-
},
|
|
1136
|
-
"VersionModule"
|
|
1137
|
-
);
|
|
1149
|
+
_VersionModule.version = ModSdkManager.ModInfo.version;
|
|
1150
|
+
_VersionModule.checkVersionUpdate();
|
|
1151
|
+
if (modStorage.playerStorage.GlobalModule.doShowNewVersionMessage && _VersionModule.isItNewVersion) {
|
|
1152
|
+
_VersionModule.sendNewVersionMessage();
|
|
1153
|
+
}
|
|
1138
1154
|
}
|
|
1139
1155
|
/**
|
|
1140
1156
|
* Checks if the stored version differs from the current version.
|
|
@@ -1145,9 +1161,9 @@ var VersionModule = class _VersionModule extends BaseModule {
|
|
|
1145
1161
|
* - Saves `modStorage`.
|
|
1146
1162
|
*/
|
|
1147
1163
|
static checkVersionUpdate() {
|
|
1148
|
-
const
|
|
1149
|
-
const
|
|
1150
|
-
if (_VersionModule.isNewVersion(
|
|
1164
|
+
const previousVersion = _VersionModule.loadVersion();
|
|
1165
|
+
const currentVersion = _VersionModule.version;
|
|
1166
|
+
if (_VersionModule.isNewVersion(previousVersion, currentVersion)) {
|
|
1151
1167
|
_VersionModule.isItNewVersion = true;
|
|
1152
1168
|
_VersionModule.checkVersionMigration();
|
|
1153
1169
|
_VersionModule.saveVersion();
|
|
@@ -1159,29 +1175,59 @@ var VersionModule = class _VersionModule extends BaseModule {
|
|
|
1159
1175
|
* is newer than the previously stored version.
|
|
1160
1176
|
*/
|
|
1161
1177
|
static checkVersionMigration() {
|
|
1162
|
-
const
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1178
|
+
const previousVersion = _VersionModule.loadVersion();
|
|
1179
|
+
const toMigrate = _VersionModule.migrators.filter(
|
|
1180
|
+
(m) => _VersionModule.isNewVersion(previousVersion, m.migrationVersion)
|
|
1181
|
+
);
|
|
1182
|
+
if (!toMigrate.length) return;
|
|
1183
|
+
_VersionModule.beforeAll?.();
|
|
1184
|
+
for (const migrator of toMigrate) {
|
|
1185
|
+
_VersionModule.beforeEach?.();
|
|
1186
|
+
migrator.migrate();
|
|
1187
|
+
deepLibLogger.info(
|
|
1188
|
+
`Migrating ${ModSdkManager.ModInfo.name} from ${previousVersion} to ${migrator.migrationVersion} with ${migrator.constructor.name}`
|
|
1189
|
+
);
|
|
1190
|
+
_VersionModule.afterEach?.();
|
|
1168
1191
|
}
|
|
1192
|
+
_VersionModule.afterAll?.();
|
|
1169
1193
|
}
|
|
1170
1194
|
/**
|
|
1171
1195
|
* Registers a new migrator for handling version-specific changes.
|
|
1172
1196
|
* Migrators are sorted by their `MigrationVersion` in ascending order.
|
|
1173
1197
|
*/
|
|
1174
1198
|
static registerMigrator(migrator) {
|
|
1175
|
-
_VersionModule.
|
|
1176
|
-
_VersionModule.
|
|
1177
|
-
}
|
|
1178
|
-
/** Sets the message that will be displayed when a new version is detected. */
|
|
1179
|
-
static setNewVersionMessage(newVersionMessage) {
|
|
1180
|
-
_VersionModule.NewVersionMessage = newVersionMessage;
|
|
1199
|
+
_VersionModule.migrators.push(migrator);
|
|
1200
|
+
_VersionModule.migrators.sort((a, b) => a.migrationVersion.localeCompare(b.migrationVersion));
|
|
1181
1201
|
}
|
|
1182
1202
|
/** Sends the currently configured "new version" message to the local player. */
|
|
1183
1203
|
static sendNewVersionMessage() {
|
|
1184
|
-
|
|
1204
|
+
if (!_VersionModule.newVersionMessage) return;
|
|
1205
|
+
const beepLogLength = FriendListBeepLog.push({
|
|
1206
|
+
MemberNumber: Player.MemberNumber,
|
|
1207
|
+
MemberName: ModSdkManager.ModInfo.name,
|
|
1208
|
+
ChatRoomName: getText("module.version.version_update"),
|
|
1209
|
+
ChatRoomSpace: "X",
|
|
1210
|
+
Private: false,
|
|
1211
|
+
Sent: false,
|
|
1212
|
+
Time: /* @__PURE__ */ new Date(),
|
|
1213
|
+
Message: _VersionModule.newVersionMessage
|
|
1214
|
+
});
|
|
1215
|
+
const beepIdx = beepLogLength - 1;
|
|
1216
|
+
const title = CommonStringPartitionReplace(getText("module.version.new_version_toast_title"), {
|
|
1217
|
+
$modName$: ModSdkManager.ModInfo.name,
|
|
1218
|
+
$modVersion$: _VersionModule.version
|
|
1219
|
+
}).join("");
|
|
1220
|
+
const data = FriendListBeepLog[beepIdx];
|
|
1221
|
+
ServerShowBeep(_VersionModule.newVersionMessage, 1e4, {
|
|
1222
|
+
memberNumber: data.MemberNumber,
|
|
1223
|
+
memberName: data.MemberName,
|
|
1224
|
+
chatRoomName: data.ChatRoomName,
|
|
1225
|
+
...data.Message && {
|
|
1226
|
+
onClick: /* @__PURE__ */ __name(() => {
|
|
1227
|
+
FriendListShowBeep(beepIdx);
|
|
1228
|
+
}, "onClick")
|
|
1229
|
+
}
|
|
1230
|
+
}, title);
|
|
1185
1231
|
}
|
|
1186
1232
|
/**
|
|
1187
1233
|
* Determines if a given `candidate` version is newer than the `current` version.
|
|
@@ -1206,7 +1252,7 @@ var VersionModule = class _VersionModule extends BaseModule {
|
|
|
1206
1252
|
/** Saves the current mod version into persistent player storage. */
|
|
1207
1253
|
static saveVersion() {
|
|
1208
1254
|
if (modStorage.playerStorage) {
|
|
1209
|
-
Player[ModSdkManager.ModInfo.name].Version = _VersionModule.
|
|
1255
|
+
Player[ModSdkManager.ModInfo.name].Version = _VersionModule.version;
|
|
1210
1256
|
}
|
|
1211
1257
|
}
|
|
1212
1258
|
/** Loads the stored mod version from persistent player storage. */
|
|
@@ -1220,19 +1266,21 @@ var GuiDebug = class extends BaseSubscreen {
|
|
|
1220
1266
|
static {
|
|
1221
1267
|
__name(this, "GuiDebug");
|
|
1222
1268
|
}
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
}
|
|
1269
|
+
static subscreenOptions = {
|
|
1270
|
+
name: "debug"
|
|
1271
|
+
};
|
|
1226
1272
|
get pageStructure() {
|
|
1227
1273
|
return [
|
|
1228
1274
|
[
|
|
1229
1275
|
{
|
|
1230
1276
|
type: "button",
|
|
1231
1277
|
id: "test-deeplib-big-button",
|
|
1278
|
+
options: {
|
|
1279
|
+
label: "Big Button",
|
|
1280
|
+
tooltip: "This is a big button",
|
|
1281
|
+
image: "Icons/Exit.png"
|
|
1282
|
+
},
|
|
1232
1283
|
size: [405, 80],
|
|
1233
|
-
label: "Big Button",
|
|
1234
|
-
tooltip: "This is a big button",
|
|
1235
|
-
image: "Icons/Exit.png",
|
|
1236
1284
|
onClick() {
|
|
1237
1285
|
deepLibLogger.info("Big Button Clicked");
|
|
1238
1286
|
}
|
|
@@ -1240,9 +1288,11 @@ var GuiDebug = class extends BaseSubscreen {
|
|
|
1240
1288
|
{
|
|
1241
1289
|
type: "button",
|
|
1242
1290
|
id: "test-deeplib-small-button",
|
|
1291
|
+
options: {
|
|
1292
|
+
tooltip: "This is a small button",
|
|
1293
|
+
image: "Icons/Exit.png"
|
|
1294
|
+
},
|
|
1243
1295
|
size: [90, 90],
|
|
1244
|
-
tooltip: "This is a small button",
|
|
1245
|
-
image: "Icons/Exit.png",
|
|
1246
1296
|
onClick() {
|
|
1247
1297
|
deepLibLogger.info("Small Button Clicked");
|
|
1248
1298
|
}
|
|
@@ -1294,10 +1344,12 @@ var GuiDebug = class extends BaseSubscreen {
|
|
|
1294
1344
|
{
|
|
1295
1345
|
type: "button",
|
|
1296
1346
|
id: "test-deeplib-big-button2",
|
|
1347
|
+
options: {
|
|
1348
|
+
label: "Big Button",
|
|
1349
|
+
tooltip: "This is a big button",
|
|
1350
|
+
image: "Icons/Exit.png"
|
|
1351
|
+
},
|
|
1297
1352
|
size: [405, 80],
|
|
1298
|
-
label: "Big Button",
|
|
1299
|
-
tooltip: "This is a big button",
|
|
1300
|
-
image: "Icons/Prev.png",
|
|
1301
1353
|
onClick() {
|
|
1302
1354
|
deepLibLogger.info("Big Button Clicked");
|
|
1303
1355
|
}
|
|
@@ -1305,9 +1357,11 @@ var GuiDebug = class extends BaseSubscreen {
|
|
|
1305
1357
|
{
|
|
1306
1358
|
type: "button",
|
|
1307
1359
|
id: "test-deeplib-small-button2",
|
|
1360
|
+
options: {
|
|
1361
|
+
tooltip: "This is a small button",
|
|
1362
|
+
image: "Icons/Next.png"
|
|
1363
|
+
},
|
|
1308
1364
|
size: [90, 90],
|
|
1309
|
-
tooltip: "This is a small button",
|
|
1310
|
-
image: "Icons/Next.png",
|
|
1311
1365
|
onClick() {
|
|
1312
1366
|
deepLibLogger.info("Small Button Clicked");
|
|
1313
1367
|
}
|
|
@@ -1353,6 +1407,22 @@ var GuiDebug = class extends BaseSubscreen {
|
|
|
1353
1407
|
id: "test-deeplib-label2",
|
|
1354
1408
|
label: "Label",
|
|
1355
1409
|
description: "This is a label"
|
|
1410
|
+
},
|
|
1411
|
+
{
|
|
1412
|
+
type: "dropdown",
|
|
1413
|
+
id: "test-deeplib-dropdown",
|
|
1414
|
+
label: "Dropdown",
|
|
1415
|
+
description: "This is a dropdown",
|
|
1416
|
+
optionsList: ["Option 1", "Option 2", "Option 3"],
|
|
1417
|
+
setElementValue() {
|
|
1418
|
+
return "Option 2";
|
|
1419
|
+
},
|
|
1420
|
+
setSettingValue(val) {
|
|
1421
|
+
deepLibLogger.info("Dropdown value:", val);
|
|
1422
|
+
},
|
|
1423
|
+
options: {
|
|
1424
|
+
width: 200
|
|
1425
|
+
}
|
|
1356
1426
|
}
|
|
1357
1427
|
]
|
|
1358
1428
|
];
|
|
@@ -1360,22 +1430,27 @@ var GuiDebug = class extends BaseSubscreen {
|
|
|
1360
1430
|
};
|
|
1361
1431
|
|
|
1362
1432
|
// src/utilities/common.ts
|
|
1433
|
+
function isPlainObject(value) {
|
|
1434
|
+
return value !== null && typeof value === "object" && Object.getPrototypeOf(value) === Object.prototype;
|
|
1435
|
+
}
|
|
1436
|
+
__name(isPlainObject, "isPlainObject");
|
|
1363
1437
|
function deepMerge(target, source) {
|
|
1364
1438
|
if (target === void 0) return source;
|
|
1365
1439
|
if (source === void 0) return target;
|
|
1366
|
-
if (
|
|
1367
|
-
return source;
|
|
1368
|
-
}
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1440
|
+
if (Array.isArray(target) && Array.isArray(source)) {
|
|
1441
|
+
return [...target, ...source];
|
|
1442
|
+
}
|
|
1443
|
+
if (isPlainObject(target) && isPlainObject(source)) {
|
|
1444
|
+
const result = { ...target };
|
|
1445
|
+
for (const key of Object.keys(source)) {
|
|
1446
|
+
if (key === "__proto__" || key === "constructor" || key === "prototype") {
|
|
1447
|
+
continue;
|
|
1448
|
+
}
|
|
1449
|
+
result[key] = key in target ? deepMerge(target[key], source[key]) : source[key];
|
|
1376
1450
|
}
|
|
1451
|
+
return result;
|
|
1377
1452
|
}
|
|
1378
|
-
return
|
|
1453
|
+
return source;
|
|
1379
1454
|
}
|
|
1380
1455
|
__name(deepMerge, "deepMerge");
|
|
1381
1456
|
function shuffleArray(array) {
|
|
@@ -1440,6 +1515,7 @@ var advElement = {
|
|
|
1440
1515
|
createInput: elementCreateInput,
|
|
1441
1516
|
createLabel: elementCreateLabel,
|
|
1442
1517
|
createCustom: elementCreateCustom,
|
|
1518
|
+
createDropdown: elementCreateDropdown,
|
|
1443
1519
|
createTooltip: elementCreateTooltip,
|
|
1444
1520
|
getTooltip: elementGetTooltip,
|
|
1445
1521
|
setTooltip: elementSetTooltip,
|
|
@@ -1470,7 +1546,7 @@ function elementCreateButton(options) {
|
|
|
1470
1546
|
disabled
|
|
1471
1547
|
},
|
|
1472
1548
|
children: [
|
|
1473
|
-
image ? {
|
|
1549
|
+
image ? deepMerge({
|
|
1474
1550
|
tag: "img",
|
|
1475
1551
|
attributes: {
|
|
1476
1552
|
id: `${options.id}-image`,
|
|
@@ -1483,7 +1559,7 @@ function elementCreateButton(options) {
|
|
|
1483
1559
|
style: {
|
|
1484
1560
|
"--image": `url("${image}")`
|
|
1485
1561
|
}
|
|
1486
|
-
} : void 0
|
|
1562
|
+
}, options.htmlOptions?.img) : void 0
|
|
1487
1563
|
]
|
|
1488
1564
|
}
|
|
1489
1565
|
}, options.htmlOptions ?? {})
|
|
@@ -1497,7 +1573,7 @@ function elementCreateCheckbox(options) {
|
|
|
1497
1573
|
if (elem) return elem;
|
|
1498
1574
|
options.type = "checkbox";
|
|
1499
1575
|
const disabled = typeof options?.disabled === "function" ? options?.disabled() : options?.disabled;
|
|
1500
|
-
const retElem = ElementCreate({
|
|
1576
|
+
const retElem = ElementCreate(deepMerge({
|
|
1501
1577
|
tag: "div",
|
|
1502
1578
|
classList: ["deeplib-checkbox-container"],
|
|
1503
1579
|
attributes: {
|
|
@@ -1512,23 +1588,23 @@ function elementCreateCheckbox(options) {
|
|
|
1512
1588
|
id: options.id,
|
|
1513
1589
|
disabled,
|
|
1514
1590
|
checked: options?.setElementValue?.() || void 0
|
|
1591
|
+
},
|
|
1592
|
+
eventListeners: {
|
|
1593
|
+
change: /* @__PURE__ */ __name(function() {
|
|
1594
|
+
options?.setSettingValue?.(this.checked);
|
|
1595
|
+
}, "change")
|
|
1515
1596
|
}
|
|
1516
|
-
}, options.htmlOptions),
|
|
1517
|
-
{
|
|
1597
|
+
}, options.htmlOptions?.checkbox),
|
|
1598
|
+
deepMerge({
|
|
1518
1599
|
tag: "label",
|
|
1519
1600
|
classList: ["deeplib-text"],
|
|
1520
1601
|
attributes: {
|
|
1521
1602
|
for: options.id
|
|
1522
1603
|
},
|
|
1523
1604
|
children: [options.label]
|
|
1524
|
-
}
|
|
1525
|
-
]
|
|
1526
|
-
|
|
1527
|
-
change: /* @__PURE__ */ __name(() => {
|
|
1528
|
-
options?.setSettingValue?.(document.getElementById(options.id)?.checked);
|
|
1529
|
-
}, "change")
|
|
1530
|
-
}
|
|
1531
|
-
});
|
|
1605
|
+
}, options.htmlOptions?.label)
|
|
1606
|
+
]
|
|
1607
|
+
}, options.htmlOptions?.container));
|
|
1532
1608
|
if (options.description) {
|
|
1533
1609
|
retElem.addEventListener("mouseover", () => {
|
|
1534
1610
|
elementSetTooltip(options.description || "");
|
|
@@ -1542,7 +1618,10 @@ function elementCreateCheckbox(options) {
|
|
|
1542
1618
|
}
|
|
1543
1619
|
__name(elementCreateCheckbox, "elementCreateCheckbox");
|
|
1544
1620
|
function elementCreateCustom(options) {
|
|
1545
|
-
|
|
1621
|
+
options.id ??= ElementGenerateID();
|
|
1622
|
+
options.htmlOptions.attributes ??= {};
|
|
1623
|
+
options.htmlOptions.attributes.id ??= options.id;
|
|
1624
|
+
const elem = document.getElementById(options.htmlOptions.attributes.id);
|
|
1546
1625
|
if (elem) return elem;
|
|
1547
1626
|
options.type = "custom";
|
|
1548
1627
|
const retElem = ElementCreate(options.htmlOptions);
|
|
@@ -1554,7 +1633,7 @@ function elementCreateInput(options) {
|
|
|
1554
1633
|
const elem = document.getElementById(options.id);
|
|
1555
1634
|
if (elem) return elem;
|
|
1556
1635
|
const disabled = typeof options?.disabled === "function" ? options?.disabled() : options?.disabled;
|
|
1557
|
-
const retElem = ElementCreate({
|
|
1636
|
+
const retElem = ElementCreate(deepMerge({
|
|
1558
1637
|
tag: "div",
|
|
1559
1638
|
classList: ["deeplib-input-container"],
|
|
1560
1639
|
attributes: {
|
|
@@ -1570,23 +1649,23 @@ function elementCreateInput(options) {
|
|
|
1570
1649
|
placeholder: " ",
|
|
1571
1650
|
disabled,
|
|
1572
1651
|
value: options?.setElementValue?.() || void 0
|
|
1652
|
+
},
|
|
1653
|
+
eventListeners: {
|
|
1654
|
+
input: /* @__PURE__ */ __name(function() {
|
|
1655
|
+
options?.setSettingValue?.(this.value);
|
|
1656
|
+
}, "input")
|
|
1573
1657
|
}
|
|
1574
|
-
}, options.htmlOptions),
|
|
1575
|
-
options.label ? {
|
|
1658
|
+
}, options.htmlOptions?.input),
|
|
1659
|
+
options.label ? deepMerge({
|
|
1576
1660
|
tag: "label",
|
|
1577
1661
|
classList: ["deeplib-text"],
|
|
1578
1662
|
attributes: {
|
|
1579
1663
|
for: options.id
|
|
1580
1664
|
},
|
|
1581
1665
|
children: [options.label]
|
|
1582
|
-
} : void 0
|
|
1583
|
-
]
|
|
1584
|
-
|
|
1585
|
-
input: /* @__PURE__ */ __name(() => {
|
|
1586
|
-
options?.setSettingValue?.(document.getElementById(options.id)?.value);
|
|
1587
|
-
}, "input")
|
|
1588
|
-
}
|
|
1589
|
-
});
|
|
1666
|
+
}, options.htmlOptions?.label) : void 0
|
|
1667
|
+
]
|
|
1668
|
+
}, options.htmlOptions?.container));
|
|
1590
1669
|
if (options.description) {
|
|
1591
1670
|
retElem.addEventListener("mouseover", () => {
|
|
1592
1671
|
elementSetTooltip(options.description || "");
|
|
@@ -1625,6 +1704,49 @@ function elementCreateLabel(options) {
|
|
|
1625
1704
|
return retElem;
|
|
1626
1705
|
}
|
|
1627
1706
|
__name(elementCreateLabel, "elementCreateLabel");
|
|
1707
|
+
function elementCreateDropdown(options) {
|
|
1708
|
+
options.id ??= ElementGenerateID();
|
|
1709
|
+
const elem = document.getElementById(`${options.id}-container`);
|
|
1710
|
+
if (elem) return elem;
|
|
1711
|
+
options.type = "dropdown";
|
|
1712
|
+
const retElem = ElementCreate(deepMerge({
|
|
1713
|
+
tag: "div",
|
|
1714
|
+
classList: ["deeplib-dropdown-container"],
|
|
1715
|
+
attributes: {
|
|
1716
|
+
id: `${options.id}-container`
|
|
1717
|
+
},
|
|
1718
|
+
children: [
|
|
1719
|
+
options.label ? deepMerge({
|
|
1720
|
+
tag: "label",
|
|
1721
|
+
classList: ["deeplib-text"],
|
|
1722
|
+
attributes: {
|
|
1723
|
+
for: options.id
|
|
1724
|
+
},
|
|
1725
|
+
children: [options.label]
|
|
1726
|
+
}, options.htmlOptions?.label) : void 0,
|
|
1727
|
+
ElementCreateDropdown(
|
|
1728
|
+
options.id,
|
|
1729
|
+
options.optionsList,
|
|
1730
|
+
function() {
|
|
1731
|
+
return options.setSettingValue?.(this.value);
|
|
1732
|
+
},
|
|
1733
|
+
options.options,
|
|
1734
|
+
options.htmlOptions?.select
|
|
1735
|
+
)
|
|
1736
|
+
],
|
|
1737
|
+
eventListeners: {
|
|
1738
|
+
mouseover: /* @__PURE__ */ __name(function() {
|
|
1739
|
+
elementSetTooltip(options.description ?? "");
|
|
1740
|
+
}, "mouseover"),
|
|
1741
|
+
mouseout: /* @__PURE__ */ __name(function() {
|
|
1742
|
+
elementSetTooltip("");
|
|
1743
|
+
}, "mouseout")
|
|
1744
|
+
}
|
|
1745
|
+
}, options.htmlOptions?.container));
|
|
1746
|
+
BaseSubscreen.currentElements.push([retElem, options]);
|
|
1747
|
+
return retElem;
|
|
1748
|
+
}
|
|
1749
|
+
__name(elementCreateDropdown, "elementCreateDropdown");
|
|
1628
1750
|
function elementCreateTooltip() {
|
|
1629
1751
|
const element = ElementCreate({
|
|
1630
1752
|
tag: "div",
|
|
@@ -1952,15 +2074,17 @@ var MainMenu = class _MainMenu extends BaseSubscreen {
|
|
|
1952
2074
|
}
|
|
1953
2075
|
subscreens = [];
|
|
1954
2076
|
static options = {};
|
|
1955
|
-
|
|
1956
|
-
|
|
1957
|
-
|
|
2077
|
+
static subscreenOptions = {
|
|
2078
|
+
name: "mainmenu",
|
|
2079
|
+
doShowExitButton: false,
|
|
2080
|
+
settingsWidth: 600
|
|
2081
|
+
};
|
|
1958
2082
|
constructor(module) {
|
|
1959
|
-
super(
|
|
2083
|
+
super(module);
|
|
1960
2084
|
this.subscreens = module.subscreens;
|
|
1961
2085
|
}
|
|
1962
2086
|
load() {
|
|
1963
|
-
if (!GUI.instance
|
|
2087
|
+
if (!GUI.instance || CurrentModule !== "DeepLibMod") {
|
|
1964
2088
|
this.setSubscreen(this);
|
|
1965
2089
|
return;
|
|
1966
2090
|
}
|
|
@@ -1981,21 +2105,21 @@ var MainMenu = class _MainMenu extends BaseSubscreen {
|
|
|
1981
2105
|
ElementMenu.AppendButton(menu, exitButton);
|
|
1982
2106
|
}
|
|
1983
2107
|
for (const screen of this.subscreens) {
|
|
1984
|
-
if (screen.name == "mainmenu") continue;
|
|
2108
|
+
if (screen.options.name == "mainmenu") continue;
|
|
1985
2109
|
const button = advElement.createButton({
|
|
1986
|
-
id: `${screen.name}-button`,
|
|
2110
|
+
id: `${screen.options.name}-button`,
|
|
1987
2111
|
onClick: /* @__PURE__ */ __name(() => {
|
|
1988
2112
|
this.setSubscreen(screen);
|
|
1989
2113
|
}, "onClick"),
|
|
1990
2114
|
size: [null, 90],
|
|
1991
2115
|
options: {
|
|
1992
|
-
image: screen.icon,
|
|
1993
|
-
label: getText(`mainmenu.button.${screen.name}`)
|
|
2116
|
+
image: screen.options.icon,
|
|
2117
|
+
label: getText(`mainmenu.button.${screen.options.name}`)
|
|
1994
2118
|
}
|
|
1995
2119
|
});
|
|
1996
2120
|
layout.appendToSettingsDiv(button);
|
|
1997
2121
|
}
|
|
1998
|
-
const miscDiv = layout.
|
|
2122
|
+
const miscDiv = layout.getMiscDiv();
|
|
1999
2123
|
layout.appendToSubscreen(miscDiv);
|
|
2000
2124
|
if (_MainMenu.options.wikiLink) {
|
|
2001
2125
|
const wikiButton = advElement.createButton({
|
|
@@ -2115,8 +2239,17 @@ var MainMenu = class _MainMenu extends BaseSubscreen {
|
|
|
2115
2239
|
exit() {
|
|
2116
2240
|
CharacterAppearanceForceUpCharacter = -1;
|
|
2117
2241
|
CharacterLoadCanvas(Player);
|
|
2118
|
-
this.
|
|
2119
|
-
|
|
2242
|
+
const returnScreen = typeof this.options.returnScreen === "function" ? this.options.returnScreen() : this.options.returnScreen;
|
|
2243
|
+
if (!returnScreen) {
|
|
2244
|
+
PreferenceOpenSubscreen("Extensions").then(() => {
|
|
2245
|
+
PreferenceSubscreenExtensionsClear();
|
|
2246
|
+
});
|
|
2247
|
+
} else if (returnScreen instanceof BaseSubscreen) {
|
|
2248
|
+
setSubscreen(returnScreen ?? null).then(() => {
|
|
2249
|
+
});
|
|
2250
|
+
} else if (Array.isArray(returnScreen)) {
|
|
2251
|
+
CommonSetScreen(...returnScreen);
|
|
2252
|
+
}
|
|
2120
2253
|
}
|
|
2121
2254
|
resize() {
|
|
2122
2255
|
super.resize();
|
|
@@ -2127,6 +2260,18 @@ var MainMenu = class _MainMenu extends BaseSubscreen {
|
|
|
2127
2260
|
_MainMenu.options = mainMenuOptions;
|
|
2128
2261
|
}
|
|
2129
2262
|
};
|
|
2263
|
+
async function PreferenceOpenSubscreen(subscreen, page = 1) {
|
|
2264
|
+
if (CurrentModule !== "Character" || CurrentScreen !== "Preference") {
|
|
2265
|
+
await CommonSetScreen("Character", "Preference");
|
|
2266
|
+
}
|
|
2267
|
+
PreferenceSubscreen?.unload?.();
|
|
2268
|
+
PreferenceSubscreen = PreferenceSubscreens.find((s) => s.name === subscreen) ?? null;
|
|
2269
|
+
if (!CommonIsNonNegativeInteger(page)) page = 1;
|
|
2270
|
+
PreferencePageCurrent = page;
|
|
2271
|
+
PreferenceMessage = "";
|
|
2272
|
+
PreferenceSubscreen?.load?.();
|
|
2273
|
+
}
|
|
2274
|
+
__name(PreferenceOpenSubscreen, "PreferenceOpenSubscreen");
|
|
2130
2275
|
|
|
2131
2276
|
// src/screens/import_export.ts
|
|
2132
2277
|
var GuiImportExport = class extends BaseSubscreen {
|
|
@@ -2134,11 +2279,11 @@ var GuiImportExport = class extends BaseSubscreen {
|
|
|
2134
2279
|
__name(this, "GuiImportExport");
|
|
2135
2280
|
}
|
|
2136
2281
|
importExportOptions;
|
|
2137
|
-
|
|
2138
|
-
|
|
2139
|
-
}
|
|
2282
|
+
static subscreenOptions = {
|
|
2283
|
+
name: "import-export"
|
|
2284
|
+
};
|
|
2140
2285
|
constructor(importExportOptions) {
|
|
2141
|
-
super(
|
|
2286
|
+
super();
|
|
2142
2287
|
this.importExportOptions = importExportOptions;
|
|
2143
2288
|
}
|
|
2144
2289
|
load() {
|
|
@@ -2383,7 +2528,9 @@ var ModStorage = class _ModStorage {
|
|
|
2383
2528
|
if (this.extensionStorage) {
|
|
2384
2529
|
const parsed = _ModStorage.dataDecompress(this.extensionStorage || "");
|
|
2385
2530
|
if (parsed === null || !Object.hasOwn(parsed, "Version")) {
|
|
2386
|
-
this.playerStorage = {
|
|
2531
|
+
this.playerStorage = {
|
|
2532
|
+
Version: ModSdkManager.ModInfo.version
|
|
2533
|
+
};
|
|
2387
2534
|
} else {
|
|
2388
2535
|
this.playerStorage = parsed;
|
|
2389
2536
|
}
|
|
@@ -2513,34 +2660,28 @@ __name(hasOverflow, "hasOverflow");
|
|
|
2513
2660
|
|
|
2514
2661
|
// src/utilities/elements/layout.ts
|
|
2515
2662
|
var layout = {
|
|
2516
|
-
createSubscreen: elementCreateSubscreenDiv,
|
|
2517
2663
|
getSubscreen: elementGetSubscreenDiv,
|
|
2518
2664
|
appendToSubscreen: elementAppendToSubscreenDiv,
|
|
2519
2665
|
removeSubscreen: elementRemoveSubscreenDiv,
|
|
2520
|
-
createSettingsDiv: elementCreateSettingsDiv,
|
|
2521
2666
|
getSettingsDiv: elementGetSettingsDiv,
|
|
2522
2667
|
appendToSettingsDiv: elementAppendToSettingsDiv,
|
|
2523
2668
|
removeSettingsDiv: elementRemoveSettingsDiv,
|
|
2524
|
-
createMiscDiv: elementCreateMiscDiv,
|
|
2525
2669
|
getMiscDiv: elementGetMiscDiv,
|
|
2526
2670
|
appendToMiscDiv: elementAppendToMiscDiv,
|
|
2527
2671
|
removeMiscDiv: elementRemoveMiscDiv
|
|
2528
2672
|
};
|
|
2529
|
-
function
|
|
2530
|
-
const subscreenDiv =
|
|
2673
|
+
function elementGetSubscreenDiv() {
|
|
2674
|
+
const subscreenDiv = ElementWrap("deeplib-subscreen");
|
|
2531
2675
|
if (subscreenDiv) {
|
|
2532
|
-
console.error("Subscreen already exists");
|
|
2533
2676
|
return subscreenDiv;
|
|
2534
2677
|
}
|
|
2535
|
-
const div =
|
|
2536
|
-
|
|
2537
|
-
|
|
2678
|
+
const div = ElementCreate({
|
|
2679
|
+
tag: "div",
|
|
2680
|
+
classList: ["deeplib-subscreen", "HideOnPopup"],
|
|
2681
|
+
attributes: { id: "deeplib-subscreen" }
|
|
2682
|
+
});
|
|
2538
2683
|
return document.body.appendChild(div);
|
|
2539
2684
|
}
|
|
2540
|
-
__name(elementCreateSubscreenDiv, "elementCreateSubscreenDiv");
|
|
2541
|
-
function elementGetSubscreenDiv() {
|
|
2542
|
-
return document.getElementById("deeplib-subscreen") ?? void 0;
|
|
2543
|
-
}
|
|
2544
2685
|
__name(elementGetSubscreenDiv, "elementGetSubscreenDiv");
|
|
2545
2686
|
function elementRemoveSubscreenDiv() {
|
|
2546
2687
|
return elementGetSubscreenDiv()?.remove();
|
|
@@ -2550,21 +2691,18 @@ function elementAppendToSubscreenDiv(...element) {
|
|
|
2550
2691
|
return elementGetSubscreenDiv()?.append(...element);
|
|
2551
2692
|
}
|
|
2552
2693
|
__name(elementAppendToSubscreenDiv, "elementAppendToSubscreenDiv");
|
|
2553
|
-
function
|
|
2554
|
-
const settingsDiv =
|
|
2694
|
+
function elementGetSettingsDiv() {
|
|
2695
|
+
const settingsDiv = ElementWrap("deeplib-settings");
|
|
2555
2696
|
if (settingsDiv) {
|
|
2556
|
-
console.error("Settings screen already exists");
|
|
2557
2697
|
return settingsDiv;
|
|
2558
2698
|
}
|
|
2559
|
-
const div =
|
|
2560
|
-
|
|
2561
|
-
|
|
2699
|
+
const div = ElementCreate({
|
|
2700
|
+
tag: "div",
|
|
2701
|
+
classList: ["deeplib-settings", "scroll-box"],
|
|
2702
|
+
attributes: { id: "deeplib-settings" }
|
|
2703
|
+
});
|
|
2562
2704
|
return div;
|
|
2563
2705
|
}
|
|
2564
|
-
__name(elementCreateSettingsDiv, "elementCreateSettingsDiv");
|
|
2565
|
-
function elementGetSettingsDiv() {
|
|
2566
|
-
return document.getElementById("deeplib-settings") ?? void 0;
|
|
2567
|
-
}
|
|
2568
2706
|
__name(elementGetSettingsDiv, "elementGetSettingsDiv");
|
|
2569
2707
|
function elementAppendToSettingsDiv(...element) {
|
|
2570
2708
|
return elementGetSettingsDiv()?.append(...element);
|
|
@@ -2574,21 +2712,18 @@ function elementRemoveSettingsDiv() {
|
|
|
2574
2712
|
return elementGetSettingsDiv()?.remove();
|
|
2575
2713
|
}
|
|
2576
2714
|
__name(elementRemoveSettingsDiv, "elementRemoveSettingsDiv");
|
|
2577
|
-
function
|
|
2578
|
-
const miscDiv =
|
|
2715
|
+
function elementGetMiscDiv() {
|
|
2716
|
+
const miscDiv = ElementWrap("deeplib-misc");
|
|
2579
2717
|
if (miscDiv) {
|
|
2580
|
-
console.error("Settings screen already exists");
|
|
2581
2718
|
return miscDiv;
|
|
2582
2719
|
}
|
|
2583
|
-
const div =
|
|
2584
|
-
|
|
2585
|
-
|
|
2720
|
+
const div = ElementCreate({
|
|
2721
|
+
tag: "div",
|
|
2722
|
+
classList: ["deeplib-misc"],
|
|
2723
|
+
attributes: { id: "deeplib-misc" }
|
|
2724
|
+
});
|
|
2586
2725
|
return div;
|
|
2587
2726
|
}
|
|
2588
|
-
__name(elementCreateMiscDiv, "elementCreateMiscDiv");
|
|
2589
|
-
function elementGetMiscDiv() {
|
|
2590
|
-
return document.getElementById("deeplib-misc");
|
|
2591
|
-
}
|
|
2592
2727
|
__name(elementGetMiscDiv, "elementGetMiscDiv");
|
|
2593
2728
|
function elementAppendToMiscDiv(...element) {
|
|
2594
2729
|
return elementGetMiscDiv()?.append(...element);
|
|
@@ -3031,7 +3166,6 @@ export {
|
|
|
3031
3166
|
getText,
|
|
3032
3167
|
hasGetter,
|
|
3033
3168
|
hasSetter,
|
|
3034
|
-
init,
|
|
3035
3169
|
initMod,
|
|
3036
3170
|
layout,
|
|
3037
3171
|
modStorage,
|