{"version":3,"file":"sortBy.cjs","sources":["../../../../src/transformations/transformers/sortBy.ts"],"sourcesContent":["import { map } from 'rxjs/operators';\n\nimport { sortDataFrame } from '../../dataframe/processDataFrame';\nimport { getFieldDisplayName } from '../../field/fieldState';\nimport { DataFrame } from '../../types/dataFrame';\nimport { DataTransformContext, DataTransformerInfo } from '../../types/transformations';\n\nimport { DataTransformerID } from './ids';\n\nexport interface SortByField {\n  field: string;\n  desc?: boolean;\n  index?: number;\n}\n\nexport interface SortByTransformerOptions {\n  // NOTE: this structure supports an array, however only the first entry is used\n  // future versions may support multi-sort options\n  sort: SortByField[];\n}\n\nexport const sortByTransformer: DataTransformerInfo<SortByTransformerOptions> = {\n  id: DataTransformerID.sortBy,\n  name: 'Sort by',\n  description: 'Sort fields in a frame.',\n  defaultOptions: {\n    fields: {},\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, ctx) => (source) =>\n    source.pipe(\n      map((data) => {\n        if (!Array.isArray(data) || data.length === 0 || !options?.sort?.length) {\n          return data;\n        }\n        return sortDataFrames(data, options.sort, ctx);\n      })\n    ),\n};\n\nfunction sortDataFrames(data: DataFrame[], sort: SortByField[], ctx: DataTransformContext): DataFrame[] {\n  return data.map((frame) => {\n    const s = attachFieldIndex(frame, sort, ctx);\n    if (s.length && s[0].index != null) {\n      return sortDataFrame(frame, s[0].index, s[0].desc);\n    }\n    return frame;\n  });\n}\n\nfunction attachFieldIndex(frame: DataFrame, sort: SortByField[], ctx: DataTransformContext): SortByField[] {\n  return sort.map((s) => {\n    if (s.index != null) {\n      // null or undefined\n      return s;\n    }\n\n    return {\n      ...s,\n      index: frame.fields.findIndex((f) => s.field === getFieldDisplayName(f, frame)),\n    };\n  });\n}\n"],"names":["DataTransformerID","map","sortDataFrame","getFieldDisplayName"],"mappings":";;;;;;;;;;AAqBO,MAAM,iBAAA,GAAmE;AAAA,EAC9E,IAAIA,qBAAA,CAAkB,MAAA;AAAA,EACtB,IAAA,EAAM,SAAA;AAAA,EACN,WAAA,EAAa,yBAAA;AAAA,EACb,cAAA,EAAgB;AAAA,IACd,QAAQ;AAAC,GACX;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,UAAU,CAAC,OAAA,EAAS,GAAA,KAAQ,CAAC,WAC3B,MAAA,CAAO,IAAA;AAAA,IACLC,aAAA,CAAI,CAAC,IAAA,KAAS;AAnCpB,MAAA,IAAA,EAAA;AAoCQ,MAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,IAAK,IAAA,CAAK,MAAA,KAAW,CAAA,IAAK,EAAA,CAAC,EAAA,GAAA,OAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,OAAA,CAAS,IAAA,KAAT,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAe,MAAA,CAAA,EAAQ;AACvE,QAAA,OAAO,IAAA;AAAA,MACT;AACA,MAAA,OAAO,cAAA,CAAe,IAAA,EAAM,OAAA,CAAQ,IAAA,EAAM,GAAG,CAAA;AAAA,IAC/C,CAAC;AAAA;AAEP;AAEA,SAAS,cAAA,CAAe,IAAA,EAAmB,IAAA,EAAqB,GAAA,EAAwC;AACtG,EAAA,OAAO,IAAA,CAAK,GAAA,CAAI,CAAC,KAAA,KAAU;AACzB,IAAA,MAAM,CAAA,GAAI,gBAAA,CAAiB,KAAA,EAAO,IAAA,EAAM,GAAG,CAAA;AAC3C,IAAA,IAAI,EAAE,MAAA,IAAU,CAAA,CAAE,CAAC,CAAA,CAAE,SAAS,IAAA,EAAM;AAClC,MAAA,OAAOC,8BAAA,CAAc,OAAO,CAAA,CAAE,CAAC,EAAE,KAAA,EAAO,CAAA,CAAE,CAAC,CAAA,CAAE,IAAI,CAAA;AAAA,IACnD;AACA,IAAA,OAAO,KAAA;AAAA,EACT,CAAC,CAAA;AACH;AAEA,SAAS,gBAAA,CAAiB,KAAA,EAAkB,IAAA,EAAqB,GAAA,EAA0C;AACzG,EAAA,OAAO,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,KAAM;AACrB,IAAA,IAAI,CAAA,CAAE,SAAS,IAAA,EAAM;AAEnB,MAAA,OAAO,CAAA;AAAA,IACT;AAEA,IAAA,OAAO;AAAA,MACL,GAAG,CAAA;AAAA,MACH,KAAA,EAAO,KAAA,CAAM,MAAA,CAAO,SAAA,CAAU,CAAC,CAAA,KAAM,CAAA,CAAE,KAAA,KAAUC,8BAAA,CAAoB,CAAA,EAAG,KAAK,CAAC;AAAA,KAChF;AAAA,EACF,CAAC,CAAA;AACH;;;;"}