From 29356ce36c9d6edf4a0b605b2b63be1c95fcaee3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=B6ran=20Sander?= Date: Tue, 27 Aug 2024 14:44:30 +0000 Subject: [PATCH] feat(config): Visualise config file in Butler hosted web page Implements #1199 --- src/app.js | 1 - src/config/config-gen-api-docs.yaml | 14 +- src/config/production_template.yaml | 14 +- src/lib/assert/assert_config_file.js | 42 +- src/lib/config_obfuscate.js | 4 + static/configvis/index.html | 5 +- static/configvis/jsontree.js | 2019 ++++++++++++++++++-------- static/configvis/jsontree.js.css | 552 ++++--- static/configvis/jsontree.js.css.map | 2 +- static/configvis/jsontree.js.map | 2 +- 10 files changed, 1778 insertions(+), 877 deletions(-) diff --git a/src/app.js b/src/app.js index 5c19868d..620973eb 100644 --- a/src/app.js +++ b/src/app.js @@ -343,7 +343,6 @@ async function build(opts = {}) { const dirContents = fs.readdirSync(globals.appBasePath); globals.logger.verbose(`CONFIG VIS: Directory contents of "${globals.appBasePath}": ${dirContents}`); - const htmlDir = path.resolve(globals.appBasePath, 'static/configvis'); globals.logger.info(`CONFIG VIS: Serving static files from ${htmlDir}`); diff --git a/src/config/config-gen-api-docs.yaml b/src/config/config-gen-api-docs.yaml index d86e43b7..c430c173 100644 --- a/src/config/config-gen-api-docs.yaml +++ b/src/config/config-gen-api-docs.yaml @@ -12,6 +12,13 @@ Butler: # More info on whata data is collected: https://butler.ptarmiganlabs.com/docs/about/telemetry/ # Please consider leaving this at true - it really helps future development of Butler! + # Should Butler start a web server that serves an obfuscated view of the Butler config file? + configVisualisation: + enable: false + host: localhost # Hostname or IP address where the web server will listen. Should be localhost in most cases. + port: 3100 # Port where the web server will listen. Change if port 3100 is already in use. + obfuscate: true # Should the config file shown in the web UI be obfuscated? + # Heartbeats can be used to send "I'm alive" messages to any other tool, e.g. an infrastructure monitoring tool heartbeat: enable: false @@ -805,13 +812,6 @@ Butler: webhook: enable: false - # Should Butler start a web server that serves an obfuscated view of the Butler config file? - configVisualisation: - enable: false - host: localhost # Hostname or IP address where the web server will listen. Should be localhost in most cases. - port: 3100 # Port where the web server will listen. Change if port 3100 is already in use. - obfuscate: true # Should the config file shown in the web UI be obfuscated? - # Certificates to use when connecting to Sense. Get these from the Certificate Export in QMC. cert: clientCert: ... diff --git a/src/config/production_template.yaml b/src/config/production_template.yaml index bf816a63..7a8a7e3d 100644 --- a/src/config/production_template.yaml +++ b/src/config/production_template.yaml @@ -25,6 +25,13 @@ Butler: # More info on whata data is collected: https://butler.ptarmiganlabs.com/docs/about/telemetry/ # Please consider leaving this at true - it really helps future development of Butler! + # Should Butler start a web server that serves an obfuscated view of the Butler config file? + configVisualisation: + enable: true + host: localhost # Hostname or IP address where the web server will listen. Should be localhost in most cases. + port: 3100 # Port where the web server will listen. Change if port 3100 is already in use. + obfuscate: true # Should the config file shown in the web UI be obfuscated? + # Heartbeats can be used to send "I'm alive" messages to any other tool, e.g. an infrastructure monitoring tool heartbeat: enable: false @@ -914,13 +921,6 @@ Butler: webhook: # Send service alerts as outbound webhooks/http calls enable: true - # Should Butler start a web server that serves an obfuscated view of the Butler config file? - configVisualisation: - enable: true - host: localhost # Hostname or IP address where the web server will listen. Should be localhost in most cases. - port: 3100 # Port where the web server will listen. Change if port 3100 is already in use. - obfuscate: true # Should the config file shown in the web UI be obfuscated? - # Certificates to use when connecting to Sense. Get these from the Certificate Export in QMC. cert: clientCert: diff --git a/src/lib/assert/assert_config_file.js b/src/lib/assert/assert_config_file.js index 487f6a51..84270834 100644 --- a/src/lib/assert/assert_config_file.js +++ b/src/lib/assert/assert_config_file.js @@ -489,6 +489,27 @@ export const configFileStructureAssert = async (config, logger) => { configFileCorrect = false; } + // Config visualisation setttings + if (!config.has('Butler.configVisualisation.enable')) { + logger.error('ASSERT CONFIG: Missing config file entry "Butler.configVisualisation.enable"'); + configFileCorrect = false; + } + + if (!config.has('Butler.configVisualisation.host')) { + logger.error('ASSERT CONFIG: Missing config file entry "Butler.configVisualisation.host"'); + configFileCorrect = false; + } + + if (!config.has('Butler.configVisualisation.port')) { + logger.error('ASSERT CONFIG: Missing config file entry "Butler.configVisualisation.port"'); + configFileCorrect = false; + } + + if (!config.has('Butler.configVisualisation.obfuscate')) { + logger.error('ASSERT CONFIG: Missing config file entry "Butler.configVisualisation.obfuscate"'); + configFileCorrect = false; + } + if (!config.has('Butler.heartbeat.enable')) { logger.error('ASSERT CONFIG: Missing config file entry "Butler.heartbeat.enable"'); configFileCorrect = false; @@ -4951,27 +4972,6 @@ export const configFileStructureAssert = async (config, logger) => { configFileCorrect = false; } - // Config visualisation setttings - if (!config.has('Butler.configVisualisation.enable')) { - logger.error('ASSERT CONFIG: Missing config file entry "Butler.configVisualisation.enable"'); - configFileCorrect = false; - } - - if (!config.has('Butler.configVisualisation.host')) { - logger.error('ASSERT CONFIG: Missing config file entry "Butler.configVisualisation.host"'); - configFileCorrect = false; - } - - if (!config.has('Butler.configVisualisation.port')) { - logger.error('ASSERT CONFIG: Missing config file entry "Butler.configVisualisation.port"'); - configFileCorrect = false; - } - - if (!config.has('Butler.configVisualisation.obfuscate')) { - logger.error('ASSERT CONFIG: Missing config file entry "Butler.configVisualisation.obfuscate"'); - configFileCorrect = false; - } - if (!config.has('Butler.cert.clientCert')) { logger.error('ASSERT CONFIG: Missing config file entry "Butler.cert.clientCert"'); configFileCorrect = false; diff --git a/src/lib/config_obfuscate.js b/src/lib/config_obfuscate.js index b8fd88a2..126d37e4 100644 --- a/src/lib/config_obfuscate.js +++ b/src/lib/config_obfuscate.js @@ -4,6 +4,10 @@ function configObfuscate(config) { try { const obfuscatedConfig = { ...config }; + // Obfuscate Butler.configVisualisation.host, keep first 3 chars, mask the rest with * + obfuscatedConfig.Butler.configVisualisation.host = + obfuscatedConfig.Butler.configVisualisation.host.substring(0, 3) + '*'.repeat(10); + // Keep first 10 chars of remote URL, mask the rest with * obfuscatedConfig.Butler.heartbeat.remoteURL = obfuscatedConfig.Butler.heartbeat.remoteURL.substring(0, 10) + '*'.repeat(10); diff --git a/static/configvis/index.html b/static/configvis/index.html index 7aba1a49..d6733d3c 100644 --- a/static/configvis/index.html +++ b/static/configvis/index.html @@ -2,7 +2,7 @@ - Ctrl-Q + Butler @@ -182,9 +182,8 @@

JSON tree view

