поправлен маппинг с отсортированными элементами в инпутах

This commit is contained in:
2026-08-20 11:34:03 +03:00
parent 38aa23cebe
commit 3f2d5caa4a
4 changed files with 35 additions and 13 deletions

View File

@@ -1457,7 +1457,7 @@
.hockey-map-target-hint{flex:0 0 auto;display:grid;gap:2px;margin:10px 10px 0;padding:9px 10px;border:1px dashed #3a4b61;border-radius:10px;background:#101923}.hockey-map-target-hint.is-active{border-style:solid;border-color:#39bfa2;background:rgba(72,223,189,.07)}.hockey-map-target-hint span{font-size:9px;font-weight:900;letter-spacing:.08em;color:#7f93aa}.hockey-map-target-hint strong{font-size:12px;color:#e6f0fb}.hockey-map-target-hint small{font-size:10px;color:#7f93aa}
.hockey-map-data-search{flex:0 0 auto;display:flex;align-items:center;gap:7px;margin:10px;padding:0 10px;height:38px;border:1px solid #33475f;border-radius:9px;background:#0b141f;color:#48dfbd}.hockey-map-data-search input{width:100%;min-width:0;border:0;outline:0;background:transparent;color:#eaf4ff;font-size:12px}.hockey-map-data-search input::placeholder{color:#667d96}
.hockey-map-data-scroll,.hockey-map-vmix-scroll{min-height:0;flex:1;overflow:auto;padding:0 9px 10px}
.hockey-map-data-group{border-bottom:1px solid #24354a}.hockey-map-data-group summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 4px;color:#b9c8d9;font-size:11px;font-weight:900;text-transform:uppercase;letter-spacing:.04em}.hockey-map-data-group summary::-webkit-details-marker{display:none}.hockey-map-data-group summary b{min-width:23px;padding:3px 6px;border-radius:999px;background:#1d3047;color:#8ea6c0;font-size:9px;text-align:center}.hockey-map-data-group>div{display:grid;gap:6px;padding:0 0 9px}
.hockey-map-data-group{border-bottom:1px solid #24354a}.hockey-map-data-group summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:8px;padding:10px 4px;color:#b9c8d9;font-size:11px;font-weight:900;text-transform:uppercase;letter-spacing:.04em}.hockey-map-data-group summary::-webkit-details-marker{display:none}.hockey-map-data-group summary>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hockey-map-data-group summary b{margin-left:auto;min-width:23px;padding:3px 6px;border-radius:999px;background:#1d3047;color:#8ea6c0;font-size:9px;text-align:center;flex:0 0 auto}.hockey-map-data-group summary::after{width:14px;flex:0 0 14px;text-align:center}.hockey-map-data-group>div{display:grid;gap:6px;padding:0 0 9px}
.hockey-map-data-item{width:100%;display:grid;gap:3px;text-align:left;padding:8px 9px;border:1px solid #293c52;border-radius:9px;background:#121d2a;color:#dce8f5;cursor:pointer}.hockey-map-data-item:hover,.hockey-map-data-item.is-selected{border-color:#48dfbd;background:#142a2b}.hockey-map-data-main{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px}.hockey-map-data-main strong{font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hockey-map-data-main em{max-width:150px;font-style:normal;font-size:11px;font-weight:900;color:#48dfbd;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hockey-map-data-item small{font:9px/1.2 Consolas,monospace;color:#667b93;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hockey-map-vmix-browser>header>div:first-child{display:grid;gap:4px;min-width:0;flex:1}.hockey-map-vmix-browser>header select{width:min(540px,100%);min-height:34px;border:1px solid #39495f;border-radius:8px;background:#0d1520;color:#edf5ff;padding:5px 8px;font-weight:750}.hockey-map-input-progress{display:flex;align-items:baseline;gap:4px;white-space:nowrap}.hockey-map-input-progress b{font-size:20px;color:#48dfbd}.hockey-map-input-progress span{font-size:10px;color:#8094aa}
.hockey-map-vmix-scroll{display:grid;align-content:start;gap:8px;padding:10px}

View File

@@ -1338,16 +1338,10 @@
}
function mappingInventoryInputs(profile) {
const inputs = Array.isArray(profile?.inventory?.inputs) ? [...profile.inventory.inputs] : [];
const numberValue = (item) => {
const match = String(item?.number ?? "").match(/\d+/);
return match ? Number(match[0]) : Number.MAX_SAFE_INTEGER;
};
return inputs.sort((a, b) => {
const diff = numberValue(a) - numberValue(b);
if (diff) return diff;
return String(a?.title || a?.key || "").localeCompare(String(b?.title || b?.key || ""), "ru", { numeric: true, sensitivity: "base" });
});
// Preserve the exact Input sequence received from the vMix API via Agent.
// The array order is presentation-only: stable Mapping identity still uses
// key -> unique title -> number, so changing Input positions does not break links.
return Array.isArray(profile?.inventory?.inputs) ? [...profile.inventory.inputs] : [];
}
function mappingInputByKey(profile, key, title = "") {