From 7dca55fdb8187ea10e70168ab774e0b7a6e6beae Mon Sep 17 00:00:00 2001 From: Dimitrie Hoekstra Date: Mon, 29 Sep 2025 20:04:26 +0200 Subject: [PATCH] Add dynamic minimum zoom recalculation on viewport resize - Recalculate minimum zoom when window resizes to ensure canvas fits properly - Automatically adjust zoom if current level falls below new minimum after resize - Ensures canvas boundaries remain appropriate for different viewport sizes --- .../editor-client/src/js/ui/view-zoom-constants.js | 2 +- .../@node-red/editor-client/src/js/ui/view.js | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/view-zoom-constants.js b/packages/node_modules/@node-red/editor-client/src/js/ui/view-zoom-constants.js index ff32bb92d..92e0f526c 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/view-zoom-constants.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/view-zoom-constants.js @@ -3,7 +3,7 @@ */ RED.view.zoomConstants = { // Zoom limits - MIN_ZOOM: 0.15, // Default minimum, will be dynamically calculated to fit canvas + MIN_ZOOM: 0.05, // Default minimum, will be dynamically calculated to fit canvas MAX_ZOOM: 2.0, // Zoom step for keyboard/button controls diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/view.js b/packages/node_modules/@node-red/editor-client/src/js/ui/view.js index e61375847..bbe0438c7 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/view.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/view.js @@ -640,6 +640,16 @@ RED.view = (function() { spacebarPressed = false; } }) + + // Recalculate minimum zoom when window resizes + $(window).on("resize.red-ui-view", function() { + // Recalculate minimum zoom to ensure canvas fits in viewport + var newMinZoom = calculateMinZoom(); + // If current zoom is below new minimum, adjust it + if (scaleFactor < newMinZoom) { + zoomView(newMinZoom); + } + }) // Workspace Background eventLayer.append("svg:rect")