@treeviz/gedcom-parser 2.1.11 → 2.1.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/dist/classes/index.js +704 -380
  2. package/dist/cli/index.js +704 -380
  3. package/dist/constants/index.js +703 -379
  4. package/dist/factories/index.js +703 -379
  5. package/dist/index.js +704 -380
  6. package/dist/kinship-translator/index.js +703 -379
  7. package/dist/kinship-translator/kinship-translator.de.d.ts +2 -3
  8. package/dist/kinship-translator/kinship-translator.de.d.ts.map +1 -1
  9. package/dist/kinship-translator/kinship-translator.en.d.ts.map +1 -1
  10. package/dist/kinship-translator/kinship-translator.es.d.ts +2 -3
  11. package/dist/kinship-translator/kinship-translator.es.d.ts.map +1 -1
  12. package/dist/kinship-translator/kinship-translator.fr.d.ts +2 -3
  13. package/dist/kinship-translator/kinship-translator.fr.d.ts.map +1 -1
  14. package/dist/kinship-translator/kinship-translator.hu.d.ts.map +1 -1
  15. package/dist/kinship-translator/kinship-translator.ja.d.ts.map +1 -1
  16. package/dist/kinship-translator/kinship-translator.ru.d.ts +1 -1
  17. package/dist/kinship-translator/kinship-translator.ru.d.ts.map +1 -1
  18. package/dist/kinship-translator/kinship-translator.zh.d.ts.map +1 -1
  19. package/dist/kinship-translator/patterns.de.d.ts +1 -0
  20. package/dist/kinship-translator/patterns.de.d.ts.map +1 -1
  21. package/dist/kinship-translator/patterns.es.d.ts +1 -0
  22. package/dist/kinship-translator/patterns.es.d.ts.map +1 -1
  23. package/dist/kinship-translator/patterns.fr.d.ts +1 -0
  24. package/dist/kinship-translator/patterns.fr.d.ts.map +1 -1
  25. package/dist/kinship-translator/patterns.hu.d.ts.map +1 -1
  26. package/dist/kinship-translator/patterns.ru.d.ts +1 -0
  27. package/dist/kinship-translator/patterns.ru.d.ts.map +1 -1
  28. package/dist/kinship-translator/patterns.zh.d.ts.map +1 -1
  29. package/dist/utils/index.js +704 -380
  30. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -6319,7 +6319,7 @@ var KinshipTranslatorHU = class extends KinshipTranslatorBasic {
6319
6319
  }
