UNPKG

@grafana/ui

Version:
1 lines 5.23 kB
{"version":3,"file":"helpers.mjs","sources":["../../../../../src/components/JSONFormatter/json_explorer/helpers.ts"],"sourcesContent":["// Based on work https://github.com/mohsen1/json-formatter-js\n// License MIT, Copyright (c) 2015 Mohsen Azimi\n\n/*\n * Escapes `\"` characters from string\n */\nexport function formatString(str: string): string {\n return str.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"');\n}\n\n/*\n * Determines if a value is an object\n */\nexport function isObject(value: unknown): boolean {\n const 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) {\n return 'null';\n }\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 const type = getType(object);\n\n if (type === 'null' || type === 'undefined') {\n return type;\n }\n\n if (type === 'string') {\n value = '\"' + formatString(value) + '\"';\n }\n if (type === 'function') {\n // Remove content of the function\n return (\n object\n .toString()\n .replace(/[\\r\\n]/g, '')\n .replace(/\\{.*\\}/, '') + '{…}'\n );\n }\n return value;\n}\n\n/*\n * Generates inline preview for a JavaScript object\n */\nlet value = '';\nexport function getPreview(obj: object): string {\n if (isObject(obj)) {\n value = getObjectName(obj);\n if (Array.isArray(obj)) {\n value += '[' + obj.length + ']';\n }\n } else {\n value = getValuePreview(obj, obj.toString());\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 with given type and class\n * TODO: move me to helpers\n */\nexport function createElement<T extends keyof HTMLElementTagNameMap>(\n type: T,\n className?: string,\n content?: Element | string\n) {\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"],"names":["value"],"mappings":";AAMO,SAAS,aAAa,GAAA,EAAqB;AAChD,EAAA,OAAO,IAAI,OAAA,CAAQ,KAAA,EAAO,MAAM,CAAA,CAAE,OAAA,CAAQ,MAAM,KAAK,CAAA;AACvD;AAKO,SAAS,SAASA,MAAAA,EAAyB;AAChD,EAAA,MAAM,OAAO,OAAOA,MAAAA;AACpB,EAAA,OAAO,CAAC,CAACA,MAAAA,IAAS,IAAA,KAAS,QAAA;AAC7B;AAOO,SAAS,cAAc,MAAA,EAAwB;AACpD,EAAA,IAAI,WAAW,KAAA,CAAA,EAAW;AACxB,IAAA,OAAO,EAAA;AAAA,EACT;AACA,EAAA,IAAI,WAAW,IAAA,EAAM;AACnB,IAAA,OAAO,QAAA;AAAA,EACT;AACA,EAAA,IAAI,OAAO,MAAA,KAAW,QAAA,IAAY,CAAC,OAAO,WAAA,EAAa;AACrD,IAAA,OAAO,QAAA;AAAA,EACT;AAEA,EAAA,MAAM,aAAA,GAAgB,kBAAA;AACtB,EAAA,MAAM,UAAU,aAAA,CAAc,IAAA,CAAK,MAAA,CAAO,WAAA,CAAY,UAAU,CAAA;AAChE,EAAA,IAAI,OAAA,IAAW,OAAA,CAAQ,MAAA,GAAS,CAAA,EAAG;AACjC,IAAA,OAAO,QAAQ,CAAC,CAAA;AAAA,EAClB,CAAA,MAAO;AACL,IAAA,OAAO,EAAA;AAAA,EACT;AACF;AAKO,SAAS,QAAQ,MAAA,EAAwB;AAC9C,EAAA,IAAI,WAAW,IAAA,EAAM;AACnB,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,OAAO,OAAO,MAAA;AAChB;AAKO,SAAS,eAAA,CAAgB,QAAgBA,MAAAA,EAAuB;AACrE,EAAA,MAAM,IAAA,GAAO,QAAQ,MAAM,CAAA;AAE3B,EAAA,IAAI,IAAA,KAAS,MAAA,IAAU,IAAA,KAAS,WAAA,EAAa;AAC3C,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,IAAI,SAAS,QAAA,EAAU;AACrB,IAAAA,MAAAA,GAAQ,GAAA,GAAM,YAAA,CAAaA,MAAK,CAAA,GAAI,GAAA;AAAA,EACtC;AACA,EAAA,IAAI,SAAS,UAAA,EAAY;AAEvB,IAAA,OACE,MAAA,CACG,QAAA,EAAS,CACT,OAAA,CAAQ,SAAA,EAAW,EAAE,CAAA,CACrB,OAAA,CAAQ,QAAA,EAAU,EAAE,CAAA,GAAI,UAAA;AAAA,EAE/B;AACA,EAAA,OAAOA,MAAAA;AACT;AAKA,IAAI,KAAA,GAAQ,EAAA;AACL,SAAS,WAAW,GAAA,EAAqB;AAC9C,EAAA,IAAI,QAAA,CAAS,GAAG,CAAA,EAAG;AACjB,IAAA,KAAA,GAAQ,cAAc,GAAG,CAAA;AACzB,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA,EAAG;AACtB,MAAA,KAAA,IAAS,GAAA,GAAM,IAAI,MAAA,GAAS,GAAA;AAAA,IAC9B;AAAA,EACF,CAAA,MAAO;AACL,IAAA,KAAA,GAAQ,eAAA,CAAgB,GAAA,EAAK,GAAA,CAAI,QAAA,EAAU,CAAA;AAAA,EAC7C;AACA,EAAA,OAAO,KAAA;AACT;AAKO,SAAS,SAAS,SAAA,EAA2B;AAClD,EAAA,OAAO,kBAAkB,SAAS,CAAA,CAAA;AACpC;AAMO,SAAS,aAAA,CACd,IAAA,EACA,SAAA,EACA,OAAA,EACA;AACA,EAAA,MAAM,EAAA,GAAK,QAAA,CAAS,aAAA,CAAc,IAAI,CAAA;AACtC,EAAA,IAAI,SAAA,EAAW;AACb,IAAA,EAAA,CAAG,SAAA,CAAU,GAAA,CAAI,QAAA,CAAS,SAAS,CAAC,CAAA;AAAA,EACtC;AACA,EAAA,IAAI,YAAY,KAAA,CAAA,EAAW;AACzB,IAAA,IAAI,mBAAmB,IAAA,EAAM;AAC3B,MAAA,EAAA,CAAG,YAAY,OAAO,CAAA;AAAA,IACxB,CAAA,MAAO;AACL,MAAA,EAAA,CAAG,YAAY,QAAA,CAAS,cAAA,CAAe,MAAA,CAAO,OAAO,CAAC,CAAC,CAAA;AAAA,IACzD;AAAA,EACF;AACA,EAAA,OAAO,EAAA;AACT;;;;"}