import { type Notifier, type Subscriber } from '@ni/fast-element'; import type { TableStringField, TableBooleanField, TableNumberField } from '../../table/types'; import { TableColumn } from '../base'; import { Mapping } from '../../mapping/base'; import type { MappingKeyType } from './types'; import type { MappingConfig } from './models/mapping-config'; import type { MappingKey } from '../../mapping/base/types'; import type { TableColumnEnumBaseValidator } from './models/table-column-enum-base-validator'; import type { TableColumnTextBaseColumnConfig } from '../text-base/cell-view'; export type TableColumnEnumCellRecord = TableStringField<'value'> | TableBooleanField<'value'> | TableNumberField<'value'>; export type MappingConfigs = Map; export interface TableColumnEnumColumnConfig extends TableColumnTextBaseColumnConfig { mappingConfigs: MappingConfigs; } /** * Base class for table columns that map values to content */ export declare abstract class TableColumnEnumBase> extends TableColumn implements Subscriber { /** @internal */ mappingNotifiers: Notifier[]; /** @internal */ mappings: Mapping[]; fieldName?: string; keyType: MappingKeyType; /** * @internal * * Triggers a request to update the columnConfig when any observable property on * a mapping is updated. */ handleChange(source: unknown, args: unknown): void; /** * Implementations should throw an error if an invalid Mapping is passed. */ protected abstract createMappingConfig(mapping: Mapping): MappingConfig; protected abstract createColumnConfig(mappingConfigs: MappingConfigs): TColumnConfig; /** * Called when any Mapping related state has changed. */ private updateColumnConfig; private getMappingConfigs; private fieldNameChanged; private mappingsChanged; private keyTypeChanged; private removeMappingObservers; private observeMappings; }