import ImportRecord from './ImportRecord'; import { Pipe } from './PipeParser'; import { TransformerCallback } from './Transformer'; import { ValidatorCallback, ValidatorWithContextCallback } from './Validator'; import { MapperStrategy, MapperStrategyWithContext } from './MappingStrategy'; import { DataProvider } from './Provider'; export type ImportField = { label: string; description: string; transformers: string | Pipe[]; validators: string | Pipe[]; provider: string; aliases: string[]; }; export type FieldProcessorContext = { fields: ImportConfigFields; headers: string[]; records: ImportRecord[]; meta: { fileSize: number; fileName: string; fileType: string; withHeader: boolean; }; }; export type FieldProcessor = (context: FieldProcessorContext) => ImportConfigFields | Promise; export type ImportConfigFields = { [key: string]: Partial & Pick; }; export type ImportConfigTransformers = { [key: string]: TransformerCallback; }; export type ImportConfigValidators = { [key: string]: ValidatorCallback; } & { withContext?: { [key: string]: ValidatorWithContextCallback; }; }; export type ImportConfigDataProviders = { [key: string]: DataProvider; }; export type ImportConfigTranslations = { [key: string]: { [key: string]: string; }; }; export type ImportConfigEditorMode = 'advanced' | 'basic'; export type ImportConfigWithOptionals = { title?: string; subtitles?: string[]; fields: ImportConfigFields; transformers?: ImportConfigTransformers; validators?: ImportConfigValidators; providers: ImportConfigDataProviders; mapper?: MapperStrategy | MapperStrategyWithContext; locale?: string; translations?: ImportConfigTranslations; sampleFile?: string | File; uploadedFile?: File; throttle?: false | number; meta?: any; fieldProcessor?: FieldProcessor; onRecordReady?: (record: ImportRecord, meta: any) => any; onImportReady?: (records: ImportRecord[], meta: any) => any; onImportProgress?: (processed: number, failed: number, total: number) => void; onStepEnter?: (step: number, previousStep: null | number) => any; onStepExit?: (step: number, nextStep: null | number) => any; warnOnPageUnload?: boolean; editorMode?: ImportConfigEditorMode; allowManualRecords?: boolean; style?: string; license?: string; enableImportMetrics?: boolean; }; export type ImportConfig = { title: string; subtitles: string[]; fields: { [key: string]: ImportField; }; transformers: ImportConfigTransformers; validators: ImportConfigValidators; providers: ImportConfigDataProviders; mapper?: MapperStrategy | MapperStrategyWithContext; locale: string; translations: ImportConfigTranslations; sampleFile?: string | File; uploadedFile?: File; throttle: false | number; meta: any; fieldProcessor?: FieldProcessor; onRecordReady?: (record: ImportRecord, meta: any) => any; onImportReady?: (records: ImportRecord[], meta: any) => any; onImportProgress?: (processed: number, failed: number, total: number) => void; onStepEnter?: (step: number, previousStep: null | number) => any; onStepExit?: (step: number, nextStep: null | number) => any; warnOnPageUnload?: boolean; editorMode: ImportConfigEditorMode; allowManualRecords: boolean; style?: string; license?: string; enableImportMetrics: boolean; }; export default class MainElement extends HTMLElement { private engines; private parsedRecords; private previewRecords; private previewHeaders; private hasHeader; private mapping; private beforeUnloadHandler; private history; private importokMeta; private processor; static readonly defaultConfig: ImportConfig; private _config; private validator; private transformer; private provider; private fileEngine; private metricsTracker; constructor(config?: ImportConfigWithOptionals | null | undefined); /** * Load transformers from config */ loadTransformers(): void; /** * Load validators from config */ loadValidators(): void; /** * Load providers from config */ loadProviders(): void; /** * Loads translations from config */ loadTranslations(): void; /** * Allow to overwrite config as a property * Useful for web components */ set config(config: ImportConfigWithOptionals); get config(): ImportConfig; connectedCallback(): void; disconnectedCallback(): void; private normalizeConfig; /** * Helper method to call mappers with backward compatibility. * Detects if mapper expects context object or individual parameters. */ private callMapper; private loadUploadStep; private loadMappingStep; private loadReviewStep; private loadPushStep; private updateContents; private goBack; private enterStep; private exitStep; }