From bccde07990ad3bbdd61ab74207013775b3422279 Mon Sep 17 00:00:00 2001 From: Alex Karo Date: Thu, 11 Jul 2019 16:41:03 +0300 Subject: [PATCH] fix: provide maxCollapseLevel option via argument --- src/utils/jsonToHtml.ts | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/src/utils/jsonToHtml.ts b/src/utils/jsonToHtml.ts index 7346e62e..e0eadc9e 100644 --- a/src/utils/jsonToHtml.ts +++ b/src/utils/jsonToHtml.ts @@ -1,12 +1,10 @@ let level = 1; -let collapseLevel; export function jsonToHTML(json, maxCollapseLevel) { level = 1; - collapseLevel = maxCollapseLevel; let output = ''; output += '
'; - output += valueToHTML(json); + output += valueToHTML(json, maxCollapseLevel); output += '
'; return output; } @@ -34,20 +32,20 @@ function punctuation(val) { return '' + val + ''; } -function valueToHTML(value) { +function valueToHTML(value, maxCollapseLevel: number) { const valueType = typeof value; let output = ''; if (value === undefined || value === null) { output += decorateWithSpan('null', 'token keyword'); } else if (value && value.constructor === Array) { level++; - output += arrayToHTML(value); + output += arrayToHTML(value, maxCollapseLevel); level--; } else if (value && value.constructor === Date) { output += decorateWithSpan('"' + value.toISOString() + '"', 'token string'); } else if (valueType === 'object') { level++; - output += objectToHTML(value); + output += objectToHTML(value, maxCollapseLevel); level--; } else if (valueType === 'number') { output += decorateWithSpan(value, 'token number'); @@ -71,8 +69,8 @@ function valueToHTML(value) { return output; } -function arrayToHTML(json) { - const collapsed = level > collapseLevel ? 'collapsed' : ''; +function arrayToHTML(json, maxCollapseLevel: number) { + const collapsed = level > maxCollapseLevel ? 'collapsed' : ''; let output = `
${punctuation( '[', )}