UNPKG

gedcom-ts

Version:

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

2 lines (1 loc) 14.1 kB
var g=(e,t)=>()=>(e&&(t=e(e=0)),t);var G=g(()=>{});function k(e){let t=e.trim();return!t||t===P?!1:W.test(t)||K.test(t)}function p(e){let t=e.trim();if(!t||t===P)return"\xE0 date inconnue";if(W.test(t))return`en ${t}`;let n=K.exec(t);if(n){let o=n[1].toLowerCase(),r=n[2];switch(o){case"bef":return`avant ${r}`;case"aft":return`apr\xE8s ${r}`;case"vers":case"circa":case"environ":case"about":case"abt":case"est":case"cal":return`vers ${r}`;default:return`en ${r}`}}return`le ${t}`}function y(e,t){let n=e.trim(),o=t.trim();return`${k(n)?`De ${n}`:`Du ${n}`} au ${o}`}function R(e){let t=e.trim();return W.test(t)?`voit le jour en ${t}`:k(t)?`voit le jour ${p(t)}`:`voit le jour le ${t}`}var P,W,K,S=g(()=>{P="Date inconnue",W=/^\d{3,4}$/,K=/^(vers|circa|environ|about|ABT|BEF|AFT|EST|CAL|INT|FROM|TO)\s+(\d{3,4})$/i});function pe(e){return e.normalize("NFD").replace(/\p{M}/gu,"").toLowerCase()}function de(e){let t=pe(e);return ue.has(t)}function w(e){let t=e.trim();if(!t)return null;let n=t.indexOf(", ");return n>=0?{city:t.slice(0,n).trim(),country:t.slice(n+2).trim(),raw:t}:de(t)?{city:null,country:t,raw:t}:{city:t,country:null,raw:t}}function z(e){let t=e.trim();return/^en\s+/i.test(t)?t:`en ${t}`}function b(e){let t=w(e);return t?t.city&&t.country?`${t.city}, ${z(t.country)}`:t.city?t.city:t.country?z(t.country):t.raw:""}function d(e,t){let n=b(t);if(!n)return"";let o=n.startsWith("en ")?` ${n}`:` \xE0 ${n}`;return k(e)?`,${o}`:o}function C(e){let t=b(e);return t?t.startsWith("en ")?` ${t}`:` \xE0 ${t}`:""}function N(e,t,n,o){let r=t.trim(),a=o.trim();return r&&r===a?{birth:"",death:d(n,a)}:{birth:d(e,r),death:d(n,a)}}function O(e,t){let n=b(e),o=b(t);if(!n&&!o)return"";if(n&&o&&n===o)return n.startsWith("en ")?`, ${n}`:`, \xE0 ${n}`;if(n&&o)return`, de ${n} \xE0 ${o}`;let r=n||o;return r.startsWith("en ")?`, ${r}`:`, \xE0 ${r}`}function T(e,t){let n=p(e),o=t.trim();return n==="\xE0 date inconnue"&&!o?null:o?n==="\xE0 date inconnue"?C(o).trim()||null:`${n}${d(e,o)}`:n}function f(e){let t=e?.trim();return!t||t==="\xE0 date inconnue"?"":` ${t}`}var ue,_=g(()=>{S();ue=new Set(["france","allemagne","espagne","italie","belgique","suisse","royaume-uni","angleterre","\xE9cosse","irlande","portugal","pays-bas","luxembourg","autriche","pologne","russie","canada","\xE9tats-unis","usa","maroc","alg\xE9rie","tunisie"].map(e=>e.normalize("NFD").replace(/\p{M}/gu,"").toLowerCase()))});function he(e){return e!=null&&ge.includes(e)}function h(e){return he(e)?e:"en"}var ge,D=g(()=>{ge=["en","fr","de","nl","es","zh","it","pt","pl","ar","he"]});function fe(){let e=globalThis;return e[M]??(e[M]=new Map),e[M]}function $(e){let t=fe().get(e);if(!t)throw new H(e);return t}var M,H,v=g(()=>{D();M="__GEDCOM_TS_BOOKLET_LOCALE_CACHE__";H=class extends Error{constructor(t){super(`Booklet locale "${t}" is not loaded. Call await ensureBookletLocale("${t}") before using sync booklet APIs.`),this.name="BookletLocaleNotLoadedError"}}});function $e(e){return $(e).genderWords}function E(e,t){return $e(h(t))[e]}function L(e,t){let n=h(t);if(n==="en")return"";if(n==="fr")return e>1?"s":"";let o=$(n).genderPhrases;return o&&!o.usesPluralS?"":e>1?"s":""}function V(e,t){if(e<=0)return"";let n=h(t),o=$(n).genderPhrases?.recensedChildren(e);return o||(n==="en"?e===1?"1 child listed":`${e} children listed`:e===1?"1 enfant recens\xE9":`${e} enfants recens\xE9s`)}function Y(e,t){if(e<=0)return"";let n=h(t),o=$(n).genderPhrases?.otherUnions(e);return o||(n==="en"?e===1?"1 other union cited in the tree":`${e} other unions cited in the tree`:e===1?"1 autre union cit\xE9e dans l'arbre":`${e} autres unions cit\xE9es dans l'arbre`)}var j=g(()=>{D();v()});function X(e){let t=h(e);return $(t).messages}var q=g(()=>{D();v();v()});function x(e,t=6,n){let o=X(n);if(e.length===0)return o.childrenNone;let r=e.map(a=>a.name);return r.length<=t?r.join(", "):`${r.slice(0,t).join(", ")} ${o.childrenMore(r.length-t)}`}var Q=g(()=>{D();q()});function J(e){return e.map(t=>t.trim()).filter(Boolean).map(t=>t.endsWith(".")?t:`${t}.`).join(" ")}function u(e){let t=e.map(o=>o.trim()).filter(Boolean);return t.length===0?"":`${t.map(o=>o.endsWith(".")?o.slice(0,-1):o).join(" ; ")}.`}function A(e){return e.trim().split(/\s+/)[0]??e}function i(e,t){return e[Math.abs(t)%e.length]}function B(e,t="et"){return e.length===0?"":e.length===1?e[0]:e.length===2?`${e[0]} ${t} ${e[1]}`:`${e.slice(0,-1).join(", ")} ${t} ${e.at(-1)}`}function Z(e,t){if(e.parents.length===0)return null;let n=E(e.sex,"fr"),o=e.parents.map(r=>r.name);return o.length===1?i([`enfant de ${o[0]}`,`${n.childOf} de ${o[0]}`,`${n.descendant} de ${o[0]}`],t+3):i([`${n.offspring} de ${B(o)}`,`${n.descendant} de ${B(o)}`,`enfant de ${B(o)}`],t+3)}function ke(e,t){if(t.marriageLabel)return t.marriageLabel;let n=e.events.find(o=>o.kind===String("MARR"));return n?T(n.date,n.place):null}function I(e,t,n){let o=E(e.sex,"fr"),r=t.coParent.name,a=[],l=f(ke(e,t));if(l?a.push(i([`\xE9pouse ${r}${l}`,`s'un\xEEt \xE0 ${r}${l}`,`mariage avec ${r}${l}`],n+7)):a.push(i([`${o.linked} \xE0 ${r}`,`partage sa vie avec ${r}`,`union mentionn\xE9e avec ${r}`],n+7)),t.children.length>0){let s=t.children.map(c=>A(c.name));s.length===1?a.push(i([`dont ${s[0]}`,`avec pour enfant ${s[0]}`,`${o.parentOf} de ${s[0]}`],n+11)):a.push(i([`dont les enfants ${B(s)}`,`avec pour descendance ${B(s)}`,`${o.parentOf} de ${B(s)}`],n+11))}return u(a)}function ee(e,t){let n=e.events.find(l=>l.kind===String("BIRT")),o=e.events.find(l=>l.kind===String("DEAT")),r=e.name,a=E(e.sex,"fr");if(n&&o){let l=p(n.date),s=p(o.date),c=N(n.date,n.place,o.date,o.place),m=O(n.place,o.place);return i([`${r}, ${a.born} ${l}${c.birth}, s'\xE9teint ${s}${c.death}`,`${y(n.date,o.date)}${m}, ${r} marque cette lign\xE9e`,`${r} ${R(n.date)}${c.birth||d(n.date,n.place)} et s'\xE9teint ${s}${c.death}`],t)}if(n){let l=p(n.date),s=d(n.date,n.place);return i([`${r}, ${a.born} ${l}${s}`,`Naissance de ${r} ${l}${s}`,`${r} ${R(n.date)}${s}`],t)}if(o){let l=p(o.date),s=d(o.date,o.place);return i([`${r}, ${a.died} ${l}${s}`,`D\xE9c\xE8s de ${r} ${l}${s}`,`${r} s'\xE9teint ${l}${s}`],t+1)}return e.datesLabel!=="Dates inconnues"?i([`${r}, ${a.present} dans les registres vers ${e.datesLabel}`,`On situe ${r} autour de ${e.datesLabel}`,`${r} (${e.datesLabel})`],t+2):null}function te(e,t,n){let o=p(e.date),r=d(e.date,e.place),a=E(n,"fr");switch(e.kind){case"MARR":return i([`mariage c\xE9l\xE9br\xE9 ${o}${r}`,`union enregistr\xE9e ${o}${r}`,`noces c\xE9l\xE9br\xE9es ${o}${r}`,`s'unit${o}${r}`],t);case"DIV":return`divorce enregistr\xE9 ${o}${r}`;case"BAPM":case"CHR":return i([`bapt\xEAme ${o}${r}`,`${a.baptized} ${o}${r}`,`onction baptismale ${o}${r}`],t);case"BURI":return i([`inhumation ${o}${r}`,`fun\xE9railles ${o}${r}`,`s\xE9pulture ${o}${r}`],t);case"CREM":return`cr\xE9mation attest\xE9e ${o}${r}`;case"OCCU":return`profession mentionn\xE9e (${e.date})${C(e.place)}`;default:return`${e.label.toLowerCase()} ${o}${r}`}}function ne(e,t){let n=[],o=0;for(let r of e.events){if(be.has(r.kind))continue;let a=te(r,t+o,e.sex);a&&n.push(a),o+=1}return n}function oe(e){let t=e.entries.length,n=e.subtitle.includes("\u2014")?e.subtitle.split("\u2014").pop()?.trim()??"":"",o=e.title.match(/Génération (\d+)/),r=o?Number(o[1]):0;if(r>0){let a=r===1?[`Point de d\xE9part du r\xE9cit : ${t} figure${L(t,"fr")} \xE0 la racine de l'arbre.`,`Ici commence la lign\xE9e, avec ${t} personne${L(t,"fr")} de r\xE9f\xE9rence.`]:[`\xC0 la ${r}e g\xE9n\xE9ration, ${t} anc\xEAtre${L(t,"fr")} entrent en sc\xE8ne.`,`Cette g\xE9n\xE9ration compte ${t} personne${L(t,"fr")}${n?` (${n})`:""}.`,`${t} destins se croisent dans cette g\xE9n\xE9ration${n?`, entre ${n}`:""}.`];return i(a,r)}return i([`${e.title} : ${t} portrait${L(t,"fr")} \xE0 d\xE9couvrir.`,`${t} personne${L(t,"fr")} pour la lettre ${e.title.replace("Lettre ","")}${n?` (${n})`:""}.`],t)}function re(e,t){let n=e.familyId,o=e.partners[0]?.name??"Un anc\xEAtre",r=e.partners[1]?.name,a=e.children,l;if(r){let s=i([`${A(o)} et ${A(r)}`,`Le couple ${A(o)} \u2013 ${A(r)}`,`${o} et ${r}`],n),c=f(e.marriageLabel),m=i(c?[`s'unissent${c}`,`se marient${c}`,`c\xE9l\xE8brent leur union${c}`]:["forment une union","sont r\xE9unis par les registres","apparaissent comme conjoints"],n+1);if(a.length===0)l=u([`${s} ${m}`,"sans descendance recens\xE9e dans le fichier"]);else if(a.length===1)l=u([`${s} ${m}`,i([`avec pour enfant ${a[0].name}`,`donnent naissance \xE0 ${a[0].name}`,`ont un enfant, ${a[0].name}`],n+2)]);else if(t==="summary")l=u([`${s} ${m}`,`${a.length} enfants : ${x(a,5,"fr")}`]);else{let F=a.map(U=>{let ie=U.datesLabel!=="Dates inconnues"?` (${U.datesLabel})`:"";return`${U.name}${ie}`});l=u([`${s} ${m}`,`descendance : ${B(F,"et")}`])}}else l=J([i([`${A(o)} occupe une place centrale dans cette lign\xE9e`,`${o}, figure rep\xE8re de ce chapitre`],n),e.marriageLabel?i([`mariage attest\xE9${f(e.marriageLabel)}`,`union mentionn\xE9e${f(e.marriageLabel)}`],n+1):"",a.length>0?i([`descendance : ${x(a,5,"fr")}`,`${V(a.length,"fr")} : ${x(a,5,"fr")}`],n+2):""]);return[l]}function ae(e){let t=e.indi,n=[],o=ee(e,t);if(o)n.push(o);else{let l=E(e.sex,"fr");n.push(i([`${e.name}, ${l.present} dans cette branche`,`${e.name} figure dans ce chapitre`],t))}let r=Z(e,t);r&&n.push(r),e.unions[0]&&(n.push(I(e,e.unions[0],t)),e.unions.length>1&&n.push(Y(e.unions.length-1,"fr")));let a=ne(e,t);return a.length>0&&n.push(u(a.slice(0,2))),e.sosa!=null&&n.length>0&&n.push(`SOSA ${e.sosa}`),n.length<=1&&e.events.length===0&&e.unions.length===0?J([`${e.name} : peu d'actes pour l'instant`,"des recherches pourront compl\xE9ter ce portrait"]):u(n)}function se(e){let t=e.indi,n=[],o=[],r=ee(e,t);r&&o.push(r);let a=Z(e,t);a&&o.push(a);let l=ne(e,t);if(l.length>0&&o.push(u(l)),o.length>0?n.push(u(o)):n.push(`${e.name} \u2014 portrait encore \xE0 compl\xE9ter dans les archives.`),e.unions.length>0){let s=e.unions.map((c,m)=>I(e,c,t+20+m));n.push(i([u(s),`C\xF4t\xE9 famille : ${u(s)}`,`Du c\xF4t\xE9 conjugal : ${u(s)}`],t+5))}else{let s=e.events.filter(c=>c.kind===String("MARR"));if(s.length>0){let c=s.map((m,F)=>te(m,t+30+F,e.sex));n.push(u(c))}}return e.notesPreview&&n.push(i([`Note de recherche : ${e.notesPreview}`,`Les archives pr\xE9cisent : ${e.notesPreview}`,`\xC0 retenir : ${e.notesPreview}`],t+9)),n}var be,le=g(()=>{G();S();_();j();Q();be=new Set([String("BIRT"),String("DEAT"),String("MARR")])});var Ae,Re,Ce,De,Pe,ye,Se,Ne,ot,Oe=g(()=>{G();S();_();le();Ae={BIRT:"Naissance",DEAT:"D\xE9c\xE8s",MARR:"Mariage",DIV:"Divorce",BAPM:"Bapt\xEAme (BAPM)",CHR:"Bapt\xEAme",BURI:"Inhumation",CREM:"Cr\xE9mation",EVEN:"\xC9v\xE9nement",OCCU:"Profession"},Re={unknownDates:"Dates inconnues",unknownDate:"Date inconnue",chapterUnknownDates:"Dates inconnues",generation1Title:"G\xE9n\xE9ration 1 \u2014 personne de r\xE9f\xE9rence",generationTitle:e=>`G\xE9n\xE9ration ${e}`,letterTitle:e=>`Lettre ${e}`,chapterSubtitle:(e,t)=>`${e} personne(s) \u2014 ${t}`,chapterDateAbout:"vers",childrenNone:"aucun enfant list\xE9",childrenMore:e=>`(+ ${e} autres)`,pagesEstimate:e=>`~${e} pages`,pagesEmpty:"\u2014",adviceDetailed120:"Pour plus de 120 personnes, le mode R\xE9sum\xE9 produit un document bien plus lisible et plus rapide \xE0 g\xE9n\xE9rer.",adviceDetailed50:"Au-del\xE0 de 50 personnes, le mode R\xE9sum\xE9 reste recommand\xE9 pour une premi\xE8re lecture.",adviceSummary25:"Peu de personnes : le mode D\xE9taill\xE9 offre une belle fiche par page, id\xE9al pour l\u2019impression.",actTypeLabels:Ae,spouseUnknown:"Conjoint non renseign\xE9",timelineTitle:e=>`Frise chronologique \u2014 ${e}`,timelineUnknownDates:"dates inconnues",pdf:{coverSubtitle:"Histoire familiale depuis votre fichier GEDCOM",referencePerson:e=>`Personne de r\xE9f\xE9rence (SOSA 1) : ${e}`,personCount:e=>`${e} personne(s) dans ce livret`,localNote:"Document g\xE9n\xE9r\xE9 localement dans votre navigateur.",tocTitle:"Sommaire",modeSummary:"Mode r\xE9sum\xE9 - r\xE9cits courts",modeDetailed:"Mode d\xE9taill\xE9 - biographies d\xE9velopp\xE9es",contentHeading:"Contenu du livret",introSummary:"Ce livret raconte votre arbre en prose : naissances, unions, descendance et d\xE9c\xE8s reconstitu\xE9s \xE0 partir du GEDCOM. Chaque chapitre ouvre sur une g\xE9n\xE9ration ou une lettre, puis d\xE9roule les destins en r\xE9cits courts.",introDetailed:"Ce livret d\xE9veloppe chaque figure en biographie narrative, \xE0 la suite dans chaque chapitre. Chaque nouvelle g\xE9n\xE9ration commence sur une page d\xE9di\xE9e.",introSosa:"Les num\xE9ros SOSA sont mentionn\xE9s lorsque la num\xE9rotation est active. Sommaire en fin de document.",familyHeading:e=>`La famille ${e}`,generationLabel:e=>`g\xE9n\xE9ration ${e}`,pageFooter:e=>`Page ${e}`},timeline:{legendBirth:"naissance",legendDeath:"d\xE9c\xE8s",legendMarriage:"mariage",overflow:e=>`+ ${e} autre(s) sur les pages suivantes`,continuation:"(suite de la frise)"}},Ce={F:{born:"n\xE9e",died:"d\xE9c\xE9d\xE9e",baptized:"baptis\xE9e",present:"pr\xE9sente",linked:"li\xE9e",offspring:"issue",descendant:"descendante",childOf:"fille",parentOf:"m\xE8re"},M:{born:"n\xE9",died:"d\xE9c\xE9d\xE9",baptized:"baptis\xE9",present:"pr\xE9sent",linked:"li\xE9",offspring:"issu",descendant:"descendant",childOf:"fils",parentOf:"p\xE8re"},U:{born:"n\xE9(e)",died:"d\xE9c\xE9d\xE9(e)",baptized:"baptis\xE9(e)",present:"pr\xE9sent(e)",linked:"li\xE9(e)",offspring:"issu(e)",descendant:"descendant(e)",childOf:"enfant",parentOf:"parent"},X:{born:"n\xE9(e)",died:"d\xE9c\xE9d\xE9(e)",baptized:"baptis\xE9(e)",present:"pr\xE9sent(e)",linked:"li\xE9(e)",offspring:"issu(e)",descendant:"descendant(e)",childOf:"enfant",parentOf:"parent"}},De=void 0,Pe={BOOKLET_UNKNOWN_DATE:P,isYearOnlyDate:k,onDate:p,lifeDateRange:y,seesDayOn:R},ye={parsePlaceLabel:w,placeCore:b,afterDateLocation:d,atLocation:C,birthDeathLocationPhrases:N,lifeRangeLocation:O,marriageWhenWhere:T,embedMarriageWhenWhere:f},Se={buildChapterIntroNarrative:oe,buildFamilyNarrative:re,buildPersonSummaryNarrative:ae,buildPersonDetailedNarratives:se},Ne={messages:Re,genderWords:Ce,genderPhrases:De,dateModule:Pe,placeModule:ye,narrativeModule:Se},ot=Ne});Oe();export{ot as default};