@venite/components 0.16.5 → 0.16.9

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 (105) hide show
  1. package/dist/cjs/{index-5e2cc9e9.js → book-1a92678a.js} +1 -92
  2. package/dist/cjs/{heading-d3809e59.js → heading-5afc2b24.js} +2 -2
  3. package/dist/cjs/{image-f0ace076.js → image-3bee3e73.js} +2 -2
  4. package/dist/cjs/ion-button_13.cjs.entry.js +1 -2
  5. package/dist/cjs/ion-card-content_6.cjs.entry.js +2 -3
  6. package/dist/cjs/ion-checkbox_3.cjs.entry.js +1 -2
  7. package/dist/cjs/ion-input_2.cjs.entry.js +1 -1
  8. package/dist/cjs/ion-segment_16.cjs.entry.js +25 -23
  9. package/dist/cjs/ldf-day-name_5.cjs.entry.js +73 -71
  10. package/dist/cjs/ldf-editable-add-block-menu.cjs.entry.js +9 -10
  11. package/dist/cjs/ldf-editable-condition-piece.cjs.entry.js +5 -6
  12. package/dist/cjs/ldf-editable-condition.cjs.entry.js +3 -4
  13. package/dist/cjs/ldf-editable-filter-documents.cjs.entry.js +10 -11
  14. package/dist/cjs/ldf-editable-lookup_2.cjs.entry.js +8 -9
  15. package/dist/cjs/ldf-editable-metadata.cjs.entry.js +9 -10
  16. package/dist/cjs/ldf-editable-preference-option.cjs.entry.js +1 -2
  17. package/dist/cjs/ldf-editable-preference.cjs.entry.js +1 -2
  18. package/dist/cjs/ldf-editable-preferences.cjs.entry.js +1 -2
  19. package/dist/cjs/ldf-editable-string-list.cjs.entry.js +1 -2
  20. package/dist/cjs/ldf-editor.cjs.entry.js +12 -12
  21. package/dist/cjs/{option-961df0f2.js → option-e2221398.js} +3 -3
  22. package/dist/cjs/{refrain-a605892e.js → refrain-91fb446b.js} +2 -2
  23. package/dist/cjs/{rubric-662d8baa.js → rubric-5b467a6a.js} +8 -8
  24. package/dist/cjs/{specific-class-94e41d45.js → specific-class-c586a541.js} +5 -5
  25. package/dist/cjs/{text-c5e8ca0a.js → text-5edb80f3.js} +2 -2
  26. package/dist/collection/components/bible-reading/bible-reading.js +6 -3
  27. package/dist/collection/components/bible-reading/dist/bible-reading.js +354 -0
  28. package/dist/collection/components/option/dist/option.js +318 -0
  29. package/dist/collection/components/psalm/dist/psalm.js +0 -1
  30. package/dist/collection/components/psalm/psalm.js +0 -1
  31. package/dist/collection/components/string/dist/string.js +2 -3
  32. package/dist/collection/components/string/string.js +3 -4
  33. package/dist/collection/components/text/dist/text.js +3 -2
  34. package/dist/collection/components/text/text.js +6 -3
  35. package/dist/esm/{index-f5b9b789.js → book-31b8cdde.js} +1 -92
  36. package/dist/esm/{heading-c9eb7d89.js → heading-cc5ffa8a.js} +1 -1
  37. package/dist/esm/{image-f0e35b01.js → image-c6a3f0c5.js} +1 -1
  38. package/dist/esm/ion-button_13.entry.js +1 -2
  39. package/dist/esm/ion-card-content_6.entry.js +2 -3
  40. package/dist/esm/ion-checkbox_3.entry.js +1 -2
  41. package/dist/esm/ion-input_2.entry.js +1 -1
  42. package/dist/esm/ion-segment_16.entry.js +12 -10
  43. package/dist/esm/ldf-day-name_5.entry.js +12 -10
  44. package/dist/esm/ldf-editable-add-block-menu.entry.js +7 -8
  45. package/dist/esm/ldf-editable-condition-piece.entry.js +1 -2
  46. package/dist/esm/ldf-editable-condition.entry.js +1 -2
  47. package/dist/esm/ldf-editable-filter-documents.entry.js +2 -3
  48. package/dist/esm/ldf-editable-lookup_2.entry.js +7 -8
  49. package/dist/esm/ldf-editable-metadata.entry.js +7 -8
  50. package/dist/esm/ldf-editable-preference-option.entry.js +1 -2
  51. package/dist/esm/ldf-editable-preference.entry.js +1 -2
  52. package/dist/esm/ldf-editable-preferences.entry.js +1 -2
  53. package/dist/esm/ldf-editable-string-list.entry.js +1 -2
  54. package/dist/esm/ldf-editor.entry.js +1 -1
  55. package/dist/esm/{option-b80b12c6.js → option-d0361d23.js} +2 -2
  56. package/dist/esm/{refrain-810c4de5.js → refrain-75a412cb.js} +1 -1
  57. package/dist/esm/{rubric-2330a030.js → rubric-91bf7fed.js} +1 -1
  58. package/dist/esm/{specific-class-c2f505d5.js → specific-class-943fc789.js} +5 -5
  59. package/dist/esm/{text-ce1ed17d.js → text-ed75fbd4.js} +1 -1
  60. package/dist/ldf/ldf.esm.js +1 -1
  61. package/dist/ldf/p-03afc8cb.entry.js +1 -0
  62. package/dist/ldf/{p-c77ce7bf.js → p-161be025.js} +1 -1
  63. package/dist/ldf/{p-db435131.entry.js → p-23af1bc3.entry.js} +1 -1
  64. package/dist/ldf/p-2ae548b3.entry.js +1 -0
  65. package/dist/ldf/p-3b31b6af.entry.js +1 -0
  66. package/dist/ldf/p-3f8ef67b.entry.js +1 -0
  67. package/dist/ldf/p-476327d6.js +1 -0
  68. package/dist/ldf/p-48aafa34.entry.js +1 -0
  69. package/dist/ldf/p-4aa9a6f2.js +1 -0
  70. package/dist/ldf/p-594fa9d4.entry.js +1 -0
  71. package/dist/ldf/{p-937ffc85.js → p-5b43e6be.js} +1 -1
  72. package/dist/ldf/p-65563763.entry.js +1 -0
  73. package/dist/ldf/p-65d26c45.js +1 -0
  74. package/dist/ldf/p-65ea7ab3.entry.js +1 -0
  75. package/dist/ldf/p-800a115c.entry.js +1 -0
  76. package/dist/ldf/{p-9e82b403.js → p-8f67abb8.js} +1 -1
  77. package/dist/ldf/p-932f9f17.entry.js +1 -0
  78. package/dist/ldf/p-9c1973a6.entry.js +1 -0
  79. package/dist/ldf/p-a1729dbd.js +1 -0
  80. package/dist/ldf/p-b4bbe638.js +1 -0
  81. package/dist/ldf/{p-4a60affd.entry.js → p-d41efada.entry.js} +1 -1
  82. package/dist/ldf/p-e4f0cd91.entry.js +1 -0
  83. package/dist/ldf/p-f0de7628.entry.js +1 -0
  84. package/dist/ldf/{p-c1bcd0a9.entry.js → p-fa191f47.entry.js} +1 -1
  85. package/dist/ldf/p-fb2e5aa0.entry.js +1 -0
  86. package/package.json +2 -2
  87. package/dist/ldf/p-0d44076e.entry.js +0 -1
  88. package/dist/ldf/p-1504379f.entry.js +0 -1
  89. package/dist/ldf/p-2fa1c501.entry.js +0 -1
  90. package/dist/ldf/p-3174f69c.entry.js +0 -1
  91. package/dist/ldf/p-31d27100.js +0 -1
  92. package/dist/ldf/p-37f356a4.entry.js +0 -1
  93. package/dist/ldf/p-4d392128.entry.js +0 -1
  94. package/dist/ldf/p-626a614d.entry.js +0 -1
  95. package/dist/ldf/p-673e7c2c.entry.js +0 -1
  96. package/dist/ldf/p-698a3399.entry.js +0 -1
  97. package/dist/ldf/p-73a16936.entry.js +0 -1
  98. package/dist/ldf/p-8ee9ccd3.js +0 -1
  99. package/dist/ldf/p-972e4f2a.entry.js +0 -1
  100. package/dist/ldf/p-9cf557f9.js +0 -1
  101. package/dist/ldf/p-b355bfa2.js +0 -1
  102. package/dist/ldf/p-b667a7c2.entry.js +0 -1
  103. package/dist/ldf/p-d49a739d.js +0 -1
  104. package/dist/ldf/p-d7fa99cc.entry.js +0 -1
  105. package/dist/ldf/p-ff51dbd0.entry.js +0 -1
