@venite/components 0.16.28 → 0.16.31

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 (89) hide show
  1. package/dist/cjs/{book-1a92678a.js → book-71dd5dc7.js} +115 -3
  2. package/dist/cjs/{heading-5afc2b24.js → heading-360e2c09.js} +1 -1
  3. package/dist/cjs/{image-3bee3e73.js → image-cd8ea545.js} +1 -1
  4. package/dist/cjs/ion-button_13.cjs.entry.js +1 -1
  5. package/dist/cjs/ion-card-content_6.cjs.entry.js +2 -2
  6. package/dist/cjs/ion-checkbox_3.cjs.entry.js +1 -1
  7. package/dist/cjs/ion-input_2.cjs.entry.js +1 -1
  8. package/dist/cjs/ion-segment_16.cjs.entry.js +6 -6
  9. package/dist/cjs/ldf-day-name_5.cjs.entry.js +12 -123
  10. package/dist/cjs/ldf-editable-add-block-menu.cjs.entry.js +7 -7
  11. package/dist/cjs/ldf-editable-condition-piece.cjs.entry.js +1 -1
  12. package/dist/cjs/ldf-editable-condition.cjs.entry.js +1 -1
  13. package/dist/cjs/ldf-editable-filter-documents.cjs.entry.js +2 -2
  14. package/dist/cjs/ldf-editable-lookup_2.cjs.entry.js +7 -7
  15. package/dist/cjs/ldf-editable-metadata.cjs.entry.js +7 -7
  16. package/dist/cjs/ldf-editable-preference-option.cjs.entry.js +1 -1
  17. package/dist/cjs/ldf-editable-preference.cjs.entry.js +1 -1
  18. package/dist/cjs/ldf-editable-preferences.cjs.entry.js +1 -1
  19. package/dist/cjs/ldf-editable-string-list.cjs.entry.js +1 -1
  20. package/dist/cjs/ldf-editor.cjs.entry.js +1 -1
  21. package/dist/cjs/{option-a078d432.js → option-7c7e095b.js} +5 -1
  22. package/dist/cjs/{refrain-91fb446b.js → refrain-54b64e3c.js} +1 -1
  23. package/dist/cjs/{rubric-0afbe4c0.js → rubric-b7453a62.js} +1 -1
  24. package/dist/cjs/{specific-class-76b4d343.js → specific-class-da66301f.js} +5 -5
  25. package/dist/cjs/{text-5edb80f3.js → text-e6103020.js} +1 -1
  26. package/dist/collection/components/string/dist/string.js +2 -2
  27. package/dist/collection/components/string/string.js +3 -3
  28. package/dist/collection/components/text/dist/text.js +2 -1
  29. package/dist/collection/components/text/text.js +2 -1
  30. package/dist/esm/{book-31b8cdde.js → book-6ee92642.js} +115 -3
  31. package/dist/esm/{heading-cc5ffa8a.js → heading-e8b2aee9.js} +1 -1
  32. package/dist/esm/{image-c6a3f0c5.js → image-444b2288.js} +1 -1
  33. package/dist/esm/ion-button_13.entry.js +1 -1
  34. package/dist/esm/ion-card-content_6.entry.js +2 -2
  35. package/dist/esm/ion-checkbox_3.entry.js +1 -1
  36. package/dist/esm/ion-input_2.entry.js +1 -1
  37. package/dist/esm/ion-segment_16.entry.js +6 -6
  38. package/dist/esm/ldf-day-name_5.entry.js +8 -119
  39. package/dist/esm/ldf-editable-add-block-menu.entry.js +7 -7
  40. package/dist/esm/ldf-editable-condition-piece.entry.js +1 -1
  41. package/dist/esm/ldf-editable-condition.entry.js +1 -1
  42. package/dist/esm/ldf-editable-filter-documents.entry.js +2 -2
  43. package/dist/esm/ldf-editable-lookup_2.entry.js +7 -7
  44. package/dist/esm/ldf-editable-metadata.entry.js +7 -7
  45. package/dist/esm/ldf-editable-preference-option.entry.js +1 -1
  46. package/dist/esm/ldf-editable-preference.entry.js +1 -1
  47. package/dist/esm/ldf-editable-preferences.entry.js +1 -1
  48. package/dist/esm/ldf-editable-string-list.entry.js +1 -1
  49. package/dist/esm/ldf-editor.entry.js +1 -1
  50. package/dist/esm/{option-c16af13a.js → option-265feb4a.js} +5 -1
  51. package/dist/esm/{refrain-75a412cb.js → refrain-05638b3c.js} +1 -1
  52. package/dist/esm/{rubric-f779c469.js → rubric-1e407afb.js} +1 -1
  53. package/dist/esm/{specific-class-09c98625.js → specific-class-6d69c516.js} +5 -5
  54. package/dist/esm/{text-ed75fbd4.js → text-aebc57f1.js} +1 -1
  55. package/dist/ldf/ldf.esm.js +1 -1
  56. package/dist/ldf/p-1574e7dd.entry.js +1 -0
  57. package/dist/ldf/{p-005ad01b.entry.js → p-1ecd820f.entry.js} +1 -1
  58. package/dist/ldf/{p-594fa9d4.entry.js → p-46535260.entry.js} +1 -1
  59. package/dist/ldf/{p-fa191f47.entry.js → p-4aca0620.entry.js} +1 -1
  60. package/dist/ldf/p-5af751cb.js +1 -0
  61. package/dist/ldf/{p-468d36d0.entry.js → p-5c0ee099.entry.js} +1 -1
  62. package/dist/ldf/p-5fa18ca9.entry.js +1 -0
  63. package/dist/ldf/p-67cc378d.js +1 -0
  64. package/dist/ldf/p-697ca87f.js +1 -0
  65. package/dist/ldf/p-7a613c13.js +1 -0
  66. package/dist/ldf/{p-94949614.entry.js → p-86af77f3.entry.js} +1 -1
  67. package/dist/ldf/p-8e9ce302.js +1 -0
  68. package/dist/ldf/p-8f74c786.js +1 -0
  69. package/dist/ldf/{p-7a9ab85c.entry.js → p-b17fd746.entry.js} +1 -1
  70. package/dist/ldf/{p-d56dff05.js → p-b883db41.js} +1 -1
  71. package/dist/ldf/{p-c0ef6296.entry.js → p-bad49599.entry.js} +1 -1
  72. package/dist/ldf/{p-03afc8cb.entry.js → p-bfa17342.entry.js} +1 -1
  73. package/dist/ldf/{p-2ae548b3.entry.js → p-c9ae004b.entry.js} +1 -1
  74. package/dist/ldf/{p-5b43e6be.js → p-d9b01d53.js} +1 -1
  75. package/dist/ldf/{p-c1a86b14.entry.js → p-e209b30e.entry.js} +1 -1
  76. package/dist/ldf/{p-9c1973a6.entry.js → p-e27792f2.entry.js} +1 -1
  77. package/dist/ldf/{p-65ea7ab3.entry.js → p-e3457e6c.entry.js} +1 -1
  78. package/dist/ldf/{p-23af1bc3.entry.js → p-e3f3587a.entry.js} +1 -1
  79. package/dist/ldf/{p-2c39ce94.entry.js → p-e596826e.entry.js} +1 -1
  80. package/dist/ldf/{p-f0de7628.entry.js → p-ed8be718.entry.js} +1 -1
  81. package/package.json +2 -2
  82. package/dist/ldf/p-00e5ee6b.js +0 -1
  83. package/dist/ldf/p-476327d6.js +0 -1
  84. package/dist/ldf/p-4aa9a6f2.js +0 -1
  85. package/dist/ldf/p-65d26c45.js +0 -1
  86. package/dist/ldf/p-800a115c.entry.js +0 -1
  87. package/dist/ldf/p-a1729dbd.js +0 -1
  88. package/dist/ldf/p-be040ae6.entry.js +0 -1
  89. package/dist/ldf/p-e7a449d7.js +0 -1
