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 me=Object.getOwnPropertyDescriptor;var fe=Object.getOwnPropertyNames;var he=Object.prototype.hasOwnProperty;var D=(e,t)=>()=>(e&&(t=e(e=0)),t);var Be=(e,t)=>{for(var a in t)w(e,a,{get:t[a],enumerable:!0})},$e=(e,t,a,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let c of fe(t))!he.call(e,c)&&c!==a&&w(e,c,{get:()=>t[c],enumerable:!(r=me(t,c))||r.enumerable});return e};var Le=e=>$e(w({},"__esModule",{value:!0}),e);var _=D(()=>{});function X(e){function t(L){let p=L.trim();return!p||p===e.unknownDate?!1:Y.test(p)||q.test(p)}function a(L){let p=L.trim();if(!p||p===e.unknownDate)return e.onUnknown;if(Y.test(p))return e.inYear(p);let k=q.exec(p);if(k){let E=k[1].toLowerCase(),b=k[2];switch(E){case"bef":return e.beforeYear(b);case"aft":return e.afterYear(b);case"vers":case"circa":case"environ":case"about":case"abt":case"est":case"cal":return e.aboutYear(b);default:return e.inYear(b)}}return e.onFullDate(p)}function r(L,p){let k=L.trim(),E=p.trim();return e.lifeRange(k,E,t(k))}function c(L){let p=L.trim();return Y.test(p)?e.seesDayInYear(p):t(p)?e.seesDayOnPhrase(a(p)):e.seesDayOnFullDate(p)}return{BOOKLET_UNKNOWN_DATE:e.unknownDate,isYearOnlyDate:t,onDate:a,lifeDateRange:r,seesDayOn:c}}var Y,q,j=D(()=>{Y=/^\d{3,4}$/,q=/^(vers|circa|environ|about|ABT|BEF|AFT|EST|CAL|INT|FROM|TO)\s+(\d{3,4})$/i});function ke(e){return e.normalize("NFD").replace(/\p{M}/gu,"").toLowerCase()}function be(e){return ye.has(ke(e))}function Q(e,t){function a(B){let s=B.trim();if(!s)return null;let f=s.indexOf(", ");return f>=0?{city:s.slice(0,f).trim(),country:s.slice(f+2).trim(),raw:s}:be(s)?{city:null,country:s,raw:s}:{city:s,country:null,raw:s}}function r(B){let s=a(B);return s?s.city&&s.country?`${s.city}, ${t.countryPhrase(s.country)}`:s.city?s.city:s.country?t.countryPhrase(s.country):s.raw:""}function c(B,s){let f=r(s);if(!f)return"";let $=t.locationPhrase(f);return e.isYearOnlyDate(B)?`,${$}`:$}function L(B){let s=r(B);return s?t.locationPhrase(s):""}function p(B,s,f,$){let A=s.trim(),N=$.trim();return A&&A===N?{birth:"",death:c(f,N)}:{birth:c(B,A),death:c(f,N)}}function k(B,s){let f=r(B),$=r(s);if(!f&&!$)return"";if(f&&$&&f===$)return t.lifeRangeSame(f);if(f&&$)return t.lifeRangeFromTo(f,$);let A=f||$;return t.lifeRangeSingle(A)}function E(B,s){let f=e.onDate(B),$=s.trim();return f===e.onDate("")&&!$?null:$?f===e.onDate("")?L($).trim()||null:`${f}${c(B,$)}`:f}function b(B){let s=B?.trim();return!s||s===e.onDate("")?"":` ${s}`}return{parsePlaceLabel:a,placeCore:r,afterDateLocation:c,atLocation:L,birthDeathLocationPhrases:p,lifeRangeLocation:k,marriageWhenWhere:E,embedMarriageWhenWhere:b}}var ye,J=D(()=>{ye=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 v(e,t){let a=e.toLowerCase();return t.some(r=>a.startsWith(r.toLowerCase()))}var Z=D(()=>{});function Ce(e){return e!=null&&De.includes(e)}function P(e){return Ce(e)?e:"en"}var De,T=D(()=>{De=["en","fr","de","nl","es","zh","it","pt","pl","ar","he"]});function Re(){let e=globalThis;return e[x]??(e[x]=new Map),e[x]}function M(e){let t=Re().get(e);if(!t)throw new H(e);return t}var x,H,F=D(()=>{T();x="__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 Ee(e){return M(e).genderWords}function S(e,t){return Ee(P(t))[e]}function I(e,t){let a=P(t);if(a==="en")return"";if(a==="fr")return e>1?"s":"";let r=M(a).genderPhrases;return r&&!r.usesPluralS?"":e>1?"s":""}function ee(e,t){if(e<=0)return"";let a=P(t),r=M(a).genderPhrases?.recensedChildren(e);return r||(a==="en"?e===1?"1 child listed":`${e} children listed`:e===1?"1 enfant recens\xE9":`${e} enfants recens\xE9s`)}function te(e,t){if(e<=0)return"";let a=P(t),r=M(a).genderPhrases?.otherUnions(e);return r||(a==="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 oe=D(()=>{T();F()});function ne(e){let t=P(e);return M(t).messages}var re=D(()=>{T();F();F()});function U(e,t=6,a){let r=ne(a);if(e.length===0)return r.childrenNone;let c=e.map(L=>L.name);return c.length<=t?c.join(", "):`${c.slice(0,t).join(", ")} ${r.childrenMore(c.length-t)}`}var ae=D(()=>{T();re()});function le(e){return e.map(t=>t.trim()).filter(Boolean).map(t=>t.endsWith(".")?t:`${t}.`).join(" ")}function C(e){let t=e.map(r=>r.trim()).filter(Boolean);return t.length===0?"":`${t.map(r=>r.endsWith(".")?r.slice(0,-1):r).join(" ; ")}.`}function z(e){return e.trim().split(/\s+/)[0]??e}function m(e,t){return e[Math.abs(t)%e.length]}function K(e,t){switch(e.length){case 0:return"";case 1:return e[0];case 2:return`${e[0]} ${t} ${e[1]}`;default:return`${e.slice(0,-1).join(", ")} ${t} ${e.at(-1)}`}}function Me(e){let t=e.key.match(/^gen-(\d+)$/);return t?{genNum:Number(t[1]),letter:null}:{genNum:0,letter:e.key.match(/^letter-(.+)$/)?.[1]??null}}function Se(e){return e.includes("\u2014")?e.split("\u2014").pop()?.trim()??"":""}function ie(e,t,a){let r=a.dateModule,c=a.placeModule,L=a.unknownDates;function p(o){return o!==L&&o!=="Dates inconnues"}function k(o,i){if(o.parents.length===0)return null;let n=S(o.sex,e),l=o.parents.map(d=>d.name);return l.length===1?m(t.parentsSingle(l[0],n),i+3):m(t.parentsMultiple(K(l,t.listConjunction),n),i+3)}function E(o,i){if(i.marriageLabel)return i.marriageLabel;let n=o.events.find(l=>l.kind===String("MARR"));return n?c.marriageWhenWhere(n.date,n.place):null}function b(o,i,n){let l=S(o.sex,e),d=i.coParent.name,u=[],g=c.embedMarriageWhenWhere(E(o,i));if(g?u.push(m(t.unionWithMarriage(d,g),n+7)):u.push(m(t.unionWithoutMarriage(d,l),n+7)),i.children.length>0){let h=i.children.map(y=>z(y.name));h.length===1?u.push(m(t.unionOneChild(h[0],l),n+11)):u.push(m(t.unionManyChildren(K(h,t.listConjunction),l),n+11))}return C(u)}function B(o,i){let n=o.events.find(g=>g.kind===String("BIRT")),l=o.events.find(g=>g.kind===String("DEAT")),d=o.name,u=S(o.sex,e);if(n&&l){let g=r.onDate(n.date),h=r.onDate(l.date),y=c.birthDeathLocationPhrases(n.date,n.place,l.date,l.place),R=c.lifeRangeLocation(n.place,l.place),O=y.birth||c.afterDateLocation(n.date,n.place);return m(t.lifeBornAndDied(d,u,g,y.birth,h,y.death,r.lifeDateRange(n.date,l.date),R,r.seesDayOn(n.date),O),i)}if(n){let g=r.onDate(n.date),h=c.afterDateLocation(n.date,n.place);return m(t.lifeBirthOnly(d,u,g,h,r.seesDayOn(n.date)),i)}if(l){let g=r.onDate(l.date),h=c.afterDateLocation(l.date,l.place);return m(t.lifeDeathOnly(d,u,g,h),i+1)}return p(o.datesLabel)?m(t.lifeApproxDates(d,u,o.datesLabel),i+2):null}function s(o,i,n){let l=r.onDate(o.date),d=c.afterDateLocation(o.date,o.place),u=S(n,e);switch(o.kind){case"MARR":return m(t.eventMarriage(l,d),i);case"DIV":return t.eventDivorce(l,d);case"BAPM":case"CHR":return m(t.eventBaptism(l,d,u),i);case"BURI":return m(t.eventBurial(l,d),i);case"CREM":return t.eventCremation(l,d);case"OCCU":return t.eventOccupation(o.date,c.atLocation(o.place));default:return`${o.label.toLowerCase()} ${l}${d}`}}let f=new Set([String("BIRT"),String("DEAT"),String("MARR")]);function $(o,i){let n=[],l=0;for(let d of o.events){if(f.has(d.kind))continue;let u=s(d,i+l,o.sex);u&&n.push(u),l+=1}return n}function A(o){let i=o.entries.length,n=Se(o.subtitle),{genNum:l,letter:d}=Me(o),u=I(i,e);if(l>0){let h=l===1?t.chapterGen1(i,u):t.chapterGenN(l,i,u,n);return m(h,l)}let g=d??o.title;return m(t.chapterLetter(o.title,i,u,g,n),i)}function N(o,i){let n=o.familyId,l=o.partners[0]?.name??t.defaultAncestor,d=o.partners[1]?.name,u=o.children,g;if(d){let h=m(t.familyCouple(z(l),z(d),l,d),n),y=c.embedMarriageWhenWhere(o.marriageLabel),R=m(y?t.familyUnionWithMarriage(y):t.familyUnionWithoutMarriage,n+1);if(u.length===0)g=C([`${h} ${R}`,t.familyNoDescendants]);else if(u.length===1)g=C([`${h} ${R}`,m(t.familyOneChild(u[0].name),n+2)]);else if(i==="summary")g=C([`${h} ${R}`,t.familyNChildren(u.length,U(u,5,e))]);else{let O=u.map(W=>{let ge=p(W.datesLabel)?` (${W.datesLabel})`:"";return`${W.name}${ge}`});g=C([`${h} ${R}`,t.familyDescendantsList(K(O,t.listConjunction))])}}else g=le([m(t.familyLoneFigure(z(l),l),n),o.marriageLabel?m(t.familyMarriageNoted(c.embedMarriageWhenWhere(o.marriageLabel)),n+1):"",u.length>0?m([...t.familyDescendantsNoted(U(u,5,e)),t.familyDescendantsRecensed(ee(u.length,e),U(u,5,e))],n+2):""]);return[g]}function de(o){let i=o.indi,n=[],l=B(o,i);if(l)n.push(l);else{let g=S(o.sex,e);n.push(m(t.personBranchPresent(o.name,g),i))}let d=k(o,i);d&&n.push(d),o.unions[0]&&(n.push(b(o,o.unions[0],i)),o.unions.length>1&&n.push(te(o.unions.length-1,e)));let u=$(o,i);return u.length>0&&n.push(C(u.slice(0,2))),o.sosa!=null&&n.length>0&&n.push(`SOSA ${o.sosa}`),n.length<=1&&o.events.length===0&&o.unions.length===0?le([t.personFewRecords(o.name),t.personResearchHint]):C(n)}function pe(o){let i=o.indi,n=[],l=[],d=B(o,i);d&&l.push(d);let u=k(o,i);u&&l.push(u);let g=$(o,i);if(g.length>0&&l.push(C(g)),l.length>0?n.push(C(l)):n.push(t.personPortraitIncomplete(o.name)),o.unions.length>0){let h=o.unions.map((y,R)=>b(o,y,i+20+R));n.push(m(t.personUnionSection(C(h)),i+5))}else{let h=o.events.filter(y=>y.kind===String("MARR"));if(h.length>0){let y=h.map((R,O)=>s(R,i+30+O,o.sex));n.push(C(y))}}return o.notesPreview&&n.push(m(t.personResearchNote(o.notesPreview),i+9)),n}return{buildChapterIntroNarrative:A,buildFamilyNarrative:N,buildPersonSummaryNarrative:de,buildPersonDetailedNarratives:pe}}var se=D(()=>{_();oe();ae()});var ze={};Be(ze,{default:()=>Ue});module.exports=Le(ze);var Ne,ce,Oe,Te,G,V,ue,ve,xe,Fe,Ue,Ge=D(()=>{_();j();J();Z();se();Ne={BIRT:"Nascita",DEAT:"Decesso",MARR:"Matrimonio",DIV:"Divorzio",BAPM:"Battesimo (BAPM)",CHR:"Battesimo",BURI:"Sepoltura",CREM:"Cremazione",EVEN:"Evento",OCCU:"Professione"},ce={unknownDates:"Date sconosciute",unknownDate:"Data sconosciuta",chapterUnknownDates:"Date sconosciute",generation1Title:"Generazione 1 \u2014 persona di riferimento",generationTitle:e=>`Generazione ${e}`,letterTitle:e=>`Lettera ${e}`,chapterSubtitle:(e,t)=>`${e} persona/e \u2014 ${t}`,chapterDateAbout:"circa",childrenNone:"nessun figlio elencato",childrenMore:e=>`(+ altri ${e})`,pagesEstimate:e=>`~${e} pagine`,pagesEmpty:"\u2014",adviceDetailed120:"Con pi\xF9 di 120 persone, la modalit\xE0 Riassunto produce un documento molto pi\xF9 leggibile e si genera pi\xF9 rapidamente.",adviceDetailed50:"Oltre 50 persone, la modalit\xE0 Riassunto resta consigliata per una prima lettura.",adviceSummary25:"Poche persone: la modalit\xE0 Dettagliata offre una bella scheda per pagina, ideale per la stampa.",actTypeLabels:Ne,spouseUnknown:"Coniuge non registrato",timelineTitle:e=>`Cronologia \u2014 ${e}`,timelineUnknownDates:"date sconosciute",pdf:{coverSubtitle:"Storia familiare dal tuo file GEDCOM",referencePerson:e=>`Persona di riferimento (SOSA 1): ${e}`,personCount:e=>`${e} persona/e in questo libretto`,localNote:"Documento generato localmente nel tuo browser.",tocTitle:"Indice",modeSummary:"Modalit\xE0 riassunto - racconti brevi",modeDetailed:"Modalit\xE0 dettagliata - biografie ampliate",contentHeading:"Contenuto del libretto",introSummary:"Questo libretto racconta il tuo albero in prosa: nascite, unioni, discendenza e decessi ricostruiti dal GEDCOM. Ogni capitolo si apre su una generazione o una lettera, poi svela le vite in brevi racconti.",introDetailed:"Questo libretto sviluppa ogni figura come biografia narrativa, in sequenza in ogni capitolo. Ogni nuova generazione inizia su una pagina dedicata.",introSosa:"I numeri SOSA sono menzionati quando la numerazione \xE8 attiva. Indice alla fine del documento.",familyHeading:e=>`La famiglia ${e}`,generationLabel:e=>`generazione ${e}`,pageFooter:e=>`Pagina ${e}`},timeline:{legendBirth:"nascita",legendDeath:"decesso",legendMarriage:"matrimonio",overflow:e=>`+ altri ${e} nelle pagine seguenti`,continuation:"(cronologia continuata)"}},Oe={F:{born:"nata",died:"morta",baptized:"battezzata",present:"presente",linked:"unita",offspring:"figlia",descendant:"discendente",childOf:"figlia",parentOf:"madre"},M:{born:"nato",died:"morto",baptized:"battezzato",present:"presente",linked:"unito",offspring:"figlio",descendant:"discendente",childOf:"figlio",parentOf:"padre"},U:{born:"nato/a",died:"morto/a",baptized:"battezzato/a",present:"presente",linked:"unito/a",offspring:"figlio/a",descendant:"discendente",childOf:"figlio/a",parentOf:"genitore"},X:{born:"nato/a",died:"morto/a",baptized:"battezzato/a",present:"presente",linked:"unito/a",offspring:"figlio/a",descendant:"discendente",childOf:"figlio/a",parentOf:"genitore"}},Te={usesPluralS:!1,recensedChildren:e=>e===1?"1 figlio/a censito/a":`${e} figli censiti`,otherUnions:e=>e===1?"1 altra unione citata nell'albero":`${e} altre unioni citate nell'albero`},G=["in "],V=X({unknownDate:"Data sconosciuta",onUnknown:"in data sconosciuta",inYear:e=>`nel ${e}`,beforeYear:e=>`prima del ${e}`,afterYear:e=>`dopo il ${e}`,aboutYear:e=>`verso il ${e}`,onFullDate:e=>`il ${e}`,lifeRange:(e,t)=>`Dal ${e} al ${t}`,seesDayInYear:e=>`nasce nel ${e}`,seesDayOnPhrase:e=>`nasce ${e}`,seesDayOnFullDate:e=>`nasce il ${e}`}),ue=Q(V,{countryPrefixes:G,countryPhrase:e=>`in ${e}`,locationPhrase:e=>v(e,G)?` ${e}`:` a ${e}`,lifeRangeSame:e=>v(e,G)?`, ${e}`:`, a ${e}`,lifeRangeFromTo:(e,t)=>`, da ${e} a ${t}`,lifeRangeSingle:e=>v(e,G)?`, ${e}`:`, a ${e}`}),ve={listConjunction:"e",defaultAncestor:"Un antenato",parentsSingle:(e,t)=>[`figlio/a di ${e}`,`${t.childOf} di ${e}`,`${t.descendant} di ${e}`],parentsMultiple:(e,t)=>[`${t.offspring} di ${e}`,`${t.descendant} di ${e}`,`figlio/a di ${e}`],unionWithMarriage:(e,t)=>[`sposa ${e}${t}`,`si unisce a ${e}${t}`,`matrimonio con ${e}${t}`],unionWithoutMarriage:(e,t)=>[`${t.linked} a ${e}`,`condivide la vita con ${e}`,`unione registrata con ${e}`],unionOneChild:(e,t)=>[`tra cui ${e}`,`con figlio/a ${e}`,`${t.parentOf} di ${e}`],unionManyChildren:(e,t)=>[`tra cui i figli ${e}`,`con discendenza ${e}`,`${t.parentOf} di ${e}`],lifeBornAndDied:(e,t,a,r,c,L,p,k,E,b)=>[`${e}, ${t.born} ${a}${r}, scompare ${c}${L}`,`${p}${k}, ${e} segna questo lignaggio`,`${e} ${E}${b} e scompare ${c}${L}`],lifeBirthOnly:(e,t,a,r,c)=>[`${e}, ${t.born} ${a}${r}`,`Nascita di ${e} ${a}${r}`,`${e} ${c}${r}`],lifeDeathOnly:(e,t,a,r)=>[`${e}, ${t.died} ${a}${r}`,`Morte di ${e} ${a}${r}`,`${e} scompare ${a}${r}`],lifeApproxDates:(e,t,a)=>[`${e}, ${t.present} nei registri intorno al ${a}`,`Si colloca ${e} intorno al ${a}`,`${e} (${a})`],eventMarriage:(e,t)=>[`matrimonio celebrato ${e}${t}`,`unione registrata ${e}${t}`,`nozze celebrate ${e}${t}`,`si unisce${e}${t}`],eventDivorce:(e,t)=>`divorzio registrato ${e}${t}`,eventBaptism:(e,t,a)=>[`battesimo ${e}${t}`,`${a.baptized} ${e}${t}`,`rito battesimale ${e}${t}`],eventBurial:(e,t)=>[`sepoltura ${e}${t}`,`funerali ${e}${t}`,`inumazione ${e}${t}`],eventCremation:(e,t)=>`cremazione registrata ${e}${t}`,eventOccupation:(e,t)=>`professione annotata (${e})${t}`,chapterGen1:(e,t)=>[`Punto di partenza del racconto: ${e} figur${e>1?"e":"a"} alla radice dell'albero.`,`Qui inizia la linea, con ${e} person${e>1?"e":"a"} di riferimento.`],chapterGenN:(e,t,a,r)=>[`Nella generazione ${e}, ${t} antenat${t>1?"i":"o"} entrano in scena.`,`Questa generazione comprende ${t} person${t>1?"e":"a"}${r?` (${r})`:""}.`,`${t} destini si incrociano in questa generazione${r?`, tra ${r}`:""}.`],chapterLetter:(e,t,a,r,c)=>[`${e}: ${t} ritratt${t>1?"i":"o"} da scoprire.`,`${t} person${t>1?"e":"a"} per la lettera ${r}${c?` (${c})`:""}.`],familyCouple:(e,t,a,r)=>[`${e} e ${t}`,`La coppia ${e} \u2013 ${t}`,`${a} e ${r}`],familyUnionWithMarriage:e=>[`si uniscono${e}`,`si sposano${e}`,`celebrano la loro unione${e}`],familyUnionWithoutMarriage:["formano un'unione","sono uniti nei registri","appaiono come coniugi"],familyNoDescendants:"senza discendenza registrata nel file",familyOneChild:e=>[`con figlio/a ${e}`,`danno alla luce ${e}`,`hanno un figlio/a, ${e}`],familyNChildren:(e,t)=>`${e} figli: ${t}`,familyDescendantsList:e=>`discendenza: ${e}`,familyLoneFigure:(e,t)=>[`${e} occupa un posto centrale in questo lignaggio`,`${t}, figura di riferimento in questo capitolo`],familyMarriageNoted:e=>[`matrimonio registrato${e}`,`unione annotata${e}`],familyDescendantsNoted:e=>[`discendenza: ${e}`],familyDescendantsRecensed:(e,t)=>`${e}: ${t}`,personBranchPresent:(e,t)=>[`${e}, ${t.present} in questo ramo`,`${e} compare in questo capitolo`],personFewRecords:e=>`${e}: pochi atti per ora`,personResearchHint:"ulteriori ricerche potranno completare questo ritratto",personPortraitIncomplete:e=>`${e} \u2014 ritratto ancora da completare negli archivi.`,personUnionSection:e=>[e,`Lato famiglia: ${e}`,`Sul versante coniugale: ${e}`],personResearchNote:e=>[`Nota di ricerca: ${e}`,`Gli archivi precisano: ${e}`,`Da ricordare: ${e}`]},xe=ie("it",ve,{dateModule:V,placeModule:ue,unknownDates:ce.unknownDates}),Fe={messages:ce,genderWords:Oe,genderPhrases:Te,dateModule:V,placeModule:ue,narrativeModule:xe},Ue=Fe});Ge();