6320
6320
  return `${hungarianOrdinalize(
6321
6321
  degree
6322
- )}unokatestv\xE9r ${level}x elt\xE1vol\xEDtva`;
6322
+ )}unokatestv\xE9r ${Math.abs(level)}x elt\xE1vol\xEDtva`;
6323
6323
  }
6324
6324
  auncle() {
6325
6325
  const level = this.pathN?.level ?? 0;
@@ -6363,14 +6363,25 @@ var KinshipTranslatorHU = class extends KinshipTranslatorBasic {
6363
6363
  return `${ordinalized ? `${ordinalized}unoka` : ""}testv\xE9r ${origPrefix.replace(/nagy$/, "")}unok\xE1ja`;
6364
6364
  }
6365
6365
  parent() {
6366
+ const level = Math.abs(this.pathN?.level ?? 0);
6367
+ if (level <= 1) {
6368
+ if (this.personN?.isMale()) {
6369
+ return "apa";
6370
+ }
6371
+ if (this.personN?.isFemale()) {
6372
+ return "anya";
6373
+ }
6374
+ return "sz\xFCl\u0151";
6375
+ }
6366
6376
  const prefix = this.directPrefix();
6377
+ const gen = prefix === "nagy" ? "" : prefix;
6367
6378
  if (this.personN?.isMale()) {
6368
- return `${prefix}apa`;
6379
+ return `${gen}nagyapa`;
6369
6380
  }
6370
6381
  if (this.personN?.isFemale()) {
6371
- return `${prefix}anya`;
6382
+ return `${gen}nagyanya`;
6372
6383
  }
6373
- return `${prefix}sz\xFCl\u0151`;
6384
+ return `${gen}nagysz\xFCl\u0151`;
6374
6385
  }
6375
6386
  child() {
6376
6387
  const level = Math.abs(this.pathN?.level ?? 0);
@@ -6564,27 +6575,30 @@ var KinshipTranslatorEn = class extends KinshipTranslatorBasic {
6564
6575
  if (!degree) {
6565
6576
  return level < 0 ? this.nibling() : this.auncle();
6566
6577
  }
6567
- return `${ordinalize(degree)} cousin ${level}x removed`;
6578
+ return `${ordinalize(degree)} cousin ${Math.abs(level)}x removed`;
6568
6579
  }
6569
6580
  auncle() {
6570
- const prefix = this.directPrefix();
6581
+ const level = Math.abs(this.pathN?.level ?? 0);
6582
+ const greats = level <= 1 ? "" : "great-".repeat(level - 1);
6571
6583
  if (this.personN?.isMale()) {
6572
- return `${prefix}uncle`;
6584
+ return `${greats}uncle`;
6573
6585
  }
6574
6586
  if (this.personN?.isFemale()) {
6575
- return `${prefix}aunt`;
6587
+ return `${greats}aunt`;
6576
6588
  }
6577
- return `${prefix}auncle`;
6589
+ return greats ? `${greats}uncle/${greats}aunt` : "uncle/aunt";
6578
6590
  }
6579
6591
  nibling() {
6580
- const prefix = this.directPrefix();
6592
+ const level = Math.abs(this.pathN?.level ?? 0);
6593
+ const greats = level <= 2 ? "" : "great-".repeat(level - 2);
6594
+ const grand = level <= 1 ? "" : "grand";
6581
6595
  if (this.personN?.isMale()) {
6582
- return `${prefix}nephew`;
6596
+ return `${greats}${grand}nephew`;
6583
6597
  }
6584
6598
  if (this.personN?.isFemale()) {
6585
- return `${prefix}niece`;
6599
+ return `${greats}${grand}niece`;
6586
6600
  }
6587
- return `${prefix}nibling`;
6601
+ return greats || grand ? `${greats}${grand}nephew/${greats}${grand}niece` : "nephew/niece";
6588
6602
  }
6589
6603
  parent() {
6590
6604
  const prefix = this.directPrefix();
@@ -6712,45 +6726,64 @@ var KinshipTranslatorEn = class extends KinshipTranslatorBasic {
6712
6726
  };
6713
6727
 
6714
6728
  // src/kinship-translator/patterns.de.ts
6729
+ var parentRelationsDe = {
6730
+ step: "Stief",
6731
+ foster: "Pflege",
6732
+ adopted: "Adoptiv"
6733
+ };
6715
6734
  var InLawsDe = {
6716
- "Ehepartner von (kind|tochter|sohn)": "Schwiegerkind",
6717
- "Ehefrau von (kind|tochter|sohn)": "Schwiegertochter",
6718
- "Ehemann von (kind|tochter|sohn)": "Schwiegersohn",
6719
- "mutter des (Ehepartner|Ehefrau|Ehemann)s": "Schwiegermutter",
6720
- "vater des (Ehepartner|Ehefrau|Ehemann)s": "Schwiegervater",
6721
- "elternteil des (Ehepartner|Ehefrau|Ehemann)s": "Schwiegerelternteil",
6722
- "Ehefrau von (Halb)?(geschwister|schwester|bruder)": "Schw\xE4gerin",
6723
- "Ehemann von (Halb)?(geschwister|schwester|bruder)": "Schwager",
6724
- "Ehepartner von (Halb)?(geschwister|schwester|bruder)": "Schwager/Schw\xE4gerin",
6725
- "(Halb)?schwester des (Ehepartner|Ehefrau|Ehemann)s": "Schw\xE4gerin",
6726
- "(Halb)?bruder des (Ehepartner|Ehefrau|Ehemann)s": "Schwager",
6727
- "(Halb)?geschwister des (Ehepartner|Ehefrau|Ehemann)s": "Schwager/Schw\xE4gerin"
6735
+ "Ehepartner von (Kind|Tochter|Sohn)": "Schwiegerkind",
6736
+ "Ehefrau von (Kind|Tochter|Sohn)": "Schwiegertochter",
6737
+ "Ehemann von (Kind|Tochter|Sohn)": "Schwiegersohn",
6738
+ "Mutter (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwiegermutter",
6739
+ "Vater (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwiegervater",
6740
+ "Elternteil (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwiegerelternteil",
6741
+ "Ehefrau von (Halb)?-?(Geschwister|Schwester|Bruder)": "Schw\xE4gerin",
6742
+ "Ehemann von (Halb)?-?(Geschwister|Schwester|Bruder)": "Schwager",
6743
+ "Ehepartner von (Halb)?-?(Geschwister|Schwester|Bruder)": "Schwager/Schw\xE4gerin",
6744
+ "(Halb)?-?(Schwester|schwester) (des Ehepartners|des Ehemanns|der Ehefrau)": "Schw\xE4gerin",
6745
+ "(Halb)?-?(Bruder|bruder) (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwager",
6746
+ "(Halb)?-?(Geschwister|geschwister) (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwager/Schw\xE4gerin"
6728
6747
  };
6729
6748
 
6730
6749
  // src/kinship-translator/kinship-translator.de.ts
6731
- var KinshipTranslatorDe = class extends KinshipTranslatorBasic {
6732
- directPrefix() {
6733
- const level = Math.abs(this.pathN?.level ?? 0);
6734
- if (level <= 1) {
6735
- return "";
6736
- }
6737
- if (level === 2) {
6738
- return "Gro\xDF";
6739
- }
6740
- if (level === 3) {
6741
- return "Urgro\xDF";
6742
- }
6743
- return `Ur${level - 2}-gro\xDF`;
6750
+ var sexOf = (person) => {
6751
+ if (person?.isMale?.()) {
6752
+ return "m";
6753
+ }
6754
+ if (person?.isFemale?.()) {
6755
+ return "f";
6744
6756
  }
6757
+ return "n";
6758
+ };
6759
+ var pick = (sex, male, female, neutral) => {
6760
+ if (sex === "m") {
6761
+ return male;
6762
+ }
6763
+ if (sex === "f") {
6764
+ return female;
6765
+ }
6766
+ return neutral;
6767
+ };
6768
+ var ur = (count) => count > 0 ? "Ur".repeat(count) : "";
6769
+ var genitiveArticle = (spouseType) => {
6770
+ if (spouseType === "Ehefrau") {
6771
+ return `der ${spouseType}`;
6772
+ }
6773
+ return `des ${spouseType}s`;
6774
+ };
6775
+ var KinshipTranslatorDe = class extends KinshipTranslatorBasic {
6745
6776
  indirect() {
6746
6777
  let degree = Math.abs(this.pathN?.degree ?? 0);
6747
6778
  if (degree > 0) {
6748
6779
  degree = degree - 1;
6749
6780
  }
6750
- if (degree === 1) {
6751
- return `Cousin`;
6781
+ const sex = sexOf(this.personN);
6782
+ const cousin = pick(sex, "Cousin", "Cousine", "Cousin/Cousine");
6783
+ if (degree <= 1) {
6784
+ return cousin;
6752
6785
  }
6753
- return `Cousin ${degree}. Grades`;
6786
+ return `${cousin} ${degree}. Grades`;
6754
6787
  }
6755
6788
  removal() {
6756
6789
  const level = this.pathN?.level ?? 0;
@@ -6761,101 +6794,101 @@ var KinshipTranslatorDe = class extends KinshipTranslatorBasic {
6761
6794
  if (!degree) {
6762
6795
  return level < 0 ? this.nibling() : this.auncle();
6763
6796
  }
6764
- return `Cousin ${degree}. Grades ${Math.abs(level)}\xD7 entfernt`;
6797
+ return `${this.indirect()} ${Math.abs(level)}\xD7 entfernt`;
6765
6798
  }
6766
6799
  auncle() {
6767
- const prefix = this.directPrefix();
6768
- if (this.personN?.isMale()) {
6769
- return `${prefix}onkel`;
6770
- }
6771
- if (this.personN?.isFemale()) {
6772
- return `${prefix}tante`;
6800
+ const level = Math.abs(this.pathN?.level ?? 0);
6801
+ const sex = sexOf(this.personN);
6802
+ if (level <= 1) {
6803
+ return pick(sex, "Onkel", "Tante", "Onkel/Tante");
6773
6804
  }
6774
- return `${prefix}onkel/tante`;
6805
+ const prefix = `${ur(level - 2)}Gro\xDF`;
6806
+ return pick(
6807
+ sex,
6808
+ `${prefix}onkel`,
6809
+ `${prefix}tante`,
6810
+ `${prefix}onkel/tante`
6811
+ );
6775
6812
  }
6776
6813
  nibling() {
6777
- const prefix = this.directPrefix();
6778
- if (this.personN?.isMale()) {
6779
- return `${prefix}neffe`;
6780
- }
6781
- if (this.personN?.isFemale()) {
6782
- return `${prefix}nichte`;
6814
+ const level = Math.abs(this.pathN?.level ?? 0);
6815
+ const sex = sexOf(this.personN);
6816
+ if (level <= 1) {
6817
+ return pick(sex, "Neffe", "Nichte", "Neffe/Nichte");
6783
6818
  }
6784
- return `${prefix}neffe/nichte`;
6819
+ const prefix = `${ur(level - 2)}Gro\xDF`;
6820
+ return pick(
6821
+ sex,
6822
+ `${prefix}neffe`,
6823
+ `${prefix}nichte`,
6824
+ `${prefix}neffe/nichte`
6825
+ );
6785
6826
  }
6786
6827
  parent() {
6787
- const prefix = this.directPrefix();
6788
- if (this.personN?.isMale()) {
6789
- return `${prefix}vater`;
6790
- }
6791
- if (this.personN?.isFemale()) {
6792
- return `${prefix}mutter`;
6828
+ const level = Math.abs(this.pathN?.level ?? 0);
6829
+ const sex = sexOf(this.personN);
6830
+ if (level <= 1) {
6831
+ return pick(sex, "Vater", "Mutter", "Elternteil");
6793
6832
  }
6794
- return `${prefix}elternteil`;
6833
+ const prefix = `${ur(level - 2)}Gro\xDF`;
6834
+ return pick(
6835
+ sex,
6836
+ `${prefix}vater`,
6837
+ `${prefix}mutter`,
6838
+ `${prefix}elternteil`
6839
+ );
6795
6840
  }
6796
6841
  child() {
6797
- const prefix = this.directPrefix();
6798
- if (this.personN?.isMale()) {
6799
- return `${prefix}sohn`;
6800
- }
6801
- if (this.personN?.isFemale()) {
6802
- return `${prefix}tochter`;
6842
+ const level = Math.abs(this.pathN?.level ?? 0);
6843
+ const sex = sexOf(this.personN);
6844
+ if (level <= 1) {
6845
+ return pick(sex, "Sohn", "Tochter", "Kind");
6803
6846
  }
6804
- return `${prefix}kind`;
6847
+ const prefix = ur(level - 2);
6848
+ return pick(
6849
+ sex,
6850
+ `${prefix}Enkel`,
6851
+ `${prefix}Enkelin`,
6852
+ `${prefix}Enkelkind`
6853
+ );
6805
6854
  }
6806
6855
  sibling() {
6807
- if (this.personN?.isMale()) {
6808
- return "bruder";
6809
- }
6810
- if (this.personN?.isFemale()) {
6811
- return "schwester";
6812
- }
6813
- return "geschwister";
6856
+ return pick(sexOf(this.personN), "Bruder", "Schwester", "Geschwister");
6814
6857
  }
6815
6858
  halfBlood(relation) {
6816
6859
  if (!relation || !this.isHalfBlood) {
6817
6860
  return relation ?? "";
6818
6861
  }
6819
- if (/^[A-ZÄÖÜ]/.test(relation) || /[-\s]/.test(relation)) {
6862
+ if (/[\s-]/.test(relation) || /^(Groß|Ur)/.test(relation)) {
6820
6863
  return `Halb-${relation}`;
6821
6864
  }
6822
- return `Halb${relation}`;
6865
+ return `Halb${relation.charAt(0).toLowerCase()}${relation.slice(1)}`;
6823
6866
  }
6824
6867
  spouse() {
6825
- if (this.personN?.isMale()) {
6826
- return "Ehemann";
6827
- }
6828
- if (this.personN?.isFemale()) {
6829
- return "Ehefrau";
6830
- }
6831
- return "Ehepartner";
6868
+ return pick(sexOf(this.personN), "Ehemann", "Ehefrau", "Ehepartner");
6832
6869
  }
6833
6870
  ofSpouse(relation) {
6834
6871
  if (!relation) {
6835
6872
  return "";
6836
6873
  }
6837
- const spouse = this.path?.[1].indi;
6838
- let spouseType = "Ehepartner";
6839
- if (spouse?.isMale()) {
6840
- spouseType = "Ehemann";
6841
- }
6842
- if (spouse?.isFemale()) {
6843
- spouseType = "Ehefrau";
6844
- }
6845
- return `${relation} des ${spouseType}s`;
6874
+ const spouseType = pick(
6875
+ sexOf(this.path?.[1].indi),
6876
+ "Ehemann",
6877
+ "Ehefrau",
6878
+ "Ehepartner"
6879
+ );
6880
+ return `${relation} ${genitiveArticle(spouseType)}`;
6846
6881
  }
6847
6882
  spouseOf(relation) {
6848
6883
  if (!relation) {
6849
6884
  return "";
6850
6885
  }
6851
- const spouse = this.path?.[this.path.length - 1].indi;
6852
- let spouseType = "Ehepartner";
6853
- if (spouse?.isMale()) {
6854
- spouseType = "Ehemann";
6855
- }
6856
- if (spouse?.isFemale()) {
6857
- spouseType = "Ehefrau";
6858
- }
6886
+ const spouseType = pick(
6887
+ sexOf(this.path?.[this.path.length - 1].indi),
6888
+ "Ehemann",
6889
+ "Ehefrau",
6890
+ "Ehepartner"
6891
+ );
6859
6892
  return `${spouseType} von ${relation}`;
6860
6893
  }
6861
6894
  of(relation) {
@@ -6873,8 +6906,8 @@ var KinshipTranslatorDe = class extends KinshipTranslatorBasic {
6873
6906
  if (!name || !relation) {
6874
6907
  return relation ?? "";
6875
6908
  }
6876
- if (relation.includes(" des ") || relation.includes(" von ")) {
6877
- return relation.replace(/ (des|von) /, ` $1 ${name}s `);
6909
+ if (relation.includes(" des ") || relation.includes(" der ") || relation.includes(" von ")) {
6910
+ return relation.replace(/ (des|der|von) /, ` $1 ${name}s `);
6878
6911
  }
6879
6912
  return `${name}s ${relation}`;
6880
6913
  }
@@ -6904,50 +6937,82 @@ var KinshipTranslatorDe = class extends KinshipTranslatorBasic {
6904
6937
  if (!relation || !this.pathN?.relation) {
6905
6938
  return relation ?? "";
6906
6939
  }
6907
- return `${this.pathN.relation} ${relation}`;
6940
+ const prefix = parentRelationsDe[this.pathN.relation];
6941
+ if (!prefix) {
6942
+ return relation;
6943
+ }
6944
+ if (prefix.endsWith("-") || prefix.endsWith(" ")) {
6945
+ return `${prefix}${relation}`;
6946
+ }
6947
+ return `${prefix}${relation.charAt(0).toLowerCase()}${relation.slice(1)}`;
6908
6948
  }
6909
6949
  };
6910
6950
 
6911
6951
  // src/kinship-translator/patterns.fr.ts
6952
+ var parentRelationsFr = {
6953
+ step: "step",
6954
+ foster: "foster",
6955
+ adopted: "adopted"
6956
+ };
6912
6957
  var InLawsFr = {
6913
6958
  "conjoint de (enfant|fille|fils)": "beau-fils/belle-fille",
6914
6959
  "\xE9pouse de (enfant|fille|fils)": "belle-fille",
6915
6960
  "mari de (enfant|fille|fils)": "gendre",
6916
- "m\xE8re du (conjoint|\xE9pouse|mari)": "belle-m\xE8re",
6917
- "p\xE8re du (conjoint|\xE9pouse|mari)": "beau-p\xE8re",
6918
- "parent du (conjoint|\xE9pouse|mari)": "beau-parent",
6961
+ "m\xE8re (du mari|du conjoint|de l'\xE9pouse)": "belle-m\xE8re",
6962
+ "p\xE8re (du mari|du conjoint|de l'\xE9pouse)": "beau-p\xE8re",
6963
+ "parent (du mari|du conjoint|de l'\xE9pouse)": "beau-parent",
6919
6964
  "\xE9pouse de (demi-)?(fr\xE8re/s\u0153ur|s\u0153ur|fr\xE8re)": "belle-s\u0153ur",
6920
6965
  "mari de (demi-)?(fr\xE8re/s\u0153ur|s\u0153ur|fr\xE8re)": "beau-fr\xE8re",
6921
6966
  "conjoint de (demi-)?(fr\xE8re/s\u0153ur|s\u0153ur|fr\xE8re)": "beau-fr\xE8re/belle-s\u0153ur",
6922
- "(demi-)?s\u0153ur du (conjoint|\xE9pouse|mari)": "belle-s\u0153ur",
6923
- "(demi-)?fr\xE8re du (conjoint|\xE9pouse|mari)": "beau-fr\xE8re",
6924
- "(demi-)?fr\xE8re/s\u0153ur du (conjoint|\xE9pouse|mari)": "beau-fr\xE8re/belle-s\u0153ur"
6967
+ "(demi-)?s\u0153ur (du mari|du conjoint|de l'\xE9pouse)": "belle-s\u0153ur",
6968
+ "(demi-)?fr\xE8re (du mari|du conjoint|de l'\xE9pouse)": "beau-fr\xE8re",
6969
+ "(demi-)?fr\xE8re/s\u0153ur (du mari|du conjoint|de l'\xE9pouse)": "beau-fr\xE8re/belle-s\u0153ur"
6925
6970
  };
6926
6971
 
6927
6972
  // src/kinship-translator/kinship-translator.fr.ts
6928
- var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
6929
- directPrefix() {
6930
- const level = Math.abs(this.pathN?.level ?? 0);
6931
- if (level <= 1) {
6932
- return "";
6933
- }
6934
- if (level === 2) {
6935
- return "grand-";
6936
- }
6937
- if (level === 3) {
6938
- return "arri\xE8re-grand-";
6939
- }
6940
- return `arri\xE8re${level - 2}-grand-`;
6973
+ var sexOf2 = (person) => {
6974
+ if (person?.isMale?.()) {
6975
+ return "m";
6976
+ }
6977
+ if (person?.isFemale?.()) {
6978
+ return "f";
6979
+ }
6980
+ return "n";
6981
+ };
6982
+ var pick2 = (sex, male, female, neutral) => {
6983
+ if (sex === "m") {
6984
+ return male;
6941
6985
  }
6986
+ if (sex === "f") {
6987
+ return female;
6988
+ }
6989
+ return neutral;
6990
+ };
6991
+ var arriere = (count) => count > 0 ? "arri\xE8re-".repeat(count) : "";
6992
+ var frenchOrdinal = (n) => n === 1 ? "1er" : `${n}e`;
6993
+ var isFeminineRelation = (relation) => /mère|fille|sœur|tante|nièce|cousine|épouse/.test(relation);
6994
+ var ofSpousePrep = (spouseType) => {
6995
+ if (spouseType === "\xE9pouse") {
6996
+ return "de l'";
6997
+ }
6998
+ return "du ";
6999
+ };
7000
+ var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
6942
7001
  indirect() {
6943
7002
  let degree = Math.abs(this.pathN?.degree ?? 0);
6944
7003
  if (degree > 0) {
6945
7004
  degree = degree - 1;
6946
7005
  }
6947
- if (degree === 1) {
6948
- return `cousin`;
7006
+ const cousin = pick2(
7007
+ sexOf2(this.personN),
7008
+ "cousin",
7009
+ "cousine",
7010
+ "cousin/cousine"
7011
+ );
7012
+ if (degree <= 1) {
7013
+ return cousin;
6949
7014
  }
6950
- return `cousin au ${ordinalize(degree)} degr\xE9`;
7015
+ return `${cousin} au ${frenchOrdinal(degree)} degr\xE9`;
6951
7016
  }
6952
7017
  removal() {
6953
7018
  const level = this.pathN?.level ?? 0;
@@ -6958,56 +7023,57 @@ var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
6958
7023
  if (!degree) {
6959
7024
  return level < 0 ? this.nibling() : this.auncle();
6960
7025
  }
6961
- return `cousin au ${ordinalize(degree)} degr\xE9 ${Math.abs(level)}\xD7 \xE9loign\xE9`;
7026
+ return `${this.indirect()} ${Math.abs(level)}\xD7 \xE9loign\xE9`;
6962
7027
  }
6963
7028
  auncle() {
6964
- const prefix = this.directPrefix();
6965
- if (this.personN?.isMale()) {
6966
- return `${prefix}oncle`;
6967
- }
6968
- if (this.personN?.isFemale()) {
6969
- return `${prefix}tante`;
7029
+ const level = Math.abs(this.pathN?.level ?? 0);
7030
+ const sex = sexOf2(this.personN);
7031
+ const base = pick2(sex, "oncle", "tante", "oncle/tante");
7032
+ if (level <= 1) {
7033
+ return base;
6970
7034
  }
6971
- return `${prefix}oncle/tante`;
7035
+ const grands = pick2(
7036
+ sex,
7037
+ "grand-oncle",
7038
+ "grand-tante",
7039
+ "grand-oncle/tante"
7040
+ );
7041
+ return `${arriere(level - 2)}${grands}`;
6972
7042
  }
6973
7043
  nibling() {
6974
- const prefix = this.directPrefix();
6975
- if (this.personN?.isMale()) {
6976
- return `${prefix}neveu`;
6977
- }
6978
- if (this.personN?.isFemale()) {
6979
- return `${prefix}ni\xE8ce`;
7044
+ const level = Math.abs(this.pathN?.level ?? 0);
7045
+ const sex = sexOf2(this.personN);
7046
+ if (level <= 1) {
7047
+ return pick2(sex, "neveu", "ni\xE8ce", "neveu/ni\xE8ce");
6980
7048
  }
6981
- return `${prefix}neveu/ni\xE8ce`;
7049
+ const grands = pick2(
7050
+ sex,
7051
+ "grand-neveu",
7052
+ "grande-ni\xE8ce",
7053
+ "grand-neveu/grande-ni\xE8ce"
7054
+ );
7055
+ return `${arriere(level - 2)}${grands}`;
6982
7056
  }
6983
7057
  parent() {
6984
- const prefix = this.directPrefix();
6985
- if (this.personN?.isMale()) {
6986
- return `${prefix}p\xE8re`;
6987
- }
6988
- if (this.personN?.isFemale()) {
6989
- return `${prefix}m\xE8re`;
7058
+ const level = Math.abs(this.pathN?.level ?? 0);
7059
+ const sex = sexOf2(this.personN);
7060
+ if (level <= 1) {
7061
+ return pick2(sex, "p\xE8re", "m\xE8re", "parent");
6990
7062
  }
6991
- return `${prefix}parent`;
7063
+ const grands = pick2(sex, "grand-p\xE8re", "grand-m\xE8re", "grand-parent");
7064
+ return `${arriere(level - 2)}${grands}`;
6992
7065
  }
6993
7066
  child() {
6994
- const prefix = this.directPrefix();
6995
- if (this.personN?.isMale()) {
6996
- return `${prefix}fils`;
6997
- }
6998
- if (this.personN?.isFemale()) {
6999
- return `${prefix}fille`;
7067
+ const level = Math.abs(this.pathN?.level ?? 0);
7068
+ const sex = sexOf2(this.personN);
7069
+ if (level <= 1) {
7070
+ return pick2(sex, "fils", "fille", "enfant");
7000
7071
  }
7001
- return `${prefix}enfant`;
7072
+ const petits = pick2(sex, "petit-fils", "petite-fille", "petit-enfant");
7073
+ return `${arriere(level - 2)}${petits}`;
7002
7074
  }
7003
7075
  sibling() {
7004
- if (this.personN?.isMale()) {
7005
- return "fr\xE8re";
7006
- }
7007
- if (this.personN?.isFemale()) {
7008
- return "s\u0153ur";
7009
- }
7010
- return "fr\xE8re/s\u0153ur";
7076
+ return pick2(sexOf2(this.personN), "fr\xE8re", "s\u0153ur", "fr\xE8re/s\u0153ur");
7011
7077
  }
7012
7078
  halfBlood(relation) {
7013
7079
  if (!relation || !this.isHalfBlood) {
@@ -7016,40 +7082,30 @@ var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
7016
7082
  return `demi-${relation}`;
7017
7083
  }
7018
7084
  spouse() {
7019
- if (this.personN?.isMale()) {
7020
- return "mari";
7021
- }
7022
- if (this.personN?.isFemale()) {
7023
- return "\xE9pouse";
7024
- }
7025
- return "conjoint";
7085
+ return pick2(sexOf2(this.personN), "mari", "\xE9pouse", "conjoint");
7026
7086
  }
7027
7087
  ofSpouse(relation) {
7028
7088
  if (!relation) {
7029
7089
  return "";
7030
7090
  }
7031
- const spouse = this.path?.[1].indi;
7032
- let spouseType = "conjoint";
7033
- if (spouse?.isMale()) {
7034
- spouseType = "mari";
7035
- }
7036
- if (spouse?.isFemale()) {
7037
- spouseType = "\xE9pouse";
7038
- }
7039
- return `${relation} du ${spouseType}`;
7091
+ const spouseType = pick2(
7092
+ sexOf2(this.path?.[1].indi),
7093
+ "mari",
7094
+ "\xE9pouse",
7095
+ "conjoint"
7096
+ );
7097
+ return `${relation} ${ofSpousePrep(spouseType)}${spouseType}`;
7040
7098
  }
7041
7099
  spouseOf(relation) {
7042
7100
  if (!relation) {
7043
7101
  return "";
7044
7102
  }
7045
- const spouse = this.path?.[this.path.length - 1].indi;
7046
- let spouseType = "conjoint";
7047
- if (spouse?.isMale()) {
7048
- spouseType = "mari";
7049
- }
7050
- if (spouse?.isFemale()) {
7051
- spouseType = "\xE9pouse";
7052
- }
7103
+ const spouseType = pick2(
7104
+ sexOf2(this.path?.[this.path.length - 1].indi),
7105
+ "mari",
7106
+ "\xE9pouse",
7107
+ "conjoint"
7108
+ );
7053
7109
  return `${spouseType} de ${relation}`;
7054
7110
  }
7055
7111
  of(relation) {
@@ -7070,6 +7126,9 @@ var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
7070
7126
  if (relation.includes(" du ") || relation.includes(" de ")) {
7071
7127
  return relation.replace(/ (du|de) /, ` $1 ${name} `);
7072
7128
  }
7129
+ if (relation.includes(" de l'")) {
7130
+ return relation.replace(" de l'", ` de ${name} l'`);
7131
+ }
7073
7132
  return `${relation} de ${name}`;
