UNPKG

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
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;