@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
@@ -6439,7 +6439,7 @@ var KinshipTranslatorHU = class extends KinshipTranslatorBasic {
6439
6439
  }
6440
6440
  return `${hungarianOrdinalize(
6441
6441
  degree
6442
- )}unokatestv\xE9r ${level}x elt\xE1vol\xEDtva`;
6442
+ )}unokatestv\xE9r ${Math.abs(level)}x elt\xE1vol\xEDtva`;
6443
6443
  }
6444
6444
  auncle() {
6445
6445
  const level = this.pathN?.level ?? 0;
@@ -6483,14 +6483,25 @@ var KinshipTranslatorHU = class extends KinshipTranslatorBasic {
6483
6483
  return `${ordinalized ? `${ordinalized}unoka` : ""}testv\xE9r ${origPrefix.replace(/nagy$/, "")}unok\xE1ja`;
6484
6484
  }
6485
6485
  parent() {
6486
+ const level = Math.abs(this.pathN?.level ?? 0);
6487
+ if (level <= 1) {
6488
+ if (this.personN?.isMale()) {
6489
+ return "apa";
6490
+ }
6491
+ if (this.personN?.isFemale()) {
6492
+ return "anya";
6493
+ }
6494
+ return "sz\xFCl\u0151";
6495
+ }
6486
6496
  const prefix = this.directPrefix();
6497
+ const gen = prefix === "nagy" ? "" : prefix;
6487
6498
  if (this.personN?.isMale()) {
6488
- return `${prefix}apa`;
6499
+ return `${gen}nagyapa`;
6489
6500
  }
6490
6501
  if (this.personN?.isFemale()) {
6491
- return `${prefix}anya`;
6502
+ return `${gen}nagyanya`;
6492
6503
  }
6493
- return `${prefix}sz\xFCl\u0151`;
6504
+ return `${gen}nagysz\xFCl\u0151`;
6494
6505
  }
6495
6506
  child() {
6496
6507
  const level = Math.abs(this.pathN?.level ?? 0);
@@ -6684,27 +6695,30 @@ var KinshipTranslatorEn = class extends KinshipTranslatorBasic {
6684
6695
  if (!degree) {
6685
6696
  return level < 0 ? this.nibling() : this.auncle();
6686
6697
  }
6687
- return `${ordinalize(degree)} cousin ${level}x removed`;
6698
+ return `${ordinalize(degree)} cousin ${Math.abs(level)}x removed`;
6688
6699
  }
6689
6700
  auncle() {
6690
- const prefix = this.directPrefix();
6701
+ const level = Math.abs(this.pathN?.level ?? 0);
6702
+ const greats = level <= 1 ? "" : "great-".repeat(level - 1);
6691
6703
  if (this.personN?.isMale()) {
6692
- return `${prefix}uncle`;
6704
+ return `${greats}uncle`;
6693
6705
  }
6694
6706
  if (this.personN?.isFemale()) {
6695
- return `${prefix}aunt`;
6707
+ return `${greats}aunt`;
6696
6708
  }
6697
- return `${prefix}auncle`;
6709
+ return greats ? `${greats}uncle/${greats}aunt` : "uncle/aunt";
6698
6710
  }
6699
6711
  nibling() {
6700
- const prefix = this.directPrefix();
6712
+ const level = Math.abs(this.pathN?.level ?? 0);
6713
+ const greats = level <= 2 ? "" : "great-".repeat(level - 2);
6714
+ const grand = level <= 1 ? "" : "grand";
6701
6715
  if (this.personN?.isMale()) {
6702
- return `${prefix}nephew`;
6716
+ return `${greats}${grand}nephew`;
6703
6717
  }
6704
6718
  if (this.personN?.isFemale()) {
6705
- return `${prefix}niece`;
6719
+ return `${greats}${grand}niece`;
6706
6720
  }
6707
- return `${prefix}nibling`;
6721
+ return greats || grand ? `${greats}${grand}nephew/${greats}${grand}niece` : "nephew/niece";
6708
6722
  }
6709
6723
  parent() {
6710
6724
  const prefix = this.directPrefix();
@@ -6832,45 +6846,64 @@ var KinshipTranslatorEn = class extends KinshipTranslatorBasic {
6832
6846
  };
6833
6847
 
6834
6848
  // src/kinship-translator/patterns.de.ts
6849
+ var parentRelationsDe = {
6850
+ step: "Stief",
6851
+ foster: "Pflege",
6852
+ adopted: "Adoptiv"
6853
+ };
6835
6854
  var InLawsDe = {
6836
- "Ehepartner von (kind|tochter|sohn)": "Schwiegerkind",
6837
- "Ehefrau von (kind|tochter|sohn)": "Schwiegertochter",
6838
- "Ehemann von (kind|tochter|sohn)": "Schwiegersohn",
6839
- "mutter des (Ehepartner|Ehefrau|Ehemann)s": "Schwiegermutter",
6840
- "vater des (Ehepartner|Ehefrau|Ehemann)s": "Schwiegervater",
6841
- "elternteil des (Ehepartner|Ehefrau|Ehemann)s": "Schwiegerelternteil",
6842
- "Ehefrau von (Halb)?(geschwister|schwester|bruder)": "Schw\xE4gerin",
6843
- "Ehemann von (Halb)?(geschwister|schwester|bruder)": "Schwager",
6844
- "Ehepartner von (Halb)?(geschwister|schwester|bruder)": "Schwager/Schw\xE4gerin",
6845
- "(Halb)?schwester des (Ehepartner|Ehefrau|Ehemann)s": "Schw\xE4gerin",
6846
- "(Halb)?bruder des (Ehepartner|Ehefrau|Ehemann)s": "Schwager",
6847
- "(Halb)?geschwister des (Ehepartner|Ehefrau|Ehemann)s": "Schwager/Schw\xE4gerin"
6855
+ "Ehepartner von (Kind|Tochter|Sohn)": "Schwiegerkind",
6856
+ "Ehefrau von (Kind|Tochter|Sohn)": "Schwiegertochter",
6857
+ "Ehemann von (Kind|Tochter|Sohn)": "Schwiegersohn",
6858
+ "Mutter (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwiegermutter",
6859
+ "Vater (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwiegervater",
6860
+ "Elternteil (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwiegerelternteil",
6861
+ "Ehefrau von (Halb)?-?(Geschwister|Schwester|Bruder)": "Schw\xE4gerin",
6862
+ "Ehemann von (Halb)?-?(Geschwister|Schwester|Bruder)": "Schwager",
6863
+ "Ehepartner von (Halb)?-?(Geschwister|Schwester|Bruder)": "Schwager/Schw\xE4gerin",
6864
+ "(Halb)?-?(Schwester|schwester) (des Ehepartners|des Ehemanns|der Ehefrau)": "Schw\xE4gerin",
6865
+ "(Halb)?-?(Bruder|bruder) (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwager",
6866
+ "(Halb)?-?(Geschwister|geschwister) (des Ehepartners|des Ehemanns|der Ehefrau)": "Schwager/Schw\xE4gerin"
6848
6867
  };
6849
6868
 
6850
6869
  // src/kinship-translator/kinship-translator.de.ts
6851
- var KinshipTranslatorDe = class extends KinshipTranslatorBasic {
6852
- directPrefix() {
6853
- const level = Math.abs(this.pathN?.level ?? 0);
6854
- if (level <= 1) {
6855
- return "";
6856
- }
6857
- if (level === 2) {
6858
- return "Gro\xDF";
6859
- }
6860
- if (level === 3) {
6861
- return "Urgro\xDF";
6862
- }
6863
- return `Ur${level - 2}-gro\xDF`;
6870
+ var sexOf = (person) => {
6871
+ if (person?.isMale?.()) {
6872
+ return "m";
6873
+ }
6874
+ if (person?.isFemale?.()) {
6875
+ return "f";
6864
6876
  }
6877
+ return "n";
6878
+ };
6879
+ var pick = (sex, male, female, neutral) => {
6880
+ if (sex === "m") {
6881
+ return male;
6882
+ }
6883
+ if (sex === "f") {
6884
+ return female;
6885
+ }
6886
+ return neutral;
6887
+ };
6888
+ var ur = (count) => count > 0 ? "Ur".repeat(count) : "";
6889
+ var genitiveArticle = (spouseType) => {
6890
+ if (spouseType === "Ehefrau") {
6891
+ return `der ${spouseType}`;
6892
+ }
6893
+ return `des ${spouseType}s`;
6894
+ };
6895
+ var KinshipTranslatorDe = class extends KinshipTranslatorBasic {
6865
6896
  indirect() {
6866
6897
  let degree = Math.abs(this.pathN?.degree ?? 0);
6867
6898
  if (degree > 0) {
6868
6899
  degree = degree - 1;
6869
6900
  }
6870
- if (degree === 1) {
6871
- return `Cousin`;
6901
+ const sex = sexOf(this.personN);
6902
+ const cousin = pick(sex, "Cousin", "Cousine", "Cousin/Cousine");
6903
+ if (degree <= 1) {
6904
+ return cousin;
6872
6905
  }
6873
- return `Cousin ${degree}. Grades`;
6906
+ return `${cousin} ${degree}. Grades`;
6874
6907
  }
6875
6908
  removal() {
6876
6909
  const level = this.pathN?.level ?? 0;
@@ -6881,101 +6914,101 @@ var KinshipTranslatorDe = class extends KinshipTranslatorBasic {
6881
6914
  if (!degree) {
6882
6915
  return level < 0 ? this.nibling() : this.auncle();
6883
6916
  }
6884
- return `Cousin ${degree}. Grades ${Math.abs(level)}\xD7 entfernt`;
6917
+ return `${this.indirect()} ${Math.abs(level)}\xD7 entfernt`;
6885
6918
  }
6886
6919
  auncle() {
6887
- const prefix = this.directPrefix();
6888
- if (this.personN?.isMale()) {
6889
- return `${prefix}onkel`;
6890
- }
6891
- if (this.personN?.isFemale()) {
6892
- return `${prefix}tante`;
6920
+ const level = Math.abs(this.pathN?.level ?? 0);
6921
+ const sex = sexOf(this.personN);
6922
+ if (level <= 1) {
6923
+ return pick(sex, "Onkel", "Tante", "Onkel/Tante");
6893
6924
  }
6894
- return `${prefix}onkel/tante`;
6925
+ const prefix = `${ur(level - 2)}Gro\xDF`;
6926
+ return pick(
6927
+ sex,
6928
+ `${prefix}onkel`,
6929
+ `${prefix}tante`,
6930
+ `${prefix}onkel/tante`
6931
+ );
6895
6932
  }
6896
6933
  nibling() {
6897
- const prefix = this.directPrefix();
6898
- if (this.personN?.isMale()) {
6899
- return `${prefix}neffe`;
6900
- }
6901
- if (this.personN?.isFemale()) {
6902
- return `${prefix}nichte`;
6934
+ const level = Math.abs(this.pathN?.level ?? 0);
6935
+ const sex = sexOf(this.personN);
6936
+ if (level <= 1) {
6937
+ return pick(sex, "Neffe", "Nichte", "Neffe/Nichte");
6903
6938
  }
6904
- return `${prefix}neffe/nichte`;
6939
+ const prefix = `${ur(level - 2)}Gro\xDF`;
6940
+ return pick(
6941
+ sex,
6942
+ `${prefix}neffe`,
6943
+ `${prefix}nichte`,
6944
+ `${prefix}neffe/nichte`
6945
+ );
6905
6946
  }
6906
6947
  parent() {
6907
- const prefix = this.directPrefix();
6908
- if (this.personN?.isMale()) {
6909
- return `${prefix}vater`;
6910
- }
6911
- if (this.personN?.isFemale()) {
6912
- return `${prefix}mutter`;
6948
+ const level = Math.abs(this.pathN?.level ?? 0);
6949
+ const sex = sexOf(this.personN);
6950
+ if (level <= 1) {
6951
+ return pick(sex, "Vater", "Mutter", "Elternteil");
6913
6952
  }
6914
- return `${prefix}elternteil`;
6953
+ const prefix = `${ur(level - 2)}Gro\xDF`;
6954
+ return pick(
6955
+ sex,
6956
+ `${prefix}vater`,
6957
+ `${prefix}mutter`,
6958
+ `${prefix}elternteil`
6959
+ );
6915
6960
  }
6916
6961
  child() {
6917
- const prefix = this.directPrefix();
6918
- if (this.personN?.isMale()) {
6919
- return `${prefix}sohn`;
6920
- }
6921
- if (this.personN?.isFemale()) {
6922
- return `${prefix}tochter`;
6962
+ const level = Math.abs(this.pathN?.level ?? 0);
6963
+ const sex = sexOf(this.personN);
6964
+ if (level <= 1) {
6965
+ return pick(sex, "Sohn", "Tochter", "Kind");
6923
6966
  }
6924
- return `${prefix}kind`;
6967
+ const prefix = ur(level - 2);
6968
+ return pick(
6969
+ sex,
6970
+ `${prefix}Enkel`,
6971
+ `${prefix}Enkelin`,
6972
+ `${prefix}Enkelkind`
6973
+ );
6925
6974
  }
6926
6975
  sibling() {
6927
- if (this.personN?.isMale()) {
6928
- return "bruder";
6929
- }
6930
- if (this.personN?.isFemale()) {
6931
- return "schwester";
6932
- }
6933
- return "geschwister";
6976
+ return pick(sexOf(this.personN), "Bruder", "Schwester", "Geschwister");
6934
6977
  }
6935
6978
  halfBlood(relation) {
6936
6979
  if (!relation || !this.isHalfBlood) {
6937
6980
  return relation ?? "";
6938
6981
  }
6939
- if (/^[A-ZÄÖÜ]/.test(relation) || /[-\s]/.test(relation)) {
6982
+ if (/[\s-]/.test(relation) || /^(Groß|Ur)/.test(relation)) {
6940
6983
  return `Halb-${relation}`;
6941
6984
  }
6942
- return `Halb${relation}`;
6985
+ return `Halb${relation.charAt(0).toLowerCase()}${relation.slice(1)}`;
6943
6986
  }
6944
6987
  spouse() {
6945
- if (this.personN?.isMale()) {
6946
- return "Ehemann";
6947
- }
6948
- if (this.personN?.isFemale()) {
6949
- return "Ehefrau";
6950
- }
6951
- return "Ehepartner";
6988
+ return pick(sexOf(this.personN), "Ehemann", "Ehefrau", "Ehepartner");
6952
6989
  }
6953
6990
  ofSpouse(relation) {
6954
6991
  if (!relation) {
6955
6992
  return "";
6956
6993
  }
6957
- const spouse = this.path?.[1].indi;
6958
- let spouseType = "Ehepartner";
6959
- if (spouse?.isMale()) {
6960
- spouseType = "Ehemann";
6961
- }
6962
- if (spouse?.isFemale()) {
6963
- spouseType = "Ehefrau";
6964
- }
6965
- return `${relation} des ${spouseType}s`;
6994
+ const spouseType = pick(
6995
+ sexOf(this.path?.[1].indi),
6996
+ "Ehemann",
6997
+ "Ehefrau",
6998
+ "Ehepartner"
6999
+ );
7000
+ return `${relation} ${genitiveArticle(spouseType)}`;
6966
7001
  }
6967
7002
  spouseOf(relation) {
6968
7003
  if (!relation) {
6969
7004
  return "";
6970
7005
  }
6971
- const spouse = this.path?.[this.path.length - 1].indi;
6972
- let spouseType = "Ehepartner";
6973
- if (spouse?.isMale()) {
6974
- spouseType = "Ehemann";
6975
- }
6976
- if (spouse?.isFemale()) {
6977
- spouseType = "Ehefrau";
6978
- }
7006
+ const spouseType = pick(
7007
+ sexOf(this.path?.[this.path.length - 1].indi),
7008
+ "Ehemann",
7009
+ "Ehefrau",
7010
+ "Ehepartner"
7011
+ );
6979
7012
  return `${spouseType} von ${relation}`;
6980
7013
  }
6981
7014
  of(relation) {
@@ -6993,8 +7026,8 @@ var KinshipTranslatorDe = class extends KinshipTranslatorBasic {
6993
7026
  if (!name || !relation) {
6994
7027
  return relation ?? "";
6995
7028
  }
6996
- if (relation.includes(" des ") || relation.includes(" von ")) {
6997
- return relation.replace(/ (des|von) /, ` $1 ${name}s `);
7029
+ if (relation.includes(" des ") || relation.includes(" der ") || relation.includes(" von ")) {
7030
+ return relation.replace(/ (des|der|von) /, ` $1 ${name}s `);
6998
7031
  }
6999
7032
  return `${name}s ${relation}`;
7000
7033
  }
@@ -7024,50 +7057,82 @@ var KinshipTranslatorDe = class extends KinshipTranslatorBasic {
7024
7057
  if (!relation || !this.pathN?.relation) {
7025
7058
  return relation ?? "";
7026
7059
  }
7027
- return `${this.pathN.relation} ${relation}`;
7060
+ const prefix = parentRelationsDe[this.pathN.relation];
7061
+ if (!prefix) {
7062
+ return relation;
7063
+ }
7064
+ if (prefix.endsWith("-") || prefix.endsWith(" ")) {
7065
+ return `${prefix}${relation}`;
7066
+ }
7067
+ return `${prefix}${relation.charAt(0).toLowerCase()}${relation.slice(1)}`;
7028
7068
  }
7029
7069
  };
7030
7070
 
7031
7071
  // src/kinship-translator/patterns.fr.ts
7072
+ var parentRelationsFr = {
7073
+ step: "step",
7074
+ foster: "foster",
7075
+ adopted: "adopted"
7076
+ };
7032
7077
  var InLawsFr = {
7033
7078
  "conjoint de (enfant|fille|fils)": "beau-fils/belle-fille",
7034
7079
  "\xE9pouse de (enfant|fille|fils)": "belle-fille",
7035
7080
  "mari de (enfant|fille|fils)": "gendre",
7036
- "m\xE8re du (conjoint|\xE9pouse|mari)": "belle-m\xE8re",
7037
- "p\xE8re du (conjoint|\xE9pouse|mari)": "beau-p\xE8re",
7038
- "parent du (conjoint|\xE9pouse|mari)": "beau-parent",
7081
+ "m\xE8re (du mari|du conjoint|de l'\xE9pouse)": "belle-m\xE8re",
7082
+ "p\xE8re (du mari|du conjoint|de l'\xE9pouse)": "beau-p\xE8re",
7083
+ "parent (du mari|du conjoint|de l'\xE9pouse)": "beau-parent",
7039
7084
  "\xE9pouse de (demi-)?(fr\xE8re/s\u0153ur|s\u0153ur|fr\xE8re)": "belle-s\u0153ur",
7040
7085
  "mari de (demi-)?(fr\xE8re/s\u0153ur|s\u0153ur|fr\xE8re)": "beau-fr\xE8re",
7041
7086
  "conjoint de (demi-)?(fr\xE8re/s\u0153ur|s\u0153ur|fr\xE8re)": "beau-fr\xE8re/belle-s\u0153ur",
7042
- "(demi-)?s\u0153ur du (conjoint|\xE9pouse|mari)": "belle-s\u0153ur",
7043
- "(demi-)?fr\xE8re du (conjoint|\xE9pouse|mari)": "beau-fr\xE8re",
7044
- "(demi-)?fr\xE8re/s\u0153ur du (conjoint|\xE9pouse|mari)": "beau-fr\xE8re/belle-s\u0153ur"
7087
+ "(demi-)?s\u0153ur (du mari|du conjoint|de l'\xE9pouse)": "belle-s\u0153ur",
7088
+ "(demi-)?fr\xE8re (du mari|du conjoint|de l'\xE9pouse)": "beau-fr\xE8re",
7089
+ "(demi-)?fr\xE8re/s\u0153ur (du mari|du conjoint|de l'\xE9pouse)": "beau-fr\xE8re/belle-s\u0153ur"
7045
7090
  };
7046
7091
 
7047
7092
  // src/kinship-translator/kinship-translator.fr.ts
7048
- var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
7049
- directPrefix() {
7050
- const level = Math.abs(this.pathN?.level ?? 0);
7051
- if (level <= 1) {
7052
- return "";
7053
- }
7054
- if (level === 2) {
7055
- return "grand-";
7056
- }
7057
- if (level === 3) {
7058
- return "arri\xE8re-grand-";
7059
- }
7060
- return `arri\xE8re${level - 2}-grand-`;
7093
+ var sexOf2 = (person) => {
7094
+ if (person?.isMale?.()) {
7095
+ return "m";
7096
+ }
7097
+ if (person?.isFemale?.()) {
7098
+ return "f";
7099
+ }
7100
+ return "n";
7101
+ };
7102
+ var pick2 = (sex, male, female, neutral) => {
7103
+ if (sex === "m") {
7104
+ return male;
7061
7105
  }
7106
+ if (sex === "f") {
7107
+ return female;
7108
+ }
7109
+ return neutral;
7110
+ };
7111
+ var arriere = (count) => count > 0 ? "arri\xE8re-".repeat(count) : "";
7112
+ var frenchOrdinal = (n) => n === 1 ? "1er" : `${n}e`;
7113
+ var isFeminineRelation = (relation) => /mère|fille|sœur|tante|nièce|cousine|épouse/.test(relation);
7114
+ var ofSpousePrep = (spouseType) => {
7115
+ if (spouseType === "\xE9pouse") {
7116
+ return "de l'";
7117
+ }
7118
+ return "du ";
7119
+ };
7120
+ var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
7062
7121
  indirect() {
7063
7122
  let degree = Math.abs(this.pathN?.degree ?? 0);
7064
7123
  if (degree > 0) {
7065
7124
  degree = degree - 1;
7066
7125
  }
7067
- if (degree === 1) {
7068
- return `cousin`;
7126
+ const cousin = pick2(
7127
+ sexOf2(this.personN),
7128
+ "cousin",
7129
+ "cousine",
7130
+ "cousin/cousine"
7131
+ );
7132
+ if (degree <= 1) {
7133
+ return cousin;
7069
7134
  }
7070
- return `cousin au ${ordinalize(degree)} degr\xE9`;
7135
+ return `${cousin} au ${frenchOrdinal(degree)} degr\xE9`;
7071
7136
  }
7072
7137
  removal() {
7073
7138
  const level = this.pathN?.level ?? 0;
@@ -7078,56 +7143,57 @@ var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
7078
7143
  if (!degree) {
7079
7144
  return level < 0 ? this.nibling() : this.auncle();
7080
7145
  }
7081
- return `cousin au ${ordinalize(degree)} degr\xE9 ${Math.abs(level)}\xD7 \xE9loign\xE9`;
7146
+ return `${this.indirect()} ${Math.abs(level)}\xD7 \xE9loign\xE9`;
7082
7147
  }
7083
7148
  auncle() {
7084
- const prefix = this.directPrefix();
7085
- if (this.personN?.isMale()) {
7086
- return `${prefix}oncle`;
7087
- }
7088
- if (this.personN?.isFemale()) {
7089
- return `${prefix}tante`;
7149
+ const level = Math.abs(this.pathN?.level ?? 0);
7150
+ const sex = sexOf2(this.personN);
7151
+ const base = pick2(sex, "oncle", "tante", "oncle/tante");
7152
+ if (level <= 1) {
7153
+ return base;
7090
7154
  }
7091
- return `${prefix}oncle/tante`;
7155
+ const grands = pick2(
7156
+ sex,
7157
+ "grand-oncle",
7158
+ "grand-tante",
7159
+ "grand-oncle/tante"
7160
+ );
7161
+ return `${arriere(level - 2)}${grands}`;
7092
7162
  }
7093
7163
  nibling() {
7094
- const prefix = this.directPrefix();
7095
- if (this.personN?.isMale()) {
7096
- return `${prefix}neveu`;
7097
- }
7098
- if (this.personN?.isFemale()) {
7099
- return `${prefix}ni\xE8ce`;
7164
+ const level = Math.abs(this.pathN?.level ?? 0);
7165
+ const sex = sexOf2(this.personN);
7166
+ if (level <= 1) {
7167
+ return pick2(sex, "neveu", "ni\xE8ce", "neveu/ni\xE8ce");
7100
7168
  }
7101
- return `${prefix}neveu/ni\xE8ce`;
7169
+ const grands = pick2(
7170
+ sex,
7171
+ "grand-neveu",
7172
+ "grande-ni\xE8ce",
7173
+ "grand-neveu/grande-ni\xE8ce"
7174
+ );
7175
+ return `${arriere(level - 2)}${grands}`;
7102
7176
  }
7103
7177
  parent() {
7104
- const prefix = this.directPrefix();
7105
- if (this.personN?.isMale()) {
7106
- return `${prefix}p\xE8re`;
7107
- }
7108
- if (this.personN?.isFemale()) {
7109
- return `${prefix}m\xE8re`;
7178
+ const level = Math.abs(this.pathN?.level ?? 0);
7179
+ const sex = sexOf2(this.personN);
7180
+ if (level <= 1) {
7181
+ return pick2(sex, "p\xE8re", "m\xE8re", "parent");
7110
7182
  }
7111
- return `${prefix}parent`;
7183
+ const grands = pick2(sex, "grand-p\xE8re", "grand-m\xE8re", "grand-parent");
7184
+ return `${arriere(level - 2)}${grands}`;
7112
7185
  }
7113
7186
  child() {
7114
- const prefix = this.directPrefix();
7115
- if (this.personN?.isMale()) {
7116
- return `${prefix}fils`;
7117
- }
7118
- if (this.personN?.isFemale()) {
7119
- return `${prefix}fille`;
7187
+ const level = Math.abs(this.pathN?.level ?? 0);
7188
+ const sex = sexOf2(this.personN);
7189
+ if (level <= 1) {
7190
+ return pick2(sex, "fils", "fille", "enfant");
7120
7191
  }
7121
- return `${prefix}enfant`;
7192
+ const petits = pick2(sex, "petit-fils", "petite-fille", "petit-enfant");
7193
+ return `${arriere(level - 2)}${petits}`;
7122
7194
  }
7123
7195
  sibling() {
7124
- if (this.personN?.isMale()) {
7125
- return "fr\xE8re";
7126
- }
7127
- if (this.personN?.isFemale()) {
7128
- return "s\u0153ur";
7129
- }
7130
- return "fr\xE8re/s\u0153ur";
7196
+ return pick2(sexOf2(this.personN), "fr\xE8re", "s\u0153ur", "fr\xE8re/s\u0153ur");
7131
7197
  }
7132
7198
  halfBlood(relation) {
7133
7199
  if (!relation || !this.isHalfBlood) {
@@ -7136,40 +7202,30 @@ var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
7136
7202
  return `demi-${relation}`;
7137
7203
  }
7138
7204
  spouse() {
7139
- if (this.personN?.isMale()) {
7140
- return "mari";
7141
- }
7142
- if (this.personN?.isFemale()) {
7143
- return "\xE9pouse";
7144
- }
7145
- return "conjoint";
7205
+ return pick2(sexOf2(this.personN), "mari", "\xE9pouse", "conjoint");
7146
7206
  }
7147
7207
  ofSpouse(relation) {
7148
7208
  if (!relation) {
7149
7209
  return "";
7150
7210
  }
7151
- const spouse = this.path?.[1].indi;
7152
- let spouseType = "conjoint";
7153
- if (spouse?.isMale()) {
7154
- spouseType = "mari";
7155
- }
7156
- if (spouse?.isFemale()) {
7157
- spouseType = "\xE9pouse";
7158
- }
7159
- return `${relation} du ${spouseType}`;
7211
+ const spouseType = pick2(
7212
+ sexOf2(this.path?.[1].indi),
7213
+ "mari",
7214
+ "\xE9pouse",
7215
+ "conjoint"
7216
+ );
7217
+ return `${relation} ${ofSpousePrep(spouseType)}${spouseType}`;
7160
7218
  }
7161
7219
  spouseOf(relation) {
7162
7220
  if (!relation) {
7163
7221
  return "";
7164
7222
  }
7165
- const spouse = this.path?.[this.path.length - 1].indi;
7166
- let spouseType = "conjoint";
7167
- if (spouse?.isMale()) {
7168
- spouseType = "mari";
7169
- }
7170
- if (spouse?.isFemale()) {
7171
- spouseType = "\xE9pouse";
7172
- }
7223
+ const spouseType = pick2(
7224
+ sexOf2(this.path?.[this.path.length - 1].indi),
7225
+ "mari",
7226
+ "\xE9pouse",
7227
+ "conjoint"
7228
+ );
7173
7229
  return `${spouseType} de ${relation}`;
7174
7230
  }
7175
7231
  of(relation) {
@@ -7190,6 +7246,9 @@ var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
7190
7246
  if (relation.includes(" du ") || relation.includes(" de ")) {
7191
7247
  return relation.replace(/ (du|de) /, ` $1 ${name} `);
7192
7248
  }
7249
+ if (relation.includes(" de l'")) {
7250
+ return relation.replace(" de l'", ` de ${name} l'`);
7251
+ }
7193
7252
  return `${relation} de ${name}`;
