gedcom-ts
Version:
TypeScript GEDCOM toolkit for browser apps: import .ged/.zip, edit typed genealogy data, and export GEDCOM or GEDZIP.
85 lines (84 loc) • 4 kB
TypeScript
import { DateAct } from "./DateAct";
import { Place } from "./Place";
import { GEDCOM_7_ALL_EVENT_TAGS } from "./gedcomEventTags";
import type { ObjeRecord } from "./ObjeRecord";
import { MultimediaFile, MultimediaFiles } from "./MultimediaFile";
import { Notes } from "./Note";
export type TypeAct = (typeof GEDCOM_7_ALL_EVENT_TAGS)[number];
export type ActConstructionOptions = {
/** GEDCOM 7 `1 EVEN` text payload (only used when `type` is `EVEN`). */
evenDescription?: string | null;
/** GEDCOM 7 required `2 TYPE` under `EVEN` (individual or family). */
evenTypeLabel?: string | null;
/** GEDCOM 7 `2 SDATE` (+ `3 TIME` / `3 PHRASE` importés comme pour `DATE`). */
sdateAct?: DateAct | null;
/** GEDCOM 7 `2 PHRASE` directement sous l’événement. */
eventPhrases?: readonly string[] | null;
/** Sous-lignes non modélisées avant la première balise d’ancrage (`DATE`, `PLAC`, …). */
preservedSubrecordPrefix?: readonly string[] | null;
/** Sous-lignes non modélisées après la première balise d’ancrage. */
preservedSubrecordSuffix?: readonly string[] | null;
};
export declare class Act {
type: TypeAct;
dateAct?: DateAct | null;
place: Place | null;
INDIS: number[];
evenDescription?: string | null;
evenTypeLabel?: string | null;
/** GEDCOM 7 `2 SDATE` (sous-structure analogue à `DATE`). */
sdateAct?: DateAct | null;
/** GEDCOM 7 `2 PHRASE` au niveau 2 sous l’événement. */
eventPhrases: string[];
/**
* Sous-lignes d’événement non modélisées (ex. `2 HUSB`, `4 PHRASE` sous `AGE`, `3 DATE` sous `STAT`, …),
* conservées pour limiter la perte à l’import / export.
*/
preservedSubrecordPrefix: string[];
preservedSubrecordSuffix: string[];
private newMultimediaFiles;
multimediaFiles: MultimediaFiles;
notes: Notes;
get files(): MultimediaFile[];
get keysFiles(): string[];
constructor(type: TypeAct, dateAct?: DateAct | null, place?: Place | null, indis?: number[] | null, multimediaFiles?: MultimediaFiles | null, newMultimediaFiles?: Map<string, MultimediaFile>, notes?: Notes, options?: ActConstructionOptions | null);
/**
* Média rattaché à l’acte : `{indi}/{type}/{nomFichier}` (indi = premier INDI connu ou paramètre).
* Suffixe `_1`, `_2`, … avant l’extension si le chemin est déjà pris sur cet acte.
*/
addMultimedia(multimediaFile: MultimediaFile, ownerIndi?: number): void;
/**
* Média distant (URI) sans fichier local ; `ownerIndi` requis si {@link INDIS} est vide.
*/
addMultimediaFromUri(sourceUri: string, ownerIndi?: number, objeXrefId?: number | null): void;
removeMultimedia(index: number): void;
/** Copie profonde de l’acte (nouvelle instance, mêmes valeurs). */
clone(): Act;
updateType(typeAct: TypeAct): void;
addIndis(INDIS: number[]): void;
updatePlace(place: Place | null): void;
updateDateAct(dateAct: DateAct | null): void;
/** Remplace ou efface la date de tri `SDATE`. */
updateSdateAct(sdateAct: DateAct | null): void;
}
export declare class Acts {
list: Act[];
add(act: Act): void;
updateFromIndex(act: Act, indexAct: number): void;
removeFromIndex(indexAct: number): void;
removeAll(): void;
sortByDate(): void;
/** Date utilisée pour le tri : `DATE` si exploitable, sinon `SDATE`. */
private sortDateAct;
private hasSortableDate;
private compareByTypeOrder;
private compareMarriageAndDivorce;
private haveSameParticipants;
}
export declare class ActsByExtraction extends Acts {
extractActsInfo(lines: string[], INDIS: number[], mapFiles: Map<string, File>, objeRecordsById?: ReadonlyMap<number, ObjeRecord>, textualIndiXrefToIndi?: ReadonlyMap<string, number>, globalNotes?: Map<number, string[]>, importOptions?: {
notePointerToId?: ReadonlyMap<string, number>;
}): void;
private convertToActs;
private resolveTypeAct;
}