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) 17.6 kB
var W=Object.defineProperty;var ke=Object.getOwnPropertyDescriptor;var fe=Object.getOwnPropertyNames;var Be=Object.prototype.hasOwnProperty;var D=(e,n)=>()=>(e&&(n=e(e=0)),n);var Le=(e,n)=>{for(var r in n)W(e,r,{get:n[r],enumerable:!0})},be=(e,n,r,a)=>{if(n&&typeof n=="object"||typeof n=="function")for(let c of fe(n))!Be.call(e,c)&&c!==r&&W(e,c,{get:()=>n[c],enumerable:!(a=ke(n,c))||a.enumerable});return e};var ye=e=>be(W({},"__esModule",{value:!0}),e);var j=D(()=>{});function X(e){function n(L){let g=L.trim();return!g||g===e.unknownDate?!1:z.test(g)||V.test(g)}function r(L){let g=L.trim();if(!g||g===e.unknownDate)return e.onUnknown;if(z.test(g))return e.inYear(g);let y=V.exec(g);if(y){let R=y[1].toLowerCase(),$=y[2];switch(R){case"bef":return e.beforeYear($);case"aft":return e.afterYear($);case"vers":case"circa":case"environ":case"about":case"abt":case"est":case"cal":return e.aboutYear($);default:return e.inYear($)}}return e.onFullDate(g)}function a(L,g){let y=L.trim(),R=g.trim();return e.lifeRange(y,R,n(y))}function c(L){let g=L.trim();return z.test(g)?e.seesDayInYear(g):n(g)?e.seesDayOnPhrase(r(g)):e.seesDayOnFullDate(g)}return{BOOKLET_UNKNOWN_DATE:e.unknownDate,isYearOnlyDate:n,onDate:r,lifeDateRange:a,seesDayOn:c}}var z,V,Q=D(()=>{z=/^\d{3,4}$/,V=/^(vers|circa|environ|about|ABT|BEF|AFT|EST|CAL|INT|FROM|TO)\s+(\d{3,4})$/i});function De(e){return e.normalize("NFD").replace(/\p{M}/gu,"").toLowerCase()}function Ce(e){return $e.has(De(e))}function q(e,n){function r(f){let i=f.trim();if(!i)return null;let h=i.indexOf(", ");return h>=0?{city:i.slice(0,h).trim(),country:i.slice(h+2).trim(),raw:i}:Ce(i)?{city:null,country:i,raw:i}:{city:i,country:null,raw:i}}function a(f){let i=r(f);return i?i.city&&i.country?`${i.city}, ${n.countryPhrase(i.country)}`:i.city?i.city:i.country?n.countryPhrase(i.country):i.raw:""}function c(f,i){let h=a(i);if(!h)return"";let B=n.locationPhrase(h);return e.isYearOnlyDate(f)?`,${B}`:B}function L(f){let i=a(f);return i?n.locationPhrase(i):""}function g(f,i,h,B){let A=i.trim(),S=B.trim();return A&&A===S?{birth:"",death:c(h,S)}:{birth:c(f,A),death:c(h,S)}}function y(f,i){let h=a(f),B=a(i);if(!h&&!B)return"";if(h&&B&&h===B)return n.lifeRangeSame(h);if(h&&B)return n.lifeRangeFromTo(h,B);let A=h||B;return n.lifeRangeSingle(A)}function R(f,i){let h=e.onDate(f),B=i.trim();return h===e.onDate("")&&!B?null:B?h===e.onDate("")?L(B).trim()||null:`${h}${c(f,B)}`:h}function $(f){let i=f?.trim();return!i||i===e.onDate("")?"":` ${i}`}return{parsePlaceLabel:r,placeCore:a,afterDateLocation:c,atLocation:L,birthDeathLocationPhrases:g,lifeRangeLocation:y,marriageWhenWhere:R,embedMarriageWhenWhere:$}}var $e,J=D(()=>{$e=new Set(["france","germany","deutschland","spain","espana","italy","italia","belgium","switzerland","united kingdom","uk","england","scotland","ireland","portugal","netherlands","holland","luxembourg","austria","poland","russia","canada","united states","usa","morocco","algeria","tunisia","allemagne","espagne","italie","belgique","suisse","royaume-uni","angleterre","\xE9cosse","irlande","pays-bas","pologne","russie","\xE9tats-unis","maroc","alg\xE9rie","tunisie","nederland","polska","\xF6sterreich","schweiz","\u0645\u0635\u0631","\u05D9\u05E9\u05E8\u05D0\u05DC"].map(e=>e.normalize("NFD").replace(/\p{M}/gu,"").toLowerCase()))});function Z(e,n){let r=e.toLowerCase();return n.some(a=>r.startsWith(a.toLowerCase()))}function I(e,n,r){return Z(e,n)?` ${e}`:`${r}${e}`}function _(e,n,r){return Z(e,n)?`, ${e}`:`,${r}${e}`}var ee=D(()=>{});function Re(e){return e!=null&&Ee.includes(e)}function P(e){return Re(e)?e:"en"}var Ee,O=D(()=>{Ee=["en","fr","de","nl","es","zh","it","pt","pl","ar","he"]});function Ae(){let e=globalThis;return e[T]??(e[T]=new Map),e[T]}function v(e){let n=Ae().get(e);if(!n)throw new H(e);return n}var T,H,x=D(()=>{O();T="__GEDCOM_TS_BOOKLET_LOCALE_CACHE__";H=class extends Error{constructor(n){super(`Booklet locale "${n}" is not loaded. Call await ensureBookletLocale("${n}") before using sync booklet APIs.`),this.name="BookletLocaleNotLoadedError"}}});function Pe(e){return v(e).genderWords}function M(e,n){return Pe(P(n))[e]}function ne(e,n){let r=P(n);if(r==="en")return"";if(r==="fr")return e>1?"s":"";let a=v(r).genderPhrases;return a&&!a.usesPluralS?"":e>1?"s":""}function te(e,n){if(e<=0)return"";let r=P(n),a=v(r).genderPhrases?.recensedChildren(e);return a||(r==="en"?e===1?"1 child listed":`${e} children listed`:e===1?"1 enfant recens\xE9":`${e} enfants recens\xE9s`)}function oe(e,n){if(e<=0)return"";let r=P(n),a=v(r).genderPhrases?.otherUnions(e);return a||(r==="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 re=D(()=>{O();x()});function ae(e){let n=P(e);return v(n).messages}var le=D(()=>{O();x();x()});function F(e,n=6,r){let a=ae(r);if(e.length===0)return a.childrenNone;let c=e.map(L=>L.name);return c.length<=n?c.join(", "):`${c.slice(0,n).join(", ")} ${a.childrenMore(c.length-n)}`}var se=D(()=>{O();le()});function ie(e){return e.map(n=>n.trim()).filter(Boolean).map(n=>n.endsWith(".")?n:`${n}.`).join(" ")}function C(e){let n=e.map(a=>a.trim()).filter(Boolean);return n.length===0?"":`${n.map(a=>a.endsWith(".")?a.slice(0,-1):a).join(" ; ")}.`}function w(e){return e.trim().split(/\s+/)[0]??e}function m(e,n){return e[Math.abs(n)%e.length]}function Y(e,n){switch(e.length){case 0:return"";case 1:return e[0];case 2:return`${e[0]} ${n} ${e[1]}`;default:return`${e.slice(0,-1).join(", ")} ${n} ${e.at(-1)}`}}function Se(e){let n=e.key.match(/^gen-(\d+)$/);return n?{genNum:Number(n[1]),letter:null}:{genNum:0,letter:e.key.match(/^letter-(.+)$/)?.[1]??null}}function Ne(e){return e.includes("\u2014")?e.split("\u2014").pop()?.trim()??"":""}function ce(e,n,r){let a=r.dateModule,c=r.placeModule,L=r.unknownDates;function g(t){return t!==L&&t!=="Dates inconnues"}function y(t,s){if(t.parents.length===0)return null;let o=M(t.sex,e),l=t.parents.map(d=>d.name);return l.length===1?m(n.parentsSingle(l[0],o),s+3):m(n.parentsMultiple(Y(l,n.listConjunction),o),s+3)}function R(t,s){if(s.marriageLabel)return s.marriageLabel;let o=t.events.find(l=>l.kind===String("MARR"));return o?c.marriageWhenWhere(o.date,o.place):null}function $(t,s,o){let l=M(t.sex,e),d=s.coParent.name,u=[],p=c.embedMarriageWhenWhere(R(t,s));if(p?u.push(m(n.unionWithMarriage(d,p),o+7)):u.push(m(n.unionWithoutMarriage(d,l),o+7)),s.children.length>0){let k=s.children.map(b=>w(b.name));k.length===1?u.push(m(n.unionOneChild(k[0],l),o+11)):u.push(m(n.unionManyChildren(Y(k,n.listConjunction),l),o+11))}return C(u)}function f(t,s){let o=t.events.find(p=>p.kind===String("BIRT")),l=t.events.find(p=>p.kind===String("DEAT")),d=t.name,u=M(t.sex,e);if(o&&l){let p=a.onDate(o.date),k=a.onDate(l.date),b=c.birthDeathLocationPhrases(o.date,o.place,l.date,l.place),E=c.lifeRangeLocation(o.place,l.place),N=b.birth||c.afterDateLocation(o.date,o.place);return m(n.lifeBornAndDied(d,u,p,b.birth,k,b.death,a.lifeDateRange(o.date,l.date),E,a.seesDayOn(o.date),N),s)}if(o){let p=a.onDate(o.date),k=c.afterDateLocation(o.date,o.place);return m(n.lifeBirthOnly(d,u,p,k,a.seesDayOn(o.date)),s)}if(l){let p=a.onDate(l.date),k=c.afterDateLocation(l.date,l.place);return m(n.lifeDeathOnly(d,u,p,k),s+1)}return g(t.datesLabel)?m(n.lifeApproxDates(d,u,t.datesLabel),s+2):null}function i(t,s,o){let l=a.onDate(t.date),d=c.afterDateLocation(t.date,t.place),u=M(o,e);switch(t.kind){case"MARR":return m(n.eventMarriage(l,d),s);case"DIV":return n.eventDivorce(l,d);case"BAPM":case"CHR":return m(n.eventBaptism(l,d,u),s);case"BURI":return m(n.eventBurial(l,d),s);case"CREM":return n.eventCremation(l,d);case"OCCU":return n.eventOccupation(t.date,c.atLocation(t.place));default:return`${t.label.toLowerCase()} ${l}${d}`}}let h=new Set([String("BIRT"),String("DEAT"),String("MARR")]);function B(t,s){let o=[],l=0;for(let d of t.events){if(h.has(d.kind))continue;let u=i(d,s+l,t.sex);u&&o.push(u),l+=1}return o}function A(t){let s=t.entries.length,o=Ne(t.subtitle),{genNum:l,letter:d}=Se(t),u=ne(s,e);if(l>0){let k=l===1?n.chapterGen1(s,u):n.chapterGenN(l,s,u,o);return m(k,l)}let p=d??t.title;return m(n.chapterLetter(t.title,s,u,p,o),s)}function S(t,s){let o=t.familyId,l=t.partners[0]?.name??n.defaultAncestor,d=t.partners[1]?.name,u=t.children,p;if(d){let k=m(n.familyCouple(w(l),w(d),l,d),o),b=c.embedMarriageWhenWhere(t.marriageLabel),E=m(b?n.familyUnionWithMarriage(b):n.familyUnionWithoutMarriage,o+1);if(u.length===0)p=C([`${k} ${E}`,n.familyNoDescendants]);else if(u.length===1)p=C([`${k} ${E}`,m(n.familyOneChild(u[0].name),o+2)]);else if(s==="summary")p=C([`${k} ${E}`,n.familyNChildren(u.length,F(u,5,e))]);else{let N=u.map(G=>{let he=g(G.datesLabel)?` (${G.datesLabel})`:"";return`${G.name}${he}`});p=C([`${k} ${E}`,n.familyDescendantsList(Y(N,n.listConjunction))])}}else p=ie([m(n.familyLoneFigure(w(l),l),o),t.marriageLabel?m(n.familyMarriageNoted(c.embedMarriageWhenWhere(t.marriageLabel)),o+1):"",u.length>0?m([...n.familyDescendantsNoted(F(u,5,e)),n.familyDescendantsRecensed(te(u.length,e),F(u,5,e))],o+2):""]);return[p]}function pe(t){let s=t.indi,o=[],l=f(t,s);if(l)o.push(l);else{let p=M(t.sex,e);o.push(m(n.personBranchPresent(t.name,p),s))}let d=y(t,s);d&&o.push(d),t.unions[0]&&(o.push($(t,t.unions[0],s)),t.unions.length>1&&o.push(oe(t.unions.length-1,e)));let u=B(t,s);return u.length>0&&o.push(C(u.slice(0,2))),t.sosa!=null&&o.length>0&&o.push(`SOSA ${t.sosa}`),o.length<=1&&t.events.length===0&&t.unions.length===0?ie([n.personFewRecords(t.name),n.personResearchHint]):C(o)}function me(t){let s=t.indi,o=[],l=[],d=f(t,s);d&&l.push(d);let u=y(t,s);u&&l.push(u);let p=B(t,s);if(p.length>0&&l.push(C(p)),l.length>0?o.push(C(l)):o.push(n.personPortraitIncomplete(t.name)),t.unions.length>0){let k=t.unions.map((b,E)=>$(t,b,s+20+E));o.push(m(n.personUnionSection(C(k)),s+5))}else{let k=t.events.filter(b=>b.kind===String("MARR"));if(k.length>0){let b=k.map((E,N)=>i(E,s+30+N,t.sex));o.push(C(b))}}return t.notesPreview&&o.push(m(n.personResearchNote(t.notesPreview),s+9)),o}return{buildChapterIntroNarrative:A,buildFamilyNarrative:S,buildPersonSummaryNarrative:pe,buildPersonDetailedNarratives:me}}var ue=D(()=>{j();re();se()});var We={};Le(We,{default:()=>Ge});module.exports=ye(We);var Oe,de,Te,xe,U,K,ge,Fe,we,Ue,Ge,je=D(()=>{j();Q();J();ee();ue();Oe={BIRT:"Geboorte",DEAT:"Overlijden",MARR:"Huwelijk",DIV:"Echtscheiding",BAPM:"Doop (BAPM)",CHR:"Doop",BURI:"Begrafenis",CREM:"Crematie",EVEN:"Gebeurtenis",OCCU:"Beroep"},de={unknownDates:"Onbekende datums",unknownDate:"Onbekende datum",chapterUnknownDates:"Onbekende datums",generation1Title:"Generatie 1 \u2014 referentiepersoon",generationTitle:e=>`Generatie ${e}`,letterTitle:e=>`Letter ${e}`,chapterSubtitle:(e,n)=>`${e} persoon/personen \u2014 ${n}`,chapterDateAbout:"circa",childrenNone:"geen kinderen vermeld",childrenMore:e=>`(+ ${e} meer)`,pagesEstimate:e=>`~${e} pagina\u2019s`,pagesEmpty:"\u2014",adviceDetailed120:"Bij meer dan 120 personen levert de samenvattingsmodus een veel leesbaarder document op en wordt het sneller gegenereerd.",adviceDetailed50:"Bij meer dan 50 personen blijft de samenvattingsmodus aanbevolen voor een eerste lezing.",adviceSummary25:"Weinig personen: de detailmodus biedt een mooi blad per persoon, ideaal om af te drukken.",actTypeLabels:Oe,spouseUnknown:"Echtgenoot niet vermeld",timelineTitle:e=>`Chronologische tijdlijn \u2014 ${e}`,timelineUnknownDates:"onbekende datums",pdf:{coverSubtitle:"Familiegeschiedenis uit uw GEDCOM-bestand",referencePerson:e=>`Referentiepersoon (SOSA 1): ${e}`,personCount:e=>`${e} persoon/personen in dit boekje`,localNote:"Document lokaal gegenereerd in uw browser.",tocTitle:"Inhoudsopgave",modeSummary:"Samenvattingsmodus \u2013 korte verhalen",modeDetailed:"Detailmodus \u2013 uitgebreide biografie\xEBn",contentHeading:"Inhoud van het boekje",introSummary:"Dit boekje vertelt uw stamboom in proza: geboorten, huwelijken, afstammelingen en overlijdens, gereconstrueerd uit het GEDCOM-bestand. Elk hoofdstuk opent met een generatie of letter en ontvouwt levens in korte verhalen.",introDetailed:"Dit boekje ontwikkelt elke persoon als een narratieve biografie, opeenvolgend binnen elk hoofdstuk. Elke nieuwe generatie begint op een aparte pagina.",introSosa:"SOSA-nummers worden vermeld wanneer nummering actief is. Inhoudsopgave aan het einde van het document.",familyHeading:e=>`De familie ${e}`,generationLabel:e=>`generatie ${e}`,pageFooter:e=>`Pagina ${e}`},timeline:{legendBirth:"geboorte",legendDeath:"overlijden",legendMarriage:"huwelijk",overflow:e=>`+ ${e} meer op de volgende pagina\u2019s`,continuation:"(tijdlijn vervolgd)"}},Te={F:{born:"geboren",died:"overleden",baptized:"gedoopt",present:"aanwezig",linked:"verbonden",offspring:"kind",descendant:"nakomeling",childOf:"dochter",parentOf:"moeder"},M:{born:"geboren",died:"overleden",baptized:"gedoopt",present:"aanwezig",linked:"verbonden",offspring:"kind",descendant:"nakomeling",childOf:"zoon",parentOf:"vader"},U:{born:"geboren",died:"overleden",baptized:"gedoopt",present:"aanwezig",linked:"verbonden",offspring:"kind",descendant:"nakomeling",childOf:"kind",parentOf:"ouder"},X:{born:"geboren",died:"overleden",baptized:"gedoopt",present:"aanwezig",linked:"verbonden",offspring:"kind",descendant:"nakomeling",childOf:"kind",parentOf:"ouder"}},xe={usesPluralS:!1,recensedChildren:e=>e===1?"1 kind vermeld":`${e} kinderen vermeld`,otherUnions:e=>e===1?"1 andere verbintenis in de stamboom":`${e} andere verbintenissen in de stamboom`},U=["in "],K=X({unknownDate:"Onbekende datum",onUnknown:"op een onbekende datum",inYear:e=>`in ${e}`,beforeYear:e=>`v\xF3\xF3r ${e}`,afterYear:e=>`na ${e}`,aboutYear:e=>`circa ${e}`,onFullDate:e=>`op ${e}`,lifeRange:(e,n)=>`Van ${e} tot ${n}`,seesDayInYear:e=>`werd geboren in ${e}`,seesDayOnPhrase:e=>`werd geboren ${e}`,seesDayOnFullDate:e=>`werd geboren op ${e}`}),ge=q(K,{countryPrefixes:U,countryPhrase:e=>`in ${e}`,locationPhrase:e=>I(e,U," in "),lifeRangeSame:e=>_(e,U," in "),lifeRangeFromTo:(e,n)=>`, van ${e} tot ${n}`,lifeRangeSingle:e=>_(e,U," in ")}),Fe={listConjunction:"en",defaultAncestor:"Een voorouder",parentsSingle:(e,n)=>[`kind van ${e}`,`${n.childOf} van ${e}`,`${n.descendant} van ${e}`],parentsMultiple:(e,n)=>[`${n.offspring} van ${e}`,`${n.descendant} van ${e}`,`kind van ${e}`],unionWithMarriage:(e,n)=>[`trouwt met ${e}${n}`,`verenigt zich met ${e}${n}`,`huwelijk met ${e}${n}`],unionWithoutMarriage:(e,n)=>[`${n.linked} aan ${e}`,`deelt het leven met ${e}`,`unie vermeld met ${e}`],unionOneChild:(e,n)=>[`waaronder ${e}`,`met kind ${e}`,`${n.parentOf} van ${e}`],unionManyChildren:(e,n)=>[`waaronder de kinderen ${e}`,`met nakomelingen ${e}`,`${n.parentOf} van ${e}`],lifeBornAndDied:(e,n,r,a,c,L,g,y,R,$)=>[`${e}, ${n.born} ${r}${a}, overleed ${c}${L}`,`${g}${y}, ${e} markeert deze lijn`,`${e} ${R}${$} en overleed ${c}${L}`],lifeBirthOnly:(e,n,r,a,c)=>[`${e}, ${n.born} ${r}${a}`,`Geboorte van ${e} ${r}${a}`,`${e} ${c}${a}`],lifeDeathOnly:(e,n,r,a)=>[`${e}, ${n.died} ${r}${a}`,`Overlijden van ${e} ${r}${a}`,`${e} overleed ${r}${a}`],lifeApproxDates:(e,n,r)=>[`${e}, ${n.present} in de registers rond ${r}`,`${e} wordt rond ${r} geplaatst`,`${e} (${r})`],eventMarriage:(e,n)=>[`huwelijk gevierd ${e}${n}`,`unie geregistreerd ${e}${n}`,`bruiloft ${e}${n}`,`verenigt${e}${n}`],eventDivorce:(e,n)=>`echtscheiding geregistreerd ${e}${n}`,eventBaptism:(e,n,r)=>[`doop ${e}${n}`,`${r.baptized} ${e}${n}`,`doopritueel ${e}${n}`],eventBurial:(e,n)=>[`begrafenis ${e}${n}`,`uitvaart ${e}${n}`,`begraven ${e}${n}`],eventCremation:(e,n)=>`crematie geregistreerd ${e}${n}`,eventOccupation:(e,n)=>`beroep vermeld (${e})${n}`,chapterGen1:(e,n)=>[`Startpunt van het verhaal: ${e} figuur${n} aan de wortel van de stamboom.`,`Hier begint de lijn, met ${e} referentiepersoon${n}.`],chapterGenN:(e,n,r,a)=>[`In generatie ${e} komen ${n} voorouder${r} in beeld.`,`Deze generatie telt ${n} persoon${r}${a?` (${a})`:""}.`,`${n} leven${r} kruisen elkaar in deze generatie${a?`, tussen ${a}`:""}.`],chapterLetter:(e,n,r,a,c)=>[`${e}: ${n} portret${r} te ontdekken.`,`${n} persoon${r} voor letter ${a}${c?` (${c})`:""}.`],familyCouple:(e,n,r,a)=>[`${e} en ${n}`,`Het paar ${e} \u2013 ${n}`,`${r} en ${a}`],familyUnionWithMarriage:e=>[`verenigen zich${e}`,`trouwen${e}`,`vieren hun unie${e}`],familyUnionWithoutMarriage:["vormen een unie","zijn verenigd in de registers","verschijnen als echtgenoten"],familyNoDescendants:"zonder nakomelingen vermeld in het bestand",familyOneChild:e=>[`met kind ${e}`,`krijgen ${e}`,`hebben een kind, ${e}`],familyNChildren:(e,n)=>`${e} kinderen: ${n}`,familyDescendantsList:e=>`nakomelingen: ${e}`,familyLoneFigure:(e,n)=>[`${e} neemt een centrale plaats in deze lijn`,`${n}, een leidende figuur in dit hoofdstuk`],familyMarriageNoted:e=>[`huwelijk vermeld${e}`,`unie genoteerd${e}`],familyDescendantsNoted:e=>[`nakomelingen: ${e}`],familyDescendantsRecensed:(e,n)=>`${e}: ${n}`,personBranchPresent:(e,n)=>[`${e}, ${n.present} in deze tak`,`${e} verschijnt in dit hoofdstuk`],personFewRecords:e=>`${e}: weinig akten tot nu toe`,personResearchHint:"verder onderzoek kan dit portret aanvullen",personPortraitIncomplete:e=>`${e} \u2014 portret nog aan te vullen uit de archieven.`,personUnionSection:e=>[e,`Familiekant: ${e}`,`Aan de huwelijkse kant: ${e}`],personResearchNote:e=>[`Onderzoeksnotitie: ${e}`,`De archieven vermelden: ${e}`,`Opmerkelijk: ${e}`]},we=ce("nl",Fe,{dateModule:K,placeModule:ge,unknownDates:de.unknownDates}),Ue={messages:de,genderWords:Te,genderPhrases:xe,dateModule:K,placeModule:ge,narrativeModule:we},Ge=Ue});je();