7194
7253
  }
7195
7254
  inLaw(relation) {
@@ -7218,50 +7277,118 @@ var KinshipTranslatorFr = class extends KinshipTranslatorBasic {
7218
7277
  if (!relation || !this.pathN?.relation) {
7219
7278
  return relation ?? "";
7220
7279
  }
7221
- return `${this.pathN.relation} ${relation}`;
7280
+ const kind = parentRelationsFr[this.pathN.relation];
7281
+ if (!kind) {
7282
+ return relation;
7283
+ }
7284
+ if (kind === "step") {
7285
+ return `${isFeminineRelation(relation) ? "belle-" : "beau-"}${relation}`;
7286
+ }
7287
+ if (kind === "adopted") {
7288
+ return `${relation} ${isFeminineRelation(relation) ? "adoptive" : "adoptif"}`;
7289
+ }
7290
+ if (kind === "foster") {
7291
+ return `${relation} d'accueil`;
7292
+ }
7293
+ return relation;
7222
7294
  }
7223
7295
  };
7224
7296
 
7225
7297
  // src/kinship-translator/patterns.es.ts
7298
+ var parentRelationsEs = {
7299
+ step: {
7300
+ padre: "padrastro",
7301
+ madre: "madrastra",
7302
+ hijo: "hijastro",
7303
+ hija: "hijastra",
7304
+ hermano: "hermanastro",
7305
+ hermana: "hermanastra",
7306
+ abuelo: "abuelastro",
7307
+ abuela: "abuelastra"
7308
+ }
7309
+ };
7226
7310
  var InLawsEs = {
7227
7311
  "c\xF3nyuge de (hijo/hija|hija|hijo)": "yerno/nuera",
7228
7312
  "esposa de (hijo/hija|hija|hijo)": "nuera",
7229
7313
  "esposo de (hijo/hija|hija|hijo)": "yerno",
7230
- "madre del (c\xF3nyuge|esposa|esposo)": "suegra",
7231
- "padre del (c\xF3nyuge|esposa|esposo)": "suegro",
7232
- "padre/madre del (c\xF3nyuge|esposa|esposo)": "suegro/suegra",
7314
+ "madre (del c\xF3nyuge|del esposo|de la esposa)": "suegra",
7315
+ "padre (del c\xF3nyuge|del esposo|de la esposa)": "suegro",
7316
+ "padre/madre (del c\xF3nyuge|del esposo|de la esposa)": "suegro/suegra",
7233
7317
  "esposa de (medio |media |medio/a )?(hermano/hermana|hermana|hermano)": "cu\xF1ada",
7234
7318
  "esposo de (medio |media |medio/a )?(hermano/hermana|hermana|hermano)": "cu\xF1ado",
7235
7319
  "c\xF3nyuge de (medio |media |medio/a )?(hermano/hermana|hermana|hermano)": "cu\xF1ado/cu\xF1ada",
7236
- "(medio |media |medio/a )?hermana del (c\xF3nyuge|esposa|esposo)": "cu\xF1ada",
7237
- "(medio |media |medio/a )?hermano del (c\xF3nyuge|esposa|esposo)": "cu\xF1ado",
7238
- "(medio |media |medio/a )?hermano/hermana del (c\xF3nyuge|esposa|esposo)": "cu\xF1ado/cu\xF1ada"
7320
+ "(medio |media |medio/a )?hermana (del c\xF3nyuge|del esposo|de la esposa)": "cu\xF1ada",
7321
+ "(medio |media |medio/a )?hermano (del c\xF3nyuge|del esposo|de la esposa)": "cu\xF1ado",
7322
+ "(medio |media |medio/a )?hermano/hermana (del c\xF3nyuge|del esposo|de la esposa)": "cu\xF1ado/cu\xF1ada"
7239
7323
  };
