{"version":3,"file":"organize.cjs","sources":["../../../../src/transformations/transformers/organize.ts"],"sourcesContent":["import { DataFrame } from '../../types/dataFrame';\nimport { DataTransformerInfo, TransformationApplicabilityLevels } from '../../types/transformations';\n\nimport { filterFieldsByNameTransformer } from './filterByName';\nimport { DataTransformerID } from './ids';\nimport { orderFieldsTransformer, OrderFieldsTransformerOptions } from './order';\nimport { renameFieldsTransformer, RenameFieldsTransformerOptions } from './rename';\n\nexport interface OrganizeFieldsTransformerOptions\n  extends OrderFieldsTransformerOptions,\n    RenameFieldsTransformerOptions {\n  excludeByName: Record<string, boolean>;\n  includeByName?: Record<string, boolean>;\n}\n\nexport const organizeFieldsTransformer: DataTransformerInfo<OrganizeFieldsTransformerOptions> = {\n  id: DataTransformerID.organize,\n  name: 'Organize fields by name',\n  description: 'Order, filter and rename fields based on configuration given by user',\n  defaultOptions: {\n    excludeByName: {},\n    indexByName: {},\n    renameByName: {},\n    includeByName: {},\n  },\n  isApplicable: (data: DataFrame[]) => {\n    return data.length > 1\n      ? TransformationApplicabilityLevels.NotPossible\n      : TransformationApplicabilityLevels.Applicable;\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      filterFieldsByNameTransformer.operator(\n        {\n          include: options.includeByName ? { names: mapToExcludeArray(options.includeByName) } : undefined,\n          exclude: { names: mapToExcludeArray(options.excludeByName) },\n        },\n        ctx\n      ),\n      orderFieldsTransformer.operator(options, ctx),\n      renameFieldsTransformer.operator(options, ctx)\n    ),\n};\n\nconst mapToExcludeArray = (excludeByName: Record<string, boolean>): string[] => {\n  if (!excludeByName) {\n    return [];\n  }\n\n  return Object.keys(excludeByName).filter((name) => excludeByName[name]);\n};\n"],"names":["DataTransformerID","TransformationApplicabilityLevels","filterFieldsByNameTransformer","orderFieldsTransformer","renameFieldsTransformer"],"mappings":";;;;;;;;;;;AAeO,MAAM,yBAAA,GAAmF;AAAA,EAC9F,IAAIA,qBAAA,CAAkB,QAAA;AAAA,EACtB,IAAA,EAAM,yBAAA;AAAA,EACN,WAAA,EAAa,sEAAA;AAAA,EACb,cAAA,EAAgB;AAAA,IACd,eAAe,EAAC;AAAA,IAChB,aAAa,EAAC;AAAA,IACd,cAAc,EAAC;AAAA,IACf,eAAe;AAAC,GAClB;AAAA,EACA,YAAA,EAAc,CAAC,IAAA,KAAsB;AACnC,IAAA,OAAO,IAAA,CAAK,MAAA,GAAS,CAAA,GACjBC,iDAAA,CAAkC,cAClCA,iDAAA,CAAkC,UAAA;AAAA,EACxC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,UAAU,CAAC,OAAA,EAAS,GAAA,KAAQ,CAAC,WAC3B,MAAA,CAAO,IAAA;AAAA,IACLC,0CAAA,CAA8B,QAAA;AAAA,MAC5B;AAAA,QACE,OAAA,EAAS,QAAQ,aAAA,GAAgB,EAAE,OAAO,iBAAA,CAAkB,OAAA,CAAQ,aAAa,CAAA,EAAE,GAAI,KAAA,CAAA;AAAA,QACvF,SAAS,EAAE,KAAA,EAAO,iBAAA,CAAkB,OAAA,CAAQ,aAAa,CAAA;AAAE,OAC7D;AAAA,MACA;AAAA,KACF;AAAA,IACAC,4BAAA,CAAuB,QAAA,CAAS,OAAA,EAAS,GAAG,CAAA;AAAA,IAC5CC,8BAAA,CAAwB,QAAA,CAAS,OAAA,EAAS,GAAG;AAAA;AAEnD;AAEA,MAAM,iBAAA,GAAoB,CAAC,aAAA,KAAqD;AAC9E,EAAA,IAAI,CAAC,aAAA,EAAe;AAClB,IAAA,OAAO,EAAC;AAAA,EACV;AAEA,EAAA,OAAO,MAAA,CAAO,KAAK,aAAa,CAAA,CAAE,OAAO,CAAC,IAAA,KAAS,aAAA,CAAc,IAAI,CAAC,CAAA;AACxE,CAAA;;;;"}