@venite/components 0.16.48 → 0.16.50

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 (36) hide show
  1. package/dist/cjs/index-01fdec29.js +2 -2
  2. package/dist/cjs/{ion-segment_16.cjs.entry.js → ion-segment_17.cjs.entry.js} +95 -32
  3. package/dist/cjs/ldf-editable-add-block-menu.cjs.entry.js +18 -2
  4. package/dist/cjs/ldf.cjs.js +1 -1
  5. package/dist/cjs/loader.cjs.js +1 -1
  6. package/dist/cjs/{image-527d7134.js → parallel-eb251490.js} +8 -0
  7. package/dist/collection/collection-manifest.json +1 -0
  8. package/dist/collection/components/editable-add-block-menu/dist/menu-options.js +218 -7
  9. package/dist/collection/components/editable-add-block-menu/menu-options.js +17 -1
  10. package/dist/collection/components/editable-metadata-buttons/editable-metadata-buttons.js +2 -2
  11. package/dist/collection/components/liturgical-document/dist/liturgical-document.js +3 -0
  12. package/dist/collection/components/liturgical-document/liturgical-document.js +3 -0
  13. package/dist/collection/components/parallel/dist/option.js +318 -0
  14. package/dist/collection/components/parallel/dist/parallel.js +146 -0
  15. package/dist/collection/components/parallel/parallel.css +8 -0
  16. package/dist/collection/components/parallel/parallel.i18n.en.json +3 -0
  17. package/dist/collection/components/parallel/parallel.js +213 -0
  18. package/dist/collection/i18n/parallel.i18n.en.json +3 -0
  19. package/dist/esm/index-034add74.js +2 -2
  20. package/dist/esm/{ion-segment_16.entry.js → ion-segment_17.entry.js} +92 -30
  21. package/dist/esm/ldf-editable-add-block-menu.entry.js +17 -1
  22. package/dist/esm/ldf.js +1 -1
  23. package/dist/esm/loader.js +1 -1
  24. package/dist/esm/{image-b773ce41.js → parallel-63ee2ef4.js} +8 -1
  25. package/dist/ldf/i18n/parallel.i18n.en.json +3 -0
  26. package/dist/ldf/ldf.esm.js +1 -1
  27. package/dist/ldf/p-2535778d.js +1 -0
  28. package/dist/ldf/p-78d738ad.entry.js +1 -0
  29. package/dist/ldf/p-f7251a11.entry.js +1 -0
  30. package/dist/types/components/editable-metadata-buttons/editable-metadata-buttons.d.ts +1 -1
  31. package/dist/types/components/parallel/parallel.d.ts +41 -0
  32. package/dist/types/components.d.ts +56 -3
  33. package/package.json +1 -1
  34. package/dist/ldf/p-5c897bef.entry.js +0 -1
  35. package/dist/ldf/p-cf9d5530.js +0 -1
  36. package/dist/ldf/p-e8bb8144.entry.js +0 -1
