@venite/components 0.16.47 → 0.16.49

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 (112) hide show
  1. package/dist/cjs/{book-82e0876b.js → book-6d16fad3.js} +1 -1
  2. package/dist/cjs/dropcaps-baa79b2d.js +21 -0
  3. package/dist/cjs/{heading-b7872a4d.js → heading-dff0a6f9.js} +1 -1
  4. package/dist/cjs/{image-75040cd8.js → image-527d7134.js} +1 -1
  5. package/dist/cjs/index-01fdec29.js +2 -2
  6. package/dist/cjs/ion-button_14.cjs.entry.js +1 -1
  7. package/dist/cjs/ion-card-content_6.cjs.entry.js +2 -2
  8. package/dist/cjs/ion-input_2.cjs.entry.js +1 -1
  9. package/dist/cjs/{ion-segment_16.cjs.entry.js → ion-segment_17.cjs.entry.js} +116 -45
  10. package/dist/cjs/ldf-day-name_5.cjs.entry.js +5 -7
  11. package/dist/cjs/ldf-editable-add-block-menu.cjs.entry.js +7 -7
  12. package/dist/cjs/ldf-editable-boolean_2.cjs.entry.js +1 -1
  13. package/dist/cjs/ldf-editable-condition-piece.cjs.entry.js +1 -1
  14. package/dist/cjs/ldf-editable-condition.cjs.entry.js +1 -1
  15. package/dist/cjs/ldf-editable-filter-documents.cjs.entry.js +2 -2
  16. package/dist/cjs/ldf-editable-lookup_2.cjs.entry.js +7 -7
  17. package/dist/cjs/ldf-editable-metadata.cjs.entry.js +7 -7
  18. package/dist/cjs/ldf-editable-preference-option.cjs.entry.js +1 -1
  19. package/dist/cjs/ldf-editable-preference.cjs.entry.js +1 -1
  20. package/dist/cjs/ldf-editable-preferences.cjs.entry.js +1 -1
  21. package/dist/cjs/ldf-editable-string-list.cjs.entry.js +1 -1
  22. package/dist/cjs/ldf-editor.cjs.entry.js +1 -1
  23. package/dist/cjs/ldf.cjs.js +1 -1
  24. package/dist/cjs/loader.cjs.js +1 -1
  25. package/dist/cjs/{option-d7f9785e.js → option-af060fb4.js} +1 -1
  26. package/dist/cjs/{refrain-dcde813a.js → refrain-f867e88b.js} +1 -1
  27. package/dist/cjs/{rubric-cd1436af.js → rubric-9851b9bb.js} +1 -1
  28. package/dist/cjs/{specific-class-c2579d35.js → specific-class-a4d1cc65.js} +5 -5
  29. package/dist/cjs/{text-d86d8916.js → text-9dd495bb.js} +1 -1
  30. package/dist/collection/collection-manifest.json +1 -0
  31. package/dist/collection/components/bible-reading/bible-reading.js +5 -4
  32. package/dist/collection/components/editable-metadata-buttons/editable-metadata-buttons.js +2 -2
  33. package/dist/collection/components/liturgical-document/dist/liturgical-document.js +3 -0
  34. package/dist/collection/components/liturgical-document/liturgical-document.js +3 -0
  35. package/dist/collection/components/parallel/dist/option.js +318 -0
  36. package/dist/collection/components/parallel/dist/parallel.js +146 -0
  37. package/dist/collection/components/parallel/parallel.css +8 -0
  38. package/dist/collection/components/parallel/parallel.i18n.en.json +3 -0
  39. package/dist/collection/components/parallel/parallel.js +213 -0
  40. package/dist/collection/components/psalm/psalm.js +2 -1
  41. package/dist/collection/components/responsive-prayer/responsive-prayer.js +8 -7
  42. package/dist/collection/components/text/text.js +3 -5
  43. package/dist/collection/i18n/parallel.i18n.en.json +3 -0
  44. package/dist/collection/utils/dropcaps.js +17 -0
  45. package/dist/esm/{book-30d463e4.js → book-ffb2b7c9.js} +1 -1
  46. package/dist/esm/dropcaps-9409f9e0.js +19 -0
  47. package/dist/esm/{heading-3148493f.js → heading-32b75b51.js} +1 -1
  48. package/dist/esm/{image-72083f34.js → image-b773ce41.js} +1 -1
  49. package/dist/esm/index-034add74.js +2 -2
  50. package/dist/esm/ion-button_14.entry.js +1 -1
  51. package/dist/esm/ion-card-content_6.entry.js +2 -2
  52. package/dist/esm/ion-input_2.entry.js +1 -1
  53. package/dist/esm/{ion-segment_16.entry.js → ion-segment_17.entry.js} +116 -46
  54. package/dist/esm/ldf-day-name_5.entry.js +5 -7
  55. package/dist/esm/ldf-editable-add-block-menu.entry.js +7 -7
  56. package/dist/esm/ldf-editable-boolean_2.entry.js +1 -1
  57. package/dist/esm/ldf-editable-condition-piece.entry.js +1 -1
  58. package/dist/esm/ldf-editable-condition.entry.js +1 -1
  59. package/dist/esm/ldf-editable-filter-documents.entry.js +2 -2
  60. package/dist/esm/ldf-editable-lookup_2.entry.js +7 -7
  61. package/dist/esm/ldf-editable-metadata.entry.js +7 -7
  62. package/dist/esm/ldf-editable-preference-option.entry.js +1 -1
  63. package/dist/esm/ldf-editable-preference.entry.js +1 -1
  64. package/dist/esm/ldf-editable-preferences.entry.js +1 -1
  65. package/dist/esm/ldf-editable-string-list.entry.js +1 -1
  66. package/dist/esm/ldf-editor.entry.js +1 -1
  67. package/dist/esm/ldf.js +1 -1
  68. package/dist/esm/loader.js +1 -1
  69. package/dist/esm/{option-6f3f65cd.js → option-f5f45da6.js} +1 -1
  70. package/dist/esm/{refrain-7bd7ce8a.js → refrain-03edc2dd.js} +1 -1
  71. package/dist/esm/{rubric-4fcaa326.js → rubric-5e76db3e.js} +1 -1
  72. package/dist/esm/{specific-class-11a0f046.js → specific-class-19d5b8ae.js} +5 -5
  73. package/dist/esm/{text-8a1f3c31.js → text-035232e4.js} +1 -1
  74. package/dist/ldf/i18n/parallel.i18n.en.json +3 -0
  75. package/dist/ldf/ldf.esm.js +1 -1
  76. package/dist/ldf/p-07a5654e.js +1 -0
  77. package/dist/ldf/p-177719a0.entry.js +1 -0
  78. package/dist/ldf/{p-13c95df6.entry.js → p-1e912545.entry.js} +1 -1
  79. package/dist/ldf/{p-75945b61.entry.js → p-2a52fcd7.entry.js} +1 -1
  80. package/dist/ldf/{p-4cecd5be.js → p-3f3b5ab1.js} +1 -1
  81. package/dist/ldf/p-424ff111.entry.js +1 -0
  82. package/dist/ldf/{p-0275ff97.entry.js → p-4a2d5333.entry.js} +1 -1
  83. package/dist/ldf/{p-531b0af0.entry.js → p-5547df4c.entry.js} +1 -1
  84. package/dist/ldf/{p-809c58d3.js → p-619c1cd7.js} +1 -1
  85. package/dist/ldf/{p-b5f92da4.entry.js → p-64a75143.entry.js} +1 -1
  86. package/dist/ldf/{p-a54d398b.entry.js → p-6a61c406.entry.js} +1 -1
  87. package/dist/ldf/{p-28f67c35.entry.js → p-823625bb.entry.js} +1 -1
  88. package/dist/ldf/{p-be6a5a82.js → p-8e59a930.js} +1 -1
  89. package/dist/ldf/p-94095704.js +1 -0
  90. package/dist/ldf/{p-f51f98ee.entry.js → p-a745950c.entry.js} +1 -1
  91. package/dist/ldf/p-ae13ac48.js +1 -0
  92. package/dist/ldf/{p-49297483.js → p-c88be1ca.js} +1 -1
  93. package/dist/ldf/{p-76b4b747.entry.js → p-c9263178.entry.js} +1 -1
  94. package/dist/ldf/{p-4346d5f8.js → p-cf9d5530.js} +1 -1
  95. package/dist/ldf/{p-8bd9886e.entry.js → p-d15ff324.entry.js} +1 -1
  96. package/dist/ldf/p-d6b725e9.js +1 -0
  97. package/dist/ldf/{p-3d550f37.entry.js → p-dd824b02.entry.js} +1 -1
  98. package/dist/ldf/{p-3402f431.entry.js → p-e1f58e08.entry.js} +1 -1
  99. package/dist/ldf/{p-74080a1b.entry.js → p-e8a53a5e.entry.js} +1 -1
  100. package/dist/ldf/{p-c8423964.entry.js → p-e8bb8144.entry.js} +1 -1
  101. package/dist/ldf/{p-248ae134.entry.js → p-ea6696fa.entry.js} +1 -1
  102. package/dist/types/components/editable-metadata-buttons/editable-metadata-buttons.d.ts +1 -1
  103. package/dist/types/components/parallel/parallel.d.ts +41 -0
  104. package/dist/types/components/responsive-prayer/responsive-prayer.d.ts +2 -2
  105. package/dist/types/components.d.ts +56 -3
  106. package/dist/types/utils/dropcaps.d.ts +3 -0
  107. package/package.json +2 -2
  108. package/dist/ldf/p-705e7fad.js +0 -1
  109. package/dist/ldf/p-8d817f81.entry.js +0 -1
  110. package/dist/ldf/p-ce877995.js +0 -1
  111. package/dist/ldf/p-cf7fede1.entry.js +0 -1
  112. package/dist/ldf/p-de7668ff.js +0 -1