@@ -128,8 +128,8 @@ var StringComponent = /** @class */ (function () {
128
128
  if (firstChunk) {
129
129
  var splitTest = (firstChunk || '').split(/[\s.!?\\]/);
130
130
  var firstWord = splitTest ? splitTest[0] : '', re = firstWord.length > 2
131
- ? /^ ?([\"\'“”‘’¡\!\?\[\]\(\)\,\wñáéíóú\u0590-\u05ff\u0370-\u03ff])([\wñáéíóú\u0590-\u05ff\u0370-\u03ff\,]*)/
132
- : /^ ?([\"\'“”‘’¡\!\?\[\]\(\)\,\wñáéíóú\u0590-\u05ff\u0370-\u03ff])([\wñáéíóú\u0590-\u05ff\u0370-\u03ff\,]*[\s.!?]*[\wñáéíóú\u0590-\u05ff\u0370-\u03ff]*)/, reIncludingPunctuation = ((_a = firstWord[0]) === null || _a === void 0 ? void 0 : _a.match(/[\"\'“”‘’¡\!\?\[\]\(\)]/)) ? /^ ?([\"\'“”‘’¡\!\?\[\]\(\)\,\wñáéíóú\u0590-\u05ff\u0370-\u03ff]{2})\s*([\wñáéíóú\u0590-\u05ff\u0370-\u03ff]*)/
131
+ ? /^ ?([\"\'“”‘’¡\!\?¿\[\]\(\)\,\wñáéíóú\u0590-\u05ff\u0370-\u03ff])([\wñáéíóú\u0590-\u05ff\u0370-\u03ff\,]*)/
132
+ : /^ ?([\"\'“”‘’¡\!\?¿\[\]\(\)\,\wñáéíóú\u0590-\u05ff\u0370-\u03ff])([\wñáéíóú\u0590-\u05ff\u0370-\u03ff\,]*[\s.!?]*[\wñáéíóú\u0590-\u05ff\u0370-\u03ff]*)/, reIncludingPunctuation = ((_a = firstWord[0]) === null || _a === void 0 ? void 0 : _a.match(/[\"\'“”‘’¡\!\?¿\[\]\(\)]/)) ? /^ ?([\"\'“”‘’¡\!\?¿\[\]\(\)\,\wñáéíóú\u0590-\u05ff\u0370-\u03ff]{2})\s*([\wñáéíóú\u0590-\u05ff\u0370-\u03ff]*)/
133
133
  : re, buffer = firstWord.length == 1, split = firstChunk.split(reIncludingPunctuation).filter(function (s) { return s !== ''; }), match1 = split[0], match2 = split[1], nextWord = split[2];
134
134
  final = new Array(React.createElement("span", { "class": 'firstword' },
135
135
  React.createElement("span", { "class": buffer ? "drop buffered-drop drop-" + match1 : "drop drop-" + match1 }, match1),
@@ -117,9 +117,9 @@ export class StringComponent {
117
117
  if (firstChunk) {
118
118
  const splitTest = (firstChunk || '').split(/[\s.!?\\]/);
119
119
  const firstWord = splitTest ? splitTest[0] : '', re = firstWord.length > 2
120
- ? /^ ?([\"\'“”‘’¡\!\?\[\]\(\)\,\wñáéíóú\u0590-\u05ff\u0370-\u03ff])([\wñáéíóú\u0590-\u05ff\u0370-\u03ff\,]*)/
121
- : /^ ?([\"\'“”‘’¡\!\?\[\]\(\)\,\wñáéíóú\u0590-\u05ff\u0370-\u03ff])([\wñáéíóú\u0590-\u05ff\u0370-\u03ff\,]*[\s.!?]*[\wñáéíóú\u0590-\u05ff\u0370-\u03ff]*)/, reIncludingPunctuation = ((_a = firstWord[0]) === null || _a === void 0 ? void 0 : _a.match(/[\"\'“”‘’¡\!\?\[\]\(\)]/))
122
- ? /^ ?([\"\'“”‘’¡\!\?\[\]\(\)\,\wñáéíóú\u0590-\u05ff\u0370-\u03ff]{2})\s*([\wñáéíóú\u0590-\u05ff\u0370-\u03ff]*)/
120
+ ? /^ ?([\"\'“”‘’¡\!\?¿\[\]\(\)\,\wñáéíóú\u0590-\u05ff\u0370-\u03ff])([\wñáéíóú\u0590-\u05ff\u0370-\u03ff\,]*)/
121
+ : /^ ?([\"\'“”‘’¡\!\?¿\[\]\(\)\,\wñáéíóú\u0590-\u05ff\u0370-\u03ff])([\wñáéíóú\u0590-\u05ff\u0370-\u03ff\,]*[\s.!?]*[\wñáéíóú\u0590-\u05ff\u0370-\u03ff]*)/, reIncludingPunctuation = ((_a = firstWord[0]) === null || _a === void 0 ? void 0 : _a.match(/[\"\'“”‘’¡\!\?¿\[\]\(\)]/))
122
+ ? /^ ?([\"\'“”‘’¡\!\?¿\[\]\(\)\,\wñáéíóú\u0590-\u05ff\u0370-\u03ff]{2})\s*([\wñáéíóú\u0590-\u05ff\u0370-\u03ff]*)/
123
123
  : re, buffer = firstWord.length == 1, split = firstChunk.split(reIncludingPunctuation).filter(s => s !== ''), [match1, match2, nextWord] = split;
124
124
  final = new Array(h("span", { class: 'firstword' },
125
125
  h("span", { class: buffer ? `drop buffered-drop drop-${match1}` : `drop drop-${match1}` }, match1),
@@ -163,13 +163,14 @@ var TextComponent = /** @class */ (function () {
163
163
  var value = ((_e = (_d = this.obj) === null || _d === void 0 ? void 0 : _d.metadata) === null || _e === void 0 ? void 0 : _e.rollup) ? (((_f = this.obj) === null || _f === void 0 ? void 0 : _f.value) || []).map(function (s) { return s.replace(/\s+/g, ' '); })
164
164
  : (((_g = this.obj) === null || _g === void 0 ? void 0 : _g.value) || []);
165
165
  var compiledValue_1 = value.map(function (s) {
166
- return s.split(/([\*\w\n\s,:;\.\-–—'“☩✠”‘’\!\?”\[\]\%\(\)\/\u0041-\u024F]+([^\*\w\n\s,;:\.'“”☩✠‘’”\-–—\!\?\[\]\%\(\)\/\u0041-\u024F]))/g);
166
+ return s.split(/([\*\w\n\s,:;\.\-–—'“☩✠”‘’\!\?”\[\]\%\(\)\/\u0041-\u024F\u1400-\u167f]+([^\*\w\n\s,;:\.'“”☩✠‘’”\-–—\!\?\[\]\%\(\)\/\u0041-\u024F\u1400-\u167f]))/g);
167
167
  });
168
168
  if (!this.editable && ((_h = this.obj) === null || _h === void 0 ? void 0 : _h.display_format) === 'abbreviated') {
169
169
  var firstSection = compiledValue_1[0], lastSection = compiledValue_1[compiledValue_1.length - 1];
170
170
  var firstChunk = this.truncate(firstSection[0]), lastChunk = this.truncate(lastSection[lastSection.length - 1], true);
171
171
  compiledValue_1 = [[firstChunk], [lastChunk]];
172
172
  }
173
+ console.log("compiledValue = ", compiledValue_1);
173
174
  if (this.editable) {
174
175
  return (React.createElement(core_1.Host, { lang: this.obj.language },
175
176
  React.createElement("ldf-label-bar", null,
@@ -89,13 +89,14 @@ export class TextComponent {
89
89
  ? (((_f = this.obj) === null || _f === void 0 ? void 0 : _f.value) || []).map(s => s.replace(/\s+/g, ' '))
90
90
  : (((_g = this.obj) === null || _g === void 0 ? void 0 : _g.value) || []);
91
91
  let compiledValue = value.map(s => {
92
- return s.split(/([\*\w\n\s,:;\.\-–—'“☩✠”‘’\!\?”\[\]\%\(\)\/\u0041-\u024F]+([^\*\w\n\s,;:\.'“”☩✠‘’”\-–—\!\?\[\]\%\(\)\/\u0041-\u024F]))/g);
92
+ return s.split(/([\*\w\n\s,:;\.\-–—'“☩✠”‘’\!\?”\[\]\%\(\)\/\u0041-\u024F\u1400-\u167f]+([^\*\w\n\s,;:\.'“”☩✠‘’”\-–—\!\?\[\]\%\(\)\/\u0041-\u024F\u1400-\u167f]))/g);
93
93
  });
94
94
  if (!this.editable && ((_h = this.obj) === null || _h === void 0 ? void 0 : _h.display_format) === 'abbreviated') {
95
95
  const firstSection = compiledValue[0], lastSection = compiledValue[compiledValue.length - 1];
96
96
  const firstChunk = this.truncate(firstSection[0]), lastChunk = this.truncate(lastSection[lastSection.length - 1], true);
97
97
  compiledValue = [[firstChunk], [lastChunk]];
98
98
  }
99
+ console.log("compiledValue = ", compiledValue);
99
100
  if (this.editable) {
100
101
  return (h(Host, { lang: this.obj.language },
101
102
  h("ldf-label-bar", null,
@@ -24,6 +24,118 @@ function dateFromYMDString(ymd) {
24
24
  return dateFromYMD(y, m, d);
25
25
  }
26
26
 
27
+ /**
28
+ * LiturgicalDay represents a particular moment in the liturgical calendar,
29
+ * like "Monday in Holy Week" or "The Eve of the Epiphany."
30
+ */
31
+ class LiturgicalDay {
32
+ //** Constructor takes a Javascript object containing the class's properties */
33
+ constructor(data = {}) {
34
+ /** True if this moment is the evening. Used to indicate the eve of feasts. */
35
+ this.evening = false;
36
+ Object.assign(this, data);
37
+ }
38
+ /** Returns a native Date from the day's date string */
39
+ getDate() {
40
+ return dateFromYMDString(this.date);
41
+ }
42
+ /** Given a LiturgicalDay, returns a new LiturgicalDay that includes the feasts passed */
43
+ addHolyDays(holydays) {
44
+ var _a, _b, _c, _d;
45
+ const day = this;
46
+ holydays = holydays
47
+ // filter out eves if it's not evening
48
+ .filter((feast) => !feast.eve || this.evening)
49
+ // filter out days that are supposed to stop after a certain Sunday
50
+ // viz., the 1979 daily lectionary for January 8, 9, 10, 11, etc., stops at the 1st Sunday after the Epiphany
51
+ .filter((feast) => feast.stops_at_sunday !== day.week.slug)
52
+ .map((feast) => {
53
+ // if a feast has an `evening` field and it's evening, use that
54
+ if (feast.hasOwnProperty('evening') && this.evening == true) {
55
+ return feast.evening;
56
+ }
57
+ // if a feast has a `morning` field and it's morning, use that
58
+ else if (feast.hasOwnProperty('morning') && this.evening == false) {
59
+ return feast.morning;
60
+ }
61
+ // if a feast is the eve of something and it's evening, use that feast
62
+ else if (feast && feast.eve && this.evening == true) {
63
+ return feast;
64
+ }
65
+ // if none of these, just return the feast
66
+ else {
67
+ return feast;
68
+ }
69
+ })
70
+ .filter((feast) => !!feast);
71
+ // Determine whether a holy day takes precedence over the ordinary day
72
+ const observed = this.observedDay(this, (this.holy_days || new Array()).concat(holydays));
73
+ // overwrite the day's slug with the observed day's slug if they differ
74
+ const holy_day_rank = Number((_b = (_a = observed) === null || _a === void 0 ? void 0 : _a.type) === null || _b === void 0 ? void 0 : _b.rank), holy_day_is_observed = (observed === null || observed === void 0 ? void 0 : observed.slug) && ((observed === null || observed === void 0 ? void 0 : observed.slug) !== day.slug || holy_day_rank > 2), slug = holy_day_is_observed && holy_day_rank > 2 ? observed.slug : day.slug;
75
+ let propers = this.propers;
76
+ if (slug !== this.slug) {
77
+ propers = slug;
78
+ }
79
+ const color = observed.color || this.color, collect = observed.collect || this.collect, season = observed.season || this.season, octave = (_d = (_c = (this.holy_days || [])) === null || _c === void 0 ? void 0 : _c.concat(holydays)) === null || _d === void 0 ? void 0 : _d.map((holyday) => holyday.octave).filter((octave) => Boolean(octave)).reduce((acc, curr) => (acc ? acc : curr || acc), undefined);
80
+ return new LiturgicalDay(Object.assign(Object.assign({}, this), { slug, propers: holy_day_is_observed && holy_day_rank > 2 ? (observed === null || observed === void 0 ? void 0 : observed.propers) || (observed === null || observed === void 0 ? void 0 : observed.slug) : propers, color,
81
+ season,
82
+ octave,
83
+ collect, holy_days: (this.holy_days || new Array()).concat(holydays), holy_day_observed: holy_day_is_observed ? observed : this.holy_day_observed }));
84
+ }
85
+ /** Given a `LiturgicalDay` and a set of `HolyDay`s, it returns whichever option takes precedence */
86
+ observedDay(day, holydays) {
87
+ // rank: Principal Feast (5), Sunday (4), Holy Day (3), random other days (2), ferial weekday (1)
88
+ function getRank(item, type) {
89
+ var _a;
90
+ // ranked items => go with rank
91
+ if (type == 'holyday') {
92
+ return ((_a = item === null || item === void 0 ? void 0 : item.type) === null || _a === void 0 ? void 0 : _a.rank) || 2;
93
+ }
94
+ else {
95
+ // if `day.date` is defined, used it to generate a date
96
+ // otherwise, use the current date
97
+ const date = day.date ? dateFromYMDString(day.date) : dateOnly(new Date());
98
+ // Sundays => 4
99
+ if (date.getDay() == 0) {
100
+ return 4;
101
+ }
102
+ // weekdays => 1
103
+ else {
104
+ return 1;
105
+ }
106
+ }
107
+ }
108
+ const sorted = holydays
109
+ .map((holyday) => ({ rank: getRank(holyday, 'holyday'), obj: holyday }))
110
+ .concat({ rank: getRank(day, 'weekday'), obj: day })
111
+ .sort((a, b) => {
112
+ // equal rank => choose earlier feast (probably )
113
+ if (a.rank === b.rank && a.obj.mmdd && b.obj.mmdd) {
114
+ const [bMM, bDD] = b.obj.mmdd.split('/'), [aMM, aDD] = a.obj.mmdd.split('/'), bDate = new Date(), aDate = new Date();
115
+ bDate.setMonth(parseInt(bMM) - 1);
116
+ bDate.setDate(parseInt(bDD));
117
+ aDate.setMonth(parseInt(aMM) - 1);
118
+ aDate.setDate(parseInt(aDD));
119
+ return a.obj.mmdd === b.obj.mmdd && a.obj.kalendar !== b.obj.kalendar
120
+ ? a.obj.kalendar === day.kalendar
121
+ ? -1
122
+ : 1
123
+ : aDate.getTime() - bDate.getTime();
124
+ }
125
+ else {
126
+ return b.rank - a.rank;
127
+ }
128
+ });
129
+ return Object.assign({}, sorted[0].obj);
130
+ }
131
+ // whether this day is ranked as a Major Feast
132
+ isFeast() {
133
+ var _a, _b, _c, _d, _e, _f, _g;
134
+ const isSunday = this.getDate().getDay() === 0, hasRank = (((_b = (_a = this.holy_day_observed) === null || _a === void 0 ? void 0 : _a.type) === null || _b === void 0 ? void 0 : _b.rank) || 1) >= 3, holyWeek = (_c = this.slug) === null || _c === void 0 ? void 0 : _c.includes('holy-week'), ashWednesdayWeek = (_d = this.slug) === null || _d === void 0 ? void 0 : _d.includes('last-epiphany'), ascensionWeek = (_e = this.slug) === null || _e === void 0 ? void 0 : _e.includes('6th-easter'), easterWeek = (_f = this.slug) === null || _f === void 0 ? void 0 : _f.includes('easter'), ember = (_g = this.season) === null || _g === void 0 ? void 0 : _g.includes('Ember');
135
+ return isSunday || (hasRank && !holyWeek && !easterWeek && !ashWednesdayWeek && !ascensionWeek && !ember);
136
+ }
137
+ }
138
+
27
139
  class Condition {
28
140
  //** Constructor takes a Javascript object containing the class's properties */
29
141
  constructor(data = {}) {
@@ -55,11 +167,11 @@ class Condition {
55
167
  }
56
168
  // `feastDay`
57
169
  if (this.hasOwnProperty('feastDay') && this.feastDay !== undefined) {
58
- const highestFeastRank = Math.max(
170
+ Math.max(
59
171
  // highest rank of holy days given
60
172
  ...(day.holy_days || [])
61
173
  .filter((a) => !!a) // exclude any null or undefined from array
62
- .map((a) => (a && a.type && a.type.rank ? a.type.rank : 3))), isSunday = dateFromYMDString(day.date).getDay() == 0, isFeast = highestFeastRank >= 3 || isSunday;
174
+ .map((a) => (a && a.type && a.type.rank ? a.type.rank : 3))); dateFromYMDString(day.date).getDay() == 0; const isFeast = new LiturgicalDay(day).isFeast();
63
175
  evaluatedConditions.push(isFeast == this.feastDay);
64
176
  }
65
177
  // `date`
@@ -279,4 +391,4 @@ var Book;
279
391
  Book["Bel"] = "Bel";
280
392
  })(Book || (Book = {}));
281
393
 
282
- export { Condition as C, LiturgicalDocument as L, Responsive as R, dateOnly as a, dateFromYMDString as d };
394
+ export { Condition as C, LiturgicalDocument as L, Responsive as R, LiturgicalDay as a, dateFromYMDString as d };
@@ -1,4 +1,4 @@
1
- import { L as LiturgicalDocument } from './book-31b8cdde.js';
1
+ import { L as LiturgicalDocument } from './book-6ee92642.js';
2
2
 
3
3
  const STYLES = ['text', 'day', 'date'];
4
4
  class Heading extends LiturgicalDocument {
@@ -1,4 +1,4 @@
1
- import { L as LiturgicalDocument } from './book-31b8cdde.js';
1
+ import { L as LiturgicalDocument } from './book-6ee92642.js';
2
2
 
3
3
  const STYLES = ['normal', 'slideshow', 'carousel'];
4
4
  /** Refrain represents a short text like the Gloria Patri, Hail Mary, or an Antiphon */
@@ -3,7 +3,7 @@ import { g as getIonMode$1, i as isPlatform, c as config } from './ionic-global-
3
3
  import { h as hasShadowDom, c as clamp, d as debounceEvent, r as raf } from './helpers-8c93393b.js';
4
4
  import { o as openURL, c as createColorClasses$1, h as hostContext } from './theme-74c22054.js';
5
5
  import { p as popoverController } from './overlays-06b43b65.js';
6
- import './book-31b8cdde.js';
6
+ import './book-6ee92642.js';
7
7
  import { C as Change } from './change-ea574d32.js';
8
8
  import { g as getComponentClosestLanguage } from './locale-ec8e14e6.js';
9
9
  import './hardware-back-button-b3b61715.js';
@@ -2,8 +2,8 @@ import { r as registerInstance, h, H as Host, f as forceUpdate, c as createEvent
2
2
  import { g as getIonMode } from './ionic-global-ef89a0a5.js';
3
3
  import { c as createColorClasses } from './theme-74c22054.js';
4
4
  import { f as alertController } from './overlays-06b43b65.js';
5
- import './book-31b8cdde.js';
6
- import { R as Refrain } from './refrain-75a412cb.js';
5
+ import './book-6ee92642.js';
6
+ import { R as Refrain } from './refrain-05638b3c.js';
7
7
  import { C as Change } from './change-ea574d32.js';
8
8
  import { g as getComponentClosestLanguage } from './locale-ec8e14e6.js';
9
9
  import './hardware-back-button-b3b61715.js';
@@ -2,7 +2,7 @@ import { r as registerInstance, c as createEvent, h, H as Host, a as getElement
2
2
  import { g as getIonMode } from './ionic-global-ef89a0a5.js';
3
3
  import { f as findItemLabel, b as renderHiddenInput } from './helpers-8c93393b.js';
4
4
  import { c as createColorClasses, h as hostContext } from './theme-74c22054.js';
5
- import './book-31b8cdde.js';
5
+ import './book-6ee92642.js';
6
6
  import { C as Change } from './change-ea574d32.js';
7
7
  import { f as alertController } from './overlays-06b43b65.js';
8
8
  import { g as getComponentClosestLanguage } from './locale-ec8e14e6.js';
@@ -3,7 +3,7 @@ import { g as getIonMode } from './ionic-global-ef89a0a5.js';
3
3
  import { d as debounceEvent, f as findItemLabel } from './helpers-8c93393b.js';
4
4
  import { c as createColorClasses } from './theme-74c22054.js';
5
5
  import { D as Debounce } from './index-f08f6130.js';
6
- import './book-31b8cdde.js';
6
+ import './book-6ee92642.js';
7
7
  import { C as Cursor } from './cursor-0e47f111.js';
8
8
  import { C as Change } from './change-ea574d32.js';
9
9
  import { c as createCommonjsModule } from './_commonjsHelpers-ba3f0406.js';
@@ -3,15 +3,15 @@ import { c as config, g as getIonMode } from './ionic-global-ef89a0a5.js';
3
3
  import { p as pointerCoord } from './helpers-8c93393b.js';
4
4
  import { c as createColorClasses, h as hostContext } from './theme-74c22054.js';
5
5
  import { f as alertController, l as loadingController, m as modalController, t as toastController } from './overlays-06b43b65.js';
6
- import { R as Responsive, L as LiturgicalDocument, d as dateFromYMDString } from './book-31b8cdde.js';
7
- import { B as BibleReading, L as Liturgy, M as Meditation, P as Psalm, R as ResponsivePrayer, a as Rubric } from './rubric-f779c469.js';
8
- import { H as Heading } from './heading-cc5ffa8a.js';
9
- import { v as versionToString, O as Option } from './option-c16af13a.js';
6
+ import { R as Responsive, L as LiturgicalDocument, d as dateFromYMDString } from './book-6ee92642.js';
7
+ import { B as BibleReading, L as Liturgy, M as Meditation, P as Psalm, R as ResponsivePrayer, a as Rubric } from './rubric-1e407afb.js';
8
+ import { H as Heading } from './heading-e8b2aee9.js';
9
+ import { v as versionToString, O as Option } from './option-265feb4a.js';
10
10
  import { C as Change } from './change-ea574d32.js';
11
11
  import { g as getComponentClosestLanguage } from './locale-ec8e14e6.js';
12
- import { I as Image } from './image-c6a3f0c5.js';
12
+ import { I as Image } from './image-444b2288.js';
13
13
  import { D as Debounce } from './index-f08f6130.js';
14
- import { R as Refrain } from './refrain-75a412cb.js';
14
+ import { R as Refrain } from './refrain-05638b3c.js';
15
15
  import './hardware-back-button-b3b61715.js';
16
16
  import './_commonjsHelpers-ba3f0406.js';
17
17
 
@@ -1,125 +1,13 @@
1
1
  import { r as registerInstance, h, H as Host, a as getElement, c as createEvent } from './index-f0f6a379.js';
2
- import { d as dateFromYMDString, a as dateOnly } from './book-31b8cdde.js';
3
- import { T as Text } from './text-ed75fbd4.js';
2
+ import { a as LiturgicalDay, d as dateFromYMDString } from './book-6ee92642.js';
3
+ import { T as Text } from './text-aebc57f1.js';
4
4
  import { g as getComponentClosestLanguage } from './locale-ec8e14e6.js';
5
- import { H as Heading } from './heading-cc5ffa8a.js';
5
+ import { H as Heading } from './heading-e8b2aee9.js';
6
6
  import { c as createCommonjsModule, a as commonjsGlobal } from './_commonjsHelpers-ba3f0406.js';
7
7
  import { m as modalController } from './overlays-06b43b65.js';
8
8
  import './ionic-global-ef89a0a5.js';
9
9
  import './hardware-back-button-b3b61715.js';
10
10
 
11
- /**
12
- * LiturgicalDay represents a particular moment in the liturgical calendar,
13
- * like "Monday in Holy Week" or "The Eve of the Epiphany."
14
- */
15
- class LiturgicalDay {
16
- //** Constructor takes a Javascript object containing the class's properties */
17
- constructor(data = {}) {
18
- /** True if this moment is the evening. Used to indicate the eve of feasts. */
19
- this.evening = false;
20
- Object.assign(this, data);
21
- }
22
- /** Returns a native Date from the day's date string */
23
- getDate() {
24
- return dateFromYMDString(this.date);
25
- }
26
- /** Given a LiturgicalDay, returns a new LiturgicalDay that includes the feasts passed */
27
- addHolyDays(holydays) {
28
- var _a, _b, _c, _d;
29
- const day = this;
30
- holydays = holydays
31
- // filter out eves if it's not evening
32
- .filter((feast) => !feast.eve || this.evening)
33
- // filter out days that are supposed to stop after a certain Sunday
34
- // viz., the 1979 daily lectionary for January 8, 9, 10, 11, etc., stops at the 1st Sunday after the Epiphany
35
- .filter((feast) => feast.stops_at_sunday !== day.week.slug)
36
- .map((feast) => {
37
- // if a feast has an `evening` field and it's evening, use that
38
- if (feast.hasOwnProperty('evening') && this.evening == true) {
39
- return feast.evening;
40
- }
41
- // if a feast has a `morning` field and it's morning, use that
42
- else if (feast.hasOwnProperty('morning') && this.evening == false) {
43
- return feast.morning;
44
- }
45
- // if a feast is the eve of something and it's evening, use that feast
46
- else if (feast && feast.eve && this.evening == true) {
47
- return feast;
48
- }
49
- // if none of these, just return the feast
50
- else {
51
- return feast;
52
- }
53
- })
54
- .filter((feast) => !!feast);
55
- // Determine whether a holy day takes precedence over the ordinary day
56
- const observed = this.observedDay(this, (this.holy_days || new Array()).concat(holydays));
57
- // overwrite the day's slug with the observed day's slug if they differ
58
- const holy_day_rank = Number((_b = (_a = observed) === null || _a === void 0 ? void 0 : _a.type) === null || _b === void 0 ? void 0 : _b.rank), holy_day_is_observed = (observed === null || observed === void 0 ? void 0 : observed.slug) && ((observed === null || observed === void 0 ? void 0 : observed.slug) !== day.slug || holy_day_rank > 2), slug = holy_day_is_observed && holy_day_rank > 2 ? observed.slug : day.slug;
59
- let propers = this.propers;
60
- if (slug !== this.slug) {
61
- propers = slug;
62
- }
63
- const color = observed.color || this.color, collect = observed.collect || this.collect, season = observed.season || this.season, octave = (_d = (_c = (this.holy_days || [])) === null || _c === void 0 ? void 0 : _c.concat(holydays)) === null || _d === void 0 ? void 0 : _d.map((holyday) => holyday.octave).filter((octave) => Boolean(octave)).reduce((acc, curr) => (acc ? acc : curr || acc), undefined);
64
- return new LiturgicalDay(Object.assign(Object.assign({}, this), { slug, propers: holy_day_is_observed && holy_day_rank > 2 ? (observed === null || observed === void 0 ? void 0 : observed.propers) || (observed === null || observed === void 0 ? void 0 : observed.slug) : propers, color,
65
- season,
66
- octave,
67
- collect, holy_days: (this.holy_days || new Array()).concat(holydays), holy_day_observed: holy_day_is_observed ? observed : this.holy_day_observed }));
68
- }
69
- /** Given a `LiturgicalDay` and a set of `HolyDay`s, it returns whichever option takes precedence */
70
- observedDay(day, holydays) {
71
- // rank: Principal Feast (5), Sunday (4), Holy Day (3), random other days (2), ferial weekday (1)
72
- function getRank(item, type) {
73
- var _a;
74
- // ranked items => go with rank
75
- if (type == 'holyday') {
76
- return ((_a = item === null || item === void 0 ? void 0 : item.type) === null || _a === void 0 ? void 0 : _a.rank) || 2;
77
- }
78
- else {
79
- // if `day.date` is defined, used it to generate a date
80
- // otherwise, use the current date
81
- const date = day.date ? dateFromYMDString(day.date) : dateOnly(new Date());
82
- // Sundays => 4
83
- if (date.getDay() == 0) {
84
- return 4;
85
- }
86
- // weekdays => 1
87
- else {
88
- return 1;
89
- }
90
- }
91
- }
92
- const sorted = holydays
93
- .map((holyday) => ({ rank: getRank(holyday, 'holyday'), obj: holyday }))
94
- .concat({ rank: getRank(day, 'weekday'), obj: day })
95
- .sort((a, b) => {
96
- // equal rank => choose earlier feast (probably )
97
- if (a.rank === b.rank && a.obj.mmdd && b.obj.mmdd) {
98
- const [bMM, bDD] = b.obj.mmdd.split('/'), [aMM, aDD] = a.obj.mmdd.split('/'), bDate = new Date(), aDate = new Date();
99
- bDate.setMonth(parseInt(bMM) - 1);
100
- bDate.setDate(parseInt(bDD));
101
- aDate.setMonth(parseInt(aMM) - 1);
102
- aDate.setDate(parseInt(aDD));
103
- return a.obj.mmdd === b.obj.mmdd && a.obj.kalendar !== b.obj.kalendar
104
- ? a.obj.kalendar === day.kalendar
105
- ? -1
106
- : 1
107
- : aDate.getTime() - bDate.getTime();
108
- }
109
- else {
110
- return b.rank - a.rank;
111
- }
112
- });
113
- return Object.assign({}, sorted[0].obj);
114
- }
115
- // whether this day is ranked as a Major Feast
116
- isFeast() {
117
- var _a, _b, _c, _d;
118
- const isSunday = this.getDate().getDay() === 0, hasRank = (((_b = (_a = this.holy_day_observed) === null || _a === void 0 ? void 0 : _a.type) === null || _b === void 0 ? void 0 : _b.rank) || 1) >= 3, holyWeek = (_c = this.slug) === null || _c === void 0 ? void 0 : _c.includes('holy-week'), easterWeek = ((_d = this.week) === null || _d === void 0 ? void 0 : _d.slug) === 'easter';
119
- return isSunday || (hasRank && !holyWeek && !easterWeek);
120
- }
121
- }
122
-
123
11
  class Citation {
124
12
  //** Constructor takes a Javascript object containing the class's properties */
125
13
  constructor(data = {}) {
@@ -476,9 +364,9 @@ const StringComponent = class {
476
364
  if (firstChunk) {
477
365
  const splitTest = (firstChunk || '').split(/[\s.!?\\]/);
478
366
  const firstWord = splitTest ? splitTest[0] : '', re = firstWord.length > 2
479
- ? /^ ?([\"\'“”‘’¡\!\?\[\]\(\)\,\wñáéíóú\u0590-\u05ff\u0370-\u03ff])([\wñáéíóú\u0590-\u05ff\u0370-\u03ff\,]*)/
480
- : /^ ?([\"\'“”‘’¡\!\?\[\]\(\)\,\wñáéíóú\u0590-\u05ff\u0370-\u03ff])([\wñáéíóú\u0590-\u05ff\u0370-\u03ff\,]*[\s.!?]*[\wñáéíóú\u0590-\u05ff\u0370-\u03ff]*)/, reIncludingPunctuation = ((_a = firstWord[0]) === null || _a === void 0 ? void 0 : _a.match(/[\"\'“”‘’¡\!\?\[\]\(\)]/))
481
- ? /^ ?([\"\'“”‘’¡\!\?\[\]\(\)\,\wñáéíóú\u0590-\u05ff\u0370-\u03ff]{2})\s*([\wñáéíóú\u0590-\u05ff\u0370-\u03ff]*)/
367
+ ? /^ ?([\"\'“”‘’¡\!\?¿\[\]\(\)\,\wñáéíóú\u0590-\u05ff\u0370-\u03ff])([\wñáéíóú\u0590-\u05ff\u0370-\u03ff\,]*)/
368
+ : /^ ?([\"\'“”‘’¡\!\?¿\[\]\(\)\,\wñáéíóú\u0590-\u05ff\u0370-\u03ff])([\wñáéíóú\u0590-\u05ff\u0370-\u03ff\,]*[\s.!?]*[\wñáéíóú\u0590-\u05ff\u0370-\u03ff]*)/, reIncludingPunctuation = ((_a = firstWord[0]) === null || _a === void 0 ? void 0 : _a.match(/[\"\'“”‘’¡\!\?¿\[\]\(\)]/))
369
+ ? /^ ?([\"\'“”‘’¡\!\?¿\[\]\(\)\,\wñáéíóú\u0590-\u05ff\u0370-\u03ff]{2})\s*([\wñáéíóú\u0590-\u05ff\u0370-\u03ff]*)/
482
370
  : re, buffer = firstWord.length == 1, split = firstChunk.split(reIncludingPunctuation).filter(s => s !== ''), [match1, match2, nextWord] = split;
483
371
  final = new Array(h("span", { class: 'firstword' }, h("span", { class: buffer ? `drop buffered-drop drop-${match1}` : `drop drop-${match1}` }, match1), this.maintainCasing(match2) ? match2 : match2 === null || match2 === void 0 ? void 0 : match2.toLowerCase()))
484
372
  .concat(nextWord)
@@ -5656,13 +5544,14 @@ const TextComponent = class {
5656
5544
  ? (((_f = this.obj) === null || _f === void 0 ? void 0 : _f.value) || []).map(s => s.replace(/\s+/g, ' '))
5657
5545
  : (((_g = this.obj) === null || _g === void 0 ? void 0 : _g.value) || []);
5658
5546
  let compiledValue = value.map(s => {
5659
- return s.split(/([\*\w\n\s,:;\.\-–—'“☩✠”‘’\!\?”\[\]\%\(\)\/\u0041-\u024F]+([^\*\w\n\s,;:\.'“”☩✠‘’”\-–—\!\?\[\]\%\(\)\/\u0041-\u024F]))/g);
5547
+ return s.split(/([\*\w\n\s,:;\.\-–—'“☩✠”‘’\!\?”\[\]\%\(\)\/\u0041-\u024F\u1400-\u167f]+([^\*\w\n\s,;:\.'“”☩✠‘’”\-–—\!\?\[\]\%\(\)\/\u0041-\u024F\u1400-\u167f]))/g);
5660
5548
  });
5661
5549
  if (!this.editable && ((_h = this.obj) === null || _h === void 0 ? void 0 : _h.display_format) === 'abbreviated') {
5662
5550
  const firstSection = compiledValue[0], lastSection = compiledValue[compiledValue.length - 1];
5663
5551
  const firstChunk = this.truncate(firstSection[0]), lastChunk = this.truncate(lastSection[lastSection.length - 1], true);
5664
5552
  compiledValue = [[firstChunk], [lastChunk]];
5665
5553
  }
5554
+ console.log("compiledValue = ", compiledValue);
5666
5555
  if (this.editable) {
5667
5556
  return (h(Host, { lang: this.obj.language }, h("ldf-label-bar", null, h("slot", { slot: 'end', name: 'controls' })), !this.editable && h("ldf-heading", { path: `${this.path}/label`, doc: new Heading({ type: 'heading', metadata: { level: 3 }, value: [this.obj.label], citation: this.obj.citation, source: this.obj.source }) }), this.editable && h("ldf-label-bar", null, !((_k = (_j = this.obj) === null || _j === void 0 ? void 0 : _j.metadata) === null || _k === void 0 ? void 0 : _k.omit_label) && h("h3", { class: "editable-label", slot: "start" }, h("ldf-editable-text", { id: `${this.obj.uid || this.obj.slug}-label`, text: (_l = this.obj) === null || _l === void 0 ? void 0 : _l.label, placeholder: localeStrings.label, path: `${this.path}/label` })), h("ldf-editable-text", { slot: "end", id: "source-source", text: (_o = (_m = this.obj) === null || _m === void 0 ? void 0 : _m.source) === null || _o === void 0 ? void 0 : _o.source, path: `${this.path}/source/source`, placeholder: (_p = this.localeStrings) === null || _p === void 0 ? void 0 : _p.source }), h("ldf-editable-text", { slot: "end", id: "source-citation", text: (_r = (_q = this.obj) === null || _q === void 0 ? void 0 : _q.source) === null || _r === void 0 ? void 0 : _r.citation, path: `${this.path}/source/citation`, placeholder: (_s = this.localeStrings) === null || _s === void 0 ? void 0 : _s.source_citation })), h("div", { class: `text ${this.editable ? 'editable' : ''} ${((_t = this.obj) === null || _t === void 0 ? void 0 : _t.display_format) || 'default'}` }, this.obj.value.map((prayer, prayerIndex) => h("ldf-editable-text", { id: `${this.obj.uid || this.obj.slug}-${prayerIndex}`, text: prayer, path: `${this.path}/value/${prayerIndex}` })), (((_u = this.obj) === null || _u === void 0 ? void 0 : _u.style) === 'prayer' || (((_w = (_v = this.obj) === null || _v === void 0 ? void 0 : _v.metadata) === null || _w === void 0 ? void 0 : _w.response) && !((_y = (_x = this.obj) === null || _x === void 0 ? void 0 : _x.metadata) === null || _y === void 0 ? void 0 : _y.omit_response))) && h("span", { class: 'response' }, h("ldf-editable-text", { id: `${this.obj.uid || this.obj.slug}-response`, text: this.obj.metadata && this.obj.metadata.response, path: `${this.path}/response`, placeholder: localeStrings.amen })))));
5668
5557
  }
@@ -1,11 +1,11 @@
1
1
  import { h, r as registerInstance, c as createEvent, H as Host, a as getElement } from './index-f0f6a379.js';
2
- import { L as LiturgicalDocument } from './book-31b8cdde.js';
3
- import { B as BibleReading, P as Psalm, L as Liturgy$1, M as Meditation, R as ResponsivePrayer, a as Rubric } from './rubric-f779c469.js';
4
- import { H as Heading } from './heading-cc5ffa8a.js';
5
- import { I as Image } from './image-c6a3f0c5.js';
6
- import { O as Option } from './option-c16af13a.js';
7
- import { R as Refrain } from './refrain-75a412cb.js';
8
- import { T as Text } from './text-ed75fbd4.js';
2
+ import { L as LiturgicalDocument } from './book-6ee92642.js';
3
+ import { B as BibleReading, P as Psalm, L as Liturgy$1, M as Meditation, R as ResponsivePrayer, a as Rubric } from './rubric-1e407afb.js';
4
+ import { H as Heading } from './heading-e8b2aee9.js';
5
+ import { I as Image } from './image-444b2288.js';
6
+ import { O as Option } from './option-265feb4a.js';
7
+ import { R as Refrain } from './refrain-05638b3c.js';
8
+ import { T as Text } from './text-aebc57f1.js';
9
9
  import { g as getComponentClosestLanguage } from './locale-ec8e14e6.js';
10
10
 
11
11
  const MENU = [
@@ -1,5 +1,5 @@
1
1
  import { h, r as registerInstance, c as createEvent, H as Host, a as getElement } from './index-f0f6a379.js';
2
- import { C as Condition } from './book-31b8cdde.js';
2
+ import { C as Condition } from './book-6ee92642.js';
3
3
  import { C as Change } from './change-ea574d32.js';
4
4
  import { g as getComponentClosestLanguage } from './locale-ec8e14e6.js';
5
5
 
@@ -1,5 +1,5 @@
1
1
  import { r as registerInstance, c as createEvent, h, H as Host, a as getElement } from './index-f0f6a379.js';
2
- import { C as Condition } from './book-31b8cdde.js';
2
+ import { C as Condition } from './book-6ee92642.js';
3
3
  import { C as Change } from './change-ea574d32.js';
4
4
  import { g as getComponentClosestLanguage } from './locale-ec8e14e6.js';
5
5
 
@@ -1,6 +1,6 @@
1
1
  import { r as registerInstance, c as createEvent, h, H as Host, a as getElement } from './index-f0f6a379.js';
2
- import { L as LiturgicalDocument } from './book-31b8cdde.js';
3
- import { v as versionToString, O as Option } from './option-c16af13a.js';
2
+ import { L as LiturgicalDocument } from './book-6ee92642.js';
3
+ import { v as versionToString, O as Option } from './option-265feb4a.js';
4
4
  import { g as getComponentClosestLanguage } from './locale-ec8e14e6.js';
5
5
 
6
6
  /* Converts a list of documents into a single document showing options in parallel */
@@ -1,13 +1,13 @@
1
1
  import { r as registerInstance, c as createEvent, h, H as Host, a as getElement } from './index-f0f6a379.js';
2
- import { L as LiturgicalDocument } from './book-31b8cdde.js';
2
+ import { L as LiturgicalDocument } from './book-6ee92642.js';
3
3
  import { C as Change } from './change-ea574d32.js';
4
- import { v as versionToString } from './option-c16af13a.js';
5
- import { s as specificClass } from './specific-class-09c98625.js';
4
+ import { v as versionToString } from './option-265feb4a.js';
5
+ import { s as specificClass } from './specific-class-6d69c516.js';
6
6
  import { g as getComponentClosestLanguage } from './locale-ec8e14e6.js';
7
- import './rubric-f779c469.js';
8
- import './heading-cc5ffa8a.js';
9
- import './refrain-75a412cb.js';
10
- import './text-ed75fbd4.js';
7
+ import './rubric-1e407afb.js';
8
+ import './heading-e8b2aee9.js';
9
+ import './refrain-05638b3c.js';
10
+ import './text-aebc57f1.js';
11
11
 
12
12
  const LOCALE_STRINGS = {
13
13
  "allowMultiple": "Allow multiple options",
@@ -1,13 +1,13 @@
1
1
  import { r as registerInstance, c as createEvent, h, H as Host, a as getElement } from './index-f0f6a379.js';
2
- import { L as LiturgicalDocument } from './book-31b8cdde.js';
2
+ import { L as LiturgicalDocument } from './book-6ee92642.js';
3
3
  import { C as Change } from './change-ea574d32.js';
4
- import { s as specificClass } from './specific-class-09c98625.js';
4
+ import { s as specificClass } from './specific-class-6d69c516.js';
5
5
  import { g as getComponentClosestLanguage } from './locale-ec8e14e6.js';
6
- import './rubric-f779c469.js';
7
- import './heading-cc5ffa8a.js';
8
- import './option-c16af13a.js';
9
- import './refrain-75a412cb.js';
10
- import './text-ed75fbd4.js';
6
+ import './rubric-1e407afb.js';
7
+ import './heading-e8b2aee9.js';
8
+ import './option-265feb4a.js';
9
+ import './refrain-05638b3c.js';
10
+ import './text-aebc57f1.js';
11
11
 
12
12
  const abbreviated = "Abbreviated";
13
13
  const advanced = "Advanced Settings";
@@ -1,5 +1,5 @@
1
1
  import { r as registerInstance, c as createEvent, h, H as Host, a as getElement } from './index-f0f6a379.js';
2
- import './book-31b8cdde.js';
2
+ import './book-6ee92642.js';
3
3
  import { a as PreferenceOption } from './preference-d070d4cb.js';
4
4
  import { C as Change } from './change-ea574d32.js';
5
5
  import { g as getComponentClosestLanguage } from './locale-ec8e14e6.js';
@@ -1,5 +1,5 @@
1
1
  import { r as registerInstance, c as createEvent, h, H as Host, a as getElement } from './index-f0f6a379.js';
2
- import './book-31b8cdde.js';
2
+ import './book-6ee92642.js';
3
3
  import { P as Preference, a as PreferenceOption } from './preference-d070d4cb.js';
4
4
  import { C as Change } from './change-ea574d32.js';
5
5
  import { g as getComponentClosestLanguage } from './locale-ec8e14e6.js';
@@ -1,6 +1,6 @@
1
1
  import { h, r as registerInstance, c as createEvent, H as Host, a as getElement } from './index-f0f6a379.js';
2
2
  import { f as alertController } from './overlays-06b43b65.js';
3
- import './book-31b8cdde.js';
3
+ import './book-6ee92642.js';
4
4
  import { P as Preference } from './preference-d070d4cb.js';
5
5
  import { C as Change } from './change-ea574d32.js';
6
6
  import { g as getComponentClosestLanguage } from './locale-ec8e14e6.js';
@@ -1,5 +1,5 @@
1
1
  import { r as registerInstance, c as createEvent, h, a as getElement } from './index-f0f6a379.js';
2
- import './book-31b8cdde.js';
2
+ import './book-6ee92642.js';
3
3
  import { C as Change } from './change-ea574d32.js';
4
4
  import { g as getComponentClosestLanguage } from './locale-ec8e14e6.js';
5
5
 
@@ -1,5 +1,5 @@
1
1
  import { r as registerInstance, c as createEvent, h, H as Host, a as getElement } from './index-f0f6a379.js';
2
- import { L as LiturgicalDocument } from './book-31b8cdde.js';
2
+ import { L as LiturgicalDocument } from './book-6ee92642.js';
3
3
  import { C as Cursor } from './cursor-0e47f111.js';
4
4
  import { C as Change } from './change-ea574d32.js';
5
5
  import { e as elementFromPath, q as querySelectorDeep, v as values_js } from './index-1bf6d100.js';
@@ -1,4 +1,4 @@
1
- import { L as LiturgicalDocument } from './book-31b8cdde.js';
1
+ import { L as LiturgicalDocument } from './book-6ee92642.js';
2
2
 
3
3
  function versionToString(version) {
4
4
  if (typeof version === 'string') {
@@ -18,6 +18,10 @@ const VERSIONS = {
18
18
  rite_i: 'Rite I',
19
19
  bhs: 'Hebrew',
20
20
  hebrew: 'Hebrew',
21
+ EAIB: 'EAIB',
22
+ BCP: 'BCP',
23
+ eaib: 'EAIB',
24
+ bcp: 'BCP',
21
25
  };
22
26
  function modifiedVersion(option) {
23
27
  return option.type === 'psalm' && option.style === 'psalm' && option.version === 'bcp1979'
@@ -1,4 +1,4 @@
1
- import { L as LiturgicalDocument } from './book-31b8cdde.js';
1
+ import { L as LiturgicalDocument } from './book-6ee92642.js';
2
2
 
3
3
  const STYLES = ['normal', 'antiphon', 'gloria'];
4
4
  /** Refrain represents a short text like the Gloria Patri, Hail Mary, or an Antiphon */
@@ -1,4 +1,4 @@
1
- import { L as LiturgicalDocument } from './book-31b8cdde.js';
1
+ import { L as LiturgicalDocument } from './book-6ee92642.js';
2
2
 
3
3
  const BIBLE_BOOK_ABBREVIATIONS = [
4
4
  {