7074
7133
  }
7075
7134
  inLaw(relation) {
@@ -7098,50 +7157,118 @@ var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
7098
7157
  if (!relation || !this.pathN?.relation) {
7099
7158
  return relation ?? "";
7100
7159
  }
7101
- return `${this.pathN.relation} ${relation}`;
7160
+ const kind = parentRelationsFr[this.pathN.relation];
7161
+ if (!kind) {
7162
+ return relation;
7163
+ }
7164
+ if (kind === "step") {
7165
+ return `${isFeminineRelation(relation) ? "belle-" : "beau-"}${relation}`;
7166
+ }
7167
+ if (kind === "adopted") {
7168
+ return `${relation} ${isFeminineRelation(relation) ? "adoptive" : "adoptif"}`;
7169
+ }
7170
+ if (kind === "foster") {
7171
+ return `${relation} d'accueil`;
7172
+ }
7173
+ return relation;
7102
7174
  }
7103
7175
  };
7104
7176
 
7105
7177
  // src/kinship-translator/patterns.es.ts
7178
+ var parentRelationsEs = {
7179
+ step: {
7180
+ padre: "padrastro",
7181
+ madre: "madrastra",
7182
+ hijo: "hijastro",
7183
+ hija: "hijastra",
7184
+ hermano: "hermanastro",
7185
+ hermana: "hermanastra",
7186
+ abuelo: "abuelastro",
7187
+ abuela: "abuelastra"
7188
+ }
7189
+ };
7106
7190
  var InLawsEs = {
7107
7191
  "c\xF3nyuge de (hijo/hija|hija|hijo)": "yerno/nuera",
7108
7192
  "esposa de (hijo/hija|hija|hijo)": "nuera",
7109
7193
  "esposo de (hijo/hija|hija|hijo)": "yerno",
7110
- "madre del (c\xF3nyuge|esposa|esposo)": "suegra",
7111
- "padre del (c\xF3nyuge|esposa|esposo)": "suegro",
7112
- "padre/madre del (c\xF3nyuge|esposa|esposo)": "suegro/suegra",
7194
+ "madre (del c\xF3nyuge|del esposo|de la esposa)": "suegra",
7195
+ "padre (del c\xF3nyuge|del esposo|de la esposa)": "suegro",
7196
+ "padre/madre (del c\xF3nyuge|del esposo|de la esposa)": "suegro/suegra",
7113
7197
  "esposa de (medio |media |medio/a )?(hermano/hermana|hermana|hermano)": "cu\xF1ada",
7114
7198
  "esposo de (medio |media |medio/a )?(hermano/hermana|hermana|hermano)": "cu\xF1ado",
7115
7199
  "c\xF3nyuge de (medio |media |medio/a )?(hermano/hermana|hermana|hermano)": "cu\xF1ado/cu\xF1ada",
7116
- "(medio |media |medio/a )?hermana del (c\xF3nyuge|esposa|esposo)": "cu\xF1ada",
7117
- "(medio |media |medio/a )?hermano del (c\xF3nyuge|esposa|esposo)": "cu\xF1ado",
7118
- "(medio |media |medio/a )?hermano/hermana del (c\xF3nyuge|esposa|esposo)": "cu\xF1ado/cu\xF1ada"
7200
+ "(medio |media |medio/a )?hermana (del c\xF3nyuge|del esposo|de la esposa)": "cu\xF1ada",
7201
+ "(medio |media |medio/a )?hermano (del c\xF3nyuge|del esposo|de la esposa)": "cu\xF1ado",
7202
+ "(medio |media |medio/a )?hermano/hermana (del c\xF3nyuge|del esposo|de la esposa)": "cu\xF1ado/cu\xF1ada"
7119
7203
  };
7120
7204
 
7121
7205
  // src/kinship-translator/kinship-translator.es.ts