@@ -257,7 +257,7 @@ const TYPES = [
257
257
  'parallel',
258
258
  ];
259
259
  const LOOKUP_TYPES = ['lectionary', 'canticle', 'category', 'slug', 'collect'];
260
- const DISPLAY_FORMATS = ['default', 'omit', 'unison', 'abbreviated', 'force_dropcap'];
260
+ const DISPLAY_FORMATS = ['default', 'omit', 'unison', 'abbreviated', 'force_dropcap', 'disable_dropcap'];
261
261
  /** Represents a liturgy of any scope and concreteness, from a complete bullletin to a single prayer. */
262
262
  class LiturgicalDocument {
263
263
  //** Constructor takes a Javascript object containing the class's properties */
@@ -0,0 +1,21 @@
1
+ 'use strict';
2
+
3
+ function useDropcap(language, display_format, index) {
4
+ if (language == "iu" || language == "he") {
5
+ return "disabled";
6
+ }
7
+ if (display_format === "force_dropcap") {
8
+ return "enabled";
9
+ }
10
+ if (display_format === "disable_dropcap") {
11
+ return "disabled";
12
+ }
13
+ if (index == 0) {
14
+ return "enabled";
15
+ }
16
+ else {
17
+ return "disabled";
18
+ }
19
+ }
20
+
21
+ exports.useDropcap = useDropcap;
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const book = require('./book-82e0876b.js');
3
+ const book = require('./book-6d16fad3.js');
4
4
 
5
5
  const STYLES = ['text', 'day', 'date'];
6
6
  class Heading extends book.LiturgicalDocument {
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const book = require('./book-82e0876b.js');
3
+ const book = require('./book-6d16fad3.js');
4
4
 
5
5
  const STYLES = ['normal', 'slideshow', 'carousel'];
6
6
  /** Refrain represents a short text like the Gloria Patri, Hail Mary, or an Antiphon */
@@ -2088,10 +2088,10 @@ const loadModule = (cmpMeta, hostRef, hmrVersionId) => {
2088
2088
  return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
2089
2089
  /* webpackMode: "lazy" */
2090
2090
  './ldf-editable-string-list.cjs.entry.js')); }).then(processMod, consoleError);
2091
- case 'ion-segment_16.cjs':
2091
+ case 'ion-segment_17.cjs':
2092
2092
  return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
2093
2093
  /* webpackMode: "lazy" */
2094
- './ion-segment_16.cjs.entry.js')); }).then(processMod, consoleError);
2094
+ './ion-segment_17.cjs.entry.js')); }).then(processMod, consoleError);
2095
2095
  case 'ldf-editable-boolean_2.cjs':
2096
2096
  return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
2097
2097
  /* webpackMode: "lazy" */
@@ -11,7 +11,7 @@ const index$1 = require('./index-9c7b27e4.js');
11
11
  const index$2 = require('./index-b6879fbc.js');
12
12
  const index$3 = require('./index-e56e09b8.js');
13
13
  const overlays = require('./overlays-240c867b.js');
14
- require('./book-82e0876b.js');
14
+ require('./book-6d16fad3.js');
15
15
  const change = require('./change-cdb1e8c0.js');
16
16
  const locale = require('./locale-13a47c0e.js');
17
17
  require('./hardware-back-button-92d97ff8.js');
@@ -6,8 +6,8 @@ const index = require('./index-01fdec29.js');
6
6
  const ionicGlobal = require('./ionic-global-bd0aab94.js');
7
7
  const theme = require('./theme-b0b295c1.js');
8
8
  const overlays = require('./overlays-240c867b.js');
9
- require('./book-82e0876b.js');
10
- const refrain = require('./refrain-dcde813a.js');
9
+ require('./book-6d16fad3.js');
10
+ const refrain = require('./refrain-f867e88b.js');
11
11
  const change = require('./change-cdb1e8c0.js');
12
12
  const locale = require('./locale-13a47c0e.js');
13
13
  require('./hardware-back-button-92d97ff8.js');
@@ -7,7 +7,7 @@ const ionicGlobal = require('./ionic-global-bd0aab94.js');
7
7
  const helpers = require('./helpers-c2496722.js');
8
8
  const theme = require('./theme-b0b295c1.js');
9
9
  const index$1 = require('./index-7aa21373.js');
10
- require('./book-82e0876b.js');
10
+ require('./book-6d16fad3.js');
11
11
  const cursor = require('./cursor-81bfd01e.js');
12
12
  const change = require('./change-cdb1e8c0.js');
13
13
  const _commonjsHelpers = require('./_commonjsHelpers-bcc1208a.js');
@@ -8,18 +8,26 @@ const helpers = require('./helpers-c2496722.js');
8
8
  const dir = require('./dir-5af5259a.js');
9
9
  const theme = require('./theme-b0b295c1.js');
10
10
  const overlays = require('./overlays-240c867b.js');
11
- const book$2 = require('./book-82e0876b.js');
12
- const rubric = require('./rubric-cd1436af.js');
13
- const heading$1 = require('./heading-b7872a4d.js');
14
- const option$1 = require('./option-d7f9785e.js');
11
+ const book$2 = require('./book-6d16fad3.js');
12
+ const rubric = require('./rubric-9851b9bb.js');
13
+ const heading$1 = require('./heading-dff0a6f9.js');
14
+ const option$1 = require('./option-af060fb4.js');
15
15
  const change = require('./change-cdb1e8c0.js');
