import { callable, isNotEmpty, objectGet } from 'mixlea-utils-js'; import type { Pipeline } from '../pipeline'; import type { ColumnHiddenConfig } from './types'; export type { ColumnHiddenConfig }; export function columnHidden(config?: ColumnHiddenConfig) { if (config === null || config === undefined) { return (pipeline: Pipeline) => pipeline; } return function (pipeline: Pipeline) { const formData = pipeline.getFormData(); const mapping = config.mapping; const nextColumns = pipeline.getColumns().filter((item) => { const mappingValue = mapping[item.field]; if (isNotEmpty(mappingValue)) { const cellValue = objectGet(formData, item.field); return !callable(mappingValue, formData, cellValue); } return true; }); pipeline.inputColumns(nextColumns); return pipeline; }; }