@@ -0,0 +1,318 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
14
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
15
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
16
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
17
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
18
+ };
19
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
20
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
21
+ return new (P || (P = Promise))(function (resolve, reject) {
22
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
23
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
24
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
25
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
26
+ });
27
+ };
28
+ var __generator = (this && this.__generator) || function (thisArg, body) {
29
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
30
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
31
+ function verb(n) { return function (v) { return step([n, v]); }; }
32
+ function step(op) {
33
+ if (f) throw new TypeError("Generator is already executing.");
34
+ while (_) try {
35
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
36
+ if (y = 0, t) op = [op[0] & 2, t.value];
37
+ switch (op[0]) {
38
+ case 0: case 1: t = op; break;
39
+ case 4: _.label++; return { value: op[1], done: false };
40
+ case 5: _.label++; y = op[1]; op = [0]; continue;
41
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
42
+ default:
43
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
44
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
45
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
46
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
47
+ if (t[2]) _.ops.pop();
48
+ _.trys.pop(); continue;
49
+ }
50
+ op = body.call(thisArg, _);
51
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
52
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
53
+ }
54
+ };
55
+ exports.__esModule = true;
56
+ exports.OptionComponent = void 0;
57
+ var core_1 = require("@stencil/core");
58
+ var ldf_1 = require("@venite/ldf");
59
+ var locale_1 = require("../../utils/locale");
60
+ var option_i18n_en_json_1 = require("./option.i18n.en.json");
61
+ var LOCALE = {
62
+ 'en': option_i18n_en_json_1["default"]
63
+ };
64
+ var OptionComponent = /** @class */ (function () {
65
+ function OptionComponent() {
66
+ }
67
+ OptionComponent.prototype.docChanged = function (newDoc) {
68
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
69
+ try {
70
+ if (typeof newDoc == 'string') {
71
+ this.obj = new ldf_1.Option(JSON.parse(newDoc));
72
+ }
73
+ else {
74
+ this.obj = new ldf_1.Option(newDoc);
75
+ }
76
+ }
77
+ catch (e) {
78
+ console.warn(e);
79
+ this.obj = new ldf_1.Option();
80
+ }
81
+ var selected = this.editable
82
+ ? (_f = (_c = (_b = (_a = this.obj) === null || _a === void 0 ? void 0 : _a.metadata) === null || _b === void 0 ? void 0 : _b.editor_selected) !== null && _c !== void 0 ? _c : (_e = (_d = this.obj) === null || _d === void 0 ? void 0 : _d.metadata) === null || _e === void 0 ? void 0 : _e.selected) !== null && _f !== void 0 ? _f : 0 : (_j = (_h = (_g = this.obj) === null || _g === void 0 ? void 0 : _g.metadata) === null || _h === void 0 ? void 0 : _h.selected) !== null && _j !== void 0 ? _j : 0;
83
+ this.select(selected);
84
+ if (!((_k = this.obj) === null || _k === void 0 ? void 0 : _k.value) || !this.obj.value[selected] || !this.obj.value[selected].value) {
85
+ this.selectFirstDefined();
86
+ }
87
+ this.filterOptions();
88
+ };
89
+ // Lifecycle events
90
+ OptionComponent.prototype.componentWillLoad = function () {
91
+ this.docChanged(this.doc);
92
+ this.loadLocaleStrings();
93
+ this.ldfOptionAskForStoredSelection.emit({ el: this.el });
94
+ };
95
+ /** Asynchronously load localization strings */
96
+ OptionComponent.prototype.loadLocaleStrings = function () {
97
+ return __awaiter(this, void 0, Promise, function () {
98
+ return __generator(this, function (_a) {
99
+ try {
100
+ this.localeStrings = LOCALE[locale_1.getComponentClosestLanguage(this.el)];
101
+ }
102
+ catch (e) {
103
+ console.warn(e);
104
+ }
105
+ return [2 /*return*/];
106
+ });
107
+ });
108
+ };
109
+ /** Display the nth option */
110
+ OptionComponent.prototype.select = function (index, resultedFromUserAction) {
111
+ var _a, _b, _c, _d, _e, _f, _g, _h;
112
+ if (resultedFromUserAction === void 0) { resultedFromUserAction = false; }
113
+ return __awaiter(this, void 0, void 0, function () {
114
+ var hadMetadata, oldValue;
115
+ return __generator(this, function (_j) {
116
+ if (((_a = this.obj) === null || _a === void 0 ? void 0 : _a.slug) && typeof index === 'number' && resultedFromUserAction) {
117
+ this.ldfOptionMakeSelection.emit({ slug: (_b = this.obj) === null || _b === void 0 ? void 0 : _b.slug, index: index });
118
+ }
119
+ hadMetadata = Boolean((_c = this.obj) === null || _c === void 0 ? void 0 : _c.metadata), oldValue = (_e = (_d = this.obj) === null || _d === void 0 ? void 0 : _d.metadata) === null || _e === void 0 ? void 0 : _e.editor_selected;
120
+ if (Number(index) >= 0) {
121
+ //this.selectedDoc = this.obj.value.filter(child => Boolean(child))[index];
122
+ if ((_f = this.obj) === null || _f === void 0 ? void 0 : _f.metadata) {
123
+ this.obj.metadata.selected = Number(index);
124
+ this.obj.metadata.editor_selected = Number(index);
125
+ }
126
+ else {
127
+ this.obj.metadata = { selected: Number(index), editor_selected: Number(index) };
128
+ }
129
+ this.obj = new ldf_1.Option(__assign({}, this.obj));
130
+ // only change the selection at this point if it's not editable
131
+ // if it's editable, the editor will control when it changes
132
+ if (resultedFromUserAction && !this.editable) {
133
+ this.ldfDocShouldChange.emit(new ldf_1.Change({
134
+ path: this.path + "/metadata",
135
+ op: [{
136
+ type: 'set',
137
+ index: 'selected',
138
+ oldValue: oldValue,
139
+ value: Number(index)
140
+ }]
141
+ }));
142
+ }
143
+ if (this.editable) {
144
+ if (hadMetadata && index !== oldValue) {
145
+ this.ldfDocShouldChange.emit(new ldf_1.Change({
146
+ path: this.path + "/metadata",
147
+ op: [{
148
+ type: 'set',
149
+ index: 'editor_selected',
150
+ oldValue: oldValue,
151
+ value: Number(index)
152
+ }]
153
+ }));
154
+ }
155
+ else if (!hadMetadata && index !== oldValue) {
156
+ this.ldfDocShouldChange.emit(new ldf_1.Change({
157
+ path: "" + this.path,
158
+ op: [{
159
+ type: 'set',
160
+ index: 'metadata',
161
+ value: { editor_selected: Number(index) }
162
+ }]
163
+ }));
164
+ }
165
+ }
166
+ // sets metadata.selected to new index, and creates objects along the way if undefined
167
+ // without overriding any other metadata fields
168
+ Object.assign(this.obj, { metadata: __assign(__assign({}, this.obj.metadata), { selected: index }) });
169
+ Object.assign(this.obj, { metadata: __assign(__assign({}, this.obj.metadata), { editor_selected: index }) });
170
+ }
171
+ else if (index === 'add') {
172
+ this.ldfAddOptionToDoc.emit({
173
+ base: this.path,
174
+ index: (_h = (_g = this.obj) === null || _g === void 0 ? void 0 : _g.value) === null || _h === void 0 ? void 0 : _h.length,
175
+ obj: this.obj
176
+ });
177
+ }
178
+ return [2 /*return*/];
179
+ });
180
+ });
181
+ };
182
+ // Private methods
183
+ OptionComponent.prototype.onSelectChange = function (ev) {
184
+ var target = ev.target, value = parseInt(target.value);
185
+ this.select(value, true);
186
+ };
187
+ OptionComponent.prototype.selectFirstDefined = function () {
188
+ var first = this.obj.value.find(function (opt) { return (opt === null || opt === void 0 ? void 0 : opt.value) !== undefined; }), index = this.obj.value.filter(function (child) { return Boolean(child); }).indexOf(first);
189
+ this.select(index);
190
+ };
191
+ OptionComponent.prototype.filterOptions = function () {
192
+ var _this = this;
193
+ var _a;
194
+ if (this.obj) {
195
+ this.obj = new ldf_1.Option(__assign(__assign({}, this.obj), { value: (((_a = this.obj) === null || _a === void 0 ? void 0 : _a.value) || []).filter(function (entry) {
196
+ return _this.editable || (Boolean(entry) && (Boolean(entry.value) || Boolean((entry === null || entry === void 0 ? void 0 : entry.type) === "bible-reading" && entry.citation)));
197
+ }) }));
198
+ }
199
+ };
200
+ // Render helpers
201
+ /** Return an Ionic Select or Segment element if available, otherwise a vanilla HTML Select Element */
202
+ OptionComponent.prototype.selectNode = function () {
203
+ var _this = this;
204
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
205
+ var currentlySelected = this.editable ? (_f = (_c = (_b = (_a = this.obj) === null || _a === void 0 ? void 0 : _a.metadata) === null || _b === void 0 ? void 0 : _b.editor_selected) !== null && _c !== void 0 ? _c : (_e = (_d = this.obj) === null || _d === void 0 ? void 0 : _d.metadata) === null || _e === void 0 ? void 0 : _e.selected) !== null && _f !== void 0 ? _f : 0 : (_j = (_h = (_g = this.obj) === null || _g === void 0 ? void 0 : _g.metadata) === null || _h === void 0 ? void 0 : _h.selected) !== null && _j !== void 0 ? _j : 0;
206
+ if (((_l = (_k = this.obj) === null || _k === void 0 ? void 0 : _k.value) === null || _l === void 0 ? void 0 : _l.length) > 1 || this.editable) {
207
+ // Ionic available and
208
+ if (customElements && !!customElements.get('ion-select')) {
209
+ var optionsAreLong = (((_m = this.obj) === null || _m === void 0 ? void 0 : _m.value) || [])
210
+ .map(function (option, optionIndex) { var _a; return ((_a = _this.versionLabel(option, optionIndex)) === null || _a === void 0 ? void 0 : _a.length) > 20; })
211
+ .reduce(function (a, b) { return a || b; }, false);
212
+ // <= 3, short options
213
+ if (!optionsAreLong && ((_o = this.obj) === null || _o === void 0 ? void 0 : _o.value.length) <= 3) {
214
+ return (React.createElement("ion-segment", { color: "primary", value: currentlySelected.toString() }, (_p = this.obj) === null || _p === void 0 ? void 0 :
215
+ _p.value.map(function (option, optionIndex) {
216
+ return React.createElement("ion-segment-button", { value: optionIndex.toString(), onClick: function () { return _this.select(optionIndex, true); } },
217
+ React.createElement("ion-label", null, _this.versionLabel(option, optionIndex)));
218
+ }),
219
+ this.editable && React.createElement("ion-segment-button", { value: 'add', "class": 'add', onClick: function () { return _this.select('add', true); } },
220
+ React.createElement("ion-label", null, "+"))));
221
+ }
222
+ // >2 options, or options are longish
223
+ else {
224
+ console.log('>2 or longish');
225
+ return (React.createElement("ion-toolbar", null,
226
+ React.createElement("ion-select", { value: currentlySelected, slot: this.editable ? 'start' : 'end', onIonChange: function (e) { return _this.select(Number(e.detail.value), true); } }, (_q = this.obj) === null || _q === void 0 ? void 0 : _q.value.map(function (option, optionIndex) {
227
+ return React.createElement("ion-select-option", { value: optionIndex },
228
+ React.createElement("ion-label", null, _this.versionLabel(option, optionIndex)));
229
+ })),
230
+ this.editable && React.createElement("ion-buttons", { slot: 'end' },
231
+ React.createElement("ion-button", { onClick: function () { return _this.select('add', true); } },
232
+ React.createElement("ion-icon", { slot: 'icon-only', name: 'add' })))));
233
+ }
234
+ }
235
+ // Ionic not availabe
236
+ else {
237
+ return (React.createElement("ldf-label-bar", null,
238
+ React.createElement("select", { onInput: function (ev) { return _this.onSelectChange(ev); }, slot: this.editable ? 'start' : 'end' }, (_r = this.obj) === null || _r === void 0 ? void 0 : _r.value.map(function (option, optionIndex) {
239
+ return React.createElement("option", { value: optionIndex, selected: optionIndex == currentlySelected }, _this.versionLabel(option, optionIndex));
240
+ })),
241
+ this.editable && React.createElement("button", { slot: 'end', onClick: function () { return _this.select('add', true); } }, "+")));
242
+ }
243
+ }
244
+ else {
245
+ return [];
246
+ }
247
+ };
248
+ OptionComponent.prototype.versionLabel = function (option, index) {
249
+ try {
250
+ return this.obj.getVersionLabel(option);
251
+ }
252
+ catch (e) {
253
+ console.warn(e);
254
+ return (this.localeStrings || {}).option + " " + (index + 1);
255
+ }
256
+ };
257
+ // Render
258
+ OptionComponent.prototype.render = function () {
259
+ var _a;
260
+ //console.log('ldf-option (render) ', this.obj?.metadata.selected, this.obj.value, this.selectedDoc)
261
+ var selectedIndex = this.editable ? (_a = this.obj.metadata.editor_selected) !== null && _a !== void 0 ? _a : this.obj.metadata.selected : this.obj.metadata.selected;
262
+ return (React.createElement(core_1.Host, { lang: this.obj.language },
263
+ React.createElement("div", { "class": 'select-control' },
264
+ React.createElement("ldf-label-bar", null, this.selectNode())),
265
+ (this.obj.value || this.editable) && React.createElement("ldf-liturgical-document", { doc: this.obj.value[selectedIndex], path: this.path + "/value/" + this.obj.metadata.selected, base: this.path + "/value", index: selectedIndex, editable: this.editable, parentType: 'option' })));
266
+ };
267
+ __decorate([
268
+ core_1.Element()
269
+ ], OptionComponent.prototype, "el");
270
+ __decorate([
271
+ core_1.State()
272
+ ], OptionComponent.prototype, "obj");
273
+ __decorate([
274
+ core_1.State()
275
+ ], OptionComponent.prototype, "localeStrings");
276
+ __decorate([
277
+ core_1.State()
278
+ ], OptionComponent.prototype, "filteredOptions");
279
+ __decorate([
280
+ core_1.Prop()
281
+ ], OptionComponent.prototype, "doc");
282
+ __decorate([
283
+ core_1.Watch('doc')
284
+ ], OptionComponent.prototype, "docChanged");
285
+ __decorate([
286
+ core_1.Prop({ reflect: true })
287
+ ], OptionComponent.prototype, "path");
288
+ __decorate([
289
+ core_1.Prop()
290
+ ], OptionComponent.prototype, "editable");
291
+ __decorate([
292
+ core_1.Prop()
293
+ ], OptionComponent.prototype, "preview");
294
+ __decorate([
295
+ core_1.Event({ bubbles: true })
296
+ ], OptionComponent.prototype, "ldfAddOptionToDoc");
297
+ __decorate([
298
+ core_1.Event({ bubbles: true })
299
+ ], OptionComponent.prototype, "ldfDocShouldChange");
300
+ __decorate([
301
+ core_1.Event({ bubbles: true })
302
+ ], OptionComponent.prototype, "ldfOptionAskForStoredSelection");
303
+ __decorate([
304
+ core_1.Event({ bubbles: true })
305
+ ], OptionComponent.prototype, "ldfOptionMakeSelection");
306
+ __decorate([
307
+ core_1.Method()
308
+ ], OptionComponent.prototype, "select");
309
+ OptionComponent = __decorate([
310
+ core_1.Component({
311
+ tag: 'ldf-option',
312
+ styleUrl: 'option.scss',
313
+ scoped: true
314
+ })
315
+ ], OptionComponent);
316
+ return OptionComponent;
317
+ }());
318
+ exports.OptionComponent = OptionComponent;
@@ -258,7 +258,6 @@ var PsalmComponent = /** @class */ (function () {
258
258
  var _this = this;
259
259
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v;
260
260
  var includeAntiphon = this.obj.includeAntiphon();
261
- console.log('includeAntiphon = ', includeAntiphon);
262
261
  // create blank psalm verse pattern
263
262
  var pattern, templateMaker = function (verse) { return ({ type: 'psalm-verse', number: '', halfverse: '', verse: verse }); };
264
263
  if (this.editable) {
@@ -167,7 +167,6 @@ export class PsalmComponent {
167
167
  render() {
168
168
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v;
169
169
  const includeAntiphon = this.obj.includeAntiphon();
170
- console.log('includeAntiphon = ', includeAntiphon);
171
170
  // create blank psalm verse pattern
172
171
  let pattern, templateMaker = (verse) => ({ type: 'psalm-verse', number: '', halfverse: '', verse });
173
172
  if (this.editable) {
@@ -127,10 +127,9 @@ var StringComponent = /** @class */ (function () {
127
127
  var final = processed;
128
128
  if (firstChunk) {
129
129
  var splitTest = (firstChunk || '').split(/[\s.!?\\]/);
130
- console.log('firstChunk = ', firstChunk);
131
130
  var firstWord = splitTest ? splitTest[0] : '', re = firstWord.length > 2
132
- ? /^ ?([\"\'“”‘’\!\?\[\]\(\)\w\u0590-\u05ff\u0370-\u03ff])([\w\u0590-\u05ff\u0370-\u03ff]*)/
133
- : /^ ?([\"\'“”‘’\!\?\[\]\(\)\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]*)/
134
133
  : re, buffer = firstWord.length == 1, split = firstChunk.split(reIncludingPunctuation).filter(function (s) { return s !== ''; }), match1 = split[0], match2 = split[1], nextWord = split[2];
135
134
  final = new Array(React.createElement("span", { "class": 'firstword' },
136
135
  React.createElement("span", { "class": buffer ? "drop buffered-drop drop-" + match1 : "drop drop-" + match1 }, match1),
@@ -116,11 +116,10 @@ export class StringComponent {
116
116
  let final = processed;
117
117
  if (firstChunk) {
118
118
  const splitTest = (firstChunk || '').split(/[\s.!?\\]/);
119
- console.log('firstChunk = ', firstChunk);
120
119
  const firstWord = splitTest ? splitTest[0] : '', re = firstWord.length > 2
121
- ? /^ ?([\"\'“”‘’\!\?\[\]\(\)\w\u0590-\u05ff\u0370-\u03ff])([\w\u0590-\u05ff\u0370-\u03ff]*)/
122
- : /^ ?([\"\'“”‘’\!\?\[\]\(\)\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(/[\"\'“”‘’\!\?\[\]\(\)]/))
123
- ? /^ ?([\"\'“”‘’\!\?\[\]\(\)\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]*)/
124
123
  : re, buffer = firstWord.length == 1, split = firstChunk.split(reIncludingPunctuation).filter(s => s !== ''), [match1, match2, nextWord] = split;
125
124
  final = new Array(h("span", { class: 'firstword' },
126
125
  h("span", { class: buffer ? `drop buffered-drop drop-${match1}` : `drop drop-${match1}` }, match1),
@@ -145,7 +145,7 @@ var TextComponent = /** @class */ (function () {
145
145
  var value = ((_c = (_b = this.obj) === null || _b === void 0 ? void 0 : _b.metadata) === null || _c === void 0 ? void 0 : _c.rollup) ? (((_d = this.obj) === null || _d === void 0 ? void 0 : _d.value) || []).map(function (s) { return s.replace(/\s+/g, ' '); })
146
146
  : (((_e = this.obj) === null || _e === void 0 ? void 0 : _e.value) || []);
147
147
  var compiledValue_1 = value.map(function (s) {
148
- return s.split(/([\*\w\n\s,:;\.\-–—'“✠”‘’\!\?”\[\]\%\(\)\u0041-\u024F]+([^\*\w\n\s,;:\.'“”✠‘’”\-–—\!\?\[\]\%\(\)\u0041-\u024F]))/g);
148
+ return s.split(/([\*\w\n\s,:;\.\-–—'“☩✠”‘’\!\?”\[\]\%\(\)\/\u0041-\u024F]+([^\*\w\n\s,;:\.'“”☩✠‘’”\-–—\!\?\[\]\%\(\)\/\u0041-\u024F]))/g);
149
149
  });
150
150
  if (!this.editable && ((_f = this.obj) === null || _f === void 0 ? void 0 : _f.display_format) === 'abbreviated') {
151
151
  var firstSection = compiledValue_1[0], lastSection = compiledValue_1[compiledValue_1.length - 1];
@@ -183,8 +183,9 @@ var TextComponent = /** @class */ (function () {
183
183
  var _a, _b, _c, _d;
184
184
  return React.createElement("p", { "class": "text-body", id: (_this.obj.uid || _this.obj.slug) + "-prayerIndex" }, prayer === null || prayer === void 0 ? void 0 :
185
185
  prayer.map(function (chunk, chunkIndex) {
186
+ var _a;
186
187
  return React.createElement("span", { id: (_this.obj.uid || _this.obj.slug) + "-" + prayerIndex + "-" + chunkIndex },
187
- React.createElement("ldf-string", { text: chunk, citation: { label: _this.obj.label }, dropcap: prayerIndex === 0 && chunkIndex <= 1 ? "enabled" : "disabled", index: prayerIndex + chunkIndex, fragment: _this.path }));
188
+ React.createElement("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 }));
188
189
  }),
189
190
  ((_b = (_a = _this.obj) === null || _a === void 0 ? void 0 : _a.metadata) === null || _b === void 0 ? void 0 : _b.response) && prayerIndex == compiledValue_1.length - 1 && React.createElement("span", { "class": "response" },
190
191
  " ",
@@ -74,7 +74,7 @@ export class TextComponent {
74
74
  ? (((_d = this.obj) === null || _d === void 0 ? void 0 : _d.value) || []).map(s => s.replace(/\s+/g, ' '))
75
75
  : (((_e = this.obj) === null || _e === void 0 ? void 0 : _e.value) || []);
76
76
  let compiledValue = value.map(s => {
77
- return s.split(/([\*\w\n\s,:;\.\-–—'“✠”‘’\!\?”\[\]\%\(\)\u0041-\u024F]+([^\*\w\n\s,;:\.'“”✠‘’”\-–—\!\?\[\]\%\(\)\u0041-\u024F]))/g);
77
+ return s.split(/([\*\w\n\s,:;\.\-–—'“☩✠”‘’\!\?”\[\]\%\(\)\/\u0041-\u024F]+([^\*\w\n\s,;:\.'“”☩✠‘’”\-–—\!\?\[\]\%\(\)\/\u0041-\u024F]))/g);
78
78
  });
79
79
  if (!this.editable && ((_f = this.obj) === null || _f === void 0 ? void 0 : _f.display_format) === 'abbreviated') {
80
80
  const firstSection = compiledValue[0], lastSection = compiledValue[compiledValue.length - 1];
@@ -109,8 +109,11 @@ export class TextComponent {
109
109
  compiledValue.map((prayer, prayerIndex) => {
110
110
  var _a, _b, _c, _d;
111
111
  return h("p", { class: "text-body", id: `${this.obj.uid || this.obj.slug}-prayerIndex` }, prayer === null || prayer === void 0 ? void 0 :
112
- prayer.map((chunk, chunkIndex) => h("span", { id: `${this.obj.uid || this.obj.slug}-${prayerIndex}-${chunkIndex}` },
113
- h("ldf-string", { text: chunk, citation: { label: this.obj.label }, dropcap: prayerIndex === 0 && chunkIndex <= 1 ? "enabled" : "disabled", index: prayerIndex + chunkIndex, fragment: this.path }))),
112
+ prayer.map((chunk, chunkIndex) => {
113
+ var _a;
114
+ return h("span", { id: `${this.obj.uid || this.obj.slug}-${prayerIndex}-${chunkIndex}` },
115
+ 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 }));
116
+ }),
114
117
  ((_b = (_a = this.obj) === null || _a === void 0 ? void 0 : _a.metadata) === null || _b === void 0 ? void 0 : _b.response) && prayerIndex == compiledValue.length - 1 && h("span", { class: "response" },
115
118
  " ",
116
119
  this.obj.metadata.response),
@@ -1,5 +1,3 @@
1
- import { c as createCommonjsModule } from './_commonjsHelpers-ba3f0406.js';
2
-
3
1
  // strip away everything but year, month, day
4
2
  function dateOnly(d) {
5
3
  d.setHours(0);
@@ -145,7 +143,7 @@ const TYPES = [
145
143
  'parallel',
146
144
  ];
147
145
  const LOOKUP_TYPES = ['lectionary', 'canticle', 'category', 'slug', 'collect'];
148
- const DISPLAY_FORMATS = ['default', 'omit', 'unison', 'abbreviated'];
146
+ const DISPLAY_FORMATS = ['default', 'omit', 'unison', 'abbreviated', 'force_dropcap'];
149
147
  /** Represents a liturgy of any scope and concreteness, from a complete bullletin to a single prayer. */
150
148
  class LiturgicalDocument {
151
149
  //** Constructor takes a Javascript object containing the class's properties */
@@ -281,93 +279,4 @@ var Book;
281
279
  Book["Bel"] = "Bel";
282
280
  })(Book || (Book = {}));
283
281
 
284
- createCommonjsModule(function (module, exports) {
285
- // Reference: https://www.geeksforgeeks.org/jaro-and-jaro-winkler-similarity/
286
- Object.defineProperty(exports, "__esModule", { value: true });
287
- exports.jaroWinkler = exports.jaro = void 0;
288
- /**
289
- *
290
- * @param str1 String 1 for compare
291
- * @param str2 String 2 for compare
292
- * @param options to control case sensitive or not
293
- */
294
- function jaro(str1, str2, options) {
295
- // Exit early if either are empty.
296
- if (str1.length === 0 || str2.length === 0) {
297
- return 0;
298
- }
299
- // Convert to upper if case-sensitive is false.
300
- if (options && !options.caseSensitive) {
301
- str1 = str1.toUpperCase();
302
- str2 = str2.toUpperCase();
303
- }
304
- // Exact match
305
- if (str1 === str2) {
306
- return 1;
307
- }
308
- // Number of matches
309
- var m = 0;
310
- // Length of two Strings
311
- var len1 = str1.length;
312
- var len2 = str2.length;
313
- // Maximum distance
314
- var window = Math.floor(Math.max(len1, len2) / 2) - 1;
315
- // Hash for matches
316
- var str1Hash = new Array(len1);
317
- var str2Hash = new Array(len2);
318
- for (var i = 0; i < len1; i++) {
319
- for (var j = Math.max(0, i - window); j <= Math.min(len2, i + window + 1); j++) {
320
- if (!str1Hash[i] && !str2Hash[j] && str1[i] === str2[j]) {
321
- ++m;
322
- str1Hash[i] = str2Hash[j] = true;
323
- break;
324
- }
325
- }
326
- }
327
- // Exit early if no matches were found.
328
- if (m === 0) {
329
- return 0;
330
- }
331
- // Count the transpositions.
332
- var t = 0;
333
- var point = 0;
334
- for (var i = 0; i < len1; i++) {
335
- if (str1Hash[i]) {
336
- while (!str2Hash[point]) {
337
- point++;
338
- }
339
- if (str1.charAt(i) !== str2.charAt(point++)) {
340
- t++;
341
- }
342
- }
343
- }
344
- t /= 2;
345
- return (m / len1 + m / len2 + (m - t) / m) / 3;
346
- }
347
- exports.jaro = jaro;
348
- /**
349
- *
350
- * @param str1 String 1 for compare
351
- * @param str2 String 2 for compare
352
- * @param options to control case sensitive or not
353
- */
354
- function jaroWinkler(str1, str2, options) {
355
- // Jaro Distance
356
- var jaroDist = jaro(str1, str2, options);
357
- // Same prefix length, maxium is 4
358
- var prefix = 0;
359
- if (jaroDist > 0.7) {
360
- var minIndex = Math.min(str1.length, str2.length);
361
- var i = 0;
362
- while (str1[i] === str2[i] && i < 4 && i < minIndex) {
363
- ++prefix;
364
- i++;
365
- }
366
- jaroDist += 0.1 * prefix * (1 - jaroDist);
367
- }
368
- return jaroDist;
369
- }
370
- exports.jaroWinkler = jaroWinkler;
371
- });
372
-
373
282
  export { Condition as C, LiturgicalDocument as L, Responsive as R, dateOnly as a, dateFromYMDString as d };
@@ -1,4 +1,4 @@
1
- import { L as LiturgicalDocument } from './index-f5b9b789.js';
1
+ import { L as LiturgicalDocument } from './book-31b8cdde.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 './index-f5b9b789.js';
1
+ import { L as LiturgicalDocument } from './book-31b8cdde.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,11 +3,10 @@ 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 './index-f5b9b789.js';
6
+ import './book-31b8cdde.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';
10
- import './_commonjsHelpers-ba3f0406.js';
11
10
 
12
11
  const buttonIosCss = ":host{--overflow:hidden;--ripple-color:currentColor;--border-width:initial;--border-color:initial;--border-style:initial;--color-activated:var(--color);--color-focused:var(--color);--color-hover:var(--color);--box-shadow:none;display:inline-block;width:auto;color:var(--color);font-family:var(--ion-font-family, inherit);text-align:center;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;user-select:none;vertical-align:top;vertical-align:-webkit-baseline-middle;pointer-events:auto;font-kerning:none}:host(.button-disabled){cursor:default;opacity:0.5;pointer-events:none}:host(.button-solid){--background:var(--ion-color-primary, #3880ff);--color:var(--ion-color-primary-contrast, #fff)}:host(.button-outline){--border-color:var(--ion-color-primary, #3880ff);--background:transparent;--color:var(--ion-color-primary, #3880ff)}:host(.button-clear){--border-width:0;--background:transparent;--color:var(--ion-color-primary, #3880ff)}:host(.button-block){display:block}:host(.button-block) .button-native{margin-left:0;margin-right:0;display:block;width:100%;clear:both;contain:content}:host(.button-block) .button-native::after{clear:both}:host(.button-full){display:block}:host(.button-full) .button-native{margin-left:0;margin-right:0;display:block;width:100%;contain:content}:host(.button-full:not(.button-round)) .button-native{border-radius:0;border-right-width:0;border-left-width:0}.button-native{border-radius:var(--border-radius);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:var(--padding-start);padding-right:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;display:block;position:relative;width:100%;height:100%;transition:var(--transition);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);outline:none;background:var(--background);line-height:1;box-shadow:var(--box-shadow);contain:layout style;cursor:pointer;opacity:var(--opacity);overflow:var(--overflow);z-index:0;box-sizing:border-box;appearance:none}@supports (margin-inline-start: 0) or (-webkit-margin-start: 0){.button-native{padding-left:unset;padding-right:unset;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end)}}.button-native::-moz-focus-inner{border:0}.button-inner{display:flex;position:relative;flex-flow:row nowrap;flex-shrink:0;align-items:center;justify-content:center;width:100%;height:100%;z-index:1}::slotted(ion-icon){font-size:1.4em;pointer-events:none}::slotted(ion-icon[slot=start]){margin-left:-0.3em;margin-right:0.3em;margin-top:0;margin-bottom:0}@supports (margin-inline-start: 0) or (-webkit-margin-start: 0){::slotted(ion-icon[slot=start]){margin-left:unset;margin-right:unset;-webkit-margin-start:-0.3em;margin-inline-start:-0.3em;-webkit-margin-end:0.3em;margin-inline-end:0.3em}}::slotted(ion-icon[slot=end]){margin-left:0.3em;margin-right:-0.2em;margin-top:0;margin-bottom:0}@supports (margin-inline-start: 0) or (-webkit-margin-start: 0){::slotted(ion-icon[slot=end]){margin-left:unset;margin-right:unset;-webkit-margin-start:0.3em;margin-inline-start:0.3em;-webkit-margin-end:-0.2em;margin-inline-end:-0.2em}}::slotted(ion-icon[slot=icon-only]){font-size:1.8em}ion-ripple-effect{color:var(--ripple-color)}.button-native::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\"\";opacity:0}:host(.ion-activated){color:var(--color-activated)}:host(.ion-activated) .button-native::after{background:var(--background-activated);opacity:var(--background-activated-opacity)}:host(.ion-focused){color:var(--color-focused)}:host(.ion-focused) .button-native::after{background:var(--background-focused);opacity:var(--background-focused-opacity)}@media (any-hover: hover){:host(:hover){color:var(--color-hover)}:host(:hover) .button-native::after{background:var(--background-hover);opacity:var(--background-hover-opacity)}}:host(.button-solid.ion-color) .button-native{background:var(--ion-color-base);color:var(--ion-color-contrast)}:host(.button-outline.ion-color) .button-native{border-color:var(--ion-color-base);background:transparent;color:var(--ion-color-base)}:host(.button-clear.ion-color) .button-native{background:transparent;color:var(--ion-color-base)}:host(.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{color:var(--ion-toolbar-color, var(--color))}:host(.button-outline.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{border-color:var(--ion-toolbar-color, var(--color, var(--border-color)))}:host(.button-solid.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native{background:var(--ion-toolbar-color, var(--background));color:var(--ion-toolbar-background, var(--color))}:host{--border-radius:10px;--padding-top:0;--padding-bottom:0;--padding-start:1em;--padding-end:1em;--transition:background-color, opacity 100ms linear;margin-left:2px;margin-right:2px;margin-top:4px;margin-bottom:4px;height:2.8em;font-size:16px;font-weight:500;letter-spacing:-0.03em}@supports (margin-inline-start: 0) or (-webkit-margin-start: 0){:host{margin-left:unset;margin-right:unset;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px}}:host(.button-solid){--background-activated:var(--ion-color-primary-shade, #3171e0);--background-focused:var(--ion-color-primary-shade, #3171e0);--background-hover:var(--ion-color-primary-tint, #4c8dff);--background-activated-opacity:1;--background-focused-opacity:1;--background-hover-opacity:1}:host(.button-outline){--border-radius:10px;--border-width:1px;--border-style:solid;--background-activated:var(--ion-color-primary, #3880ff);--background-focused:var(--ion-color-primary, #3880ff);--background-hover:transparent;--background-focused-opacity:.1;--color-activated:var(--ion-color-primary-contrast, #fff)}:host(.button-clear){--background-activated:transparent;--background-focused:var(--ion-color-primary, #3880ff);--background-hover:transparent;--background-focused-opacity:.1;font-size:17px;font-weight:normal;letter-spacing:0}:host(.button-large){--border-radius:12px;--padding-top:0;--padding-start:1em;--padding-end:1em;--padding-bottom:0;height:2.8em;font-size:20px}:host(.button-small){--border-radius:6px;--padding-top:0;--padding-start:0.9em;--padding-end:0.9em;--padding-bottom:0;height:2.1em;font-size:13px}:host(.button-round){--border-radius:64px;--padding-top:0;--padding-start:26px;--padding-end:26px;--padding-bottom:0}:host(.button-strong){font-weight:600}:host(.button-clear.ion-activated){opacity:0.4}:host(.button-outline.ion-activated.ion-color) .button-native{color:var(--ion-color-contrast)}:host(.button-outline.ion-activated.ion-color) .button-native::after{background:var(--ion-color-base)}:host(.button-solid.ion-color.ion-activated) .button-native::after{background:var(--ion-color-shade)}:host(.button-outline.ion-focused.ion-color) .button-native,:host(.button-clear.ion-focused.ion-color) .button-native{color:var(--ion-color-base)}:host(.button-outline.ion-focused.ion-color) .button-native::after,:host(.button-clear.ion-focused.ion-color) .button-native::after{background:var(--ion-color-base)}:host(.button-solid.ion-color.ion-focused) .button-native::after{background:var(--ion-color-shade)}@media (any-hover: hover){:host(.button-clear:hover),:host(.button-outline:hover){opacity:0.6}:host(.button-clear.ion-color:hover) .button-native,:host(.button-outline.ion-color:hover) .button-native{color:var(--ion-color-base)}:host(.button-clear.ion-color:hover) .button-native::after,:host(.button-outline.ion-color:hover) .button-native::after{background:transparent}:host(.button-solid.ion-color:hover) .button-native::after{background:var(--ion-color-tint)}:host(:hover.button-solid.in-toolbar:not(.ion-color):not(.in-toolbar-color)) .button-native::after{background:#fff;opacity:0.1}}";
13
12
 
@@ -2,12 +2,11 @@ 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 './index-f5b9b789.js';
6
- import { R as Refrain } from './refrain-810c4de5.js';
5
+ import './book-31b8cdde.js';
6
+ import { R as Refrain } from './refrain-75a412cb.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';
10
- import './_commonjsHelpers-ba3f0406.js';
11
10
 
12
11
  const cardContentIosCss = "ion-card-content{display:block;position:relative}.card-content-ios{padding-left:20px;padding-right:20px;padding-top:20px;padding-bottom:20px;font-size:16px;line-height:1.4}@supports (margin-inline-start: 0) or (-webkit-margin-start: 0){.card-content-ios{padding-left:unset;padding-right:unset;-webkit-padding-start:20px;padding-inline-start:20px;-webkit-padding-end:20px;padding-inline-end:20px}}.card-content-ios h1{margin-left:0;margin-right:0;margin-top:0;margin-bottom:2px;font-size:24px;font-weight:normal}.card-content-ios h2{margin-left:0;margin-right:0;margin-top:2px;margin-bottom:2px;font-size:16px;font-weight:normal}.card-content-ios h3,.card-content-ios h4,.card-content-ios h5,.card-content-ios h6{margin-left:0;margin-right:0;margin-top:2px;margin-bottom:2px;font-size:14px;font-weight:normal}.card-content-ios p{margin-left:0;margin-right:0;margin-top:0;margin-bottom:2px;font-size:14px}ion-card-header+.card-content-ios{padding-top:0}";
13
12
 
@@ -2,11 +2,10 @@ 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 './index-f5b9b789.js';
5
+ import './book-31b8cdde.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';
9
- import './_commonjsHelpers-ba3f0406.js';
10
9
  import './hardware-back-button-b3b61715.js';
11
10
 
12
11
  const checkboxIosCss = ":host{--background-checked:var(--ion-color-primary, #3880ff);--border-color-checked:var(--ion-color-primary, #3880ff);--checkmark-color:var(--ion-color-primary-contrast, #fff);--checkmark-width:1;--transition:none;display:inline-block;position:relative;user-select:none;z-index:2}:host(.ion-color){--background-checked:var(--ion-color-base);--border-color-checked:var(--ion-color-base);--checkmark-color:var(--ion-color-contrast)}button{left:0;top:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;position:absolute;width:100%;height:100%;border:0;background:transparent;cursor:pointer;appearance:none;outline:none}[dir=rtl] button,:host-context([dir=rtl]) button{left:unset;right:unset;right:0}button::-moz-focus-inner{border:0}.checkbox-icon{border-radius:var(--border-radius);display:block;position:relative;width:100%;height:100%;transition:var(--transition);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);box-sizing:border-box}.checkbox-icon path{fill:none;stroke:var(--checkmark-color);stroke-width:var(--checkmark-width);opacity:0}:host(.checkbox-checked) .checkbox-icon,:host(.checkbox-indeterminate) .checkbox-icon{border-color:var(--border-color-checked);background:var(--background-checked)}:host(.checkbox-checked) .checkbox-icon path,:host(.checkbox-indeterminate) .checkbox-icon path{opacity:1}:host(.checkbox-disabled){pointer-events:none}:host{--border-radius:50%;--border-width:1px;--border-style:solid;--border-color:rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.23);--background:var(--ion-item-background, var(--ion-background-color, #fff));--size:26px;width:var(--size);height:var(--size)}:host(.checkbox-disabled){opacity:0.3}:host(.in-item){margin-left:0;margin-right:8px;margin-top:10px;margin-bottom:9px;display:block;position:static}@supports (margin-inline-start: 0) or (-webkit-margin-start: 0){:host(.in-item){margin-left:unset;margin-right:unset;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:8px;margin-inline-end:8px}}:host(.in-item[slot=start]){margin-left:2px;margin-right:20px;margin-top:8px;margin-bottom:8px}@supports (margin-inline-start: 0) or (-webkit-margin-start: 0){:host(.in-item[slot=start]){margin-left:unset;margin-right:unset;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:20px;margin-inline-end:20px}}";
@@ -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 './index-f5b9b789.js';
6
+ import './book-31b8cdde.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';