7122
- var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
7123
- directPrefix() {
7124
- const level = Math.abs(this.pathN?.level ?? 0);
7125
- if (level <= 1) {
7126
- return "";
7127
- }
7128
- if (level === 2) {
7129
- return "bisabuel";
7130
- }
7131
- if (level === 3) {
7132
- return "tatarabuel";
7133
- }
7134
- return `t\xE1tara${level - 2}-abuel`;
7206
+ var sexOf3 = (person) => {
7207
+ if (person?.isMale?.()) {
7208
+ return "m";
7209
+ }
7210
+ if (person?.isFemale?.()) {
7211
+ return "f";
7212
+ }
7213
+ return "n";
7214
+ };
7215
+ var pick3 = (sex, male, female, neutral) => {
7216
+ if (sex === "m") {
7217
+ return male;
7135
7218
  }
7219
+ if (sex === "f") {
7220
+ return female;
7221
+ }
7222
+ return neutral;
7223
+ };
7224
+ var SPANISH_ORDINALS_M = [
7225
+ "",
7226
+ "",
7227
+ "segundo",
7228
+ "tercero",
7229
+ "cuarto",
7230
+ "quinto",
7231
+ "sexto",
7232
+ "s\xE9ptimo",
7233
+ "octavo",
7234
+ "noveno",
7235
+ "d\xE9cimo"
7236
+ ];
7237
+ var SPANISH_ORDINALS_F = [
7238
+ "",
7239
+ "",
7240
+ "segunda",
7241
+ "tercera",
7242
+ "cuarta",
7243
+ "quinta",
7244
+ "sexta",
7245
+ "s\xE9ptima",
7246
+ "octava",
7247
+ "novena",
7248
+ "d\xE9cima"
7249
+ ];
7250
+ var spanishOrdinal = (n, sex) => {
7251
+ const list = sex === "f" ? SPANISH_ORDINALS_F : SPANISH_ORDINALS_M;
7252
+ return list[n] ?? `${n}.\xBA`;
7253
+ };
7254
+ var ofSpousePrep2 = (spouseType) => {
7255
+ if (spouseType === "esposa") {
7256
+ return "de la ";
7257
+ }
7258
+ return "del ";
7259
+ };
7260
+ var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
7136
7261
  indirect() {
7137
7262
  let degree = Math.abs(this.pathN?.degree ?? 0);
7138
7263
  if (degree > 0) {
7139
7264
  degree = degree - 1;
7140
7265
  }
7141
- if (degree === 1) {
7142
- return `primo`;
7266
+ const sex = sexOf3(this.personN);
7267
+ const cousin = pick3(sex, "primo", "prima", "primo/prima");
7268
+ if (degree <= 1) {
7269
+ return cousin;
7143
7270
  }
7144
- return `primo ${ordinalize(degree)}`;
7271
+ return `${cousin} ${spanishOrdinal(degree, sex)}`;
7145
7272
  }
7146
7273
  removal() {
7147
7274
  const level = this.pathN?.level ?? 0;
@@ -7152,56 +7279,133 @@ var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
7152
7279
  if (!degree) {
7153
7280
  return level < 0 ? this.nibling() : this.auncle();
7154
7281
  }
7155
- return `primo ${ordinalize(degree)} ${Math.abs(level)}\xD7 separado`;
7282
+ return `${this.indirect()} ${Math.abs(level)}\xD7 separado`;
7156
7283
  }
7157
7284
  auncle() {
7158
- const prefix = this.directPrefix();
7159
- if (this.personN?.isMale()) {
7160
- return `${prefix}t\xEDo`;
7285
+ const level = Math.abs(this.pathN?.level ?? 0);
7286
+ const sex = sexOf3(this.personN);
7287
+ if (level <= 1) {
7288
+ return pick3(sex, "t\xEDo", "t\xEDa", "t\xEDo/t\xEDa");
7161
7289
  }
7162
- if (this.personN?.isFemale()) {
7163
- return `${prefix}t\xEDa`;
7290
+ if (level === 2) {
7291
+ return pick3(sex, "t\xEDo abuelo", "t\xEDa abuela", "t\xEDo/t\xEDa abuelo");
7292
+ }
7293
+ if (level === 3) {
7294
+ return pick3(
7295
+ sex,
7296
+ "t\xEDo bisabuelo",
7297
+ "t\xEDa bisabuela",
7298
+ "t\xEDo/t\xEDa bisabuelo"
7299
+ );
7164
7300
  }
7165
- return `${prefix}t\xEDo/t\xEDa`;
7301
+ return pick3(
7302
+ sex,
7303
+ `t\xEDo abuelo (${level - 1}.\xBA)`,
7304
+ `t\xEDa abuela (${level - 1}.\xAA)`,
7305
+ `t\xEDo/t\xEDa abuelo (${level - 1}.\xBA)`
7306
+ );
7166
7307
  }
7167
7308
  nibling() {
7168
- const prefix = this.directPrefix();
7169
- if (this.personN?.isMale()) {
7170
- return `${prefix}sobrino`;
7309
+ const level = Math.abs(this.pathN?.level ?? 0);
7310
+ const sex = sexOf3(this.personN);
7311
+ if (level <= 1) {
7312
+ return pick3(sex, "sobrino", "sobrina", "sobrino/sobrina");
7171
7313
  }
7172
- if (this.personN?.isFemale()) {
7173
- return `${prefix}sobrina`;
7314
+ if (level === 2) {
7315
+ return pick3(
7316
+ sex,
7317
+ "sobrino nieto",
7318
+ "sobrina nieta",
7319
+ "sobrino/sobrina nieto"
7320
+ );
7174
7321
  }
7175
- return `${prefix}sobrino/sobrina`;
7322
+ if (level === 3) {
7323
+ return pick3(
7324
+ sex,
7325
+ "sobrino bisnieto",
7326
+ "sobrina bisnieta",
7327
+ "sobrino/sobrina bisnieto"
7328
+ );
7329
+ }
7330
+ return pick3(
7331
+ sex,
7332
+ `sobrino nieto (${level - 1}.\xBA)`,
7333
+ `sobrina nieta (${level - 1}.\xAA)`,
7334
+ `sobrino/sobrina nieto (${level - 1}.\xBA)`
7335
+ );
7176
7336
  }
7177
7337
  parent() {
7178
- const prefix = this.directPrefix();
7179
- if (this.personN?.isMale()) {
7180
- return `${prefix}padre`;
7338
+ const level = Math.abs(this.pathN?.level ?? 0);
7339
+ const sex = sexOf3(this.personN);
7340
+ if (level <= 1) {
7341
+ return pick3(sex, "padre", "madre", "padre/madre");
7181
7342
  }
7182
- if (this.personN?.isFemale()) {
7183
- return `${prefix}madre`;
7343
+ if (level === 2) {
7344
+ return pick3(sex, "abuelo", "abuela", "abuelo/abuela");
7345
+ }
7346
+ if (level === 3) {
7347
+ return pick3(sex, "bisabuelo", "bisabuela", "bisabuelo/bisabuela");
7184
7348
  }
7185
- return `${prefix}padre/madre`;
7349
+ if (level === 4) {
7350
+ return pick3(
7351
+ sex,
7352
+ "tatarabuelo",
7353
+ "tatarabuela",
7354
+ "tatarabuelo/tatarabuela"
7355
+ );
7356
+ }
7357
+ if (level === 5) {
7358
+ return pick3(
7359
+ sex,
7360
+ "trastatarabuelo",
7361
+ "trastatarabuela",
7362
+ "trastatarabuelo/trastatarabuela"
7363
+ );
7364
+ }
7365
+ return pick3(
7366
+ sex,
7367
+ `abuelo (${level}.\xBA)`,
7368
+ `abuela (${level}.\xAA)`,
7369
+ `abuelo/abuela (${level}.\xBA)`
7370
+ );
7186
7371
  }
7187
7372
  child() {
7188
- const prefix = this.directPrefix();
7189
- if (this.personN?.isMale()) {
7190
- return `${prefix}hijo`;
7373
+ const level = Math.abs(this.pathN?.level ?? 0);
7374
+ const sex = sexOf3(this.personN);
7375
+ if (level <= 1) {
7376
+ return pick3(sex, "hijo", "hija", "hijo/hija");
7191
7377
  }
7192
- if (this.personN?.isFemale()) {
7193
- return `${prefix}hija`;
7378
+ if (level === 2) {
7379
+ return pick3(sex, "nieto", "nieta", "nieto/nieta");
7194
7380
  }
7195
- return `${prefix}hijo/hija`;
7196
- }
7197
- sibling() {
7198
- if (this.personN?.isMale()) {
7199
- return "hermano";
7381
+ if (level === 3) {
7382
+ return pick3(sex, "bisnieto", "bisnieta", "bisnieto/bisnieta");
7200
7383
  }
7201
- if (this.personN?.isFemale()) {
7202
- return "hermana";
7384
+ if (level === 4) {
7385
+ return pick3(
7386
+ sex,
7387
+ "tataranieto",
7388
+ "tataranieta",
7389
+ "tataranieto/tataranieta"
7390
+ );
7391
+ }
7392
+ if (level === 5) {
7393
+ return pick3(
7394
+ sex,
7395
+ "trastataranieto",
7396
+ "trastataranieta",
7397
+ "trastataranieto/trastataranieta"
7398
+ );
7203
7399
  }
7204
- return "hermano/hermana";
7400
+ return pick3(
7401
+ sex,
7402
+ `nieto (${level}.\xBA)`,
7403
+ `nieta (${level}.\xAA)`,
7404
+ `nieto/nieta (${level}.\xBA)`
7405
+ );
7406
+ }
7407
+ sibling() {
7408
+ return pick3(sexOf3(this.personN), "hermano", "hermana", "hermano/hermana");
7205
7409
  }
7206
7410
  halfBlood(relation) {
7207
7411
  if (!relation || !this.isHalfBlood) {
@@ -7216,40 +7420,30 @@ var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
7216
7420
  return `medio/a ${relation}`;
7217
7421
  }
7218
7422
  spouse() {
7219
- if (this.personN?.isMale()) {
7220
- return "esposo";
7221
- }
7222
- if (this.personN?.isFemale()) {
7223
- return "esposa";
7224
- }
7225
- return "c\xF3nyuge";
7423
+ return pick3(sexOf3(this.personN), "esposo", "esposa", "c\xF3nyuge");
7226
7424
  }
7227
7425
  ofSpouse(relation) {
7228
7426
  if (!relation) {
7229
7427
  return "";
7230
7428
  }
7231
- const spouse = this.path?.[1].indi;
7232
- let spouseType = "c\xF3nyuge";
7233
- if (spouse?.isMale()) {
7234
- spouseType = "esposo";
7235
- }
7236
- if (spouse?.isFemale()) {
7237
- spouseType = "esposa";
7238
- }
7239
- return `${relation} del ${spouseType}`;
7429
+ const spouseType = pick3(
7430
+ sexOf3(this.path?.[1].indi),
7431
+ "esposo",
7432
+ "esposa",
7433
+ "c\xF3nyuge"
7434
+ );
7435
+ return `${relation} ${ofSpousePrep2(spouseType)}${spouseType}`;
7240
7436
  }
7241
7437
  spouseOf(relation) {
7242
7438
  if (!relation) {
7243
7439
  return "";
7244
7440
  }
7245
- const spouse = this.path?.[this.path.length - 1].indi;
7246
- let spouseType = "c\xF3nyuge";
7247
- if (spouse?.isMale()) {
7248
- spouseType = "esposo";
7249
- }
7250
- if (spouse?.isFemale()) {
7251
- spouseType = "esposa";
7252
- }
7441
+ const spouseType = pick3(
7442
+ sexOf3(this.path?.[this.path.length - 1].indi),
7443
+ "esposo",
7444
+ "esposa",
7445
+ "c\xF3nyuge"
7446
+ );
7253
7447
  return `${spouseType} de ${relation}`;
7254
7448
  }
7255
7449
  of(relation) {
@@ -7267,8 +7461,8 @@ var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
7267
7461
  if (!name || !relation) {
7268
7462
  return relation ?? "";
7269
7463
  }
7270
- if (relation.includes(" del ") || relation.includes(" de ")) {
7271
- return relation.replace(/ (del|de) /, ` $1 ${name} `);
7464
+ if (relation.includes(" del ") || relation.includes(" de la ") || relation.includes(" de ")) {
7465
+ return relation.replace(/ (del|de la|de) /, ` $1 ${name} `);
7272
7466
  }
7273
7467
  return `${relation} de ${name}`;
7274
7468
  }
@@ -7298,7 +7492,20 @@ var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
7298
7492
  if (!relation || !this.pathN?.relation) {
7299
7493
  return relation ?? "";
7300
7494
  }
7301
- return `${this.pathN.relation} ${relation}`;
7495
+ const mapped = parentRelationsEs[this.pathN.relation]?.[relation];
7496
+ if (mapped) {
7497
+ return mapped;
7498
+ }
7499
+ if (this.pathN.relation === "step") {
7500
+ return `${relation} pol\xEDtico`;
7501
+ }
7502
+ if (this.pathN.relation === "adopted") {
7503
+ return `${relation} adoptivo`;
7504
+ }
7505
+ if (this.pathN.relation === "foster") {
7506
+ return `${relation} de acogida`;
7507
+ }
7508
+ return relation;
7302
7509
  }
7303
7510
  };
7304
7511
 
@@ -7307,15 +7514,35 @@ var InLawsRu = {
7307
7514
  "\u0441\u0443\u043F\u0440\u0443\u0433(?:\u0430)? (\u0440\u0435\u0431\u0451\u043D\u043A\u0430|\u0434\u043E\u0447\u0435\u0440\u0438|\u0441\u044B\u043D\u0430)": "\u0437\u044F\u0442\u044C/\u043D\u0435\u0432\u0435\u0441\u0442\u043A\u0430",
7308
7515
  "\u0436\u0435\u043D\u0430 (\u0440\u0435\u0431\u0451\u043D\u043A\u0430|\u0434\u043E\u0447\u0435\u0440\u0438|\u0441\u044B\u043D\u0430)": "\u043D\u0435\u0432\u0435\u0441\u0442\u043A\u0430",
7309
7516
  "\u043C\u0443\u0436 (\u0440\u0435\u0431\u0451\u043D\u043A\u0430|\u0434\u043E\u0447\u0435\u0440\u0438|\u0441\u044B\u043D\u0430)": "\u0437\u044F\u0442\u044C",
7310
- "\u043C\u0430\u0442\u044C (\u0441\u0443\u043F\u0440\u0443\u0433\u0430|\u0436\u0435\u043D\u044B|\u043C\u0443\u0436\u0430)": "\u0442\u0451\u0449\u0430",
7311
- "\u043E\u0442\u0435\u0446 (\u0441\u0443\u043F\u0440\u0443\u0433\u0430|\u0436\u0435\u043D\u044B|\u043C\u0443\u0436\u0430)": "\u0442\u0435\u0441\u0442\u044C",
7312
- "\u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C (\u0441\u0443\u043F\u0440\u0443\u0433\u0430|\u0436\u0435\u043D\u044B|\u043C\u0443\u0436\u0430)": "\u0442\u0435\u0441\u0442\u044C/\u0442\u0451\u0449\u0430",
7517
+ "\u043C\u0430\u0442\u044C \u0436\u0435\u043D\u044B": "\u0442\u0451\u0449\u0430",
7518
+ "\u043C\u0430\u0442\u044C \u043C\u0443\u0436\u0430": "\u0441\u0432\u0435\u043A\u0440\u043E\u0432\u044C",
7519
+ "\u043C\u0430\u0442\u044C \u0441\u0443\u043F\u0440\u0443\u0433\u0430": "\u0442\u0451\u0449\u0430/\u0441\u0432\u0435\u043A\u0440\u043E\u0432\u044C",
7520
+ "\u043E\u0442\u0435\u0446 \u0436\u0435\u043D\u044B": "\u0442\u0435\u0441\u0442\u044C",
7521
+ "\u043E\u0442\u0435\u0446 \u043C\u0443\u0436\u0430": "\u0441\u0432\u0451\u043A\u043E\u0440",
7522
+ "\u043E\u0442\u0435\u0446 \u0441\u0443\u043F\u0440\u0443\u0433\u0430": "\u0442\u0435\u0441\u0442\u044C/\u0441\u0432\u0451\u043A\u043E\u0440",
7523
+ "\u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C \u0436\u0435\u043D\u044B": "\u0442\u0435\u0441\u0442\u044C/\u0442\u0451\u0449\u0430",
7524
+ "\u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C \u043C\u0443\u0436\u0430": "\u0441\u0432\u0451\u043A\u043E\u0440/\u0441\u0432\u0435\u043A\u0440\u043E\u0432\u044C",
7525
+ "\u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C \u0441\u0443\u043F\u0440\u0443\u0433\u0430": "\u0442\u0435\u0441\u0442\u044C/\u0442\u0451\u0449\u0430",
7313
7526
  "\u0436\u0435\u043D\u0430 (\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?(\u0431\u0440\u0430\u0442\u0430|\u0441\u0435\u0441\u0442\u0440\u044B|\u0441\u0438\u0431\u043B\u0438\u043D\u0433\u0430)": "\u043D\u0435\u0432\u0435\u0441\u0442\u043A\u0430",
7314
7527
  "\u043C\u0443\u0436 (\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?(\u0431\u0440\u0430\u0442\u0430|\u0441\u0435\u0441\u0442\u0440\u044B|\u0441\u0438\u0431\u043B\u0438\u043D\u0433\u0430)": "\u0437\u044F\u0442\u044C",
7315
7528
  "\u0441\u0443\u043F\u0440\u0443\u0433(?:\u0430)? (\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?(\u0431\u0440\u0430\u0442\u0430|\u0441\u0435\u0441\u0442\u0440\u044B|\u0441\u0438\u0431\u043B\u0438\u043D\u0433\u0430)": "\u0437\u044F\u0442\u044C/\u043D\u0435\u0432\u0435\u0441\u0442\u043A\u0430",
7316
- "(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0441\u0435\u0441\u0442\u0440\u0430 (\u0441\u0443\u043F\u0440\u0443\u0433\u0430|\u0436\u0435\u043D\u044B|\u043C\u0443\u0436\u0430)": "\u0437\u043E\u043B\u043E\u0432\u043A\u0430",
7317
- "(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0431\u0440\u0430\u0442 (\u0441\u0443\u043F\u0440\u0443\u0433\u0430|\u0436\u0435\u043D\u044B|\u043C\u0443\u0436\u0430)": "\u0448\u0443\u0440\u0438\u043D",
7318
- "(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0441\u0438\u0431\u043B\u0438\u043D\u0433 (\u0441\u0443\u043F\u0440\u0443\u0433\u0430|\u0436\u0435\u043D\u044B|\u043C\u0443\u0436\u0430)": "\u0448\u0443\u0440\u0438\u043D/\u0437\u043E\u043B\u043E\u0432\u043A\u0430"
7529
+ "(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0441\u0435\u0441\u0442\u0440\u0430 \u0436\u0435\u043D\u044B": "\u0441\u0432\u043E\u044F\u0447\u0435\u043D\u0438\u0446\u0430",
7530
+ "(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0441\u0435\u0441\u0442\u0440\u0430 \u043C\u0443\u0436\u0430": "\u0437\u043E\u043B\u043E\u0432\u043A\u0430",
7531
+ "(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0441\u0435\u0441\u0442\u0440\u0430 \u0441\u0443\u043F\u0440\u0443\u0433\u0430": "\u0441\u0432\u043E\u044F\u0447\u0435\u043D\u0438\u0446\u0430/\u0437\u043E\u043B\u043E\u0432\u043A\u0430",
7532
+ "(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0431\u0440\u0430\u0442 \u0436\u0435\u043D\u044B": "\u0448\u0443\u0440\u0438\u043D",
7533
+ "(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0431\u0440\u0430\u0442 \u043C\u0443\u0436\u0430": "\u0434\u0435\u0432\u0435\u0440\u044C",
7534
+ "(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0431\u0440\u0430\u0442 \u0441\u0443\u043F\u0440\u0443\u0433\u0430": "\u0448\u0443\u0440\u0438\u043D/\u0434\u0435\u0432\u0435\u0440\u044C",
7535
+ "(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0441\u0438\u0431\u043B\u0438\u043D\u0433 \u0436\u0435\u043D\u044B": "\u0448\u0443\u0440\u0438\u043D/\u0441\u0432\u043E\u044F\u0447\u0435\u043D\u0438\u0446\u0430",
7536
+ "(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0441\u0438\u0431\u043B\u0438\u043D\u0433 \u043C\u0443\u0436\u0430": "\u0434\u0435\u0432\u0435\u0440\u044C/\u0437\u043E\u043B\u043E\u0432\u043A\u0430",
7537
+ "(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0441\u0438\u0431\u043B\u0438\u043D\u0433 \u0441\u0443\u043F\u0440\u0443\u0433\u0430": "\u0448\u0443\u0440\u0438\u043D/\u0437\u043E\u043B\u043E\u0432\u043A\u0430"
7538
+ };
7539
+ var parentRelationsRu = {
7540
+ step: {
7541
+ \u043E\u0442\u0435\u0446: "\u043E\u0442\u0447\u0438\u043C",
7542
+ \u043C\u0430\u0442\u044C: "\u043C\u0430\u0447\u0435\u0445\u0430",
7543
+ \u0441\u044B\u043D: "\u043F\u0430\u0441\u044B\u043D\u043E\u043A",
7544
+ \u0434\u043E\u0447\u044C: "\u043F\u0430\u0434\u0447\u0435\u0440\u0438\u0446\u0430"
7545
+ }
7319
7546
  };
7320
7547
 
7321
7548
  // src/kinship-translator/kinship-translator.ru.ts
@@ -7346,7 +7573,7 @@ var cousinWord = (degree, sex) => {
7346
7573
  return `${stem}\u044B\u0439 \u0431\u0440\u0430\u0442/\u0441\u0435\u0441\u0442\u0440\u0430`;
7347
7574
  };
7348
7575
  var praRepeat = (count) => count > 0 ? "\u043F\u0440\u0430".repeat(count) : "";
7349
- var sexOf = (person) => {
7576
+ var sexOf4 = (person) => {
7350
7577
  if (person?.isMale?.()) {
7351
7578
  return "m";
7352
7579
  }
@@ -7361,7 +7588,7 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
7361
7588
  if (degree > 0) {
7362
7589
  degree = degree - 1;
7363
7590
  }
7364
- return cousinWord(degree, sexOf(this.personN));
7591
+ return cousinWord(degree, sexOf4(this.personN));
7365
7592
  }
7366
7593
  removal() {
7367
7594
  const level = this.pathN?.level ?? 0;
@@ -7373,35 +7600,53 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
7373
7600
  return level < 0 ? this.nibling() : this.auncle();
7374
7601
  }
7375
7602
  const removed = Math.abs(level);
7376
- return `${cousinWord(degree, sexOf(this.personN))} (${removed}\xD7 \u0447\u0435\u0440\u0435\u0437 \u043F\u043E\u043A\u043E\u043B\u0435\u043D\u0438\u0435)`;
7603
+ return `${cousinWord(degree, sexOf4(this.personN))} (${removed}\xD7 \u0447\u0435\u0440\u0435\u0437 \u043F\u043E\u043A\u043E\u043B\u0435\u043D\u0438\u0435)`;
7377
7604
  }
7378
7605
  auncle() {
7379
7606
  const level = Math.abs(this.pathN?.level ?? 0);
7380
- const pra = praRepeat(Math.max(0, level - 2));
7381
- const sex = sexOf(this.personN);
7607
+ const sex = sexOf4(this.personN);
7608
+ if (level <= 1) {
7609
+ if (sex === "m") {
7610
+ return "\u0434\u044F\u0434\u044F";
7611
+ }
7612
+ if (sex === "f") {
7613
+ return "\u0442\u0451\u0442\u044F";
7614
+ }
7615
+ return "\u0434\u044F\u0434\u044F/\u0442\u0451\u0442\u044F";
7616
+ }
7617
+ const pra = praRepeat(level - 2);
7382
7618
  if (sex === "m") {
7383
- return `${pra}\u0434\u044F\u0434\u044F`;
7619
+ return `\u0434\u0432\u043E\u044E\u0440\u043E\u0434\u043D\u044B\u0439 ${pra}\u0434\u0435\u0434`;
7384
7620
  }
7385
7621
  if (sex === "f") {
7386
- return `${pra}\u0442\u0451\u0442\u044F`;
7622
+ return `\u0434\u0432\u043E\u044E\u0440\u043E\u0434\u043D\u0430\u044F ${pra}\u0431\u0430\u0431\u0443\u0448\u043A\u0430`;
7387
7623
  }
7388
- return `${pra}\u0434\u044F\u0434\u044F/\u0442\u0451\u0442\u044F`;
7624
+ return `\u0434\u0432\u043E\u044E\u0440\u043E\u0434\u043D\u044B\u0439 ${pra}\u0434\u0435\u0434/\u0431\u0430\u0431\u0443\u0448\u043A\u0430`;
7389
7625
  }
7390
7626
  nibling() {
7391
7627
  const level = Math.abs(this.pathN?.level ?? 0);
7392
- const pra = praRepeat(Math.max(0, level - 2));
7393
- const sex = sexOf(this.personN);
7628
+ const sex = sexOf4(this.personN);
7629
+ if (level <= 1) {
7630
+ if (sex === "m") {
7631
+ return "\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A";
7632
+ }
7633
+ if (sex === "f") {
7634
+ return "\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430";
7635
+ }
7636
+ return "\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A/\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430";
7637
+ }
7638
+ const pra = praRepeat(level - 2);
7394
7639
  if (sex === "m") {
7395
- return `${pra}\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A`;
7640
+ return `${pra}\u0432\u043D\u0443\u0447\u0430\u0442\u044B\u0439 \u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A`;
7396
7641
  }
7397
7642
  if (sex === "f") {
7398
- return `${pra}\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430`;
7643
+ return `${pra}\u0432\u043D\u0443\u0447\u0430\u0442\u0430\u044F \u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430`;
7399
7644
  }
7400
- return `${pra}\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A/\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430`;
7645
+ return `${pra}\u0432\u043D\u0443\u0447\u0430\u0442\u044B\u0439 \u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A/\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430`;
7401
7646
  }
7402
7647
  parent() {
7403
7648
  const level = Math.abs(this.pathN?.level ?? 0);
7404
- const sex = sexOf(this.personN);
7649
+ const sex = sexOf4(this.personN);
7405
7650
  if (level <= 1) {
7406
7651
  if (sex === "m") {
7407
7652
  return "\u043E\u0442\u0435\u0446";
@@ -7431,7 +7676,7 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
7431
7676
  }
7432
7677
  child() {
7433
7678
  const level = Math.abs(this.pathN?.level ?? 0);
7434
- const sex = sexOf(this.personN);
7679
+ const sex = sexOf4(this.personN);
7435
7680
  if (level <= 1) {
7436
7681
  if (sex === "m") {
7437
7682
  return "\u0441\u044B\u043D";
@@ -7460,14 +7705,14 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
7460
7705
  return `${pra}\u0432\u043D\u0443\u043A/\u0432\u043D\u0443\u0447\u043A\u0430`;
7461
7706
  }
7462
7707
  sibling() {
7463
- const sex = sexOf(this.personN);
7708
+ const sex = sexOf4(this.personN);
7464
7709
  if (sex === "m") {
7465
7710
  return "\u0431\u0440\u0430\u0442";
7466
7711
  }
7467
7712
  if (sex === "f") {
7468
7713
  return "\u0441\u0435\u0441\u0442\u0440\u0430";
7469
7714
  }
7470
- return "\u0441\u0438\u0431\u043B\u0438\u043D\u0433";
7715
+ return "\u0431\u0440\u0430\u0442/\u0441\u0435\u0441\u0442\u0440\u0430";
7471
7716
  }
7472
7717
  halfBlood(relation) {
7473
7718
  if (!relation || !this.isHalfBlood) {
@@ -7481,7 +7726,7 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
7481
7726
  return `\u0441\u0432\u043E\u0434\u043D\u044B\u0439 ${relation}`;
7482
7727
  }
7483
7728
  spouse() {
7484
- const sex = sexOf(this.personN);
7729
+ const sex = sexOf4(this.personN);
7485
7730
  if (sex === "m") {
7486
7731
  return "\u043C\u0443\u0436";
7487
7732
  }
@@ -7495,7 +7740,7 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
7495
7740
  return "";
7496
7741
  }
7497
7742
  const spouse = this.path?.[1].indi;
7498
- const sex = sexOf(spouse);
7743
+ const sex = sexOf4(spouse);
7499
7744
  const spouseType = sex === "m" ? "\u043C\u0443\u0436" : sex === "f" ? "\u0436\u0435\u043D\u0430" : "\u0441\u0443\u043F\u0440\u0443\u0433";
7500
7745
  return `${relation} ${toGenitive(spouseType)}`;
7501
7746
  }
@@ -7504,7 +7749,7 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
7504
7749
  return "";
7505
7750
  }
7506
7751
  const spouse = this.path?.[this.path.length - 1].indi;
7507
- const sex = sexOf(spouse);
7752
+ const sex = sexOf4(spouse);
7508
7753
  const spouseType = sex === "m" ? "\u043C\u0443\u0436" : sex === "f" ? "\u0436\u0435\u043D\u0430" : "\u0441\u0443\u043F\u0440\u0443\u0433";
7509
7754
  return `${spouseType} ${toGenitive(relation)}`;
7510
7755
  }
@@ -7541,7 +7786,22 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
7541
7786
  if (!relation || !this.pathN?.relation) {
7542
7787
  return relation ?? "";
7543
7788
  }
7544
- return `${this.pathN.relation} ${relation}`;
7789
+ const mapped = parentRelationsRu[this.pathN.relation]?.[relation];
7790
+ if (mapped) {
7791
+ return mapped;
7792
+ }
7793
+ if (this.pathN.relation === "step") {
7794
+ return `\u043D\u0435\u0440\u043E\u0434\u043D\u043E\u0439 ${relation}`;
7795
+ }
7796
+ if (this.pathN.relation === "adopted") {
7797
+ return /сестра|дочь|мать|тётя|бабушка|жена|племянница|внучка/.test(
7798
+ relation
7799
+ ) ? `\u043F\u0440\u0438\u0451\u043C\u043D\u0430\u044F ${relation}` : `\u043F\u0440\u0438\u0451\u043C\u043D\u044B\u0439 ${relation}`;
7800
+ }
7801
+ if (this.pathN.relation === "foster") {
7802
+ return `\u043F\u0440\u0438\u0451\u043C\u043D\u044B\u0439 ${relation}`;
7803
+ }
7804
+ return relation;
7545
7805
  }
7546
7806
  };
7547
7807
 
@@ -7565,7 +7825,7 @@ var InLawsJa = {
7565
7825
  };
7566
7826
 
7567
7827
  // src/kinship-translator/kinship-translator.ja.ts
7568
- var sexOf2 = (person) => {
7828
+ var sexOf5 = (person) => {
7569
7829
  if (person?.isMale?.()) {
7570
7830
  return "m";
7571
7831
  }
@@ -7574,7 +7834,7 @@ var sexOf2 = (person) => {
7574
7834
  }
7575
7835
  return "n";
7576
7836
  };
7577
- var pick = (sex, male, female, neutral) => {
7837
+ var pick4 = (sex, male, female, neutral) => {
7578
7838
  if (sex === "m") {
7579
7839
  return male;
7580
7840
  }
@@ -7587,18 +7847,18 @@ var lineal = (level, sex, kind) => {
7587
7847
  const L = Math.max(1, level);
7588
7848
  if (kind === "asc") {
7589
7849
  if (L <= 1) {
7590
- return pick(sex, "\u7236", "\u6BCD", "\u89AA");
7850
+ return pick4(sex, "\u7236", "\u6BCD", "\u89AA");
7591
7851
  }
7592
7852
  if (L === 2) {
7593
- return pick(sex, "\u7956\u7236", "\u7956\u6BCD", "\u7956\u7236\u6BCD");
7853
+ return pick4(sex, "\u7956\u7236", "\u7956\u6BCD", "\u7956\u7236\u6BCD");
7594
7854
  }
7595
7855
  if (L === 3) {
7596
- return pick(sex, "\u66FE\u7956\u7236", "\u66FE\u7956\u6BCD", "\u66FE\u7956\u7236\u6BCD");
7856
+ return pick4(sex, "\u66FE\u7956\u7236", "\u66FE\u7956\u6BCD", "\u66FE\u7956\u7236\u6BCD");
7597
7857
  }
7598
7858
  if (L === 4) {
7599
- return pick(sex, "\u9AD8\u7956\u7236", "\u9AD8\u7956\u6BCD", "\u9AD8\u7956\u7236\u6BCD");
7859
+ return pick4(sex, "\u9AD8\u7956\u7236", "\u9AD8\u7956\u6BCD", "\u9AD8\u7956\u7236\u6BCD");
7600
7860
  }
7601
- return pick(
7861
+ return pick4(
7602
7862
  sex,
7603
7863
  `${L - 1}\u4E16\u306E\u7956\u7236`,
7604
7864
  `${L - 1}\u4E16\u306E\u7956\u6BCD`,
@@ -7606,7 +7866,7 @@ var lineal = (level, sex, kind) => {
7606
7866
  );
7607
7867
  }
7608
7868
  if (L <= 1) {
7609
- return pick(sex, "\u606F\u5B50", "\u5A18", "\u5B50");
7869
+ return pick4(sex, "\u606F\u5B50", "\u5A18", "\u5B50");
7610
7870
  }
7611
7871
  if (L === 2) {
7612
7872
  return "\u5B6B";
@@ -7653,52 +7913,52 @@ var KinshipTranslatorJa = class extends KinshipTranslatorBasic {
7653
7913
  }
7654
7914
  auncle() {
7655
7915
  const level = Math.abs(this.pathN?.level ?? 0);
7656
- const sex = sexOf2(this.personN);
7657
- if (level <= 2) {
7658
- return pick(sex, "\u304A\u3058", "\u304A\u3070", "\u304A\u3058/\u304A\u3070");
7916
+ const sex = sexOf5(this.personN);
7917
+ if (level <= 1) {
7918
+ return pick4(sex, "\u304A\u3058", "\u304A\u3070", "\u304A\u3058/\u304A\u3070");
7659
7919
  }
7660
- if (level === 3) {
7661
- return pick(sex, "\u5927\u304A\u3058", "\u5927\u304A\u3070", "\u5927\u304A\u3058/\u5927\u304A\u3070");
7920
+ if (level === 2) {
7921
+ return pick4(sex, "\u5927\u304A\u3058", "\u5927\u304A\u3070", "\u5927\u304A\u3058/\u5927\u304A\u3070");
7662
7922
  }
7663
- return pick(
7923
+ return pick4(
7664
7924
  sex,
7665
- `${level - 2}\u4EE3\u524D\u306E\u304A\u3058`,
7666
- `${level - 2}\u4EE3\u524D\u306E\u304A\u3070`,
7667
- `${level - 2}\u4EE3\u524D\u306E\u304A\u3058/\u304A\u3070`
7925
+ `${level - 1}\u4EE3\u524D\u306E\u304A\u3058`,
7926
+ `${level - 1}\u4EE3\u524D\u306E\u304A\u3070`,
7927
+ `${level - 1}\u4EE3\u524D\u306E\u304A\u3058/\u304A\u3070`
7668
7928
  );
7669
7929
  }
7670
7930
  nibling() {
7671
7931
  const level = Math.abs(this.pathN?.level ?? 0);
7672
- const sex = sexOf2(this.personN);
7673
- if (level <= 2) {
7674
- return pick(sex, "\u7525", "\u59EA", "\u7525/\u59EA");
7932
+ const sex = sexOf5(this.personN);
7933
+ if (level <= 1) {
7934
+ return pick4(sex, "\u7525", "\u59EA", "\u7525/\u59EA");
7675
7935
  }
7676
- if (level === 3) {
7677
- return pick(sex, "\u5927\u7525", "\u5927\u59EA", "\u5927\u7525/\u5927\u59EA");
7936
+ if (level === 2) {
7937
+ return pick4(sex, "\u5927\u7525", "\u5927\u59EA", "\u5927\u7525/\u5927\u59EA");
7678
7938
  }
7679
- return pick(
7939
+ return pick4(
7680
7940
  sex,
7681
- `${level - 2}\u4EE3\u4E0B\u306E\u7525`,
7682
- `${level - 2}\u4EE3\u4E0B\u306E\u59EA`,
7683
- `${level - 2}\u4EE3\u4E0B\u306E\u7525/\u59EA`
7941
+ `${level - 1}\u4EE3\u4E0B\u306E\u7525`,
7942
+ `${level - 1}\u4EE3\u4E0B\u306E\u59EA`,
7943
+ `${level - 1}\u4EE3\u4E0B\u306E\u7525/\u59EA`
7684
7944
  );
7685
7945
  }
7686
7946
  parent() {
7687
7947
  return lineal(
7688
7948
  Math.abs(this.pathN?.level ?? 0),
7689
- sexOf2(this.personN),
7949
+ sexOf5(this.personN),
7690
7950
  "asc"
7691
7951
  );
7692
7952
  }
7693
7953
  child() {
7694
7954
  return lineal(
7695
7955
  Math.abs(this.pathN?.level ?? 0),
7696
- sexOf2(this.personN),
7956
+ sexOf5(this.personN),
7697
7957
  "desc"
7698
7958
  );
7699
7959
  }
7700
7960
  sibling() {
7701
- return pick(sexOf2(this.personN), "\u5144\u5F1F", "\u59C9\u59B9", "\u5144\u5F1F\u59C9\u59B9");
7961
+ return pick4(sexOf5(this.personN), "\u5144\u5F1F", "\u59C9\u59B9", "\u5144\u5F1F\u59C9\u59B9");
7702
7962
  }
7703
7963
  halfBlood(relation) {
7704
7964
  if (!relation || !this.isHalfBlood) {
@@ -7707,14 +7967,14 @@ var KinshipTranslatorJa = class extends KinshipTranslatorBasic {
7707
7967
  return `\u7570\u7236\u6BCD\u306E${relation}`;
7708
7968
  }
7709
7969
  spouse() {
7710
- return pick(sexOf2(this.personN), "\u592B", "\u59BB", "\u914D\u5076\u8005");
7970
+ return pick4(sexOf5(this.personN), "\u592B", "\u59BB", "\u914D\u5076\u8005");
7711
7971
  }
7712
7972
  ofSpouse(relation) {
7713
7973
  if (!relation) {
7714
7974
  return "";
7715
7975
  }
7716
- const spouseType = pick(
7717
- sexOf2(this.path?.[1].indi),
7976
+ const spouseType = pick4(
7977
+ sexOf5(this.path?.[1].indi),
7718
7978
  "\u592B",
7719
7979
  "\u59BB",
7720
7980
  "\u914D\u5076\u8005"
@@ -7726,7 +7986,7 @@ var KinshipTranslatorJa = class extends KinshipTranslatorBasic {
7726
7986
  return "";
7727
7987
  }
7728
7988
  const spouse = this.path?.[this.path.length - 1].indi;
7729
- const spouseType = pick(sexOf2(spouse), "\u592B", "\u59BB", "\u914D\u5076\u8005");
7989
+ const spouseType = pick4(sexOf5(spouse), "\u592B", "\u59BB", "\u914D\u5076\u8005");
7730
7990
  return `${relation}\u306E${spouseType}`;
7731
7991
  }
7732
7992
  of(relation) {
@@ -7762,7 +8022,28 @@ var KinshipTranslatorJa = class extends KinshipTranslatorBasic {
7762
8022
  if (!relation || !this.pathN?.relation) {
7763
8023
  return relation ?? "";
7764
8024
  }
7765
- return `${this.pathN.relation}\u306E${relation}`;
8025
+ if (this.pathN.relation === "step") {
8026
+ if (relation === "\u7236") {
8027
+ return "\u7EE7\u7236";
8028
+ }
8029
+ if (relation === "\u6BCD") {
8030
+ return "\u7D99\u6BCD";
8031
+ }
8032
+ if (relation === "\u606F\u5B50") {
8033
+ return "\u7D99\u5B50";
8034
+ }
8035
+ if (relation === "\u5A18") {
8036
+ return "\u7D99\u5A18";
8037
+ }
8038
+ return `\u7D99${relation}`;
8039
+ }
8040
+ if (this.pathN.relation === "adopted") {
8041
+ return `\u990A\u5B50\u306E${relation}`;
8042
+ }
8043
+ if (this.pathN.relation === "foster") {
8044
+ return `\u91CC\u89AA\u306E${relation}`;
8045
+ }
8046
+ return relation;
7766
8047
  }
7767
8048
  };
7768
8049
 
@@ -7771,22 +8052,32 @@ var InLawsZh = {
7771
8052
  "(\u5B50\u5973|\u5973\u513F|\u513F\u5B50)\u7684\u914D\u5076": "\u513F\u5AB3/\u5973\u5A7F",
7772
8053
  "(\u5B50\u5973|\u5973\u513F|\u513F\u5B50)\u7684\u59BB\u5B50": "\u513F\u5AB3",
7773
8054
  "(\u5B50\u5973|\u5973\u513F|\u513F\u5B50)\u7684\u4E08\u592B": "\u5973\u5A7F",
7774
- "(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)\u7684\u6BCD\u4EB2": "\u5CB3\u6BCD/\u5A46\u5A46",
7775
- "(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)\u7684\u7236\u4EB2": "\u5CB3\u7236/\u516C\u516C",
7776
- "(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)\u7684\u7236\u6BCD": "\u5CB3\u7236\u5CB3\u6BCD/\u516C\u516C\u5A46\u5A46",
8055
+ "\u59BB\u5B50\u7684\u6BCD\u4EB2": "\u5CB3\u6BCD",
8056
+ "\u4E08\u592B\u7684\u6BCD\u4EB2": "\u5A46\u5A46",
8057
+ "(\u914D\u5076)\u7684\u6BCD\u4EB2": "\u5CB3\u6BCD/\u5A46\u5A46",
8058
+ "\u59BB\u5B50\u7684\u7236\u4EB2": "\u5CB3\u7236",
8059
+ "\u4E08\u592B\u7684\u7236\u4EB2": "\u516C\u516C",
8060
+ "(\u914D\u5076)\u7684\u7236\u4EB2": "\u5CB3\u7236/\u516C\u516C",
8061
+ "\u59BB\u5B50\u7684\u7236\u6BCD": "\u5CB3\u7236\u5CB3\u6BCD",
8062
+ "\u4E08\u592B\u7684\u7236\u6BCD": "\u516C\u516C\u5A46\u5A46",
8063
+ "(\u914D\u5076)\u7684\u7236\u6BCD": "\u5CB3\u7236\u5CB3\u6BCD/\u516C\u516C\u5A46\u5A46",
7777
8064
  "(\u5F02\u7236\u6BCD\u7684)?(\u5144\u5F1F\u59D0\u59B9|\u59D0\u59B9|\u5144\u5F1F)\u7684\u59BB\u5B50": "\u5AC2\u5B50/\u5F1F\u59B9",
7778
8065
  "(\u5F02\u7236\u6BCD\u7684)?(\u5144\u5F1F\u59D0\u59B9|\u59D0\u59B9|\u5144\u5F1F)\u7684\u4E08\u592B": "\u59D0\u592B/\u59B9\u592B",
7779
8066
  "(\u5F02\u7236\u6BCD\u7684)?(\u5144\u5F1F\u59D0\u59B9|\u59D0\u59B9|\u5144\u5F1F)\u7684\u914D\u5076": "\u59FB\u4EB2\u5144\u5F1F\u59D0\u59B9",
7780
8067
  "(\u5F02\u7236\u6BCD\u7684)?\u59D0\u59B9\u7684(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)": "\u59D0\u592B/\u59B9\u592B",
7781
8068
  "(\u5F02\u7236\u6BCD\u7684)?\u5144\u5F1F\u7684(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)": "\u5AC2\u5B50/\u5F1F\u59B9",
7782
8069
  "(\u5F02\u7236\u6BCD\u7684)?\u5144\u5F1F\u59D0\u59B9\u7684(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)": "\u59FB\u4EB2\u5144\u5F1F\u59D0\u59B9",
7783
- "(\u5F02\u7236\u6BCD\u7684)?(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)\u7684\u59D0\u59B9": "\u59D1\u5B50/\u59E8\u5B50",
7784
- "(\u5F02\u7236\u6BCD\u7684)?(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)\u7684\u5144\u5F1F": "\u5927\u4F2F/\u5C0F\u53D4/\u5185\u5144/\u5185\u5F1F",
8070
+ "(\u5F02\u7236\u6BCD\u7684)?\u59BB\u5B50\u7684\u59D0\u59B9": "\u59E8\u5B50",
8071
+ "(\u5F02\u7236\u6BCD\u7684)?\u4E08\u592B\u7684\u59D0\u59B9": "\u59D1\u5B50",
8072
+ "(\u5F02\u7236\u6BCD\u7684)?(\u914D\u5076)\u7684\u59D0\u59B9": "\u59D1\u5B50/\u59E8\u5B50",
8073
+ "(\u5F02\u7236\u6BCD\u7684)?\u59BB\u5B50\u7684\u5144\u5F1F": "\u5185\u5144/\u5185\u5F1F",
8074
+ "(\u5F02\u7236\u6BCD\u7684)?\u4E08\u592B\u7684\u5144\u5F1F": "\u5927\u4F2F/\u5C0F\u53D4",
8075
+ "(\u5F02\u7236\u6BCD\u7684)?(\u914D\u5076)\u7684\u5144\u5F1F": "\u5927\u4F2F/\u5C0F\u53D4/\u5185\u5144/\u5185\u5F1F",
7785
8076
  "(\u5F02\u7236\u6BCD\u7684)?(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)\u7684\u5144\u5F1F\u59D0\u59B9": "\u59FB\u4EB2\u5144\u5F1F\u59D0\u59B9"
7786
8077
  };
7787
8078
 
7788
8079
  // src/kinship-translator/kinship-translator.zh.ts
7789
- var sexOf3 = (person) => {
8080
+ var sexOf6 = (person) => {
7790
8081
  if (person?.isMale?.()) {
7791
8082
  return "m";
7792
8083
  }
@@ -7795,7 +8086,7 @@ var sexOf3 = (person) => {
7795
8086
  }
7796
8087
  return "n";
7797
8088
  };
7798
- var pick2 = (sex, male, female, neutral) => {
8089
+ var pick5 = (sex, male, female, neutral) => {
7799
8090
  if (sex === "m") {
7800
8091
  return male;
7801
8092
  }
@@ -7808,41 +8099,41 @@ var lineal2 = (level, sex, kind) => {
7808
8099
  const L = Math.max(1, level);
7809
8100
  if (kind === "asc") {
7810
8101
  if (L <= 1) {
7811
- return pick2(sex, "\u7236\u4EB2", "\u6BCD\u4EB2", "\u7236\u6BCD");
8102
+ return pick5(sex, "\u7236\u4EB2", "\u6BCD\u4EB2", "\u7236\u6BCD");
7812
8103
  }
7813
8104
  if (L === 2) {
7814
- return pick2(sex, "\u7956\u7236", "\u7956\u6BCD", "\u7956\u7236\u6BCD");
8105
+ return pick5(sex, "\u7956\u7236", "\u7956\u6BCD", "\u7956\u7236\u6BCD");
7815
8106
  }
7816
8107
  if (L === 3) {
7817
- return pick2(sex, "\u66FE\u7956\u7236", "\u66FE\u7956\u6BCD", "\u66FE\u7956\u7236\u6BCD");
8108
+ return pick5(sex, "\u66FE\u7956\u7236", "\u66FE\u7956\u6BCD", "\u66FE\u7956\u7236\u6BCD");
7818
8109
  }
7819
8110
  if (L === 4) {
7820
- return pick2(sex, "\u9AD8\u7956\u7236", "\u9AD8\u7956\u6BCD", "\u9AD8\u7956\u7236\u6BCD");
8111
+ return pick5(sex, "\u9AD8\u7956\u7236", "\u9AD8\u7956\u6BCD", "\u9AD8\u7956\u7236\u6BCD");
7821
8112
  }
7822
- return pick2(sex, `${L}\u4E16\u7956`, `${L}\u4E16\u7956\u6BCD`, `${L}\u4E16\u7956\u7236\u6BCD`);
8113
+ return pick5(sex, `${L}\u4E16\u7956`, `${L}\u4E16\u7956\u6BCD`, `${L}\u4E16\u7956\u7236\u6BCD`);
7823
8114
  }
7824
8115
  if (L <= 1) {
7825
- return pick2(sex, "\u513F\u5B50", "\u5973\u513F", "\u5B50\u5973");
8116
+ return pick5(sex, "\u513F\u5B50", "\u5973\u513F", "\u5B50\u5973");
7826
8117
  }
7827
8118
  if (L === 2) {
7828
- return pick2(sex, "\u5B59\u5B50", "\u5B59\u5973", "\u5B59\u5B50\u5973");
8119
+ return pick5(sex, "\u5B59\u5B50", "\u5B59\u5973", "\u5B59\u5B50\u5973");
7829
8120
  }
7830
8121
  if (L === 3) {
7831
- return pick2(sex, "\u66FE\u5B59", "\u66FE\u5B59\u5973", "\u66FE\u5B59\u5B50\u5973");
8122
+ return pick5(sex, "\u66FE\u5B59", "\u66FE\u5B59\u5973", "\u66FE\u5B59\u5B50\u5973");
7832
8123
  }
7833
8124
  if (L === 4) {
7834
- return pick2(sex, "\u7384\u5B59", "\u7384\u5B59\u5973", "\u7384\u5B59\u5B50\u5973");
8125
+ return pick5(sex, "\u7384\u5B59", "\u7384\u5B59\u5973", "\u7384\u5B59\u5B50\u5973");
7835
8126
  }
7836
- return pick2(sex, `${L}\u4E16\u5B59`, `${L}\u4E16\u5B59\u5973`, `${L}\u4E16\u5B59\u5B50\u5973`);
8127
+ return pick5(sex, `${L}\u4E16\u5B59`, `${L}\u4E16\u5B59\u5973`, `${L}\u4E16\u5B59\u5B50\u5973`);
7837
8128
  };
7838
8129
  var cousinPlain2 = (degree, sex) => {
7839
8130
  if (degree <= 1) {
7840
- return pick2(sex, "\u5802\u8868\u5144\u5F1F", "\u5802\u8868\u59D0\u59B9", "\u5802\u8868\u4EB2");
8131
+ return pick5(sex, "\u5802\u8868\u5144\u5F1F", "\u5802\u8868\u59D0\u59B9", "\u5802\u8868\u4EB2");
7841
8132
  }
7842
8133
  if (degree === 2) {
7843
- return pick2(sex, "\u4ECE\u5802\u8868\u5144\u5F1F", "\u4ECE\u5802\u8868\u59D0\u59B9", "\u4ECE\u5802\u8868\u4EB2");
8134
+ return pick5(sex, "\u4ECE\u5802\u8868\u5144\u5F1F", "\u4ECE\u5802\u8868\u59D0\u59B9", "\u4ECE\u5802\u8868\u4EB2");
7844
8135
  }
7845
- return pick2(
8136
+ return pick5(
7846
8137
  sex,
7847
8138
  `${degree}\u4EE3\u5802\u8868\u5144\u5F1F`,
7848
8139
  `${degree}\u4EE3\u5802\u8868\u59D0\u59B9`,
@@ -7855,7 +8146,7 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
7855
8146
  if (degree > 0) {
7856
8147
  degree = degree - 1;
7857
8148
  }
7858
- return cousinPlain2(degree, sexOf3(this.personN));
8149
+ return cousinPlain2(degree, sexOf6(this.personN));
7859
8150
  }
7860
8151
  removal() {
7861
8152
  const level = this.pathN?.level ?? 0;
@@ -7867,56 +8158,56 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
7867
8158
  return level < 0 ? this.nibling() : this.auncle();
7868
8159
  }
7869
8160
  const removed = Math.abs(level);
7870
- return `${cousinPlain2(degree, sexOf3(this.personN))}\uFF08\u9694${removed}\u4EE3\uFF09`;
8161
+ return `${cousinPlain2(degree, sexOf6(this.personN))}\uFF08\u9694${removed}\u4EE3\uFF09`;
7871
8162
  }
7872
8163
  auncle() {
7873
8164
  const level = Math.abs(this.pathN?.level ?? 0);
7874
- const sex = sexOf3(this.personN);
7875
- if (level <= 2) {
7876
- return pick2(sex, "\u53D4\u53D4", "\u963F\u59E8", "\u53D4\u4F2F/\u59D1\u59E8");
8165
+ const sex = sexOf6(this.personN);
8166
+ if (level <= 1) {
8167
+ return pick5(sex, "\u53D4\u53D4", "\u963F\u59E8", "\u53D4\u4F2F/\u59D1\u59E8");
7877
8168
  }
7878
- if (level === 3) {
7879
- return pick2(sex, "\u4F2F\u53D4\u7956\u7236", "\u59D1\u7956\u6BCD", "\u4F2F\u53D4\u7956\u7236\u6BCD");
8169
+ if (level === 2) {
8170
+ return pick5(sex, "\u4F2F\u53D4\u7956\u7236", "\u59D1\u7956\u6BCD", "\u4F2F\u53D4\u7956\u7236\u6BCD");
7880
8171
  }
7881
- return pick2(
8172
+ return pick5(
7882
8173
  sex,
7883
- `${level - 2}\u4EE3\u524D\u7684\u53D4\u53D4`,
7884
- `${level - 2}\u4EE3\u524D\u7684\u963F\u59E8`,
7885
- `${level - 2}\u4EE3\u524D\u7684\u53D4\u4F2F/\u59D1\u59E8`
8174
+ `${level - 1}\u4EE3\u524D\u7684\u53D4\u53D4`,
8175
+ `${level - 1}\u4EE3\u524D\u7684\u963F\u59E8`,
8176
+ `${level - 1}\u4EE3\u524D\u7684\u53D4\u4F2F/\u59D1\u59E8`
7886
8177
  );
7887
8178
  }
7888
8179
  nibling() {
7889
8180
  const level = Math.abs(this.pathN?.level ?? 0);
7890
- const sex = sexOf3(this.personN);
7891
- if (level <= 2) {
7892
- return pick2(sex, "\u4F84\u5B50", "\u4F84\u5973", "\u4F84\u5B50\u5973");
8181
+ const sex = sexOf6(this.personN);
8182
+ if (level <= 1) {
8183
+ return pick5(sex, "\u4F84\u5B50", "\u4F84\u5973", "\u4F84\u5B50\u5973");
7893
8184
  }
7894
- if (level === 3) {
7895
- return pick2(sex, "\u4F84\u5B59", "\u4F84\u5B59\u5973", "\u4F84\u5B59\u5B50\u5973");
8185
+ if (level === 2) {
8186
+ return pick5(sex, "\u4F84\u5B59", "\u4F84\u5B59\u5973", "\u4F84\u5B59\u5B50\u5973");
7896
8187
  }
7897
- return pick2(
8188
+ return pick5(
7898
8189
  sex,
7899
- `${level - 2}\u4EE3\u4E0B\u7684\u4F84\u5B50`,
7900
- `${level - 2}\u4EE3\u4E0B\u7684\u4F84\u5973`,
7901
- `${level - 2}\u4EE3\u4E0B\u7684\u4F84\u5B50\u5973`
8190
+ `${level - 1}\u4EE3\u4E0B\u7684\u4F84\u5B50`,
8191
+ `${level - 1}\u4EE3\u4E0B\u7684\u4F84\u5973`,
8192
+ `${level - 1}\u4EE3\u4E0B\u7684\u4F84\u5B50\u5973`
7902
8193
  );
7903
8194
  }
7904
8195
  parent() {
7905
8196
  return lineal2(
7906
8197
  Math.abs(this.pathN?.level ?? 0),
7907
- sexOf3(this.personN),
8198
+ sexOf6(this.personN),
7908
8199
  "asc"
7909
8200
  );
7910
8201
  }
7911
8202
  child() {
7912
8203
  return lineal2(
7913
8204
  Math.abs(this.pathN?.level ?? 0),
7914
- sexOf3(this.personN),
8205
+ sexOf6(this.personN),
7915
8206
  "desc"
7916
8207
  );
7917
8208
  }
7918
8209
  sibling() {
7919
- return pick2(sexOf3(this.personN), "\u5144\u5F1F", "\u59D0\u59B9", "\u5144\u5F1F\u59D0\u59B9");
8210
+ return pick5(sexOf6(this.personN), "\u5144\u5F1F", "\u59D0\u59B9", "\u5144\u5F1F\u59D0\u59B9");
7920
8211
  }
7921
8212
  halfBlood(relation) {
7922
8213
  if (!relation || !this.isHalfBlood) {
@@ -7925,14 +8216,14 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
7925
8216
  return `\u5F02\u7236\u6BCD\u7684${relation}`;
7926
8217
  }
7927
8218
  spouse() {
7928
- return pick2(sexOf3(this.personN), "\u4E08\u592B", "\u59BB\u5B50", "\u914D\u5076");
8219
+ return pick5(sexOf6(this.personN), "\u4E08\u592B", "\u59BB\u5B50", "\u914D\u5076");
7929
8220
  }
7930
8221
  ofSpouse(relation) {
7931
8222
  if (!relation) {
7932
8223
  return "";
7933
8224
  }
7934
- const spouseType = pick2(
7935
- sexOf3(this.path?.[1].indi),
8225
+ const spouseType = pick5(
8226
+ sexOf6(this.path?.[1].indi),
7936
8227
  "\u4E08\u592B",
7937
8228
  "\u59BB\u5B50",
7938
8229
  "\u914D\u5076"
@@ -7944,7 +8235,7 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
7944
8235
  return "";
7945
8236
  }
7946
8237
  const spouse = this.path?.[this.path.length - 1].indi;
7947
- const spouseType = pick2(sexOf3(spouse), "\u4E08\u592B", "\u59BB\u5B50", "\u914D\u5076");
8238
+ const spouseType = pick5(sexOf6(spouse), "\u4E08\u592B", "\u59BB\u5B50", "\u914D\u5076");
7948
8239
  return `${relation}\u7684${spouseType}`;
7949
8240
  }
7950
8241
  of(relation) {
@@ -7980,7 +8271,40 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
7980
8271
  if (!relation || !this.pathN?.relation) {
7981
8272
  return relation ?? "";
7982
8273
  }
7983
- return `${this.pathN.relation}${relation}`;
8274
+ if (this.pathN.relation === "step") {
8275
+ if (relation === "\u7236\u4EB2") {
8276
+ return "\u7EE7\u7236";
8277
+ }
8278
+ if (relation === "\u6BCD\u4EB2") {
8279
+ return "\u7EE7\u6BCD";
8280
+ }
8281
+ if (relation === "\u513F\u5B50") {
8282
+ return "\u7EE7\u5B50";
8283
+ }
8284
+ if (relation === "\u5973\u513F") {
8285
+ return "\u7EE7\u5973";
8286
+ }
8287
+ return `\u7EE7${relation}`;
8288
+ }
8289
+ if (this.pathN.relation === "adopted") {
8290
+ if (relation === "\u7236\u4EB2") {
8291
+ return "\u517B\u7236";
8292
+ }
8293
+ if (relation === "\u6BCD\u4EB2") {
8294
+ return "\u517B\u6BCD";
8295
+ }
8296
+ if (relation === "\u513F\u5B50") {
8297
+ return "\u517B\u5B50";
8298
+ }
8299
+ if (relation === "\u5973\u513F") {
8300
+ return "\u517B\u5973";
8301
+ }
8302
+ return `\u517B${relation}`;
8303
+ }
8304
+ if (this.pathN.relation === "foster") {
8305
+ return `\u5BC4\u517B${relation}`;
8306
+ }
8307
+ return relation;
7984
8308
  }
7985
8309
  };
7986
8310
 
@@ -9572,7 +9896,7 @@ var collectExtensionTagsFrom = (node, into = /* @__PURE__ */ new Set()) => {
9572
9896
  // package.json
9573
9897
  var package_default = {
9574
9898
  name: "@treeviz/gedcom-parser",
9575
- version: "2.1.11"};
9899
+ version: "2.1.12"};
9576
9900
 
9577
9901
  // src/utils/get-product-details.ts
9578
9902
  var isDevelopment = () => {