{"version":3,"file":"PluginSignatureBadge.mjs","sources":["../../../../src/components/PluginSignatureBadge/PluginSignatureBadge.tsx"],"sourcesContent":["import { HTMLAttributes } from 'react';\n\nimport { PluginSignatureStatus, PluginSignatureType } from '@grafana/data';\n\nimport { IconName } from '../../types/icon';\nimport { Badge, BadgeProps } from '../Badge/Badge';\n\nconst SIGNATURE_ICONS: Record<string, IconName> = {\n  [PluginSignatureType.grafana]: 'grafana',\n  [PluginSignatureType.commercial]: 'shield',\n  [PluginSignatureType.community]: 'shield',\n  DEFAULT: 'shield-exclamation',\n};\n\n/**\n * @public\n */\nexport interface PluginSignatureBadgeProps extends HTMLAttributes<HTMLDivElement> {\n  status?: PluginSignatureStatus;\n  signatureType?: PluginSignatureType;\n  signatureOrg?: string;\n}\n\n/**\n * @public\n */\nexport const PluginSignatureBadge = ({\n  status,\n  color,\n  signatureType,\n  signatureOrg,\n  ...otherProps\n}: PluginSignatureBadgeProps) => {\n  const display = getSignatureDisplayModel(status, signatureType, signatureOrg);\n  return (\n    <Badge text={display.text} color={display.color} icon={display.icon} tooltip={display.tooltip} {...otherProps} />\n  );\n};\n\nPluginSignatureBadge.displayName = 'PluginSignatureBadge';\n\nfunction getSignatureDisplayModel(\n  signature?: PluginSignatureStatus,\n  signatureType?: PluginSignatureType,\n  signatureOrg?: string\n): BadgeProps {\n  if (!signature) {\n    signature = PluginSignatureStatus.invalid;\n  }\n\n  const signatureIcon = SIGNATURE_ICONS[signatureType || ''] || SIGNATURE_ICONS.DEFAULT;\n\n  switch (signature) {\n    case PluginSignatureStatus.internal:\n      return { text: 'Core', color: 'blue', tooltip: 'Core plugin that is bundled with Grafana' };\n    case PluginSignatureStatus.valid:\n      return {\n        text: signatureType ? signatureType : 'Signed',\n        icon: signatureType ? signatureIcon : 'lock',\n        color: 'green',\n        tooltip: 'Signed and verified plugin',\n      };\n    case PluginSignatureStatus.invalid:\n      return {\n        text: 'Invalid signature',\n        icon: 'exclamation-triangle',\n        color: 'red',\n        tooltip: 'Invalid plugin signature',\n      };\n    case PluginSignatureStatus.modified:\n      return {\n        text: 'Modified signature',\n        icon: 'exclamation-triangle',\n        color: 'red',\n        tooltip: 'Valid signature but content has been modified',\n      };\n    case PluginSignatureStatus.missing:\n      return {\n        text: 'Missing signature',\n        icon: 'exclamation-triangle',\n        color: 'red',\n        tooltip: 'Missing plugin signature',\n      };\n    default:\n      return {\n        text: 'Unsigned',\n        icon: 'exclamation-triangle',\n        color: 'red',\n        tooltip: 'Unsigned external plugin',\n      };\n  }\n}\n"],"names":[],"mappings":";;;;AAOA,MAAM,eAA4C,GAAA;AAAA,EAChD,CAAC,mBAAoB,CAAA,OAAO,GAAG,SAAA;AAAA,EAC/B,CAAC,mBAAoB,CAAA,UAAU,GAAG,QAAA;AAAA,EAClC,CAAC,mBAAoB,CAAA,SAAS,GAAG,QAAA;AAAA,EACjC,OAAS,EAAA;AACX,CAAA;AAcO,MAAM,uBAAuB,CAAC;AAAA,EACnC,MAAA;AAAA,EACA,KAAA;AAAA,EACA,aAAA;AAAA,EACA,YAAA;AAAA,EACA,GAAG;AACL,CAAiC,KAAA;AAC/B,EAAA,MAAM,OAAU,GAAA,wBAAA,CAAyB,MAAQ,EAAA,aAA2B,CAAA;AAC5E,EAAA,uBACG,GAAA,CAAA,KAAA,EAAA,EAAM,IAAM,EAAA,OAAA,CAAQ,MAAM,KAAO,EAAA,OAAA,CAAQ,KAAO,EAAA,IAAA,EAAM,QAAQ,IAAM,EAAA,OAAA,EAAS,OAAQ,CAAA,OAAA,EAAU,GAAG,UAAY,EAAA,CAAA;AAEnH;AAEA,oBAAA,CAAqB,WAAc,GAAA,sBAAA;AAEnC,SAAS,wBAAA,CACP,SACA,EAAA,aAAA,EACA,YACY,EAAA;AACZ,EAAA,IAAI,CAAC,SAAW,EAAA;AACd,IAAA,SAAA,GAAY,qBAAsB,CAAA,OAAA;AAAA;AAGpC,EAAA,MAAM,aAAgB,GAAA,eAAA,CAAgB,aAAiB,IAAA,EAAE,KAAK,eAAgB,CAAA,OAAA;AAE9E,EAAA,QAAQ,SAAW;AAAA,IACjB,KAAK,qBAAsB,CAAA,QAAA;AACzB,MAAA,OAAO,EAAE,IAAM,EAAA,MAAA,EAAQ,KAAO,EAAA,MAAA,EAAQ,SAAS,0CAA2C,EAAA;AAAA,IAC5F,KAAK,qBAAsB,CAAA,KAAA;AACzB,MAAO,OAAA;AAAA,QACL,IAAA,EAAM,gBAAgB,aAAgB,GAAA,QAAA;AAAA,QACtC,IAAA,EAAM,gBAAgB,aAAgB,GAAA,MAAA;AAAA,QACtC,KAAO,EAAA,OAAA;AAAA,QACP,OAAS,EAAA;AAAA,OACX;AAAA,IACF,KAAK,qBAAsB,CAAA,OAAA;AACzB,MAAO,OAAA;AAAA,QACL,IAAM,EAAA,mBAAA;AAAA,QACN,IAAM,EAAA,sBAAA;AAAA,QACN,KAAO,EAAA,KAAA;AAAA,QACP,OAAS,EAAA;AAAA,OACX;AAAA,IACF,KAAK,qBAAsB,CAAA,QAAA;AACzB,MAAO,OAAA;AAAA,QACL,IAAM,EAAA,oBAAA;AAAA,QACN,IAAM,EAAA,sBAAA;AAAA,QACN,KAAO,EAAA,KAAA;AAAA,QACP,OAAS,EAAA;AAAA,OACX;AAAA,IACF,KAAK,qBAAsB,CAAA,OAAA;AACzB,MAAO,OAAA;AAAA,QACL,IAAM,EAAA,mBAAA;AAAA,QACN,IAAM,EAAA,sBAAA;AAAA,QACN,KAAO,EAAA,KAAA;AAAA,QACP,OAAS,EAAA;AAAA,OACX;AAAA,IACF;AACE,MAAO,OAAA;AAAA,QACL,IAAM,EAAA,UAAA;AAAA,QACN,IAAM,EAAA,sBAAA;AAAA,QACN,KAAO,EAAA,KAAA;AAAA,QACP,OAAS,EAAA;AAAA,OACX;AAAA;AAEN;;;;"}