From 5ac181fdf20edf720b7a741067c1256fda3525d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20Kr=C3=BChlmann?= Date: Fri, 23 Jan 2026 00:53:04 +0100 Subject: [PATCH] Clean up zindex --- src/main/resources/static/js/admin/console.js | 6 ++++-- src/main/resources/static/js/broadcast/renderer.js | 8 +++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/main/resources/static/js/admin/console.js b/src/main/resources/static/js/admin/console.js index 822693a..e41c729 100644 --- a/src/main/resources/static/js/admin/console.js +++ b/src/main/resources/static/js/admin/console.js @@ -688,12 +688,14 @@ export function createAdminConsole({ if (!isAudio && Number.isFinite(targetOrder)) { if (isScript) { const currentOrder = getScriptLayerOrder().filter((id) => id !== assetId); - const insertIndex = Math.max(0, currentOrder.length - Math.round(targetOrder)); + const totalCount = currentOrder.length + 1; + const insertIndex = Math.max(0, Math.min(currentOrder.length, totalCount - Math.round(targetOrder))); currentOrder.splice(insertIndex, 0, assetId); scriptLayerOrder = currentOrder; } else { const currentOrder = getLayerOrder().filter((id) => id !== assetId); - const insertIndex = Math.max(0, currentOrder.length - Math.round(targetOrder)); + const totalCount = currentOrder.length + 1; + const insertIndex = Math.max(0, Math.min(currentOrder.length, totalCount - Math.round(targetOrder))); currentOrder.splice(insertIndex, 0, assetId); layerOrder = currentOrder; } diff --git a/src/main/resources/static/js/broadcast/renderer.js b/src/main/resources/static/js/broadcast/renderer.js index baa6ede..b421e55 100644 --- a/src/main/resources/static/js/broadcast/renderer.js +++ b/src/main/resources/static/js/broadcast/renderer.js @@ -291,17 +291,19 @@ export class BroadcastRenderer { this.hideAssetWithTransition(merged); return; } - const targetOrder = Number.isFinite(patch.order) ? patch.order : null; + const targetOrder = Number.isFinite(sanitizedPatch.order) ? sanitizedPatch.order : null; if (Number.isFinite(targetOrder)) { if (isScript) { const currentOrder = getScriptLayerOrder(this.state).filter((id) => id !== assetId); - const insertIndex = Math.max(0, currentOrder.length - Math.round(targetOrder)); + const totalCount = currentOrder.length + 1; + const insertIndex = Math.max(0, Math.min(currentOrder.length, totalCount - Math.round(targetOrder))); currentOrder.splice(insertIndex, 0, assetId); this.state.scriptLayerOrder = currentOrder; this.applyScriptCanvasOrder(); } else if (isVisual) { const currentOrder = getLayerOrder(this.state).filter((id) => id !== assetId); - const insertIndex = Math.max(0, currentOrder.length - Math.round(targetOrder)); + const totalCount = currentOrder.length + 1; + const insertIndex = Math.max(0, Math.min(currentOrder.length, totalCount - Math.round(targetOrder))); currentOrder.splice(insertIndex, 0, assetId); this.state.layerOrder = currentOrder; }