{"version":3,"file":"renameByRegex.cjs","sources":["../../../../src/transformations/transformers/renameByRegex.ts"],"sourcesContent":["import { map } from 'rxjs/operators';\n\nimport { getFieldDisplayName } from '../../field/fieldState';\nimport { stringToJsRegex } from '../../text/string';\nimport { DataFrame } from '../../types/dataFrame';\nimport { DataTransformerInfo } from '../../types/transformations';\n\nimport { DataTransformerID } from './ids';\n\n/**\n * Options for renameByRegexTransformer\n *\n * @public\n */\nexport interface RenameByRegexTransformerOptions {\n  regex: string;\n  renamePattern: string;\n}\n\n/**\n * Replaces the displayName of a field by applying a regular expression\n * to match the name and a pattern for the replacement.\n *\n * @public\n */\nexport const renameByRegexTransformer: DataTransformerInfo<RenameByRegexTransformerOptions> = {\n  id: DataTransformerID.renameByRegex,\n  name: 'Rename fields by regex',\n  description: 'Rename fields based on regular expression by users.',\n  defaultOptions: {\n    regex: '(.*)',\n    renamePattern: '$1',\n  },\n\n  /**\n   * Return a modified copy of the series. If the transform is not or should not\n   * be applied, just return the input series\n   */\n  operator: (options) => (source) =>\n    source.pipe(\n      map((data) => {\n        if (!Array.isArray(data) || data.length === 0) {\n          return data;\n        }\n        return data.map(renameFieldsByRegex(options));\n      })\n    ),\n};\n\nconst renameFieldsByRegex = (options: RenameByRegexTransformerOptions) => (frame: DataFrame) => {\n  const regex = stringToJsRegex(options.regex);\n  const fields = frame.fields.map((field) => {\n    const displayName = getFieldDisplayName(field, frame);\n    if (!regex.test(displayName)) {\n      return field;\n    }\n    const newDisplayName = displayName.replace(regex, options.renamePattern);\n    return {\n      ...field,\n      config: { ...field.config, displayName: newDisplayName },\n      state: { ...field.state, displayName: newDisplayName },\n    };\n  });\n  return { ...frame, fields };\n};\n"],"names":["DataTransformerID","map","stringToJsRegex","getFieldDisplayName"],"mappings":";;;;;;;;;;AAyBO,MAAM,wBAAA,GAAiF;AAAA,EAC5F,IAAIA,qBAAA,CAAkB,aAAA;AAAA,EACtB,IAAA,EAAM,wBAAA;AAAA,EACN,WAAA,EAAa,qDAAA;AAAA,EACb,cAAA,EAAgB;AAAA,IACd,KAAA,EAAO,MAAA;AAAA,IACP,aAAA,EAAe;AAAA,GACjB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,QAAA,EAAU,CAAC,OAAA,KAAY,CAAC,WACtB,MAAA,CAAO,IAAA;AAAA,IACLC,aAAA,CAAI,CAAC,IAAA,KAAS;AACZ,MAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,IAAK,IAAA,CAAK,WAAW,CAAA,EAAG;AAC7C,QAAA,OAAO,IAAA;AAAA,MACT;AACA,MAAA,OAAO,IAAA,CAAK,GAAA,CAAI,mBAAA,CAAoB,OAAO,CAAC,CAAA;AAAA,IAC9C,CAAC;AAAA;AAEP;AAEA,MAAM,mBAAA,GAAsB,CAAC,OAAA,KAA6C,CAAC,KAAA,KAAqB;AAC9F,EAAA,MAAM,KAAA,GAAQC,sBAAA,CAAgB,OAAA,CAAQ,KAAK,CAAA;AAC3C,EAAA,MAAM,MAAA,GAAS,KAAA,CAAM,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,KAAU;AACzC,IAAA,MAAM,WAAA,GAAcC,8BAAA,CAAoB,KAAA,EAAO,KAAK,CAAA;AACpD,IAAA,IAAI,CAAC,KAAA,CAAM,IAAA,CAAK,WAAW,CAAA,EAAG;AAC5B,MAAA,OAAO,KAAA;AAAA,IACT;AACA,IAAA,MAAM,cAAA,GAAiB,WAAA,CAAY,OAAA,CAAQ,KAAA,EAAO,QAAQ,aAAa,CAAA;AACvE,IAAA,OAAO;AAAA,MACL,GAAG,KAAA;AAAA,MACH,QAAQ,EAAE,GAAG,KAAA,CAAM,MAAA,EAAQ,aAAa,cAAA,EAAe;AAAA,MACvD,OAAO,EAAE,GAAG,KAAA,CAAM,KAAA,EAAO,aAAa,cAAA;AAAe,KACvD;AAAA,EACF,CAAC,CAAA;AACD,EAAA,OAAO,EAAE,GAAG,KAAA,EAAO,MAAA,EAAO;AAC5B,CAAA;;;;"}