@@ -0,0 +1,213 @@
1
+ import { Component, Prop, Watch, State, Host, Event, Element, h } from '@stencil/core';
2
+ import { Parallel } from '@venite/ldf';
3
+ import { getComponentClosestLanguage } from '../../utils/locale';
4
+ import EN from './parallel.i18n.en.json';
5
+ const LOCALE = {
6
+ 'en': EN
7
+ };
8
+ export class ParallelComponent {
9
+ docChanged(newDoc) {
10
+ try {
11
+ if (typeof newDoc == 'string') {
12
+ this.obj = new Parallel(JSON.parse(newDoc));
13
+ }
14
+ else {
15
+ this.obj = new Parallel(newDoc);
16
+ }
17
+ }
18
+ catch (e) {
19
+ console.warn(e);
20
+ this.obj = new Parallel();
21
+ }
22
+ }
23
+ // Lifecycle events
24
+ componentWillLoad() {
25
+ this.docChanged(this.doc);
26
+ this.loadLocaleStrings();
27
+ this.ldfOptionAskForStoredSelection.emit({ el: this.el });
28
+ }
29
+ /** Asynchronously load localization strings */
30
+ async loadLocaleStrings() {
31
+ try {
32
+ this.localeStrings = LOCALE[getComponentClosestLanguage(this.el)];
33
+ }
34
+ catch (e) {
35
+ console.warn(e);
36
+ }
37
+ }
38
+ // Render
39
+ render() {
40
+ var _a;
41
+ return (h(Host, { lang: this.obj.language },
42
+ h("tr", null, (((_a = this.obj) === null || _a === void 0 ? void 0 : _a.value) || []).map((obj, ii) => h("td", null,
43
+ h("ldf-liturgical-document", { doc: obj, path: `${this.path}/value/${ii}`, base: `${this.path}/value`, index: ii, editable: this.editable, parentType: 'option' }))))));
44
+ }
45
+ static get is() { return "ldf-parallel"; }
46
+ static get encapsulation() { return "scoped"; }
47
+ static get originalStyleUrls() { return {
48
+ "$": ["parallel.scss"]
49
+ }; }
50
+ static get styleUrls() { return {
51
+ "$": ["parallel.css"]
52
+ }; }
53
+ static get properties() { return {
54
+ "doc": {
55
+ "type": "string",
56
+ "mutable": false,
57
+ "complexType": {
58
+ "original": "Parallel | string",
59
+ "resolved": "Parallel | string",
60
+ "references": {
61
+ "Parallel": {
62
+ "location": "import",
63
+ "path": "@venite/ldf"
64
+ }
65
+ }
66
+ },
67
+ "required": false,
68
+ "optional": false,
69
+ "docs": {
70
+ "tags": [],
71
+ "text": "An LDF Option object."
72
+ },
73
+ "attribute": "doc",
74
+ "reflect": false
75
+ },
76
+ "path": {
77
+ "type": "string",
78
+ "mutable": false,
79
+ "complexType": {
80
+ "original": "string",
81
+ "resolved": "string",
82
+ "references": {}
83
+ },
84
+ "required": false,
85
+ "optional": false,
86
+ "docs": {
87
+ "tags": [],
88
+ "text": "A JSON Pointer that points to the Option being edited"
89
+ },
90
+ "attribute": "path",
91
+ "reflect": true
92
+ },
93
+ "editable": {
94
+ "type": "boolean",
95
+ "mutable": false,
96
+ "complexType": {
97
+ "original": "boolean",
98
+ "resolved": "boolean",
99
+ "references": {}
100
+ },
101
+ "required": false,
102
+ "optional": false,
103
+ "docs": {
104
+ "tags": [],
105
+ "text": "Whether the object is editable"
106
+ },
107
+ "attribute": "editable",
108
+ "reflect": false
109
+ },
110
+ "preview": {
111
+ "type": "boolean",
112
+ "mutable": false,
113
+ "complexType": {
114
+ "original": "boolean",
115
+ "resolved": "boolean",
116
+ "references": {}
117
+ },
118
+ "required": false,
119
+ "optional": false,
120
+ "docs": {
121
+ "tags": [],
122
+ "text": "Whether the object is in preview mode"
123
+ },
124
+ "attribute": "preview",
125
+ "reflect": false
126
+ }
127
+ }; }
128
+ static get states() { return {
129
+ "obj": {},
130
+ "localeStrings": {},
131
+ "filteredOptions": {}
132
+ }; }
133
+ static get events() { return [{
134
+ "method": "ldfAddOptionToDoc",
135
+ "name": "ldfAddOptionToDoc",
136
+ "bubbles": true,
137
+ "cancelable": true,
138
+ "composed": true,
139
+ "docs": {
140
+ "tags": [],
141
+ "text": ""
142
+ },
143
+ "complexType": {
144
+ "original": "AddOptionToDoc",
145
+ "resolved": "AddOptionToDoc",
146
+ "references": {
147
+ "AddOptionToDoc": {
148
+ "location": "import",
149
+ "path": "../../interfaces/add-option-to-doc"
150
+ }
151
+ }
152
+ }
153
+ }, {
154
+ "method": "ldfDocShouldChange",
155
+ "name": "ldfDocShouldChange",
156
+ "bubbles": true,
157
+ "cancelable": true,
158
+ "composed": true,
159
+ "docs": {
160
+ "tags": [],
161
+ "text": ""
162
+ },
163
+ "complexType": {
164
+ "original": "Change",
165
+ "resolved": "Change",
166
+ "references": {
167
+ "Change": {
168
+ "location": "import",
169
+ "path": "@venite/ldf"
170
+ }
171
+ }
172
+ }
173
+ }, {
174
+ "method": "ldfOptionAskForStoredSelection",
175
+ "name": "ldfOptionAskForStoredSelection",
176
+ "bubbles": true,
177
+ "cancelable": true,
178
+ "composed": true,
179
+ "docs": {
180
+ "tags": [],
181
+ "text": ""
182
+ },
183
+ "complexType": {
184
+ "original": "{ el: HTMLElement }",
185
+ "resolved": "{ el: HTMLElement; }",
186
+ "references": {
187
+ "HTMLElement": {
188
+ "location": "global"
189
+ }
190
+ }
191
+ }
192
+ }, {
193
+ "method": "ldfOptionMakeSelection",
194
+ "name": "ldfOptionMakeSelection",
195
+ "bubbles": true,
196
+ "cancelable": true,
197
+ "composed": true,
198
+ "docs": {
199
+ "tags": [],
200
+ "text": ""
201
+ },
202
+ "complexType": {
203
+ "original": "{ slug: string; index: number; }",
204
+ "resolved": "{ slug: string; index: number; }",
205
+ "references": {}
206
+ }
207
+ }]; }
208
+ static get elementRef() { return "el"; }
209
+ static get watchers() { return [{
210
+ "propName": "doc",
211
+ "methodName": "docChanged"
212
+ }]; }
213
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "parallel": "Parallel"
3
+ }
@@ -2066,10 +2066,10 @@ const loadModule = (cmpMeta, hostRef, hmrVersionId) => {
2066
2066
  return import(
2067
2067
  /* webpackMode: "lazy" */
2068
2068
  './ldf-editable-string-list.entry.js').then(processMod, consoleError);
2069
- case 'ion-segment_16':
2069
+ case 'ion-segment_17':
2070
2070
  return import(
2071
2071
  /* webpackMode: "lazy" */
2072
- './ion-segment_16.entry.js').then(processMod, consoleError);
2072
+ './ion-segment_17.entry.js').then(processMod, consoleError);
2073
2073
  case 'ldf-editable-boolean_2':
