{"version":3,"file":"valueMappings.cjs","sources":["../../../src/utils/valueMappings.ts"],"sourcesContent":["import { getActiveThreshold } from '../field/thresholds';\nimport { stringToJsRegex } from '../text/string';\nimport { ThresholdsConfig } from '../types/thresholds';\nimport {\n  MappingType,\n  SpecialValueMatch,\n  SpecialValueOptions,\n  ValueMap,\n  ValueMapping,\n  ValueMappingResult,\n} from '../types/valueMapping';\n\nexport function getValueMappingResult(valueMappings: ValueMapping[], value: any): ValueMappingResult | null {\n  for (const vm of valueMappings) {\n    switch (vm.type) {\n      case MappingType.ValueToText:\n        if (value == null) {\n          continue;\n        }\n\n        const result = vm.options[value];\n        if (result) {\n          return result;\n        }\n\n        break;\n\n      case MappingType.RangeToText:\n        if (value == null) {\n          continue;\n        }\n\n        const valueAsNumber = parseFloat(value);\n        if (isNaN(valueAsNumber)) {\n          continue;\n        }\n\n        const from = vm.options.from ?? -Infinity;\n\n        const isNumFrom = !isNaN(from);\n        if (isNumFrom && valueAsNumber < from) {\n          continue;\n        }\n\n        const to = vm.options.to ?? Infinity;\n\n        const isNumTo = !isNaN(to);\n        if (isNumTo && valueAsNumber > to) {\n          continue;\n        }\n\n        return vm.options.result;\n\n      case MappingType.RegexToText:\n        if (value == null) {\n          continue;\n        }\n\n        if (typeof value !== 'string') {\n          continue;\n        }\n\n        const regex = stringToJsRegex(vm.options.pattern);\n        if (value.match(regex)) {\n          const res = { ...vm.options.result };\n\n          if (res.text != null) {\n            res.text = value.replace(regex, vm.options.result.text || '');\n          }\n\n          return res;\n        }\n\n      case MappingType.SpecialValue:\n        switch ((vm.options as SpecialValueOptions).match) {\n          case SpecialValueMatch.Null: {\n            if (value == null) {\n              return vm.options.result;\n            }\n            break;\n          }\n          case SpecialValueMatch.NaN: {\n            if (typeof value === 'number' && isNaN(value)) {\n              return vm.options.result;\n            }\n            break;\n          }\n          case SpecialValueMatch.NullAndNaN: {\n            if ((typeof value === 'number' && isNaN(value)) || value == null) {\n              return vm.options.result;\n            }\n            break;\n          }\n          case SpecialValueMatch.True: {\n            if (value === true || value === 'true') {\n              return vm.options.result;\n            }\n            break;\n          }\n          case SpecialValueMatch.False: {\n            if (value === false || value === 'false') {\n              return vm.options.result;\n            }\n            break;\n          }\n          case SpecialValueMatch.Empty: {\n            if (value === '') {\n              return vm.options.result;\n            }\n            break;\n          }\n        }\n    }\n  }\n\n  return null;\n}\n\n// Ref https://stackoverflow.com/a/58550111\nexport function isNumeric(num: unknown) {\n  return (typeof num === 'number' || (typeof num === 'string' && num.trim() !== '')) && !isNaN(num as number);\n}\n\n/**\n * @deprecated use MappingType instead\n * @internal\n */\nexport enum LegacyMappingType {\n  ValueToText = 1,\n  RangeToText = 2,\n}\n\n/**\n * @alpha\n * Converts the old Angular value mappings to new react style\n */\nexport function convertOldAngularValueMappings(panel: any, migratedThresholds?: ThresholdsConfig): ValueMapping[] {\n  const mappings: ValueMapping[] = [];\n\n  // Guess the right type based on options\n  let mappingType = panel.mappingType;\n  if (!panel.mappingType) {\n    if (panel.valueMaps && panel.valueMaps.length) {\n      mappingType = 1;\n    } else if (panel.rangeMaps && panel.rangeMaps.length) {\n      mappingType = 2;\n    }\n  }\n  if (mappingType === 1) {\n    for (let i = 0; i < panel.valueMaps.length; i++) {\n      const map = panel.valueMaps[i];\n      mappings.push(\n        upgradeOldAngularValueMapping(\n          {\n            ...map,\n            id: i, // used for order\n            type: MappingType.ValueToText,\n          },\n          panel.fieldConfig?.defaults?.thresholds || migratedThresholds\n        )\n      );\n    }\n  } else if (mappingType === 2) {\n    for (let i = 0; i < panel.rangeMaps.length; i++) {\n      const map = panel.rangeMaps[i];\n      mappings.push(\n        upgradeOldAngularValueMapping(\n          {\n            ...map,\n            id: i, // used for order\n            type: MappingType.RangeToText,\n          },\n          panel.fieldConfig?.defaults?.thresholds || migratedThresholds\n        )\n      );\n    }\n  }\n\n  return mappings;\n}\n\nfunction upgradeOldAngularValueMapping(old: any, thresholds?: ThresholdsConfig): ValueMapping {\n  const valueMaps: ValueMap = { type: MappingType.ValueToText, options: {} };\n  const newMappings: ValueMapping[] = [];\n\n  // Use the color we would have picked from thesholds\n  let color: string | undefined = undefined;\n  const numeric = parseFloat(old.text);\n  if (thresholds && !isNaN(numeric)) {\n    const level = getActiveThreshold(numeric, thresholds.steps);\n    if (level && level.color) {\n      color = level.color;\n    }\n  }\n\n  switch (old.type) {\n    case LegacyMappingType.ValueToText:\n    case MappingType.ValueToText:\n      if (old.value != null) {\n        if (old.value === 'null') {\n          newMappings.push({\n            type: MappingType.SpecialValue,\n            options: {\n              match: SpecialValueMatch.Null,\n              result: { text: old.text, color },\n            },\n          });\n        } else {\n          valueMaps.options[String(old.value)] = {\n            text: old.text,\n            color,\n          };\n        }\n      }\n      break;\n    case LegacyMappingType.RangeToText:\n    case MappingType.RangeToText:\n      if (old.from === 'null' || old.to === 'null') {\n        newMappings.push({\n          type: MappingType.SpecialValue,\n          options: {\n            match: SpecialValueMatch.Null,\n            result: { text: old.text, color },\n          },\n        });\n      } else {\n        newMappings.push({\n          type: MappingType.RangeToText,\n          options: {\n            from: +old.from,\n            to: +old.to,\n            result: { text: old.text, color },\n          },\n        });\n      }\n      break;\n  }\n\n  if (Object.keys(valueMaps.options).length > 0) {\n    newMappings.unshift(valueMaps);\n  }\n\n  return newMappings[0];\n}\n"],"names":["MappingType","stringToJsRegex","SpecialValueMatch","LegacyMappingType","thresholds","getActiveThreshold"],"mappings":";;;;;;;;;AAYO,SAAS,qBAAA,CAAsB,eAA+B,KAAA,EAAuC;AAZ5G,EAAA,IAAA,EAAA,EAAA,EAAA;AAaE,EAAA,KAAA,MAAW,MAAM,aAAA,EAAe;AAC9B,IAAA,QAAQ,GAAG,IAAA;AAAM,MACf,KAAKA,wBAAA,CAAY,WAAA;AACf,QAAA,IAAI,SAAS,IAAA,EAAM;AACjB,UAAA;AAAA,QACF;AAEA,QAAA,MAAM,MAAA,GAAS,EAAA,CAAG,OAAA,CAAQ,KAAK,CAAA;AAC/B,QAAA,IAAI,MAAA,EAAQ;AACV,UAAA,OAAO,MAAA;AAAA,QACT;AAEA,QAAA;AAAA,MAEF,KAAKA,wBAAA,CAAY,WAAA;AACf,QAAA,IAAI,SAAS,IAAA,EAAM;AACjB,UAAA;AAAA,QACF;AAEA,QAAA,MAAM,aAAA,GAAgB,WAAW,KAAK,CAAA;AACtC,QAAA,IAAI,KAAA,CAAM,aAAa,CAAA,EAAG;AACxB,UAAA;AAAA,QACF;AAEA,QAAA,MAAM,IAAA,GAAA,CAAO,EAAA,GAAA,EAAA,CAAG,OAAA,CAAQ,IAAA,KAAX,IAAA,GAAA,EAAA,GAAmB,CAAA,QAAA;AAEhC,QAAA,MAAM,SAAA,GAAY,CAAC,KAAA,CAAM,IAAI,CAAA;AAC7B,QAAA,IAAI,SAAA,IAAa,gBAAgB,IAAA,EAAM;AACrC,UAAA;AAAA,QACF;AAEA,QAAA,MAAM,EAAA,GAAA,CAAK,EAAA,GAAA,EAAA,CAAG,OAAA,CAAQ,EAAA,KAAX,IAAA,GAAA,EAAA,GAAiB,QAAA;AAE5B,QAAA,MAAM,OAAA,GAAU,CAAC,KAAA,CAAM,EAAE,CAAA;AACzB,QAAA,IAAI,OAAA,IAAW,gBAAgB,EAAA,EAAI;AACjC,UAAA;AAAA,QACF;AAEA,QAAA,OAAO,GAAG,OAAA,CAAQ,MAAA;AAAA,MAEpB,KAAKA,wBAAA,CAAY,WAAA;AACf,QAAA,IAAI,SAAS,IAAA,EAAM;AACjB,UAAA;AAAA,QACF;AAEA,QAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,UAAA;AAAA,QACF;AAEA,QAAA,MAAM,KAAA,GAAQC,sBAAA,CAAgB,EAAA,CAAG,OAAA,CAAQ,OAAO,CAAA;AAChD,QAAA,IAAI,KAAA,CAAM,KAAA,CAAM,KAAK,CAAA,EAAG;AACtB,UAAA,MAAM,GAAA,GAAM,EAAE,GAAG,EAAA,CAAG,QAAQ,MAAA,EAAO;AAEnC,UAAA,IAAI,GAAA,CAAI,QAAQ,IAAA,EAAM;AACpB,YAAA,GAAA,CAAI,IAAA,GAAO,MAAM,OAAA,CAAQ,KAAA,EAAO,GAAG,OAAA,CAAQ,MAAA,CAAO,QAAQ,EAAE,CAAA;AAAA,UAC9D;AAEA,UAAA,OAAO,GAAA;AAAA,QACT;AAAA,MAEF,KAAKD,wBAAA,CAAY,YAAA;AACf,QAAA,QAAS,EAAA,CAAG,QAAgC,KAAA;AAAO,UACjD,KAAKE,+BAAkB,IAAA,EAAM;AAC3B,YAAA,IAAI,SAAS,IAAA,EAAM;AACjB,cAAA,OAAO,GAAG,OAAA,CAAQ,MAAA;AAAA,YACpB;AACA,YAAA;AAAA,UACF;AAAA,UACA,KAAKA,+BAAkB,GAAA,EAAK;AAC1B,YAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,CAAM,KAAK,CAAA,EAAG;AAC7C,cAAA,OAAO,GAAG,OAAA,CAAQ,MAAA;AAAA,YACpB;AACA,YAAA;AAAA,UACF;AAAA,UACA,KAAKA,+BAAkB,UAAA,EAAY;AACjC,YAAA,IAAK,OAAO,KAAA,KAAU,QAAA,IAAY,MAAM,KAAK,CAAA,IAAM,SAAS,IAAA,EAAM;AAChE,cAAA,OAAO,GAAG,OAAA,CAAQ,MAAA;AAAA,YACpB;AACA,YAAA;AAAA,UACF;AAAA,UACA,KAAKA,+BAAkB,IAAA,EAAM;AAC3B,YAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,MAAA,EAAQ;AACtC,cAAA,OAAO,GAAG,OAAA,CAAQ,MAAA;AAAA,YACpB;AACA,YAAA;AAAA,UACF;AAAA,UACA,KAAKA,+BAAkB,KAAA,EAAO;AAC5B,YAAA,IAAI,KAAA,KAAU,KAAA,IAAS,KAAA,KAAU,OAAA,EAAS;AACxC,cAAA,OAAO,GAAG,OAAA,CAAQ,MAAA;AAAA,YACpB;AACA,YAAA;AAAA,UACF;AAAA,UACA,KAAKA,+BAAkB,KAAA,EAAO;AAC5B,YAAA,IAAI,UAAU,EAAA,EAAI;AAChB,cAAA,OAAO,GAAG,OAAA,CAAQ,MAAA;AAAA,YACpB;AACA,YAAA;AAAA,UACF;AAAA;AACF;AACJ,EACF;AAEA,EAAA,OAAO,IAAA;AACT;AAGO,SAAS,UAAU,GAAA,EAAc;AACtC,EAAA,OAAA,CAAQ,OAAO,GAAA,KAAQ,QAAA,IAAa,OAAO,GAAA,KAAQ,QAAA,IAAY,GAAA,CAAI,IAAA,EAAK,KAAM,EAAA,KAAQ,CAAC,KAAA,CAAM,GAAa,CAAA;AAC5G;AAMO,IAAK,iBAAA,qBAAAC,kBAAAA,KAAL;AACL,EAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,iBAAc,CAAA,CAAA,GAAd,aAAA;AACA,EAAAA,kBAAAA,CAAAA,kBAAAA,CAAA,iBAAc,CAAA,CAAA,GAAd,aAAA;AAFU,EAAA,OAAAA,kBAAAA;AAAA,CAAA,EAAA,iBAAA,IAAA,EAAA;AASL,SAAS,8BAAA,CAA+B,OAAY,kBAAA,EAAuD;AAxIlH,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAyIE,EAAA,MAAM,WAA2B,EAAC;AAGlC,EAAA,IAAI,cAAc,KAAA,CAAM,WAAA;AACxB,EAAA,IAAI,CAAC,MAAM,WAAA,EAAa;AACtB,IAAA,IAAI,KAAA,CAAM,SAAA,IAAa,KAAA,CAAM,SAAA,CAAU,MAAA,EAAQ;AAC7C,MAAA,WAAA,GAAc,CAAA;AAAA,IAChB,CAAA,MAAA,IAAW,KAAA,CAAM,SAAA,IAAa,KAAA,CAAM,UAAU,MAAA,EAAQ;AACpD,MAAA,WAAA,GAAc,CAAA;AAAA,IAChB;AAAA,EACF;AACA,EAAA,IAAI,gBAAgB,CAAA,EAAG;AACrB,IAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,SAAA,CAAU,QAAQ,CAAA,EAAA,EAAK;AAC/C,MAAA,MAAM,GAAA,GAAM,KAAA,CAAM,SAAA,CAAU,CAAC,CAAA;AAC7B,MAAA,QAAA,CAAS,IAAA;AAAA,QACP,6BAAA;AAAA,UACE;AAAA,YACE,GAAG,GAAA;AAAA,YACH,EAAA,EAAI,CAAA;AAAA;AAAA,YACJ,MAAMH,wBAAA,CAAY;AAAA,WACpB;AAAA,UAAA,CAAA,CACA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAA,CAAM,WAAA,KAAN,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAmB,QAAA,KAAnB,mBAA6B,UAAA,KAAc;AAAA;AAC7C,OACF;AAAA,IACF;AAAA,EACF,CAAA,MAAA,IAAW,gBAAgB,CAAA,EAAG;AAC5B,IAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,SAAA,CAAU,QAAQ,CAAA,EAAA,EAAK;AAC/C,MAAA,MAAM,GAAA,GAAM,KAAA,CAAM,SAAA,CAAU,CAAC,CAAA;AAC7B,MAAA,QAAA,CAAS,IAAA;AAAA,QACP,6BAAA;AAAA,UACE;AAAA,YACE,GAAG,GAAA;AAAA,YACH,EAAA,EAAI,CAAA;AAAA;AAAA,YACJ,MAAMA,wBAAA,CAAY;AAAA,WACpB;AAAA,UAAA,CAAA,CACA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAA,CAAM,WAAA,KAAN,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAmB,QAAA,KAAnB,mBAA6B,UAAA,KAAc;AAAA;AAC7C,OACF;AAAA,IACF;AAAA,EACF;AAEA,EAAA,OAAO,QAAA;AACT;AAEA,SAAS,6BAAA,CAA8B,KAAUI,YAAA,EAA6C;AAC5F,EAAA,MAAM,YAAsB,EAAE,IAAA,EAAMJ,yBAAY,WAAA,EAAa,OAAA,EAAS,EAAC,EAAE;AACzE,EAAA,MAAM,cAA8B,EAAC;AAGrC,EAAA,IAAI,KAAA,GAA4B,KAAA,CAAA;AAChC,EAAA,MAAM,OAAA,GAAU,UAAA,CAAW,GAAA,CAAI,IAAI,CAAA;AACnC,EAAA,IAAII,YAAA,IAAc,CAAC,KAAA,CAAM,OAAO,CAAA,EAAG;AACjC,IAAA,MAAM,KAAA,GAAQC,6BAAA,CAAmB,OAAA,EAASD,YAAA,CAAW,KAAK,CAAA;AAC1D,IAAA,IAAI,KAAA,IAAS,MAAM,KAAA,EAAO;AACxB,MAAA,KAAA,GAAQ,KAAA,CAAM,KAAA;AAAA,IAChB;AAAA,EACF;AAEA,EAAA,QAAQ,IAAI,IAAA;AAAM,IAChB,KAAK,CAAA;AAAA,IACL,KAAKJ,wBAAA,CAAY,WAAA;AACf,MAAA,IAAI,GAAA,CAAI,SAAS,IAAA,EAAM;AACrB,QAAA,IAAI,GAAA,CAAI,UAAU,MAAA,EAAQ;AACxB,UAAA,WAAA,CAAY,IAAA,CAAK;AAAA,YACf,MAAMA,wBAAA,CAAY,YAAA;AAAA,YAClB,OAAA,EAAS;AAAA,cACP,OAAOE,8BAAA,CAAkB,IAAA;AAAA,cACzB,MAAA,EAAQ,EAAE,IAAA,EAAM,GAAA,CAAI,MAAM,KAAA;AAAM;AAClC,WACD,CAAA;AAAA,QACH,CAAA,MAAO;AACL,UAAA,SAAA,CAAU,OAAA,CAAQ,MAAA,CAAO,GAAA,CAAI,KAAK,CAAC,CAAA,GAAI;AAAA,YACrC,MAAM,GAAA,CAAI,IAAA;AAAA,YACV;AAAA,WACF;AAAA,QACF;AAAA,MACF;AACA,MAAA;AAAA,IACF,KAAK,CAAA;AAAA,IACL,KAAKF,wBAAA,CAAY,WAAA;AACf,MAAA,IAAI,GAAA,CAAI,IAAA,KAAS,MAAA,IAAU,GAAA,CAAI,OAAO,MAAA,EAAQ;AAC5C,QAAA,WAAA,CAAY,IAAA,CAAK;AAAA,UACf,MAAMA,wBAAA,CAAY,YAAA;AAAA,UAClB,OAAA,EAAS;AAAA,YACP,OAAOE,8BAAA,CAAkB,IAAA;AAAA,YACzB,MAAA,EAAQ,EAAE,IAAA,EAAM,GAAA,CAAI,MAAM,KAAA;AAAM;AAClC,SACD,CAAA;AAAA,MACH,CAAA,MAAO;AACL,QAAA,WAAA,CAAY,IAAA,CAAK;AAAA,UACf,MAAMF,wBAAA,CAAY,WAAA;AAAA,UAClB,OAAA,EAAS;AAAA,YACP,IAAA,EAAM,CAAC,GAAA,CAAI,IAAA;AAAA,YACX,EAAA,EAAI,CAAC,GAAA,CAAI,EAAA;AAAA,YACT,MAAA,EAAQ,EAAE,IAAA,EAAM,GAAA,CAAI,MAAM,KAAA;AAAM;AAClC,SACD,CAAA;AAAA,MACH;AACA,MAAA;AAAA;AAGJ,EAAA,IAAI,OAAO,IAAA,CAAK,SAAA,CAAU,OAAO,CAAA,CAAE,SAAS,CAAA,EAAG;AAC7C,IAAA,WAAA,CAAY,QAAQ,SAAS,CAAA;AAAA,EAC/B;AAEA,EAAA,OAAO,YAAY,CAAC,CAAA;AACtB;;;;;;;"}