Update dists

This commit is contained in:
redphx 2024-10-23 20:03:26 +07:00
parent 6440c91cdf
commit 5a06933143
2 changed files with 142 additions and 138 deletions

View File

@ -2450,39 +2450,38 @@ class MkbPresetsDb extends LocalDb {
} }
} }
} }
presetsTable() { async presetsTable() {
return this.open().then(() => this.table(this.TABLE_PRESETS, "readwrite")); return await this.open(), await this.table(this.TABLE_PRESETS, "readwrite");
} }
newPreset(name, data) { async newPreset(name, data) {
return this.presetsTable().then((table) => this.add(table, { name, data })).then(([table, id]) => new Promise((resolve) => resolve(id))); let table = await this.presetsTable(), [, id] = await this.add(table, { name, data });
return id;
} }
updatePreset(preset) { async updatePreset(preset) {
return this.presetsTable().then((table) => this.put(table, preset)).then(([table, id]) => new Promise((resolve) => resolve(id))); let table = await this.presetsTable(), [, id] = await this.put(table, preset);
return id;
} }
deletePreset(id) { async deletePreset(id) {
return this.presetsTable().then((table) => this.delete(table, id)).then(([table, id2]) => new Promise((resolve) => resolve(id2))); let table = await this.presetsTable();
return await this.delete(table, id), id;
} }
getPreset(id) { async getPreset(id) {
return this.presetsTable().then((table) => this.get(table, id)).then(([table, preset]) => new Promise((resolve) => resolve(preset))); let table = await this.presetsTable(), [, preset] = await this.get(table, id);
return preset;
} }
getPresets() { async getPresets() {
return this.presetsTable().then((table) => this.count(table)).then(([table, count]) => { let table = await this.presetsTable(), [, count] = await this.count(table);
if (count > 0) return new Promise((resolve) => { if (count > 0) {
this.getAll(table).then(([table2, items]) => { let [, items] = await this.getAll(table), presets = {};
let presets = {}; return items.forEach((item) => presets[item.id] = item), presets;
items.forEach((item) => presets[item.id] = item), resolve(presets); }
}); let preset = {
}); name: t("default"),
let preset = { data: MkbPreset.DEFAULT_PRESET
name: t("default"), }, [, id] = await this.add(table, preset);
data: MkbPreset.DEFAULT_PRESET return preset.id = id, setPref("mkb_default_preset_id", id), {
}; [id]: preset
return new Promise((resolve) => { };
this.add(table, preset).then(([table2, id]) => {
preset.id = id, setPref("mkb_default_preset_id", id), resolve({ [id]: preset });
});
});
});
} }
} }
var PointerToMouseButton = { var PointerToMouseButton = {
@ -3176,7 +3175,7 @@ class MkbRemapper {
static instance; static instance;
static getInstance = () => MkbRemapper.instance ?? (MkbRemapper.instance = new MkbRemapper); static getInstance = () => MkbRemapper.instance ?? (MkbRemapper.instance = new MkbRemapper);
LOG_TAG = "MkbRemapper"; LOG_TAG = "MkbRemapper";
STATE = { states = {
currentPresetId: 0, currentPresetId: 0,
presets: {}, presets: {},
editingPresetData: null, editingPresetData: null,
@ -3190,7 +3189,7 @@ class MkbRemapper {
allMouseElements = {}; allMouseElements = {};
bindingDialog; bindingDialog;
constructor() { constructor() {
BxLogger.info(this.LOG_TAG, "constructor()"), this.STATE.currentPresetId = getPref("mkb_default_preset_id"), this.bindingDialog = new Dialog({ BxLogger.info(this.LOG_TAG, "constructor()"), this.states.currentPresetId = getPref("mkb_default_preset_id"), this.bindingDialog = new Dialog({
className: "bx-binding-dialog", className: "bx-binding-dialog",
content: CE("div", {}, CE("p", {}, t("press-to-bind")), CE("i", {}, t("press-esc-to-cancel"))), content: CE("div", {}, CE("p", {}, t("press-to-bind")), CE("i", {}, t("press-esc-to-cancel"))),
hideCloseButton: !0 hideCloseButton: !0
@ -3204,11 +3203,11 @@ class MkbRemapper {
if ($elm.dataset.keyCode === key.code) return; if ($elm.dataset.keyCode === key.code) return;
for (let $otherElm of this.allKeyElements) for (let $otherElm of this.allKeyElements)
if ($otherElm.dataset.keyCode === key.code) this.unbindKey($otherElm); if ($otherElm.dataset.keyCode === key.code) this.unbindKey($otherElm);
this.STATE.editingPresetData.mapping[buttonIndex][keySlot] = key.code, $elm.textContent = key.name, $elm.dataset.keyCode = key.code; this.states.editingPresetData.mapping[buttonIndex][keySlot] = key.code, $elm.textContent = key.name, $elm.dataset.keyCode = key.code;
}; };
unbindKey = ($elm) => { unbindKey = ($elm) => {
let buttonIndex = parseInt($elm.dataset.buttonIndex), keySlot = parseInt($elm.dataset.keySlot); let buttonIndex = parseInt($elm.dataset.buttonIndex), keySlot = parseInt($elm.dataset.keySlot);
this.STATE.editingPresetData.mapping[buttonIndex][keySlot] = null, $elm.textContent = "", delete $elm.dataset.keyCode; this.states.editingPresetData.mapping[buttonIndex][keySlot] = null, $elm.textContent = "", delete $elm.dataset.keyCode;
}; };
onWheel = (e) => { onWheel = (e) => {
e.preventDefault(), this.clearEventListeners(), this.bindKey(this.$currentBindingKey, KeyHelper.getKeyFromEvent(e)), window.setTimeout(() => this.bindingDialog.hide(), 200); e.preventDefault(), this.clearEventListeners(), this.bindKey(this.$currentBindingKey, KeyHelper.getKeyFromEvent(e)), window.setTimeout(() => this.bindingDialog.hide(), 200);
@ -3221,21 +3220,26 @@ class MkbRemapper {
window.setTimeout(() => this.bindingDialog.hide(), 200); window.setTimeout(() => this.bindingDialog.hide(), 200);
}; };
onBindingKey = (e) => { onBindingKey = (e) => {
if (!this.STATE.isEditing || e.button !== 0) return; if (!this.states.isEditing || e.button !== 0) return;
console.log(e), this.$currentBindingKey = e.target, window.addEventListener("keydown", this.onKeyDown), window.addEventListener("mousedown", this.onMouseDown), window.addEventListener("wheel", this.onWheel), this.bindingDialog.show({ title: this.$currentBindingKey.dataset.prompt }); console.log(e), this.$currentBindingKey = e.target, window.addEventListener("keydown", this.onKeyDown), window.addEventListener("mousedown", this.onMouseDown), window.addEventListener("wheel", this.onWheel), this.bindingDialog.show({ title: this.$currentBindingKey.dataset.prompt });
}; };
onContextMenu = (e) => { onContextMenu = (e) => {
if (e.preventDefault(), !this.STATE.isEditing) return; if (e.preventDefault(), !this.states.isEditing) return;
this.unbindKey(e.target); this.unbindKey(e.target);
}; };
getPreset = (presetId) => { getPreset = (presetId) => {
return this.STATE.presets[presetId]; return this.states.presets[presetId];
}; };
getCurrentPreset = () => { getCurrentPreset = () => {
return this.getPreset(this.STATE.currentPresetId); let preset = this.getPreset(this.states.currentPresetId);
if (!preset) {
let firstPresetId = parseInt(Object.keys(this.states.presets)[0]);
preset = this.states.presets[firstPresetId], this.states.currentPresetId = firstPresetId, setPref("mkb_default_preset_id", firstPresetId);
}
return preset;
}; };
switchPreset = (presetId) => { switchPreset = (presetId) => {
this.STATE.currentPresetId = presetId; this.states.currentPresetId = presetId;
let presetData = this.getCurrentPreset().data; let presetData = this.getCurrentPreset().data;
for (let $elm of this.allKeyElements) { for (let $elm of this.allKeyElements) {
let buttonIndex = parseInt($elm.dataset.buttonIndex), keySlot = parseInt($elm.dataset.keySlot), buttonKeys = presetData.mapping[buttonIndex]; let buttonIndex = parseInt($elm.dataset.buttonIndex), keySlot = parseInt($elm.dataset.keySlot), buttonKeys = presetData.mapping[buttonIndex];
@ -3248,35 +3252,33 @@ class MkbRemapper {
if (typeof value === "undefined") value = MkbPreset.MOUSE_SETTINGS[key].default; if (typeof value === "undefined") value = MkbPreset.MOUSE_SETTINGS[key].default;
"setValue" in $elm && $elm.setValue(value); "setValue" in $elm && $elm.setValue(value);
} }
let activated = getPref("mkb_default_preset_id") === this.STATE.currentPresetId; let activated = getPref("mkb_default_preset_id") === this.states.currentPresetId;
this.$activateButton.disabled = activated, this.$activateButton.querySelector("span").textContent = activated ? t("activated") : t("activate"); this.$activateButton.disabled = activated, this.$activateButton.querySelector("span").textContent = activated ? t("activated") : t("activate");
}; };
refresh() { async refresh() {
while (this.$presetsSelect.firstChild) removeChildElements(this.$presetsSelect);
this.$presetsSelect.removeChild(this.$presetsSelect.firstChild); let presets = await MkbPresetsDb.getInstance().getPresets();
MkbPresetsDb.getInstance().getPresets().then((presets) => { this.states.presets = presets;
this.STATE.presets = presets; let fragment = document.createDocumentFragment(), defaultPresetId;
let $fragment = document.createDocumentFragment(), defaultPresetId; if (this.states.currentPresetId === 0) this.states.currentPresetId = parseInt(Object.keys(presets)[0]), defaultPresetId = this.states.currentPresetId, setPref("mkb_default_preset_id", defaultPresetId), EmulatedMkbHandler.getInstance().refreshPresetData();
if (this.STATE.currentPresetId === 0) this.STATE.currentPresetId = parseInt(Object.keys(presets)[0]), defaultPresetId = this.STATE.currentPresetId, setPref("mkb_default_preset_id", defaultPresetId), EmulatedMkbHandler.getInstance().refreshPresetData(); else defaultPresetId = getPref("mkb_default_preset_id");
else defaultPresetId = getPref("mkb_default_preset_id"); for (let id in presets) {
for (let id in presets) { let name = presets[id].name;
let name = presets[id].name; if (id === defaultPresetId) name = "🎮 " + name;
if (id === defaultPresetId) name = "🎮 " + name; let $options = CE("option", { value: id }, name);
let $options = CE("option", { value: id }, name); $options.selected = parseInt(id) === this.states.currentPresetId, fragment.appendChild($options);
$options.selected = parseInt(id) === this.STATE.currentPresetId, $fragment.appendChild($options); }
} this.$presetsSelect.appendChild(fragment);
this.$presetsSelect.appendChild($fragment); let activated = defaultPresetId === this.states.currentPresetId;
let activated = defaultPresetId === this.STATE.currentPresetId; this.$activateButton.disabled = activated, this.$activateButton.querySelector("span").textContent = activated ? t("activated") : t("activate"), !this.states.isEditing && this.switchPreset(this.states.currentPresetId);
this.$activateButton.disabled = activated, this.$activateButton.querySelector("span").textContent = activated ? t("activated") : t("activate"), !this.STATE.isEditing && this.switchPreset(this.STATE.currentPresetId);
});
} }
toggleEditing = (force) => { toggleEditing = (force) => {
if (this.STATE.isEditing = typeof force !== "undefined" ? force : !this.STATE.isEditing, this.$wrapper.classList.toggle("bx-editing", this.STATE.isEditing), this.STATE.isEditing) this.STATE.editingPresetData = deepClone(this.getCurrentPreset().data); if (this.states.isEditing = typeof force !== "undefined" ? force : !this.states.isEditing, this.$wrapper.classList.toggle("bx-editing", this.states.isEditing), this.states.isEditing) this.states.editingPresetData = deepClone(this.getCurrentPreset().data);
else this.STATE.editingPresetData = null; else this.states.editingPresetData = null;
let childElements = this.$wrapper.querySelectorAll("select, button, input"); let childElements = this.$wrapper.querySelectorAll("select, button, input");
for (let $elm of Array.from(childElements)) { for (let $elm of Array.from(childElements)) {
if ($elm.parentElement.parentElement.classList.contains("bx-mkb-action-buttons")) continue; if ($elm.parentElement.parentElement.classList.contains("bx-mkb-action-buttons")) continue;
let disable = !this.STATE.isEditing; let disable = !this.states.isEditing;
if ($elm.parentElement.classList.contains("bx-mkb-preset-tools")) disable = !disable; if ($elm.parentElement.classList.contains("bx-mkb-preset-tools")) disable = !disable;
$elm.disabled = disable; $elm.disabled = disable;
} }
@ -3296,10 +3298,10 @@ class MkbRemapper {
title: t("rename"), title: t("rename"),
icon: BxIcon.CURSOR_TEXT, icon: BxIcon.CURSOR_TEXT,
tabIndex: -1, tabIndex: -1,
onClick: (e) => { onClick: async () => {
let preset = this.getCurrentPreset(), newName = promptNewName(preset.name); let preset = this.getCurrentPreset(), newName = promptNewName(preset.name);
if (!newName || newName === preset.name) return; if (!newName || newName === preset.name) return;
preset.name = newName, MkbPresetsDb.getInstance().updatePreset(preset).then((id) => this.refresh()); preset.name = newName, await MkbPresetsDb.getInstance().updatePreset(preset), await this.refresh();
} }
}), createButton({ }), createButton({
icon: BxIcon.NEW, icon: BxIcon.NEW,
@ -3309,7 +3311,7 @@ class MkbRemapper {
let newName = promptNewName(""); let newName = promptNewName("");
if (!newName) return; if (!newName) return;
MkbPresetsDb.getInstance().newPreset(newName, MkbPreset.DEFAULT_PRESET).then((id) => { MkbPresetsDb.getInstance().newPreset(newName, MkbPreset.DEFAULT_PRESET).then((id) => {
this.STATE.currentPresetId = id, this.refresh(); this.states.currentPresetId = id, this.refresh();
}); });
} }
}), createButton({ }), createButton({
@ -3320,7 +3322,7 @@ class MkbRemapper {
let preset = this.getCurrentPreset(), newName = promptNewName(`${preset.name} (2)`); let preset = this.getCurrentPreset(), newName = promptNewName(`${preset.name} (2)`);
if (!newName) return; if (!newName) return;
MkbPresetsDb.getInstance().newPreset(newName, preset.data).then((id) => { MkbPresetsDb.getInstance().newPreset(newName, preset.data).then((id) => {
this.STATE.currentPresetId = id, this.refresh(); this.states.currentPresetId = id, this.refresh();
}); });
} }
}), createButton({ }), createButton({
@ -3330,8 +3332,8 @@ class MkbRemapper {
tabIndex: -1, tabIndex: -1,
onClick: (e) => { onClick: (e) => {
if (!confirm(t("confirm-delete-preset"))) return; if (!confirm(t("confirm-delete-preset"))) return;
MkbPresetsDb.getInstance().deletePreset(this.STATE.currentPresetId).then((id) => { MkbPresetsDb.getInstance().deletePreset(this.states.currentPresetId).then((id) => {
this.STATE.currentPresetId = 0, this.refresh(); this.states.currentPresetId = 0, this.refresh();
}); });
} }
})); }));
@ -3353,7 +3355,7 @@ class MkbRemapper {
let $mouseSettings = document.createDocumentFragment(); let $mouseSettings = document.createDocumentFragment();
for (let key in MkbPreset.MOUSE_SETTINGS) { for (let key in MkbPreset.MOUSE_SETTINGS) {
let setting = MkbPreset.MOUSE_SETTINGS[key], value = setting.default, $elm, onChange = (e, value2) => { let setting = MkbPreset.MOUSE_SETTINGS[key], value = setting.default, $elm, onChange = (e, value2) => {
this.STATE.editingPresetData.mouse[key] = value2; this.states.editingPresetData.mouse[key] = value2;
}, $row = CE("label", { }, $row = CE("label", {
class: "bx-settings-row", class: "bx-settings-row",
for: `bx_setting_${key}` for: `bx_setting_${key}`
@ -3370,14 +3372,14 @@ class MkbRemapper {
style: 1, style: 1,
tabIndex: -1, tabIndex: -1,
onClick: (e) => { onClick: (e) => {
setPref("mkb_default_preset_id", this.STATE.currentPresetId), EmulatedMkbHandler.getInstance().refreshPresetData(), this.refresh(); setPref("mkb_default_preset_id", this.states.currentPresetId), EmulatedMkbHandler.getInstance().refreshPresetData(), this.refresh();
} }
})), CE("div", {}, createButton({ })), CE("div", {}, createButton({
label: t("cancel"), label: t("cancel"),
style: 4, style: 4,
tabIndex: -1, tabIndex: -1,
onClick: (e) => { onClick: (e) => {
this.switchPreset(this.STATE.currentPresetId), this.toggleEditing(!1); this.switchPreset(this.states.currentPresetId), this.toggleEditing(!1);
} }
}), createButton({ }), createButton({
label: t("save"), label: t("save"),
@ -3385,7 +3387,7 @@ class MkbRemapper {
tabIndex: -1, tabIndex: -1,
onClick: (e) => { onClick: (e) => {
let updatedPreset = deepClone(this.getCurrentPreset()); let updatedPreset = deepClone(this.getCurrentPreset());
updatedPreset.data = this.STATE.editingPresetData, MkbPresetsDb.getInstance().updatePreset(updatedPreset).then((id) => { updatedPreset.data = this.states.editingPresetData, MkbPresetsDb.getInstance().updatePreset(updatedPreset).then((id) => {
if (id === getPref("mkb_default_preset_id")) EmulatedMkbHandler.getInstance().refreshPresetData(); if (id === getPref("mkb_default_preset_id")) EmulatedMkbHandler.getInstance().refreshPresetData();
this.toggleEditing(!1), this.refresh(); this.toggleEditing(!1), this.refresh();
}); });

View File

@ -2725,39 +2725,38 @@ class MkbPresetsDb extends LocalDb {
} }
} }
} }
presetsTable() { async presetsTable() {
return this.open().then(() => this.table(this.TABLE_PRESETS, "readwrite")); return await this.open(), await this.table(this.TABLE_PRESETS, "readwrite");
} }
newPreset(name, data) { async newPreset(name, data) {
return this.presetsTable().then((table) => this.add(table, { name, data })).then(([table, id2]) => new Promise((resolve) => resolve(id2))); let table = await this.presetsTable(), [, id2] = await this.add(table, { name, data });
return id2;
} }
updatePreset(preset) { async updatePreset(preset) {
return this.presetsTable().then((table) => this.put(table, preset)).then(([table, id2]) => new Promise((resolve) => resolve(id2))); let table = await this.presetsTable(), [, id2] = await this.put(table, preset);
return id2;
} }
deletePreset(id2) { async deletePreset(id2) {
return this.presetsTable().then((table) => this.delete(table, id2)).then(([table, id3]) => new Promise((resolve) => resolve(id3))); let table = await this.presetsTable();
return await this.delete(table, id2), id2;
} }
getPreset(id2) { async getPreset(id2) {
return this.presetsTable().then((table) => this.get(table, id2)).then(([table, preset]) => new Promise((resolve) => resolve(preset))); let table = await this.presetsTable(), [, preset] = await this.get(table, id2);
return preset;
} }
getPresets() { async getPresets() {
return this.presetsTable().then((table) => this.count(table)).then(([table, count]) => { let table = await this.presetsTable(), [, count] = await this.count(table);
if (count > 0) return new Promise((resolve) => { if (count > 0) {
this.getAll(table).then(([table2, items]) => { let [, items] = await this.getAll(table), presets = {};
let presets = {}; return items.forEach((item2) => presets[item2.id] = item2), presets;
items.forEach((item2) => presets[item2.id] = item2), resolve(presets); }
}); let preset = {
}); name: t("default"),
let preset = { data: MkbPreset.DEFAULT_PRESET
name: t("default"), }, [, id2] = await this.add(table, preset);
data: MkbPreset.DEFAULT_PRESET return preset.id = id2, setPref("mkb_default_preset_id", id2), {
}; [id2]: preset
return new Promise((resolve) => { };
this.add(table, preset).then(([table2, id2]) => {
preset.id = id2, setPref("mkb_default_preset_id", id2), resolve({ [id2]: preset });
});
});
});
} }
} }
var PointerToMouseButton = { var PointerToMouseButton = {
@ -3457,7 +3456,7 @@ class MkbRemapper {
static instance; static instance;
static getInstance = () => MkbRemapper.instance ?? (MkbRemapper.instance = new MkbRemapper); static getInstance = () => MkbRemapper.instance ?? (MkbRemapper.instance = new MkbRemapper);
LOG_TAG = "MkbRemapper"; LOG_TAG = "MkbRemapper";
STATE = { states = {
currentPresetId: 0, currentPresetId: 0,
presets: {}, presets: {},
editingPresetData: null, editingPresetData: null,
@ -3471,7 +3470,7 @@ class MkbRemapper {
allMouseElements = {}; allMouseElements = {};
bindingDialog; bindingDialog;
constructor() { constructor() {
BxLogger.info(this.LOG_TAG, "constructor()"), this.STATE.currentPresetId = getPref("mkb_default_preset_id"), this.bindingDialog = new Dialog({ BxLogger.info(this.LOG_TAG, "constructor()"), this.states.currentPresetId = getPref("mkb_default_preset_id"), this.bindingDialog = new Dialog({
className: "bx-binding-dialog", className: "bx-binding-dialog",
content: CE("div", {}, CE("p", {}, t("press-to-bind")), CE("i", {}, t("press-esc-to-cancel"))), content: CE("div", {}, CE("p", {}, t("press-to-bind")), CE("i", {}, t("press-esc-to-cancel"))),
hideCloseButton: !0 hideCloseButton: !0
@ -3485,11 +3484,11 @@ class MkbRemapper {
if ($elm.dataset.keyCode === key.code) return; if ($elm.dataset.keyCode === key.code) return;
for (let $otherElm of this.allKeyElements) for (let $otherElm of this.allKeyElements)
if ($otherElm.dataset.keyCode === key.code) this.unbindKey($otherElm); if ($otherElm.dataset.keyCode === key.code) this.unbindKey($otherElm);
this.STATE.editingPresetData.mapping[buttonIndex][keySlot] = key.code, $elm.textContent = key.name, $elm.dataset.keyCode = key.code; this.states.editingPresetData.mapping[buttonIndex][keySlot] = key.code, $elm.textContent = key.name, $elm.dataset.keyCode = key.code;
}; };
unbindKey = ($elm) => { unbindKey = ($elm) => {
let buttonIndex = parseInt($elm.dataset.buttonIndex), keySlot = parseInt($elm.dataset.keySlot); let buttonIndex = parseInt($elm.dataset.buttonIndex), keySlot = parseInt($elm.dataset.keySlot);
this.STATE.editingPresetData.mapping[buttonIndex][keySlot] = null, $elm.textContent = "", delete $elm.dataset.keyCode; this.states.editingPresetData.mapping[buttonIndex][keySlot] = null, $elm.textContent = "", delete $elm.dataset.keyCode;
}; };
onWheel = (e) => { onWheel = (e) => {
e.preventDefault(), this.clearEventListeners(), this.bindKey(this.$currentBindingKey, KeyHelper.getKeyFromEvent(e)), window.setTimeout(() => this.bindingDialog.hide(), 200); e.preventDefault(), this.clearEventListeners(), this.bindKey(this.$currentBindingKey, KeyHelper.getKeyFromEvent(e)), window.setTimeout(() => this.bindingDialog.hide(), 200);
@ -3502,21 +3501,26 @@ class MkbRemapper {
window.setTimeout(() => this.bindingDialog.hide(), 200); window.setTimeout(() => this.bindingDialog.hide(), 200);
}; };
onBindingKey = (e) => { onBindingKey = (e) => {
if (!this.STATE.isEditing || e.button !== 0) return; if (!this.states.isEditing || e.button !== 0) return;
console.log(e), this.$currentBindingKey = e.target, window.addEventListener("keydown", this.onKeyDown), window.addEventListener("mousedown", this.onMouseDown), window.addEventListener("wheel", this.onWheel), this.bindingDialog.show({ title: this.$currentBindingKey.dataset.prompt }); console.log(e), this.$currentBindingKey = e.target, window.addEventListener("keydown", this.onKeyDown), window.addEventListener("mousedown", this.onMouseDown), window.addEventListener("wheel", this.onWheel), this.bindingDialog.show({ title: this.$currentBindingKey.dataset.prompt });
}; };
onContextMenu = (e) => { onContextMenu = (e) => {
if (e.preventDefault(), !this.STATE.isEditing) return; if (e.preventDefault(), !this.states.isEditing) return;
this.unbindKey(e.target); this.unbindKey(e.target);
}; };
getPreset = (presetId) => { getPreset = (presetId) => {
return this.STATE.presets[presetId]; return this.states.presets[presetId];
}; };
getCurrentPreset = () => { getCurrentPreset = () => {
return this.getPreset(this.STATE.currentPresetId); let preset = this.getPreset(this.states.currentPresetId);
if (!preset) {
let firstPresetId = parseInt(Object.keys(this.states.presets)[0]);
preset = this.states.presets[firstPresetId], this.states.currentPresetId = firstPresetId, setPref("mkb_default_preset_id", firstPresetId);
}
return preset;
}; };
switchPreset = (presetId) => { switchPreset = (presetId) => {
this.STATE.currentPresetId = presetId; this.states.currentPresetId = presetId;
let presetData = this.getCurrentPreset().data; let presetData = this.getCurrentPreset().data;
for (let $elm of this.allKeyElements) { for (let $elm of this.allKeyElements) {
let buttonIndex = parseInt($elm.dataset.buttonIndex), keySlot = parseInt($elm.dataset.keySlot), buttonKeys = presetData.mapping[buttonIndex]; let buttonIndex = parseInt($elm.dataset.buttonIndex), keySlot = parseInt($elm.dataset.keySlot), buttonKeys = presetData.mapping[buttonIndex];
@ -3529,35 +3533,33 @@ class MkbRemapper {
if (typeof value === "undefined") value = MkbPreset.MOUSE_SETTINGS[key].default; if (typeof value === "undefined") value = MkbPreset.MOUSE_SETTINGS[key].default;
"setValue" in $elm && $elm.setValue(value); "setValue" in $elm && $elm.setValue(value);
} }
let activated = getPref("mkb_default_preset_id") === this.STATE.currentPresetId; let activated = getPref("mkb_default_preset_id") === this.states.currentPresetId;
this.$activateButton.disabled = activated, this.$activateButton.querySelector("span").textContent = activated ? t("activated") : t("activate"); this.$activateButton.disabled = activated, this.$activateButton.querySelector("span").textContent = activated ? t("activated") : t("activate");
}; };
refresh() { async refresh() {
while (this.$presetsSelect.firstChild) removeChildElements(this.$presetsSelect);
this.$presetsSelect.removeChild(this.$presetsSelect.firstChild); let presets = await MkbPresetsDb.getInstance().getPresets();
MkbPresetsDb.getInstance().getPresets().then((presets) => { this.states.presets = presets;
this.STATE.presets = presets; let fragment = document.createDocumentFragment(), defaultPresetId;
let $fragment = document.createDocumentFragment(), defaultPresetId; if (this.states.currentPresetId === 0) this.states.currentPresetId = parseInt(Object.keys(presets)[0]), defaultPresetId = this.states.currentPresetId, setPref("mkb_default_preset_id", defaultPresetId), EmulatedMkbHandler.getInstance().refreshPresetData();
if (this.STATE.currentPresetId === 0) this.STATE.currentPresetId = parseInt(Object.keys(presets)[0]), defaultPresetId = this.STATE.currentPresetId, setPref("mkb_default_preset_id", defaultPresetId), EmulatedMkbHandler.getInstance().refreshPresetData(); else defaultPresetId = getPref("mkb_default_preset_id");
else defaultPresetId = getPref("mkb_default_preset_id"); for (let id2 in presets) {
for (let id2 in presets) { let name = presets[id2].name;
let name = presets[id2].name; if (id2 === defaultPresetId) name = "🎮 " + name;
if (id2 === defaultPresetId) name = "🎮 " + name; let $options = CE("option", { value: id2 }, name);
let $options = CE("option", { value: id2 }, name); $options.selected = parseInt(id2) === this.states.currentPresetId, fragment.appendChild($options);
$options.selected = parseInt(id2) === this.STATE.currentPresetId, $fragment.appendChild($options); }
} this.$presetsSelect.appendChild(fragment);
this.$presetsSelect.appendChild($fragment); let activated = defaultPresetId === this.states.currentPresetId;
let activated = defaultPresetId === this.STATE.currentPresetId; this.$activateButton.disabled = activated, this.$activateButton.querySelector("span").textContent = activated ? t("activated") : t("activate"), !this.states.isEditing && this.switchPreset(this.states.currentPresetId);
this.$activateButton.disabled = activated, this.$activateButton.querySelector("span").textContent = activated ? t("activated") : t("activate"), !this.STATE.isEditing && this.switchPreset(this.STATE.currentPresetId);
});
} }
toggleEditing = (force) => { toggleEditing = (force) => {
if (this.STATE.isEditing = typeof force !== "undefined" ? force : !this.STATE.isEditing, this.$wrapper.classList.toggle("bx-editing", this.STATE.isEditing), this.STATE.isEditing) this.STATE.editingPresetData = deepClone(this.getCurrentPreset().data); if (this.states.isEditing = typeof force !== "undefined" ? force : !this.states.isEditing, this.$wrapper.classList.toggle("bx-editing", this.states.isEditing), this.states.isEditing) this.states.editingPresetData = deepClone(this.getCurrentPreset().data);
else this.STATE.editingPresetData = null; else this.states.editingPresetData = null;
let childElements = this.$wrapper.querySelectorAll("select, button, input"); let childElements = this.$wrapper.querySelectorAll("select, button, input");
for (let $elm of Array.from(childElements)) { for (let $elm of Array.from(childElements)) {
if ($elm.parentElement.parentElement.classList.contains("bx-mkb-action-buttons")) continue; if ($elm.parentElement.parentElement.classList.contains("bx-mkb-action-buttons")) continue;
let disable = !this.STATE.isEditing; let disable = !this.states.isEditing;
if ($elm.parentElement.classList.contains("bx-mkb-preset-tools")) disable = !disable; if ($elm.parentElement.classList.contains("bx-mkb-preset-tools")) disable = !disable;
$elm.disabled = disable; $elm.disabled = disable;
} }
@ -3577,10 +3579,10 @@ class MkbRemapper {
title: t("rename"), title: t("rename"),
icon: BxIcon.CURSOR_TEXT, icon: BxIcon.CURSOR_TEXT,
tabIndex: -1, tabIndex: -1,
onClick: (e) => { onClick: async () => {
let preset = this.getCurrentPreset(), newName = promptNewName(preset.name); let preset = this.getCurrentPreset(), newName = promptNewName(preset.name);
if (!newName || newName === preset.name) return; if (!newName || newName === preset.name) return;
preset.name = newName, MkbPresetsDb.getInstance().updatePreset(preset).then((id2) => this.refresh()); preset.name = newName, await MkbPresetsDb.getInstance().updatePreset(preset), await this.refresh();
} }
}), createButton({ }), createButton({
icon: BxIcon.NEW, icon: BxIcon.NEW,
@ -3590,7 +3592,7 @@ class MkbRemapper {
let newName = promptNewName(""); let newName = promptNewName("");
if (!newName) return; if (!newName) return;
MkbPresetsDb.getInstance().newPreset(newName, MkbPreset.DEFAULT_PRESET).then((id2) => { MkbPresetsDb.getInstance().newPreset(newName, MkbPreset.DEFAULT_PRESET).then((id2) => {
this.STATE.currentPresetId = id2, this.refresh(); this.states.currentPresetId = id2, this.refresh();
}); });
} }
}), createButton({ }), createButton({
@ -3601,7 +3603,7 @@ class MkbRemapper {
let preset = this.getCurrentPreset(), newName = promptNewName(`${preset.name} (2)`); let preset = this.getCurrentPreset(), newName = promptNewName(`${preset.name} (2)`);
if (!newName) return; if (!newName) return;
MkbPresetsDb.getInstance().newPreset(newName, preset.data).then((id2) => { MkbPresetsDb.getInstance().newPreset(newName, preset.data).then((id2) => {
this.STATE.currentPresetId = id2, this.refresh(); this.states.currentPresetId = id2, this.refresh();
}); });
} }
}), createButton({ }), createButton({
@ -3611,8 +3613,8 @@ class MkbRemapper {
tabIndex: -1, tabIndex: -1,
onClick: (e) => { onClick: (e) => {
if (!confirm(t("confirm-delete-preset"))) return; if (!confirm(t("confirm-delete-preset"))) return;
MkbPresetsDb.getInstance().deletePreset(this.STATE.currentPresetId).then((id2) => { MkbPresetsDb.getInstance().deletePreset(this.states.currentPresetId).then((id2) => {
this.STATE.currentPresetId = 0, this.refresh(); this.states.currentPresetId = 0, this.refresh();
}); });
} }
})); }));
@ -3634,7 +3636,7 @@ class MkbRemapper {
let $mouseSettings = document.createDocumentFragment(); let $mouseSettings = document.createDocumentFragment();
for (let key in MkbPreset.MOUSE_SETTINGS) { for (let key in MkbPreset.MOUSE_SETTINGS) {
let setting = MkbPreset.MOUSE_SETTINGS[key], value = setting.default, $elm, onChange = (e, value2) => { let setting = MkbPreset.MOUSE_SETTINGS[key], value = setting.default, $elm, onChange = (e, value2) => {
this.STATE.editingPresetData.mouse[key] = value2; this.states.editingPresetData.mouse[key] = value2;
}, $row = CE("label", { }, $row = CE("label", {
class: "bx-settings-row", class: "bx-settings-row",
for: `bx_setting_${key}` for: `bx_setting_${key}`
@ -3651,14 +3653,14 @@ class MkbRemapper {
style: 1, style: 1,
tabIndex: -1, tabIndex: -1,
onClick: (e) => { onClick: (e) => {
setPref("mkb_default_preset_id", this.STATE.currentPresetId), EmulatedMkbHandler.getInstance().refreshPresetData(), this.refresh(); setPref("mkb_default_preset_id", this.states.currentPresetId), EmulatedMkbHandler.getInstance().refreshPresetData(), this.refresh();
} }
})), CE("div", {}, createButton({ })), CE("div", {}, createButton({
label: t("cancel"), label: t("cancel"),
style: 4, style: 4,
tabIndex: -1, tabIndex: -1,
onClick: (e) => { onClick: (e) => {
this.switchPreset(this.STATE.currentPresetId), this.toggleEditing(!1); this.switchPreset(this.states.currentPresetId), this.toggleEditing(!1);
} }
}), createButton({ }), createButton({
label: t("save"), label: t("save"),
@ -3666,7 +3668,7 @@ class MkbRemapper {
tabIndex: -1, tabIndex: -1,
onClick: (e) => { onClick: (e) => {
let updatedPreset = deepClone(this.getCurrentPreset()); let updatedPreset = deepClone(this.getCurrentPreset());
updatedPreset.data = this.STATE.editingPresetData, MkbPresetsDb.getInstance().updatePreset(updatedPreset).then((id2) => { updatedPreset.data = this.states.editingPresetData, MkbPresetsDb.getInstance().updatePreset(updatedPreset).then((id2) => {
if (id2 === getPref("mkb_default_preset_id")) EmulatedMkbHandler.getInstance().refreshPresetData(); if (id2 === getPref("mkb_default_preset_id")) EmulatedMkbHandler.getInstance().refreshPresetData();
this.toggleEditing(!1), this.refresh(); this.toggleEditing(!1), this.refresh();
}); });