16
16
  const locale = require('./locale-13a47c0e.js');
17
- const image = require('./image-75040cd8.js');
17
+ const dropcaps = require('./dropcaps-baa79b2d.js');
18
+ const image = require('./image-527d7134.js');
18
19
  const index$1 = require('./index-7aa21373.js');
19
- const refrain = require('./refrain-dcde813a.js');
20
+ const refrain = require('./refrain-f867e88b.js');
20
21
  require('./hardware-back-button-92d97ff8.js');
21
22
  require('./_commonjsHelpers-bcc1208a.js');
22
23
 
24
+ class Parallel extends book$2.LiturgicalDocument {
25
+ //** Constructor takes a Javascript object containing the class's properties */
26
+ constructor(data = {}) {
27
+ super(data);
28
+ }
29
+ }
30
+
23
31
  const segmentIosCss = ":host{--ripple-color:currentColor;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:flex;position:relative;align-items:stretch;justify-content:center;width:100%;background:var(--background);font-family:var(--ion-font-family, inherit);text-align:center;contain:paint;user-select:none}:host(.segment-scrollable){justify-content:start;width:auto;overflow-x:auto}:host(.segment-scrollable::-webkit-scrollbar){display:none}:host{--background:rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.065);border-radius:8px;overflow:hidden;z-index:0}:host(.ion-color){background:rgba(var(--ion-color-base-rgb), 0.065)}:host(.in-toolbar){margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;width:auto}@supports (margin-inline-start: 0) or (-webkit-margin-start: 0){:host(.in-toolbar){margin-left:unset;margin-right:unset;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto}}:host(.in-toolbar:not(.ion-color)){background:var(--ion-toolbar-segment-background, var(--background))}:host(.in-toolbar-color:not(.ion-color)){background:rgba(var(--ion-color-contrast-rgb), 0.11)}";
24
32
 
25
33
  const segmentMdCss = ":host{--ripple-color:currentColor;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:flex;position:relative;align-items:stretch;justify-content:center;width:100%;background:var(--background);font-family:var(--ion-font-family, inherit);text-align:center;contain:paint;user-select:none}:host(.segment-scrollable){justify-content:start;width:auto;overflow-x:auto}:host(.segment-scrollable::-webkit-scrollbar){display:none}:host{--background:transparent}:host(.segment-scrollable) ::slotted(ion-segment-button){min-width:auto}";
@@ -553,7 +561,7 @@ const changeReading$1 = "Change Reading";
553
561
  const newCitation$1 = "Biblical citation.";
554
562
  const cancel$2 = "Cancel";
555
563
  const ok$2 = "OK";
