gedcom-ts
Version:
TypeScript GEDCOM toolkit for browser apps: import .ged/.zip, edit typed genealogy data, and export GEDCOM or GEDZIP.
65 lines (64 loc) • 3.77 kB
TypeScript
import { Act } from "../../commons/Act";
import type { ObjeRecord } from "../../commons/ObjeRecord";
import { DateAct } from "../../commons/DateAct";
import { MultimediaFile } from "../../commons/MultimediaFile";
import { Place } from "../../commons/Place";
import type { Person } from "../../commons/Person";
/** `2 TYPE` recommandé sous `1 EVEN` pour un entretien audio (GEDCOM 7). */
export declare const GEDCOM_7_EVEN_TYPE_AUDIO_INTERVIEW = "Interview";
/** Variante courante pour histoire orale. */
export declare const GEDCOM_7_EVEN_TYPE_ORAL_HISTORY = "Oral history";
export type CreateAudioInterviewActInit = {
/** Texte `1 EVEN` (titre ou résumé de l’entretien). */
description?: string;
/** `2 TYPE` sous `EVEN` (défaut {@link GEDCOM_7_EVEN_TYPE_AUDIO_INTERVIEW}). */
evenTypeLabel?: string;
dateAct?: DateAct | null;
place?: Place | null;
/** Participants (`INDIS` de l’acte). */
participantIndis?: readonly number[];
/** Transcription textuelle (`2 NOTE` sous l’événement). */
transcription?: string;
/** Fichier audio local (GEDZIP). */
audioFile?: File;
/** URI / chemin audio (`OBJE`.`FILE` ou lien direct). */
audioUri?: string;
/** Sous-titres WebVTT en `FILE`.`TRAN` sous l’OBJE. */
vttUri?: string;
/** Id `@O{n}@` ; alloué via {@link nextObjeXrefId} si absent. */
objeXrefId?: number;
/** `INDI` propriétaire pour les chemins média (`addMultimedia`). */
ownerIndi?: number;
};
export type AudioInterviewBundle = {
act: Act;
objeXrefId: number | null;
objeRecord: ObjeRecord | null;
};
export declare function normalizeEvenTypeLabel(label: string): string;
export declare function isAudioInterviewEvenType(label: string | null | undefined): boolean;
/** Prochain id `@O{n}@` libre dans le graphe (+ registre OBJE optionnel). */
export declare function nextObjeXrefId(persons: readonly Person[], objeRecordsById?: ReadonlyMap<number, ObjeRecord>): number;
/**
* Attache un média audio (`2 OBJE`) et construit l’enregistrement `OBJE` correspondant.
*/
export declare function attachAudioInterviewToAct(act: Act, init: Pick<CreateAudioInterviewActInit, "audioFile" | "audioUri" | "vttUri" | "objeXrefId" | "ownerIndi">, persons?: readonly Person[], objeRecordsById?: ReadonlyMap<number, ObjeRecord>): {
objeXrefId: number | null;
objeRecord: ObjeRecord | null;
};
/**
* Crée un acte `EVEN` + `TYPE Interview` avec lien `OBJE` audio et note de transcription.
*/
export declare function createAudioInterviewAct(init: CreateAudioInterviewActInit, persons?: readonly Person[], objeRecordsById?: ReadonlyMap<number, ObjeRecord>): AudioInterviewBundle;
/** Enregistre l’{@link ObjeRecord} audio dans une map d’export / import. */
export declare function registerObjeRecord(map: Map<number, ObjeRecord>, record: ObjeRecord): void;
/** Acte EVEN « entretien » : type reconnu ou média audio rattaché. */
export declare function isAudioInterviewAct(act: Act, objeRecordsById?: ReadonlyMap<number, ObjeRecord>): boolean;
/** Première note texte de l’acte (transcription usuelle). */
export declare function getAudioInterviewTranscription(act: Act): string | null;
/** Médias audio sur l’acte (fichiers locaux ou pointeurs OBJE). */
export declare function getAudioInterviewMedia(act: Act, objeRecordsById?: ReadonlyMap<number, ObjeRecord>): MultimediaFile[];
/** Enregistrements OBJE audio liés aux pointeurs de l’acte. */
export declare function getAudioInterviewObjeRecords(act: Act, objeRecordsById: ReadonlyMap<number, ObjeRecord>): ObjeRecord[];
/** URI audio principale d’un acte entretien. */
export declare function primaryAudioInterviewUri(act: Act, objeRecordsById?: ReadonlyMap<number, ObjeRecord>): string | null;