{"version":3,"sources":["jsdelivr-header.js","webpack:///json-formatter.js","/npm/json-formatter-js@2.2.0/dist/webpack:/webpack/bootstrap 025791c9c7689eee3736","webpack:///src/index.ts","webpack:///src/style.less","webpack:///~/css-loader/lib/css-base.js","webpack:///~/style-loader/addStyles.js","webpack:///src/style.less?a065","webpack:///src/helpers.ts"],"names":[],"mappings":"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","file":"/npm/json-formatter-js@2.2.0/dist/json-formatter.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/json-formatter-js@2.2.0/dist/json-formatter.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"dist\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 6);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__helpers__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__style_less__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__style_less___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__style_less__);\n\n\nvar DATE_STRING_REGEX = /(^\\d{1,4}[\\.|\\\\/|-]\\d{1,2}[\\.|\\\\/|-]\\d{1,4})(\\s*(?:0?[1-9]:[0-5]|1(?=[012])\\d:[0-5])\\d\\s*[ap]m)?$/;\nvar PARTIAL_DATE_REGEX = /\\d{2}:\\d{2}:\\d{2} GMT-\\d{4}/;\nvar JSON_DATE_REGEX = /\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d{3}Z/;\n// When toggleing, don't animated removal or addition of more than a few items\nvar MAX_ANIMATED_TOGGLE_ITEMS = 10;\nvar requestAnimationFrame = window.requestAnimationFrame || function (cb) { cb(); return 0; };\n;\nvar _defaultConfig = {\n    hoverPreviewEnabled: false,\n    hoverPreviewArrayCount: 100,\n    hoverPreviewFieldCount: 5,\n    animateOpen: true,\n    animateClose: true,\n    theme: null\n};\n/**\n * @class JSONFormatter\n *\n * JSONFormatter allows you to render JSON objects in HTML with a\n * **collapsible** navigation.\n*/\nvar JSONFormatter = (function () {\n    /**\n     * @param {object} json The JSON object you want to render. It has to be an\n     * object or array. Do NOT pass raw JSON string.\n     *\n     * @param {number} [open=1] his number indicates up to how many levels the\n     * rendered tree should expand. Set it to `0` to make the whole tree collapsed\n     * or set it to `Infinity` to expand the tree deeply\n     *\n     * @param {object} [config=defaultConfig] -\n     *  defaultConfig = {\n     *   hoverPreviewEnabled: false,\n     *   hoverPreviewArrayCount: 100,\n     *   hoverPreviewFieldCount: 5\n     * }\n     *\n     * Available configurations:\n     *  #####Hover Preview\n     * * `hoverPreviewEnabled`:  enable preview on hover\n     * * `hoverPreviewArrayCount`: number of array items to show in preview Any\n     *    array larger than this number will be shown as `Array[XXX]` where `XXX`\n     *    is length of the array.\n     * * `hoverPreviewFieldCount`: number of object properties to show for object\n     *   preview. Any object with more properties that thin number will be\n     *   truncated.\n     *\n     * @param {string} [key=undefined] The key that this object in it's parent\n     * context\n    */\n    function JSONFormatter(json, open, config, key) {\n        if (open === void 0) { open = 1; }\n        if (config === void 0) { config = _defaultConfig; }\n        this.json = json;\n        this.open = open;\n        this.config = config;\n        this.key = key;\n        // Hold the open state after the toggler is used\n        this._isOpen = null;\n        // Setting default values for config object\n        if (this.config.hoverPreviewEnabled === undefined) {\n            this.config.hoverPreviewEnabled = _defaultConfig.hoverPreviewEnabled;\n        }\n        if (this.config.hoverPreviewArrayCount === undefined) {\n            this.config.hoverPreviewArrayCount = _defaultConfig.hoverPreviewArrayCount;\n        }\n        if (this.config.hoverPreviewFieldCount === undefined) {\n            this.config.hoverPreviewFieldCount = _defaultConfig.hoverPreviewFieldCount;\n        }\n    }\n    Object.defineProperty(JSONFormatter.prototype, \"isOpen\", {\n        /*\n         * is formatter open?\n        */\n        get: function () {\n            if (this._isOpen !== null) {\n                return this._isOpen;\n            }\n            else {\n                return this.open > 0;\n            }\n        },\n        /*\n         * set open state (from toggler)\n        */\n        set: function (value) {\n            this._isOpen = value;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(JSONFormatter.prototype, \"isDate\", {\n        /*\n         * is this a date string?\n        */\n        get: function () {\n            return (this.type === 'string') &&\n                (DATE_STRING_REGEX.test(this.json) ||\n                    JSON_DATE_REGEX.test(this.json) ||\n                    PARTIAL_DATE_REGEX.test(this.json));\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(JSONFormatter.prototype, \"isUrl\", {\n        /*\n         * is this a URL string?\n        */\n        get: function () {\n            return this.type === 'string' && (this.json.indexOf('http') === 0);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(JSONFormatter.prototype, \"isArray\", {\n        /*\n         * is this an array?\n        */\n        get: function () {\n            return Array.isArray(this.json);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(JSONFormatter.prototype, \"isObject\", {\n        /*\n         * is this an object?\n         * Note: In this context arrays are object as well\n        */\n        get: function () {\n            return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__helpers__[\"a\" /* isObject */])(this.json);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(JSONFormatter.prototype, \"isEmptyObject\", {\n        /*\n         * is this an empty object with no properties?\n        */\n        get: function () {\n            return !this.keys.length && !this.isArray;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(JSONFormatter.prototype, \"isEmpty\", {\n        /*\n         * is this an empty object or array?\n        */\n        get: function () {\n            return this.isEmptyObject || (this.keys && !this.keys.length && this.isArray);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(JSONFormatter.prototype, \"hasKey\", {\n        /*\n         * did we recieve a key argument?\n         * This means that the formatter was called as a sub formatter of a parent formatter\n        */\n        get: function () {\n            return typeof this.key !== 'undefined';\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(JSONFormatter.prototype, \"constructorName\", {\n        /*\n         * if this is an object, get constructor function name\n        */\n        get: function () {\n            return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__helpers__[\"b\" /* getObjectName */])(this.json);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(JSONFormatter.prototype, \"type\", {\n        /*\n         * get type of this value\n         * Possible values: all JavaScript primitive types plus \"array\" and \"null\"\n        */\n        get: function () {\n            return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__helpers__[\"c\" /* getType */])(this.json);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(JSONFormatter.prototype, \"keys\", {\n        /*\n         * get object keys\n         * If there is an empty key we pad it wit quotes to make it visible\n        */\n        get: function () {\n            if (this.isObject) {\n                return Object.keys(this.json).map(function (key) { return key ? key : '\"\"'; });\n            }\n            else {\n                return [];\n            }\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * Toggles `isOpen` state\n     *\n    */\n    JSONFormatter.prototype.toggleOpen = function () {\n        this.isOpen = !this.isOpen;\n        if (this.element) {\n            if (this.isOpen) {\n                this.appendChildren(this.config.animateOpen);\n            }\n            else {\n                this.removeChildren(this.config.animateClose);\n            }\n            this.element.classList.toggle(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__helpers__[\"d\" /* cssClass */])('open'));\n        }\n    };\n    /**\n    * Open all children up to a certain depth.\n    * Allows actions such as expand all/collapse all\n    *\n    */\n    JSONFormatter.prototype.openAtDepth = function (depth) {\n        if (depth === void 0) { depth = 1; }\n        if (depth < 0) {\n            return;\n        }\n        this.open = depth;\n        this.isOpen = (depth !== 0);\n        if (this.element) {\n            this.removeChildren(false);\n            if (depth === 0) {\n                this.element.classList.remove(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__helpers__[\"d\" /* cssClass */])('open'));\n            }\n            else {\n                this.appendChildren(this.config.animateOpen);\n                this.element.classList.add(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__helpers__[\"d\" /* cssClass */])('open'));\n            }\n        }\n    };\n    /**\n     * Generates inline preview\n     *\n     * @returns {string}\n    */\n    JSONFormatter.prototype.getInlinepreview = function () {\n        var _this = this;\n        if (this.isArray) {\n            // if array length is greater then 100 it shows \"Array[101]\"\n            if (this.json.length > this.config.hoverPreviewArrayCount) {\n                return \"Array[\" + this.json.length + \"]\";\n            }\n            else {\n                return \"[\" + this.json.map(__WEBPACK_IMPORTED_MODULE_0__helpers__[\"e\" /* getPreview */]).join(', ') + \"]\";\n            }\n        }\n        else {\n            var keys = this.keys;\n            // the first five keys (like Chrome Developer Tool)\n            var narrowKeys = keys.slice(0, this.config.hoverPreviewFieldCount);\n            // json value schematic information\n            var kvs = narrowKeys.map(function (key) { return key + \":\" + __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__helpers__[\"e\" /* getPreview */])(_this.json[key]); });\n            // if keys count greater then 5 then show ellipsis\n            var ellipsis = keys.length >= this.config.hoverPreviewFieldCount ? '…' : '';\n            return \"{\" + kvs.join(', ') + ellipsis + \"}\";\n        }\n    };\n    /**\n     * Renders an HTML element and installs event listeners\n     *\n     * @returns {HTMLDivElement}\n    */\n    JSONFormatter.prototype.render = function () {\n        // construct the root element and assign it to this.element\n        this.element = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__helpers__[\"f\" /* createElement */])('div', 'row');\n        // construct the toggler link\n        var togglerLink = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__helpers__[\"f\" /* createElement */])('a', 'toggler-link');\n        // if this is an object we need a wrapper span (toggler)\n        if (this.isObject) {\n            togglerLink.appendChild(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__helpers__[\"f\" /* createElement */])('span', 'toggler'));\n        }\n        // if this is child of a parent formatter we need to append the key\n        if (this.hasKey) {\n            togglerLink.appendChild(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__helpers__[\"f\" /* createElement */])('span', 'key', this.key + \":\"));\n        }\n        // Value for objects and arrays\n        if (this.isObject) {\n            // construct the value holder element\n            var value = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__helpers__[\"f\" /* createElement */])('span', 'value');\n            // we need a wrapper span for objects\n            var objectWrapperSpan = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__helpers__[\"f\" /* createElement */])('span');\n            // get constructor name and append it to wrapper span\n            var constructorName = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__helpers__[\"f\" /* createElement */])('span', 'constructor-name', this.constructorName);\n            objectWrapperSpan.appendChild(constructorName);\n            // if it's an array append the array specific elements like brackets and length\n            if (this.isArray) {\n                var arrayWrapperSpan = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__helpers__[\"f\" /* createElement */])('span');\n                arrayWrapperSpan.appendChild(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__helpers__[\"f\" /* createElement */])('span', 'bracket', '['));\n                arrayWrapperSpan.appendChild(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__helpers__[\"f\" /* createElement */])('span', 'number', (this.json.length)));\n                arrayWrapperSpan.appendChild(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__helpers__[\"f\" /* createElement */])('span', 'bracket', ']'));\n                objectWrapperSpan.appendChild(arrayWrapperSpan);\n            }\n            // append object wrapper span to toggler link\n            value.appendChild(objectWrapperSpan);\n            togglerLink.appendChild(value);\n            // Primitive values\n        }\n        else {\n            // make a value holder element\n            var value = this.isUrl ? __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__helpers__[\"f\" /* createElement */])('a') : __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__helpers__[\"f\" /* createElement */])('span');\n            // add type and other type related CSS classes\n            value.classList.add(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__helpers__[\"d\" /* cssClass */])(this.type));\n            if (this.isDate) {\n                value.classList.add(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__helpers__[\"d\" /* cssClass */])('date'));\n            }\n            if (this.isUrl) {\n                value.classList.add(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__helpers__[\"d\" /* cssClass */])('url'));\n                value.setAttribute('href', this.json);\n            }\n            // Append value content to value element\n            var valuePreview = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__helpers__[\"g\" /* getValuePreview */])(this.json, this.json);\n            value.appendChild(document.createTextNode(valuePreview));\n            // append the value element to toggler link\n            togglerLink.appendChild(value);\n        }\n        // if hover preview is enabled, append the inline preview element\n        if (this.isObject && this.config.hoverPreviewEnabled) {\n            var preview = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__helpers__[\"f\" /* createElement */])('span', 'preview-text');\n            preview.appendChild(document.createTextNode(this.getInlinepreview()));\n            togglerLink.appendChild(preview);\n        }\n        // construct a children element\n        var children = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__helpers__[\"f\" /* createElement */])('div', 'children');\n        // set CSS classes for children\n        if (this.isObject) {\n            children.classList.add(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__helpers__[\"d\" /* cssClass */])('object'));\n        }\n        if (this.isArray) {\n            children.classList.add(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__helpers__[\"d\" /* cssClass */])('array'));\n        }\n        if (this.isEmpty) {\n            children.classList.add(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__helpers__[\"d\" /* cssClass */])('empty'));\n        }\n        // set CSS classes for root element\n        if (this.config && this.config.theme) {\n            this.element.classList.add(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__helpers__[\"d\" /* cssClass */])(this.config.theme));\n        }\n        if (this.isOpen) {\n            this.element.classList.add(__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__helpers__[\"d\" /* cssClass */])('open'));\n        }\n        // append toggler and children elements to root element\n        this.element.appendChild(togglerLink);\n        this.element.appendChild(children);\n        // if formatter is set to be open call appendChildren\n        if (this.isObject && this.isOpen) {\n            this.appendChildren();\n        }\n        // add event listener for toggling\n        if (this.isObject) {\n            togglerLink.addEventListener('click', this.toggleOpen.bind(this));\n        }\n        return this.element;\n    };\n    /**\n     * Appends all the children to children element\n     * Animated option is used when user triggers this via a click\n    */\n    JSONFormatter.prototype.appendChildren = function (animated) {\n        var _this = this;\n        if (animated === void 0) { animated = false; }\n        var children = this.element.querySelector(\"div.\" + __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__helpers__[\"d\" /* cssClass */])('children'));\n        if (!children || this.isEmpty) {\n            return;\n        }\n        if (animated) {\n            var index_1 = 0;\n            var addAChild_1 = function () {\n                var key = _this.keys[index_1];\n                var formatter = new JSONFormatter(_this.json[key], _this.open - 1, _this.config, key);\n                children.appendChild(formatter.render());\n                index_1 += 1;\n                if (index_1 < _this.keys.length) {\n                    if (index_1 > MAX_ANIMATED_TOGGLE_ITEMS) {\n                        addAChild_1();\n                    }\n                    else {\n                        requestAnimationFrame(addAChild_1);\n                    }\n                }\n            };\n            requestAnimationFrame(addAChild_1);\n        }\n        else {\n            this.keys.forEach(function (key) {\n                var formatter = new JSONFormatter(_this.json[key], _this.open - 1, _this.config, key);\n                children.appendChild(formatter.render());\n            });\n        }\n    };\n    /**\n     * Removes all the children from children element\n     * Animated option is used when user triggers this via a click\n    */\n    JSONFormatter.prototype.removeChildren = function (animated) {\n        if (animated === void 0) { animated = false; }\n        var childrenElement = this.element.querySelector(\"div.\" + __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__helpers__[\"d\" /* cssClass */])('children'));\n        if (animated) {\n            var childrenRemoved_1 = 0;\n            var removeAChild_1 = function () {\n                if (childrenElement && childrenElement.children.length) {\n                    childrenElement.removeChild(childrenElement.children[0]);\n                    childrenRemoved_1 += 1;\n                    if (childrenRemoved_1 > MAX_ANIMATED_TOGGLE_ITEMS) {\n                        removeAChild_1();\n                    }\n                    else {\n                        requestAnimationFrame(removeAChild_1);\n                    }\n                }\n            };\n            requestAnimationFrame(removeAChild_1);\n        }\n        else {\n            if (childrenElement) {\n                childrenElement.innerHTML = '';\n            }\n        }\n    };\n    return JSONFormatter;\n}());\n/* harmony default export */ __webpack_exports__[\"default\"] = (JSONFormatter);\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\nexports = module.exports = __webpack_require__(2)();\n// imports\n\n\n// module\nexports.push([module.i, \".json-formatter-row {\\n  font-family: monospace;\\n}\\n.json-formatter-row,\\n.json-formatter-row a,\\n.json-formatter-row a:hover {\\n  color: black;\\n  text-decoration: none;\\n}\\n.json-formatter-row .json-formatter-row {\\n  margin-left: 1rem;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty {\\n  opacity: 0.5;\\n  margin-left: 1rem;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty:after {\\n  display: none;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-object:after {\\n  content: \\\"No properties\\\";\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-array:after {\\n  content: \\\"[]\\\";\\n}\\n.json-formatter-row .json-formatter-string {\\n  color: green;\\n  white-space: pre;\\n  word-wrap: break-word;\\n}\\n.json-formatter-row .json-formatter-number {\\n  color: blue;\\n}\\n.json-formatter-row .json-formatter-boolean {\\n  color: red;\\n}\\n.json-formatter-row .json-formatter-null {\\n  color: #855A00;\\n}\\n.json-formatter-row .json-formatter-undefined {\\n  color: #ca0b69;\\n}\\n.json-formatter-row .json-formatter-function {\\n  color: #FF20ED;\\n}\\n.json-formatter-row .json-formatter-date {\\n  background-color: rgba(0, 0, 0, 0.05);\\n}\\n.json-formatter-row .json-formatter-url {\\n  text-decoration: underline;\\n  color: blue;\\n  cursor: pointer;\\n}\\n.json-formatter-row .json-formatter-bracket {\\n  color: blue;\\n}\\n.json-formatter-row .json-formatter-key {\\n  color: #00008B;\\n  cursor: pointer;\\n  padding-right: 0.2rem;\\n}\\n.json-formatter-row .json-formatter-constructor-name {\\n  cursor: pointer;\\n}\\n.json-formatter-row .json-formatter-toggler {\\n  line-height: 1.2rem;\\n  font-size: 0.7rem;\\n  vertical-align: middle;\\n  opacity: 0.6;\\n  cursor: pointer;\\n  padding-right: 0.2rem;\\n}\\n.json-formatter-row .json-formatter-toggler:after {\\n  display: inline-block;\\n  transition: transform 100ms ease-in;\\n  content: \\\"\\\\25BA\\\";\\n}\\n.json-formatter-row > a > .json-formatter-preview-text {\\n  opacity: 0;\\n  transition: opacity 0.15s ease-in;\\n  font-style: italic;\\n}\\n.json-formatter-row:hover > a > .json-formatter-preview-text {\\n  opacity: 0.6;\\n}\\n.json-formatter-row.json-formatter-open > .json-formatter-toggler-link .json-formatter-toggler:after {\\n  transform: rotate(90deg);\\n}\\n.json-formatter-row.json-formatter-open > .json-formatter-children:after {\\n  display: inline-block;\\n}\\n.json-formatter-row.json-formatter-open > a > .json-formatter-preview-text {\\n  display: none;\\n}\\n.json-formatter-row.json-formatter-open.json-formatter-empty:after {\\n  display: block;\\n}\\n.json-formatter-dark.json-formatter-row {\\n  font-family: monospace;\\n}\\n.json-formatter-dark.json-formatter-row,\\n.json-formatter-dark.json-formatter-row a,\\n.json-formatter-dark.json-formatter-row a:hover {\\n  color: white;\\n  text-decoration: none;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-row {\\n  margin-left: 1rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty {\\n  opacity: 0.5;\\n  margin-left: 1rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty:after {\\n  display: none;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-object:after {\\n  content: \\\"No properties\\\";\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-array:after {\\n  content: \\\"[]\\\";\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-string {\\n  color: #31F031;\\n  white-space: pre;\\n  word-wrap: break-word;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-number {\\n  color: #66C2FF;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-boolean {\\n  color: #EC4242;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-null {\\n  color: #EEC97D;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-undefined {\\n  color: #ef8fbe;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-function {\\n  color: #FD48CB;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-date {\\n  background-color: rgba(255, 255, 255, 0.05);\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-url {\\n  text-decoration: underline;\\n  color: #027BFF;\\n  cursor: pointer;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-bracket {\\n  color: #9494FF;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-key {\\n  color: #23A0DB;\\n  cursor: pointer;\\n  padding-right: 0.2rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-constructor-name {\\n  cursor: pointer;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler {\\n  line-height: 1.2rem;\\n  font-size: 0.7rem;\\n  vertical-align: middle;\\n  opacity: 0.6;\\n  cursor: pointer;\\n  padding-right: 0.2rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler:after {\\n  display: inline-block;\\n  transition: transform 100ms ease-in;\\n  content: \\\"\\\\25BA\\\";\\n}\\n.json-formatter-dark.json-formatter-row > a > .json-formatter-preview-text {\\n  opacity: 0;\\n  transition: opacity 0.15s ease-in;\\n  font-style: italic;\\n}\\n.json-formatter-dark.json-formatter-row:hover > a > .json-formatter-preview-text {\\n  opacity: 0.6;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > .json-formatter-toggler-link .json-formatter-toggler:after {\\n  transform: rotate(90deg);\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > .json-formatter-children:after {\\n  display: inline-block;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > a > .json-formatter-preview-text {\\n  display: none;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open.json-formatter-empty:after {\\n  display: block;\\n}\\n\", \"\"]);\n\n// exports\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\n/*\r\n\tMIT License http://www.opensource.org/licenses/mit-license.php\r\n\tAuthor Tobias Koppers @sokra\r\n*/\r\n// css base code, injected by the css-loader\r\nmodule.exports = function() {\r\n\tvar list = [];\r\n\r\n\t// return the list of modules as css string\r\n\tlist.toString = function toString() {\r\n\t\tvar result = [];\r\n\t\tfor(var i = 0; i < this.length; i++) {\r\n\t\t\tvar item = this[i];\r\n\t\t\tif(item[2]) {\r\n\t\t\t\tresult.push(\"@media \" + item[2] + \"{\" + item[1] + \"}\");\r\n\t\t\t} else {\r\n\t\t\t\tresult.push(item[1]);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result.join(\"\");\r\n\t};\r\n\r\n\t// import a list of modules into the list\r\n\tlist.i = function(modules, mediaQuery) {\r\n\t\tif(typeof modules === \"string\")\r\n\t\t\tmodules = [[null, modules, \"\"]];\r\n\t\tvar alreadyImportedModules = {};\r\n\t\tfor(var i = 0; i < this.length; i++) {\r\n\t\t\tvar id = this[i][0];\r\n\t\t\tif(typeof id === \"number\")\r\n\t\t\t\talreadyImportedModules[id] = true;\r\n\t\t}\r\n\t\tfor(i = 0; i < modules.length; i++) {\r\n\t\t\tvar item = modules[i];\r\n\t\t\t// skip already imported module\r\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\r\n\t\t\t//  when a module is imported multiple times with different media queries.\r\n\t\t\t//  I hope this will never occur (Hey this way we have smaller bundles)\r\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\r\n\t\t\t\tif(mediaQuery && !item[2]) {\r\n\t\t\t\t\titem[2] = mediaQuery;\r\n\t\t\t\t} else if(mediaQuery) {\r\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\r\n\t\t\t\t}\r\n\t\t\t\tlist.push(item);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\treturn list;\r\n};\r\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\n/*\r\n\tMIT License http://www.opensource.org/licenses/mit-license.php\r\n\tAuthor Tobias Koppers @sokra\r\n*/\r\nvar stylesInDom = {},\r\n\tmemoize = function(fn) {\r\n\t\tvar memo;\r\n\t\treturn function () {\r\n\t\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\r\n\t\t\treturn memo;\r\n\t\t};\r\n\t},\r\n\tisOldIE = memoize(function() {\r\n\t\treturn /msie [6-9]\\b/.test(window.navigator.userAgent.toLowerCase());\r\n\t}),\r\n\tgetHeadElement = memoize(function () {\r\n\t\treturn document.head || document.getElementsByTagName(\"head\")[0];\r\n\t}),\r\n\tsingletonElement = null,\r\n\tsingletonCounter = 0,\r\n\tstyleElementsInsertedAtTop = [];\r\n\r\nmodule.exports = function(list, options) {\r\n\tif(typeof DEBUG !== \"undefined\" && DEBUG) {\r\n\t\tif(typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\r\n\t}\r\n\r\n\toptions = options || {};\r\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\r\n\t// tags it will allow on a page\r\n\tif (typeof options.singleton === \"undefined\") options.singleton = isOldIE();\r\n\r\n\t// By default, add <style> tags to the bottom of <head>.\r\n\tif (typeof options.insertAt === \"undefined\") options.insertAt = \"bottom\";\r\n\r\n\tvar styles = listToStyles(list);\r\n\taddStylesToDom(styles, options);\r\n\r\n\treturn function update(newList) {\r\n\t\tvar mayRemove = [];\r\n\t\tfor(var i = 0; i < styles.length; i++) {\r\n\t\t\tvar item = styles[i];\r\n\t\t\tvar domStyle = stylesInDom[item.id];\r\n\t\t\tdomStyle.refs--;\r\n\t\t\tmayRemove.push(domStyle);\r\n\t\t}\r\n\t\tif(newList) {\r\n\t\t\tvar newStyles = listToStyles(newList);\r\n\t\t\taddStylesToDom(newStyles, options);\r\n\t\t}\r\n\t\tfor(var i = 0; i < mayRemove.length; i++) {\r\n\t\t\tvar domStyle = mayRemove[i];\r\n\t\t\tif(domStyle.refs === 0) {\r\n\t\t\t\tfor(var j = 0; j < domStyle.parts.length; j++)\r\n\t\t\t\t\tdomStyle.parts[j]();\r\n\t\t\t\tdelete stylesInDom[domStyle.id];\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction addStylesToDom(styles, options) {\r\n\tfor(var i = 0; i < styles.length; i++) {\r\n\t\tvar item = styles[i];\r\n\t\tvar domStyle = stylesInDom[item.id];\r\n\t\tif(domStyle) {\r\n\t\t\tdomStyle.refs++;\r\n\t\t\tfor(var j = 0; j < domStyle.parts.length; j++) {\r\n\t\t\t\tdomStyle.parts[j](item.parts[j]);\r\n\t\t\t}\r\n\t\t\tfor(; j < item.parts.length; j++) {\r\n\t\t\t\tdomStyle.parts.push(addStyle(item.parts[j], options));\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvar parts = [];\r\n\t\t\tfor(var j = 0; j < item.parts.length; j++) {\r\n\t\t\t\tparts.push(addStyle(item.parts[j], options));\r\n\t\t\t}\r\n\t\t\tstylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction listToStyles(list) {\r\n\tvar styles = [];\r\n\tvar newStyles = {};\r\n\tfor(var i = 0; i < list.length; i++) {\r\n\t\tvar item = list[i];\r\n\t\tvar id = item[0];\r\n\t\tvar css = item[1];\r\n\t\tvar media = item[2];\r\n\t\tvar sourceMap = item[3];\r\n\t\tvar part = {css: css, media: media, sourceMap: sourceMap};\r\n\t\tif(!newStyles[id])\r\n\t\t\tstyles.push(newStyles[id] = {id: id, parts: [part]});\r\n\t\telse\r\n\t\t\tnewStyles[id].parts.push(part);\r\n\t}\r\n\treturn styles;\r\n}\r\n\r\nfunction insertStyleElement(options, styleElement) {\r\n\tvar head = getHeadElement();\r\n\tvar lastStyleElementInsertedAtTop = styleElementsInsertedAtTop[styleElementsInsertedAtTop.length - 1];\r\n\tif (options.insertAt === \"top\") {\r\n\t\tif(!lastStyleElementInsertedAtTop) {\r\n\t\t\thead.insertBefore(styleElement, head.firstChild);\r\n\t\t} else if(lastStyleElementInsertedAtTop.nextSibling) {\r\n\t\t\thead.insertBefore(styleElement, lastStyleElementInsertedAtTop.nextSibling);\r\n\t\t} else {\r\n\t\t\thead.appendChild(styleElement);\r\n\t\t}\r\n\t\tstyleElementsInsertedAtTop.push(styleElement);\r\n\t} else if (options.insertAt === \"bottom\") {\r\n\t\thead.appendChild(styleElement);\r\n\t} else {\r\n\t\tthrow new Error(\"Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'.\");\r\n\t}\r\n}\r\n\r\nfunction removeStyleElement(styleElement) {\r\n\tstyleElement.parentNode.removeChild(styleElement);\r\n\tvar idx = styleElementsInsertedAtTop.indexOf(styleElement);\r\n\tif(idx >= 0) {\r\n\t\tstyleElementsInsertedAtTop.splice(idx, 1);\r\n\t}\r\n}\r\n\r\nfunction createStyleElement(options) {\r\n\tvar styleElement = document.createElement(\"style\");\r\n\tstyleElement.type = \"text/css\";\r\n\tinsertStyleElement(options, styleElement);\r\n\treturn styleElement;\r\n}\r\n\r\nfunction createLinkElement(options) {\r\n\tvar linkElement = document.createElement(\"link\");\r\n\tlinkElement.rel = \"stylesheet\";\r\n\tinsertStyleElement(options, linkElement);\r\n\treturn linkElement;\r\n}\r\n\r\nfunction addStyle(obj, options) {\r\n\tvar styleElement, update, remove;\r\n\r\n\tif (options.singleton) {\r\n\t\tvar styleIndex = singletonCounter++;\r\n\t\tstyleElement = singletonElement || (singletonElement = createStyleElement(options));\r\n\t\tupdate = applyToSingletonTag.bind(null, styleElement, styleIndex, false);\r\n\t\tremove = applyToSingletonTag.bind(null, styleElement, styleIndex, true);\r\n\t} else if(obj.sourceMap &&\r\n\t\ttypeof URL === \"function\" &&\r\n\t\ttypeof URL.createObjectURL === \"function\" &&\r\n\t\ttypeof URL.revokeObjectURL === \"function\" &&\r\n\t\ttypeof Blob === \"function\" &&\r\n\t\ttypeof btoa === \"function\") {\r\n\t\tstyleElement = createLinkElement(options);\r\n\t\tupdate = updateLink.bind(null, styleElement);\r\n\t\tremove = function() {\r\n\t\t\tremoveStyleElement(styleElement);\r\n\t\t\tif(styleElement.href)\r\n\t\t\t\tURL.revokeObjectURL(styleElement.href);\r\n\t\t};\r\n\t} else {\r\n\t\tstyleElement = createStyleElement(options);\r\n\t\tupdate = applyToTag.bind(null, styleElement);\r\n\t\tremove = function() {\r\n\t\t\tremoveStyleElement(styleElement);\r\n\t\t};\r\n\t}\r\n\r\n\tupdate(obj);\r\n\r\n\treturn function updateStyle(newObj) {\r\n\t\tif(newObj) {\r\n\t\t\tif(newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap)\r\n\t\t\t\treturn;\r\n\t\t\tupdate(obj = newObj);\r\n\t\t} else {\r\n\t\t\tremove();\r\n\t\t}\r\n\t};\r\n}\r\n\r\nvar replaceText = (function () {\r\n\tvar textStore = [];\r\n\r\n\treturn function (index, replacement) {\r\n\t\ttextStore[index] = replacement;\r\n\t\treturn textStore.filter(Boolean).join('\\n');\r\n\t};\r\n})();\r\n\r\nfunction applyToSingletonTag(styleElement, index, remove, obj) {\r\n\tvar css = remove ? \"\" : obj.css;\r\n\r\n\tif (styleElement.styleSheet) {\r\n\t\tstyleElement.styleSheet.cssText = replaceText(index, css);\r\n\t} else {\r\n\t\tvar cssNode = document.createTextNode(css);\r\n\t\tvar childNodes = styleElement.childNodes;\r\n\t\tif (childNodes[index]) styleElement.removeChild(childNodes[index]);\r\n\t\tif (childNodes.length) {\r\n\t\t\tstyleElement.insertBefore(cssNode, childNodes[index]);\r\n\t\t} else {\r\n\t\t\tstyleElement.appendChild(cssNode);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction applyToTag(styleElement, obj) {\r\n\tvar css = obj.css;\r\n\tvar media = obj.media;\r\n\r\n\tif(media) {\r\n\t\tstyleElement.setAttribute(\"media\", media)\r\n\t}\r\n\r\n\tif(styleElement.styleSheet) {\r\n\t\tstyleElement.styleSheet.cssText = css;\r\n\t} else {\r\n\t\twhile(styleElement.firstChild) {\r\n\t\t\tstyleElement.removeChild(styleElement.firstChild);\r\n\t\t}\r\n\t\tstyleElement.appendChild(document.createTextNode(css));\r\n\t}\r\n}\r\n\r\nfunction updateLink(linkElement, obj) {\r\n\tvar css = obj.css;\r\n\tvar sourceMap = obj.sourceMap;\r\n\r\n\tif(sourceMap) {\r\n\t\t// http://stackoverflow.com/a/26603875\r\n\t\tcss += \"\\n/*# sourceMappingURL=data:application/json;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + \" */\";\r\n\t}\r\n\r\n\tvar blob = new Blob([css], { type: \"text/css\" });\r\n\r\n\tvar oldSrc = linkElement.href;\r\n\r\n\tlinkElement.href = URL.createObjectURL(blob);\r\n\r\n\tif(oldSrc)\r\n\t\tURL.revokeObjectURL(oldSrc);\r\n}\r\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(1);\nif(typeof content === 'string') content = [[module.i, content, '']];\n// add the styles to the DOM\nvar update = __webpack_require__(3)(content, {});\nif(content.locals) module.exports = content.locals;\n// Hot Module Replacement\nif(false) {\n\t// When the styles change, update the <style> tags\n\tif(!content.locals) {\n\t\tmodule.hot.accept(\"!!./../node_modules/css-loader/index.js!./../node_modules/less-loader/index.js!./style.less\", function() {\n\t\t\tvar newContent = require(\"!!./../node_modules/css-loader/index.js!./../node_modules/less-loader/index.js!./style.less\");\n\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\tupdate(newContent);\n\t\t});\n\t}\n\t// When the module is disposed, remove the <style> tags\n\tmodule.hot.dispose(function() { update(); });\n}\n\n/***/ }),\n/* 5 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isObject;\n/* harmony export (immutable) */ __webpack_exports__[\"b\"] = getObjectName;\n/* harmony export (immutable) */ __webpack_exports__[\"c\"] = getType;\n/* harmony export (immutable) */ __webpack_exports__[\"g\"] = getValuePreview;\n/* harmony export (immutable) */ __webpack_exports__[\"e\"] = getPreview;\n/* harmony export (immutable) */ __webpack_exports__[\"d\"] = cssClass;\n/* harmony export (immutable) */ __webpack_exports__[\"f\"] = createElement;\n/*\n * Escapes `\"` charachters from string\n*/\nfunction escapeString(str) {\n    return str.replace('\"', '\\\"');\n}\n/*\n * Determines if a value is an object\n*/\nfunction isObject(value) {\n    var type = typeof value;\n    return !!value && (type == 'object');\n}\n/*\n * Gets constructor name of an object.\n * From http://stackoverflow.com/a/332429\n *\n*/\nfunction getObjectName(object) {\n    if (object === undefined) {\n        return '';\n    }\n    if (object === null) {\n        return 'Object';\n    }\n    if (typeof object === 'object' && !object.constructor) {\n        return 'Object';\n    }\n    var funcNameRegex = /function ([^(]*)/;\n    var results = (funcNameRegex).exec((object).constructor.toString());\n    if (results && results.length > 1) {\n        return results[1];\n    }\n    else {\n        return '';\n    }\n}\n/*\n * Gets type of an object. Returns \"null\" for null objects\n*/\nfunction getType(object) {\n    if (object === null) {\n        return 'null';\n    }\n    return typeof object;\n}\n/*\n * Generates inline preview for a JavaScript object based on a value\n*/\nfunction getValuePreview(object, value) {\n    var type = getType(object);\n    if (type === 'null' || type === 'undefined') {\n        return type;\n    }\n    if (type === 'string') {\n        value = '\"' + escapeString(value) + '\"';\n    }\n    if (type === 'function') {\n        // Remove content of the function\n        return object.toString()\n            .replace(/[\\r\\n]/g, '')\n            .replace(/\\{.*\\}/, '') + '{…}';\n    }\n    return value;\n}\n/*\n * Generates inline preview for a JavaScript object\n*/\nfunction getPreview(object) {\n    var value = '';\n    if (isObject(object)) {\n        value = getObjectName(object);\n        if (Array.isArray(object))\n            value += '[' + object.length + ']';\n    }\n    else {\n        value = getValuePreview(object, object);\n    }\n    return value;\n}\n/*\n * Generates a prefixed CSS class name\n*/\nfunction cssClass(className) {\n    return \"json-formatter-\" + className;\n}\n/*\n  * Creates a new DOM element wiht given type and class\n  * TODO: move me to helpers\n*/\nfunction createElement(type, className, content) {\n    var el = document.createElement(type);\n    if (className) {\n        el.classList.add(cssClass(className));\n    }\n    if (content !== undefined) {\n        if (content instanceof Node) {\n            el.appendChild(content);\n        }\n        else {\n            el.appendChild(document.createTextNode(String(content)));\n        }\n    }\n    return el;\n}\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(0);\n\n\n/***/ })\n/******/ ]);\n\n\n// WEBPACK FOOTER //\n// json-formatter.js",null,"import {\n  isObject,\n  getObjectName,\n  getType,\n  getValuePreview,\n  getPreview,\n  cssClass,\n  createElement\n} from './helpers';\n\nimport './style.less';\n\nconst DATE_STRING_REGEX = /(^\\d{1,4}[\\.|\\\\/|-]\\d{1,2}[\\.|\\\\/|-]\\d{1,4})(\\s*(?:0?[1-9]:[0-5]|1(?=[012])\\d:[0-5])\\d\\s*[ap]m)?$/;\nconst PARTIAL_DATE_REGEX = /\\d{2}:\\d{2}:\\d{2} GMT-\\d{4}/;\nconst JSON_DATE_REGEX = /\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d{3}Z/;\n\n// When toggleing, don't animated removal or addition of more than a few items\nconst MAX_ANIMATED_TOGGLE_ITEMS = 10;\n\nconst requestAnimationFrame = window.requestAnimationFrame || function(cb: ()=>void) { cb(); return 0; };\n\nexport interface JSONFormatterConfiguration {\n  hoverPreviewEnabled?: boolean;\n  hoverPreviewArrayCount?: number;\n  hoverPreviewFieldCount?: number;\n  animateOpen?: boolean;\n  animateClose?: boolean;\n  theme?: string;\n};\n\nconst _defaultConfig: JSONFormatterConfiguration = {\n  hoverPreviewEnabled: false,\n  hoverPreviewArrayCount: 100,\n  hoverPreviewFieldCount: 5,\n  animateOpen: true,\n  animateClose: true,\n  theme: null\n};\n\n\n/**\n * @class JSONFormatter\n *\n * JSONFormatter allows you to render JSON objects in HTML with a\n * **collapsible** navigation.\n*/\nexport default class JSONFormatter {\n\n  // Hold the open state after the toggler is used\n  private _isOpen : boolean = null;\n\n  // A reference to the element that we render to\n  private element: Element;\n\n  /**\n   * @param {object} json The JSON object you want to render. It has to be an\n   * object or array. Do NOT pass raw JSON string.\n   *\n   * @param {number} [open=1] his number indicates up to how many levels the\n   * rendered tree should expand. Set it to `0` to make the whole tree collapsed\n   * or set it to `Infinity` to expand the tree deeply\n   *\n   * @param {object} [config=defaultConfig] -\n   *  defaultConfig = {\n   *   hoverPreviewEnabled: false,\n   *   hoverPreviewArrayCount: 100,\n   *   hoverPreviewFieldCount: 5\n   * }\n   *\n   * Available configurations:\n   *  #####Hover Preview\n   * * `hoverPreviewEnabled`:  enable preview on hover\n   * * `hoverPreviewArrayCount`: number of array items to show in preview Any\n   *    array larger than this number will be shown as `Array[XXX]` where `XXX`\n   *    is length of the array.\n   * * `hoverPreviewFieldCount`: number of object properties to show for object\n   *   preview. Any object with more properties that thin number will be\n   *   truncated.\n   *\n   * @param {string} [key=undefined] The key that this object in it's parent\n   * context\n  */\n  constructor(public json: any, private open = 1, private config: JSONFormatterConfiguration = _defaultConfig, private key?: string) {\n\n    // Setting default values for config object\n    if (this.config.hoverPreviewEnabled === undefined) {\n      this.config.hoverPreviewEnabled = _defaultConfig.hoverPreviewEnabled;\n    }\n    if (this.config.hoverPreviewArrayCount === undefined) {\n      this.config.hoverPreviewArrayCount = _defaultConfig.hoverPreviewArrayCount;\n    }\n    if (this.config.hoverPreviewFieldCount === undefined) {\n      this.config.hoverPreviewFieldCount = _defaultConfig.hoverPreviewFieldCount;\n    }\n  }\n\n  /*\n   * is formatter open?\n  */\n  private get isOpen(): boolean {\n    if (this._isOpen !== null) {\n      return this._isOpen\n    } else {\n      return this.open > 0;\n    }\n  }\n\n  /*\n   * set open state (from toggler)\n  */\n  private set isOpen(value: boolean) {\n    this._isOpen = value;\n  }\n\n  /*\n   * is this a date string?\n  */\n  private get isDate(): boolean {\n    return (this.type === 'string') &&\n      (DATE_STRING_REGEX.test(this.json) ||\n      JSON_DATE_REGEX.test(this.json) ||\n      PARTIAL_DATE_REGEX.test(this.json));\n  }\n\n  /*\n   * is this a URL string?\n  */\n  private get isUrl(): boolean {\n    return this.type === 'string' && (this.json.indexOf('http') === 0);\n  }\n\n  /*\n   * is this an array?\n  */\n  private get isArray(): boolean {\n    return Array.isArray(this.json);\n  }\n\n  /*\n   * is this an object?\n   * Note: In this context arrays are object as well\n  */\n  private get isObject(): boolean {\n    return isObject(this.json);\n  }\n\n  /*\n   * is this an empty object with no properties?\n  */\n  private get isEmptyObject(): boolean {\n    return !this.keys.length && !this.isArray;\n  }\n\n  /*\n   * is this an empty object or array?\n  */\n  private get isEmpty(): boolean {\n    return this.isEmptyObject || (this.keys && !this.keys.length && this.isArray);\n  }\n\n  /*\n   * did we recieve a key argument?\n   * This means that the formatter was called as a sub formatter of a parent formatter\n  */\n  private get hasKey(): boolean {\n    return typeof this.key !== 'undefined';\n  }\n\n  /*\n   * if this is an object, get constructor function name\n  */\n  private get constructorName(): string {\n    return getObjectName(this.json);\n  }\n\n  /*\n   * get type of this value\n   * Possible values: all JavaScript primitive types plus \"array\" and \"null\"\n  */\n  private get type(): string {\n    return getType(this.json);\n  }\n\n  /*\n   * get object keys\n   * If there is an empty key we pad it wit quotes to make it visible\n  */\n  private get keys(): string[] {\n    if (this.isObject) {\n      return Object.keys(this.json).map((key)=> key ? key : '\"\"');\n    } else {\n      return [];\n    }\n  }\n\n  /**\n   * Toggles `isOpen` state\n   *\n  */\n  toggleOpen() {\n    this.isOpen = !this.isOpen;\n\n    if (this.element) {\n      if (this.isOpen) {\n        this.appendChildren(this.config.animateOpen);\n      } else{\n        this.removeChildren(this.config.animateClose);\n      }\n      this.element.classList.toggle(cssClass('open'));\n    }\n  }\n\n  /**\n  * Open all children up to a certain depth.\n  * Allows actions such as expand all/collapse all\n  *\n  */\n  openAtDepth(depth = 1) {\n    if (depth < 0) {\n      return;\n    }\n\n    this.open = depth;\n    this.isOpen = (depth !== 0);\n\n    if (this.element) {\n      this.removeChildren(false);\n\n      if (depth === 0) {\n        this.element.classList.remove(cssClass('open'));\n      } else {\n        this.appendChildren(this.config.animateOpen);\n        this.element.classList.add(cssClass('open'));\n      }\n    }\n  }\n\n  /**\n   * Generates inline preview\n   *\n   * @returns {string}\n  */\n  getInlinepreview() {\n    if (this.isArray) {\n\n      // if array length is greater then 100 it shows \"Array[101]\"\n      if (this.json.length > this.config.hoverPreviewArrayCount) {\n        return `Array[${this.json.length}]`;\n      } else {\n        return `[${this.json.map(getPreview).join(', ')}]`;\n      }\n    } else {\n\n      const keys = this.keys;\n\n      // the first five keys (like Chrome Developer Tool)\n      const narrowKeys = keys.slice(0, this.config.hoverPreviewFieldCount);\n\n      // json value schematic information\n      const kvs = narrowKeys.map(key => `${key}:${getPreview(this.json[key])}`);\n\n      // if keys count greater then 5 then show ellipsis\n      const ellipsis = keys.length >= this.config.hoverPreviewFieldCount ? '…' : '';\n\n      return `{${kvs.join(', ')}${ellipsis}}`;\n    }\n  }\n\n\n  /**\n   * Renders an HTML element and installs event listeners\n   *\n   * @returns {HTMLDivElement}\n  */\n  render(): HTMLDivElement {\n\n    // construct the root element and assign it to this.element\n    this.element = createElement('div', 'row');\n\n    // construct the toggler link\n    const togglerLink = createElement('a', 'toggler-link');\n\n    // if this is an object we need a wrapper span (toggler)\n    if (this.isObject) {\n      togglerLink.appendChild(createElement('span', 'toggler'));\n    }\n\n    // if this is child of a parent formatter we need to append the key\n    if (this.hasKey) {\n      togglerLink.appendChild(createElement('span', 'key', `${this.key}:`));\n    }\n\n    // Value for objects and arrays\n    if (this.isObject) {\n\n      // construct the value holder element\n      const value = createElement('span', 'value');\n\n      // we need a wrapper span for objects\n      const objectWrapperSpan = createElement('span');\n\n      // get constructor name and append it to wrapper span\n      var constructorName = createElement('span', 'constructor-name', this.constructorName);\n      objectWrapperSpan.appendChild(constructorName);\n\n      // if it's an array append the array specific elements like brackets and length\n      if (this.isArray) {\n        const arrayWrapperSpan = createElement('span');\n        arrayWrapperSpan.appendChild(createElement('span', 'bracket', '['));\n        arrayWrapperSpan.appendChild(createElement('span', 'number', (this.json.length)));\n        arrayWrapperSpan.appendChild(createElement('span', 'bracket', ']'));\n        objectWrapperSpan.appendChild(arrayWrapperSpan);\n      }\n\n      // append object wrapper span to toggler link\n      value.appendChild(objectWrapperSpan);\n      togglerLink.appendChild(value);\n\n    // Primitive values\n    } else {\n\n      // make a value holder element\n      const value = this.isUrl ? createElement('a') : createElement('span');\n\n      // add type and other type related CSS classes\n      value.classList.add(cssClass(this.type));\n      if (this.isDate) {\n        value.classList.add(cssClass('date'));\n      }\n      if (this.isUrl) {\n        value.classList.add(cssClass('url'));\n        value.setAttribute('href', this.json);\n      }\n\n      // Append value content to value element\n      const valuePreview = getValuePreview(this.json, this.json);\n      value.appendChild(document.createTextNode(valuePreview));\n\n      // append the value element to toggler link\n      togglerLink.appendChild(value);\n    }\n\n    // if hover preview is enabled, append the inline preview element\n    if (this.isObject && this.config.hoverPreviewEnabled) {\n      const preview = createElement('span', 'preview-text');\n      preview.appendChild(document.createTextNode(this.getInlinepreview()));\n      togglerLink.appendChild(preview);\n    }\n\n    // construct a children element\n    const children = createElement('div', 'children');\n\n    // set CSS classes for children\n    if (this.isObject) {\n      children.classList.add(cssClass('object'));\n    }\n    if (this.isArray) {\n      children.classList.add(cssClass('array'));\n    }\n    if (this.isEmpty) {\n      children.classList.add(cssClass('empty'));\n    }\n\n    // set CSS classes for root element\n    if (this.config && this.config.theme) {\n      this.element.classList.add(cssClass(this.config.theme));\n    }\n    if (this.isOpen) {\n      this.element.classList.add(cssClass('open'));\n    }\n\n    // append toggler and children elements to root element\n    this.element.appendChild(togglerLink);\n    this.element.appendChild(children);\n\n    // if formatter is set to be open call appendChildren\n    if (this.isObject && this.isOpen) {\n      this.appendChildren();\n    }\n\n    // add event listener for toggling\n    if (this.isObject) {\n      togglerLink.addEventListener('click', this.toggleOpen.bind(this));\n    }\n\n    return this.element as HTMLDivElement;\n  }\n\n  /**\n   * Appends all the children to children element\n   * Animated option is used when user triggers this via a click\n  */\n  appendChildren(animated: boolean = false) {\n    const children = this.element.querySelector(`div.${cssClass('children')}`);\n\n    if (!children || this.isEmpty) { return; }\n\n    if (animated) {\n      let index = 0;\n      const addAChild = ()=> {\n        const key = this.keys[index];\n        const formatter = new JSONFormatter(this.json[key], this.open - 1, this.config, key);\n        children.appendChild(formatter.render());\n\n        index += 1;\n\n        if (index < this.keys.length) {\n          if (index > MAX_ANIMATED_TOGGLE_ITEMS) {\n            addAChild();\n          } else {\n            requestAnimationFrame(addAChild);\n          }\n        }\n      };\n\n      requestAnimationFrame(addAChild);\n\n    } else {\n      this.keys.forEach(key => {\n        const formatter = new JSONFormatter(this.json[key], this.open - 1, this.config, key);\n        children.appendChild(formatter.render());\n      });\n    }\n  }\n\n  /**\n   * Removes all the children from children element\n   * Animated option is used when user triggers this via a click\n  */\n  removeChildren(animated: boolean = false) {\n    const childrenElement = this.element.querySelector(`div.${cssClass('children')}`) as HTMLDivElement;\n\n    if (animated) {\n      let childrenRemoved = 0;\n      const removeAChild = ()=> {\n        if (childrenElement && childrenElement.children.length) {\n          childrenElement.removeChild(childrenElement.children[0]);\n          childrenRemoved += 1;\n          if (childrenRemoved > MAX_ANIMATED_TOGGLE_ITEMS) {\n            removeAChild();\n          } else {\n            requestAnimationFrame(removeAChild);\n          }\n        }\n      };\n      requestAnimationFrame(removeAChild);\n    } else {\n      if (childrenElement) {\n        childrenElement.innerHTML = '';\n      }\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.ts","exports = module.exports = require(\"./../node_modules/css-loader/lib/css-base.js\")();\n// imports\n\n\n// module\nexports.push([module.id, \".json-formatter-row {\\n  font-family: monospace;\\n}\\n.json-formatter-row,\\n.json-formatter-row a,\\n.json-formatter-row a:hover {\\n  color: black;\\n  text-decoration: none;\\n}\\n.json-formatter-row .json-formatter-row {\\n  margin-left: 1rem;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty {\\n  opacity: 0.5;\\n  margin-left: 1rem;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty:after {\\n  display: none;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-object:after {\\n  content: \\\"No properties\\\";\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-array:after {\\n  content: \\\"[]\\\";\\n}\\n.json-formatter-row .json-formatter-string {\\n  color: green;\\n  white-space: pre;\\n  word-wrap: break-word;\\n}\\n.json-formatter-row .json-formatter-number {\\n  color: blue;\\n}\\n.json-formatter-row .json-formatter-boolean {\\n  color: red;\\n}\\n.json-formatter-row .json-formatter-null {\\n  color: #855A00;\\n}\\n.json-formatter-row .json-formatter-undefined {\\n  color: #ca0b69;\\n}\\n.json-formatter-row .json-formatter-function {\\n  color: #FF20ED;\\n}\\n.json-formatter-row .json-formatter-date {\\n  background-color: rgba(0, 0, 0, 0.05);\\n}\\n.json-formatter-row .json-formatter-url {\\n  text-decoration: underline;\\n  color: blue;\\n  cursor: pointer;\\n}\\n.json-formatter-row .json-formatter-bracket {\\n  color: blue;\\n}\\n.json-formatter-row .json-formatter-key {\\n  color: #00008B;\\n  cursor: pointer;\\n  padding-right: 0.2rem;\\n}\\n.json-formatter-row .json-formatter-constructor-name {\\n  cursor: pointer;\\n}\\n.json-formatter-row .json-formatter-toggler {\\n  line-height: 1.2rem;\\n  font-size: 0.7rem;\\n  vertical-align: middle;\\n  opacity: 0.6;\\n  cursor: pointer;\\n  padding-right: 0.2rem;\\n}\\n.json-formatter-row .json-formatter-toggler:after {\\n  display: inline-block;\\n  transition: transform 100ms ease-in;\\n  content: \\\"\\\\25BA\\\";\\n}\\n.json-formatter-row > a > .json-formatter-preview-text {\\n  opacity: 0;\\n  transition: opacity 0.15s ease-in;\\n  font-style: italic;\\n}\\n.json-formatter-row:hover > a > .json-formatter-preview-text {\\n  opacity: 0.6;\\n}\\n.json-formatter-row.json-formatter-open > .json-formatter-toggler-link .json-formatter-toggler:after {\\n  transform: rotate(90deg);\\n}\\n.json-formatter-row.json-formatter-open > .json-formatter-children:after {\\n  display: inline-block;\\n}\\n.json-formatter-row.json-formatter-open > a > .json-formatter-preview-text {\\n  display: none;\\n}\\n.json-formatter-row.json-formatter-open.json-formatter-empty:after {\\n  display: block;\\n}\\n.json-formatter-dark.json-formatter-row {\\n  font-family: monospace;\\n}\\n.json-formatter-dark.json-formatter-row,\\n.json-formatter-dark.json-formatter-row a,\\n.json-formatter-dark.json-formatter-row a:hover {\\n  color: white;\\n  text-decoration: none;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-row {\\n  margin-left: 1rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty {\\n  opacity: 0.5;\\n  margin-left: 1rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty:after {\\n  display: none;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-object:after {\\n  content: \\\"No properties\\\";\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-array:after {\\n  content: \\\"[]\\\";\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-string {\\n  color: #31F031;\\n  white-space: pre;\\n  word-wrap: break-word;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-number {\\n  color: #66C2FF;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-boolean {\\n  color: #EC4242;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-null {\\n  color: #EEC97D;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-undefined {\\n  color: #ef8fbe;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-function {\\n  color: #FD48CB;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-date {\\n  background-color: rgba(255, 255, 255, 0.05);\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-url {\\n  text-decoration: underline;\\n  color: #027BFF;\\n  cursor: pointer;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-bracket {\\n  color: #9494FF;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-key {\\n  color: #23A0DB;\\n  cursor: pointer;\\n  padding-right: 0.2rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-constructor-name {\\n  cursor: pointer;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler {\\n  line-height: 1.2rem;\\n  font-size: 0.7rem;\\n  vertical-align: middle;\\n  opacity: 0.6;\\n  cursor: pointer;\\n  padding-right: 0.2rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler:after {\\n  display: inline-block;\\n  transition: transform 100ms ease-in;\\n  content: \\\"\\\\25BA\\\";\\n}\\n.json-formatter-dark.json-formatter-row > a > .json-formatter-preview-text {\\n  opacity: 0;\\n  transition: opacity 0.15s ease-in;\\n  font-style: italic;\\n}\\n.json-formatter-dark.json-formatter-row:hover > a > .json-formatter-preview-text {\\n  opacity: 0.6;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > .json-formatter-toggler-link .json-formatter-toggler:after {\\n  transform: rotate(90deg);\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > .json-formatter-children:after {\\n  display: inline-block;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > a > .json-formatter-preview-text {\\n  display: none;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open.json-formatter-empty:after {\\n  display: block;\\n}\\n\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader!./~/less-loader!./src/style.less\n// module id = 1\n// module chunks = 0","/*\r\n\tMIT License http://www.opensource.org/licenses/mit-license.php\r\n\tAuthor Tobias Koppers @sokra\r\n*/\r\n// css base code, injected by the css-loader\r\nmodule.exports = function() {\r\n\tvar list = [];\r\n\r\n\t// return the list of modules as css string\r\n\tlist.toString = function toString() {\r\n\t\tvar result = [];\r\n\t\tfor(var i = 0; i < this.length; i++) {\r\n\t\t\tvar item = this[i];\r\n\t\t\tif(item[2]) {\r\n\t\t\t\tresult.push(\"@media \" + item[2] + \"{\" + item[1] + \"}\");\r\n\t\t\t} else {\r\n\t\t\t\tresult.push(item[1]);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result.join(\"\");\r\n\t};\r\n\r\n\t// import a list of modules into the list\r\n\tlist.i = function(modules, mediaQuery) {\r\n\t\tif(typeof modules === \"string\")\r\n\t\t\tmodules = [[null, modules, \"\"]];\r\n\t\tvar alreadyImportedModules = {};\r\n\t\tfor(var i = 0; i < this.length; i++) {\r\n\t\t\tvar id = this[i][0];\r\n\t\t\tif(typeof id === \"number\")\r\n\t\t\t\talreadyImportedModules[id] = true;\r\n\t\t}\r\n\t\tfor(i = 0; i < modules.length; i++) {\r\n\t\t\tvar item = modules[i];\r\n\t\t\t// skip already imported module\r\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\r\n\t\t\t//  when a module is imported multiple times with different media queries.\r\n\t\t\t//  I hope this will never occur (Hey this way we have smaller bundles)\r\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\r\n\t\t\t\tif(mediaQuery && !item[2]) {\r\n\t\t\t\t\titem[2] = mediaQuery;\r\n\t\t\t\t} else if(mediaQuery) {\r\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\r\n\t\t\t\t}\r\n\t\t\t\tlist.push(item);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\treturn list;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/css-loader/lib/css-base.js\n// module id = 2\n// module chunks = 0","/*\r\n\tMIT License http://www.opensource.org/licenses/mit-license.php\r\n\tAuthor Tobias Koppers @sokra\r\n*/\r\nvar stylesInDom = {},\r\n\tmemoize = function(fn) {\r\n\t\tvar memo;\r\n\t\treturn function () {\r\n\t\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\r\n\t\t\treturn memo;\r\n\t\t};\r\n\t},\r\n\tisOldIE = memoize(function() {\r\n\t\treturn /msie [6-9]\\b/.test(window.navigator.userAgent.toLowerCase());\r\n\t}),\r\n\tgetHeadElement = memoize(function () {\r\n\t\treturn document.head || document.getElementsByTagName(\"head\")[0];\r\n\t}),\r\n\tsingletonElement = null,\r\n\tsingletonCounter = 0,\r\n\tstyleElementsInsertedAtTop = [];\r\n\r\nmodule.exports = function(list, options) {\r\n\tif(typeof DEBUG !== \"undefined\" && DEBUG) {\r\n\t\tif(typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\r\n\t}\r\n\r\n\toptions = options || {};\r\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\r\n\t// tags it will allow on a page\r\n\tif (typeof options.singleton === \"undefined\") options.singleton = isOldIE();\r\n\r\n\t// By default, add <style> tags to the bottom of <head>.\r\n\tif (typeof options.insertAt === \"undefined\") options.insertAt = \"bottom\";\r\n\r\n\tvar styles = listToStyles(list);\r\n\taddStylesToDom(styles, options);\r\n\r\n\treturn function update(newList) {\r\n\t\tvar mayRemove = [];\r\n\t\tfor(var i = 0; i < styles.length; i++) {\r\n\t\t\tvar item = styles[i];\r\n\t\t\tvar domStyle = stylesInDom[item.id];\r\n\t\t\tdomStyle.refs--;\r\n\t\t\tmayRemove.push(domStyle);\r\n\t\t}\r\n\t\tif(newList) {\r\n\t\t\tvar newStyles = listToStyles(newList);\r\n\t\t\taddStylesToDom(newStyles, options);\r\n\t\t}\r\n\t\tfor(var i = 0; i < mayRemove.length; i++) {\r\n\t\t\tvar domStyle = mayRemove[i];\r\n\t\t\tif(domStyle.refs === 0) {\r\n\t\t\t\tfor(var j = 0; j < domStyle.parts.length; j++)\r\n\t\t\t\t\tdomStyle.parts[j]();\r\n\t\t\t\tdelete stylesInDom[domStyle.id];\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction addStylesToDom(styles, options) {\r\n\tfor(var i = 0; i < styles.length; i++) {\r\n\t\tvar item = styles[i];\r\n\t\tvar domStyle = stylesInDom[item.id];\r\n\t\tif(domStyle) {\r\n\t\t\tdomStyle.refs++;\r\n\t\t\tfor(var j = 0; j < domStyle.parts.length; j++) {\r\n\t\t\t\tdomStyle.parts[j](item.parts[j]);\r\n\t\t\t}\r\n\t\t\tfor(; j < item.parts.length; j++) {\r\n\t\t\t\tdomStyle.parts.push(addStyle(item.parts[j], options));\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvar parts = [];\r\n\t\t\tfor(var j = 0; j < item.parts.length; j++) {\r\n\t\t\t\tparts.push(addStyle(item.parts[j], options));\r\n\t\t\t}\r\n\t\t\tstylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction listToStyles(list) {\r\n\tvar styles = [];\r\n\tvar newStyles = {};\r\n\tfor(var i = 0; i < list.length; i++) {\r\n\t\tvar item = list[i];\r\n\t\tvar id = item[0];\r\n\t\tvar css = item[1];\r\n\t\tvar media = item[2];\r\n\t\tvar sourceMap = item[3];\r\n\t\tvar part = {css: css, media: media, sourceMap: sourceMap};\r\n\t\tif(!newStyles[id])\r\n\t\t\tstyles.push(newStyles[id] = {id: id, parts: [part]});\r\n\t\telse\r\n\t\t\tnewStyles[id].parts.push(part);\r\n\t}\r\n\treturn styles;\r\n}\r\n\r\nfunction insertStyleElement(options, styleElement) {\r\n\tvar head = getHeadElement();\r\n\tvar lastStyleElementInsertedAtTop = styleElementsInsertedAtTop[styleElementsInsertedAtTop.length - 1];\r\n\tif (options.insertAt === \"top\") {\r\n\t\tif(!lastStyleElementInsertedAtTop) {\r\n\t\t\thead.insertBefore(styleElement, head.firstChild);\r\n\t\t} else if(lastStyleElementInsertedAtTop.nextSibling) {\r\n\t\t\thead.insertBefore(styleElement, lastStyleElementInsertedAtTop.nextSibling);\r\n\t\t} else {\r\n\t\t\thead.appendChild(styleElement);\r\n\t\t}\r\n\t\tstyleElementsInsertedAtTop.push(styleElement);\r\n\t} else if (options.insertAt === \"bottom\") {\r\n\t\thead.appendChild(styleElement);\r\n\t} else {\r\n\t\tthrow new Error(\"Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'.\");\r\n\t}\r\n}\r\n\r\nfunction removeStyleElement(styleElement) {\r\n\tstyleElement.parentNode.removeChild(styleElement);\r\n\tvar idx = styleElementsInsertedAtTop.indexOf(styleElement);\r\n\tif(idx >= 0) {\r\n\t\tstyleElementsInsertedAtTop.splice(idx, 1);\r\n\t}\r\n}\r\n\r\nfunction createStyleElement(options) {\r\n\tvar styleElement = document.createElement(\"style\");\r\n\tstyleElement.type = \"text/css\";\r\n\tinsertStyleElement(options, styleElement);\r\n\treturn styleElement;\r\n}\r\n\r\nfunction createLinkElement(options) {\r\n\tvar linkElement = document.createElement(\"link\");\r\n\tlinkElement.rel = \"stylesheet\";\r\n\tinsertStyleElement(options, linkElement);\r\n\treturn linkElement;\r\n}\r\n\r\nfunction addStyle(obj, options) {\r\n\tvar styleElement, update, remove;\r\n\r\n\tif (options.singleton) {\r\n\t\tvar styleIndex = singletonCounter++;\r\n\t\tstyleElement = singletonElement || (singletonElement = createStyleElement(options));\r\n\t\tupdate = applyToSingletonTag.bind(null, styleElement, styleIndex, false);\r\n\t\tremove = applyToSingletonTag.bind(null, styleElement, styleIndex, true);\r\n\t} else if(obj.sourceMap &&\r\n\t\ttypeof URL === \"function\" &&\r\n\t\ttypeof URL.createObjectURL === \"function\" &&\r\n\t\ttypeof URL.revokeObjectURL === \"function\" &&\r\n\t\ttypeof Blob === \"function\" &&\r\n\t\ttypeof btoa === \"function\") {\r\n\t\tstyleElement = createLinkElement(options);\r\n\t\tupdate = updateLink.bind(null, styleElement);\r\n\t\tremove = function() {\r\n\t\t\tremoveStyleElement(styleElement);\r\n\t\t\tif(styleElement.href)\r\n\t\t\t\tURL.revokeObjectURL(styleElement.href);\r\n\t\t};\r\n\t} else {\r\n\t\tstyleElement = createStyleElement(options);\r\n\t\tupdate = applyToTag.bind(null, styleElement);\r\n\t\tremove = function() {\r\n\t\t\tremoveStyleElement(styleElement);\r\n\t\t};\r\n\t}\r\n\r\n\tupdate(obj);\r\n\r\n\treturn function updateStyle(newObj) {\r\n\t\tif(newObj) {\r\n\t\t\tif(newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap)\r\n\t\t\t\treturn;\r\n\t\t\tupdate(obj = newObj);\r\n\t\t} else {\r\n\t\t\tremove();\r\n\t\t}\r\n\t};\r\n}\r\n\r\nvar replaceText = (function () {\r\n\tvar textStore = [];\r\n\r\n\treturn function (index, replacement) {\r\n\t\ttextStore[index] = replacement;\r\n\t\treturn textStore.filter(Boolean).join('\\n');\r\n\t};\r\n})();\r\n\r\nfunction applyToSingletonTag(styleElement, index, remove, obj) {\r\n\tvar css = remove ? \"\" : obj.css;\r\n\r\n\tif (styleElement.styleSheet) {\r\n\t\tstyleElement.styleSheet.cssText = replaceText(index, css);\r\n\t} else {\r\n\t\tvar cssNode = document.createTextNode(css);\r\n\t\tvar childNodes = styleElement.childNodes;\r\n\t\tif (childNodes[index]) styleElement.removeChild(childNodes[index]);\r\n\t\tif (childNodes.length) {\r\n\t\t\tstyleElement.insertBefore(cssNode, childNodes[index]);\r\n\t\t} else {\r\n\t\t\tstyleElement.appendChild(cssNode);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction applyToTag(styleElement, obj) {\r\n\tvar css = obj.css;\r\n\tvar media = obj.media;\r\n\r\n\tif(media) {\r\n\t\tstyleElement.setAttribute(\"media\", media)\r\n\t}\r\n\r\n\tif(styleElement.styleSheet) {\r\n\t\tstyleElement.styleSheet.cssText = css;\r\n\t} else {\r\n\t\twhile(styleElement.firstChild) {\r\n\t\t\tstyleElement.removeChild(styleElement.firstChild);\r\n\t\t}\r\n\t\tstyleElement.appendChild(document.createTextNode(css));\r\n\t}\r\n}\r\n\r\nfunction updateLink(linkElement, obj) {\r\n\tvar css = obj.css;\r\n\tvar sourceMap = obj.sourceMap;\r\n\r\n\tif(sourceMap) {\r\n\t\t// http://stackoverflow.com/a/26603875\r\n\t\tcss += \"\\n/*# sourceMappingURL=data:application/json;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + \" */\";\r\n\t}\r\n\r\n\tvar blob = new Blob([css], { type: \"text/css\" });\r\n\r\n\tvar oldSrc = linkElement.href;\r\n\r\n\tlinkElement.href = URL.createObjectURL(blob);\r\n\r\n\tif(oldSrc)\r\n\t\tURL.revokeObjectURL(oldSrc);\r\n}\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/style-loader/addStyles.js\n// module id = 3\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!./../node_modules/css-loader/index.js!./../node_modules/less-loader/index.js!./style.less\");\nif(typeof content === 'string') content = [[module.id, content, '']];\n// add the styles to the DOM\nvar update = require(\"!./../node_modules/style-loader/addStyles.js\")(content, {});\nif(content.locals) module.exports = content.locals;\n// Hot Module Replacement\nif(module.hot) {\n\t// When the styles change, update the <style> tags\n\tif(!content.locals) {\n\t\tmodule.hot.accept(\"!!./../node_modules/css-loader/index.js!./../node_modules/less-loader/index.js!./style.less\", function() {\n\t\t\tvar newContent = require(\"!!./../node_modules/css-loader/index.js!./../node_modules/less-loader/index.js!./style.less\");\n\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\tupdate(newContent);\n\t\t});\n\t}\n\t// When the module is disposed, remove the <style> tags\n\tmodule.hot.dispose(function() { update(); });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/style.less\n// module id = 4\n// module chunks = 0","/*\n * Escapes `\"` charachters from string\n*/\nfunction escapeString(str: string): string {\n  return str.replace('\"', '\\\"');\n}\n\n/*\n * Determines if a value is an object\n*/\nexport function isObject(value: any): boolean {\n  var type = typeof value;\n  return !!value && (type == 'object');\n}\n\n/*\n * Gets constructor name of an object.\n * From http://stackoverflow.com/a/332429\n *\n*/\nexport function getObjectName(object: Object):string {\n  if (object === undefined) {\n    return '';\n  }\n  if (object === null) {\n    return 'Object';\n  }\n  if (typeof object === 'object' && !object.constructor) {\n      return 'Object';\n  }\n\n  const funcNameRegex = /function ([^(]*)/;\n  const results = (funcNameRegex).exec((object).constructor.toString());\n  if (results && results.length > 1) {\n    return results[1];\n  } else {\n    return '';\n  }\n}\n\n/*\n * Gets type of an object. Returns \"null\" for null objects\n*/\nexport function getType(object: Object): string {\n  if (object === null) { return 'null'; }\n  return typeof object;\n}\n\n/*\n * Generates inline preview for a JavaScript object based on a value\n*/\nexport function getValuePreview (object: Object, value: string): string {\n  var type = getType(object);\n\n  if (type === 'null' || type === 'undefined') { return type; }\n\n  if (type === 'string') {\n    value = '\"' + escapeString(value) + '\"';\n  }\n  if (type === 'function'){\n\n    // Remove content of the function\n    return object.toString()\n        .replace(/[\\r\\n]/g, '')\n        .replace(/\\{.*\\}/, '') + '{…}';\n  }\n  return value;\n}\n\n/*\n * Generates inline preview for a JavaScript object\n*/\nexport function getPreview(object: string): string {\n  let value = '';\n  if (isObject(object)) {\n    value = getObjectName(object);\n    if (Array.isArray(object))\n      value += '[' + object.length + ']';\n  } else {\n    value = getValuePreview(object, object);\n  }\n  return value;\n}\n\n/*\n * Generates a prefixed CSS class name\n*/\nexport function cssClass(className:string): string {\n  return `json-formatter-${className}`;\n}\n\n/*\n  * Creates a new DOM element wiht given type and class\n  * TODO: move me to helpers\n*/\nexport function createElement(type: string, className?: string, content?: Element|string): Element {\n  const el = document.createElement(type);\n  if (className) {\n    el.classList.add(cssClass(className));\n  }\n  if (content !== undefined) {\n    if (content instanceof Node) {\n      el.appendChild(content);\n    } else {\n      el.appendChild(document.createTextNode(String(content)));\n    }\n  }\n  return el;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/helpers.ts"]}