556
- const EN$8 = {
564
+ const EN$9 = {
557
565
  amen: amen$1,
558
566
  book: book$1,
559
567
  chapter: chapter$1,
@@ -612,8 +620,8 @@ async function fetchReading(citation, version = 'NRSV', api = 'https://us-centra
612
620
 
613
621
  const bibleReadingCss = "ldf-bible-reading.sc-ldf-bible-reading,.sc-ldf-bible-reading-h{font-family:var(--ldf-font-face);text-align:var(--ldf-text-align)}.bible-reading[lang=he].sc-ldf-bible-reading{text-align:right;direction:rtl;font-size:1.5em;font-family:\"Times New Roman\" !important}.bible-reading[lang=he].sc-ldf-bible-reading .drop.sc-ldf-bible-reading{float:right !important;font-family:\"Times New Roman\" !important}.bible-reading.omit.sc-ldf-bible-reading .verses.sc-ldf-bible-reading{display:none}.editable.bible-reading.sc-ldf-bible-reading .verses.sc-ldf-bible-reading{display:block;color:var(--ldf-greyed-out-text-color)}sup.sc-ldf-bible-reading{display:var(--ldf-bible-reading-verse-number-display);margin-left:0;margin-right:0.25em}.citation.sc-ldf-bible-reading{font-size:80%;font-style:italic;margin-left:1em;float:var(--ldf-bible-reading-citation-float)}.response.sc-ldf-bible-reading{font-weight:var(--ldf-response-font-weight);font-style:var(--ldf-response-font-style)}.verses.sc-ldf-bible-reading .verse.sc-ldf-bible-reading{display:flex;flex-direction:row}sup.sc-ldf-bible-reading:first-of-type{display:var(--ldf-drop-early-verses-display)}.editable-verse.sc-ldf-bible-reading{display:inline}.editable-citation.sc-ldf-bible-reading{display:inline;width:100%}.editable-citation.sc-ldf-bible-reading ldf-editable-text.sc-ldf-bible-reading{display:inline-block;width:25px}.editable-citation.sc-ldf-bible-reading ldf-editable-text.book.sc-ldf-bible-reading{width:75px}h3.editable-label.sc-ldf-bible-reading{text-align:var(--ldf-h3-text-align);font-weight:var(--ldf-h3-font-weight);font-style:var(--ldf-h3-font-style);font-variant:var(--ldf-h3-font-variant);font-size:var(--ldf-h3-font-size);text-transform:var(--ldf-h3-text-transform)}.citation-button.sc-ldf-bible-reading{background:none;border:0;font-family:var(--ldf-font-face);font-size:inherit}";
614
622
 
615
- const LOCALE$8 = {
616
- 'en': EN$8,
623
+ const LOCALE$9 = {
624
+ 'en': EN$9,
617
625
  'es': ES$1
618
626
  };
619
627
  const BibleReadingComponent = class {
@@ -661,7 +669,7 @@ const BibleReadingComponent = class {
661
669
  // Private methods
662
670
  async loadLocaleStrings() {
663
671
  try {
664
- this.localeStrings = LOCALE$8[locale.getComponentClosestLanguage(this.element)];
672
+ this.localeStrings = LOCALE$9[locale.getComponentClosestLanguage(this.element)];
665
673
  }
666
674
  catch (e) {
667
675
  console.warn(e);
@@ -768,22 +776,22 @@ const BibleReadingComponent = class {
768
776
  _o.response);
769
777
  }
770
778
  return (index.h(index.Host, null, ((_p = this.obj) === null || _p === void 0 ? void 0 : _p.label) && index.h("ldf-heading", { doc: new heading$1.Heading({ type: 'heading', metadata: { level: 3 }, value: [this.obj.label] }) }), index.h("div", { lang: (_q = this.obj) === null || _q === void 0 ? void 0 : _q.language, class: `bible-reading ${((_r = this.obj) === null || _r === void 0 ? void 0 : _r.display_format) || 'default'}` }, index.h("p", null, this.verses.map((verse, verseIndex) => {
771
- var _a;
779
+ var _a, _b;
772
780
  return verse.hasOwnProperty('type') && verse.type === 'heading'
773
781
  ? index.h("ldf-heading", { doc: new heading$1.Heading(verse) })
774
- : index.h("ldf-string", { citation: { book: verse.book, chapter: verse.chapter, verse: verse.verse }, id: this.obj.uid, text: verse.text, fragment: this.path, dropcap: ((_a = this.obj) === null || _a === void 0 ? void 0 : _a.display_format) == "force_dropcap" && verseIndex === 0 ? "force" : "disabled" });
782
+ : index.h("ldf-string", { citation: { book: verse.book, chapter: verse.chapter, verse: verse.verse }, id: this.obj.uid, text: verse.text, fragment: this.path, dropcap: dropcaps.useDropcap((_a = this.obj) === null || _a === void 0 ? void 0 : _a.language, (_b = this.obj) === null || _b === void 0 ? void 0 : _b.display_format, verseIndex) });
775
783
  }), shortResponse && !((_t = (_s = this.obj) === null || _s === void 0 ? void 0 : _s.metadata) === null || _t === void 0 ? void 0 : _t.omit_response) && responseNode, index.h("span", { class: "citation" }, this.obj.citation)), !shortResponse && !((_v = (_u = this.obj) === null || _u === void 0 ? void 0 : _u.metadata) === null || _v === void 0 ? void 0 : _v.omit_response) && index.h("p", null, responseNode))));
776
784
  }
777
785
  /* `long` render a typical Bible reading in the liturgy */
778
786
  else {
779
787
  const paragraphs = this.paragraphs();
780
788
  return (index.h("div", { lang: (_w = this.obj) === null || _w === void 0 ? void 0 : _w.language, class: `bible-reading ${((_x = this.obj) === null || _x === void 0 ? void 0 : _x.display_format) || 'default'}` }, index.h("ldf-heading", { doc: new heading$1.Heading({ type: 'heading', metadata: { level: 3 }, value: [this.obj.label], citation: this.obj.citation }) }), ((_z = (_y = this.obj) === null || _y === void 0 ? void 0 : _y.metadata) === null || _z === void 0 ? void 0 : _z.compiled_intro) && index.h("ldf-liturgical-document", { doc: this.obj.metadata.compiled_intro }), paragraphs.map((paragraph, paragraphIndex) => index.h("p", { lang: this.obj.language }, paragraph.map((verse, verseIndex) => {
781
- var _a;
789
+ var _a, _b;
782
790
  return verse.hasOwnProperty('type') && verse.type === 'heading'
783
791
  ? index.h("ldf-heading", { doc: new heading$1.Heading(verse) })
784
792
  : [
785
793
  index.h("sup", null, verse.verse),
786
- index.h("ldf-string", { citation: verse, dropcap: paragraphIndex == 0 && verseIndex == 0 && ((_a = this.obj) === null || _a === void 0 ? void 0 : _a.language) !== 'iu' ? 'force' : 'disabled', id: `${verse.chapter}-${verse.book}-${verse.verse}`, text: verse.text, index: verseIndex, fragment: this.path })
794
+ index.h("ldf-string", { citation: verse, dropcap: dropcaps.useDropcap((_a = this.obj) === null || _a === void 0 ? void 0 : _a.language, (_b = this.obj) === null || _b === void 0 ? void 0 : _b.display_format, paragraphIndex + verseIndex), id: `${verse.chapter}-${verse.book}-${verse.verse}`, text: verse.text, index: verseIndex, fragment: this.path })
787
795
  ];
788
796
  })))));
789
797
  }
@@ -802,7 +810,7 @@ BibleReadingComponent.style = bibleReadingCss;
802
810
  const add = "Add";
803
811
  const label$3 = "Label";
804
812
  const citation$3 = "Citation";
805
- const EN$7 = {
813
+ const EN$8 = {
806
814
  add: add,
807
815
  label: label$3,
808
816
  citation: citation$3
@@ -810,8 +818,8 @@ const EN$7 = {
810
818
 
811
819
  const editableAddBlockCss = ".sc-ldf-editable-add-block-h{display:flex;flex-direction:column;align-items:center;width:100%}.sc-ldf-editable-add-block-h .button-container.sc-ldf-editable-add-block{display:flex;align-items:center;height:0;justify-content:center;width:100%}.sc-ldf-editable-add-block-h button.sc-ldf-editable-add-block{background-color:var(--ldf-background-color);color:var(--ldf-color);font-family:var(--ldf-controls-font-family);font-weight:lighter}.sc-ldf-editable-add-block-h button.sc-ldf-editable-add-block:hover{cursor:pointer}.sc-ldf-editable-add-block-h .visible.sc-ldf-editable-add-block{height:0;opacity:1;transition:0.25s}.sc-ldf-editable-add-block-h .hidden.sc-ldf-editable-add-block{height:0;opacity:0;transition:2s}.sc-ldf-editable-add-block-h .underlying.sc-ldf-editable-add-block{width:100%;border-top:1px solid #a0a0a0;border-bottom:1px solid #a0a0a0;min-height:1em;position:relative;bottom:0.5em;z-index:-1}.sc-ldf-editable-add-block-h .underlying.visible.sc-ldf-editable-add-block{opacity:0.5;transition:0.25s}.sc-ldf-editable-add-block-h .underlying.visible.expanded.sc-ldf-editable-add-block{z-index:1}.sc-ldf-editable-add-block-h .underlying.collapsed.sc-ldf-editable-add-block{height:1em}.sc-ldf-editable-add-block-h .underlying.hidden.sc-ldf-editable-add-block{opacity:0;transition:1s}.sc-ldf-editable-add-block-h .underlying.hidden.sc-ldf-editable-add-block button.sc-ldf-editable-add-block{z-index:-1}.sc-ldf-editable-add-block-h .visually-hidden.sc-ldf-editable-add-block{position:absolute !important;height:1px;width:1px;overflow:hidden;clip:rect(1px 1px 1px 1px);clip:rect(1px, 1px, 1px, 1px);white-space:nowrap}.button.sc-ldf-editable-add-block{position:absolute;display:flex;flex-direction:row;align-items:center;justify-content:center;opacity:1;transition:all 0.25s}.hidden.sc-ldf-editable-add-block{display:none;height:0;opacity:0;transition:all 0.25s}";
812
820
 
813
- const LOCALE$7 = {
814
- 'en': EN$7
821
+ const LOCALE$8 = {
822
+ 'en': EN$8
815
823
  };
816
824
  const EditableAddBlockComponent = class {
817
825
  constructor(hostRef) {
@@ -826,7 +834,7 @@ const EditableAddBlockComponent = class {
826
834
  // Methods
827
835
  async loadLocaleStrings() {
828
836
  try {
829
- this.localeStrings = LOCALE$7[locale.getComponentClosestLanguage(this.element)];
837
+ this.localeStrings = LOCALE$8[locale.getComponentClosestLanguage(this.element)];
830
838
  }
831
839
  catch (e) {
832
840
  console.warn(e);
@@ -872,7 +880,7 @@ const responsiveSmallOnly = "Only on small screens";
872
880
  const responsiveSmallHidden = "Not on small screens";
873
881
  const unison = "Unison";
874
882
  const wholeverse = "By Whole Verse";
875
- const EN$6 = {
883
+ const EN$7 = {
876
884
  abbreviated: abbreviated,
877
885
  addOption: addOption,
878
886
  cancel: cancel,
@@ -906,8 +914,8 @@ const EN$6 = {
906
914
 
907
915
  const editableMetadataButtonsCss = ".buttons.sc-ldf-editable-metadata-buttons{position:absolute;height:0;width:100%;display:flex;flex-direction:row;align-items:center;justify-content:flex-end;opacity:1;transition:all 0.25s}.buttons.sc-ldf-editable-metadata-buttons ion-buttons.sc-ldf-editable-metadata-buttons{background-color:var(--ion-color-light, #f4f5f8);border-radius:3px;flex-wrap:wrap;max-width:100%}.hidden.sc-ldf-editable-metadata-buttons{display:none;height:0;opacity:0;transition:all 0.25s}@media (max-width: 767px){.sm-hidden.sc-ldf-editable-metadata-buttons{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}}";
908
916
 
909
- const LOCALE$6 = {
910
- 'en': EN$6
917
+ const LOCALE$7 = {
918
+ 'en': EN$7
911
919
  };
912
920
  const EditableMetadataButtonsComponent = class {
913
921
  constructor(hostRef) {
@@ -931,7 +939,7 @@ const EditableMetadataButtonsComponent = class {
931
939
  // Private methods
932
940
  async loadLocaleStrings() {
933
941
  try {
934
- this.localeStrings = LOCALE$6[locale.getComponentClosestLanguage(this.element)];
942
+ this.localeStrings = LOCALE$7[locale.getComponentClosestLanguage(this.element)];
935
943
  }
936
944
  catch (e) {
937
945
  console.warn(e);
@@ -1147,7 +1155,7 @@ EditableSelectComponent.style = editableSelectCss;
1147
1155
 
1148
1156
  const close = "Return to Bulletin";
1149
1157
  const url = "URL";
1150
- const EN$5 = {
1158
+ const EN$6 = {
1151
1159
  close: close,
1152
1160
  url: url
1153
1161
  };
@@ -1164,8 +1172,8 @@ var __decorate = (undefined && undefined.__decorate) || function (decorators, ta
1164
1172
  r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1165
1173
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1166
1174
  };
1167
- const LOCALE$5 = {
1168
- 'en': EN$5
1175
+ const LOCALE$6 = {
1176
+ 'en': EN$6
1169
1177
  };
1170
1178
  const ImageComponent = class {
1171
1179
  constructor(hostRef) {
@@ -1199,7 +1207,7 @@ const ImageComponent = class {
1199
1207
  }
1200
1208
  async loadLocaleStrings() {
1201
1209
  try {
1202
- this.localeStrings = LOCALE$5[locale.getComponentClosestLanguage(this.element)];
1210
+ this.localeStrings = LOCALE$6[locale.getComponentClosestLanguage(this.element)];
1203
1211
  }
1204
1212
  catch (e) {
1205
1213
  console.warn(e);
@@ -1354,7 +1362,7 @@ const gt = " > ";
1354
1362
  const gte = " ≥ ";
1355
1363
  const smallOnly = "Only appears on small screens";
1356
1364
  const smallHidden = "Doesn't appear on small screens";
1357
- const EN$4 = {
1365
+ const EN$5 = {
1358
1366
  bible_version: bible_version,
1359
1367
  "canticle-1": "The first canticle ",
1360
1368
  "canticle-2": "The second canticle ",
@@ -1568,8 +1576,8 @@ const LookupNode = ({ doc, localeStrings }) => {
1568
1576
 
1569
1577
  const liturgicalDocumentCss = "ldf-liturgical-document.sc-ldf-liturgical-document,.sc-ldf-liturgical-document-h{font-family:var(--ldf-font-face);display:block}.container.editable.sc-ldf-liturgical-document{padding-top:0}.lookup.sc-ldf-liturgical-document{background-color:var(--ldf-editable-lookup-background-color);color:var(--ldf-editable-lookup-color);border-radius:4px;margin-bottom:1.5em;padding:1em;width:calc(100% - 2em)}.lookup.sc-ldf-liturgical-document code.sc-ldf-liturgical-document{font-weight:bold}.condition.sc-ldf-liturgical-document{background-color:var(--ldf-editable-condition-background-color);color:var(--ldf-editable-condition-color);border-radius:4px;padding:1em;width:calc(100% - 2em)}.condition.sc-ldf-liturgical-document code.sc-ldf-liturgical-document{font-weight:bold}.doc.sc-ldf-liturgical-document{margin-top:var(--ldf-liturgical-document-margin-top)}ldf-editable-metadata-buttons.sc-ldf-liturgical-document{height:none;display:block;z-index:10;background:var(--ldf-background);opacity:0.8;width:100%;position:sticky;top:2em;padding-top:1em;padding-bottom:1em}ldf-editable-metadata-buttons.top-level.sc-ldf-liturgical-document{position:relative;top:0}.small-only.sc-ldf-liturgical-document{display:block}.small-hidden.sc-ldf-liturgical-document{display:none}@media (min-width: 415px){.small-only.sc-ldf-liturgical-document{display:none}.small-hidden.sc-ldf-liturgical-document{display:block}}";
1570
1578
 
1571
- const LOCALE$4 = {
1572
- 'en': EN$4
1579
+ const LOCALE$5 = {
1580
+ 'en': EN$5
1573
1581
  };
1574
1582
  const LiturgicalDocumentComponent = class {
1575
1583
  constructor(hostRef) {
@@ -1656,7 +1664,7 @@ const LiturgicalDocumentComponent = class {
1656
1664
  }
1657
1665
  async loadLocaleStrings() {
1658
1666
  try {
1659
- this.localeStrings = LOCALE$4[locale.getComponentClosestLanguage(this.element)];
1667
+ this.localeStrings = LOCALE$5[locale.getComponentClosestLanguage(this.element)];
1660
1668
  }
1661
1669
  catch (e) {
1662
1670
  console.warn(e);
@@ -1726,6 +1734,9 @@ const LiturgicalDocumentComponent = class {
1726
1734
  case 'option':
1727
1735
  node = index.h("ldf-option", { path: this.path, editable: editable, preview: this.preview, doc: doc });
1728
1736
  break;
1737
+ case 'parallel':
1738
+ node = index.h("ldf-parallel", { path: this.path, editable: editable, preview: this.preview, doc: doc });
1739
+ break;
1729
1740
  case 'refrain':
1730
1741
  node = index.h("ldf-refrain", { path: this.path, editable: editable, doc: doc });
1731
1742
  break;
@@ -1825,7 +1836,7 @@ const resume = "Resume";
1825
1836
  const meditate = "Meditate for";
1826
1837
  const minutes = "minutes.";
1827
1838
  const seconds = " seconds. ";
1828
- const EN$3 = {
1839
+ const EN$4 = {
1829
1840
  start: start,
1830
1841
  pause: pause,
1831
1842
  resume: resume,
@@ -1836,8 +1847,8 @@ const EN$3 = {
1836
1847
 
1837
1848
  const meditationCss = "ldf-heading.sc-ldf-meditation .control-container.sc-ldf-meditation,.sc-ldf-meditation-h .control-container.sc-ldf-meditation{display:block;margin:auto}ldf-heading.sc-ldf-meditation .controls.sc-ldf-meditation,.sc-ldf-meditation-h .controls.sc-ldf-meditation{display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;width:100%}ldf-heading.sc-ldf-meditation .controls.sc-ldf-meditation input.sc-ldf-meditation,.sc-ldf-meditation-h .controls.sc-ldf-meditation input.sc-ldf-meditation{text-align:center}@media (min-width: 767px){ldf-heading.sc-ldf-meditation .controls.sc-ldf-meditation,.sc-ldf-meditation-h .controls.sc-ldf-meditation{flex-direction:row}}ldf-heading.sc-ldf-meditation .progress-circle-container.sc-ldf-meditation,.sc-ldf-meditation-h .progress-circle-container.sc-ldf-meditation{display:flex;align-items:center;justify-content:center;padding:1em}ldf-heading.sc-ldf-meditation .progress-circle-container.sc-ldf-meditation .progress-circle.sc-ldf-meditation,.sc-ldf-meditation-h .progress-circle-container.sc-ldf-meditation .progress-circle.sc-ldf-meditation{width:300px;height:300px;display:flex;align-items:center;justify-content:center;border-radius:50%}ldf-heading.sc-ldf-meditation .progress-circle-container.sc-ldf-meditation .progress-circle.sc-ldf-meditation .circle-overlay.sc-ldf-meditation,.sc-ldf-meditation-h .progress-circle-container.sc-ldf-meditation .progress-circle.sc-ldf-meditation .circle-overlay.sc-ldf-meditation{background-color:var(--ldf-background-color);display:flex;align-items:center;flex-direction:column;justify-content:center;height:92%;width:92%;border-radius:50%}ldf-heading.sc-ldf-meditation .progress-circle-container.sc-ldf-meditation .progress-circle.sc-ldf-meditation .seconds.sc-ldf-meditation,.sc-ldf-meditation-h .progress-circle-container.sc-ldf-meditation .progress-circle.sc-ldf-meditation .seconds.sc-ldf-meditation{font-family:var(--ldf-font-face);font-size:3em}ldf-heading.sc-ldf-meditation button.clear.sc-ldf-meditation,.sc-ldf-meditation-h button.clear.sc-ldf-meditation{background-color:var(--ldf-background-color);border:none;font-size:1em}.hidden.sc-ldf-meditation{height:0;opacity:0;transition:0.25s}";
1838
1849
 
1839
- const LOCALE$3 = {
1840
- 'en': EN$3
1850
+ const LOCALE$4 = {
1851
+ 'en': EN$4
1841
1852
  };
1842
1853
  const MeditationComponent = class {
1843
1854
  constructor(hostRef) {
@@ -1921,7 +1932,7 @@ const MeditationComponent = class {
1921
1932
  // Private methods
1922
1933
  async loadLocaleStrings() {
1923
1934
  try {
1924
- this.localeStrings = LOCALE$3[locale.getComponentClosestLanguage(this.element)];
1935
+ this.localeStrings = LOCALE$4[locale.getComponentClosestLanguage(this.element)];
1925
1936
  }
1926
1937
  catch (e) {
1927
1938
  console.warn(e);
@@ -1994,14 +2005,14 @@ const MeditationComponent = class {
1994
2005
  MeditationComponent.style = meditationCss;
1995
2006
 
1996
2007
  const option = "Option";
1997
- const EN$2 = {
2008
+ const EN$3 = {
1998
2009
  option: option
1999
2010
  };
2000
2011
 
2001
2012
  const optionCss = ".select-control.sc-ldf-option{margin-top:var(--ldf-select-control-margin-top)}ion-select.sc-ldf-option{width:75vw;max-width:300px}";
2002
2013
 
2003
- const LOCALE$2 = {
2004
- 'en': EN$2
2014
+ const LOCALE$3 = {
2015
+ 'en': EN$3
2005
2016
  };
2006
2017
  const OptionComponent = class {
2007
2018
  constructor(hostRef) {
@@ -2043,7 +2054,7 @@ const OptionComponent = class {
2043
2054
  /** Asynchronously load localization strings */
2044
2055
  async loadLocaleStrings() {
2045
2056
  try {
2046
- this.localeStrings = LOCALE$2[locale.getComponentClosestLanguage(this.el)];
2057
+ this.localeStrings = LOCALE$3[locale.getComponentClosestLanguage(this.el)];
2047
2058
  }
2048
2059
  catch (e) {
2049
2060
  console.warn(e);
@@ -2186,6 +2197,65 @@ const OptionComponent = class {
2186
2197
  };
2187
2198
  OptionComponent.style = optionCss;
2188
2199
 
2200
+ const parallel = "Parallel";
2201
+ const EN$2 = {
2202
+ parallel: parallel
2203
+ };
2204
+
2205
+ const parallelCss = ".select-control.sc-ldf-parallel{margin-top:var(--ldf-select-control-margin-top)}ion-select.sc-ldf-parallel{width:75vw;max-width:300px}";
2206
+
2207
+ const LOCALE$2 = {
2208
+ 'en': EN$2
2209
+ };
2210
+ const ParallelComponent = class {
2211
+ constructor(hostRef) {
2212
+ index.registerInstance(this, hostRef);
2213
+ this.ldfAddOptionToDoc = index.createEvent(this, "ldfAddOptionToDoc", 7);
2214
+ this.ldfDocShouldChange = index.createEvent(this, "ldfDocShouldChange", 7);
2215
+ this.ldfOptionAskForStoredSelection = index.createEvent(this, "ldfOptionAskForStoredSelection", 7);
2216
+ this.ldfOptionMakeSelection = index.createEvent(this, "ldfOptionMakeSelection", 7);
2217
+ }
2218
+ docChanged(newDoc) {
2219
+ try {
2220
+ if (typeof newDoc == 'string') {
2221
+ this.obj = new Parallel(JSON.parse(newDoc));
2222
+ }
2223
+ else {
2224
+ this.obj = new Parallel(newDoc);
2225
+ }
2226
+ }
2227
+ catch (e) {
2228
+ console.warn(e);
2229
+ this.obj = new Parallel();
2230
+ }
2231
+ }
2232
+ // Lifecycle events
2233
+ componentWillLoad() {
2234
+ this.docChanged(this.doc);
2235
+ this.loadLocaleStrings();
2236
+ this.ldfOptionAskForStoredSelection.emit({ el: this.el });
2237
+ }
2238
+ /** Asynchronously load localization strings */
2239
+ async loadLocaleStrings() {
2240
+ try {
2241
+ this.localeStrings = LOCALE$2[locale.getComponentClosestLanguage(this.el)];
2242
+ }
2243
+ catch (e) {
2244
+ console.warn(e);
2245
+ }
2246
+ }
2247
+ // Render
2248
+ render() {
2249
+ var _a;
2250
+ return (index.h(index.Host, { lang: this.obj.language }, index.h("tr", null, (((_a = this.obj) === null || _a === void 0 ? void 0 : _a.value) || []).map((obj, ii) => index.h("td", null, index.h("ldf-liturgical-document", { doc: obj, path: `${this.path}/value/${ii}`, base: `${this.path}/value`, index: ii, editable: this.editable, parentType: 'option' }))))));
2251
+ }
2252
+ get el() { return index.getElement(this); }
2253
+ static get watchers() { return {
2254
+ "doc": ["docChanged"]
2255
+ }; }
2256
+ };
2257
+ ParallelComponent.style = parallelCss;
2258
+
2189
2259
  const changeCanticle$1 = "Change Canticle";
2190
2260
  const citation$2 = "(Biblical) Citation";
2191
2261
  const label$2 = "Label";
@@ -2427,7 +2497,7 @@ const PsalmComponent = class {
2427
2497
  // 1st half of verse
2428
2498
  nodes.push(index.h("div", { class: 'verse' }, this.editable ?
2429
2499
  index.h("ldf-editable-text", { id: `${this.obj.uid || this.obj.slug}-${sectionIndex}-${verseIndex}-verse`, text: verse.verse, path: `${this.path}/value/${sectionIndex}/value/${verseIndex}/verse`, placeholder: 'Lorem ipsum sit dolor amet, *', template: pattern, templateMaker: templateMaker }) :
2430
- index.h("ldf-string", { text: verse.verse, citation: { label: (_a = this.obj) === null || _a === void 0 ? void 0 : _a.label, book: ((_b = this.obj) === null || _b === void 0 ? void 0 : _b.style) === 'psalm' ? 'Psalm' : undefined, chapter: (_d = (_c = this.obj) === null || _c === void 0 ? void 0 : _c.metadata) === null || _d === void 0 ? void 0 : _d.number, verse: verse.number }, dropcap: (verseIndex == 0 && ((_e = this.obj) === null || _e === void 0 ? void 0 : _e.language) !== "he" && ((_f = this.obj) === null || _f === void 0 ? void 0 : _f.language) !== "iu") ? 'force' : 'disabled', index: verseIndex, fragment: this.path })));
2500
+ index.h("ldf-string", { text: verse.verse, citation: { label: (_a = this.obj) === null || _a === void 0 ? void 0 : _a.label, book: ((_b = this.obj) === null || _b === void 0 ? void 0 : _b.style) === 'psalm' ? 'Psalm' : undefined, chapter: (_d = (_c = this.obj) === null || _c === void 0 ? void 0 : _c.metadata) === null || _d === void 0 ? void 0 : _d.number, verse: verse.number }, dropcap: dropcaps.useDropcap((_e = this.obj) === null || _e === void 0 ? void 0 : _e.language, (_f = this.obj) === null || _f === void 0 ? void 0 : _f.display_format, verseIndex), index: verseIndex, fragment: this.path })));
2431
2501
  nodes.push(index.h("br", null));
2432
2502
  // 2nd half of verse
2433
2503
  nodes.push(index.h("div", { class: 'halfverse' }, this.editable ?
@@ -2545,8 +2615,8 @@ const ResponsivePrayerComponent = class {
2545
2615
  return (index.h("ldf-editable-text", { id: `${this.obj.uid}-${index$1}-${part}`, text: line[part], path: `${this.path}/value/${index$1}/${part}`, template: template, templateMaker: templateMaker }));
2546
2616
  }
2547
2617
  /** renders a `ResponsivePrayerLine` as an `ldf-string` */
2548
- stringNode(line, index$1, part) {
2549
- return (index.h("ldf-string", { citation: { label: this.obj.label }, id: `${this.obj.uid}-${index$1}-${part}`, text: line[part], dropcap: index$1 == 0 ? "enabled" : "disabled", fragment: this.path }));
2618
+ stringNode(doc, line, index$1, part) {
2619
+ return (index.h("ldf-string", { citation: { label: this.obj.label }, id: `${this.obj.uid}-${index$1}-${part}`, text: line[part], dropcap: dropcaps.useDropcap(doc.language, doc.display_format, index$1), fragment: this.path }));
2550
2620
  }
2551
2621
  // Render the `response` in a litany, and handle `[Silence]` value
2552
2622
  litanyResponseStringNode(line, index$1) {
@@ -2571,7 +2641,7 @@ const ResponsivePrayerComponent = class {
2571
2641
  * V. O Lord, open our lips.
2572
2642
  * R. And our mouth shall proclaim thy praise. */
2573
2643
  const template = { label: '', text: '' }, templateMaker = (text) => ({ label: '', text });
2574
- return (index.h(index.Host, { class: this.obj.style, lang: this.obj.language }, index.h("ldf-label-bar", null, index.h("slot", { slot: 'end', name: 'controls' })), !this.editable && needsHeader && index.h("ldf-heading", { doc: new heading$1.Heading({ type: 'heading', metadata: { level: 3 }, value: [this.obj.label], citation: this.obj.citation, source: this.obj.source }) }), this.editable && needsHeader && this.editableHeader(), index.h("table", { class: "preces" }, this.obj.value.map((line, index$1) => index.h("tr", { class: "row" }, index.h("td", { class: "cell" }, this.editable ? this.editableNode(line, index$1, 'label', template, templateMaker) : this.stringNode(line, index$1, 'label')), index.h("td", { class: index$1 % 2 == 0 ? 'cell' : 'cell response' }, this.editable ? this.editableNode(line, index$1, 'text', template, templateMaker) : this.stringNode(line, index$1, 'text')))))));
2644
+ return (index.h(index.Host, { class: this.obj.style, lang: this.obj.language }, index.h("ldf-label-bar", null, index.h("slot", { slot: 'end', name: 'controls' })), !this.editable && needsHeader && index.h("ldf-heading", { doc: new heading$1.Heading({ type: 'heading', metadata: { level: 3 }, value: [this.obj.label], citation: this.obj.citation, source: this.obj.source }) }), this.editable && needsHeader && this.editableHeader(), index.h("table", { class: "preces" }, this.obj.value.map((line, index$1) => index.h("tr", { class: "row" }, index.h("td", { class: "cell" }, this.editable ? this.editableNode(line, index$1, 'label', template, templateMaker) : this.stringNode(this.obj, line, index$1, 'label')), index.h("td", { class: index$1 % 2 == 0 ? 'cell' : 'cell response' }, this.editable ? this.editableNode(line, index$1, 'text', template, templateMaker) : this.stringNode(this.obj, line, index$1, 'text')))))));
2575
2645
  }
2576
2646
  else if (this.obj.style == 'litany') {
2577
2647
  /* `litany`type returns prayers and responses with a break between each pair, like
@@ -2591,7 +2661,7 @@ const ResponsivePrayerComponent = class {
2591
2661
  // Render the line
2592
2662
  return index.h("div", { class: { "line": true, "editable": this.editable } }, index.h("p", { class: classes.join(' ') }, this.editable
2593
2663
  ? this.editableNode(line, index$1, 'text', template, templateMaker)
2594
- : this.stringNode(line, index$1, 'text'), line.response && (this.editable ?
2664
+ : this.stringNode(this.obj, line, index$1, 'text'), line.response && (this.editable ?
2595
2665
  index.h("span", { class: 'response' }, this.editableNode(line, index$1, 'response', template, templateMaker)) :
2596
2666
  [index.h("br", null), this.litanyResponseStringNode(line, index$1)]), (!line.response && ((_a = this.obj.metadata) === null || _a === void 0 ? void 0 : _a.response)) && (this.editable ?
2597
2667
  index.h("span", { class: 'response' }, index.h("ldf-editable-text", { id: `${this.obj.uid}-${index$1}-response`, text: this.obj.metadata.response, path: `${this.path}/response` })) :
@@ -2607,10 +2677,10 @@ const ResponsivePrayerComponent = class {
2607
2677
  return (index.h(index.Host, { class: this.obj.style, lang: this.obj.language }, !this.editableHeader && needsHeader && index.h("ldf-heading", { doc: new heading$1.Heading({ type: 'heading', metadata: { level: 3 }, value: [this.obj.label], citation: this.obj.citation, source: this.obj.source }) }), this.editable && needsHeader && this.editableHeader(), index.h("p", { class: 'responsive' }, this.obj.value.map((line, index$1) => [
2608
2678
  this.editable ?
2609
2679
  index.h("div", null, this.editableNode(line, index$1, 'text', template, templateMaker)) :
2610
- index.h("div", null, this.stringNode(line, index$1, 'text')),
2680
+ index.h("div", null, this.stringNode(this.obj, line, index$1, 'text')),
2611
2681
  this.editable ?
2612
2682
  index.h("div", { class: 'response' }, this.editableNode(line, index$1, 'response', template, templateMaker)) :
2613
- index.h("div", { class: 'response' }, this.stringNode(line, index$1, 'response'))
2683
+ index.h("div", { class: 'response' }, this.stringNode(this.obj, line, index$1, 'response'))
2614
2684
  ]))));
2615
2685
  }
2616
2686
  }
@@ -2669,6 +2739,7 @@ exports.ldf_liturgical_document = LiturgicalDocumentComponent;
2669
2739
  exports.ldf_liturgy = LiturgyComponent;
2670
2740
  exports.ldf_meditation = MeditationComponent;
2671
2741
  exports.ldf_option = OptionComponent;
2742
+ exports.ldf_parallel = ParallelComponent;
2672
2743
  exports.ldf_psalm = PsalmComponent;
2673
2744
  exports.ldf_refrain = RefrainComponent;
2674
2745
  exports.ldf_responsive_prayer = ResponsivePrayerComponent;
@@ -3,12 +3,13 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-01fdec29.js');
6
- const book = require('./book-82e0876b.js');
7
- const text = require('./text-d86d8916.js');
6
+ const book = require('./book-6d16fad3.js');
7
+ const text = require('./text-9dd495bb.js');
8
8
  const locale = require('./locale-13a47c0e.js');
9
- const heading = require('./heading-b7872a4d.js');
9
+ const heading = require('./heading-dff0a6f9.js');
10
10
  const _commonjsHelpers = require('./_commonjsHelpers-bcc1208a.js');
11
11
  const overlays = require('./overlays-240c867b.js');
12
+ const dropcaps = require('./dropcaps-baa79b2d.js');
12
13
  require('./ionic-global-bd0aab94.js');
13
14
  require('./hardware-back-button-92d97ff8.js');
14
15
  require('./helpers-c2496722.js');
@@ -5864,10 +5865,7 @@ const TextComponent = class {
5864
5865
  return (index.h("div", { lang: ((_1 = this.obj) === null || _1 === void 0 ? void 0 : _1.language) || 'en', class: `text ${((_2 = this.obj) === null || _2 === void 0 ? void 0 : _2.display_format) || 'default'}` }, ((((_3 = this.obj) === null || _3 === void 0 ? void 0 : _3.label) && !((_5 = (_4 = this.obj) === null || _4 === void 0 ? void 0 : _4.metadata) === null || _5 === void 0 ? void 0 : _5.omit_label)) || ((_6 = this.obj) === null || _6 === void 0 ? void 0 : _6.citation)) && index.h("ldf-heading", { path: this.path, doc: new heading.Heading({ type: 'heading', metadata: { level: 3 }, value: [((_7 = this.obj.metadata) === null || _7 === void 0 ? void 0 : _7.omit_label) ? '' : this.obj.label], citation: this.obj.citation, source: this.obj.source }) }), compiledValue.map((prayer, prayerIndex) => {
5865
5866
  var _a, _b, _c, _d;
5866
5867
  return index.h("p", { class: "text-body", id: `${this.obj.uid || this.obj.slug}-prayerIndex` }, prayer === null || prayer === void 0 ? void 0 :
5867
- prayer.map((chunk, chunkIndex) => {
5868
- var _a;
5869
- return index.h("span", { id: `${this.obj.uid || this.obj.slug}-${prayerIndex}-${chunkIndex}` }, index.h("ldf-string", { text: chunk, citation: { label: this.obj.label }, dropcap: ((_a = this.obj) === null || _a === void 0 ? void 0 : _a.display_format) == "force_dropcap" && prayerIndex === 0 && chunkIndex === 0 ? "force" : (prayerIndex === 0 && chunkIndex <= 1 ? "enabled" : "disabled"), index: prayerIndex + chunkIndex, fragment: this.path }));
5870
- }), ((_b = (_a = this.obj) === null || _a === void 0 ? void 0 : _a.metadata) === null || _b === void 0 ? void 0 : _b.response) && prayerIndex == compiledValue.length - 1 && index.h("span", { class: "response" }, " ", this.obj.metadata.response), !((_d = (_c = this.obj) === null || _c === void 0 ? void 0 : _c.metadata) === null || _d === void 0 ? void 0 : _d.response) && this.obj.style == 'prayer' && prayerIndex == compiledValue.length - 1 && index.h("span", { class: "response" }, " ", localeStrings.amen));
5868
+ prayer.map((chunk, chunkIndex) => index.h("span", { id: `${this.obj.uid || this.obj.slug}-${prayerIndex}-${chunkIndex}` }, index.h("ldf-string", { text: chunk, citation: { label: this.obj.label }, dropcap: dropcaps.useDropcap(this.obj.language, this.obj.display_format, prayerIndex + chunkIndex), index: prayerIndex + chunkIndex, fragment: this.path }))), ((_b = (_a = this.obj) === null || _a === void 0 ? void 0 : _a.metadata) === null || _b === void 0 ? void 0 : _b.response) && prayerIndex == compiledValue.length - 1 && index.h("span", { class: "response" }, " ", this.obj.metadata.response), !((_d = (_c = this.obj) === null || _c === void 0 ? void 0 : _c.metadata) === null || _d === void 0 ? void 0 : _d.response) && this.obj.style == 'prayer' && prayerIndex == compiledValue.length - 1 && index.h("span", { class: "response" }, " ", localeStrings.amen));
5871
5869
  })));
5872
5870
  }
5873
5871
  }
@@ -3,13 +3,13 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-01fdec29.js');
6
- const book = require('./book-82e0876b.js');
7
- const rubric$1 = require('./rubric-cd1436af.js');
8
- const heading$1 = require('./heading-b7872a4d.js');
9
- const image$1 = require('./image-75040cd8.js');
10
- const option$1 = require('./option-d7f9785e.js');
11
- const refrain$1 = require('./refrain-dcde813a.js');
12
- const text$1 = require('./text-d86d8916.js');
6
+ const book = require('./book-6d16fad3.js');
7
+ const rubric$1 = require('./rubric-9851b9bb.js');
8
+ const heading$1 = require('./heading-dff0a6f9.js');
9
+ const image$1 = require('./image-527d7134.js');
10
+ const option$1 = require('./option-af060fb4.js');
11
+ const refrain$1 = require('./refrain-f867e88b.js');
12
+ const text$1 = require('./text-9dd495bb.js');
13
13
  const locale = require('./locale-13a47c0e.js');
14
14
 
15
15
  const MENU = [
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-01fdec29.js');
6
- require('./book-82e0876b.js');
6
+ require('./book-6d16fad3.js');
7
7
  const change = require('./change-cdb1e8c0.js');
8
8
  const overlays = require('./overlays-240c867b.js');
9
9
  const locale = require('./locale-13a47c0e.js');
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-01fdec29.js');
6
- const book = require('./book-82e0876b.js');
6
+ const book = require('./book-6d16fad3.js');
7
7
  const change = require('./change-cdb1e8c0.js');
8
8
  const locale = require('./locale-13a47c0e.js');
9
9
 
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-01fdec29.js');
6
- const book = require('./book-82e0876b.js');
6
+ const book = require('./book-6d16fad3.js');
7
7
  const change = require('./change-cdb1e8c0.js');
8
8
  const locale = require('./locale-13a47c0e.js');
9
9
 
@@ -3,8 +3,8 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-01fdec29.js');
6
- const book = require('./book-82e0876b.js');
7
- const option = require('./option-d7f9785e.js');
6
+ const book = require('./book-6d16fad3.js');
7
+ const option = require('./option-af060fb4.js');
8
8
  const locale = require('./locale-13a47c0e.js');
9
9
 
10
10
  /* Converts a list of documents into a single document showing options in parallel */
@@ -3,15 +3,15 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-01fdec29.js');
6
- const book = require('./book-82e0876b.js');
6
+ const book = require('./book-6d16fad3.js');
7
7
  const change = require('./change-cdb1e8c0.js');
8
- const option = require('./option-d7f9785e.js');
9
- const specificClass = require('./specific-class-c2579d35.js');
8
+ const option = require('./option-af060fb4.js');
9
+ const specificClass = require('./specific-class-a4d1cc65.js');
10
10
  const locale = require('./locale-13a47c0e.js');
11
- require('./rubric-cd1436af.js');
12
- require('./heading-b7872a4d.js');
13
- require('./refrain-dcde813a.js');
14
- require('./text-d86d8916.js');
11
+ require('./rubric-9851b9bb.js');
12
+ require('./heading-dff0a6f9.js');
13
+ require('./refrain-f867e88b.js');
14
+ require('./text-9dd495bb.js');
15
15
 
16
16
  const LOCALE_STRINGS = {
17
17
  "allowMultiple": "Allow multiple options",