UNPKG

gedcom-ts

Version:

TypeScript GEDCOM toolkit for browser apps: import .ged/.zip, edit typed genealogy data, and export GEDCOM or GEDZIP.

74 lines (73 loc) 3.65 kB
import type { Act } from "../commons/Act"; import type { ReadGed } from "../import/ReadGed"; import { type GeocodeCandidate } from "./place-geocode"; export interface CoordVariant { readonly lat: number; readonly lng: number; readonly actCount: number; } /** Groupe de lieux similaires à harmoniser (libellés ou coordonnées divergents). */ export interface CityHarmonizationCluster { readonly clusterKey: string; readonly labels: readonly string[]; readonly coordVariants: readonly CoordVariant[]; readonly acts: readonly Act[]; readonly actsWithoutCoord: number; } /** Groupe d’actes partageant une même ville au sens {@link citiesAreSimilar}. */ export interface SimilarCityActGroup { readonly cityLabel: string; /** Même clé que {@link clusterKeyForCity} / carte. */ readonly clusterKey: string; readonly acts: readonly Act[]; readonly withoutCoordCount: number; } export interface GroupActsBySimilarCityOptions { /** Ne retient que les actes sans coordonnées GPS utilisables. */ readonly onlyWithoutCoordinates?: boolean; } export interface FilterActsBySimilarCityOptions { readonly onlyWithoutCoordinates?: boolean; } /** Distance de Levenshtein (petites chaînes de noms de villes). */ export declare function levenshteinDistance(a: string, b: string): number; /** * Ville proche : même clé décorée, faute légère, ou inclusion évidente (Saint-X / St-X). * **Règle unique** pour regrouper actes, carte et harmonisation. */ export declare function citiesAreSimilar(a: string, b: string): boolean; /** * Clé stable pour la carte et les listes « par ville ». * Utilise la localité principale (segment avant la première virgule), comme le regroupement * par {@link citiesAreSimilar}, afin que « Pleurtuit » et « Pleurtuit, Ille-et-Vilaine, France » * partagent la même clé. */ export declare function clusterKeyForCity(city: string): string; /** Alias explicite de {@link clusterKeyForCity}. */ export declare const similarCityKey: typeof clusterKeyForCity; /** * Regroupe les actes par ville similaire (tri décroissant par nombre d’actes). * Utiliser pour une UI « lieux sans position » (`onlyWithoutCoordinates: true`). */ export declare function groupActsBySimilarCity(acts: readonly Act[], options?: GroupActsBySimilarCityOptions): SimilarCityActGroup[]; /** * Actes dont le lieu est similaire à `cityRef` (même logique que l’harmonisation / la carte). */ export declare function filterActsBySimilarCity(acts: readonly Act[], cityRef: string, options?: FilterActsBySimilarCityOptions): Act[]; /** * Actes similaires à `cityRef` sans coordonnées GPS — à géolocaliser en une fois. * Alias de `filterActsBySimilarCity(..., { onlyWithoutCoordinates: true })`. */ export declare function actsNeedingGeocodeForCity(acts: readonly Act[], cityRef: string): Act[]; /** * Conflits d’harmonisation : libellés multiples, positions GPS divergentes, * ou mixte avec/sans coordonnées sur la même ville similaire. */ export declare function findHarmonizationClustersFromActs(acts: readonly Act[]): CityHarmonizationCluster[]; /** Analyse toute l’arbre (préférer {@link findHarmonizationClustersFromActs} sur un sous-ensemble). */ export declare function findHarmonizationClusters(ged: ReadGed): CityHarmonizationCluster[]; export declare function applyCoordinatesToActs(acts: readonly Act[], lat: number, lng: number, patch?: { city?: string; country?: string | null; }): void; export declare function applyGeocodeCandidateToActs(acts: readonly Act[], candidate: GeocodeCandidate, preferredCityLabel?: string): void;