7240
7324
 
7241
7325
  // src/kinship-translator/kinship-translator.es.ts
7242
- var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
7243
- directPrefix() {
7244
- const level = Math.abs(this.pathN?.level ?? 0);
7245
- if (level <= 1) {
7246
- return "";
7247
- }
7248
- if (level === 2) {
7249
- return "bisabuel";
7250
- }
7251
- if (level === 3) {
7252
- return "tatarabuel";
7253
- }
7254
- return `t\xE1tara${level - 2}-abuel`;
7326
+ var sexOf3 = (person) => {
7327
+ if (person?.isMale?.()) {
7328
+ return "m";
7329
+ }
7330
+ if (person?.isFemale?.()) {
7331
+ return "f";
7332
+ }
7333
+ return "n";
7334
+ };
7335
+ var pick3 = (sex, male, female, neutral) => {
7336
+ if (sex === "m") {
7337
+ return male;
7255
7338
  }
7339
+ if (sex === "f") {
7340
+ return female;
7341
+ }
7342
+ return neutral;
7343
+ };
7344
+ var SPANISH_ORDINALS_M = [
7345
+ "",
7346
+ "",
7347
+ "segundo",
7348
+ "tercero",
7349
+ "cuarto",
7350
+ "quinto",
7351
+ "sexto",
7352
+ "s\xE9ptimo",
7353
+ "octavo",
7354
+ "noveno",
7355
+ "d\xE9cimo"
7356
+ ];
7357
+ var SPANISH_ORDINALS_F = [
7358
+ "",
7359
+ "",
7360
+ "segunda",
7361
+ "tercera",
7362
+ "cuarta",
7363
+ "quinta",
7364
+ "sexta",
7365
+ "s\xE9ptima",
7366
+ "octava",
7367
+ "novena",
7368
+ "d\xE9cima"
7369
+ ];
7370
+ var spanishOrdinal = (n, sex) => {
7371
+ const list = sex === "f" ? SPANISH_ORDINALS_F : SPANISH_ORDINALS_M;
7372
+ return list[n] ?? `${n}.\xBA`;
7373
+ };
7374
+ var ofSpousePrep2 = (spouseType) => {
7375
+ if (spouseType === "esposa") {
7376
+ return "de la ";
7377
+ }
7378
+ return "del ";
7379
+ };
7380
+ var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
7256
7381
  indirect() {
7257
7382
  let degree = Math.abs(this.pathN?.degree ?? 0);
7258
7383
  if (degree > 0) {
7259
7384
  degree = degree - 1;
7260
7385
  }
7261
- if (degree === 1) {
7262
- return `primo`;
7386
+ const sex = sexOf3(this.personN);
7387
+ const cousin = pick3(sex, "primo", "prima", "primo/prima");
7388
+ if (degree <= 1) {
7389
+ return cousin;
7263
7390
  }
7264
- return `primo ${ordinalize(degree)}`;
7391
+ return `${cousin} ${spanishOrdinal(degree, sex)}`;
7265
7392
  }
7266
7393
  removal() {
7267
7394
  const level = this.pathN?.level ?? 0;
@@ -7272,56 +7399,133 @@ var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
7272
7399
  if (!degree) {
7273
7400
  return level < 0 ? this.nibling() : this.auncle();
7274
7401
  }
7275
- return `primo ${ordinalize(degree)} ${Math.abs(level)}\xD7 separado`;
7402
+ return `${this.indirect()} ${Math.abs(level)}\xD7 separado`;
7276
7403
  }
7277
7404
  auncle() {
7278
- const prefix = this.directPrefix();
7279
- if (this.personN?.isMale()) {
7280
- return `${prefix}t\xEDo`;
7405
+ const level = Math.abs(this.pathN?.level ?? 0);
7406
+ const sex = sexOf3(this.personN);
7407
+ if (level <= 1) {
7408
+ return pick3(sex, "t\xEDo", "t\xEDa", "t\xEDo/t\xEDa");
7281
7409
  }
7282
- if (this.personN?.isFemale()) {
7283
- return `${prefix}t\xEDa`;
7410
+ if (level === 2) {
7411
+ return pick3(sex, "t\xEDo abuelo", "t\xEDa abuela", "t\xEDo/t\xEDa abuelo");
7412
+ }
7413
+ if (level === 3) {
7414
+ return pick3(
7415
+ sex,
7416
+ "t\xEDo bisabuelo",
7417
+ "t\xEDa bisabuela",
7418
+ "t\xEDo/t\xEDa bisabuelo"
7419
+ );
7284
7420
  }
7285
- return `${prefix}t\xEDo/t\xEDa`;
7421
+ return pick3(
7422
+ sex,
7423
+ `t\xEDo abuelo (${level - 1}.\xBA)`,
7424
+ `t\xEDa abuela (${level - 1}.\xAA)`,
7425
+ `t\xEDo/t\xEDa abuelo (${level - 1}.\xBA)`
7426
+ );
7286
7427
  }
7287
7428
  nibling() {
7288
- const prefix = this.directPrefix();
7289
- if (this.personN?.isMale()) {
7290
- return `${prefix}sobrino`;
7429
+ const level = Math.abs(this.pathN?.level ?? 0);
7430
+ const sex = sexOf3(this.personN);
7431
+ if (level <= 1) {
7432
+ return pick3(sex, "sobrino", "sobrina", "sobrino/sobrina");
7291
7433
  }
7292
- if (this.personN?.isFemale()) {
7293
- return `${prefix}sobrina`;
7434
+ if (level === 2) {
7435
+ return pick3(
7436
+ sex,
7437
+ "sobrino nieto",
7438
+ "sobrina nieta",
7439
+ "sobrino/sobrina nieto"
7440
+ );
7294
7441
  }
7295
- return `${prefix}sobrino/sobrina`;
7442
+ if (level === 3) {
7443
+ return pick3(
7444
+ sex,
7445
+ "sobrino bisnieto",
7446
+ "sobrina bisnieta",
7447
+ "sobrino/sobrina bisnieto"
7448
+ );
7449
+ }
7450
+ return pick3(
7451
+ sex,
7452
+ `sobrino nieto (${level - 1}.\xBA)`,
7453
+ `sobrina nieta (${level - 1}.\xAA)`,
7454
+ `sobrino/sobrina nieto (${level - 1}.\xBA)`
7455
+ );
7296
7456
  }
7297
7457
  parent() {
7298
- const prefix = this.directPrefix();
7299
- if (this.personN?.isMale()) {
7300
- return `${prefix}padre`;
7458
+ const level = Math.abs(this.pathN?.level ?? 0);
7459
+ const sex = sexOf3(this.personN);
7460
+ if (level <= 1) {
7461
+ return pick3(sex, "padre", "madre", "padre/madre");
7301
7462
  }
7302
- if (this.personN?.isFemale()) {
7303
- return `${prefix}madre`;
7463
+ if (level === 2) {
7464
+ return pick3(sex, "abuelo", "abuela", "abuelo/abuela");
7465
+ }
7466
+ if (level === 3) {
7467
+ return pick3(sex, "bisabuelo", "bisabuela", "bisabuelo/bisabuela");
7304
7468
  }
7305
- return `${prefix}padre/madre`;
7469
+ if (level === 4) {
7470
+ return pick3(
7471
+ sex,
7472
+ "tatarabuelo",
7473
+ "tatarabuela",
7474
+ "tatarabuelo/tatarabuela"
7475
+ );
7476
+ }
7477
+ if (level === 5) {
7478
+ return pick3(
7479
+ sex,
7480
+ "trastatarabuelo",
7481
+ "trastatarabuela",
7482
+ "trastatarabuelo/trastatarabuela"
7483
+ );
7484
+ }
7485
+ return pick3(
7486
+ sex,
7487
+ `abuelo (${level}.\xBA)`,
7488
+ `abuela (${level}.\xAA)`,
7489
+ `abuelo/abuela (${level}.\xBA)`
7490
+ );
7306
7491
  }
7307
7492
  child() {
7308
- const prefix = this.directPrefix();
7309
- if (this.personN?.isMale()) {
7310
- return `${prefix}hijo`;
7493
+ const level = Math.abs(this.pathN?.level ?? 0);
7494
+ const sex = sexOf3(this.personN);
7495
+ if (level <= 1) {
7496
+ return pick3(sex, "hijo", "hija", "hijo/hija");
7311
7497
  }
7312
- if (this.personN?.isFemale()) {
7313
- return `${prefix}hija`;
7498
+ if (level === 2) {
7499
+ return pick3(sex, "nieto", "nieta", "nieto/nieta");
7314
7500
  }
7315
- return `${prefix}hijo/hija`;
7316
- }
7317
- sibling() {
7318
- if (this.personN?.isMale()) {
7319
- return "hermano";
7501
+ if (level === 3) {
7502
+ return pick3(sex, "bisnieto", "bisnieta", "bisnieto/bisnieta");
7320
7503
  }
7321
- if (this.personN?.isFemale()) {
7322
- return "hermana";
7504
+ if (level === 4) {
7505
+ return pick3(
7506
+ sex,
7507
+ "tataranieto",
7508
+ "tataranieta",
7509
+ "tataranieto/tataranieta"
7510
+ );
7511
+ }
7512
+ if (level === 5) {
7513
+ return pick3(
7514
+ sex,
7515
+ "trastataranieto",
7516
+ "trastataranieta",
7517
+ "trastataranieto/trastataranieta"
7518
+ );
7323
7519
  }
7324
- return "hermano/hermana";
7520
+ return pick3(
7521
+ sex,
7522
+ `nieto (${level}.\xBA)`,
7523
+ `nieta (${level}.\xAA)`,
7524
+ `nieto/nieta (${level}.\xBA)`
7525
+ );
7526
+ }
7527
+ sibling() {
7528
+ return pick3(sexOf3(this.personN), "hermano", "hermana", "hermano/hermana");
7325
7529
  }
7326
7530
  halfBlood(relation) {
7327
7531
  if (!relation || !this.isHalfBlood) {
@@ -7336,40 +7540,30 @@ var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
7336
7540
  return `medio/a ${relation}`;
7337
7541
  }
7338
7542
  spouse() {
7339
- if (this.personN?.isMale()) {
7340
- return "esposo";
7341
- }
7342
- if (this.personN?.isFemale()) {
7343
- return "esposa";
7344
- }
7345
- return "c\xF3nyuge";
7543
+ return pick3(sexOf3(this.personN), "esposo", "esposa", "c\xF3nyuge");
7346
7544
  }
7347
7545
  ofSpouse(relation) {
7348
7546
  if (!relation) {
7349
7547
  return "";
7350
7548
  }
7351
- const spouse = this.path?.[1].indi;
7352
- let spouseType = "c\xF3nyuge";
7353
- if (spouse?.isMale()) {
7354
- spouseType = "esposo";
7355
- }
7356
- if (spouse?.isFemale()) {
7357
- spouseType = "esposa";
7358
- }
7359
- return `${relation} del ${spouseType}`;
7549
+ const spouseType = pick3(
7550
+ sexOf3(this.path?.[1].indi),
7551
+ "esposo",
7552
+ "esposa",
7553
+ "c\xF3nyuge"
7554
+ );
7555
+ return `${relation} ${ofSpousePrep2(spouseType)}${spouseType}`;
7360
7556
  }
7361
7557
  spouseOf(relation) {
7362
7558
  if (!relation) {
7363
7559
  return "";
7364
7560
  }
7365
- const spouse = this.path?.[this.path.length - 1].indi;
7366
- let spouseType = "c\xF3nyuge";
7367
- if (spouse?.isMale()) {
7368
- spouseType = "esposo";
7369
- }
7370
- if (spouse?.isFemale()) {
7371
- spouseType = "esposa";
7372
- }
7561
+ const spouseType = pick3(
7562
+ sexOf3(this.path?.[this.path.length - 1].indi),
7563
+ "esposo",
7564
+ "esposa",
7565
+ "c\xF3nyuge"
7566
+ );
7373
7567
  return `${spouseType} de ${relation}`;
7374
7568
  }
7375
7569
  of(relation) {
@@ -7387,8 +7581,8 @@ var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
7387
7581
  if (!name || !relation) {
7388
7582
  return relation ?? "";
7389
7583
  }
7390
- if (relation.includes(" del ") || relation.includes(" de ")) {
7391
- return relation.replace(/ (del|de) /, ` $1 ${name} `);
7584
+ if (relation.includes(" del ") || relation.includes(" de la ") || relation.includes(" de ")) {
7585
+ return relation.replace(/ (del|de la|de) /, ` $1 ${name} `);
7392
7586
  }
7393
7587
  return `${relation} de ${name}`;
7394
7588
  }
@@ -7418,7 +7612,20 @@ var KinshipTranslatorEs = class extends KinshipTranslatorBasic {
7418
7612
  if (!relation || !this.pathN?.relation) {
7419
7613
  return relation ?? "";
7420
7614
  }
7421
- return `${this.pathN.relation} ${relation}`;
7615
+ const mapped = parentRelationsEs[this.pathN.relation]?.[relation];
7616
+ if (mapped) {
7617
+ return mapped;
7618
+ }
7619
+ if (this.pathN.relation === "step") {
7620
+ return `${relation} pol\xEDtico`;
7621
+ }
7622
+ if (this.pathN.relation === "adopted") {
7623
+ return `${relation} adoptivo`;
7624
+ }
7625
+ if (this.pathN.relation === "foster") {
7626
+ return `${relation} de acogida`;
7627
+ }
7628
+ return relation;
7422
7629
  }
7423
7630
  };
7424
7631
 
@@ -7427,15 +7634,35 @@ var InLawsRu = {
7427
7634
  "\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",
7428
7635
  "\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",
7429
7636
  "\u043C\u0443\u0436 (\u0440\u0435\u0431\u0451\u043D\u043A\u0430|\u0434\u043E\u0447\u0435\u0440\u0438|\u0441\u044B\u043D\u0430)": "\u0437\u044F\u0442\u044C",
7430
- "\u043C\u0430\u0442\u044C (\u0441\u0443\u043F\u0440\u0443\u0433\u0430|\u0436\u0435\u043D\u044B|\u043C\u0443\u0436\u0430)": "\u0442\u0451\u0449\u0430",
7431
- "\u043E\u0442\u0435\u0446 (\u0441\u0443\u043F\u0440\u0443\u0433\u0430|\u0436\u0435\u043D\u044B|\u043C\u0443\u0436\u0430)": "\u0442\u0435\u0441\u0442\u044C",
7432
- "\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",
7637
+ "\u043C\u0430\u0442\u044C \u0436\u0435\u043D\u044B": "\u0442\u0451\u0449\u0430",
7638
+ "\u043C\u0430\u0442\u044C \u043C\u0443\u0436\u0430": "\u0441\u0432\u0435\u043A\u0440\u043E\u0432\u044C",
7639
+ "\u043C\u0430\u0442\u044C \u0441\u0443\u043F\u0440\u0443\u0433\u0430": "\u0442\u0451\u0449\u0430/\u0441\u0432\u0435\u043A\u0440\u043E\u0432\u044C",
7640
+ "\u043E\u0442\u0435\u0446 \u0436\u0435\u043D\u044B": "\u0442\u0435\u0441\u0442\u044C",
7641
+ "\u043E\u0442\u0435\u0446 \u043C\u0443\u0436\u0430": "\u0441\u0432\u0451\u043A\u043E\u0440",
7642
+ "\u043E\u0442\u0435\u0446 \u0441\u0443\u043F\u0440\u0443\u0433\u0430": "\u0442\u0435\u0441\u0442\u044C/\u0441\u0432\u0451\u043A\u043E\u0440",
7643
+ "\u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C \u0436\u0435\u043D\u044B": "\u0442\u0435\u0441\u0442\u044C/\u0442\u0451\u0449\u0430",
7644
+ "\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",
7645
+ "\u0440\u043E\u0434\u0438\u0442\u0435\u043B\u044C \u0441\u0443\u043F\u0440\u0443\u0433\u0430": "\u0442\u0435\u0441\u0442\u044C/\u0442\u0451\u0449\u0430",
7433
7646
  "\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",
7434
7647
  "\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",
7435
7648
  "\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",
7436
- "(\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",
7437
- "(\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",
7438
- "(\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"
7649
+ "(\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",
7650
+ "(\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",
7651
+ "(\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",
7652
+ "(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0431\u0440\u0430\u0442 \u0436\u0435\u043D\u044B": "\u0448\u0443\u0440\u0438\u043D",
7653
+ "(\u0441\u0432\u043E\u0434\u043D(?:\u044B\u0439|\u0430\u044F) )?\u0431\u0440\u0430\u0442 \u043C\u0443\u0436\u0430": "\u0434\u0435\u0432\u0435\u0440\u044C",
7654
+ "(\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",
7655
+ "(\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",
7656
+ "(\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",
7657
+ "(\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"
7658
+ };
7659
+ var parentRelationsRu = {
7660
+ step: {
7661
+ \u043E\u0442\u0435\u0446: "\u043E\u0442\u0447\u0438\u043C",
7662
+ \u043C\u0430\u0442\u044C: "\u043C\u0430\u0447\u0435\u0445\u0430",
7663
+ \u0441\u044B\u043D: "\u043F\u0430\u0441\u044B\u043D\u043E\u043A",
7664
+ \u0434\u043E\u0447\u044C: "\u043F\u0430\u0434\u0447\u0435\u0440\u0438\u0446\u0430"
7665
+ }
7439
7666
  };
7440
7667
 
7441
7668
  // src/kinship-translator/kinship-translator.ru.ts
@@ -7466,7 +7693,7 @@ var cousinWord = (degree, sex) => {
7466
7693
  return `${stem}\u044B\u0439 \u0431\u0440\u0430\u0442/\u0441\u0435\u0441\u0442\u0440\u0430`;
7467
7694
  };
7468
7695
  var praRepeat = (count) => count > 0 ? "\u043F\u0440\u0430".repeat(count) : "";
7469
- var sexOf = (person) => {
7696
+ var sexOf4 = (person) => {
7470
7697
  if (person?.isMale?.()) {
7471
7698
  return "m";
7472
7699
  }
@@ -7481,7 +7708,7 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
7481
7708
  if (degree > 0) {
7482
7709
  degree = degree - 1;
7483
7710
  }
7484
- return cousinWord(degree, sexOf(this.personN));
7711
+ return cousinWord(degree, sexOf4(this.personN));
7485
7712
  }
7486
7713
  removal() {
7487
7714
  const level = this.pathN?.level ?? 0;
@@ -7493,35 +7720,53 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
7493
7720
  return level < 0 ? this.nibling() : this.auncle();
7494
7721
  }
7495
7722
  const removed = Math.abs(level);
7496
- return `${cousinWord(degree, sexOf(this.personN))} (${removed}\xD7 \u0447\u0435\u0440\u0435\u0437 \u043F\u043E\u043A\u043E\u043B\u0435\u043D\u0438\u0435)`;
7723
+ return `${cousinWord(degree, sexOf4(this.personN))} (${removed}\xD7 \u0447\u0435\u0440\u0435\u0437 \u043F\u043E\u043A\u043E\u043B\u0435\u043D\u0438\u0435)`;
7497
7724
  }
7498
7725
  auncle() {
7499
7726
  const level = Math.abs(this.pathN?.level ?? 0);
7500
- const pra = praRepeat(Math.max(0, level - 2));
7501
- const sex = sexOf(this.personN);
7727
+ const sex = sexOf4(this.personN);
7728
+ if (level <= 1) {
7729
+ if (sex === "m") {
7730
+ return "\u0434\u044F\u0434\u044F";
7731
+ }
7732
+ if (sex === "f") {
7733
+ return "\u0442\u0451\u0442\u044F";
7734
+ }
7735
+ return "\u0434\u044F\u0434\u044F/\u0442\u0451\u0442\u044F";
7736
+ }
7737
+ const pra = praRepeat(level - 2);
7502
7738
  if (sex === "m") {
7503
- return `${pra}\u0434\u044F\u0434\u044F`;
7739
+ return `\u0434\u0432\u043E\u044E\u0440\u043E\u0434\u043D\u044B\u0439 ${pra}\u0434\u0435\u0434`;
7504
7740
  }
7505
7741
  if (sex === "f") {
7506
- return `${pra}\u0442\u0451\u0442\u044F`;
7742
+ return `\u0434\u0432\u043E\u044E\u0440\u043E\u0434\u043D\u0430\u044F ${pra}\u0431\u0430\u0431\u0443\u0448\u043A\u0430`;
7507
7743
  }
7508
- return `${pra}\u0434\u044F\u0434\u044F/\u0442\u0451\u0442\u044F`;
7744
+ return `\u0434\u0432\u043E\u044E\u0440\u043E\u0434\u043D\u044B\u0439 ${pra}\u0434\u0435\u0434/\u0431\u0430\u0431\u0443\u0448\u043A\u0430`;
7509
7745
  }
7510
7746
  nibling() {
7511
7747
  const level = Math.abs(this.pathN?.level ?? 0);
7512
- const pra = praRepeat(Math.max(0, level - 2));
7513
- const sex = sexOf(this.personN);
7748
+ const sex = sexOf4(this.personN);
7749
+ if (level <= 1) {
7750
+ if (sex === "m") {
7751
+ return "\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A";
7752
+ }
7753
+ if (sex === "f") {
7754
+ return "\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430";
7755
+ }
7756
+ return "\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A/\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430";
7757
+ }
7758
+ const pra = praRepeat(level - 2);
7514
7759
  if (sex === "m") {
7515
- return `${pra}\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A`;
7760
+ return `${pra}\u0432\u043D\u0443\u0447\u0430\u0442\u044B\u0439 \u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A`;
7516
7761
  }
7517
7762
  if (sex === "f") {
7518
- return `${pra}\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430`;
7763
+ return `${pra}\u0432\u043D\u0443\u0447\u0430\u0442\u0430\u044F \u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430`;
7519
7764
  }
7520
- return `${pra}\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u043A/\u043F\u043B\u0435\u043C\u044F\u043D\u043D\u0438\u0446\u0430`;
7765
+ 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`;
7521
7766
  }
7522
7767
  parent() {
7523
7768
  const level = Math.abs(this.pathN?.level ?? 0);
7524
- const sex = sexOf(this.personN);
7769
+ const sex = sexOf4(this.personN);
7525
7770
  if (level <= 1) {
7526
7771
  if (sex === "m") {
7527
7772
  return "\u043E\u0442\u0435\u0446";
@@ -7551,7 +7796,7 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
7551
7796
  }
7552
7797
  child() {
7553
7798
  const level = Math.abs(this.pathN?.level ?? 0);
7554
- const sex = sexOf(this.personN);
7799
+ const sex = sexOf4(this.personN);
7555
7800
  if (level <= 1) {
7556
7801
  if (sex === "m") {
7557
7802
  return "\u0441\u044B\u043D";
@@ -7580,14 +7825,14 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
7580
7825
  return `${pra}\u0432\u043D\u0443\u043A/\u0432\u043D\u0443\u0447\u043A\u0430`;
7581
7826
  }
7582
7827
  sibling() {
7583
- const sex = sexOf(this.personN);
7828
+ const sex = sexOf4(this.personN);
7584
7829
  if (sex === "m") {
7585
7830
  return "\u0431\u0440\u0430\u0442";
7586
7831
  }
7587
7832
  if (sex === "f") {
7588
7833
  return "\u0441\u0435\u0441\u0442\u0440\u0430";
7589
7834
  }
7590
- return "\u0441\u0438\u0431\u043B\u0438\u043D\u0433";
7835
+ return "\u0431\u0440\u0430\u0442/\u0441\u0435\u0441\u0442\u0440\u0430";
7591
7836
  }
7592
7837
  halfBlood(relation) {
7593
7838
  if (!relation || !this.isHalfBlood) {
@@ -7601,7 +7846,7 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
7601
7846
  return `\u0441\u0432\u043E\u0434\u043D\u044B\u0439 ${relation}`;
7602
7847
  }
7603
7848
  spouse() {
7604
- const sex = sexOf(this.personN);
7849
+ const sex = sexOf4(this.personN);
7605
7850
  if (sex === "m") {
7606
7851
  return "\u043C\u0443\u0436";
7607
7852
  }
@@ -7615,7 +7860,7 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
7615
7860
  return "";
7616
7861
  }
7617
7862
  const spouse = this.path?.[1].indi;
7618
- const sex = sexOf(spouse);
7863
+ const sex = sexOf4(spouse);
7619
7864
  const spouseType = sex === "m" ? "\u043C\u0443\u0436" : sex === "f" ? "\u0436\u0435\u043D\u0430" : "\u0441\u0443\u043F\u0440\u0443\u0433";
7620
7865
  return `${relation} ${toGenitive(spouseType)}`;
7621
7866
  }
@@ -7624,7 +7869,7 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
7624
7869
  return "";
7625
7870
  }
7626
7871
  const spouse = this.path?.[this.path.length - 1].indi;
7627
- const sex = sexOf(spouse);
7872
+ const sex = sexOf4(spouse);
7628
7873
  const spouseType = sex === "m" ? "\u043C\u0443\u0436" : sex === "f" ? "\u0436\u0435\u043D\u0430" : "\u0441\u0443\u043F\u0440\u0443\u0433";
7629
7874
  return `${spouseType} ${toGenitive(relation)}`;
7630
7875
  }
@@ -7661,7 +7906,22 @@ var KinshipTranslatorRu = class extends KinshipTranslatorBasic {
7661
7906
  if (!relation || !this.pathN?.relation) {
7662
7907
  return relation ?? "";
7663
7908
  }
7664
- return `${this.pathN.relation} ${relation}`;
7909
+ const mapped = parentRelationsRu[this.pathN.relation]?.[relation];
7910
+ if (mapped) {
7911
+ return mapped;
7912
+ }
7913
+ if (this.pathN.relation === "step") {
7914
+ return `\u043D\u0435\u0440\u043E\u0434\u043D\u043E\u0439 ${relation}`;
7915
+ }
7916
+ if (this.pathN.relation === "adopted") {
7917
+ return /сестра|дочь|мать|тётя|бабушка|жена|племянница|внучка/.test(
7918
+ relation
7919
+ ) ? `\u043F\u0440\u0438\u0451\u043C\u043D\u0430\u044F ${relation}` : `\u043F\u0440\u0438\u0451\u043C\u043D\u044B\u0439 ${relation}`;
7920
+ }
7921
+ if (this.pathN.relation === "foster") {
7922
+ return `\u043F\u0440\u0438\u0451\u043C\u043D\u044B\u0439 ${relation}`;
7923
+ }
7924
+ return relation;
7665
7925
  }
7666
7926
  };
7667
7927
 
@@ -7685,7 +7945,7 @@ var InLawsJa = {
7685
7945
  };
7686
7946
 
7687
7947
  // src/kinship-translator/kinship-translator.ja.ts
7688
- var sexOf2 = (person) => {
7948
+ var sexOf5 = (person) => {
7689
7949
  if (person?.isMale?.()) {
7690
7950
  return "m";
7691
7951
  }
@@ -7694,7 +7954,7 @@ var sexOf2 = (person) => {
7694
7954
  }
7695
7955
  return "n";
7696
7956
  };
7697
- var pick = (sex, male, female, neutral) => {
7957
+ var pick4 = (sex, male, female, neutral) => {
7698
7958
  if (sex === "m") {
7699
7959
  return male;
7700
7960
  }
@@ -7707,18 +7967,18 @@ var lineal = (level, sex, kind) => {
7707
7967
  const L = Math.max(1, level);
7708
7968
  if (kind === "asc") {
7709
7969
  if (L <= 1) {
7710
- return pick(sex, "\u7236", "\u6BCD", "\u89AA");
7970
+ return pick4(sex, "\u7236", "\u6BCD", "\u89AA");
7711
7971
  }
7712
7972
  if (L === 2) {
7713
- return pick(sex, "\u7956\u7236", "\u7956\u6BCD", "\u7956\u7236\u6BCD");
7973
+ return pick4(sex, "\u7956\u7236", "\u7956\u6BCD", "\u7956\u7236\u6BCD");
7714
7974
  }
7715
7975
  if (L === 3) {
7716
- return pick(sex, "\u66FE\u7956\u7236", "\u66FE\u7956\u6BCD", "\u66FE\u7956\u7236\u6BCD");
7976
+ return pick4(sex, "\u66FE\u7956\u7236", "\u66FE\u7956\u6BCD", "\u66FE\u7956\u7236\u6BCD");
7717
7977
  }
7718
7978
  if (L === 4) {
7719
- return pick(sex, "\u9AD8\u7956\u7236", "\u9AD8\u7956\u6BCD", "\u9AD8\u7956\u7236\u6BCD");
7979
+ return pick4(sex, "\u9AD8\u7956\u7236", "\u9AD8\u7956\u6BCD", "\u9AD8\u7956\u7236\u6BCD");
7720
7980
  }
7721
- return pick(
7981
+ return pick4(
7722
7982
  sex,
7723
7983
  `${L - 1}\u4E16\u306E\u7956\u7236`,
7724
7984
  `${L - 1}\u4E16\u306E\u7956\u6BCD`,
@@ -7726,7 +7986,7 @@ var lineal = (level, sex, kind) => {
7726
7986
  );
7727
7987
  }
7728
7988
  if (L <= 1) {
7729
- return pick(sex, "\u606F\u5B50", "\u5A18", "\u5B50");
7989
+ return pick4(sex, "\u606F\u5B50", "\u5A18", "\u5B50");
7730
7990
  }
7731
7991
  if (L === 2) {
7732
7992
  return "\u5B6B";
@@ -7773,52 +8033,52 @@ var KinshipTranslatorJa = class extends KinshipTranslatorBasic {
7773
8033
  }
7774
8034
  auncle() {
7775
8035
  const level = Math.abs(this.pathN?.level ?? 0);
7776
- const sex = sexOf2(this.personN);
7777
- if (level <= 2) {
7778
- return pick(sex, "\u304A\u3058", "\u304A\u3070", "\u304A\u3058/\u304A\u3070");
8036
+ const sex = sexOf5(this.personN);
8037
+ if (level <= 1) {
8038
+ return pick4(sex, "\u304A\u3058", "\u304A\u3070", "\u304A\u3058/\u304A\u3070");
7779
8039
  }
7780
- if (level === 3) {
7781
- return pick(sex, "\u5927\u304A\u3058", "\u5927\u304A\u3070", "\u5927\u304A\u3058/\u5927\u304A\u3070");
8040
+ if (level === 2) {
8041
+ return pick4(sex, "\u5927\u304A\u3058", "\u5927\u304A\u3070", "\u5927\u304A\u3058/\u5927\u304A\u3070");
7782
8042
  }
7783
- return pick(
8043
+ return pick4(
7784
8044
  sex,
7785
- `${level - 2}\u4EE3\u524D\u306E\u304A\u3058`,
7786
- `${level - 2}\u4EE3\u524D\u306E\u304A\u3070`,
7787
- `${level - 2}\u4EE3\u524D\u306E\u304A\u3058/\u304A\u3070`
8045
+ `${level - 1}\u4EE3\u524D\u306E\u304A\u3058`,
8046
+ `${level - 1}\u4EE3\u524D\u306E\u304A\u3070`,
8047
+ `${level - 1}\u4EE3\u524D\u306E\u304A\u3058/\u304A\u3070`
7788
8048
  );
7789
8049
  }
7790
8050
  nibling() {
7791
8051
  const level = Math.abs(this.pathN?.level ?? 0);
7792
- const sex = sexOf2(this.personN);
7793
- if (level <= 2) {
7794
- return pick(sex, "\u7525", "\u59EA", "\u7525/\u59EA");
8052
+ const sex = sexOf5(this.personN);
8053
+ if (level <= 1) {
8054
+ return pick4(sex, "\u7525", "\u59EA", "\u7525/\u59EA");
7795
8055
  }
7796
- if (level === 3) {
7797
- return pick(sex, "\u5927\u7525", "\u5927\u59EA", "\u5927\u7525/\u5927\u59EA");
8056
+ if (level === 2) {
8057
+ return pick4(sex, "\u5927\u7525", "\u5927\u59EA", "\u5927\u7525/\u5927\u59EA");
7798
8058
  }
7799
- return pick(
8059
+ return pick4(
7800
8060
  sex,
7801
- `${level - 2}\u4EE3\u4E0B\u306E\u7525`,
7802
- `${level - 2}\u4EE3\u4E0B\u306E\u59EA`,
7803
- `${level - 2}\u4EE3\u4E0B\u306E\u7525/\u59EA`
8061
+ `${level - 1}\u4EE3\u4E0B\u306E\u7525`,
8062
+ `${level - 1}\u4EE3\u4E0B\u306E\u59EA`,
8063
+ `${level - 1}\u4EE3\u4E0B\u306E\u7525/\u59EA`
7804
8064
  );
7805
8065
  }
7806
8066
  parent() {
7807
8067
  return lineal(
7808
8068
  Math.abs(this.pathN?.level ?? 0),
7809
- sexOf2(this.personN),
8069
+ sexOf5(this.personN),
7810
8070
  "asc"
7811
8071
  );
7812
8072
  }
7813
8073
  child() {
7814
8074
  return lineal(
7815
8075
  Math.abs(this.pathN?.level ?? 0),
7816
- sexOf2(this.personN),
8076
+ sexOf5(this.personN),
7817
8077
  "desc"
7818
8078
  );
7819
8079
  }
7820
8080
  sibling() {
7821
- return pick(sexOf2(this.personN), "\u5144\u5F1F", "\u59C9\u59B9", "\u5144\u5F1F\u59C9\u59B9");
8081
+ return pick4(sexOf5(this.personN), "\u5144\u5F1F", "\u59C9\u59B9", "\u5144\u5F1F\u59C9\u59B9");
7822
8082
  }
7823
8083
  halfBlood(relation) {
7824
8084
  if (!relation || !this.isHalfBlood) {
@@ -7827,14 +8087,14 @@ var KinshipTranslatorJa = class extends KinshipTranslatorBasic {
7827
8087
  return `\u7570\u7236\u6BCD\u306E${relation}`;
7828
8088
  }
7829
8089
  spouse() {
7830
- return pick(sexOf2(this.personN), "\u592B", "\u59BB", "\u914D\u5076\u8005");
8090
+ return pick4(sexOf5(this.personN), "\u592B", "\u59BB", "\u914D\u5076\u8005");
7831
8091
  }
7832
8092
  ofSpouse(relation) {
7833
8093
  if (!relation) {
7834
8094
  return "";
7835
8095
  }
7836
- const spouseType = pick(
7837
- sexOf2(this.path?.[1].indi),
8096
+ const spouseType = pick4(
8097
+ sexOf5(this.path?.[1].indi),
7838
8098
  "\u592B",
7839
8099
  "\u59BB",
7840
8100
  "\u914D\u5076\u8005"
@@ -7846,7 +8106,7 @@ var KinshipTranslatorJa = class extends KinshipTranslatorBasic {
7846
8106
  return "";
7847
8107
  }
7848
8108
  const spouse = this.path?.[this.path.length - 1].indi;
7849
- const spouseType = pick(sexOf2(spouse), "\u592B", "\u59BB", "\u914D\u5076\u8005");
8109
+ const spouseType = pick4(sexOf5(spouse), "\u592B", "\u59BB", "\u914D\u5076\u8005");
7850
8110
  return `${relation}\u306E${spouseType}`;
7851
8111
  }
7852
8112
  of(relation) {
@@ -7882,7 +8142,28 @@ var KinshipTranslatorJa = class extends KinshipTranslatorBasic {
7882
8142
  if (!relation || !this.pathN?.relation) {
7883
8143
  return relation ?? "";
7884
8144
  }
7885
- return `${this.pathN.relation}\u306E${relation}`;
8145
+ if (this.pathN.relation === "step") {
8146
+ if (relation === "\u7236") {
8147
+ return "\u7EE7\u7236";
8148
+ }
8149
+ if (relation === "\u6BCD") {
8150
+ return "\u7D99\u6BCD";
8151
+ }
8152
+ if (relation === "\u606F\u5B50") {
8153
+ return "\u7D99\u5B50";
8154
+ }
8155
+ if (relation === "\u5A18") {
8156
+ return "\u7D99\u5A18";
8157
+ }
8158
+ return `\u7D99${relation}`;
8159
+ }
8160
+ if (this.pathN.relation === "adopted") {
8161
+ return `\u990A\u5B50\u306E${relation}`;
8162
+ }
8163
+ if (this.pathN.relation === "foster") {
8164
+ return `\u91CC\u89AA\u306E${relation}`;
8165
+ }
8166
+ return relation;
7886
8167
  }
7887
8168
  };
7888
8169
 
@@ -7891,22 +8172,32 @@ var InLawsZh = {
7891
8172
  "(\u5B50\u5973|\u5973\u513F|\u513F\u5B50)\u7684\u914D\u5076": "\u513F\u5AB3/\u5973\u5A7F",
7892
8173
  "(\u5B50\u5973|\u5973\u513F|\u513F\u5B50)\u7684\u59BB\u5B50": "\u513F\u5AB3",
7893
8174
  "(\u5B50\u5973|\u5973\u513F|\u513F\u5B50)\u7684\u4E08\u592B": "\u5973\u5A7F",
7894
- "(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)\u7684\u6BCD\u4EB2": "\u5CB3\u6BCD/\u5A46\u5A46",
7895
- "(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)\u7684\u7236\u4EB2": "\u5CB3\u7236/\u516C\u516C",
7896
- "(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)\u7684\u7236\u6BCD": "\u5CB3\u7236\u5CB3\u6BCD/\u516C\u516C\u5A46\u5A46",
8175
+ "\u59BB\u5B50\u7684\u6BCD\u4EB2": "\u5CB3\u6BCD",
8176
+ "\u4E08\u592B\u7684\u6BCD\u4EB2": "\u5A46\u5A46",
8177
+ "(\u914D\u5076)\u7684\u6BCD\u4EB2": "\u5CB3\u6BCD/\u5A46\u5A46",
8178
+ "\u59BB\u5B50\u7684\u7236\u4EB2": "\u5CB3\u7236",
8179
+ "\u4E08\u592B\u7684\u7236\u4EB2": "\u516C\u516C",
8180
+ "(\u914D\u5076)\u7684\u7236\u4EB2": "\u5CB3\u7236/\u516C\u516C",
8181
+ "\u59BB\u5B50\u7684\u7236\u6BCD": "\u5CB3\u7236\u5CB3\u6BCD",
8182
+ "\u4E08\u592B\u7684\u7236\u6BCD": "\u516C\u516C\u5A46\u5A46",
8183
+ "(\u914D\u5076)\u7684\u7236\u6BCD": "\u5CB3\u7236\u5CB3\u6BCD/\u516C\u516C\u5A46\u5A46",
7897
8184
  "(\u5F02\u7236\u6BCD\u7684)?(\u5144\u5F1F\u59D0\u59B9|\u59D0\u59B9|\u5144\u5F1F)\u7684\u59BB\u5B50": "\u5AC2\u5B50/\u5F1F\u59B9",
7898
8185
  "(\u5F02\u7236\u6BCD\u7684)?(\u5144\u5F1F\u59D0\u59B9|\u59D0\u59B9|\u5144\u5F1F)\u7684\u4E08\u592B": "\u59D0\u592B/\u59B9\u592B",
7899
8186
  "(\u5F02\u7236\u6BCD\u7684)?(\u5144\u5F1F\u59D0\u59B9|\u59D0\u59B9|\u5144\u5F1F)\u7684\u914D\u5076": "\u59FB\u4EB2\u5144\u5F1F\u59D0\u59B9",
7900
8187
  "(\u5F02\u7236\u6BCD\u7684)?\u59D0\u59B9\u7684(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)": "\u59D0\u592B/\u59B9\u592B",
7901
8188
  "(\u5F02\u7236\u6BCD\u7684)?\u5144\u5F1F\u7684(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)": "\u5AC2\u5B50/\u5F1F\u59B9",
7902
8189
  "(\u5F02\u7236\u6BCD\u7684)?\u5144\u5F1F\u59D0\u59B9\u7684(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)": "\u59FB\u4EB2\u5144\u5F1F\u59D0\u59B9",
7903
- "(\u5F02\u7236\u6BCD\u7684)?(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)\u7684\u59D0\u59B9": "\u59D1\u5B50/\u59E8\u5B50",
7904
- "(\u5F02\u7236\u6BCD\u7684)?(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)\u7684\u5144\u5F1F": "\u5927\u4F2F/\u5C0F\u53D4/\u5185\u5144/\u5185\u5F1F",
8190
+ "(\u5F02\u7236\u6BCD\u7684)?\u59BB\u5B50\u7684\u59D0\u59B9": "\u59E8\u5B50",
8191
+ "(\u5F02\u7236\u6BCD\u7684)?\u4E08\u592B\u7684\u59D0\u59B9": "\u59D1\u5B50",
8192
+ "(\u5F02\u7236\u6BCD\u7684)?(\u914D\u5076)\u7684\u59D0\u59B9": "\u59D1\u5B50/\u59E8\u5B50",
8193
+ "(\u5F02\u7236\u6BCD\u7684)?\u59BB\u5B50\u7684\u5144\u5F1F": "\u5185\u5144/\u5185\u5F1F",
8194
+ "(\u5F02\u7236\u6BCD\u7684)?\u4E08\u592B\u7684\u5144\u5F1F": "\u5927\u4F2F/\u5C0F\u53D4",
8195
+ "(\u5F02\u7236\u6BCD\u7684)?(\u914D\u5076)\u7684\u5144\u5F1F": "\u5927\u4F2F/\u5C0F\u53D4/\u5185\u5144/\u5185\u5F1F",
7905
8196
  "(\u5F02\u7236\u6BCD\u7684)?(\u914D\u5076|\u59BB\u5B50|\u4E08\u592B)\u7684\u5144\u5F1F\u59D0\u59B9": "\u59FB\u4EB2\u5144\u5F1F\u59D0\u59B9"
7906
8197
  };
7907
8198
 
7908
8199
  // src/kinship-translator/kinship-translator.zh.ts
7909
- var sexOf3 = (person) => {
8200
+ var sexOf6 = (person) => {
7910
8201
  if (person?.isMale?.()) {
7911
8202
  return "m";
7912
8203
  }
@@ -7915,7 +8206,7 @@ var sexOf3 = (person) => {
7915
8206
  }
7916
8207
  return "n";
7917
8208
  };
7918
- var pick2 = (sex, male, female, neutral) => {
8209
+ var pick5 = (sex, male, female, neutral) => {
7919
8210
  if (sex === "m") {
7920
8211
  return male;
7921
8212
  }
@@ -7928,41 +8219,41 @@ var lineal2 = (level, sex, kind) => {
7928
8219
  const L = Math.max(1, level);
7929
8220
  if (kind === "asc") {
7930
8221
  if (L <= 1) {
7931
- return pick2(sex, "\u7236\u4EB2", "\u6BCD\u4EB2", "\u7236\u6BCD");
8222
+ return pick5(sex, "\u7236\u4EB2", "\u6BCD\u4EB2", "\u7236\u6BCD");
7932
8223
  }
7933
8224
  if (L === 2) {
7934
- return pick2(sex, "\u7956\u7236", "\u7956\u6BCD", "\u7956\u7236\u6BCD");
8225
+ return pick5(sex, "\u7956\u7236", "\u7956\u6BCD", "\u7956\u7236\u6BCD");
7935
8226
  }
7936
8227
  if (L === 3) {
7937
- return pick2(sex, "\u66FE\u7956\u7236", "\u66FE\u7956\u6BCD", "\u66FE\u7956\u7236\u6BCD");
8228
+ return pick5(sex, "\u66FE\u7956\u7236", "\u66FE\u7956\u6BCD", "\u66FE\u7956\u7236\u6BCD");
7938
8229
  }
7939
8230
  if (L === 4) {
7940
- return pick2(sex, "\u9AD8\u7956\u7236", "\u9AD8\u7956\u6BCD", "\u9AD8\u7956\u7236\u6BCD");
8231
+ return pick5(sex, "\u9AD8\u7956\u7236", "\u9AD8\u7956\u6BCD", "\u9AD8\u7956\u7236\u6BCD");
7941
8232
  }
7942
- return pick2(sex, `${L}\u4E16\u7956`, `${L}\u4E16\u7956\u6BCD`, `${L}\u4E16\u7956\u7236\u6BCD`);
8233
+ return pick5(sex, `${L}\u4E16\u7956`, `${L}\u4E16\u7956\u6BCD`, `${L}\u4E16\u7956\u7236\u6BCD`);
7943
8234
  }
7944
8235
  if (L <= 1) {
7945
- return pick2(sex, "\u513F\u5B50", "\u5973\u513F", "\u5B50\u5973");
8236
+ return pick5(sex, "\u513F\u5B50", "\u5973\u513F", "\u5B50\u5973");
7946
8237
  }
7947
8238
  if (L === 2) {
7948
- return pick2(sex, "\u5B59\u5B50", "\u5B59\u5973", "\u5B59\u5B50\u5973");
8239
+ return pick5(sex, "\u5B59\u5B50", "\u5B59\u5973", "\u5B59\u5B50\u5973");
7949
8240
  }
7950
8241
  if (L === 3) {
7951
- return pick2(sex, "\u66FE\u5B59", "\u66FE\u5B59\u5973", "\u66FE\u5B59\u5B50\u5973");
8242
+ return pick5(sex, "\u66FE\u5B59", "\u66FE\u5B59\u5973", "\u66FE\u5B59\u5B50\u5973");
7952
8243
  }
7953
8244
  if (L === 4) {
7954
- return pick2(sex, "\u7384\u5B59", "\u7384\u5B59\u5973", "\u7384\u5B59\u5B50\u5973");
8245
+ return pick5(sex, "\u7384\u5B59", "\u7384\u5B59\u5973", "\u7384\u5B59\u5B50\u5973");
7955
8246
  }
7956
- return pick2(sex, `${L}\u4E16\u5B59`, `${L}\u4E16\u5B59\u5973`, `${L}\u4E16\u5B59\u5B50\u5973`);
8247
+ return pick5(sex, `${L}\u4E16\u5B59`, `${L}\u4E16\u5B59\u5973`, `${L}\u4E16\u5B59\u5B50\u5973`);
7957
8248
  };
7958
8249
  var cousinPlain2 = (degree, sex) => {
7959
8250
  if (degree <= 1) {
7960
- return pick2(sex, "\u5802\u8868\u5144\u5F1F", "\u5802\u8868\u59D0\u59B9", "\u5802\u8868\u4EB2");
8251
+ return pick5(sex, "\u5802\u8868\u5144\u5F1F", "\u5802\u8868\u59D0\u59B9", "\u5802\u8868\u4EB2");
7961
8252
  }
7962
8253
  if (degree === 2) {
7963
- return pick2(sex, "\u4ECE\u5802\u8868\u5144\u5F1F", "\u4ECE\u5802\u8868\u59D0\u59B9", "\u4ECE\u5802\u8868\u4EB2");
8254
+ return pick5(sex, "\u4ECE\u5802\u8868\u5144\u5F1F", "\u4ECE\u5802\u8868\u59D0\u59B9", "\u4ECE\u5802\u8868\u4EB2");
7964
8255
  }
7965
- return pick2(
8256
+ return pick5(
7966
8257
  sex,
7967
8258
  `${degree}\u4EE3\u5802\u8868\u5144\u5F1F`,
7968
8259
  `${degree}\u4EE3\u5802\u8868\u59D0\u59B9`,
@@ -7975,7 +8266,7 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
7975
8266
  if (degree > 0) {
7976
8267
  degree = degree - 1;
7977
8268
  }
7978
- return cousinPlain2(degree, sexOf3(this.personN));
8269
+ return cousinPlain2(degree, sexOf6(this.personN));
7979
8270
  }
7980
8271
  removal() {
7981
8272
  const level = this.pathN?.level ?? 0;
@@ -7987,56 +8278,56 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
7987
8278
  return level < 0 ? this.nibling() : this.auncle();
7988
8279
  }
7989
8280
  const removed = Math.abs(level);
7990
- return `${cousinPlain2(degree, sexOf3(this.personN))}\uFF08\u9694${removed}\u4EE3\uFF09`;
8281
+ return `${cousinPlain2(degree, sexOf6(this.personN))}\uFF08\u9694${removed}\u4EE3\uFF09`;
7991
8282
  }
7992
8283
  auncle() {
7993
8284
  const level = Math.abs(this.pathN?.level ?? 0);
7994
- const sex = sexOf3(this.personN);
7995
- if (level <= 2) {
7996
- return pick2(sex, "\u53D4\u53D4", "\u963F\u59E8", "\u53D4\u4F2F/\u59D1\u59E8");
8285
+ const sex = sexOf6(this.personN);
8286
+ if (level <= 1) {
8287
+ return pick5(sex, "\u53D4\u53D4", "\u963F\u59E8", "\u53D4\u4F2F/\u59D1\u59E8");
7997
8288
  }
7998
- if (level === 3) {
7999
- return pick2(sex, "\u4F2F\u53D4\u7956\u7236", "\u59D1\u7956\u6BCD", "\u4F2F\u53D4\u7956\u7236\u6BCD");
8289
+ if (level === 2) {
8290
+ return pick5(sex, "\u4F2F\u53D4\u7956\u7236", "\u59D1\u7956\u6BCD", "\u4F2F\u53D4\u7956\u7236\u6BCD");
8000
8291
  }
8001
- return pick2(
8292
+ return pick5(
8002
8293
  sex,
8003
- `${level - 2}\u4EE3\u524D\u7684\u53D4\u53D4`,
8004
- `${level - 2}\u4EE3\u524D\u7684\u963F\u59E8`,
8005
- `${level - 2}\u4EE3\u524D\u7684\u53D4\u4F2F/\u59D1\u59E8`
8294
+ `${level - 1}\u4EE3\u524D\u7684\u53D4\u53D4`,
8295
+ `${level - 1}\u4EE3\u524D\u7684\u963F\u59E8`,
8296
+ `${level - 1}\u4EE3\u524D\u7684\u53D4\u4F2F/\u59D1\u59E8`
8006
8297
  );
8007
8298
  }
8008
8299
  nibling() {
8009
8300
  const level = Math.abs(this.pathN?.level ?? 0);
8010
- const sex = sexOf3(this.personN);
8011
- if (level <= 2) {
8012
- return pick2(sex, "\u4F84\u5B50", "\u4F84\u5973", "\u4F84\u5B50\u5973");
8301
+ const sex = sexOf6(this.personN);
8302
+ if (level <= 1) {
8303
+ return pick5(sex, "\u4F84\u5B50", "\u4F84\u5973", "\u4F84\u5B50\u5973");
8013
8304
  }
8014
- if (level === 3) {
8015
- return pick2(sex, "\u4F84\u5B59", "\u4F84\u5B59\u5973", "\u4F84\u5B59\u5B50\u5973");
8305
+ if (level === 2) {
8306
+ return pick5(sex, "\u4F84\u5B59", "\u4F84\u5B59\u5973", "\u4F84\u5B59\u5B50\u5973");
8016
8307
  }
8017
- return pick2(
8308
+ return pick5(
8018
8309
  sex,
8019
- `${level - 2}\u4EE3\u4E0B\u7684\u4F84\u5B50`,
8020
- `${level - 2}\u4EE3\u4E0B\u7684\u4F84\u5973`,
8021
- `${level - 2}\u4EE3\u4E0B\u7684\u4F84\u5B50\u5973`
8310
+ `${level - 1}\u4EE3\u4E0B\u7684\u4F84\u5B50`,
8311
+ `${level - 1}\u4EE3\u4E0B\u7684\u4F84\u5973`,
8312
+ `${level - 1}\u4EE3\u4E0B\u7684\u4F84\u5B50\u5973`
8022
8313
  );
8023
8314
  }
8024
8315
  parent() {
8025
8316
  return lineal2(
8026
8317
  Math.abs(this.pathN?.level ?? 0),
8027
- sexOf3(this.personN),
8318
+ sexOf6(this.personN),
8028
8319
  "asc"
8029
8320
  );
8030
8321
  }
8031
8322
  child() {
8032
8323
  return lineal2(
8033
8324
  Math.abs(this.pathN?.level ?? 0),
8034
- sexOf3(this.personN),
8325
+ sexOf6(this.personN),
8035
8326
  "desc"
8036
8327
  );
8037
8328
  }
8038
8329
  sibling() {
8039
- return pick2(sexOf3(this.personN), "\u5144\u5F1F", "\u59D0\u59B9", "\u5144\u5F1F\u59D0\u59B9");
8330
+ return pick5(sexOf6(this.personN), "\u5144\u5F1F", "\u59D0\u59B9", "\u5144\u5F1F\u59D0\u59B9");
8040
8331
  }
8041
8332
  halfBlood(relation) {
8042
8333
  if (!relation || !this.isHalfBlood) {
@@ -8045,14 +8336,14 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
8045
8336
  return `\u5F02\u7236\u6BCD\u7684${relation}`;
8046
8337
  }
8047
8338
  spouse() {
8048
- return pick2(sexOf3(this.personN), "\u4E08\u592B", "\u59BB\u5B50", "\u914D\u5076");
8339
+ return pick5(sexOf6(this.personN), "\u4E08\u592B", "\u59BB\u5B50", "\u914D\u5076");
8049
8340
  }
8050
8341
  ofSpouse(relation) {
8051
8342
  if (!relation) {
8052
8343
  return "";
8053
8344
  }
8054
- const spouseType = pick2(
8055
- sexOf3(this.path?.[1].indi),
8345
+ const spouseType = pick5(
8346
+ sexOf6(this.path?.[1].indi),
8056
8347
  "\u4E08\u592B",
8057
8348
  "\u59BB\u5B50",
8058
8349
  "\u914D\u5076"
@@ -8064,7 +8355,7 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
8064
8355
  return "";
8065
8356
  }
8066
8357
  const spouse = this.path?.[this.path.length - 1].indi;
8067
- const spouseType = pick2(sexOf3(spouse), "\u4E08\u592B", "\u59BB\u5B50", "\u914D\u5076");
8358
+ const spouseType = pick5(sexOf6(spouse), "\u4E08\u592B", "\u59BB\u5B50", "\u914D\u5076");
8068
8359
  return `${relation}\u7684${spouseType}`;
8069
8360
  }
8070
8361
  of(relation) {
@@ -8100,7 +8391,40 @@ var KinshipTranslatorZh = class extends KinshipTranslatorBasic {
8100
8391
  if (!relation || !this.pathN?.relation) {
8101
8392
  return relation ?? "";
8102
8393
  }
8103
- return `${this.pathN.relation}${relation}`;
8394
+ if (this.pathN.relation === "step") {
8395
+ if (relation === "\u7236\u4EB2") {
8396
+ return "\u7EE7\u7236";
8397
+ }
8398
+ if (relation === "\u6BCD\u4EB2") {
8399
+ return "\u7EE7\u6BCD";
8400
+ }
8401
+ if (relation === "\u513F\u5B50") {
8402
+ return "\u7EE7\u5B50";
8403
+ }
8404
+ if (relation === "\u5973\u513F") {
8405
+ return "\u7EE7\u5973";
8406
+ }
8407
+ return `\u7EE7${relation}`;
8408
+ }
8409
+ if (this.pathN.relation === "adopted") {
8410
+ if (relation === "\u7236\u4EB2") {
8411
+ return "\u517B\u7236";
8412
+ }
8413
+ if (relation === "\u6BCD\u4EB2") {
8414
+ return "\u517B\u6BCD";
8415
+ }
8416
+ if (relation === "\u513F\u5B50") {
8417
+ return "\u517B\u5B50";
8418
+ }
8419
+ if (relation === "\u5973\u513F") {
8420
+ return "\u517B\u5973";
8421
+ }
8422
+ return `\u517B${relation}`;
8423
+ }
8424
+ if (this.pathN.relation === "foster") {
8425
+ return `\u5BC4\u517B${relation}`;
8426
+ }
8427
+ return relation;
8104
8428
  }
8105
8429
  };
8106
8430
 
@@ -9406,7 +9730,7 @@ var collectExtensionTagsFrom = (node, into = /* @__PURE__ */ new Set()) => {
9406
9730
  // package.json
9407
9731
  var package_default = {
9408
9732
  name: "@treeviz/gedcom-parser",
9409
- version: "2.1.11"};
9733
+ version: "2.1.12"};
9410
9734
 
9411
9735
  // src/utils/get-product-details.ts
9412
9736
  var isDevelopment = () => {