2074
2074
  return import(
2075
2075
  /* webpackMode: "lazy" */
@@ -11,7 +11,7 @@ import { v as versionToString, O as Option } from './option-f5f45da6.js';
11
11
  import { C as Change } from './change-ea574d32.js';
12
12
  import { g as getComponentClosestLanguage } from './locale-de430ca1.js';
13
13
  import { u as useDropcap } from './dropcaps-9409f9e0.js';
14
- import { I as Image } from './image-b773ce41.js';
14
+ import { I as Image, P as Parallel } from './parallel-63ee2ef4.js';
15
15
  import { D as Debounce } from './index-f08f6130.js';
16
16
  import { R as Refrain } from './refrain-03edc2dd.js';
17
17
  import './hardware-back-button-fa04d6e9.js';
@@ -550,7 +550,7 @@ const changeReading$1 = "Change Reading";
550
550
  const newCitation$1 = "Biblical citation.";
551
551
  const cancel$2 = "Cancel";
552
552
  const ok$2 = "OK";
553
- const EN$8 = {
553
+ const EN$9 = {
554
554
  amen: amen$1,
555
555
  book: book$1,
556
556
  chapter: chapter$1,
@@ -609,8 +609,8 @@ async function fetchReading(citation, version = 'NRSV', api = 'https://us-centra
609
609
 
610
610
  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}";
611
611
 
612
- const LOCALE$8 = {
613
- 'en': EN$8,
612
+ const LOCALE$9 = {
613
+ 'en': EN$9,
614
614
  'es': ES$1
615
615
  };
616
616
  const BibleReadingComponent = class {
@@ -658,7 +658,7 @@ const BibleReadingComponent = class {
658
658
  // Private methods
659
659
  async loadLocaleStrings() {
660
660
  try {
661
- this.localeStrings = LOCALE$8[getComponentClosestLanguage(this.element)];
661
+ this.localeStrings = LOCALE$9[getComponentClosestLanguage(this.element)];
662
662
  }
663
663
  catch (e) {
664
664
  console.warn(e);
@@ -799,7 +799,7 @@ BibleReadingComponent.style = bibleReadingCss;
799
799
  const add = "Add";
800
800
  const label$3 = "Label";
801
801
  const citation$3 = "Citation";
802
- const EN$7 = {
802
+ const EN$8 = {
803
803
  add: add,
804
804
  label: label$3,
805
805
  citation: citation$3
@@ -807,8 +807,8 @@ const EN$7 = {
807
807
 
808
808
  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}";
809
809
 
810
- const LOCALE$7 = {
811
- 'en': EN$7
810
+ const LOCALE$8 = {
811
+ 'en': EN$8
812
812
  };
813
813
  const EditableAddBlockComponent = class {
814
814
  constructor(hostRef) {
@@ -823,7 +823,7 @@ const EditableAddBlockComponent = class {
823
823
  // Methods
824
824
  async loadLocaleStrings() {
825
825
  try {
826
- this.localeStrings = LOCALE$7[getComponentClosestLanguage(this.element)];
826
+ this.localeStrings = LOCALE$8[getComponentClosestLanguage(this.element)];
827
827
  }
828
828
  catch (e) {
829
829
  console.warn(e);
@@ -869,7 +869,7 @@ const responsiveSmallOnly = "Only on small screens";
869
869
  const responsiveSmallHidden = "Not on small screens";
870
870
  const unison = "Unison";
871
871
  const wholeverse = "By Whole Verse";
872
- const EN$6 = {
872
+ const EN$7 = {
873
873
  abbreviated: abbreviated,
874
874
  addOption: addOption,
875
875
  cancel: cancel,
@@ -903,8 +903,8 @@ const EN$6 = {
903
903
 
904
904
  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}}";
905
905
 
906
- const LOCALE$6 = {
907
- 'en': EN$6
906
+ const LOCALE$7 = {
907
+ 'en': EN$7
908
908
  };
909
909
  const EditableMetadataButtonsComponent = class {
910
910
  constructor(hostRef) {
@@ -928,7 +928,7 @@ const EditableMetadataButtonsComponent = class {
928
928
  // Private methods
929
929
  async loadLocaleStrings() {
930
930
  try {
931
- this.localeStrings = LOCALE$6[getComponentClosestLanguage(this.element)];
931
+ this.localeStrings = LOCALE$7[getComponentClosestLanguage(this.element)];
932
932
  }
933
933
  catch (e) {
934
934
  console.warn(e);
@@ -1144,7 +1144,7 @@ EditableSelectComponent.style = editableSelectCss;
1144
1144
 
1145
1145
  const close = "Return to Bulletin";
1146
1146
  const url = "URL";
1147
- const EN$5 = {
1147
+ const EN$6 = {
1148
1148
  close: close,
1149
1149
  url: url
1150
1150
  };
@@ -1161,8 +1161,8 @@ var __decorate = (undefined && undefined.__decorate) || function (decorators, ta
1161
1161
  r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1162
1162
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1163
1163
  };
1164
- const LOCALE$5 = {
1165
- 'en': EN$5
1164
+ const LOCALE$6 = {
1165
+ 'en': EN$6
1166
1166
  };
1167
1167
  const ImageComponent = class {
1168
1168
  constructor(hostRef) {
@@ -1196,7 +1196,7 @@ const ImageComponent = class {
1196
1196
  }
1197
1197
  async loadLocaleStrings() {
1198
1198
  try {
1199
- this.localeStrings = LOCALE$5[getComponentClosestLanguage(this.element)];
1199
+ this.localeStrings = LOCALE$6[getComponentClosestLanguage(this.element)];
1200
1200
  }
1201
1201
  catch (e) {
1202
1202
  console.warn(e);
@@ -1351,7 +1351,7 @@ const gt = " > ";
1351
1351
  const gte = " ≥ ";
1352
1352
  const smallOnly = "Only appears on small screens";
1353
1353
  const smallHidden = "Doesn't appear on small screens";
1354
- const EN$4 = {
1354
+ const EN$5 = {
1355
1355
  bible_version: bible_version,
1356
1356
  "canticle-1": "The first canticle ",
1357
1357
  "canticle-2": "The second canticle ",
@@ -1565,8 +1565,8 @@ const LookupNode = ({ doc, localeStrings }) => {
1565
1565
 
1566
1566
  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}}";
1567
1567
 
1568
- const LOCALE$4 = {
1569
- 'en': EN$4
1568
+ const LOCALE$5 = {
1569
+ 'en': EN$5
1570
1570
  };
1571
1571
  const LiturgicalDocumentComponent = class {
1572
1572
  constructor(hostRef) {
@@ -1653,7 +1653,7 @@ const LiturgicalDocumentComponent = class {
1653
1653
  }
1654
1654
  async loadLocaleStrings() {
1655
1655
  try {
1656
- this.localeStrings = LOCALE$4[getComponentClosestLanguage(this.element)];
1656
+ this.localeStrings = LOCALE$5[getComponentClosestLanguage(this.element)];
1657
1657
  }
1658
1658
  catch (e) {
1659
1659
  console.warn(e);
@@ -1723,6 +1723,9 @@ const LiturgicalDocumentComponent = class {
1723
1723
  case 'option':
1724
1724
  node = h("ldf-option", { path: this.path, editable: editable, preview: this.preview, doc: doc });
1725
1725
  break;
1726
+ case 'parallel':
1727
+ node = h("ldf-parallel", { path: this.path, editable: editable, preview: this.preview, doc: doc });
1728
+ break;
1726
1729
  case 'refrain':
1727
1730
  node = h("ldf-refrain", { path: this.path, editable: editable, doc: doc });
1728
1731
  break;
@@ -1822,7 +1825,7 @@ const resume = "Resume";
1822
1825
  const meditate = "Meditate for";
1823
1826
  const minutes = "minutes.";
1824
1827
  const seconds = " seconds. ";
1825
- const EN$3 = {
1828
+ const EN$4 = {
1826
1829
  start: start,
1827
1830
  pause: pause,
1828
1831
  resume: resume,
@@ -1833,8 +1836,8 @@ const EN$3 = {
1833
1836
 
1834
1837
  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}";
1835
1838
 
1836
- const LOCALE$3 = {
1837
- 'en': EN$3
1839
+ const LOCALE$4 = {
1840
+ 'en': EN$4
1838
1841
  };
1839
1842
  const MeditationComponent = class {
1840
1843
  constructor(hostRef) {
@@ -1918,7 +1921,7 @@ const MeditationComponent = class {
1918
1921
  // Private methods
1919
1922
  async loadLocaleStrings() {
1920
1923
  try {
1921
- this.localeStrings = LOCALE$3[getComponentClosestLanguage(this.element)];
1924
+ this.localeStrings = LOCALE$4[getComponentClosestLanguage(this.element)];
1922
1925
  }
1923
1926
  catch (e) {
1924
1927
  console.warn(e);
@@ -1991,14 +1994,14 @@ const MeditationComponent = class {
1991
1994
  MeditationComponent.style = meditationCss;
1992
1995
 
1993
1996
  const option = "Option";
1994
- const EN$2 = {
1997
+ const EN$3 = {
1995
1998
  option: option
1996
1999
  };
1997
2000
 
1998
2001
  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}";
1999
2002
 
2000
- const LOCALE$2 = {
2001
- 'en': EN$2
2003
+ const LOCALE$3 = {
2004
+ 'en': EN$3
2002
2005
  };
2003
2006
  const OptionComponent = class {
2004
2007
  constructor(hostRef) {
@@ -2040,7 +2043,7 @@ const OptionComponent = class {
2040
2043
  /** Asynchronously load localization strings */
2041
2044
  async loadLocaleStrings() {
2042
2045
  try {
2043
- this.localeStrings = LOCALE$2[getComponentClosestLanguage(this.el)];
2046
+ this.localeStrings = LOCALE$3[getComponentClosestLanguage(this.el)];
2044
2047
  }
2045
2048
  catch (e) {
2046
2049
  console.warn(e);
@@ -2183,6 +2186,65 @@ const OptionComponent = class {
2183
2186
  };
2184
2187
  OptionComponent.style = optionCss;
2185
2188
 
2189
+ const parallel = "Parallel";
2190
+ const EN$2 = {
2191
+ parallel: parallel
2192
+ };
2193
+
2194
+ 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}";
2195
+
2196
+ const LOCALE$2 = {
2197
+ 'en': EN$2
2198
+ };
2199
+ const ParallelComponent = class {
2200
+ constructor(hostRef) {
2201
+ registerInstance(this, hostRef);
2202
+ this.ldfAddOptionToDoc = createEvent(this, "ldfAddOptionToDoc", 7);
2203
+ this.ldfDocShouldChange = createEvent(this, "ldfDocShouldChange", 7);
2204
+ this.ldfOptionAskForStoredSelection = createEvent(this, "ldfOptionAskForStoredSelection", 7);
2205
+ this.ldfOptionMakeSelection = createEvent(this, "ldfOptionMakeSelection", 7);
2206
+ }
2207
+ docChanged(newDoc) {
2208
+ try {
2209
+ if (typeof newDoc == 'string') {
2210
+ this.obj = new Parallel(JSON.parse(newDoc));
2211
+ }
2212
+ else {
2213
+ this.obj = new Parallel(newDoc);
2214
+ }
2215
+ }
2216
+ catch (e) {
2217
+ console.warn(e);
2218
+ this.obj = new Parallel();
2219
+ }
2220
+ }
2221
+ // Lifecycle events
2222
+ componentWillLoad() {
2223
+ this.docChanged(this.doc);
2224
+ this.loadLocaleStrings();
2225
+ this.ldfOptionAskForStoredSelection.emit({ el: this.el });
2226
+ }
2227
+ /** Asynchronously load localization strings */
2228
+ async loadLocaleStrings() {
2229
+ try {
2230
+ this.localeStrings = LOCALE$2[getComponentClosestLanguage(this.el)];
2231
+ }
2232
+ catch (e) {
2233
+ console.warn(e);
2234
+ }
2235
+ }
2236
+ // Render
2237
+ render() {
2238
+ var _a;
2239
+ return (h(Host, { lang: this.obj.language }, h("tr", null, (((_a = this.obj) === null || _a === void 0 ? void 0 : _a.value) || []).map((obj, ii) => h("td", null, h("ldf-liturgical-document", { doc: obj, path: `${this.path}/value/${ii}`, base: `${this.path}/value`, index: ii, editable: this.editable, parentType: 'option' }))))));
2240
+ }
2241
+ get el() { return getElement(this); }
2242
+ static get watchers() { return {
2243
+ "doc": ["docChanged"]
2244
+ }; }
2245
+ };
2246
+ ParallelComponent.style = parallelCss;
2247
+
2186
2248
  const changeCanticle$1 = "Change Canticle";
2187
2249
  const citation$2 = "(Biblical) Citation";
2188
2250
  const label$2 = "Label";
@@ -2654,4 +2716,4 @@ const RubricComponent = class {
2654
2716
  };
2655
2717
  RubricComponent.style = rubricCss;
2656
2718
 
2657
- export { Segment as ion_segment, SegmentButton as ion_segment_button, SkeletonText as ion_skeleton_text, BibleReadingComponent as ldf_bible_reading, EditableAddBlockComponent as ldf_editable_add_block, EditableMetadataButtonsComponent as ldf_editable_metadata_buttons, EditableSelectComponent as ldf_editable_select, ImageComponent as ldf_image, LiturgicalDocumentComponent as ldf_liturgical_document, LiturgyComponent as ldf_liturgy, MeditationComponent as ldf_meditation, OptionComponent as ldf_option, PsalmComponent as ldf_psalm, RefrainComponent as ldf_refrain, ResponsivePrayerComponent as ldf_responsive_prayer, RubricComponent as ldf_rubric };
2719
+ export { Segment as ion_segment, SegmentButton as ion_segment_button, SkeletonText as ion_skeleton_text, BibleReadingComponent as ldf_bible_reading, EditableAddBlockComponent as ldf_editable_add_block, EditableMetadataButtonsComponent as ldf_editable_metadata_buttons, EditableSelectComponent as ldf_editable_select, ImageComponent as ldf_image, LiturgicalDocumentComponent as ldf_liturgical_document, LiturgyComponent as ldf_liturgy, MeditationComponent as ldf_meditation, OptionComponent as ldf_option, ParallelComponent as ldf_parallel, PsalmComponent as ldf_psalm, RefrainComponent as ldf_refrain, ResponsivePrayerComponent as ldf_responsive_prayer, RubricComponent as ldf_rubric };
@@ -2,7 +2,7 @@ import { h, r as registerInstance, c as createEvent, H as Host, d as getElement
2
2
  import { L as LiturgicalDocument } from './book-ffb2b7c9.js';
3
3
  import { B as BibleReading, P as Psalm, L as Liturgy$1, M as Meditation, R as ResponsivePrayer, a as Rubric } from './rubric-5e76db3e.js';
4
4
  import { H as Heading } from './heading-32b75b51.js';
5
- import { I as Image } from './image-b773ce41.js';
5
+ import { I as Image, P as Parallel } from './parallel-63ee2ef4.js';
6
6
  import { O as Option } from './option-f5f45da6.js';
7
7
  import { R as Refrain } from './refrain-03edc2dd.js';
8
8
  import { T as Text } from './text-035232e4.js';
@@ -316,6 +316,22 @@ const MENU = [
316
316
  template: [new BibleReading({ type: 'bible-reading', style: 'short', lookup: { type: 'category', rotate: true }, category: ['Closing Sentence'] })],
317
317
  needsMoreInfo: 'category'
318
318
  },
319
+ {
320
+ label: 'parallels',
321
+ section: ['Liturgy'],
322
+ /* SVG is Font Awesome 'fa-music' */
323
+ icon: () => (h("svg", { "aria-hidden": "true", focusable: "false", "data-prefix": "fas", "data-icon": "music", class: "svg-inline--fa fa-music fa-w-16", role: "img", xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 512 512" },
324
+ h("path", { fill: "currentColor", d: "M470.38 1.51L150.41 96A32 32 0 0 0 128 126.51v261.41A139 139 0 0 0 96 384c-53 0-96 28.66-96 64s43 64 96 64 96-28.66 96-64V214.32l256-75v184.61a138.4 138.4 0 0 0-32-3.93c-53 0-96 28.66-96 64s43 64 96 64 96-28.65 96-64V32a32 32 0 0 0-41.62-30.49z" }))),
325
+ template: [
326
+ new Parallel({
327
+ "type": "parallel",
328
+ "value": [
329
+ new Text({ type: 'text', style: 'text', value: [''] }),
330
+ new Text({ type: 'text', style: 'text', value: [''] })
331
+ ]
332
+ })
333
+ ]
334
+ },
319
335
  {
320
336
  label: 'prayers-of-the-people',
321
337
  section: ['Prayer', 'Eucharist'],