diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/utils.js b/packages/node_modules/@node-red/editor-client/src/js/ui/utils.js index cfc7f65de..1546f2eef 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/utils.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/utils.js @@ -128,10 +128,25 @@ RED.utils = (function() { function formatString(str) { return str.replace(/\r?\n/g,"↵").replace(/\t/g,"→"); } + function sanitize(m) { return m.replace(/&/g,"&").replace(//g,">"); } + /** + * Truncates a string to a specified maximum length, adding ellipsis + * if truncated. + * + * @param {string} str The string to be truncated. + * @param {number} [maxLength = 120] The maximum length of the truncated + * string. Default `120`. + * @returns {string} The truncated string with ellipsis if it exceeds the + * maximum length. + */ + function truncateString(str, maxLength = 120) { + return str.length > maxLength ? str.slice(0, maxLength) + "..." : str; + } + function buildMessageSummaryValue(value) { var result; if (Array.isArray(value)) { @@ -376,6 +391,9 @@ RED.utils = (function() { } } + // Max string length before truncating + const MAX_STRING_LENGTH = 80; + /** * Create a DOM element representation of obj - as used by Debug sidebar etc * @@ -469,7 +487,7 @@ RED.utils = (function() { } else if (typeHint === "internal" || (obj.__enc__ && obj.type === 'internal')) { e = $('').text("[internal]").appendTo(entryObj); } else if (typeof obj === 'string') { - if (/[\t\n\r]/.test(obj)) { + if (/[\t\n\r]/.test(obj) || obj.length > MAX_STRING_LENGTH) { element.addClass('collapsed'); $(' ').prependTo(header); makeExpandable(header, function() { @@ -478,7 +496,7 @@ RED.utils = (function() { $('
').text(obj).appendTo(row);
                 },function(state) {if (ontoggle) { ontoggle(path,state);}}, checkExpanded(strippedKey,expandPaths));
             }
-            e = $('').html('"'+formatString(sanitize(obj))+'"').appendTo(entryObj);
+            e = $('').html('"'+formatString(sanitize(truncateString(obj, MAX_STRING_LENGTH)))+'"').appendTo(entryObj);
             if (/^#[0-9a-f]{6}$/i.test(obj)) {
                 $('').css('backgroundColor',obj).appendTo(e);
             }
@@ -1503,6 +1521,7 @@ RED.utils = (function() {
         parseContextKey: parseContextKey,
         createIconElement: createIconElement,
         sanitize: sanitize,
+        truncateString: truncateString,
         renderMarkdown: renderMarkdown,
         createNodeIcon: createNodeIcon,
         getDarkerColor: getDarkerColor,