import { RawDraftContentBlock } from 'draft-js'; import { DraftEntityDataTypes, DraftEntityDataMappingTypes } from '../../constants/Draft/DraftEntityDataTypes'; import { DraftEntityMap } from './Draft'; import { Condition } from '../Condition'; import { TicketPropertyTypes } from '../../constants/TicketPropertyTypes'; export type DraftEntityData = CompanyDraftEntityData | ConditionMetDraftEntityData | DateDraftEntityData | TicketDraftEntityData | MappableDraftEntityData | FormStepDraftEntityData; export interface BaseDraftEntityData { type: DraftEntityDataTypes | DraftEntityDataMappingTypes; prefix?: string; suffix?: string; fallback?: string; condition?: Condition; } interface CompanyDraftEntityData extends BaseDraftEntityData { type: DraftEntityDataTypes.COMPANY; idProperty: string; } interface ConditionMetDraftEntityData extends BaseDraftEntityData { type: DraftEntityDataTypes.CONDITION_MET; condition: Condition; ifTrue?: string; ifFalse?: string; } export interface DateDraftEntityData extends BaseDraftEntityData { type: DraftEntityDataTypes.DATE; days: number; hours: number; minutes: number; working: boolean; /** date-fns formats */ format?: string; } export interface TicketDraftEntityData extends BaseDraftEntityData { type: DraftEntityDataTypes.TICKET; property: TicketPropertyTypes.CASENUMBER; } export type MappableDraftEntityData = NestedDraftEntityData | EntityValueMappingDraftEntityData; export interface BaseMappableDraftEntityData extends BaseDraftEntityData { block: RawDraftContentBlock; entityMap: DraftEntityMap; } export interface NestedDraftEntityData extends BaseMappableDraftEntityData { type: DraftEntityDataTypes.NESTED; } export interface EntityValueMappingDraftEntityData extends BaseDraftEntityData { type: DraftEntityDataMappingTypes.ENTITYVALUE_MAPPING; idEntity: string; idProperty: string; } export interface FormStepDraftEntityData extends BaseDraftEntityData { type: DraftEntityDataTypes.FORM_STEP; idStep: string; } export {};