sortPropertyNames: false, sortPropertyNamesInAlphabeticalOrder: false, data: {{butlerConfigJsonEncoded}} }" - style="width: 100%" + style="width: 100%; max-width: 100%" > - Your HTML. diff --git a/static/configvis/jsontree.js b/static/configvis/jsontree.js index cc09af64..7d6ce0a5 100644 --- a/static/configvis/jsontree.js +++ b/static/configvis/jsontree.js @@ -1,185 +1,307 @@ -'use strict'; +"use strict"; var Is; -((e) => { - function t(e) { - return e !== null && e !== void 0 && e.toString() !== ''; - } - e.defined = t; +(e => { + let t; + (e => { + function t(e) { + let t = e.length >= 2 && e.length <= 7; + if (t && e[0] === "#") { + t = isNaN(+e.substring(1, e.length - 1)); + } else { + t = false; + } + return t; + } + e.hexColor = t; + function n(e) { + return (e.startsWith("rgb(") || e.startsWith("rgba(")) && e.endsWith(")"); + } + e.rgbColor = n; + function o(e) { + return e.toString().toLowerCase().trim() === "true" || e.toString().toLowerCase().trim() === "false"; + } + e.boolean = o; + function r(e) { + return !isNaN(+new Date(e)); + } + e.date = r; + function l(e) { + const t = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/; + return t.test(e); + } + e.guid = l; + })(t = e.String || (e.String = {})); function n(e) { - return t(e) && typeof e === 'object'; + return e !== null && e !== void 0 && e.toString() !== ""; } - e.definedObject = n; + e.defined = n; + function o(e) { + return n(e) && typeof e === "object"; + } + e.definedObject = o; function r(e) { - return t(e) && typeof e === 'boolean'; + return n(e) && typeof e === "boolean"; } e.definedBoolean = r; - function o(e) { - return t(e) && typeof e === 'string'; - } - e.definedString = o; function l(e) { - return t(e) && typeof e === 'function'; + return n(e) && typeof e === "string"; } - e.definedFunction = l; + e.definedString = l; + function i(e) { + return n(e) && typeof e === "function"; + } + e.definedFunction = i; function a(e) { - return t(e) && typeof e === 'number'; + return n(e) && typeof e === "number"; } e.definedNumber = a; - function i(e) { - return n(e) && e instanceof Array; - } - e.definedArray = i; function s(e) { - return n(e) && e instanceof Date; + return n(e) && typeof e === "bigint"; } - e.definedDate = s; + e.definedBigInt = s; function u(e) { - return t(e) && typeof e === 'number' && e % 1 !== 0; + return o(e) && e instanceof Array; } - e.definedDecimal = u; - function c(e, t = 1) { - return !i(e) || e.length < t; + e.definedArray = u; + function c(e) { + return o(e) && e instanceof Date; } - e.invalidOptionArray = c; + e.definedDate = c; function d(e) { - let t = e.length >= 2 && e.length <= 7; - if (t && e[0] === '#') { - t = isNaN(+e.substring(1, e.length - 1)); - } - return t; + return n(e) && typeof e === "number" && e % 1 !== 0; + } + e.definedDecimal = d; + function f(e) { + return n(e) && typeof e === "symbol"; + } + e.definedSymbol = f; + function g(e) { + return n(e) && e instanceof RegExp; } - e.hexColor = d; + e.definedRegExp = g; + function m(e) { + return n(e) && (e instanceof Map || e instanceof WeakMap); + } + e.definedMap = m; + function p(e) { + return n(e) && (e instanceof Set || e instanceof WeakSet); + } + e.definedSet = p; + function w(e, t = 1) { + return !u(e) || e.length < t; + } + e.invalidOptionArray = w; })(Is || (Is = {})); -var Default; +var Default2; -((e) => { - function t(e, t) { - return typeof e === 'string' ? e : t; +(Default => { + function getAnyString(e, t) { + return typeof e === "string" ? e : t; } - e.getAnyString = t; - function n(e, t) { + Default.getAnyString = getAnyString; + function getString(e, t) { return Is.definedString(e) ? e : t; } - e.getString = n; - function r(e, t) { + Default.getString = getString; + function getBoolean(e, t) { return Is.definedBoolean(e) ? e : t; } - e.getBoolean = r; - function o(e, t) { + Default.getBoolean = getBoolean; + function getNumber(e, t) { return Is.definedNumber(e) ? e : t; } - e.getNumber = o; - function l(e, t) { + Default.getNumber = getNumber; + function getFunction(e, t) { return Is.definedFunction(e) ? e : t; } - e.getFunction = l; - function a(e, t) { + Default.getFunction = getFunction; + function getArray(e, t) { return Is.definedArray(e) ? e : t; } - e.getArray = a; - function i(e, t) { + Default.getArray = getArray; + function getObject(e, t) { return Is.definedObject(e) ? e : t; } - e.getObject = i; - function s(e, t) { + Default.getObject = getObject; + function getStringOrArray(e, t) { let n = t; if (Is.definedString(e)) { - const r = e.toString().split(' '); - if (r.length === 0) { + const o = e.toString().split(" "); + if (o.length === 0) { e = t; } else { - n = r; + n = o; } } else { - n = a(e, t); + n = getArray(e, t); } return n; } - e.getStringOrArray = s; - function u(e, t) { - var n; - const r = new RegExp(`^-?\\d+(?:.\\d{0,${t || -1}})?`); - return ((n = e.toString().match(r)) == null ? void 0 : n[0]) || ''; + Default.getStringOrArray = getStringOrArray; + function getFixedDecimalPlacesValue(e, t) { + const n = new RegExp(`^-?\\d+(?:.\\d{0,${t || -1}})?`); + return e.toString().match(n)?.[0] || ""; } - e.getFixedDecimalPlacesValue = u; - function c(e) { - let t; - const n = e.toString().split('('); - const r = n[0].split(' '); + Default.getFixedDecimalPlacesValue = getFixedDecimalPlacesValue; + function getFunctionName(e, t) { + let n; + const o = e.toString().split("("); + const r = o[0].split(" "); + const l = "()"; if (r.length === 2) { - t = r[1]; + n = r[1]; } else { - t = r[0]; + n = r[0]; + } + n += l; + if (n.trim() === l) { + n = `${t.text.functionText}${l}`; } - t += '()'; + return n; + } + Default.getFunctionName = getFunctionName; + function getObjectFromString(objectString, configuration) { + const result = { + parsed: true, + object: null + }; + try { + if (Is.definedString(objectString)) { + result.object = JSON.parse(objectString); + } + } catch (e1) { + try { + result.object = eval(`(${objectString})`); + if (Is.definedFunction(result.object)) { + result.object = result.object(); + } + } catch (e) { + if (!configuration.safeMode) { + console.error(configuration.text.objectErrorText.replace("{{error_1}}", e1.message).replace("{{error_2}}", e.message)); + result.parsed = false; + } + result.object = null; + } + } + return result; + } + Default.getObjectFromString = getObjectFromString; + function getObjectFromMap(e) { + const t = Object.fromEntries(e.entries()); return t; } - e.getFunctionName = c; -})(Default || (Default = {})); + Default.getObjectFromMap = getObjectFromMap; + function getArrayFromSet(e) { + const t = Array.from(e.values()); + return t; + } + Default.getArrayFromSet = getArrayFromSet; +})(Default2 || (Default2 = {})); var DomElement; -((e) => { - function t(e, t, n = '', r = null) { - const o = t.toLowerCase(); - const l = o === 'text'; - let a = l ? document.createTextNode('') : document.createElement(o); +(e => { + function t(e, t, n = "", o = null) { + const r = t.toLowerCase(); + const l = r === "text"; + let i = l ? document.createTextNode("") : document.createElement(r); if (Is.defined(n)) { - a.className = n; + i.className = n; } - if (Is.defined(r)) { - e.insertBefore(a, r); + if (Is.defined(o)) { + e.insertBefore(i, o); } else { - e.appendChild(a); + e.appendChild(i); } - return a; + return i; } e.create = t; - function n(e, n, r, o, l = null) { - const a = t(e, n, r, l); - a.innerHTML = o; - return a; + function n(e, n, o, r, l = null) { + const i = t(e, n, o, l); + i.innerHTML = r; + return i; } e.createWithHTML = n; - function r(e, t) { + function o(e, t) { e.classList.add(t); } - e.addClass = r; + e.addClass = o; + function r(e, t) { + e.classList.remove(t); + } + e.removeClass = r; + function l(e) { + e.preventDefault(); + e.stopPropagation(); + } + e.cancelBubble = l; + function i() { + const e = document.documentElement; + const t = { + left: e.scrollLeft - (e.clientLeft || 0), + top: e.scrollTop - (e.clientTop || 0) + }; + return t; + } + e.getScrollPosition = i; + function a(e, t, n) { + let o = e.pageX; + let r = e.pageY; + const l = i(); + t.style.display = "block"; + if (o + t.offsetWidth > window.innerWidth) { + o -= t.offsetWidth + n; + } else { + o++; + o += n; + } + if (r + t.offsetHeight > window.innerHeight) { + r -= t.offsetHeight + n; + } else { + r++; + r += n; + } + if (o < l.left) { + o = e.pageX + 1; + } + if (r < l.top) { + r = e.pageY + 1; + } + t.style.left = `${o}px`; + t.style.top = `${r}px`; + } + e.showElementAtMousePosition = a; + function s(e) { + const t = document.createRange(); + t.selectNodeContents(e); + const n = window.getSelection(); + n.removeAllRanges(); + n.addRange(t); + } + e.selectAllText = s; })(DomElement || (DomElement = {})); var Str; -((e) => { - function t() { - const e = []; - for (let t = 0; t < 32; t++) { - if (t === 8 || t === 12 || t === 16 || t === 20) { - e.push('-'); - } - const n = Math.floor(Math.random() * 16).toString(16); - e.push(n); - } - return e.join(''); - } - e.newGuid = t; - function n(e, t = 1) { +(e => { + function t(e, t = 1) { const n = e.toString(); - let r = n; + let o = n; if (n.length < t) { const e = t - n.length + 1; - r = Array(e).join('0') + n; + o = Array(e).join("0") + n; } - return r; + return o; } - e.padNumber = n; + e.padNumber = t; })(Str || (Str = {})); var DateTime; -((e) => { +(e => { function t(e) { return e.getDay() - 1 < 0 ? 6 : e.getDay() - 1; } @@ -196,197 +318,253 @@ var DateTime; return n; } e.getDayOrdinal = n; - function r(e, r, o) { - let l = o; - const a = t(r); - l = l.replace('{hh}', Str.padNumber(r.getHours(), 2)); - l = l.replace('{h}', r.getHours().toString()); - l = l.replace('{MM}', Str.padNumber(r.getMinutes(), 2)); - l = l.replace('{M}', r.getMinutes().toString()); - l = l.replace('{ss}', Str.padNumber(r.getSeconds(), 2)); - l = l.replace('{s}', r.getSeconds().toString()); - l = l.replace('{dddd}', e.text.dayNames[a]); - l = l.replace('{ddd}', e.text.dayNamesAbbreviated[a]); - l = l.replace('{dd}', Str.padNumber(r.getDate())); - l = l.replace('{d}', r.getDate().toString()); - l = l.replace('{o}', n(e, r.getDate())); - l = l.replace('{mmmm}', e.text.monthNames[r.getMonth()]); - l = l.replace('{mmm}', e.text.monthNamesAbbreviated[r.getMonth()]); - l = l.replace('{mm}', Str.padNumber(r.getMonth() + 1)); - l = l.replace('{m}', (r.getMonth() + 1).toString()); - l = l.replace('{yyyy}', r.getFullYear().toString()); - l = l.replace('{yyy}', r.getFullYear().toString().substring(1)); - l = l.replace('{yy}', r.getFullYear().toString().substring(2)); - l = l.replace('{y}', Number.parseInt(r.getFullYear().toString().substring(2)).toString()); + function o(e, o, r) { + let l = r; + const i = t(o); + l = l.replace("{hh}", Str.padNumber(o.getHours(), 2)); + l = l.replace("{h}", o.getHours().toString()); + l = l.replace("{MM}", Str.padNumber(o.getMinutes(), 2)); + l = l.replace("{M}", o.getMinutes().toString()); + l = l.replace("{ss}", Str.padNumber(o.getSeconds(), 2)); + l = l.replace("{s}", o.getSeconds().toString()); + l = l.replace("{fff}", Str.padNumber(o.getMilliseconds(), 3)); + l = l.replace("{ff}", Str.padNumber(o.getMilliseconds(), 2)); + l = l.replace("{f}", o.getMilliseconds().toString()); + l = l.replace("{dddd}", e.text.dayNames[i]); + l = l.replace("{ddd}", e.text.dayNamesAbbreviated[i]); + l = l.replace("{dd}", Str.padNumber(o.getDate())); + l = l.replace("{d}", o.getDate().toString()); + l = l.replace("{o}", n(e, o.getDate())); + l = l.replace("{mmmm}", e.text.monthNames[o.getMonth()]); + l = l.replace("{mmm}", e.text.monthNamesAbbreviated[o.getMonth()]); + l = l.replace("{mm}", Str.padNumber(o.getMonth() + 1)); + l = l.replace("{m}", (o.getMonth() + 1).toString()); + l = l.replace("{yyyy}", o.getFullYear().toString()); + l = l.replace("{yyy}", o.getFullYear().toString().substring(1)); + l = l.replace("{yy}", o.getFullYear().toString().substring(2)); + l = l.replace("{y}", Number.parseInt(o.getFullYear().toString().substring(2)).toString()); return l; } - e.getCustomFormattedDateText = r; + e.getCustomFormattedDateText = o; })(DateTime || (DateTime = {})); var Constants; -((e) => { - e.JSONTREE_JS_ATTRIBUTE_NAME = 'data-jsontree-js'; +(e => { + e.JSONTREE_JS_ATTRIBUTE_NAME = "data-jsontree-js"; })(Constants || (Constants = {})); var Binding; -((e) => { +(e => { let t; - ((t) => { + (t => { function n(t, n) { - const r = e.Options.get(t); - r._currentView = {}; - r._currentView.element = n; - r._currentView.dataArrayCurrentIndex = 0; - return r; + const o = e.Options.get(t); + o._currentView = {}; + o._currentView.element = n; + o._currentView.dataArrayCurrentIndex = 0; + o._currentView.titleBarButtons = null; + o._currentView.valueClickTimerId = 0; + o._currentView.editMode = false; + o._currentView.idSet = false; + o._currentView.contentPanelsOpen = {}; + o._currentView.contentPanelsIndex = 0; + o._currentView.backButton = null; + o._currentView.nextButton = null; + return o; } t.getForNewInstance = n; - function r(e) { - let t = Default.getObject(e, {}); - t.data = Default.getObject(t.data, null); - t.showCounts = Default.getBoolean(t.showCounts, true); - t.useZeroIndexingForArrays = Default.getBoolean(t.useZeroIndexingForArrays, true); - t.dateTimeFormat = Default.getString(t.dateTimeFormat, '{dd}{o} {mmmm} {yyyy} {hh}:{MM}:{ss}'); - t.showArrowToggles = Default.getBoolean(t.showArrowToggles, true); - t.showStringQuotes = Default.getBoolean(t.showStringQuotes, true); - t.showAllAsClosed = Default.getBoolean(t.showAllAsClosed, false); - t.sortPropertyNames = Default.getBoolean(t.sortPropertyNames, true); - t.sortPropertyNamesInAlphabeticalOrder = Default.getBoolean(t.sortPropertyNamesInAlphabeticalOrder, true); - t.showCommas = Default.getBoolean(t.showCommas, false); - t.reverseArrayValues = Default.getBoolean(t.reverseArrayValues, false); - t.addArrayIndexPadding = Default.getBoolean(t.addArrayIndexPadding, false); - t.showValueColors = Default.getBoolean(t.showValueColors, true); - t.maximumDecimalPlaces = Default.getNumber(t.maximumDecimalPlaces, 2); - t.maximumStringLength = Default.getNumber(t.maximumStringLength, 0); - t.showStringHexColors = Default.getBoolean(t.showStringHexColors, false); - t.showArrayItemsAsSeparateObjects = Default.getBoolean(t.showArrayItemsAsSeparateObjects, false); - t.copyOnlyCurrentPage = Default.getBoolean(t.copyOnlyCurrentPage, false); - t = o(t); + function o(e) { + let t = Default2.getObject(e, {}); + t.data = Default2.getObject(t.data, null); + t.showCounts = Default2.getBoolean(t.showCounts, true); + t.useZeroIndexingForArrays = Default2.getBoolean(t.useZeroIndexingForArrays, true); + t.dateTimeFormat = Default2.getString(t.dateTimeFormat, "{dd}{o} {mmmm} {yyyy} {hh}:{MM}:{ss}"); + t.showArrowToggles = Default2.getBoolean(t.showArrowToggles, true); + t.showStringQuotes = Default2.getBoolean(t.showStringQuotes, true); + t.showAllAsClosed = Default2.getBoolean(t.showAllAsClosed, false); + t.sortPropertyNames = Default2.getBoolean(t.sortPropertyNames, true); + t.sortPropertyNamesInAlphabeticalOrder = Default2.getBoolean(t.sortPropertyNamesInAlphabeticalOrder, true); + t.showCommas = Default2.getBoolean(t.showCommas, false); + t.reverseArrayValues = Default2.getBoolean(t.reverseArrayValues, false); + t.addArrayIndexPadding = Default2.getBoolean(t.addArrayIndexPadding, false); + t.showValueColors = Default2.getBoolean(t.showValueColors, true); + t.maximumDecimalPlaces = Default2.getNumber(t.maximumDecimalPlaces, 2); + t.maximumStringLength = Default2.getNumber(t.maximumStringLength, 0); + t.showArrayItemsAsSeparateObjects = Default2.getBoolean(t.showArrayItemsAsSeparateObjects, false); + t.copyOnlyCurrentPage = Default2.getBoolean(t.copyOnlyCurrentPage, false); + t.fileDroppingEnabled = Default2.getBoolean(t.fileDroppingEnabled, true); + t.copyIndentSpaces = Default2.getNumber(t.copyIndentSpaces, 2); + t.showArrayIndexBrackets = Default2.getBoolean(t.showArrayIndexBrackets, true); + t.showOpeningClosingCurlyBraces = Default2.getBoolean(t.showOpeningClosingCurlyBraces, false); + t.showOpeningClosingSquaredBrackets = Default2.getBoolean(t.showOpeningClosingSquaredBrackets, false); + t.includeTimeZoneInDateTimeEditing = Default2.getBoolean(t.includeTimeZoneInDateTimeEditing, true); + t.shortcutKeysEnabled = Default2.getBoolean(t.shortcutKeysEnabled, true); + t.openInFullScreenMode = Default2.getBoolean(t.openInFullScreenMode, false); + t.enableFullScreenToggling = Default2.getBoolean(t.enableFullScreenToggling, true); + t.valueToolTips = Default2.getObject(t.valueToolTips, null); + t.editingValueClickDelay = Default2.getNumber(t.editingValueClickDelay, 500); + t = r(t); t = l(t); + t = i(t); t = a(t); + t = s(t, Is.definedObject(t.valueToolTips)); + t = u(t); return t; } - t.get = r; - function o(e) { - e.title = Default.getObject(e.title, {}); - e.title.text = Default.getString(e.title.text, 'JsonTree.js'); - e.title.show = Default.getBoolean(e.title.show, true); - e.title.showTreeControls = Default.getBoolean(e.title.showTreeControls, true); - e.title.showCopyButton = Default.getBoolean(e.title.showCopyButton, true); + t.get = o; + function r(e) { + e.title = Default2.getObject(e.title, {}); + e.title.text = Default2.getString(e.title.text, "JsonTree.js"); + e.title.show = Default2.getBoolean(e.title.show, true); + e.title.showTreeControls = Default2.getBoolean(e.title.showTreeControls, true); + e.title.showCopyButton = Default2.getBoolean(e.title.showCopyButton, true); return e; } function l(e) { - e.ignore = Default.getObject(e.ignore, {}); - e.ignore.nullValues = Default.getBoolean(e.ignore.nullValues, false); - e.ignore.functionValues = Default.getBoolean(e.ignore.functionValues, false); - e.ignore.unknownValues = Default.getBoolean(e.ignore.unknownValues, false); - e.ignore.booleanValues = Default.getBoolean(e.ignore.booleanValues, false); - e.ignore.decimalValues = Default.getBoolean(e.ignore.decimalValues, false); - e.ignore.numberValues = Default.getBoolean(e.ignore.numberValues, false); - e.ignore.stringValues = Default.getBoolean(e.ignore.stringValues, false); - e.ignore.dateValues = Default.getBoolean(e.ignore.dateValues, false); - e.ignore.objectValues = Default.getBoolean(e.ignore.objectValues, false); - e.ignore.arrayValues = Default.getBoolean(e.ignore.arrayValues, false); + e.ignore = Default2.getObject(e.ignore, {}); + e.ignore.nullValues = Default2.getBoolean(e.ignore.nullValues, false); + e.ignore.functionValues = Default2.getBoolean(e.ignore.functionValues, false); + e.ignore.unknownValues = Default2.getBoolean(e.ignore.unknownValues, false); + e.ignore.booleanValues = Default2.getBoolean(e.ignore.booleanValues, false); + e.ignore.decimalValues = Default2.getBoolean(e.ignore.decimalValues, false); + e.ignore.numberValues = Default2.getBoolean(e.ignore.numberValues, false); + e.ignore.stringValues = Default2.getBoolean(e.ignore.stringValues, false); + e.ignore.dateValues = Default2.getBoolean(e.ignore.dateValues, false); + e.ignore.objectValues = Default2.getBoolean(e.ignore.objectValues, false); + e.ignore.arrayValues = Default2.getBoolean(e.ignore.arrayValues, false); + e.ignore.bigIntValues = Default2.getBoolean(e.ignore.bigIntValues, false); + e.ignore.symbolValues = Default2.getBoolean(e.ignore.symbolValues, false); + e.ignore.emptyObjects = Default2.getBoolean(e.ignore.emptyObjects, true); + e.ignore.undefinedValues = Default2.getBoolean(e.ignore.undefinedValues, false); + e.ignore.guidValues = Default2.getBoolean(e.ignore.guidValues, false); + e.ignore.colorValues = Default2.getBoolean(e.ignore.colorValues, false); + e.ignore.regExpValues = Default2.getBoolean(e.ignore.regExpValues, false); + e.ignore.mapValues = Default2.getBoolean(e.ignore.mapValues, false); + e.ignore.setValues = Default2.getBoolean(e.ignore.setValues, false); + return e; + } + function i(e) { + e.tooltip = Default2.getObject(e.tooltip, {}); + e.tooltip.delay = Default2.getNumber(e.tooltip.delay, 750); + e.tooltip.offset = Default2.getNumber(e.tooltip.offset, 0); return e; } function a(e) { - e.events = Default.getObject(e.events, {}); - e.events.onBeforeRender = Default.getFunction(e.events.onBeforeRender, null); - e.events.onRenderComplete = Default.getFunction(e.events.onRenderComplete, null); - e.events.onValueClick = Default.getFunction(e.events.onValueClick, null); - e.events.onRefresh = Default.getFunction(e.events.onRefresh, null); - e.events.onCopyAll = Default.getFunction(e.events.onCopyAll, null); - e.events.onOpenAll = Default.getFunction(e.events.onOpenAll, null); - e.events.onCloseAll = Default.getFunction(e.events.onCloseAll, null); - e.events.onDestroy = Default.getFunction(e.events.onDestroy, null); - e.events.onBooleanRender = Default.getFunction(e.events.onBooleanRender, null); - e.events.onDecimalRender = Default.getFunction(e.events.onDecimalRender, null); - e.events.onNumberRender = Default.getFunction(e.events.onNumberRender, null); - e.events.onStringRender = Default.getFunction(e.events.onStringRender, null); - e.events.onDateRender = Default.getFunction(e.events.onDateRender, null); - e.events.onFunctionRender = Default.getFunction(e.events.onFunctionRender, null); - e.events.onNullRender = Default.getFunction(e.events.onNullRender, null); - e.events.onUnknownRender = Default.getFunction(e.events.onUnknownRender, null); + e.parse = Default2.getObject(e.parse, {}); + e.parse.stringsToDates = Default2.getBoolean(e.parse.stringsToDates, false); + e.parse.stringsToBooleans = Default2.getBoolean(e.parse.stringsToBooleans, false); + e.parse.stringsToNumbers = Default2.getBoolean(e.parse.stringsToNumbers, false); return e; } - })((t = e.Options || (e.Options = {}))); + function s(e, t) { + let n = Default2.getBoolean(e.allowEditing, true); + e.allowEditing = Default2.getObject(e.allowEditing, {}); + e.allowEditing.booleanValues = Default2.getBoolean(e.allowEditing.booleanValues, n); + e.allowEditing.decimalValues = Default2.getBoolean(e.allowEditing.decimalValues, n); + e.allowEditing.numberValues = Default2.getBoolean(e.allowEditing.numberValues, n); + e.allowEditing.stringValues = Default2.getBoolean(e.allowEditing.stringValues, n); + e.allowEditing.dateValues = Default2.getBoolean(e.allowEditing.dateValues, n); + e.allowEditing.bigIntValues = Default2.getBoolean(e.allowEditing.bigIntValues, n); + e.allowEditing.guidValues = Default2.getBoolean(e.allowEditing.guidValues, n); + e.allowEditing.colorValues = Default2.getBoolean(e.allowEditing.colorValues, n); + e.allowEditing.propertyNames = Default2.getBoolean(e.allowEditing.propertyNames, n); + if (t) { + e.allowEditing.propertyNames = false; + } + return e; + } + function u(e) { + e.events = Default2.getObject(e.events, {}); + e.events.onBeforeRender = Default2.getFunction(e.events.onBeforeRender, null); + e.events.onRenderComplete = Default2.getFunction(e.events.onRenderComplete, null); + e.events.onValueClick = Default2.getFunction(e.events.onValueClick, null); + e.events.onRefresh = Default2.getFunction(e.events.onRefresh, null); + e.events.onCopyAll = Default2.getFunction(e.events.onCopyAll, null); + e.events.onOpenAll = Default2.getFunction(e.events.onOpenAll, null); + e.events.onCloseAll = Default2.getFunction(e.events.onCloseAll, null); + e.events.onDestroy = Default2.getFunction(e.events.onDestroy, null); + e.events.onBooleanRender = Default2.getFunction(e.events.onBooleanRender, null); + e.events.onDecimalRender = Default2.getFunction(e.events.onDecimalRender, null); + e.events.onNumberRender = Default2.getFunction(e.events.onNumberRender, null); + e.events.onBigIntRender = Default2.getFunction(e.events.onBigIntRender, null); + e.events.onStringRender = Default2.getFunction(e.events.onStringRender, null); + e.events.onDateRender = Default2.getFunction(e.events.onDateRender, null); + e.events.onFunctionRender = Default2.getFunction(e.events.onFunctionRender, null); + e.events.onNullRender = Default2.getFunction(e.events.onNullRender, null); + e.events.onUnknownRender = Default2.getFunction(e.events.onUnknownRender, null); + e.events.onSymbolRender = Default2.getFunction(e.events.onSymbolRender, null); + e.events.onCopyJsonReplacer = Default2.getFunction(e.events.onCopyJsonReplacer, null); + e.events.onUndefinedRender = Default2.getFunction(e.events.onUndefinedRender, null); + e.events.onGuidRender = Default2.getFunction(e.events.onGuidRender, null); + e.events.onColorRender = Default2.getFunction(e.events.onColorRender, null); + e.events.onJsonEdit = Default2.getFunction(e.events.onJsonEdit, null); + e.events.onRegExpRender = Default2.getFunction(e.events.onRegExpRender, null); + return e; + } + })(t = e.Options || (e.Options = {})); })(Binding || (Binding = {})); var Config; -((e) => { +(e => { let t; - ((e) => { + (e => { function t(e = null) { - let t = Default.getObject(e, {}); - t.safeMode = Default.getBoolean(t.safeMode, true); - t.domElementTypes = Default.getStringOrArray(t.domElementTypes, ['*']); + let t = Default2.getObject(e, {}); + t.safeMode = Default2.getBoolean(t.safeMode, true); + t.domElementTypes = Default2.getStringOrArray(t.domElementTypes, [ "*" ]); t = n(t); return t; } e.get = t; function n(e) { - e.text = Default.getObject(e.text, {}); - e.text.objectText = Default.getAnyString(e.text.objectText, 'object'); - e.text.arrayText = Default.getAnyString(e.text.arrayText, 'array'); - e.text.closeAllButtonText = Default.getAnyString(e.text.closeAllButtonText, 'Close All'); - e.text.openAllButtonText = Default.getAnyString(e.text.openAllButtonText, 'Open All'); - e.text.copyAllButtonText = Default.getAnyString(e.text.copyAllButtonText, 'Copy All'); - e.text.objectErrorText = Default.getAnyString(e.text.objectErrorText, 'Errors in object: {{error_1}}, {{error_2}}'); - e.text.attributeNotValidErrorText = Default.getAnyString( - e.text.attributeNotValidErrorText, - "The attribute '{{attribute_name}}' is not a valid object.", - ); - e.text.attributeNotSetErrorText = Default.getAnyString( - e.text.attributeNotSetErrorText, - "The attribute '{{attribute_name}}' has not been set correctly.", - ); - e.text.stText = Default.getAnyString(e.text.stText, 'st'); - e.text.ndText = Default.getAnyString(e.text.ndText, 'nd'); - e.text.rdText = Default.getAnyString(e.text.rdText, 'rd'); - e.text.thText = Default.getAnyString(e.text.thText, 'th'); - e.text.ellipsisText = Default.getAnyString(e.text.ellipsisText, '...'); - e.text.closeAllButtonSymbolText = Default.getAnyString(e.text.closeAllButtonSymbolText, '↑'); - e.text.openAllButtonSymbolText = Default.getAnyString(e.text.openAllButtonSymbolText, '↓'); - e.text.copyAllButtonSymbolText = Default.getAnyString(e.text.copyAllButtonSymbolText, '❐'); - e.text.backButtonText = Default.getAnyString(e.text.backButtonText, 'Back'); - e.text.nextButtonText = Default.getAnyString(e.text.nextButtonText, 'Next'); - e.text.backButtonSymbolText = Default.getAnyString(e.text.backButtonSymbolText, '←'); - e.text.nextButtonSymbolText = Default.getAnyString(e.text.nextButtonSymbolText, '→'); + e.text = Default2.getObject(e.text, {}); + e.text.objectText = Default2.getAnyString(e.text.objectText, "object"); + e.text.arrayText = Default2.getAnyString(e.text.arrayText, "array"); + e.text.mapText = Default2.getAnyString(e.text.mapText, "map"); + e.text.setText = Default2.getAnyString(e.text.setText, "set"); + e.text.closeAllButtonText = Default2.getAnyString(e.text.closeAllButtonText, "Close All"); + e.text.openAllButtonText = Default2.getAnyString(e.text.openAllButtonText, "Open All"); + e.text.copyAllButtonText = Default2.getAnyString(e.text.copyAllButtonText, "Copy All"); + e.text.objectErrorText = Default2.getAnyString(e.text.objectErrorText, "Errors in object: {{error_1}}, {{error_2}}"); + e.text.attributeNotValidErrorText = Default2.getAnyString(e.text.attributeNotValidErrorText, "The attribute '{{attribute_name}}' is not a valid object."); + e.text.attributeNotSetErrorText = Default2.getAnyString(e.text.attributeNotSetErrorText, "The attribute '{{attribute_name}}' has not been set correctly."); + e.text.stText = Default2.getAnyString(e.text.stText, "st"); + e.text.ndText = Default2.getAnyString(e.text.ndText, "nd"); + e.text.rdText = Default2.getAnyString(e.text.rdText, "rd"); + e.text.thText = Default2.getAnyString(e.text.thText, "th"); + e.text.ellipsisText = Default2.getAnyString(e.text.ellipsisText, "..."); + e.text.closeAllButtonSymbolText = Default2.getAnyString(e.text.closeAllButtonSymbolText, "↑"); + e.text.openAllButtonSymbolText = Default2.getAnyString(e.text.openAllButtonSymbolText, "↓"); + e.text.copyAllButtonSymbolText = Default2.getAnyString(e.text.copyAllButtonSymbolText, "❐"); + e.text.backButtonText = Default2.getAnyString(e.text.backButtonText, "Back"); + e.text.nextButtonText = Default2.getAnyString(e.text.nextButtonText, "Next"); + e.text.backButtonSymbolText = Default2.getAnyString(e.text.backButtonSymbolText, "←"); + e.text.nextButtonSymbolText = Default2.getAnyString(e.text.nextButtonSymbolText, "→"); + e.text.noJsonToViewText = Default2.getAnyString(e.text.noJsonToViewText, "There is currently no JSON to view."); + e.text.functionText = Default2.getAnyString(e.text.functionText, "function"); if (Is.invalidOptionArray(e.text.dayNames, 7)) { - e.text.dayNames = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']; + e.text.dayNames = [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" ]; } if (Is.invalidOptionArray(e.text.dayNamesAbbreviated, 7)) { - e.text.dayNamesAbbreviated = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']; + e.text.dayNamesAbbreviated = [ "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun" ]; } if (Is.invalidOptionArray(e.text.monthNames, 12)) { - e.text.monthNames = [ - 'January', - 'February', - 'March', - 'April', - 'May', - 'June', - 'July', - 'August', - 'September', - 'October', - 'November', - 'December', - ]; + e.text.monthNames = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ]; } if (Is.invalidOptionArray(e.text.monthNamesAbbreviated, 12)) { - e.text.monthNamesAbbreviated = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; + e.text.monthNamesAbbreviated = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ]; } return e; } - })((t = e.Options || (e.Options = {}))); + })(t = e.Options || (e.Options = {})); })(Config || (Config = {})); var Trigger; -((e) => { +(e => { function t(e, ...t) { let n = null; if (Is.definedFunction(e)) { @@ -397,531 +575,1096 @@ var Trigger; e.customEvent = t; })(Trigger || (Trigger = {})); +var ToolTip; + +(e => { + function t(e) { + if (!Is.defined(e._currentView.tooltip)) { + e._currentView.tooltip = DomElement.create(document.body, "div", "jsontree-js-tooltip"); + e._currentView.tooltip.style.display = "none"; + n(e); + } + } + e.renderControl = t; + function n(e, t = true) { + let n = t ? window.addEventListener : window.removeEventListener; + let o = t ? document.addEventListener : document.removeEventListener; + n("mousemove", (() => l(e))); + o("scroll", (() => l(e))); + } + e.assignToEvents = n; + function o(e, t, n, o = "jsontree-js-tooltip") { + if (e !== null) { + e.onmousemove = e => r(e, t, n, o); + } + } + e.add = o; + function r(e, t, n, o) { + DomElement.cancelBubble(e); + l(t); + t._currentView.tooltipTimerId = setTimeout((() => { + t._currentView.tooltip.className = o; + t._currentView.tooltip.innerHTML = n; + t._currentView.tooltip.style.display = "block"; + DomElement.showElementAtMousePosition(e, t._currentView.tooltip, t.tooltip.offset); + }), t.tooltip.delay); + } + e.show = r; + function l(e) { + if (Is.defined(e._currentView.tooltip)) { + if (e._currentView.tooltipTimerId !== 0) { + clearTimeout(e._currentView.tooltipTimerId); + e._currentView.tooltipTimerId = 0; + } + if (e._currentView.tooltip.style.display !== "none") { + e._currentView.tooltip.style.display = "none"; + } + } + } + e.hide = l; + function i(e) { + if (Is.defined(e._currentView.tooltip)) { + e._currentView.tooltip.parentNode.removeChild(e._currentView.tooltip); + } + } + e.remove = i; +})(ToolTip || (ToolTip = {})); + (() => { - let _configuration = {}; - let _elements_Data = {}; - function render() { - const e = _configuration.domElementTypes; - const t = e.length; - for (let n = 0; n < t; n++) { - const t = document.getElementsByTagName(e[n]); - const r = [].slice.call(t); - const o = r.length; - for (let e = 0; e < o; e++) { - if (!renderElement(r[e])) { + let e = {}; + let t = {}; + let n = 0; + function o() { + const t = e.domElementTypes; + const n = t.length; + for (let e = 0; e < n; e++) { + const n = document.getElementsByTagName(t[e]); + const o = [].slice.call(n); + const l = o.length; + for (let e = 0; e < l; e++) { + if (!r(o[e])) { break; } } } } - function renderElement(e) { - let t = true; - if (Is.defined(e) && e.hasAttribute(Constants.JSONTREE_JS_ATTRIBUTE_NAME)) { - const n = e.getAttribute(Constants.JSONTREE_JS_ATTRIBUTE_NAME); - if (Is.definedString(n)) { - const r = getObjectFromString(n); + function r(t) { + let n = true; + if (Is.defined(t) && t.hasAttribute(Constants.JSONTREE_JS_ATTRIBUTE_NAME)) { + const o = t.getAttribute(Constants.JSONTREE_JS_ATTRIBUTE_NAME); + if (Is.definedString(o)) { + const r = Default2.getObjectFromString(o, e); if (r.parsed && Is.definedObject(r.object)) { - renderControl(Binding.Options.getForNewInstance(r.object, e)); + l(Binding.Options.getForNewInstance(r.object, t)); } else { - if (!_configuration.safeMode) { - console.error( - _configuration.text.attributeNotValidErrorText.replace( - '{{attribute_name}}', - Constants.JSONTREE_JS_ATTRIBUTE_NAME, - ), - ); - t = false; + if (!e.safeMode) { + console.error(e.text.attributeNotValidErrorText.replace("{{attribute_name}}", Constants.JSONTREE_JS_ATTRIBUTE_NAME)); + n = false; } } } else { - if (!_configuration.safeMode) { - console.error( - _configuration.text.attributeNotSetErrorText.replace('{{attribute_name}}', Constants.JSONTREE_JS_ATTRIBUTE_NAME), - ); - t = false; + if (!e.safeMode) { + console.error(e.text.attributeNotSetErrorText.replace("{{attribute_name}}", Constants.JSONTREE_JS_ATTRIBUTE_NAME)); + n = false; } } } - return t; + return n; } - function renderControl(e) { + function l(e) { Trigger.customEvent(e.events.onBeforeRender, e._currentView.element); + ToolTip.renderControl(e); if (!Is.definedString(e._currentView.element.id)) { - e._currentView.element.id = Str.newGuid(); + e._currentView.element.id = crypto.randomUUID(); + e._currentView.idSet = true; } - e._currentView.element.className = 'json-tree-js'; + e._currentView.element.className = "json-tree-js"; e._currentView.element.removeAttribute(Constants.JSONTREE_JS_ATTRIBUTE_NAME); - if (!_elements_Data.hasOwnProperty(e._currentView.element.id)) { - _elements_Data[e._currentView.element.id] = e; + if (e.enableFullScreenToggling && e.openInFullScreenMode) { + DomElement.addClass(e._currentView.element, "full-screen"); } - renderControlContainer(e); + if (!t.hasOwnProperty(e._currentView.element.id)) { + t[e._currentView.element.id] = e; + n++; + } + i(e); + p(e); Trigger.customEvent(e.events.onRenderComplete, e._currentView.element); } - function renderControlContainer(e) { - let t = _elements_Data[e._currentView.element.id].data; - e._currentView.element.innerHTML = ''; - renderControlTitleBar(e, t); - if (e.showArrayItemsAsSeparateObjects) { - t = t[e._currentView.dataArrayCurrentIndex]; - } - if (Is.definedObject(t) && !Is.definedArray(t)) { - renderObject(e._currentView.element, e, t, true); - } else if (Is.definedArray(t)) { - renderArray(e._currentView.element, e, t); - } - } - function renderControlTitleBar(e, t) { - if (e.title.show || e.title.showTreeControls || e.title.showCopyButton) { - const n = DomElement.create(e._currentView.element, 'div', 'title-bar'); - const r = DomElement.create(n, 'div', 'controls'); - if (e.title.show) { - DomElement.createWithHTML(n, 'div', 'title', e.title.text, r); - } - if (e.title.showCopyButton) { - const t = DomElement.createWithHTML(r, 'button', 'copy-all', _configuration.text.copyAllButtonSymbolText); - t.title = _configuration.text.copyAllButtonText; - t.onclick = () => { - let t = null; - if (e.copyOnlyCurrentPage && e.showArrayItemsAsSeparateObjects) { - t = JSON.stringify(_elements_Data[e._currentView.element.id].data[e._currentView.dataArrayCurrentIndex], null, 2); - } else { - t = JSON.stringify(_elements_Data[e._currentView.element.id].data, null, 2); - } - navigator.clipboard.writeText(t); - Trigger.customEvent(e.events.onCopyAll, t); - }; + function i(n, o = false) { + let r = t[n._currentView.element.id].data; + ToolTip.hide(n); + n._currentView.element.innerHTML = ""; + n._currentView.editMode = false; + n._currentView.contentPanelsIndex = 0; + a(n, r); + const l = DomElement.create(n._currentView.element, "div", "contents"); + if (o) { + DomElement.addClass(l, "page-switch"); + } + F(l, n); + if (n.showArrayItemsAsSeparateObjects && Is.definedArray(r)) { + r = r[n._currentView.dataArrayCurrentIndex]; + } + if (Is.definedArray(r) || Is.definedSet(r)) { + y(l, n, r); + } else if (Is.definedObject(r)) { + b(l, n, r); + } + if (l.innerHTML === "") { + DomElement.createWithHTML(l, "span", "no-json-text", e.text.noJsonToViewText); + n._currentView.titleBarButtons.style.display = "none"; + } else { + n._currentView.titleBarButtons.style.display = "block"; + } + } + function a(t, n) { + if (t.title.show || t.title.showTreeControls || t.title.showCopyButton) { + const o = DomElement.create(t._currentView.element, "div", "title-bar"); + if (t.enableFullScreenToggling) { + o.ondblclick = () => s(t); } - if (e.title.showTreeControls) { - const t = DomElement.createWithHTML(r, 'button', 'openAll', _configuration.text.openAllButtonSymbolText); - t.title = _configuration.text.openAllButtonText; - const n = DomElement.createWithHTML(r, 'button', 'closeAll', _configuration.text.closeAllButtonSymbolText); - n.title = _configuration.text.closeAllButtonText; - t.onclick = () => { - openAllNodes(e); - }; - n.onclick = () => { - closeAllNodes(e); - }; + t._currentView.titleBarButtons = DomElement.create(o, "div", "controls"); + if (t.title.show) { + DomElement.createWithHTML(o, "div", "title", t.title.text, t._currentView.titleBarButtons); + } + if (t.title.showCopyButton) { + const o = DomElement.createWithHTML(t._currentView.titleBarButtons, "button", "copy-all", e.text.copyAllButtonSymbolText); + o.onclick = () => u(t, n); + o.ondblclick = DomElement.cancelBubble; + ToolTip.add(o, t, e.text.copyAllButtonText); + } + if (t.title.showTreeControls) { + const n = DomElement.createWithHTML(t._currentView.titleBarButtons, "button", "openAll", e.text.openAllButtonSymbolText); + n.onclick = () => c(t); + n.ondblclick = DomElement.cancelBubble; + ToolTip.add(n, t, e.text.openAllButtonText); + const o = DomElement.createWithHTML(t._currentView.titleBarButtons, "button", "closeAll", e.text.closeAllButtonSymbolText); + o.onclick = () => d(t); + o.ondblclick = DomElement.cancelBubble; + ToolTip.add(o, t, e.text.closeAllButtonText); } - if (e.showArrayItemsAsSeparateObjects && Is.definedArray(t) && t.length > 1) { - const n = DomElement.createWithHTML(r, 'button', 'back', _configuration.text.backButtonSymbolText); - n.title = _configuration.text.backButtonText; - if (e._currentView.dataArrayCurrentIndex > 0) { - n.onclick = () => { - e._currentView.dataArrayCurrentIndex--; - renderControlContainer(e); - }; + if (t.showArrayItemsAsSeparateObjects && Is.definedArray(n) && n.length > 1) { + t._currentView.backButton = DomElement.createWithHTML(t._currentView.titleBarButtons, "button", "back", e.text.backButtonSymbolText); + t._currentView.backButton.ondblclick = DomElement.cancelBubble; + ToolTip.add(t._currentView.backButton, t, e.text.backButtonText); + if (t._currentView.dataArrayCurrentIndex > 0) { + t._currentView.backButton.onclick = () => f(t); } else { - n.disabled = true; - } - const o = DomElement.createWithHTML(r, 'button', 'next', _configuration.text.nextButtonSymbolText); - o.title = _configuration.text.nextButtonText; - if (e._currentView.dataArrayCurrentIndex < t.length - 1) { - o.onclick = () => { - e._currentView.dataArrayCurrentIndex++; - renderControlContainer(e); - }; + t._currentView.backButton.disabled = true; + } + t._currentView.nextButton = DomElement.createWithHTML(t._currentView.titleBarButtons, "button", "next", e.text.nextButtonSymbolText); + t._currentView.nextButton.ondblclick = DomElement.cancelBubble; + ToolTip.add(t._currentView.nextButton, t, e.text.nextButtonText); + if (t._currentView.dataArrayCurrentIndex < n.length - 1) { + t._currentView.nextButton.onclick = () => g(t); } else { - o.disabled = true; + t._currentView.nextButton.disabled = true; } } else { - e.showArrayItemsAsSeparateObjects = false; + if (Is.definedArray(n)) { + t.showArrayItemsAsSeparateObjects = false; + } } } } - function openAllNodes(e) { + function s(e) { + if (e._currentView.element.classList.contains("full-screen")) { + DomElement.removeClass(e._currentView.element, "full-screen"); + } else { + DomElement.addClass(e._currentView.element, "full-screen"); + } + } + function u(e, t) { + let n = null; + let o = m; + if (Is.definedFunction(e.events.onCopyJsonReplacer)) { + o = e.events.onCopyJsonReplacer; + } + if (e.copyOnlyCurrentPage && e.showArrayItemsAsSeparateObjects) { + n = JSON.stringify(t[e._currentView.dataArrayCurrentIndex], o, e.copyIndentSpaces); + } else { + n = JSON.stringify(t, o, e.copyIndentSpaces); + } + navigator.clipboard.writeText(n); + Trigger.customEvent(e.events.onCopyAll, n); + } + function c(e) { e.showAllAsClosed = false; - renderControlContainer(e); + e._currentView.contentPanelsOpen = {}; + i(e); Trigger.customEvent(e.events.onOpenAll, e._currentView.element); } - function closeAllNodes(e) { + function d(e) { e.showAllAsClosed = true; - renderControlContainer(e); + e._currentView.contentPanelsOpen = {}; + i(e); Trigger.customEvent(e.events.onCloseAll, e._currentView.element); } - function renderObject(e, t, n, r = false) { - const o = DomElement.create(e, 'div', 'object-type-title'); - const l = DomElement.create(e, 'div', 'object-type-contents'); - const a = t.showArrowToggles ? DomElement.create(o, 'div', 'down-arrow') : null; - const i = renderObjectValues(a, l, t, n); - const s = DomElement.createWithHTML(o, 'span', t.showValueColors ? 'object' : '', _configuration.text.objectText); - if (r && t.showArrayItemsAsSeparateObjects) { - let e = t.useZeroIndexingForArrays - ? t._currentView.dataArrayCurrentIndex.toString() - : (t._currentView.dataArrayCurrentIndex + 1).toString(); - DomElement.createWithHTML(o, 'span', t.showValueColors ? 'object data-array-index' : 'data-array-index', `[${e}]:`, s); - } - if (t.showCounts && i > 0) { - DomElement.createWithHTML(o, 'span', t.showValueColors ? 'object count' : 'count', `{${i}}`); - } - } - function renderArray(e, t, n) { - const r = DomElement.create(e, 'div', 'object-type-title'); - const o = DomElement.create(e, 'div', 'object-type-contents'); - const l = t.showArrowToggles ? DomElement.create(r, 'div', 'down-arrow') : null; - DomElement.createWithHTML(r, 'span', t.showValueColors ? 'array' : '', _configuration.text.arrayText); - renderArrayValues(l, o, t, n); - if (t.showCounts) { - DomElement.createWithHTML(r, 'span', t.showValueColors ? 'array count' : 'count', `[${n.length}]`); - } - } - function renderObjectValues(e, t, n, r) { - let o = 0; - let l = []; - for (let e in r) { - if (r.hasOwnProperty(e)) { - l.push(e); + function f(e) { + if (e._currentView.backButton !== null && !e._currentView.backButton.disabled) { + e._currentView.dataArrayCurrentIndex--; + i(e, true); + Trigger.customEvent(e.events.onBackPage, e._currentView.element); + } + } + function g(e) { + if (e._currentView.nextButton !== null && !e._currentView.nextButton.disabled) { + e._currentView.dataArrayCurrentIndex++; + i(e, true); + Trigger.customEvent(e.events.onNextPage, e._currentView.element); + } + } + function m(t, n) { + if (Is.definedBigInt(n)) { + n = n.toString(); + } else if (Is.definedSymbol(n)) { + n = n.toString(); + } else if (Is.definedFunction(n)) { + n = Default2.getFunctionName(n, e); + } + return n; + } + function p(e, t = true) { + const n = t ? document.addEventListener : document.removeEventListener; + n("keydown", (t => w(t, e))); + } + function w(e, o) { + if (o.shortcutKeysEnabled && n === 1 && t.hasOwnProperty(o._currentView.element.id)) { + if (e.code === "ArrowLeft") { + e.preventDefault(); + f(o); + } else if (e.code === "ArrowRight") { + e.preventDefault(); + g(o); + } else if (e.code === "ArrowUp") { + e.preventDefault(); + d(o); + } else if (e.code === "ArrowDown") { + e.preventDefault(); + c(o); } } - if (n.sortPropertyNames) { - l = l.sort(); - if (!n.sortPropertyNamesInAlphabeticalOrder) { - l = l.reverse(); + } + function b(t, n, o) { + const r = Is.definedMap(o); + const l = r ? "map" : "object"; + const i = r ? Default2.getObjectFromMap(o) : o; + const a = _(i, n); + const s = a.length; + if (s !== 0 || !n.ignore.emptyObjects) { + const u = DomElement.create(t, "div", "object-type-title"); + const c = DomElement.create(t, "div", "object-type-contents last-item"); + const d = n.showArrowToggles ? DomElement.create(u, "div", "down-arrow") : null; + const f = DomElement.createWithHTML(u, "span", n.showValueColors ? `${l} main-title` : "main-title", r ? e.text.mapText : e.text.objectText); + let g = null; + if (n.showArrayItemsAsSeparateObjects) { + let e = n.useZeroIndexingForArrays ? n._currentView.dataArrayCurrentIndex.toString() : (n._currentView.dataArrayCurrentIndex + 1).toString(); + if (n.showArrayIndexBrackets) { + e = `[${e}]${" "}:`; + } + DomElement.createWithHTML(u, "span", n.showValueColors ? `${l} data-array-index` : "data-array-index", e, f); + } + if (n.showCounts && s > 0) { + DomElement.createWithHTML(u, "span", n.showValueColors ? `${l} count` : "count", `{${s}}`); } + if (n.showOpeningClosingCurlyBraces) { + g = DomElement.createWithHTML(u, "span", "opening-symbol", "{"); + } + D(d, null, c, n, i, a, g, false, true, ""); + E(n, f, o, l, false); } - const a = l.length; - for (let e = 0; e < a; e++) { - const i = l[e]; - if (r.hasOwnProperty(i)) { - renderValue(t, n, i, r[i], e === a - 1); - o++; + } + function y(t, n, o) { + const r = Is.definedSet(o); + const l = r ? "set" : "array"; + const i = r ? Default2.getArrayFromSet(o) : o; + const a = DomElement.create(t, "div", "object-type-title"); + const s = DomElement.create(t, "div", "object-type-contents last-item"); + const u = n.showArrowToggles ? DomElement.create(a, "div", "down-arrow") : null; + const c = DomElement.createWithHTML(a, "span", n.showValueColors ? `${l} main-title` : "main-title", r ? e.text.setText : e.text.arrayText); + let d = null; + if (n.showCounts) { + DomElement.createWithHTML(a, "span", n.showValueColors ? `${l} count` : "count", `[${i.length}]`); + } + if (n.showOpeningClosingCurlyBraces) { + d = DomElement.createWithHTML(a, "span", "opening-symbol", "["); + } + T(u, null, s, n, i, d, false, true, ""); + E(n, c, o, l, false); + } + function D(e, t, n, o, r, l, i, a, s, u) { + const c = l.length; + for (let e = 0; e < c; e++) { + const t = l[e]; + const i = u === "" ? t : `${u}${"\\"}${t}`; + if (r.hasOwnProperty(t)) { + v(r, n, o, t, r[t], e === c - 1, false, i); } } - addArrowEvent(n, e, t); - return o; + if (o.showOpeningClosingCurlyBraces) { + O(o, n, "}", a, s); + } + S(o, e, t, n, i); } - function renderArrayValues(e, t, n, r) { - const o = r.length; - if (!n.reverseArrayValues) { - for (let e = 0; e < o; e++) { - renderValue(t, n, getIndexName(n, e, o), r[e], e === o - 1); + function T(e, t, n, o, r, l, i, a, s) { + const u = r.length; + if (!o.reverseArrayValues) { + for (let e = 0; e < u; e++) { + const t = B(e, o); + const l = s === "" ? t.toString() : `${s}${"\\"}${t}`; + v(r, n, o, I(o, t, u), r[e], e === u - 1, true, l); } } else { - for (let e = o; e--; ) { - renderValue(t, n, getIndexName(n, e, o), r[e], e === 0); - } - } - addArrowEvent(n, e, t); - } - function renderValue(e, t, n, r, o) { - const l = DomElement.create(e, 'div', 'object-type-value'); - const a = t.showArrowToggles ? DomElement.create(l, 'div', 'no-arrow') : null; - let i = null; - let s = null; - let u = false; - let c = null; - let d = true; - DomElement.createWithHTML(l, 'span', 'title', n); - DomElement.createWithHTML(l, 'span', 'split', ':'); - if (!Is.defined(r)) { - if (!t.ignore.nullValues) { - i = t.showValueColors ? 'null' : ''; - s = DomElement.createWithHTML(l, 'span', i, 'null'); - d = false; - if (Is.definedFunction(t.events.onNullRender)) { - Trigger.customEvent(t.events.onNullRender, s); - } - createComma(t, l, o); + for (let e = u; e--; ) { + const t = B(e, o); + const l = s === "" ? t.toString() : `${s}${"\\"}${t}`; + v(r, n, o, I(o, t, u), r[e], e === 0, true, l); + } + } + if (o.showOpeningClosingCurlyBraces) { + O(o, n, "]", i, a); + } + S(o, e, t, n, l); + } + function v(t, n, o, r, l, i, a, s) { + const u = DomElement.create(n, "div", "object-type-value"); + const c = o.showArrowToggles ? DomElement.create(u, "div", "no-arrow") : null; + let d = null; + let f = null; + let g = false; + let m = null; + const p = DomElement.createWithHTML(u, "span", "title", r); + let w = false; + if (i) { + DomElement.addClass(u, "last-item"); + } + DomElement.createWithHTML(u, "span", "split", ":"); + if (!a) { + h(o, t, r, p); + } + if (l === null) { + if (!o.ignore.nullValues) { + d = o.showValueColors ? `${"null"} value non-value` : "value non-value"; + f = DomElement.createWithHTML(u, "span", d, "null"); + m = "null"; + if (Is.definedFunction(o.events.onNullRender)) { + Trigger.customEvent(o.events.onNullRender, f); + } + A(o, u, i); + } else { + g = true; + } + } else if (l === void 0) { + if (!o.ignore.undefinedValues) { + d = o.showValueColors ? `${"undefined"} value non-value` : "value non-value"; + f = DomElement.createWithHTML(u, "span", d, "undefined"); + m = "undefined"; + if (Is.definedFunction(o.events.onUndefinedRender)) { + Trigger.customEvent(o.events.onUndefinedRender, f); + } + A(o, u, i); + } else { + g = true; + } + } else if (Is.definedFunction(l)) { + if (!o.ignore.functionValues) { + d = o.showValueColors ? `${"function"} value non-value` : "value non-value"; + f = DomElement.createWithHTML(u, "span", d, Default2.getFunctionName(l, e)); + m = "function"; + if (Is.definedFunction(o.events.onFunctionRender)) { + Trigger.customEvent(o.events.onFunctionRender, f); + } + A(o, u, i); } else { - u = true; + g = true; } - } else if (Is.definedFunction(r)) { - if (!t.ignore.functionValues) { - i = t.showValueColors ? 'function' : ''; - s = DomElement.createWithHTML(l, 'span', i, Default.getFunctionName(r)); - c = 'function'; - if (Is.definedFunction(t.events.onFunctionRender)) { - Trigger.customEvent(t.events.onFunctionRender, s); + } else if (Is.definedBoolean(l)) { + if (!o.ignore.booleanValues) { + d = o.showValueColors ? `${"boolean"} value` : "value"; + f = DomElement.createWithHTML(u, "span", d, l); + m = "boolean"; + w = o.allowEditing.booleanValues; + V(o, t, r, l, f, a, w); + if (Is.definedFunction(o.events.onBooleanRender)) { + Trigger.customEvent(o.events.onBooleanRender, f); } - createComma(t, l, o); + A(o, u, i); } else { - u = true; + g = true; } - } else if (Is.definedBoolean(r)) { - if (!t.ignore.booleanValues) { - i = t.showValueColors ? 'boolean' : ''; - s = DomElement.createWithHTML(l, 'span', i, r); - c = 'boolean'; - if (Is.definedFunction(t.events.onBooleanRender)) { - Trigger.customEvent(t.events.onBooleanRender, s); + } else if (Is.definedDecimal(l)) { + if (!o.ignore.decimalValues) { + const e = Default2.getFixedDecimalPlacesValue(l, o.maximumDecimalPlaces); + d = o.showValueColors ? `${"decimal"} value` : "value"; + f = DomElement.createWithHTML(u, "span", d, e); + m = "decimal"; + w = o.allowEditing.decimalValues; + V(o, t, r, l, f, a, w); + if (Is.definedFunction(o.events.onDecimalRender)) { + Trigger.customEvent(o.events.onDecimalRender, f); } - createComma(t, l, o); + A(o, u, i); } else { - u = true; - } - } else if (Is.definedDecimal(r)) { - if (!t.ignore.decimalValues) { - const e = Default.getFixedDecimalPlacesValue(r, t.maximumDecimalPlaces); - i = t.showValueColors ? 'decimal' : ''; - s = DomElement.createWithHTML(l, 'span', i, e); - c = 'decimal'; - if (Is.definedFunction(t.events.onDecimalRender)) { - Trigger.customEvent(t.events.onDecimalRender, s); - } - createComma(t, l, o); + g = true; + } + } else if (Is.definedNumber(l)) { + if (!o.ignore.numberValues) { + d = o.showValueColors ? `${"number"} value` : "value"; + f = DomElement.createWithHTML(u, "span", d, l); + m = "number"; + w = o.allowEditing.numberValues; + V(o, t, r, l, f, a, w); + if (Is.definedFunction(o.events.onNumberRender)) { + Trigger.customEvent(o.events.onNumberRender, f); + } + A(o, u, i); + } else { + g = true; + } + } else if (Is.definedBigInt(l)) { + if (!o.ignore.bigIntValues) { + d = o.showValueColors ? `${"bigint"} value` : "value"; + f = DomElement.createWithHTML(u, "span", d, l); + m = "bigint"; + w = o.allowEditing.bigIntValues; + V(o, t, r, l, f, a, w); + if (Is.definedFunction(o.events.onBigIntRender)) { + Trigger.customEvent(o.events.onBigIntRender, f); + } + A(o, u, i); } else { - u = true; + g = true; } - } else if (Is.definedNumber(r)) { - if (!t.ignore.numberValues) { - i = t.showValueColors ? 'number' : ''; - s = DomElement.createWithHTML(l, 'span', i, r); - c = 'number'; - if (Is.definedFunction(t.events.onNumberRender)) { - Trigger.customEvent(t.events.onNumberRender, s); + } else if (Is.definedString(l) && Is.String.guid(l)) { + if (!o.ignore.guidValues) { + d = o.showValueColors ? `${"guid"} value` : "value"; + f = DomElement.createWithHTML(u, "span", d, l); + m = "guid"; + w = o.allowEditing.guidValues; + V(o, t, r, l, f, a, w); + if (Is.definedFunction(o.events.onGuidRender)) { + Trigger.customEvent(o.events.onGuidRender, f); + } + A(o, u, i); + } else { + g = true; + } + } else if (Is.definedString(l) && (Is.String.hexColor(l) || Is.String.rgbColor(l))) { + if (!o.ignore.colorValues) { + d = o.showValueColors ? `${"color"} value` : "value"; + f = DomElement.createWithHTML(u, "span", d, l); + m = "color"; + w = o.allowEditing.colorValues; + if (o.showValueColors) { + f.style.color = l; + } + V(o, t, r, l, f, a, w); + if (Is.definedFunction(o.events.onColorRender)) { + Trigger.customEvent(o.events.onColorRender, f); } - createComma(t, l, o); + A(o, u, i); } else { - u = true; + g = true; } - } else if (Is.definedString(r)) { - if (!t.ignore.stringValues) { - let e = null; - if (t.showValueColors && t.showStringHexColors && Is.hexColor(r)) { - e = r; + } else if (Is.definedString(l)) { + if (!o.ignore.stringValues) { + if (o.parse.stringsToBooleans && Is.String.boolean(l)) { + v(t, n, o, r, l.toString().toLowerCase().trim() === "true", i, a, s); + g = true; + } else if (o.parse.stringsToNumbers && !isNaN(l)) { + v(t, n, o, r, parseFloat(l), i, a, s); + g = true; + } else if (o.parse.stringsToDates && Is.String.date(l)) { + v(t, n, o, r, new Date(l), i, a, s); + g = true; } else { - if (t.maximumStringLength > 0 && r.length > t.maximumStringLength) { - r = r.substring(0, t.maximumStringLength) + _configuration.text.ellipsisText; + if (o.maximumStringLength > 0 && l.length > o.maximumStringLength) { + l = l.substring(0, o.maximumStringLength) + e.text.ellipsisText; } + const n = o.showStringQuotes ? `"${l}"` : l; + d = o.showValueColors ? `${"string"} value` : "value"; + f = DomElement.createWithHTML(u, "span", d, n); + m = "string"; + w = o.allowEditing.stringValues; + V(o, t, r, l, f, a, w); + if (Is.definedFunction(o.events.onStringRender)) { + Trigger.customEvent(o.events.onStringRender, f); + } + A(o, u, i); + } + } else { + g = true; + } + } else if (Is.definedDate(l)) { + if (!o.ignore.dateValues) { + d = o.showValueColors ? `${"date"} value` : "value"; + f = DomElement.createWithHTML(u, "span", d, DateTime.getCustomFormattedDateText(e, l, o.dateTimeFormat)); + m = "date"; + w = o.allowEditing.dateValues; + V(o, t, r, l, f, a, w); + if (Is.definedFunction(o.events.onDateRender)) { + Trigger.customEvent(o.events.onDateRender, f); + } + A(o, u, i); + } else { + g = true; + } + } else if (Is.definedSymbol(l)) { + if (!o.ignore.symbolValues) { + d = o.showValueColors ? `${"symbol"} value` : "value"; + f = DomElement.createWithHTML(u, "span", d, l.toString()); + m = "symbol"; + if (Is.definedFunction(o.events.onSymbolRender)) { + Trigger.customEvent(o.events.onSymbolRender, f); + } + A(o, u, i); + } else { + g = true; + } + } else if (Is.definedRegExp(l)) { + if (!o.ignore.regExpValues) { + d = o.showValueColors ? `${"regexp"} value` : "value"; + f = DomElement.createWithHTML(u, "span", d, l.source.toString()); + m = "regexp"; + if (Is.definedFunction(o.events.onRegExpRender)) { + Trigger.customEvent(o.events.onRegExpRender, f); } - const n = t.showStringQuotes ? `"${r}"` : r; - i = t.showValueColors ? 'string' : ''; - s = DomElement.createWithHTML(l, 'span', i, n); - c = 'string'; - if (Is.definedString(e)) { - s.style.color = e; + A(o, u, i); + } else { + g = true; + } + } else if (Is.definedSet(l)) { + if (!o.ignore.setValues) { + const t = Default2.getArrayFromSet(l); + const n = DomElement.create(u, "span", o.showValueColors ? "set" : ""); + const r = DomElement.create(u, "div", "object-type-contents"); + let a = null; + if (i) { + DomElement.addClass(r, "last-item"); } - if (Is.definedFunction(t.events.onStringRender)) { - Trigger.customEvent(t.events.onStringRender, s); + f = DomElement.createWithHTML(n, "span", "main-title", e.text.setText); + m = "set"; + if (o.showCounts) { + DomElement.createWithHTML(n, "span", "count", `[${t.length}]`); } - createComma(t, l, o); + if (o.showOpeningClosingCurlyBraces) { + a = DomElement.createWithHTML(n, "span", "opening-symbol", "["); + } + let d = A(o, n, i); + T(c, d, r, o, t, a, true, i, s); } else { - u = true; + g = true; } - } else if (Is.definedDate(r)) { - if (!t.ignore.dateValues) { - i = t.showValueColors ? 'date' : ''; - s = DomElement.createWithHTML(l, 'span', i, DateTime.getCustomFormattedDateText(_configuration, r, t.dateTimeFormat)); - c = 'date'; - if (Is.definedFunction(t.events.onDateRender)) { - Trigger.customEvent(t.events.onDateRender, s); + } else if (Is.definedArray(l)) { + if (!o.ignore.arrayValues) { + const t = DomElement.create(u, "span", o.showValueColors ? "array" : ""); + const n = DomElement.create(u, "div", "object-type-contents"); + let r = null; + if (i) { + DomElement.addClass(n, "last-item"); + } + f = DomElement.createWithHTML(t, "span", "main-title", e.text.arrayText); + m = "array"; + if (o.showCounts) { + DomElement.createWithHTML(t, "span", "count", `[${l.length}]`); } - createComma(t, l, o); + if (o.showOpeningClosingCurlyBraces) { + r = DomElement.createWithHTML(t, "span", "opening-symbol", "["); + } + let a = A(o, t, i); + T(c, a, n, o, l, r, true, i, s); } else { - u = true; - } - } else if (Is.definedObject(r) && !Is.definedArray(r)) { - if (!t.ignore.objectValues) { - const e = DomElement.create(l, 'span', t.showValueColors ? 'object' : ''); - const n = DomElement.create(l, 'div', 'object-type-contents'); - const i = renderObjectValues(a, n, t, r); - DomElement.createWithHTML(e, 'span', 'title', _configuration.text.objectText); - if (t.showCounts && i > 0) { - DomElement.createWithHTML(e, 'span', 'count', `{${i}}`); - } - createComma(t, e, o); - c = 'object'; + g = true; + } + } else if (Is.definedMap(l)) { + if (!o.ignore.mapValues) { + const t = Default2.getObjectFromMap(l); + const n = _(t, o); + const r = n.length; + if (r === 0 && o.ignore.emptyObjects) { + g = true; + } else { + const l = DomElement.create(u, "span", o.showValueColors ? "map" : ""); + const a = DomElement.create(u, "div", "object-type-contents"); + let d = null; + if (i) { + DomElement.addClass(a, "last-item"); + } + f = DomElement.createWithHTML(l, "span", "main-title", e.text.mapText); + m = "map"; + if (o.showCounts && r > 0) { + DomElement.createWithHTML(l, "span", "count", `{${r}}`); + } + if (o.showOpeningClosingCurlyBraces) { + d = DomElement.createWithHTML(l, "span", "opening-symbol", "{"); + } + let g = A(o, l, i); + D(c, g, a, o, t, n, d, true, i, s); + } } else { - u = true; - } - } else if (Is.definedArray(r)) { - if (!t.ignore.arrayValues) { - const e = DomElement.create(l, 'span', t.showValueColors ? 'array' : ''); - const n = DomElement.create(l, 'div', 'object-type-contents'); - DomElement.createWithHTML(e, 'span', 'title', _configuration.text.arrayText); - if (t.showCounts) { - DomElement.createWithHTML(e, 'span', 'count', `[${r.length}]`); - } - createComma(t, e, o); - renderArrayValues(a, n, t, r); - c = 'array'; + g = true; + } + } else if (Is.definedObject(l)) { + if (!o.ignore.objectValues) { + const t = _(l, o); + const n = t.length; + if (n === 0 && o.ignore.emptyObjects) { + g = true; + } else { + const r = DomElement.create(u, "span", o.showValueColors ? "object" : ""); + const a = DomElement.create(u, "div", "object-type-contents"); + let d = null; + if (i) { + DomElement.addClass(a, "last-item"); + } + f = DomElement.createWithHTML(r, "span", "main-title", e.text.objectText); + m = "object"; + if (o.showCounts && n > 0) { + DomElement.createWithHTML(r, "span", "count", `{${n}}`); + } + if (o.showOpeningClosingCurlyBraces) { + d = DomElement.createWithHTML(r, "span", "opening-symbol", "{"); + } + let g = A(o, r, i); + D(c, g, a, o, l, t, d, true, i, s); + } } else { - u = true; + g = true; } } else { - if (!t.ignore.unknownValues) { - i = t.showValueColors ? 'unknown' : ''; - s = DomElement.createWithHTML(l, 'span', i, r.toString()); - c = 'unknown'; - if (Is.definedFunction(t.events.onUnknownRender)) { - Trigger.customEvent(t.events.onUnknownRender, s); - } - createComma(t, l, o); + if (!o.ignore.unknownValues) { + d = o.showValueColors ? `${"unknown"} value non-value` : "value non-value"; + f = DomElement.createWithHTML(u, "span", d, l.toString()); + m = "unknown"; + if (Is.definedFunction(o.events.onUnknownRender)) { + Trigger.customEvent(o.events.onUnknownRender, f); + } + A(o, u, i); } else { - u = true; + g = true; } } - if (u) { - e.removeChild(l); + if (g) { + n.removeChild(u); } else { - if (Is.defined(s)) { - addValueClickEvent(t, s, r, c, d); + if (Is.defined(f)) { + x(o, s, p, f); + E(o, f, l, m, w); } } } - function addValueClickEvent(e, t, n, r, o) { - if (o && Is.definedFunction(e.events.onValueClick)) { - t.onclick = () => { - Trigger.customEvent(e.events.onValueClick, n, r); + function x(e, t, n, o) { + if (Is.definedObject(e.valueToolTips)) { + if (!e.valueToolTips.hasOwnProperty(t)) { + const e = t.split("\\"); + const n = e.length - 1; + for (let t = 0; t < n; t++) { + e[t] = ".."; + } + t = e.join("\\"); + } + if (e.valueToolTips.hasOwnProperty(t)) { + ToolTip.add(n, e, e.valueToolTips[t], "jsontree-js-tooltip-value"); + ToolTip.add(o, e, e.valueToolTips[t], "jsontree-js-tooltip-value"); + } + } + } + function h(e, t, n, o) { + if (e.allowEditing.propertyNames) { + o.ondblclick = () => { + clearTimeout(e._currentView.valueClickTimerId); + e._currentView.valueClickTimerId = 0; + e._currentView.editMode = true; + DomElement.addClass(o, "editable"); + o.setAttribute("contenteditable", "true"); + o.focus(); + DomElement.selectAllText(o); + o.onblur = () => i(e, false); + o.onkeydown = r => { + if (r.code == "Escape") { + r.preventDefault(); + o.setAttribute("contenteditable", "false"); + } else if (r.code == "Enter") { + r.preventDefault(); + const l = o.innerText; + if (l !== n) { + if (l.trim() === "") { + delete t[n]; + } else { + if (!t.hasOwnProperty(l)) { + const e = t[n]; + delete t[n]; + t[l] = e; + } + } + Trigger.customEvent(e.events.onJsonEdit, e._currentView.element); + } + o.setAttribute("contenteditable", "false"); + } + }; }; - } else { - DomElement.addClass(t, 'no-hover'); } } - function addArrowEvent(e, t, n) { - if (Is.defined(t)) { + function V(e, t, n, o, r, l, a) { + if (a) { + r.ondblclick = () => { + clearTimeout(e._currentView.valueClickTimerId); + e._currentView.valueClickTimerId = 0; + e._currentView.editMode = true; + DomElement.addClass(r, "editable"); + r.setAttribute("contenteditable", "true"); + if (Is.definedDate(o) && !e.includeTimeZoneInDateTimeEditing) { + r.innerText = JSON.stringify(o).replace(/['"]+/g, ""); + } else { + r.innerText = o.toString(); + } + r.focus(); + DomElement.selectAllText(r); + r.onblur = () => i(e, false); + r.onkeydown = i => { + if (i.code == "Escape") { + i.preventDefault(); + r.setAttribute("contenteditable", "false"); + } else if (i.code == "Enter") { + i.preventDefault(); + const a = r.innerText; + if (a.trim() === "") { + if (l) { + t.splice(C(n), 1); + } else { + delete t[n]; + } + } else { + let r = null; + if (Is.definedBoolean(o)) { + r = a.toLowerCase() === "true"; + } else if (Is.definedDecimal(o) && !isNaN(+a)) { + r = parseFloat(a); + } else if (Is.definedNumber(o) && !isNaN(+a)) { + r = parseInt(a); + } else if (Is.definedString(o)) { + r = a; + } else if (Is.definedDate(o)) { + r = new Date(a); + } else if (Is.definedBigInt(o)) { + r = BigInt(a); + } + if (r !== null) { + if (l) { + t[C(n)] = r; + } else { + t[n] = r; + } + Trigger.customEvent(e.events.onJsonEdit, e._currentView.element); + } + } + r.setAttribute("contenteditable", "false"); + } + }; + }; + } + } + function E(e, t, n, o, r) { + if (Is.definedFunction(e.events.onValueClick)) { t.onclick = () => { - if (t.className === 'down-arrow') { - n.style.display = 'none'; - t.className = 'right-arrow'; + if (r) { + e._currentView.valueClickTimerId = setTimeout((() => { + if (!e._currentView.editMode) { + Trigger.customEvent(e.events.onValueClick, n, o); + } + }), e.editingValueClickDelay); } else { - n.style.display = 'block'; - t.className = 'down-arrow'; + Trigger.customEvent(e.events.onValueClick, n, o); } }; - if (e.showAllAsClosed) { - n.style.display = 'none'; - t.className = 'right-arrow'; + } else { + DomElement.addClass(t, "no-hover"); + } + } + function S(e, t, n, o, r) { + const l = e._currentView.contentPanelsIndex; + const i = e._currentView.dataArrayCurrentIndex; + if (!e._currentView.contentPanelsOpen.hasOwnProperty(i)) { + e._currentView.contentPanelsOpen[i] = {}; + } + const a = () => { + o.style.display = "none"; + e._currentView.contentPanelsOpen[i][l] = true; + if (Is.defined(t)) { + t.className = "right-arrow"; + } + if (Is.defined(r)) { + r.style.display = "none"; + } + if (Is.defined(n)) { + n.style.display = "inline-block"; + } + }; + const s = () => { + o.style.display = "block"; + e._currentView.contentPanelsOpen[i][l] = false; + if (Is.defined(t)) { + t.className = "down-arrow"; + } + if (Is.defined(r)) { + r.style.display = "inline-block"; + } + if (Is.defined(n)) { + n.style.display = "none"; + } + }; + const u = e => { + if (e) { + a(); } else { - t.className = 'down-arrow'; + s(); } + }; + let c = e.showAllAsClosed; + if (e._currentView.contentPanelsOpen[i].hasOwnProperty(l)) { + c = e._currentView.contentPanelsOpen[i][l]; + } else { + e._currentView.contentPanelsOpen[i][l] = c; } + if (Is.defined(t)) { + t.onclick = () => u(t.className === "down-arrow"); + } + u(c); + e._currentView.contentPanelsIndex++; } - function createComma(e, t, n) { + function A(e, t, n) { + let o = null; if (e.showCommas && !n) { - DomElement.createWithHTML(t, 'span', 'comma', ','); + o = DomElement.createWithHTML(t, "span", "comma", ","); } + return o; } - function getIndexName(e, t, n) { - let r = e.useZeroIndexingForArrays ? t.toString() : (t + 1).toString(); + function B(e, t) { + return t.useZeroIndexingForArrays ? e : e + 1; + } + function I(e, t, n) { + let o = t.toString(); if (!e.addArrayIndexPadding) { - r = Str.padNumber(parseInt(r), n.toString().length); + o = Str.padNumber(parseInt(o), n.toString().length); + } + if (e.showArrayIndexBrackets) { + o = `[${o}]`; } - return `[${r}]`; + return o; } - function getObjectFromString(objectString) { - const result = { - parsed: true, - object: null, - }; - try { - if (Is.definedString(objectString)) { - result.object = JSON.parse(objectString); + function C(e) { + return parseInt(e.replace("[", "").replace("]", "")); + } + function _(e, t) { + let n = []; + for (let t in e) { + if (e.hasOwnProperty(t)) { + n.push(t); } - } catch (e1) { - try { - result.object = eval(`(${objectString})`); - if (Is.definedFunction(result.object)) { - result.object = result.object(); - } - } catch (e) { - if (!_configuration.safeMode) { - console.error(_configuration.text.objectErrorText.replace('{{error_1}}', e1.message).replace('{{error_2}}', e.message)); - result.parsed = false; + } + if (t.sortPropertyNames) { + let e = new Intl.Collator(void 0, { + numeric: true, + sensitivity: "base" + }); + n = n.sort(e.compare); + if (!t.sortPropertyNamesInAlphabeticalOrder) { + n = n.reverse(); + } + } + return n; + } + function O(e, t, n, o, r) { + let l = DomElement.create(t, "div", "closing-symbol"); + if (o && e.showArrowToggles) { + DomElement.create(l, "div", "no-arrow"); + } + DomElement.createWithHTML(l, "div", "object-type-end", n); + A(e, l, r); + } + function F(e, t) { + if (t.fileDroppingEnabled) { + e.ondragover = DomElement.cancelBubble; + e.ondragenter = DomElement.cancelBubble; + e.ondragleave = DomElement.cancelBubble; + e.ondrop = e => { + DomElement.cancelBubble(e); + if (Is.defined(window.FileReader) && e.dataTransfer.files.length > 0) { + j(e.dataTransfer.files, t); } - result.object = null; + }; + } + } + function j(e, t) { + const n = e.length; + let o = 0; + let r = []; + const l = e => { + o++; + r.push(e); + if (o === n) { + t._currentView.dataArrayCurrentIndex = 0; + t._currentView.contentPanelsOpen = {}; + t.data = r.length === 1 ? r[0] : r; + i(t); + Trigger.customEvent(t.events.onSetJson, t._currentView.element); + } + }; + for (let t = 0; t < n; t++) { + const n = e[t]; + const o = n.name.split(".").pop().toLowerCase(); + if (o === "json") { + N(n, l); } } - return result; } - function destroyElement(e) { - e._currentView.element.innerHTML = ''; - e._currentView.element.className = ''; + function N(t, n) { + const o = new FileReader; + let r = null; + o.onloadend = () => n(r); + o.onload = t => { + const n = Default2.getObjectFromString(t.target.result, e); + if (n.parsed && Is.definedObject(n.object)) { + r = n.object; + } + }; + o.readAsText(t); + } + function M(e) { + e._currentView.element.innerHTML = ""; + DomElement.removeClass(e._currentView.element, "json-tree-js"); + if (e._currentView.element.className.trim() === "") { + e._currentView.element.removeAttribute("class"); + } + if (e._currentView.idSet) { + e._currentView.element.removeAttribute("id"); + } + p(e, false); + ToolTip.assignToEvents(e, false); + ToolTip.remove(e); Trigger.customEvent(e.events.onDestroy, e._currentView.element); } - const _public = { - refresh: function (e) { - if (Is.definedString(e) && _elements_Data.hasOwnProperty(e)) { - const t = _elements_Data[e]; - renderControlContainer(t); - Trigger.customEvent(t.events.onRefresh, t._currentView.element); + const R = { + refresh: function(e) { + if (Is.definedString(e) && t.hasOwnProperty(e)) { + const n = t[e]; + i(n); + Trigger.customEvent(n.events.onRefresh, n._currentView.element); } - return _public; + return R; }, - refreshAll: function () { - for (let e in _elements_Data) { - if (_elements_Data.hasOwnProperty(e)) { - const t = _elements_Data[e]; - renderControlContainer(t); - Trigger.customEvent(t.events.onRefresh, t._currentView.element); + refreshAll: function() { + for (let e in t) { + if (t.hasOwnProperty(e)) { + const n = t[e]; + i(n); + Trigger.customEvent(n.events.onRefresh, n._currentView.element); } } - return _public; + return R; }, - render: function (e, t) { + render: function(e, t) { if (Is.definedObject(e) && Is.definedObject(t)) { - renderControl(Binding.Options.getForNewInstance(t, e)); + l(Binding.Options.getForNewInstance(t, e)); } - return _public; + return R; }, - renderAll: function () { - render(); - return _public; + renderAll: function() { + o(); + return R; }, - openAll: function (e) { - if (Is.definedString(e) && _elements_Data.hasOwnProperty(e)) { - openAllNodes(_elements_Data[e]); + openAll: function(e) { + if (Is.definedString(e) && t.hasOwnProperty(e)) { + c(t[e]); } - return _public; + return R; }, - closeAll: function (e) { - if (Is.definedString(e) && _elements_Data.hasOwnProperty(e)) { - closeAllNodes(_elements_Data[e]); + closeAll: function(e) { + if (Is.definedString(e) && t.hasOwnProperty(e)) { + d(t[e]); } - return _public; + return R; }, - destroy: function (e) { - if (Is.definedString(e) && _elements_Data.hasOwnProperty(e)) { - destroyElement(_elements_Data[e]); - delete _elements_Data[e]; + setJson: function(n, o) { + if (Is.definedString(n) && Is.defined(o) && t.hasOwnProperty(n)) { + let r = null; + if (Is.definedString(o)) { + const t = Default2.getObjectFromString(o, e); + if (t.parsed) { + r = t.object; + } + } else { + r = o; + } + const l = t[n]; + l._currentView.dataArrayCurrentIndex = 0; + l._currentView.contentPanelsOpen = {}; + l.data = r; + i(l); + Trigger.customEvent(l.events.onSetJson, l._currentView.element); + } + return R; + }, + getJson: function(e) { + let n = null; + if (Is.definedString(e) && t.hasOwnProperty(e)) { + n = t[e].data; } - return _public; + return n; }, - destroyAll: function () { - for (let e in _elements_Data) { - if (_elements_Data.hasOwnProperty(e)) { - destroyElement(_elements_Data[e]); + destroy: function(e) { + if (Is.definedString(e) && t.hasOwnProperty(e)) { + M(t[e]); + delete t[e]; + n--; + } + return R; + }, + destroyAll: function() { + for (let e in t) { + if (t.hasOwnProperty(e)) { + M(t[e]); } } - _elements_Data = {}; - return _public; + t = {}; + n = 0; + return R; }, - setConfiguration: function (e) { - if (Is.definedObject(e)) { - let t = false; - const n = _configuration; - for (let r in e) { - if (e.hasOwnProperty(r) && _configuration.hasOwnProperty(r) && n[r] !== e[r]) { - n[r] = e[r]; - t = true; + setConfiguration: function(t) { + if (Is.definedObject(t)) { + let n = false; + const o = e; + for (let r in t) { + if (t.hasOwnProperty(r) && e.hasOwnProperty(r) && o[r] !== t[r]) { + o[r] = t[r]; + n = true; } } - if (t) { - _configuration = Config.Options.get(n); + if (n) { + e = Config.Options.get(o); } } - return _public; + return R; }, - getIds: function () { + getIds: function() { const e = []; - for (let t in _elements_Data) { - if (_elements_Data.hasOwnProperty(t)) { - e.push(t); + for (let n in t) { + if (t.hasOwnProperty(n)) { + e.push(n); } } return e; }, - getVersion: function () { - return '2.1.0'; - }, + getVersion: function() { + return "2.9.0"; + } }; (() => { - _configuration = Config.Options.get(); - document.addEventListener('DOMContentLoaded', function () { - render(); - }); + e = Config.Options.get(); + document.addEventListener("DOMContentLoaded", (() => o())); if (!Is.defined(window.$jsontree)) { - window.$jsontree = _public; + window.$jsontree = R; } })(); -})(); //# sourceMappingURL=jsontree.js.map +})();//# sourceMappingURL=jsontree.js.map \ No newline at end of file diff --git a/static/configvis/jsontree.js.css b/static/configvis/jsontree.js.css index f3d4d3d4..5496dd9e 100644 --- a/static/configvis/jsontree.js.css +++ b/static/configvis/jsontree.js.css @@ -1,44 +1,71 @@ /* - * JsonTree.js Library v2.1.0 + * JsonTree.js Library v2.9.0 * * Copyright 2024 Bunoon * Released under the MIT License */ :root { - --json-tree-js-default-font: system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', 'Noto Sans', 'Liberation Sans', Arial, - sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; - --json-tree-js-text-bold-weight: 400; - --json-tree-js-header-bold-weight: 900; - --json-tree-js-title-bold-weight: var(--json-tree-js-header-bold-weight); - --json-tree-js-text-bold-weight-active: var(--json-tree-js-header-bold-weight); - --json-tree-js-color-black: #3b3a3a; - --json-tree-js-color-white: #f5f5f5; - --json-tree-js-color-snow-white: #f5f5f5; - --json-tree-js-color-boolean: #ff0000; - --json-tree-js-color-decimal: #e3c868; - --json-tree-js-color-number: #666bf9; - --json-tree-js-color-string: #78b13f; - --json-tree-js-color-date: #a656f5; - --json-tree-js-color-array: #f28c28; - --json-tree-js-color-object: #c0c0c0; - --json-tree-js-color-null: #bbbbbb; - --json-tree-js-color-function: var(--json-tree-js-color-null); - --json-tree-js-color-unknown: var(--json-tree-js-color-null); - --json-tree-js-container-background-color: #22272e; - --json-tree-js-container-border-color: #454c56; - --json-tree-js-button-background-color: #2d333b; - --json-tree-js-button-border-color: var(--json-tree-js-container-border-color); - --json-tree-js-button-text-color: var(--json-tree-js-color-white); - --json-tree-js-button-background-color-hover: var(--json-tree-js-container-border-color); - --json-tree-js-button-text-color-hover: var(--json-tree-js-color-snow-white); - --json-tree-js-button-background-color-active: #616b79; - --json-tree-js-button-text-color-active: var(--json-tree-js-color-snow-white); - --json-tree-js-border-radius: 0.5rem; - --json-tree-js-border-style-scrollbar: inset 0 0 6px var(--json-tree-js-color-dark-gray); - --json-tree-js-border-size: 0.5px; - --json-tree-js-spacing: 10px; - --json-tree-js-spacing-font-size: 0.85rem; - --json-tree-js-transition: all 0.3s; + --json-tree-js-default-font: system-ui, + -apple-system, + "Segoe UI", + Roboto, + "Helvetica Neue", + "Noto Sans", + "Liberation Sans", + Arial, + sans-serif, + "Apple Color Emoji", + "Segoe UI Emoji", + "Segoe UI Symbol", + "Noto Color Emoji"; + --json-tree-js-text-bold-weight: 400; + --json-tree-js-header-bold-weight: 900; + --json-tree-js-title-bold-weight: var(--json-tree-js-header-bold-weight); + --json-tree-js-text-bold-weight-active: var(--json-tree-js-header-bold-weight); + --json-tree-js-color-dark-black: #1c2128; + --json-tree-js-color-black: #3b3a3a; + --json-tree-js-color-white: #F5F5F5; + --json-tree-js-color-snow-white: #F5F5F5; + --json-tree-js-color-light-gray: #BBBBBB; + --json-tree-js-color-array: #F28C28; + --json-tree-js-color-object: #C0C0C0; + --json-tree-js-color-map: #BDB5D5; + --json-tree-js-color-set: #FFD700; + --json-tree-js-color-boolean: #FF0000; + --json-tree-js-color-decimal: #e3c868; + --json-tree-js-color-number: #666bf9; + --json-tree-js-color-bigint: #6495ED; + --json-tree-js-color-string: #78b13f; + --json-tree-js-color-date: #a656f5; + --json-tree-js-color-null: var(--json-tree-js-color-light-gray); + --json-tree-js-color-undefined: var(--json-tree-js-color-null); + --json-tree-js-color-symbol: #DAA06D; + --json-tree-js-color-function: var(--json-tree-js-color-null); + --json-tree-js-color-unknown: var(--json-tree-js-color-null); + --json-tree-js-color-guid: #c45600; + --json-tree-js-color-regexp: #AA336A; + --json-tree-js-editable-text-color: var(--json-tree-js-color-snow-white); + --json-tree-js-editable-background-color: #2d333b; + --json-tree-js-editable-border-color: #454c56; + --json-tree-js-tooltip-background-color: var(--json-tree-js-container-background-color); + --json-tree-js-tooltip-border-color: var(--json-tree-js-container-border-color); + --json-tree-js-tooltip-text-color: var(--json-tree-js-color-white); + --json-tree-js-container-background-color: #22272e; + --json-tree-js-container-border-color: #454c56; + --json-tree-js-button-background-color: #2d333b; + --json-tree-js-button-border-color: var(--json-tree-js-container-border-color); + --json-tree-js-button-text-color: var(--json-tree-js-color-white); + --json-tree-js-button-background-color-hover: var(--json-tree-js-container-border-color); + --json-tree-js-button-text-color-hover: var(--json-tree-js-color-snow-white); + --json-tree-js-button-background-color-active: #616b79; + --json-tree-js-button-text-color-active: var(--json-tree-js-color-snow-white); + --json-tree-js-border-radius-editable: 0.25rem; + --json-tree-js-border-radius: 0.5rem; + --json-tree-js-border-size: 0.5px; + --json-tree-js-spacing: 10px; + --json-tree-js-spacing-font-size: 0.85rem; + --json-tree-js-transition: all .3s; + --json-tree-js-animation-length: 0.5s; } /* @@ -47,42 +74,70 @@ ------------------------------------------------------------------------- */ div.json-tree-js { - -moz-user-select: none; - -webkit-user-select: none; - -ms-user-select: none; - -o-user-select: none; - user-select: none; - cursor: default; - box-sizing: border-box; - line-height: normal; - font-family: var(--json-tree-js-default-font) !important; - display: inline-block; - position: relative; - border-radius: var(--json-tree-js-border-radius); - background-color: var(--json-tree-js-container-background-color); - color: var(--json-tree-js-color-white); - border: var(--json-tree-js-border-size) solid var(--json-tree-js-container-border-color); - padding: var(--json-tree-js-spacing); - font-size: var(--json-tree-js-spacing-font-size); - font-weight: var(--json-tree-js-text-bold-weight); - width: auto; - overflow: hidden; - margin: 0 !important; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + -o-user-select: none; + user-select: none; + cursor: default; + box-sizing: border-box; + line-height: normal; + font-family: var(--json-tree-js-default-font) !important; + display: inline-block; + position: relative; + border-radius: var(--json-tree-js-border-radius); + background-color: var(--json-tree-js-container-background-color); + color: var(--json-tree-js-color-white); + border: var(--json-tree-js-border-size) solid var(--json-tree-js-container-border-color); + font-size: var(--json-tree-js-spacing-font-size); + font-weight: var(--json-tree-js-text-bold-weight); + width: 100%; + overflow: hidden; + margin: 0 !important; + max-width: 500px; } div.json-tree-js button { - font-family: var(--heat-js-default-font); + font-family: var(--heat-js-default-font); } div.json-tree-js div.no-click { - pointer-events: none !important; + pointer-events: none !important; +} +div.json-tree-js div.page-switch { + animation: fade-in-animation var(--json-tree-js-animation-length); } div.json-tree-js * { - box-sizing: border-box; - line-height: normal; + box-sizing: border-box; + line-height: normal; +} +div.json-tree-js *::before, div.json-tree-js *::after { + box-sizing: border-box; + line-height: normal; } -div.json-tree-js *::before, -div.json-tree-js *::after { - box-sizing: border-box; - line-height: normal; + +div.full-screen { + position: fixed; + display: flex; + flex-direction: column; + top: 0; + left: 0; + height: 100%; + width: 100%; + max-width: none; + border-radius: 0; + z-index: 1000; +} +div.full-screen div.title-bar { + border-radius: 0 !important; +} +div.full-screen div.contents { + flex-grow: 1; + position: relative; +} +div.full-screen div.contents span.no-json-text { + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); } /* @@ -91,34 +146,34 @@ div.json-tree-js *::after { ------------------------------------------------------------------------- */ div.json-tree-js div.no-arrow { - display: inline-block; - width: 12px; - height: 8px; - margin-right: calc(var(--json-tree-js-spacing)); + display: inline-block; + width: 12px; + height: 8px; + margin-right: calc(var(--json-tree-js-spacing)); } div.json-tree-js div.down-arrow, div.json-tree-js div.right-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: calc(var(--json-tree-js-spacing)); - cursor: pointer; - transition: var(--json-tree-js-transition); - transition-property: opacity; + display: inline-block; + width: 0; + height: 0; + margin-right: calc(var(--json-tree-js-spacing)); + cursor: pointer; + transition: var(--json-tree-js-transition); + transition-property: opacity; } div.json-tree-js div.down-arrow:hover, div.json-tree-js div.right-arrow:hover { - opacity: 0.7; + opacity: 0.7; } div.json-tree-js div.down-arrow { - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 8px solid var(--json-tree-js-color-white); + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-top: 8px solid var(--json-tree-js-color-white); } div.json-tree-js div.right-arrow { - border-top: 5px solid transparent; - border-bottom: 5px solid transparent; - border-left: 12px solid var(--json-tree-js-color-white); + border-top: 5px solid transparent; + border-bottom: 5px solid transparent; + border-left: 12px solid var(--json-tree-js-color-white); } /* @@ -127,62 +182,91 @@ div.json-tree-js div.right-arrow { ------------------------------------------------------------------------- */ div.json-tree-js div.title-bar { - display: flex; - margin-bottom: var(--json-tree-js-spacing); + display: flex; + padding: calc(var(--json-tree-js-spacing) / 2); + background-color: var(--json-tree-js-color-dark-black); + border-radius: var(--json-tree-js-border-radius); + border-bottom: var(--json-tree-js-container-border-color) solid var(--json-tree-js-border-size); + justify-content: left; + align-items: center; } div.json-tree-js div.title-bar div.title { - text-align: left; - width: auto; - font-weight: var(--json-tree-js-title-bold-weight); - font-size: 1.2rem; + text-align: left; + width: auto; + font-weight: var(--json-tree-js-title-bold-weight); + font-size: 1.2rem; + margin: 3px; + margin-left: calc(var(--json-tree-js-spacing) / 2); } div.json-tree-js div.title-bar div.controls { - margin-left: calc(var(--json-tree-js-spacing) * 6); - flex-grow: 1; - text-align: right; + margin-left: calc(var(--json-tree-js-spacing) * 6); + flex-grow: 1; + text-align: right; + white-space: nowrap; } @media (min-width: 768px) { - div.json-tree-js div.title-bar div.controls { - margin-left: calc(var(--json-tree-js-spacing) * 12); - } + div.json-tree-js div.title-bar div.controls { + margin-left: calc(var(--json-tree-js-spacing) * 12); + } } div.json-tree-js div.title-bar div.controls button { - background-color: var(--json-tree-js-button-background-color); - border: var(--json-tree-js-border-size) solid var(--json-tree-js-button-border-color); - color: var(--json-tree-js-button-text-color); - border-radius: var(--json-tree-js-border-radius); - padding-top: 5px; - padding-bottom: 5px; - padding-left: 9px; - padding-right: 9px; - outline: none; - transition: var(--json-tree-js-transition); + background-color: var(--json-tree-js-button-background-color); + border: var(--json-tree-js-border-size) solid var(--json-tree-js-button-border-color); + color: var(--json-tree-js-button-text-color); + border-radius: var(--json-tree-js-border-radius); + padding-top: 5px; + padding-bottom: 5px; + padding-left: 9px; + padding-right: 9px; + margin: 3px; + outline: none; + transition: var(--json-tree-js-transition); } div.json-tree-js div.title-bar div.controls button:disabled { - color: var(--json-tree-js-button-border-color); + color: var(--json-tree-js-button-border-color); } div.json-tree-js div.title-bar div.controls button:not(.active):not(:disabled):active { - background: var(--json-tree-js-button-background-color-active) !important; - color: var(--json-tree-js-button-text-color-active) !important; + background: var(--json-tree-js-button-background-color-active) !important; + color: var(--json-tree-js-button-text-color-active) !important; } div.json-tree-js div.title-bar div.controls button:not(.active):not(:disabled):hover { - cursor: pointer; - background: var(--json-tree-js-button-background-color-hover); - color: var(--json-tree-js-button-text-color-hover); + cursor: pointer; + background: var(--json-tree-js-button-background-color-hover); + color: var(--json-tree-js-button-text-color-hover); } div.json-tree-js div.title-bar div.controls button { - margin-left: calc(var(--json-tree-js-spacing) / 2) !important; -} -div.json-tree-js div.title-bar div.controls button.back { - margin-left: calc(var(--json-tree-js-spacing) * 2) !important; + margin-left: calc(var(--json-tree-js-spacing) / 2) !important; + font-weight: var(--json-tree-js-header-bold-weight); + min-width: 30px; + min-height: 30px; + text-align: center; } div.json-tree-js div.title-bar div.controls button.copy-all { - display: none; + display: none; } @media (min-width: 768px) { - div.json-tree-js div.title-bar div.controls button.copy-all { - display: inline-block; - } + div.json-tree-js div.title-bar div.controls button.copy-all { + display: inline-block; + } +} + +/* + ------------------------------------------------------------------------- + JsonTree.js - Contents + ------------------------------------------------------------------------- +*/ +div.json-tree-js div.contents { + padding: var(--json-tree-js-spacing); + margin: 0 !important; + overflow-x: auto; + overflow-y: auto; +} +div.json-tree-js div.contents div.last-item { + margin-bottom: 0 !important; +} +div.json-tree-js div.contents span.no-json-text { + font-style: italic; + color: var(--json-tree-js-color-light-gray) !important; } /* @@ -191,22 +275,43 @@ div.json-tree-js div.title-bar div.controls button.copy-all { ------------------------------------------------------------------------- */ div.json-tree-js div.object-type-title { - font-weight: var(--json-tree-js-header-bold-weight); - text-align: left !important; + font-weight: var(--json-tree-js-header-bold-weight); + text-align: left !important; + width: fit-content; +} +div.json-tree-js div.object-type-title span.main-title { + transition: var(--json-tree-js-transition); + transition-property: opacity; +} +div.json-tree-js div.object-type-title span.main-title:not(.no-hover):hover { + cursor: pointer; + opacity: 0.7; } div.json-tree-js div.object-type-title span.array { - color: var(--json-tree-js-color-array); + color: var(--json-tree-js-color-array); } div.json-tree-js div.object-type-title span.object { - color: var(--json-tree-js-color-object); + color: var(--json-tree-js-color-object); +} +div.json-tree-js div.object-type-title span.map { + color: var(--json-tree-js-color-map); +} +div.json-tree-js div.object-type-title span.set { + color: var(--json-tree-js-color-set); } div.json-tree-js div.object-type-title span.count { - margin-left: calc(var(--json-tree-js-spacing) / 2); - font-weight: var(--json-tree-js-text-bold-weight); + margin-left: calc(var(--json-tree-js-spacing) / 2); + font-weight: var(--json-tree-js-text-bold-weight); } div.json-tree-js div.object-type-title span.data-array-index { - margin-right: calc(var(--json-tree-js-spacing) / 2); - font-weight: var(--json-tree-js-text-bold-weight); + margin-right: calc(var(--json-tree-js-spacing) / 2); + font-weight: var(--json-tree-js-text-bold-weight); +} +div.json-tree-js div.object-type-title span.opening-symbol { + margin-left: calc(var(--json-tree-js-spacing) / 2); + margin-right: calc(var(--json-tree-js-spacing) / 2); + font-weight: var(--json-tree-js-text-bold-weight); + color: var(--json-tree-js-color-snow-white) !important; } /* @@ -215,7 +320,10 @@ div.json-tree-js div.object-type-title span.data-array-index { ------------------------------------------------------------------------- */ div.json-tree-js div.object-type-contents { - margin-top: calc(var(--json-tree-js-spacing) / 2); + margin-top: calc(var(--json-tree-js-spacing) / 2); + text-align: left !important; + width: fit-content; + margin-bottom: var(--json-tree-js-spacing); } /* @@ -223,108 +331,156 @@ div.json-tree-js div.object-type-contents { JsonTree.js - Object Type Contents - Values ------------------------------------------------------------------------- */ -div.json-tree-js div.object-type-contents { - margin-left: calc(var(--json-tree-js-spacing) * 2); - text-align: left !important; +div.json-tree-js div.object-type-contents span.opening-symbol { + margin-left: calc(var(--json-tree-js-spacing) / 2); + margin-right: calc(var(--json-tree-js-spacing) / 2); + font-weight: var(--json-tree-js-text-bold-weight); + color: var(--json-tree-js-color-snow-white) !important; +} +div.json-tree-js div.object-type-contents div.closing-symbol div { + display: inline-block !important; +} +div.json-tree-js div.object-type-contents div.closing-symbol div.object-type-end { + font-weight: var(--json-tree-js-text-bold-weight); } div.json-tree-js div.object-type-contents div.object-type-value { - white-space: nowrap; - overflow: hidden; - margin-top: calc(var(--json-tree-js-spacing) / 2); - margin-bottom: calc(var(--json-tree-js-spacing) / 2); + white-space: nowrap; + margin-top: calc(var(--json-tree-js-spacing) / 2); + margin-bottom: calc(var(--json-tree-js-spacing) / 2); + margin-left: calc(var(--json-tree-js-spacing) * 2); } div.json-tree-js div.object-type-contents div.object-type-value span.split { - margin-left: calc(var(--json-tree-js-spacing) / 2); - margin-right: calc(var(--json-tree-js-spacing) / 2); -} -div.json-tree-js div.object-type-contents div.object-type-value span.boolean, -div.json-tree-js div.object-type-contents div.object-type-value span.decimal, -div.json-tree-js div.object-type-contents div.object-type-value span.number, -div.json-tree-js div.object-type-contents div.object-type-value span.string, -div.json-tree-js div.object-type-contents div.object-type-value span.date, -div.json-tree-js div.object-type-contents div.object-type-value span.null, -div.json-tree-js div.object-type-contents div.object-type-value span.function, -div.json-tree-js div.object-type-contents div.object-type-value span.unknown { - transition: var(--json-tree-js-transition); - transition-property: opacity; -} -div.json-tree-js div.object-type-contents div.object-type-value span.boolean:not(.no-hover):hover, -div.json-tree-js div.object-type-contents div.object-type-value span.decimal:not(.no-hover):hover, -div.json-tree-js div.object-type-contents div.object-type-value span.number:not(.no-hover):hover, -div.json-tree-js div.object-type-contents div.object-type-value span.string:not(.no-hover):hover, -div.json-tree-js div.object-type-contents div.object-type-value span.date:not(.no-hover):hover, -div.json-tree-js div.object-type-contents div.object-type-value span.null:not(.no-hover):hover, -div.json-tree-js div.object-type-contents div.object-type-value span.function:not(.no-hover):hover, -div.json-tree-js div.object-type-contents div.object-type-value span.unknown:not(.no-hover):hover { - cursor: pointer; - opacity: 0.7; + margin-left: calc(var(--json-tree-js-spacing) / 2); + margin-right: calc(var(--json-tree-js-spacing) / 2); +} +div.json-tree-js div.object-type-contents div.object-type-value span.value, +div.json-tree-js div.object-type-contents div.object-type-value span.main-title { + transition: var(--json-tree-js-transition); + transition-property: opacity; +} +div.json-tree-js div.object-type-contents div.object-type-value span.value:not(.no-hover):not(.editable):hover, +div.json-tree-js div.object-type-contents div.object-type-value span.main-title:not(.no-hover):not(.editable):hover { + cursor: pointer; + opacity: 0.7; +} +div.json-tree-js div.object-type-contents div.object-type-value span.editable { + background-color: var(--json-tree-js-editable-background-color) !important; + color: var(--json-tree-js-editable-text-color) !important; + border: var(--json-tree-js-border-size) solid var(--json-tree-js-editable-border-color); + outline: none !important; + box-shadow: none !important; + padding: calc(var(--json-tree-js-spacing) / 2) !important; + border-radius: var(--json-tree-js-border-radius-editable) !important; + cursor: text !important; +} +div.json-tree-js div.object-type-contents div.object-type-value span.main-title { + font-weight: var(--json-tree-js-header-bold-weight); +} +div.json-tree-js div.object-type-contents div.object-type-value span.non-value { + font-style: italic; } div.json-tree-js div.object-type-contents div.object-type-value span.comma { - color: var(--json-tree-js-color-white); - font-weight: var(--json-tree-js-text-bold-weight); + color: var(--json-tree-js-color-white); + font-weight: var(--json-tree-js-text-bold-weight); +} +div.json-tree-js div.object-type-contents div.object-type-value span.array { + color: var(--json-tree-js-color-array); +} +div.json-tree-js div.object-type-contents div.object-type-value span.object { + color: var(--json-tree-js-color-object); +} +div.json-tree-js div.object-type-contents div.object-type-value span.map { + color: var(--json-tree-js-color-map); +} +div.json-tree-js div.object-type-contents div.object-type-value span.set { + color: var(--json-tree-js-color-set); } div.json-tree-js div.object-type-contents div.object-type-value span.boolean { - color: var(--json-tree-js-color-boolean); + color: var(--json-tree-js-color-boolean); } div.json-tree-js div.object-type-contents div.object-type-value span.decimal { - color: var(--json-tree-js-color-decimal); + color: var(--json-tree-js-color-decimal); } div.json-tree-js div.object-type-contents div.object-type-value span.number { - color: var(--json-tree-js-color-number); + color: var(--json-tree-js-color-number); +} +div.json-tree-js div.object-type-contents div.object-type-value span.bigint { + color: var(--json-tree-js-color-bigint); } div.json-tree-js div.object-type-contents div.object-type-value span.string { - color: var(--json-tree-js-color-string); + color: var(--json-tree-js-color-string); } div.json-tree-js div.object-type-contents div.object-type-value span.date { - color: var(--json-tree-js-color-date); -} -div.json-tree-js div.object-type-contents div.object-type-value span.array { - font-weight: var(--json-tree-js-header-bold-weight); - color: var(--json-tree-js-color-array); -} -div.json-tree-js div.object-type-contents div.object-type-value span.object { - font-weight: var(--json-tree-js-header-bold-weight); - color: var(--json-tree-js-color-object); + color: var(--json-tree-js-color-date); } div.json-tree-js div.object-type-contents div.object-type-value span.null { - color: var(--json-tree-js-color-null); - font-style: italic; + color: var(--json-tree-js-color-null); +} +div.json-tree-js div.object-type-contents div.object-type-value span.symbol { + color: var(--json-tree-js-color-symbol); } div.json-tree-js div.object-type-contents div.object-type-value span.function { - color: var(--json-tree-js-color-function); - font-style: italic; + color: var(--json-tree-js-color-function); } div.json-tree-js div.object-type-contents div.object-type-value span.unknown { - color: var(--json-tree-js-color-unknown); - font-style: italic; + color: var(--json-tree-js-color-unknown); +} +div.json-tree-js div.object-type-contents div.object-type-value span.undefined { + color: var(--json-tree-js-color-null); +} +div.json-tree-js div.object-type-contents div.object-type-value span.guid { + color: var(--json-tree-js-color-guid); +} +div.json-tree-js div.object-type-contents div.object-type-value span.regexp { + color: var(--json-tree-js-color-regexp); } div.json-tree-js div.object-type-contents div.object-type-value span.count { - margin-left: calc(var(--json-tree-js-spacing) / 2); - font-weight: var(--json-tree-js-text-bold-weight); + margin-left: calc(var(--json-tree-js-spacing) / 2); + font-weight: var(--json-tree-js-text-bold-weight); } /* ------------------------------------------------------------------------- - JsonTree.js - Custom Scroll Bar + JsonTree.js - ToolTip ------------------------------------------------------------------------- */ -.custom-scroll-bars::-webkit-scrollbar { - width: 12px; -} -.custom-scroll-bars::-webkit-scrollbar-track { - -webkit-box-shadow: var(--json-tree-js-border-style-scrollbar); - box-shadow: var(--json-tree-js-border-style-scrollbar); -} -.custom-scroll-bars::-webkit-scrollbar-thumb { - -webkit-box-shadow: var(--json-tree-js-border-style-scrollbar); - box-shadow: var(--json-tree-js-border-style-scrollbar); - background: var(--json-tree-js-color-white); +div.jsontree-js-tooltip, +div.jsontree-js-tooltip-value { + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + -o-user-select: none; + user-select: none; + cursor: default; + box-sizing: border-box; + line-height: normal; + font-family: var(--json-tree-js-default-font); + animation: fade-in-animation var(--json-tree-js-animation-length); + position: absolute; + background-color: var(--json-tree-js-tooltip-background-color); + border: var(--json-tree-js-border-size) solid var(--json-tree-js-tooltip-border-color); + color: var(--json-tree-js-tooltip-text-color); + border-radius: var(--json-tree-js-border-radius); + z-index: 2000; + max-width: 300px; + padding: var(--json-tree-js-spacing); + font-size: var(--json-tree-js-spacing-font-size); + font-weight: var(--json-tree-js-text-bold-weight); + display: none; } -.custom-scroll-bars::-webkit-scrollbar-thumb:hover { - background-color: var(--json-tree-js-color-white); -} -.custom-scroll-bars::-webkit-scrollbar-thumb:active { - background-color: var(--json-tree-js-color-lighter-gray); + +/* + ------------------------------------------------------------------------- + JsonTree.js - Animations + ------------------------------------------------------------------------- +*/ +@keyframes fade-in-animation { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } } /*# sourceMappingURL=jsontree.js.css.map */ diff --git a/static/configvis/jsontree.js.css.map b/static/configvis/jsontree.js.css.map index 782f92e0..89f0764d 100644 --- a/static/configvis/jsontree.js.css.map +++ b/static/configvis/jsontree.js.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["../src/jsontree.js.scss","../src/sass/_styles.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA;EAEI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAcA;EACA;EACA;EACA;EAGA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EAGA;EACA;EAGA;;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAMA;EC9EI;EACA;EACA;EACA;EACA;EACA;EAUA;EACA;EDiEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;;AAGJ;ECxFA;EACA;;AD0FI;EC3FJ;EACA;;;ADkGJ;AAAA;AAAA;AAAA;AAAA;AAOI;EACI;EACA;EACA;EACA;;AAGJ;AAAA;EAEI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;EACI;;AAIR;EACI;EACA;EACA;;AAGJ;EACI;EACA;EACA;;;AAKR;AAAA;AAAA;AAAA;AAAA;AAOI;EACI;EACA;;AAEA;EACI;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;;AAEA;EALJ;IAMQ;;;ACjKZ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;EACA;;AD8IA;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAEA;EAHJ;IAIQ;;;;AAQpB;AAAA;AAAA;AAAA;AAAA;AAOI;EACI;EACA;;AAEA;EACI;;AAGJ;EACI;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;;AAKZ;AAAA;AAAA;AAAA;AAAA;AAOI;EACI;;;AAKR;AAAA;AAAA;AAAA;AAAA;AAOI;EACI;EACA;;AAEA;EACI;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAGJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAQI;EACA;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACI;EACA;;AAIR;EACI;EACA;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;;AAOhB;AAAA;AAAA;AAAA;AAAA;AAOI;EACI;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;EACA;;AAEA;EACI;;AAGJ;EACI","file":"jsontree.js.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["../src/jsontree.js.scss","../src/sass/_styles.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA;EAEI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAcA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EAGA;EACA;EACA;EAGA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EAGA;EACA;EAGA;EACA;;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAMA;EClGI;EACA;EACA;EACA;EACA;EACA;EAUA;EACA;EDqFA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EChHA;EACA;;ADkHI;ECnHJ;EACA;;;ADyHJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;;AAEA;EACI;EACA;EACA;EACA;;;AAMZ;AAAA;AAAA;AAAA;AAAA;AAOI;EACI;EACA;EACA;EACA;;AAGJ;AAAA;EAEI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;EACI;;AAIR;EACI;EACA;EACA;;AAGJ;EACI;EACA;EACA;;;AAKR;AAAA;AAAA;AAAA;AAAA;AAOI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;;AAEA;EANJ;IAOQ;;;AC9NZ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;EACA;;AD0MA;EACI;EACA;EACA;EACA;EACA;;AAGJ;EACI;;AAEA;EAHJ;IAIQ;;;;AAQpB;AAAA;AAAA;AAAA;AAAA;AAOI;EACI;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;;;AAMZ;AAAA;AAAA;AAAA;AAAA;AAOI;EACI;EACA;EACA;;AAEA;EACI;EACA;;AAEA;EACI;EACA;;AAIR;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;EACA;EACA;;;AAMZ;AAAA;AAAA;AAAA;AAAA;AAOI;EACI;EACA;EACA;EACA;;;AAKR;AAAA;AAAA;AAAA;AAAA;AAQQ;EACI;EACA;EACA;EACA;;AAIA;EACI;;AAGJ;EACI;;AAIR;EACI;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAGJ;AAAA;EAEI;EACA;;AAEA;AAAA;EACI;EACA;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;EACA;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;EACA;;;AAOhB;AAAA;AAAA;AAAA;AAAA;AAMA;AAAA;ECxgBI;EACA;EACA;EACA;EACA;EACA;EAUA;EACA;ED4fA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAMA;EACI;IACI;;EAEJ;IACI","file":"jsontree.js.css"} \ No newline at end of file diff --git a/static/configvis/jsontree.js.map b/static/configvis/jsontree.js.map index 21e76574..9877e633 100644 --- a/static/configvis/jsontree.js.map +++ b/static/configvis/jsontree.js.map @@ -1 +1 @@ -{"version":3,"sources":["/Users/williamtroup/Documents/GitHub%20Repos/JsonTree.js/dist/jsontree.js"],"names":["Is","Is2","defined","value","toString","definedObject","object","definedBoolean","definedString","definedFunction","definedNumber","definedArray","Array","definedDate","Date","definedDecimal","invalidOptionArray","array","minimumLength","length","hexColor","valid","isNaN","substring","Default","Default2","getAnyString","defaultValue","getString","getBoolean","getNumber","getFunction","getArray","getObject","getStringOrArray","result2","values","split","getFixedDecimalPlacesValue","decimalPlaces","_a","regExp","RegExp","match","getFunctionName","valueParts","valueNameParts","DomElement","DomElement2","create","container","type","className","beforeNode","nodeType","toLowerCase","isText","document","createTextNode","createElement","insertBefore","appendChild","createWithHTML","html","element","innerHTML","addClass","classList","add","Str","Str2","newGuid","charIndex","push","character","Math","floor","random","join","padNumber","number","numberString","numberResult","arrayLength","DateTime","DateTime2","getWeekdayNumber","date","getDay","getDayOrdinal","configuration","text","thText","stText","ndText","rdText","getCustomFormattedDateText","dateFormat","weekDayNumber","replace","getHours","getMinutes","getSeconds","dayNames","dayNamesAbbreviated","getDate","monthNames","getMonth","monthNamesAbbreviated","getFullYear","Number","parseInt","Constants","Constants2","JSONTREE_JS_ATTRIBUTE_NAME","Binding","Binding2","Options","Options2","getForNewInstance","data","bindingOptions","get","_currentView","dataArrayCurrentIndex","newOptions","options","showCounts","useZeroIndexingForArrays","dateTimeFormat","showArrowToggles","showStringQuotes","showAllAsClosed","sortPropertyNames","sortPropertyNamesInAlphabeticalOrder","showCommas","reverseArrayValues","addArrayIndexPadding","showValueColors","maximumDecimalPlaces","maximumStringLength","showStringHexColors","showArrayItemsAsSeparateObjects","copyOnlyCurrentPage","getTitle","getIgnore","getCustomTriggers","title","show","showTreeControls","showCopyButton","ignore","nullValues","functionValues","unknownValues","booleanValues","decimalValues","numberValues","stringValues","dateValues","objectValues","arrayValues","events","onBeforeRender","onRenderComplete","onValueClick","onRefresh","onCopyAll","onOpenAll","onCloseAll","onDestroy","onBooleanRender","onDecimalRender","onNumberRender","onStringRender","onDateRender","onFunctionRender","onNullRender","onUnknownRender","Config","Config2","newConfiguration","safeMode","domElementTypes","getText","objectText","arrayText","closeAllButtonText","openAllButtonText","copyAllButtonText","objectErrorText","attributeNotValidErrorText","attributeNotSetErrorText","ellipsisText","closeAllButtonSymbolText","openAllButtonSymbolText","copyAllButtonSymbolText","backButtonText","nextButtonText","backButtonSymbolText","nextButtonSymbolText","Trigger","Trigger2","customEvent","triggerFunction","args","apply","slice","call","_configuration","_elements_Data","render","tagTypes","tagTypesLength","tagTypeIndex","domElements","getElementsByTagName","elements","elementsLength","elementIndex","renderElement","hasAttribute","bindingOptionsData","getAttribute","getObjectFromString","parsed","renderControl","console","error","id","removeAttribute","hasOwnProperty","renderControlContainer","renderControlTitleBar","renderObject","renderArray","titleBar","controls","copy","onclick","copyData","JSON","stringify","navigator","clipboard","writeText","openAll","closeAll","openAllNodes","closeAllNodes","back","disabled","next","showPagingIndex","objectTypeTitle","objectTypeContents","arrow","propertyCount","renderObjectValues","titleText","dataArrayIndex","renderArrayValues","properties","key","sort","reverse","propertiesLength","propertyIndex","propertyName","renderValue","addArrowEvent","dataLength","dataIndex1","getIndexName","dataIndex2","name","isLastItem","objectTypeValue","valueClass","valueElement","ignored","addClickEvent","createComma","newValue","color","newStringValue","style","objectTitle","arrayTitle","arrayTypeContents","removeChild","addValueClickEvent","display","index","largestValue","objectString","result","parse","e1","eval","e2","message","destroyElement","_public","refresh","elementId","refreshAll","renderAll","destroy","destroyAll","setConfiguration","configurationHasChanged","newInternalConfiguration","getIds","getVersion","addEventListener","window","$jsontree"],"mappings":"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","sourcesContent":[null]} \ No newline at end of file +{"version":3,"sources":["/Users/williamtroup/Documents/GitHub%20Repos/JsonTree.js/dist/jsontree.js"],"names":["Is","Is2","String","String2","hexColor","value","valid","length","isNaN","substring","rgbColor","startsWith","endsWith","boolean","object","toString","toLowerCase","trim","date","dateTimeString","Date","guid","regex","test","defined","definedObject","definedBoolean","definedString","definedFunction","definedNumber","definedBigInt","definedArray","Array","definedDate","definedDecimal","definedSymbol","definedRegExp","RegExp","definedMap","Map","WeakMap","definedSet","Set","WeakSet","invalidOptionArray","array","minimumLength","Default2","Default","getAnyString","defaultValue","getString","getBoolean","getNumber","getFunction","getArray","getObject","getStringOrArray","result2","values","split","getFixedDecimalPlacesValue","decimalPlaces","regExp","match","getFunctionName","configuration2","valueParts","valueNameParts","functionBrackets","text","functionText","getObjectFromString","objectString","configuration","result","parsed","JSON","parse","e1","eval","e2","safeMode","console","error","objectErrorText","replace","message","getObjectFromMap","map","Object","fromEntries","entries","getArrayFromSet","set","from","DomElement","DomElement2","create","container","type","className","beforeNode","nodeType","isText","document","createTextNode","createElement","insertBefore","appendChild","createWithHTML","html","element","innerHTML","addClass","classList","add","removeClass","remove","cancelBubble","e","preventDefault","stopPropagation","getScrollPosition","documentElement","left","scrollLeft","clientLeft","top","scrollTop","clientTop","showElementAtMousePosition","offset","pageX","pageY","scrollPosition","style","display","offsetWidth","window","innerWidth","offsetHeight","innerHeight","selectAllText","range","createRange","selectNodeContents","selection","getSelection","removeAllRanges","addRange","Str","Str2","padNumber","number","numberString","numberResult","arrayLength","join","DateTime","DateTime2","getWeekdayNumber","getDay","getDayOrdinal","thText","stText","ndText","rdText","getCustomFormattedDateText","dateFormat","weekDayNumber","getHours","getMinutes","getSeconds","getMilliseconds","dayNames","dayNamesAbbreviated","getDate","monthNames","getMonth","monthNamesAbbreviated","getFullYear","Number","parseInt","Constants","Constants2","JSONTREE_JS_ATTRIBUTE_NAME","Binding","Binding2","Options","Options2","getForNewInstance","data","bindingOptions","get","_currentView","dataArrayCurrentIndex","titleBarButtons","valueClickTimerId","editMode","idSet","contentPanelsOpen","contentPanelsIndex","backButton","nextButton","newOptions","options","showCounts","useZeroIndexingForArrays","dateTimeFormat","showArrowToggles","showStringQuotes","showAllAsClosed","sortPropertyNames","sortPropertyNamesInAlphabeticalOrder","showCommas","reverseArrayValues","addArrayIndexPadding","showValueColors","maximumDecimalPlaces","maximumStringLength","showArrayItemsAsSeparateObjects","copyOnlyCurrentPage","fileDroppingEnabled","copyIndentSpaces","showArrayIndexBrackets","showOpeningClosingCurlyBraces","showOpeningClosingSquaredBrackets","includeTimeZoneInDateTimeEditing","shortcutKeysEnabled","openInFullScreenMode","enableFullScreenToggling","valueToolTips","editingValueClickDelay","getTitle","getIgnore","getToolTip","getParse","getAllowEditing","getCustomTriggers","title","show","showTreeControls","showCopyButton","ignore","nullValues","functionValues","unknownValues","booleanValues","decimalValues","numberValues","stringValues","dateValues","objectValues","arrayValues","bigIntValues","symbolValues","emptyObjects","undefinedValues","guidValues","colorValues","regExpValues","mapValues","setValues","tooltip","delay","stringsToDates","stringsToBooleans","stringsToNumbers","valueToolTipsSet","defaultFlag","allowEditing","propertyNames","events","onBeforeRender","onRenderComplete","onValueClick","onRefresh","onCopyAll","onOpenAll","onCloseAll","onDestroy","onBooleanRender","onDecimalRender","onNumberRender","onBigIntRender","onStringRender","onDateRender","onFunctionRender","onNullRender","onUnknownRender","onSymbolRender","onCopyJsonReplacer","onUndefinedRender","onGuidRender","onColorRender","onJsonEdit","onRegExpRender","Config","Config2","newConfiguration","domElementTypes","getText","objectText","arrayText","mapText","setText","closeAllButtonText","openAllButtonText","copyAllButtonText","attributeNotValidErrorText","attributeNotSetErrorText","ellipsisText","closeAllButtonSymbolText","openAllButtonSymbolText","copyAllButtonSymbolText","backButtonText","nextButtonText","backButtonSymbolText","nextButtonSymbolText","noJsonToViewText","Trigger","Trigger2","customEvent","triggerFunction","args","apply","slice","call","ToolTip","ToolTip2","renderControl","body","assignToEvents","add2","addEventListener_Window","addEventListener","removeEventListener","addEventListener_Document","hide","tooltipClass","onmousemove","tooltipTimerId","setTimeout","clearTimeout","parentNode","removeChild","_configuration","_elements_Data","_elements_Data_Count","render","tagTypes","tagTypesLength","tagTypeIndex","domElements","getElementsByTagName","elements","elementsLength","elementIndex","renderElement","hasAttribute","bindingOptionsData","getAttribute","id","crypto","randomUUID","removeAttribute","hasOwnProperty","renderControlContainer","buildDocumentEvents","isForPageSwitch","renderControlTitleBar","contents","makeAreaDroppable","renderArray","renderObject","titleBar","ondblclick","onTitleBarDblClick","copy","onclick","onTitleBarCopyClick","openAll","closeAll","onBackPage","disabled","onNextPage","contains","copyData","replaceFunction","jsonStringifyReplacer","stringify","navigator","clipboard","writeText","_","addEvents","documentFunc","onWindowKeyDown","code","isMap","objectData","getObjectPropertyNames","propertyCount","objectTypeTitle","objectTypeContents","arrow","titleText","openingBrace","dataArrayIndex","renderObjectValues","addValueClickEvent","isSet","setData","openingBracket","renderArrayValues","coma","addNoArrowToClosingSymbol","isLastItem","jsonPath","propertiesLength","propertyIndex","propertyName","newJsonPath","renderValue","createClosingSymbol","addArrowEvent","dataLength","dataIndex1","actualIndex","getArrayIndex","getArrayIndexName","dataIndex2","name","isArrayItem","objectTypeValue","valueClass","valueElement","ignored","makePropertyNameEditable","createComma","makePropertyValueEditable","newValue","color","parseFloat","newStringValue","source","objectTitle","arrayTypeContents","valueObject","addValueElementToolTip","jsonPathParts","jsonPathPartsLength","jsonPathPartIndex","originalPropertyName","setAttribute","focus","onblur","onkeydown","newPropertyName","innerText","originalValue","originalPropertyValue","propertyValue","newPropertyValue","splice","getArrayIndexFromBrackets","newDataPropertyValue","BigInt","openingSymbol","panelId","hideFunc","showFunc","conditionFunc","condition","isClosed","index","largestValue","properties","key","push","collator","Intl","Collator","numeric","sensitivity","sort","compare","reverse","symbol","addNoArrow","symbolContainer","ondragover","ondragenter","ondragleave","ondrop","FileReader","dataTransfer","files","importFromFiles","filesLength","filesRead","filesData","onFileLoad","onSetJson","fileIndex","file","fileExtension","pop","importFromJson","reader","renderData","onloadend","onload","json","target","readAsText","destroyElement","_public","refresh","elementId","refreshAll","renderAll","setJson","jsonObject","jsonResult","getJson","destroy","destroyAll","setConfiguration","configurationHasChanged","newInternalConfiguration","getIds","getVersion","$jsontree"],"mappings":"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","sourcesContent":[null]} \ No newline at end of file