From 566a70a9eaa4ed7f600ad4cebbcb3e95e96fc279 Mon Sep 17 00:00:00 2001 From: quoteee <45695032+JulianHayward@users.noreply.github.com> Date: Sat, 25 Dec 2021 14:15:59 +0100 Subject: [PATCH] highlight separators - bracket,squarebracket,comma --- src/json-viewer.css | 4 ++++ src/json-viewer.js | 37 ++++++++++++++++++++++++++++++------- 2 files changed, 34 insertions(+), 7 deletions(-) diff --git a/src/json-viewer.css b/src/json-viewer.css index f5f2074..7e7226e 100644 --- a/src/json-viewer.css +++ b/src/json-viewer.css @@ -3,6 +3,10 @@ padding-left: 20px; } +span.jsonseparators { + color: #77cee4ec; +} + .json-viewer ul { list-style-type: none; margin: 0; diff --git a/src/json-viewer.js b/src/json-viewer.js index d8718cb..7d0b7ba 100644 --- a/src/json-viewer.js +++ b/src/json-viewer.js @@ -1,7 +1,7 @@ /** * JSONViewer - by Roman Makudera 2016 (c) MIT licence. */ -var JSONViewer = (function(document) { + var JSONViewer = (function(document) { var Object_prototype_toString = ({}).toString; var DatePrototypeAsString = Object_prototype_toString.call(new Date); @@ -60,7 +60,7 @@ var JSONViewer = (function(document) { // root level var rootCount = _createItemsCount(items.length); // hide/show - var rootLink = _createLink(isArray ? "[" : "{"); + var rootLink = _createLink(isArray ? "[" : "{"); if (items.length) { rootLink.addEventListener("click", function() { @@ -109,11 +109,21 @@ var JSONViewer = (function(document) { // empty if (!itemLen) { - li.appendChild(document.createTextNode(key + ": " + (itemIsArray ? "[]" : "{}"))); + let span = document.createElement('span'); + span.classList.add('list-link'); + let emptyArrayOrHt = document.createTextNode(key + ": "); + span.appendChild(emptyArrayOrHt); + li.appendChild(span); + + let spanx = document.createElement('span'); + spanx.classList.add('jsonseparators'); + let emptyArrayOrHtx = document.createTextNode(itemIsArray ? "[]" : "{}"); + spanx.appendChild(emptyArrayOrHtx); + li.appendChild(spanx); } else { // 1+ items - var itemTitle = (typeof key === "string" ? key + ": " : "") + (itemIsArray ? "[" : "{"); + var itemTitle = (typeof key === "string" ? key + ": " : "") + (itemIsArray ? "[" : "{"); var itemLink = _createLink(itemTitle); var itemsCount = _createItemsCount(itemLen); @@ -127,7 +137,12 @@ var JSONViewer = (function(document) { } walkJSONTree(li, item, maxLvl, colAt, lvl + 1); - li.appendChild(document.createTextNode(itemIsArray ? "]" : "}")); + + let endArrayOrHtElement = document.createElement('span'); + endArrayOrHtElement.classList.add('jsonseparators'); + let endArrayOrHt = document.createTextNode(itemIsArray ? "]" : "}"); + endArrayOrHtElement.appendChild(endArrayOrHt); + li.appendChild(endArrayOrHtElement); var list = li.querySelector("ul"); var itemLinkCb = function() { @@ -159,7 +174,11 @@ var JSONViewer = (function(document) { // add comma to the end if (ind < len) { - li.appendChild(document.createTextNode(",")); + let commaElement = document.createElement('span'); + commaElement.classList.add('jsonseparators'); + let comma = document.createTextNode(","); + commaElement.appendChild(comma); + li.appendChild(commaElement); } ulList.appendChild(li); @@ -184,7 +203,11 @@ var JSONViewer = (function(document) { } // root cover - outputParent.appendChild(document.createTextNode(isArray ? "]" : "}")); + let veryEndArrayOrHtElement = document.createElement('span'); + veryEndArrayOrHtElement.classList.add('jsonseparators'); + let veryEndArrayOrHt = document.createTextNode(isArray ? "]" : "}"); + veryEndArrayOrHtElement.appendChild(veryEndArrayOrHt); + outputParent.appendChild(veryEndArrayOrHtElement); // collapse if (isCollapse) {