@grafana/ui
Version:
Grafana Components Library
1 lines • 4.8 kB
Source Map (JSON)
{"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,GAAqB,EAAA;AAChD,EAAA,OAAO,IAAI,OAAQ,CAAA,KAAA,EAAO,MAAM,CAAE,CAAA,OAAA,CAAQ,MAAM,KAAK,CAAA;AACvD;AAKO,SAAS,SAASA,MAAyB,EAAA;AAChD,EAAA,MAAM,OAAO,OAAOA,MAAAA;AACpB,EAAO,OAAA,CAAC,CAACA,MAAAA,IAAS,IAAS,KAAA,QAAA;AAC7B;AAOO,SAAS,cAAc,MAAwB,EAAA;AACpD,EAAA,IAAI,WAAW,KAAW,CAAA,EAAA;AACxB,IAAO,OAAA,EAAA;AAAA;AAET,EAAA,IAAI,WAAW,IAAM,EAAA;AACnB,IAAO,OAAA,QAAA;AAAA;AAET,EAAA,IAAI,OAAO,MAAA,KAAW,QAAY,IAAA,CAAC,OAAO,WAAa,EAAA;AACrD,IAAO,OAAA,QAAA;AAAA;AAGT,EAAA,MAAM,aAAgB,GAAA,kBAAA;AACtB,EAAA,MAAM,UAAU,aAAc,CAAA,IAAA,CAAK,MAAO,CAAA,WAAA,CAAY,UAAU,CAAA;AAChE,EAAI,IAAA,OAAA,IAAW,OAAQ,CAAA,MAAA,GAAS,CAAG,EAAA;AACjC,IAAA,OAAO,QAAQ,CAAC,CAAA;AAAA,GACX,MAAA;AACL,IAAO,OAAA,EAAA;AAAA;AAEX;AAKO,SAAS,QAAQ,MAAwB,EAAA;AAC9C,EAAA,IAAI,WAAW,IAAM,EAAA;AACnB,IAAO,OAAA,MAAA;AAAA;AAET,EAAA,OAAO,OAAO,MAAA;AAChB;AAKgB,SAAA,eAAA,CAAgB,QAAgBA,MAAuB,EAAA;AACrE,EAAM,MAAA,IAAA,GAAO,QAAQ,MAAM,CAAA;AAE3B,EAAI,IAAA,IAAA,KAAS,MAAU,IAAA,IAAA,KAAS,WAAa,EAAA;AAC3C,IAAO,OAAA,IAAA;AAAA;AAGT,EAAA,IAAI,SAAS,QAAU,EAAA;AACrB,IAAAA,MAAQ,GAAA,GAAA,GAAM,YAAaA,CAAAA,MAAK,CAAI,GAAA,GAAA;AAAA;AAEtC,EAAA,IAAI,SAAS,UAAY,EAAA;AAEvB,IACE,OAAA,MAAA,CACG,QAAS,EAAA,CACT,OAAQ,CAAA,SAAA,EAAW,EAAE,CACrB,CAAA,OAAA,CAAQ,QAAU,EAAA,EAAE,CAAI,GAAA,UAAA;AAAA;AAG/B,EAAOA,OAAAA,MAAAA;AACT;AAqBO,SAAS,SAAS,SAA2B,EAAA;AAClD,EAAA,OAAO,kBAAkB,SAAS,CAAA,CAAA;AACpC;AAMgB,SAAA,aAAA,CACd,IACA,EAAA,SAAA,EACA,OACA,EAAA;AACA,EAAM,MAAA,EAAA,GAAK,QAAS,CAAA,aAAA,CAAc,IAAI,CAAA;AACtC,EAAA,IAAI,SAAW,EAAA;AACb,IAAA,EAAA,CAAG,SAAU,CAAA,GAAA,CAAI,QAAS,CAAA,SAAS,CAAC,CAAA;AAAA;AAEtC,EAAA,IAAI,YAAY,KAAW,CAAA,EAAA;AACzB,IAAA,IAAI,mBAAmB,IAAM,EAAA;AAC3B,MAAA,EAAA,CAAG,YAAY,OAAO,CAAA;AAAA,KACjB,MAAA;AACL,MAAA,EAAA,CAAG,YAAY,QAAS,CAAA,cAAA,CAAe,MAAO,CAAA,OAAO,CAAC,CAAC,CAAA;AAAA;AACzD;AAEF,EAAO,OAAA,EAAA;AACT;;;;"}