@pie-element/mc-populated-blank 0.3.0-next.8 → 0.3.0

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 (53) hide show
  1. package/README.md +51 -21
  2. package/author.js +2 -0
  3. package/dist/author/defaults.d.ts +73 -0
  4. package/dist/author/index.d.ts +2 -10
  5. package/dist/author/index.js +139 -165
  6. package/dist/author/index.js.map +1 -1
  7. package/dist/browser/McPopulatedBlank-LqV-pdXv.js +2541 -0
  8. package/dist/browser/McPopulatedBlank-LqV-pdXv.js.map +1 -0
  9. package/dist/browser/author/index.js +11 -32
  10. package/dist/browser/author/index.js.map +1 -1
  11. package/dist/browser/{client-BmZWrsT3.js → client-Dfdyltec.js} +655 -643
  12. package/dist/browser/client-Dfdyltec.js.map +1 -0
  13. package/dist/browser/controller/index.js +2 -220
  14. package/dist/browser/controller-DSkEI2th.js +222 -0
  15. package/dist/browser/controller-DSkEI2th.js.map +1 -0
  16. package/dist/browser/delivery/index.js +71 -1005
  17. package/dist/browser/delivery/index.js.map +1 -1
  18. package/dist/browser/{layoutLimits-Bp17YP2V.js → layoutLimits-C2D60jW0.js} +1 -2
  19. package/dist/browser/layoutLimits-C2D60jW0.js.map +1 -0
  20. package/dist/browser/print/index.js +94 -103
  21. package/dist/browser/print/index.js.map +1 -1
  22. package/dist/controller/defaults.d.ts +8 -30
  23. package/dist/controller/index.d.ts +80 -65
  24. package/dist/controller/index.js +142 -115
  25. package/dist/controller/index.js.map +1 -1
  26. package/dist/delivery/assets/audioButtonSkinAssets.d.ts +4 -0
  27. package/dist/delivery/computeDisplayState.d.ts +12 -7
  28. package/dist/delivery/computeLayoutProfile.d.ts +8 -0
  29. package/dist/delivery/computeLayoutStyle.d.ts +1 -1
  30. package/dist/delivery/i18n.d.ts +8 -0
  31. package/dist/delivery/index.d.ts +8 -16
  32. package/dist/delivery/index.js +3229 -719
  33. package/dist/delivery/index.js.map +1 -1
  34. package/dist/delivery/variant-css-map.d.ts +15 -2
  35. package/dist/index.d.ts +1 -1
  36. package/dist/index.iife.d.ts +1 -154
  37. package/dist/index.iife.js +414 -163
  38. package/dist/index.js +2 -6818
  39. package/dist/print/index.d.ts +3 -7
  40. package/dist/print/index.js +4667 -349
  41. package/dist/print/index.js.map +1 -1
  42. package/dist/print/preparePrint.d.ts +15 -0
  43. package/dist/runtime-support.js +5 -5
  44. package/dist/runtime-support.js.map +1 -1
  45. package/dist/shared/layoutLimits.d.ts +0 -1
  46. package/dist/shared/types.d.ts +14 -20
  47. package/module/print.js +3781 -918
  48. package/module/print.js.map +1 -1
  49. package/package.json +14 -4
  50. package/dist/browser/client-BmZWrsT3.js.map +0 -1
  51. package/dist/browser/controller/index.js.map +0 -1
  52. package/dist/browser/layoutLimits-Bp17YP2V.js.map +0 -1
  53. package/dist/index.js.map +0 -1
@@ -1,7 +1,22 @@
1
- import { A as e, C as t, D as n, E as r, F as i, M as a, N as o, O as s, P as c, S as l, T as u, _ as d, a as f, c as p, d as m, f as h, g, h as _, i as v, j as y, k as b, l as x, m as S, n as C, o as w, r as T, s as E, t as D, u as ee, v as O, w as k, x as A, y as j } from "../client-BmZWrsT3.js";
2
- import { t as M } from "../layoutLimits-Bp17YP2V.js";
1
+ import { t as e } from "../McPopulatedBlank-LqV-pdXv.js";
3
2
  //#region ../../lib-svelte/delivery-events/dist/index2.js
4
- var N = class e extends CustomEvent {
3
+ function t(e) {
4
+ return !!e && typeof e == "object" && !Array.isArray(e);
5
+ }
6
+ function n(e, n) {
7
+ if (e === n) return e;
8
+ if (!t(e) || !t(n) || Object.isFrozen(e) || !Object.isExtensible(e)) return n;
9
+ try {
10
+ for (let t of Object.keys(e)) t in n || delete e[t];
11
+ Object.assign(e, n);
12
+ } catch {
13
+ return n;
14
+ }
15
+ return e;
16
+ }
17
+ //#endregion
18
+ //#region ../../shared/player-events/dist/index.js
19
+ var r = class e extends CustomEvent {
5
20
  static {
6
21
  this.TYPE = "model-set";
7
22
  }
@@ -16,7 +31,7 @@ var N = class e extends CustomEvent {
16
31
  }
17
32
  }), this.component = t, this.complete = n;
18
33
  }
19
- }, P = class e extends CustomEvent {
34
+ }, i = class e extends CustomEvent {
20
35
  static {
21
36
  this.TYPE = "session-changed";
22
37
  }
@@ -30,1029 +45,80 @@ var N = class e extends CustomEvent {
30
45
  }
31
46
  }), this.component = t, this.complete = n;
32
47
  }
33
- }, F = (e) => {
34
- let t = e;
35
- return t ? typeof t.onSessionChange == "function" || typeof t.onAudioStarted == "function" || typeof t.onAudioEnded == "function" : !1;
36
48
  };
37
- function I(e, t = {}) {
38
- let n = t.hostPredicate ?? F, r = e;
39
- for (; r;) {
40
- if (n(r)) return r;
41
- r = r.parentElement;
42
- }
43
- if (typeof document < "u" && t.fallbackSelector) {
44
- let e = document.querySelector(t.fallbackSelector);
45
- if (n(e)) return e;
46
- }
47
- return null;
48
- }
49
- function L({ sourceEl: e, fallbackSelector: t, component: n, complete: r, session: i }) {
50
- let a = I(e, { fallbackSelector: t });
51
- return a ? typeof a.onSessionChange == "function" ? (a.onSessionChange(i), a) : (a.dispatchEvent(new P(n, r)), a) : null;
52
- }
53
49
  //#endregion
54
- //#region src/delivery/computeAudioMode.ts
55
- function te(e) {
56
- return e.hasAudio ? e.audioUrl ? e.useFeatureButtonAudio ? "feature-button" : "controls" : "error" : "none";
57
- }
58
- //#endregion
59
- //#region src/delivery/AudioPlayer.svelte
60
- var ne = O("<audio class=\"sr-only pie-audio-player svelte-ypdwb3\" preload=\"metadata\" aria-hidden=\"true\" tabindex=\"-1\"></audio> <button class=\"listen-button pie-listen-button rli-feature-audio svelte-ypdwb3\" type=\"button\"><img/> <img/></button>", 1), re = O("<button class=\"mt-2 text-sm underline pie-audio-autoplay-enable\" type=\"button\"> </button>"), R = O("<audio controls=\"\" class=\"w-full max-w-md pie-audio-player\" preload=\"metadata\"><track kind=\"captions\"/></audio> <!>", 1), ie = O("<p class=\"text-sm text-red-700 pie-audio-error\" role=\"alert\"> </p>"), z = O("<div class=\"mb-4 audio-container pie-audio-container\"><!></div>"), B = {
61
- hash: "svelte-ypdwb3",
62
- code: ".listen-button.svelte-ypdwb3 {width:var(--mpb-listen-button-size, 128px);height:var(--mpb-listen-button-size, 128px);border:0;padding:0;background-color:transparent;cursor:pointer;z-index:1;}.listen-button.svelte-ypdwb3:hover {background-color:#e2f1fe;}.listen-feature-icon.svelte-ypdwb3 {width:var(--mpb-listen-button-size, 128px);height:var(--mpb-listen-button-size, 128px);object-fit:contain;display:none;}.listen-feature-icon.listen-active.svelte-ypdwb3 {display:block;}.sr-only.svelte-ypdwb3 {position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;}"
63
- };
64
- function V(p, m) {
65
- c(m, !0), ee(p, B);
66
- let h = {
67
- IDLE: "idle",
68
- PLAYING: "playing",
69
- BLOCKED: "blocked",
70
- PAUSED: "paused"
71
- }, v = C(m, "hasAudio", 7, !1), w = C(m, "audioUrl", 7), E = C(m, "useFeatureButtonAudio", 7, !1), D = C(m, "autoplayEnabled", 7, !1), O = C(m, "featureAudioSkin", 7), j = C(m, "uiText", 7), M = C(m, "locale", 7, ""), N = C(m, "onaudiostarted", 7), P = C(m, "onaudioended", 7), F = e(null), I = e(null), L = e(null), V = e(s(h.IDLE)), H = a(() => te({
72
- hasAudio: v(),
73
- audioUrl: w(),
74
- useFeatureButtonAudio: E()
75
- })), U = a(() => A(V) === h.PLAYING), W = a(() => A(V) === h.BLOCKED), ae = a(() => A(H) === "error" ? j().audioResourceUnavailable : "");
76
- t(() => {
77
- w(), b(V, h.IDLE, !0);
78
- });
79
- function oe() {
80
- A(H) !== "none" && A(H) !== "error" && A(F) && A(F).play().catch(() => {});
81
- }
82
- function se() {
83
- A(H) !== "none" && A(H) !== "error" && A(F) && A(F).play().finally(() => {
84
- A(V) === h.BLOCKED && b(V, h.PAUSED, !0);
85
- });
86
- }
87
- function G(e, n, r) {
88
- t(() => {
89
- let t = e();
90
- if (t) return t.addEventListener(n, r), () => t.removeEventListener(n, r);
91
- });
92
- }
93
- G(() => A(F), "playing", () => {
94
- b(V, h.PLAYING, !0), N()?.();
95
- }), G(() => A(F), "ended", () => {
96
- b(V, h.PAUSED, !0), P()?.();
97
- }), G(() => A(I), "click", () => oe()), G(() => A(L), "click", () => se()), t(() => {
98
- !D() || A(H) === "none" || A(H) === "error" || A(V) === h.IDLE && A(F) && w() && (b(V, h.PAUSED, !0), A(F).play().catch(() => {
99
- b(V, h.BLOCKED, !0);
100
- }));
101
- });
102
- function K(e = "") {
103
- return e.toLowerCase().startsWith("es") ? "Escuchar" : "Listen";
104
- }
105
- function q(e = "") {
106
- return e.toLowerCase().startsWith("es") ? j().listenSilentAltEs ?? "Escuchar. Repetir las instrucciones." : j().listenSilentAlt ?? "Repeat instructions";
107
- }
108
- function J(e = "") {
109
- return e.toLowerCase().startsWith("es") ? j().listenPlayingAltEs ?? "Escuchar. Estas son las instrucciones." : j().listenPlayingAlt ?? "Instructions are playing";
110
- }
111
- var ce = {
112
- get hasAudio() {
113
- return v();
114
- },
115
- set hasAudio(e = !1) {
116
- v(e), y();
117
- },
118
- get audioUrl() {
119
- return w();
120
- },
121
- set audioUrl(e) {
122
- w(e), y();
123
- },
124
- get useFeatureButtonAudio() {
125
- return E();
126
- },
127
- set useFeatureButtonAudio(e = !1) {
128
- E(e), y();
129
- },
130
- get autoplayEnabled() {
131
- return D();
132
- },
133
- set autoplayEnabled(e = !1) {
134
- D(e), y();
135
- },
136
- get featureAudioSkin() {
137
- return O();
138
- },
139
- set featureAudioSkin(e) {
140
- O(e), y();
141
- },
142
- get uiText() {
143
- return j();
144
- },
145
- set uiText(e) {
146
- j(e), y();
147
- },
148
- get locale() {
149
- return M();
150
- },
151
- set locale(e = "") {
152
- M(e), y();
153
- },
154
- get onaudiostarted() {
155
- return N();
156
- },
157
- set onaudiostarted(e) {
158
- N(e), y();
159
- },
160
- get onaudioended() {
161
- return P();
162
- },
163
- set onaudioended(e) {
164
- P(e), y();
165
- }
166
- }, Y = d(), X = u(Y), le = (e) => {
167
- var t = z(), a = k(t), o = (e) => {
168
- var t = ne(), r = u(t);
169
- T(r, (e) => b(F, e), () => A(F));
170
- var a = n(r, 2), o = k(a), s = n(o, 2);
171
- i(a), T(a, (e) => b(I, e), () => A(I)), l((e, t, n) => {
172
- f(r, "src", w()), f(a, "aria-label", e), x(o, 1, `listen-feature-icon pie-listen-icon rli-feature-listen ${A(U) ? "" : "listen-active"}`, "svelte-ypdwb3"), f(o, "src", O().silentUrl), f(o, "alt", t), x(s, 1, `listen-feature-icon pie-listen-icon rli-feature-listen ${A(U) ? "listen-active" : ""}`, "svelte-ypdwb3"), f(s, "src", O().playingUrl), f(s, "alt", n);
173
- }, [
174
- () => K(M()),
175
- () => q(M()),
176
- () => J(M())
177
- ]), g(e, t);
178
- }, s = (e) => {
179
- var t = R(), i = u(t);
180
- T(i, (e) => b(F, e), () => A(F));
181
- var a = n(i, 2), o = (e) => {
182
- var t = re(), n = r(t, !0);
183
- T(t, (e) => b(L, e), () => A(L)), l(() => _(n, j().clickToEnableAutoplay)), g(e, t);
50
+ //#region ../../lib-svelte/delivery-events/dist/index3.js
51
+ function a(e, t) {
52
+ let a = e.element;
53
+ if (!a) throw TypeError("defineDeliveryElement: the component was not compiled with `customElement`");
54
+ class o extends a {
55
+ #e;
56
+ #t;
57
+ constructor() {
58
+ super(), this.onSessionChange = (e) => {
59
+ this.writeSession(e), this.dispatchSessionChanged();
184
60
  };
185
- S(a, (e) => {
186
- A(W) && e(o);
187
- }), l(() => f(i, "src", w())), g(e, t);
188
- }, c = (e) => {
189
- var t = ie(), n = r(t, !0);
190
- l(() => _(n, A(ae))), g(e, t);
191
- };
192
- S(a, (e) => {
193
- A(H) === "feature-button" ? e(o) : A(H) === "controls" ? e(s, 1) : A(H) === "error" && e(c, 2);
194
- }), i(t), g(e, t);
195
- };
196
- return S(X, (e) => {
197
- A(H) !== "none" && e(le);
198
- }), g(p, Y), o(ce);
199
- }
200
- D(V, {
201
- hasAudio: {},
202
- audioUrl: {},
203
- useFeatureButtonAudio: {},
204
- autoplayEnabled: {},
205
- featureAudioSkin: {},
206
- uiText: {},
207
- locale: {},
208
- onaudiostarted: {},
209
- onaudioended: {}
210
- }, [], [], { mode: "open" });
211
- //#endregion
212
- //#region src/delivery/ClozeMarker.svelte
213
- var H = O("<img class=\"w-auto object-contain pie-blank-image\" style=\"max-width:var(--mpb-choice-image-max-width, 9.375rem);max-height:var(--mpb-choice-image-max-height, 9.375rem);\"/>"), U = O("<span class=\"cloze-marker-value pie-blank-value svelte-d9l5tb\"></span>"), W = O("<span class=\"cloze-marker-empty svelte-d9l5tb\"><span aria-hidden=\"true\">&nbsp;</span> <span class=\"sr-only svelte-d9l5tb\">(blank)</span></span>"), ae = O("<span role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"><!></span>"), oe = {
214
- hash: "svelte-d9l5tb",
215
- code: ".cloze-marker.svelte-d9l5tb {display:inline-flex;align-items:center;justify-content:center;text-align:center;vertical-align:baseline;}.cloze-marker.svelte-d9l5tb:focus-within {outline:2px solid var(--mpb-focus-ring, #1565c0);outline-offset:2px;}.cloze-marker-standalone.svelte-d9l5tb {width:var(--mpb-blank-standalone-width, 7rem);}.cloze-marker-empty.svelte-d9l5tb {display:inline-block;min-width:4ch;}.cloze-marker-value.svelte-d9l5tb {width:100%;display:inline-flex;align-items:center;justify-content:center;text-align:center;}.cloze-marker-value.svelte-d9l5tb p {margin:0;}\n\n /* Same 150x150 content-element constraint as ChoiceRow.svelte's .choice-html\n img — the selected choice's raw labelHtml can carry an embedded <img> here\n too, regardless of customType. See CONTOOL-3159. */.cloze-marker-value.svelte-d9l5tb img {width:150px;height:150px;}.sr-only.svelte-d9l5tb {position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;}"
216
- };
217
- function se(e, t) {
218
- c(t, !0), ee(e, oe);
219
- let n = C(t, "choiceMode", 7, "text"), r = C(t, "displayChoice", 7, void 0), a = C(t, "displayChoiceLabelHtml", 7, ""), s = C(t, "isStandalone", 7, !1), u = C(t, "blankWidth", 7), d = C(t, "blankBorderWidth", 7), h = C(t, "ariaLabel", 7);
220
- var _ = {
221
- get choiceMode() {
222
- return n();
223
- },
224
- set choiceMode(e = "text") {
225
- n(e), y();
226
- },
227
- get displayChoice() {
228
- return r();
229
- },
230
- set displayChoice(e = void 0) {
231
- r(e), y();
232
- },
233
- get displayChoiceLabelHtml() {
234
- return a();
235
- },
236
- set displayChoiceLabelHtml(e = "") {
237
- a(e), y();
238
- },
239
- get isStandalone() {
240
- return s();
241
- },
242
- set isStandalone(e = !1) {
243
- s(e), y();
244
- },
245
- get blankWidth() {
246
- return u();
247
- },
248
- set blankWidth(e) {
249
- u(e), y();
250
- },
251
- get blankBorderWidth() {
252
- return d();
253
- },
254
- set blankBorderWidth(e) {
255
- d(e), y();
256
- },
257
- get ariaLabel() {
258
- return h();
259
- },
260
- set ariaLabel(e) {
261
- h(e), y();
262
61
  }
263
- }, v = ae(), b = k(v), w = (e) => {
264
- var t = H();
265
- l(() => {
266
- f(t, "src", r().imageUrl), f(t, "alt", r().imageAlt || "Selected answer image");
267
- }), g(e, t);
268
- }, T = (e) => {
269
- var t = U();
270
- m(t, a, !0), i(t), g(e, t);
271
- }, E = (e) => {
272
- g(e, W());
273
- };
274
- return S(b, (e) => {
275
- n() === "image" && r()?.imageUrl ? e(w) : a() ? e(T, 1) : e(E, -1);
276
- }), i(v), l(() => {
277
- x(v, 1, `inline-flex items-center min-h-[1.5em] px-2 mx-1 border-b-2 border-gray-500 align-baseline cloze-marker pie-blank-slot ${s() ? "cloze-marker-standalone pie-blank-slot-standalone" : ""}`, "svelte-d9l5tb"), p(v, `width:${u()};border-bottom-width:${d()};`), f(v, "aria-label", h());
278
- }), g(e, v), o(_);
279
- }
280
- D(se, {
281
- choiceMode: {},
282
- displayChoice: {},
283
- displayChoiceLabelHtml: {},
284
- isStandalone: {},
285
- blankWidth: {},
286
- blankBorderWidth: {},
287
- ariaLabel: {}
288
- }, [], [], { mode: "open" });
289
- //#endregion
290
- //#region src/delivery/ChoiceRow.svelte
291
- var G = O("<img class=\"object-contain pie-choice-image\" style=\"max-width:var(--mpb-choice-image-max-width, 9.375rem);max-height:var(--mpb-choice-image-max-height, 9.375rem);\"/>"), K = O("<span class=\"choice-html pie-choice-label svelte-8xu1pt\"></span>"), q = O("<label class=\"cursor-pointer choice-tile text-center pie-choice-tile svelte-8xu1pt\"><span class=\"choice-tile-content pie-choice-tile-content svelte-8xu1pt\"><!></span> <input type=\"radio\" class=\"choice-radio-bottom pie-choice-radio pie-choice-radio-bottom svelte-8xu1pt\"/></label>"), J = O("<img class=\"object-contain pie-choice-image\" style=\"max-height:var(--mpb-choice-image-max-height, 5rem);\"/>"), ce = O("<input type=\"radio\" class=\"choice-radio-inline pie-choice-radio pie-choice-radio-inline svelte-8xu1pt\"/> <label class=\"cursor-pointer flex-1 pie-choice-label-wrap svelte-8xu1pt\"><!></label>", 1), Y = O("<span aria-hidden=\"true\"> </span>"), X = O("<div style=\"gap:var(--mpb-choice-row-gap, 0.5rem);\"><!> <!></div>"), le = {
292
- hash: "svelte-8xu1pt",
293
- code: ".choice-row-horizontal.svelte-8xu1pt {flex-direction:column;align-items:center;width:min(var(--mpb-choice-width-px, 170px), var(--mpb-choice-width-vw, 30vw));min-height:var(--mpb-choice-tile-min-height, 11rem);gap:0;}.choice-tile.svelte-8xu1pt {display:flex;flex-direction:column;justify-content:space-between;align-items:center;width:100%;min-height:var(--mpb-choice-tile-min-height, 11rem);padding:0.8rem 0.65rem 0.5rem;border-radius:8px;background:transparent;transition:background-color 120ms ease-in-out;}.choice-tile-content.svelte-8xu1pt {width:100%;display:flex;align-items:center;justify-content:center;min-height:var(--mpb-choice-content-min-height, 7.5rem);}.choice-row-horizontal.svelte-8xu1pt:hover .choice-tile:where(.svelte-8xu1pt) {background:var(--mpb-choice-hover-bg, var(--pie-background-dark, #ecedf1));}.pie-choice-horizontal.svelte-8xu1pt:not(.is-selected):not(:hover) .pie-choice-tile:where(.svelte-8xu1pt) {background:transparent;}.choice-row-horizontal.is-selected.svelte-8xu1pt .choice-tile:where(.svelte-8xu1pt) {background:var(--mpb-choice-selected-bg, var(--pie-secondary-background, rgba(241, 241, 241, 1)));}.choice-row-horizontal.is-selected.svelte-8xu1pt:hover .choice-tile:where(.svelte-8xu1pt) {background:var(--mpb-choice-selected-bg, var(--pie-secondary-background, rgba(241, 241, 241, 1)));}.pie-choice.svelte-8xu1pt:not(.pie-choice-horizontal):hover .pie-choice-label-wrap:where(.svelte-8xu1pt) {background:var(--pie-background-dark, #ecedf1);}.pie-choice.svelte-8xu1pt:not(.pie-choice-horizontal):not(.is-selected):not(:hover) .pie-choice-label-wrap:where(.svelte-8xu1pt) {background:transparent;}.pie-choice:not(.pie-choice-horizontal).is-selected.svelte-8xu1pt .pie-choice-label-wrap:where(.svelte-8xu1pt) {background:var(--pie-secondary-background, rgba(241, 241, 241, 1));border-radius:6px;}.pie-choice:not(.pie-choice-horizontal).is-selected.svelte-8xu1pt:hover .pie-choice-label-wrap:where(.svelte-8xu1pt) {background:var(--pie-secondary-background, rgba(241, 241, 241, 1));}.pie-choice.choice-correct.svelte-8xu1pt {border-left:3px solid var(--pie-correct-tertiary, #0ea449);}.pie-choice.choice-incorrect.svelte-8xu1pt {border-left:3px solid var(--pie-incorrect-icon, #bf0d00);}.pie-choice-horizontal.choice-correct.svelte-8xu1pt .choice-tile:where(.svelte-8xu1pt) {background:var(--pie-correct-secondary, #e8f5e9);}.pie-choice-horizontal.choice-incorrect.svelte-8xu1pt .choice-tile:where(.svelte-8xu1pt) {background:var(--pie-incorrect-secondary, #ffebee);}.pie-choice-feedback-badge.svelte-8xu1pt {margin-left:auto;display:inline-flex;align-items:center;justify-content:center;width:1.1rem;height:1.1rem;border-radius:9999px;font-size:0.72rem;line-height:1;font-weight:700;color:var(--pie-white, #ffffff);}.pie-choice-feedback-correct.svelte-8xu1pt {background:var(--pie-correct-icon, #087d38);}.pie-choice-feedback-incorrect.svelte-8xu1pt {background:var(--pie-incorrect-icon, #bf0d00);}.choice-row-horizontal.svelte-8xu1pt p {margin:0;text-align:center;}.choice-html.svelte-8xu1pt p {margin:0;}.choice-html.svelte-8xu1pt {width:100%;display:inline-flex;align-items:center;justify-content:center;text-align:center;}\n\n /* Choices carrying raw <img> markup in labelHtml (rather than the dedicated\n imageUrl/imageAlt fields) render unconstrained at their authored size\n otherwise — 3rd-party/CQT-sourced content is typically authored well above\n the platform's 150x150 content-element spec. Applies regardless of\n customType, unlike the r1-CQT-specific cqt-css overlays. See CONTOOL-3159. */.choice-html.svelte-8xu1pt img {width:150px;height:150px;}.choice-radio-bottom.svelte-8xu1pt {margin-top:var(--mpb-horizontal-choice-radio-top-margin, 0.5rem);padding:var(--mpb-choice-radio-padding, 0px);}.choice-radio-inline.svelte-8xu1pt {margin-top:var(--mpb-horizontal-choice-radio-top-margin, 0.5rem);}"
294
- };
295
- function ue(e, t) {
296
- c(t, !0), ee(e, le);
297
- let a = C(t, "choice", 7), s = C(t, "choiceMode", 7, "text"), d = C(t, "isHorizontal", 7, !1), p = C(t, "isSelected", 7, !1), h = C(t, "isDisabled", 7, !1), b = C(t, "correctness", 7, void 0), T = C(t, "isEvaluateMode", 7, !1), D = C(t, "instanceId", 7), O = C(t, "radioGroupName", 7);
298
- var A = {
299
- get choice() {
300
- return a();
301
- },
302
- set choice(e) {
303
- a(e), y();
304
- },
305
- get choiceMode() {
306
- return s();
307
- },
308
- set choiceMode(e = "text") {
309
- s(e), y();
310
- },
311
- get isHorizontal() {
312
- return d();
313
- },
314
- set isHorizontal(e = !1) {
315
- d(e), y();
316
- },
317
- get isSelected() {
318
- return p();
319
- },
320
- set isSelected(e = !1) {
321
- p(e), y();
322
- },
323
- get isDisabled() {
324
- return h();
325
- },
326
- set isDisabled(e = !1) {
327
- h(e), y();
328
- },
329
- get correctness() {
330
- return b();
331
- },
332
- set correctness(e = void 0) {
333
- b(e), y();
334
- },
335
- get isEvaluateMode() {
336
- return T();
337
- },
338
- set isEvaluateMode(e = !1) {
339
- T(e), y();
340
- },
341
- get instanceId() {
342
- return D();
343
- },
344
- set instanceId(e) {
345
- D(e), y();
346
- },
347
- get radioGroupName() {
348
- return O();
349
- },
350
- set radioGroupName(e) {
351
- O(e), y();
62
+ set model(e) {
63
+ this.#e = e, super.model = e, queueMicrotask(() => {
64
+ this.dispatchEvent(new r(this.tagName.toLowerCase(), this.isComplete(), this.#e !== void 0));
65
+ });
352
66
  }
353
- }, j = X(), M = k(j), N = (e) => {
354
- var t = q(), r = k(t), o = k(r), c = (e) => {
355
- var t = G();
356
- l(() => {
357
- f(t, "src", a().imageUrl), f(t, "alt", a().imageAlt || `Choice ${a().id}`);
358
- }), g(e, t);
359
- }, u = (e) => {
360
- var t = K();
361
- m(t, () => a().labelHtml || "", !0), i(t), g(e, t);
362
- };
363
- S(o, (e) => {
364
- s() === "image" && a().imageUrl ? e(c) : e(u, -1);
365
- }), i(r);
366
- var d = n(r, 2);
367
- v(d), i(t), l(() => {
368
- f(t, "for", `${D()}-opt-${a().id}`), f(d, "name", O()), f(d, "id", `${D()}-opt-${a().id}`), E(d, a().id), w(d, p()), d.disabled = h();
369
- }), g(e, t);
370
- }, P = (e) => {
371
- var t = ce(), r = u(t);
372
- v(r);
373
- var o = n(r, 2), c = k(o), d = (e) => {
374
- var t = J();
375
- l(() => {
376
- f(t, "src", a().imageUrl), f(t, "alt", a().imageAlt || `Choice ${a().id}`);
377
- }), g(e, t);
378
- }, _ = (e) => {
379
- var t = K();
380
- m(t, () => a().labelHtml || "", !0), i(t), g(e, t);
381
- };
382
- S(c, (e) => {
383
- s() === "image" && a().imageUrl ? e(d) : e(_, -1);
384
- }), i(o), l(() => {
385
- f(r, "name", O()), f(r, "id", `${D()}-opt-${a().id}`), E(r, a().id), w(r, p()), r.disabled = h(), f(o, "for", `${D()}-opt-${a().id}`);
386
- }), g(e, t);
387
- };
388
- S(M, (e) => {
389
- d() ? e(N) : e(P, -1);
390
- });
391
- var F = n(M, 2), I = (e) => {
392
- var t = Y(), n = r(t, !0);
393
- l(() => {
394
- x(t, 1, `pie-choice-feedback-badge ${b() === "correct" ? "pie-choice-feedback-correct" : "pie-choice-feedback-incorrect"}`, "svelte-8xu1pt"), _(n, b() === "correct" ? "✓" : "✕");
395
- }), g(e, t);
396
- };
397
- return S(F, (e) => {
398
- T() && b() && e(I);
399
- }), i(j), l(() => x(j, 1, `flex items-start choice-row pie-choice ${d() ? "choice-row-horizontal pie-choice-horizontal" : ""} ${p() ? "is-selected pie-choice-selected" : ""} ${b() ? `choice-${b()} pie-choice-${b()}` : ""}`, "svelte-8xu1pt")), g(e, j), o(A);
400
- }
401
- D(ue, {
402
- choice: {},
403
- choiceMode: {},
404
- isHorizontal: {},
405
- isSelected: {},
406
- isDisabled: {},
407
- correctness: {},
408
- isEvaluateMode: {},
409
- instanceId: {},
410
- radioGroupName: {}
411
- }, [], [], { mode: "open" });
412
- //#endregion
413
- //#region src/delivery/computeChoiceCorrectness.ts
414
- function de(e) {
415
- let t = /* @__PURE__ */ new Map(), { isEvaluateMode: n, correctChoiceId: r, selectedId: i, showCorrectAnswer: a } = e;
416
- return !n || !r ? t : a ? (t.set(r, "correct"), t) : i ? i === r ? (t.set(r, "correct"), t) : (t.set(i, "incorrect"), t.set(r, "incorrect"), t) : (t.set(r, "incorrect"), t);
417
- }
418
- //#endregion
419
- //#region src/delivery/computeLayoutProfile.ts
420
- var fe = "{{blank}}", pe = /* @__PURE__ */ new Set([
421
- "audio_blank_only",
422
- "stimulus_image_blank",
423
- "token_sequence"
424
- ]);
425
- function me(e) {
426
- let { interactionMode: t = "", template: n = "", choiceLayout: r, layoutProfile: i = "", hasAudio: a = !1, useFeatureButtonAudio: o } = e, s = t === "audio_mc_only", c = n ? n.replace(/<[^>]+>/g, "").replace(/&nbsp;/g, " ").trim() === fe : !1, l = r === "horizontal" || r === "vertical" ? r : s || c ? "horizontal" : "vertical";
427
- return {
428
- isAudioOnlyMode: s,
429
- isBlankOnlyTemplate: c,
430
- choiceLayout: l,
431
- isHorizontalChoices: l === "horizontal",
432
- hasInlineSentenceAudioLayout: i === "inline_sentence" && a,
433
- useFeatureButtonAudio: typeof o == "boolean" ? o : a && pe.has(i)
434
- };
435
- }
436
- //#endregion
437
- //#region src/delivery/computeLayoutStyle.ts
438
- var Z = {
439
- blankStandaloneWidthRem: {
440
- varName: "--mpb-blank-standalone-width",
441
- unit: "rem"
442
- },
443
- blankWideWidthRem: {
444
- varName: "--mpb-blank-wide-width",
445
- unit: "rem"
446
- },
447
- blankUnderlineWidthPx: {
448
- varName: "--mpb-blank-underline-width",
449
- unit: "px"
450
- },
451
- blankUnderlineWideWidthPx: {
452
- varName: "--mpb-blank-underline-wide-width",
453
- unit: "px"
454
- },
455
- horizontalChoiceWidthPx: {
456
- varName: "--mpb-choice-width-px",
457
- unit: "px"
458
- },
459
- horizontalChoiceWidthVw: {
460
- varName: "--mpb-choice-width-vw",
461
- unit: "vw"
462
- },
463
- horizontalChoiceTileMinHeightRem: {
464
- varName: "--mpb-choice-tile-min-height",
465
- unit: "rem"
466
- },
467
- horizontalChoiceContentMinHeightRem: {
468
- varName: "--mpb-choice-content-min-height",
469
- unit: "rem"
470
- },
471
- choiceImageMaxHeightRem: {
472
- varName: "--mpb-choice-image-max-height",
473
- unit: "rem"
474
- },
475
- choiceImageMaxWidthRem: {
476
- varName: "--mpb-choice-image-max-width",
477
- unit: "rem"
478
- },
479
- choiceGroupGapRem: {
480
- varName: "--mpb-choice-group-gap",
481
- unit: "rem"
482
- },
483
- choiceRowGapRem: {
484
- varName: "--mpb-choice-row-gap",
485
- unit: "rem"
486
- },
487
- horizontalChoiceRadioTopMarginRem: {
488
- varName: "--mpb-horizontal-choice-radio-top-margin",
489
- unit: "rem"
490
- },
491
- narrowHorizontalChoiceMaxWidthPx: {
492
- varName: "--mpb-narrow-choice-max-width",
493
- unit: "px"
494
- },
495
- toggleButtonGapRem: {
496
- varName: "--mpb-toggle-button-gap",
497
- unit: "rem"
498
- },
499
- listenButtonSizePx: {
500
- varName: "--mpb-listen-button-size",
501
- unit: "px"
502
- },
503
- audioBlankTemplateMarginTopRem: {
504
- varName: "--mpb-audio-blank-template-margin-top",
505
- unit: "rem"
506
- },
507
- audioBlankTemplateMarginBottomRem: {
508
- varName: "--mpb-audio-blank-template-margin-bottom",
509
- unit: "rem"
510
- },
511
- audioInstructionsMaxWidthPx: {
512
- varName: "--mpb-audio-instructions-max-width",
513
- unit: "px"
514
- },
515
- stimulusMinColumnPx: {
516
- varName: "--mpb-stimulus-min-column",
517
- unit: "px"
518
- },
519
- textMinColumnPx: {
520
- varName: "--mpb-text-min-column",
521
- unit: "px"
522
- },
523
- stimulusGridColumnGapRem: {
524
- varName: "--mpb-stimulus-grid-column-gap",
525
- unit: "rem"
526
- },
527
- stimulusGridRowGapRem: {
528
- varName: "--mpb-stimulus-grid-row-gap",
529
- unit: "rem"
530
- },
531
- stimulusSentenceMarginTopRem: {
532
- varName: "--mpb-stimulus-sentence-margin-top",
533
- unit: "rem"
534
- },
535
- stimulusChoicesMarginTopRem: {
536
- varName: "--mpb-stimulus-choices-margin-top",
537
- unit: "rem"
538
- },
539
- tokenGridColumnGapRem: {
540
- varName: "--mpb-token-grid-column-gap",
541
- unit: "rem"
542
- },
543
- tokenGridRowGapRem: {
544
- varName: "--mpb-token-grid-row-gap",
545
- unit: "rem"
546
- },
547
- tokenTemplateMarginTopRem: {
548
- varName: "--mpb-token-template-margin-top",
549
- unit: "rem"
550
- },
551
- tokenInlineTokenGapRem: {
552
- varName: "--mpb-token-inline-token-gap",
553
- unit: "rem"
554
- },
555
- tokenChoicesMarginTopRem: {
556
- varName: "--mpb-token-choices-margin-top",
557
- unit: "rem"
558
- },
559
- inlineGridColumnGapRem: {
560
- varName: "--mpb-inline-grid-column-gap",
561
- unit: "rem"
562
- },
563
- inlineGridRowGapRem: {
564
- varName: "--mpb-inline-grid-row-gap",
565
- unit: "rem"
566
- },
567
- inlineTemplateMarginTopRem: {
568
- varName: "--mpb-inline-template-margin-top",
569
- unit: "rem"
570
- },
571
- inlineChoicesMarginTopRem: {
572
- varName: "--mpb-inline-choices-margin-top",
573
- unit: "rem"
574
- }
575
- }, he = {
576
- audio_blank_only: {
577
- blankWideWidthRem: 10,
578
- blankUnderlineWideWidthPx: 6,
579
- horizontalChoiceTileMinHeightRem: 11.25,
580
- horizontalChoiceContentMinHeightRem: 9.375,
581
- choiceGroupGapRem: 1,
582
- audioBlankTemplateMarginBottomRem: 1.875
583
- },
584
- stimulus_image_blank: {
585
- blankWideWidthRem: 10,
586
- blankUnderlineWideWidthPx: 6
587
- },
588
- token_sequence: {
589
- blankStandaloneWidthRem: 7,
590
- blankUnderlineWideWidthPx: 6
591
- }
592
- };
593
- function ge(e) {
594
- let { layoutProfile: t, isBlankOnlyTemplate: n } = e, r = e.configuredLimits && typeof e.configuredLimits == "object" ? e.configuredLimits : {}, i = e.customProfilePresets && typeof e.customProfilePresets == "object" ? e.customProfilePresets : {}, a = i[t] && typeof i[t] == "object" ? i[t] : {}, o = {
595
- ...he[t] ?? {},
596
- ...a
597
- }, s = {
598
- ...M,
599
- ...r,
600
- ...o
601
- }, c = ["audio_blank_only", "stimulus_image_blank"], l = [
602
- "audio_blank_only",
603
- "stimulus_image_blank",
604
- "token_sequence"
605
- ], u = c.includes(t) ? `${s.blankWideWidthRem}rem` : n ? `${s.blankStandaloneWidthRem}rem` : "auto", d = l.includes(t) ? `${s.blankUnderlineWideWidthPx}px` : `${s.blankUnderlineWidthPx}px`;
606
- return {
607
- rootStyle: Object.keys(Z).map((e) => `${Z[e].varName}:${s[e]}${Z[e].unit}`).join(";"),
608
- blankWidth: u,
609
- blankBorderWidth: d,
610
- legendMaxChars: s.legendMaxChars
611
- };
612
- }
613
- //#endregion
614
- //#region src/delivery/computeDisplayState.ts
615
- var _e = {
616
- default: {
617
- silentUrl: "https://assets.learnosity.com/organisations/844/0c9f2aa3-3cd5-4de7-93ef-541c24ca35da.svg",
618
- playingUrl: "https://assets.learnosity.com/organisations/844/231dfdc2-c113-4be5-91fb-e75a0ca5994b.svg"
619
- },
620
- es: {
621
- silentUrl: "https://assets.learnosity.com/organisations/844/27a9d5b5-d873-4bd5-b9ba-22748782d8ba.svg",
622
- playingUrl: "https://assets.learnosity.com/organisations/844/120f216d-96b7-4560-94b8-1d90710216b7.svg"
623
- }
624
- };
625
- function ve(e) {
626
- let t = String(e.locale || "").toLowerCase(), n = t.slice(0, 2), r = e.audioButtonSkinsByLocale && typeof e.audioButtonSkinsByLocale == "object" ? e.audioButtonSkinsByLocale : {}, i = e.audioButtonSkin && typeof e.audioButtonSkin == "object" ? e.audioButtonSkin : null, a = t.startsWith("es") ? _e.es : _e.default;
627
- return r[t] || r[n] || r.default || i || a;
628
- }
629
- function ye(e) {
630
- let { selectedId: t, isEvaluateMode: n, showCorrectAnswer: r, alwaysShowCorrect: i, correctChoiceId: a } = e;
631
- return i && a || n && r && a ? a : t;
632
- }
633
- function be(e) {
634
- let { isEvaluateMode: t, showCorrectAnswer: n, isCorrect: r, isIncorrect: i, selectedId: a } = e;
635
- return !t || n ? "" : r ? "Correct answer selected" : i && a ? "Incorrect answer selected" : "";
636
- }
637
- function xe(e) {
638
- let { prompt: t, legendMaxChars: n, answerChoicesLabel: r } = e, i = t.replace(/<[^>]+>/g, " ").replace(/\s+/g, " ").trim(), a = Math.max(8, n);
639
- return i ? i.length > a ? `${i.slice(0, Math.max(1, a - 1))}…` : i : r;
640
- }
641
- //#endregion
642
- //#region src/delivery/cqt-css/sel-r1-base.css?raw
643
- var Se = "/* Shared base styles for all sel_r1-*_plusggg variants.\n Applied via the data-mpb-variant=\"sel-r1-base\" style element.\n Uses [class*=\"variant-sel-r1-\"] so it covers every r1 variant class.\n Source: web-ItemBankViewer/learnosity/templates/Renaissance/r1.scss */\n\n/* r1.scss: Starial font throughout.\n font-size 14px mirrors the Learnosity host root (.lrn_widget) which sets the\n base for all em-scaled rules in r1.scss (e.g. .rli-r1-content-element { 1.9em })\n and any em-based author content (e.g. <span style=\"font-size:1.8em\">). Without\n this base PIE inherits the 16px browser default and renders ~14% larger than\n the LSY reference. See CONTOOL-2567. */\n[class*=\"variant-sel-r1-\"] {\n font-family: Starial, Arial, sans-serif;\n font-size: 14px;\n}\n\n/* r1.scss: .rli-r1-audio-transcript { font-family:Roboto; font-size:16px } */\n[class*=\"variant-sel-r1-\"] .pie-audio-transcript {\n font-family: Roboto, Arial, sans-serif;\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n}\n\n/* r1.scss: .rli-r1-content-element { font-size: 1.9em } wraps all stem tokens.\n Makes inline font-size spans in the template multiply on top of this base. */\n[class*=\"variant-sel-r1-\"] .pie-template-line {\n font-size: 1.9em;\n}\n\n/* r1.scss: .rli-r1-stem { display:flex; flex-direction:row; justify-content:center }\n r1.scss: .rli-r1-content-element { margin-right:2px; margin-left:2px } — 4px total gap.\n Apply the per-element margin to both classless tokens and the blank slot\n (which is the cloze equivalent) so the gap stacks with whitespace text-nodes\n between flex items the same way LSY does. Earlier this used column-gap:4px,\n but flex column-gap accumulates with the cloze-side mx-1 and the implicit\n whitespace, producing a wider gap than LSY shows. See CONTOOL-2569. */\n[class*=\"variant-sel-r1-\"] .pie-template-line {\n display: flex;\n flex-direction: row;\n align-items: baseline;\n justify-content: center;\n}\n\n[class*=\"variant-sel-r1-\"] .pie-template-line p {\n margin: 0;\n display: flex;\n flex-direction: row;\n align-items: baseline;\n}\n\n/* r1.scss: .rli-r1-content-element { min-width:150px; max-width:150px; min-height:150px;\n line-height:89px; margin-right:2px; margin-left:2px } — wraps every stem token\n (blank slot and adjacent inline spans) in LSY, giving each a 150px box with a\n 2px per-side margin. Apply to inline tokens in all r1 variants so trailing\n tokens in audio_blank_only (gplusggg) match the blank's height the way LSY does. */\n[class*=\"variant-sel-r1-\"] .pie-template-line span:not([class]) {\n min-width: 150px;\n max-width: 150px;\n min-height: 150px;\n line-height: 89px;\n margin-left: 2px;\n margin-right: 2px;\n}\n\n/* .pie-template-line's align-items:baseline (above) computes a shared baseline\n across all its flex items. .pie-blank-slot has no baseline-participating child\n of its own (.cloze-marker centers internally, align-items:center) — so it\n contributes a *synthesized* baseline back to the row, based on its own box\n geometry. That geometry swings wildly depending on the blank's content: an\n empty placeholder vs. a selected choice's image (up to 150x150). Every time a\n choice is selected the row's shared baseline is recomputed from that new\n geometry, visibly shifting sibling tokens like a leading/trailing stem word.\n align-self removes the blank from that shared computation entirely — its\n siblings' position no longer depends on what's currently displayed inside it.\n See CONTOOL-3159. */\n[class*=\"variant-sel-r1-\"] .pie-template-line .pie-blank-slot {\n align-self: flex-end;\n}\n\n/* In token_sequence layouts the blank itself is also a content-element box (no\n surrounding .rli-r1-cloze container at 160px). audio_blank_only / stimulus_image_blank\n keep their own 160px min-height set on the blank slot in McPopulatedBlank.svelte to\n mirror LSY's .rli-r1-cloze height. The 2px per-side margin matches LSY's\n .rli-r1-content-element pattern (overriding the default Tailwind mx-1).\n .pie-blank-slot is box-sizing:border-box with a permanent 6px border-bottom\n (the underline) — min-height:150px therefore only leaves 144px for content,\n so an empty blank (content ~0px, clamped to the 150px floor) and a blank\n showing a 150px choice image (150 + 6 border = 156px, exceeding the floor)\n render at two different total heights. Since .pie-blank-slot is bottom-anchored\n in its row (align-self:flex-end above), that 6px height difference shows up as\n a visible shift of the blank/image every time a choice is selected or cleared.\n min-height:156px keeps the total box height constant regardless of content, so\n the 150px is fully available to the image/text and the border no longer\n competes with it. See CONTOOL-3159. */\n[class*=\"variant-sel-r1-\"].layout-token_sequence .pie-template-line .pie-blank-slot {\n min-width: 150px;\n max-width: 150px;\n min-height: 156px;\n line-height: 89px;\n margin-left: 2px;\n margin-right: 2px;\n}\n\n/* audio_blank_only / stimulus_image_blank keep the 160px wide blank slot, but\n still need the 2px per-side margin so the gap to the trailing token mirrors\n LSY's .rli-r1-content-element rhythm. Without this, Tailwind's mx-1 (4px)\n would dominate and the cloze→token gap diverges from LSY. See CONTOOL-2569. */\n[class*=\"variant-sel-r1-\"].layout-audio_blank_only .pie-template-line .pie-blank-slot,\n[class*=\"variant-sel-r1-\"].layout-stimulus_image_blank .pie-template-line .pie-blank-slot {\n margin-left: 2px;\n margin-right: 2px;\n}\n\n/* The `.pie-template-line span:not([class])` rule above has no depth limit, so it\n also matches the unclassed answer <span> ClozeMarker.svelte renders inside\n .pie-blank-value once a choice is selected (e.g. author font-size overrides like\n <span style=\"font-size:3em\">). For token_sequence that coincides with the blank\n slot's own 150px/89px box above, so outer and inner agree. audio_blank_only /\n stimulus_image_blank instead keep .pie-blank-slot at LSY's separate, taller\n .rli-r1-cloze box (160px) — forcing the answer span into the stem token's\n 150px/89px box there is wrong: a plain (non-flex) span whose min-height exceeds\n its line-height renders that line top-anchored, pinning the answer text to the\n top of the blank with the rest of the box empty beneath it, instead of centered\n on the underline the way LSY renders it. See CONTOOL-3159. */\n[class*=\"variant-sel-r1-\"].layout-audio_blank_only .pie-blank-value span:not([class]),\n[class*=\"variant-sel-r1-\"].layout-stimulus_image_blank .pie-blank-value span:not([class]) {\n min-width: 0;\n max-width: none;\n min-height: 0;\n line-height: normal;\n margin-left: 0;\n margin-right: 0;\n}\n\n/* r1.scss: .rli-r1-content-element { font-size:1.9em; line-height:89px } on distractors */\n[class*=\"variant-sel-r1-\"] .pie-choice-label {\n font-size: 1.9em;\n line-height: 89px;\n}\n\n/* r1.scss: .rli-r1-content-element { min-width:150px; max-width:150px;\n min-height:150px } wraps every image (stem token + distractor) and forces\n the content box to 150×150. LSY's host also rewrites <img width/height>\n to 150 server-side. PIE keeps the authored attributes (typically 108×108),\n so without an explicit override images render ~28% smaller than LSY.\n See CONTOOL-2570. */\n[class*=\"variant-sel-r1-\"] .pie-template-line img,\n[class*=\"variant-sel-r1-\"] .pie-choice-label img {\n width: 150px;\n height: 150px;\n}\n", Ce = {
644
- "sel_r1-_plusggg": {
645
- variantId: "sel-r1-plusggg",
646
- variantClass: "variant-sel-r1-plusggg",
647
- sourceUrl: "https://global-pr-ibvcustomfiles.renaissance-go.com/learnosity/sel_r1-_plusggg/0.0.1/question.css",
648
- cssText: "/* Source baseline: https://global-pr-ibvcustomfiles.renaissance-go.com/learnosity/sel_r1-_plusggg/0.0.1/question.css */\n/* Shared r1 base styles (font, template-line flex, choice-label) are in sel-r1-base.css */\n.mc-populated-blank-root.variant-sel-r1-plusggg {\n max-width: 875px;\n margin-inline: auto;\n --mpb-listen-button-size: 128px;\n --mpb-choice-width-px: 155px;\n --mpb-choice-tile-min-height: 11.25rem;\n --mpb-choice-content-min-height: 9.375rem;\n --mpb-choice-group-gap: 1rem;\n --mpb-choice-hover-bg: #f2f2f2;\n --mpb-choice-selected-bg: #fcfcd3;\n}\n\n.mc-populated-blank-root.variant-sel-r1-plusggg {\n --mpb-choice-radio-padding: 20px;\n}\n"
649
- },
650
- "sr-vic": {
651
- variantId: "sr-vic",
652
- variantClass: "variant-sr-vic",
653
- sourceUrl: "https://global-pr-ibvcustomfiles.renaissance-go.com/learnosity/sr-vic/0.0.1/question.css",
654
- cssText: "/* Source baseline: https://global-pr-ibvcustomfiles.renaissance-go.com/learnosity/sr-vic/0.0.1/question.css */\n/* Reference layout: web-ItemBankViewer/learnosity/templates/Renaissance/vic.scss */\n.mc-populated-blank-root.variant-sr-vic {\n font-family: Starial, Arial, sans-serif;\n --mpb-inline-grid-column-gap: 1rem;\n --mpb-inline-grid-row-gap: 0.5rem;\n --mpb-inline-template-margin-top: 0.2rem;\n --mpb-inline-choices-margin-top: 0.2rem;\n}\n\n.mc-populated-blank-root.variant-sr-vic .pie-template-line,\n.mc-populated-blank-root.variant-sr-vic .pie-blank-value,\n.mc-populated-blank-root.variant-sr-vic .pie-choice-label {\n line-height: 123%;\n}\n\n/* vic.scss: .rli-vic-answer uses display:flex so sentence and cloze stay on\n one line. The template HTML wraps text in <p>, which is block by default and\n breaks to a new line. Making <p> inline keeps the sentence and blank inline. */\n.mc-populated-blank-root.variant-sr-vic .pie-template-line p {\n display: inline;\n margin: 0;\n}\n\n/* LSY .rli-vic-answer has no text-align rule and inherits start; PIE's\n inline_sentence layout sets text-align:center on .template-line via a\n Svelte-scoped selector with specificity (0,4,0), so we need to match or\n exceed that. Pin sr-vic back to start so wrapped lines stay left-aligned.\n Same root cause as sel-vic. See CONTOOL-2573. */\n.mc-populated-blank-root.variant-sr-vic.layout-inline_sentence .pie-template-line.template-line {\n text-align: start;\n}\n\n/* vic.scss: .rli-vic-cloze > .rli-vic-content-element { color: #cc3333 } */\n.mc-populated-blank-root.variant-sr-vic .pie-blank-value {\n color: #cc3333;\n}\n\n/* vic.scss: .rli-vic-selected { background-color: #fcfcd3 } applied to the\n whole distractor row (radio + label), not just the label wrapper. */\n.mc-populated-blank-root.variant-sr-vic .pie-choice.is-selected {\n background-color: #fcfcd3;\n border-radius: 6px;\n}\n\n.mc-populated-blank-root.variant-sr-vic .pie-choice.is-selected .pie-choice-label-wrap {\n background-color: transparent;\n}\n\n/* vic.scss: distractor label text sits to the right of the radio — no centering. */\n.mc-populated-blank-root.variant-sr-vic .pie-choice-label {\n text-align: left;\n justify-content: flex-start;\n}\n\n/* vic.scss: .rli-vic-distractor:hover { background-color: #F2F2F2 } applied to\n the full row element, not only the inner label wrapper. */\n.mc-populated-blank-root.variant-sr-vic .pie-choice:not(.pie-choice-horizontal):hover {\n background-color: #f2f2f2;\n border-radius: 6px;\n}\n\n.mc-populated-blank-root.variant-sr-vic\n .pie-choice:not(.pie-choice-horizontal):hover\n .pie-choice-label-wrap {\n background-color: transparent;\n}\n\n/* Selected state must win over hover — yellow persists when hovering a chosen row. */\n.mc-populated-blank-root.variant-sr-vic .pie-choice:not(.pie-choice-horizontal).is-selected:hover {\n background-color: #fcfcd3;\n}\n"
655
- },
656
- sel_vic: {
657
- variantId: "sel-vic",
658
- variantClass: "variant-sel-vic",
659
- sourceUrl: "https://global-pr-ibvcustomfiles.renaissance-go.com/learnosity/sel_vic/0.0.1/question.css",
660
- cssText: "/* Source baseline: https://global-pr-ibvcustomfiles.renaissance-go.com/learnosity/sel_vic/0.0.1/question.css */\n/* Reference layout: web-ItemBankViewer/learnosity/templates/Renaissance/sel_vic/scss/main.scss + vic.scss */\n.mc-populated-blank-root.variant-sel-vic {\n font-family: Starial, Arial, sans-serif;\n /* LSY chain: .lrn_widget (14px host) → .sel-vic { 1.5em } = 21px.\n PIE collapses both LSY layers into this single variant-root selector, so\n the resolved value is set directly. See CONTOOL-2567. */\n font-size: 21px;\n max-width: 800px;\n margin-inline: auto;\n --mpb-inline-grid-column-gap: 1rem;\n --mpb-inline-grid-row-gap: 0.5rem;\n --mpb-inline-template-margin-top: 0.2rem;\n --mpb-inline-choices-margin-top: 0.2rem;\n}\n\n.mc-populated-blank-root.variant-sel-vic .pie-audio-transcript {\n font-family: Roboto, Arial, sans-serif;\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n}\n\n.mc-populated-blank-root.variant-sel-vic .pie-template-line,\n.mc-populated-blank-root.variant-sel-vic .pie-blank-value,\n.mc-populated-blank-root.variant-sel-vic .pie-choice-label {\n line-height: 123%;\n}\n\n/* sel_vic/main.scss: template left ~75%, audio right ~25% on the same row.\n Svelte scoping prevents the component-internal grid-area rule from reaching\n .audio-container inside AudioPlayer, so we override it here via the global\n .pie-audio-container class which is not subject to scope hashing. */\n.mc-populated-blank-root.variant-sel-vic .pie-audio-container {\n grid-area: audio;\n margin: 0;\n justify-self: end;\n align-self: start;\n min-height: 128px;\n}\n\n/* vic.scss: sentence and cloze sit inline — the <p> wrapper must not break to\n a new line before the blank slot. */\n.mc-populated-blank-root.variant-sel-vic .pie-template-line p {\n display: inline;\n margin: 0;\n}\n\n/* LSY .rli-vic-answer has no text-align rule and inherits start; PIE's\n inline_sentence layout sets text-align:center on .template-line via a\n Svelte-scoped selector with specificity (0,4,0), so we need to match or\n exceed that. Pin sel-vic back to start so wrapped lines stay left-aligned.\n See CONTOOL-2573. */\n.mc-populated-blank-root.variant-sel-vic.layout-inline_sentence .pie-template-line.template-line {\n text-align: start;\n}\n\n/* vic.scss: .rli-vic-cloze { margin-left: 6px; margin-right: 6px } gives the\n cloze breathing room from adjacent text or punctuation. The PIE markup uses\n Tailwind-style mx-1 in the class list, but mc-populated-blank does not\n compile Tailwind, so that class is a no-op. Set the inline margin\n explicitly so the cloze→trailing-punctuation gap matches LSY. See\n CONTOOL-2572. */\n.mc-populated-blank-root.variant-sel-vic .pie-template-line .pie-blank-slot {\n margin-left: 6px;\n margin-right: 6px;\n}\n\n/* vic.scss: .rli-vic-cloze > .rli-vic-content-element { color: #cc3333 } */\n.mc-populated-blank-root.variant-sel-vic .pie-blank-value {\n color: #cc3333;\n}\n\n/* sel_vic/main.scss: .sel-vic { max-width: 800px } — the fieldset/choices must\n also be constrained so rows don't span beyond 800px. */\n.mc-populated-blank-root.variant-sel-vic .pie-choices-fieldset {\n max-width: 800px;\n width: 100%;\n}\n\n/* vic.scss: distractor label text sits to the right of the radio — no centering. */\n.mc-populated-blank-root.variant-sel-vic .pie-choice-label {\n text-align: left;\n justify-content: flex-start;\n}\n\n/* vic.scss: .rli-vic-selected { background-color: #fcfcd3 } on the full row. */\n.mc-populated-blank-root.variant-sel-vic .pie-choice.is-selected {\n background-color: #fcfcd3;\n border-radius: 6px;\n}\n\n.mc-populated-blank-root.variant-sel-vic .pie-choice.is-selected .pie-choice-label-wrap {\n background-color: transparent;\n}\n\n/* Selected state must win over hover. */\n.mc-populated-blank-root.variant-sel-vic .pie-choice:not(.pie-choice-horizontal).is-selected:hover {\n background-color: #fcfcd3;\n}\n\n/* vic.scss: .rli-vic-distractor:hover { background-color: #F2F2F2 } on the full row. */\n.mc-populated-blank-root.variant-sel-vic .pie-choice:not(.pie-choice-horizontal):hover {\n background-color: #f2f2f2;\n border-radius: 6px;\n}\n\n.mc-populated-blank-root.variant-sel-vic\n .pie-choice:not(.pie-choice-horizontal):hover\n .pie-choice-label-wrap {\n background-color: transparent;\n}\n\n@media (min-width: 620px) {\n .mc-populated-blank-root.variant-sel-vic .pie-audio-transcript {\n min-width: 620px;\n max-width: 800px;\n transform: translateX(-55px);\n }\n}\n"
661
- },
662
- "sel_r1-_gplusggg": {
663
- variantId: "sel-r1-gplusggg",
664
- variantClass: "variant-sel-r1-gplusggg",
665
- sourceUrl: "https://global-pr-ibvcustomfiles.renaissance-go.com/learnosity/sel_r1-_gplusggg/0.0.1/question.css",
666
- cssText: "/* Source baseline: https://global-pr-ibvcustomfiles.renaissance-go.com/learnosity/sel_r1-_gplusggg/0.0.1/question.css */\n/* Shared r1 base styles (font, template-line flex, choice-label) are in sel-r1-base.css */\n.mc-populated-blank-root.variant-sel-r1-gplusggg {\n max-width: 875px;\n margin-inline: auto;\n --mpb-listen-button-size: 128px;\n --mpb-choice-width-px: 155px;\n --mpb-choice-tile-min-height: 11.25rem;\n --mpb-choice-content-min-height: 9.375rem;\n --mpb-choice-group-gap: 1rem;\n --mpb-choice-hover-bg: #f2f2f2;\n --mpb-choice-selected-bg: #fcfcd3;\n}\n\n/* r1.scss: .rli-r1-content-element boxes all have fixed line-height:89px, so every\n token in the stem row shares a stable baseline regardless of content. In PIE,\n the blank slot's baseline shifts when the empty placeholder (short &nbsp;) is\n replaced by the filled value span (full text height), dragging adjacent tokens\n down by ~9px. Switching to align-items:center is safe here because gplusggg has\n only one row of content (blank + \"four\"), so vertical centering and baseline\n alignment produce the same visual result. The :is() wrapper raises specificity\n above the base [class*=] rule without needing !important. */\n:is(.mc-populated-blank-root.variant-sel-r1-gplusggg) .pie-template-line {\n align-items: center;\n}\n"
667
- },
668
- "sel_r1-g_plusggg": {
669
- variantId: "sel-r1-g-stem",
670
- variantClass: "variant-sel-r1-g-stem",
671
- sourceUrl: "https://global-pr-ibvcustomfiles.renaissance-go.com/learnosity/sel_r1-g_plusggg/0.0.1/question.css",
672
- cssText: "/* Source baseline: https://global-pr-ibvcustomfiles.renaissance-go.com/learnosity/sel_r1-g_plusggg/0.0.1/question.css */\n/* Shared r1 base styles (font, template-line flex, choice-label) are in sel-r1-base.css */\n.mc-populated-blank-root.variant-sel-r1-g-stem {\n max-width: 875px;\n margin-inline: auto;\n --mpb-listen-button-size: 128px;\n --mpb-choice-width-px: 155px;\n --mpb-choice-tile-min-height: 11.25rem;\n --mpb-choice-content-min-height: 9.375rem;\n --mpb-choice-hover-bg: #f2f2f2;\n --mpb-choice-selected-bg: #fcfcd3;\n /* r1.scss: .rli-r1-cloze { border-bottom: 6px solid } */\n --mpb-blank-underline-wide-width: 6px;\n}\n"
673
- },
674
- "sel_r1-gg_plusggg": {
675
- variantId: "sel-r1-gg-plus",
676
- variantClass: "variant-sel-r1-gg-plus",
677
- sourceUrl: "https://global-pr-ibvcustomfiles.renaissance-go.com/learnosity/sel_r1-gg_plusggg/0.0.1/question.css",
678
- cssText: "/* Source baseline: https://global-pr-ibvcustomfiles.renaissance-go.com/learnosity/sel_r1-gg_plusggg/0.0.1/question.css */\n/* Shared r1 base styles (font, template-line flex, choice-label) are in sel-r1-base.css */\n.mc-populated-blank-root.variant-sel-r1-gg-plus {\n max-width: 875px;\n margin-inline: auto;\n --mpb-listen-button-size: 128px;\n --mpb-choice-width-px: 155px;\n --mpb-choice-tile-min-height: 11.25rem;\n --mpb-choice-content-min-height: 9.375rem;\n --mpb-choice-hover-bg: #f2f2f2;\n --mpb-choice-selected-bg: #fcfcd3;\n}\n"
679
- },
680
- "sel_r1-_ggplusggg": {
681
- variantId: "sel-r1-ggplus",
682
- variantClass: "variant-sel-r1-ggplus",
683
- sourceUrl: "https://global-pr-ibvcustomfiles.renaissance-go.com/learnosity/sel_r1-_ggplusggg/0.0.1/question.css",
684
- cssText: "/* Source baseline: https://global-pr-ibvcustomfiles.renaissance-go.com/learnosity/sel_r1-_ggplusggg/0.0.1/question.css */\n/* Shared r1 base styles (font, template-line flex, choice-label) are in sel-r1-base.css */\n.mc-populated-blank-root.variant-sel-r1-ggplus {\n max-width: 875px;\n margin-inline: auto;\n --mpb-listen-button-size: 128px;\n --mpb-choice-width-px: 155px;\n --mpb-choice-tile-min-height: 11.25rem;\n --mpb-choice-content-min-height: 9.375rem;\n --mpb-choice-hover-bg: #f2f2f2;\n --mpb-choice-selected-bg: #fcfcd3;\n}\n"
685
- },
686
- "sel_r1-s3_plusggg": {
687
- variantId: "sel-r1-s3",
688
- variantClass: "variant-sel-r1-s3",
689
- sourceUrl: "https://global-pr-ibvcustomfiles.renaissance-go.com/learnosity/sel_r1-s3_plusggg/0.0.1/question.css",
690
- cssText: "/* Source baseline: https://global-pr-ibvcustomfiles.renaissance-go.com/learnosity/sel_r1-s3_plusggg/0.0.1/question.css */\n/* Shared r1 base styles (font, template-line flex, choice-label) are in sel-r1-base.css */\n.mc-populated-blank-root.variant-sel-r1-s3 {\n max-width: 860px;\n margin-inline: auto;\n --mpb-listen-button-size: 128px;\n --mpb-choice-width-px: 155px;\n --mpb-choice-tile-min-height: 11.25rem;\n --mpb-choice-content-min-height: 9.375rem;\n --mpb-choice-group-gap: 0.35rem;\n --mpb-choice-row-gap: 0.35rem;\n --mpb-horizontal-choice-radio-top-margin: 0.25rem;\n --mpb-stimulus-min-column: 240px;\n --mpb-stimulus-grid-column-gap: 1.1rem;\n --mpb-stimulus-choices-margin-top: 0.85rem;\n --mpb-audio-blank-template-margin-bottom: 0.9rem;\n --mpb-blank-wide-width: 6.8rem;\n}\n\n/* sel_r1-s3_plusggg/question.css does not set font-weight on distractors or\n cloze content-element, so they inherit 400 from the host root. The earlier\n font-weight:500 override caused PIE to render visibly heavier than LSY for\n the same author content. See CONTOOL-2571. */\n.mc-populated-blank-root.variant-sel-r1-s3 .pie-choice-label,\n.mc-populated-blank-root.variant-sel-r1-s3 .pie-choice-label :is(span, p, div) {\n font-size: 1.9em;\n line-height: 89px;\n}\n\n.mc-populated-blank-root.variant-sel-r1-s3 .pie-blank-value,\n.mc-populated-blank-root.variant-sel-r1-s3 .pie-blank-value :is(span, p, div) {\n line-height: 1.1;\n white-space: nowrap;\n}\n\n.mc-populated-blank-root.variant-sel-r1-s3 .pie-choice-horizontal .pie-choice-tile {\n border-radius: 6px;\n background: #f1f1f1;\n}\n\n.mc-populated-blank-root.variant-sel-r1-s3.layout-stimulus_image_blank {\n grid-template-columns: minmax(220px, auto) auto auto;\n grid-template-areas:\n \"transcript transcript transcript\"\n \"sentence template audio\"\n \"choices choices choices\";\n justify-content: center;\n /* question.css: .rli-s3-cloze-container { justify-content:end } bottom-anchors\n the cloze against the shared sentence/audio row instead of top-aligning it —\n matches every item sitting on the same visual baseline. See CONTOOL-3159. */\n align-items: end;\n}\n\n.mc-populated-blank-root.variant-sel-r1-s3.layout-stimulus_image_blank .pie-template-line {\n grid-area: template;\n justify-self: center;\n}\n\n/* ClozeMarker.svelte's shared .cloze-marker rule vertically *centers* its content\n (align-items:center). question.css's .rli-s3-cloze-container uses\n justify-content:end instead, bottom-anchoring the answer text against the\n underline. Centering leaves it floating well above both the underline and the\n sentence image's own (bottom-anchored) baseline. The blank's own box height\n (160px, from McPopulatedBlank.svelte's shared audio_blank_only/stimulus_image_blank\n rule) is left as-is — it already matches the Learnosity reference (~161px)\n closely; only the internal alignment was wrong. See CONTOOL-3159. */\n.mc-populated-blank-root.variant-sel-r1-s3.layout-stimulus_image_blank .pie-blank-slot {\n align-items: flex-end;\n}\n\n.mc-populated-blank-root.variant-sel-r1-s3.layout-stimulus_image_blank .pie-sentence-line {\n justify-self: end;\n}\n\n.mc-populated-blank-root.variant-sel-r1-s3.layout-stimulus_image_blank .pie-audio-container {\n justify-self: start;\n align-self: start;\n}\n\n.mc-populated-blank-root.variant-sel-r1-s3.layout-stimulus_image_blank .pie-choices-fieldset {\n justify-self: center;\n width: fit-content;\n}\n\n.mc-populated-blank-root.variant-sel-r1-s3 .pie-sentence-line img {\n max-width: 100%;\n height: auto;\n}\n\n.mc-populated-blank-root.variant-sel-r1-s3 .pie-choice-horizontal:hover .pie-choice-tile {\n background: #e2e2e2;\n}\n\n.mc-populated-blank-root.variant-sel-r1-s3 .pie-choice-horizontal.is-selected .pie-choice-tile,\n.mc-populated-blank-root.variant-sel-r1-s3\n .pie-choice-horizontal.is-selected:hover\n .pie-choice-tile {\n background: #fcfcd3;\n}\n\n.mc-populated-blank-root.variant-sel-r1-s3 .pie-choice-horizontal .pie-choice-radio {\n transform: scale(0.85);\n}\n"
691
- }
692
- }, we = (e) => String(e || "").trim().toLowerCase().replace(/v\d+\.\d+\.\d+$/i, ""), Te = (e) => Ce[we(e)], Ee = (e) => Te(e)?.variantClass || "", De = /* @__PURE__ */ new Set([
693
- "sel-r1-plusggg",
694
- "sel-r1-gplusggg",
695
- "sel-r1-g-stem",
696
- "sel-r1-gg-plus",
697
- "sel-r1-ggplus",
698
- "sel-r1-s3"
699
- ]), Oe = (e, t, n) => {
700
- let r = document.getElementById(e);
701
- if (r) {
702
- r.textContent !== n && (r.textContent = n);
703
- return;
704
- }
705
- let i = document.createElement("style");
706
- i.id = e, i.setAttribute("data-mpb-variant", t), i.textContent = n, document.head.appendChild(i);
707
- }, ke = (e) => {
708
- !e?.cssText || typeof document > "u" || (De.has(e.variantId) && Oe("mc-populated-blank-css-sel-r1-base", "sel-r1-base", Se), Oe(`mc-populated-blank-css-${e.variantId}`, e.variantId, e.cssText));
709
- }, Ae = O("<div class=\"mb-4 prose pie-prompt\"></div>"), je = j("<svg class=\"pie-correct-answer-toggle-svg svelte-6wlbb4\" preserveAspectRatio=\"xMinYMin meet\" version=\"1.1\" viewBox=\"-283 359 34 35\"><circle cx=\"-266\" cy=\"375.9\" r=\"14\" fill=\"var(--pie-tertiary-light, #d0e2f0)\"></circle><path d=\"M-280.5,375.9c0-8,6.5-14.5,14.5-14.5s14.5,6.5,14.5,14.5s-6.5,14.5-14.5,14.5S-280.5,383.9-280.5,375.9z M-279.5,375.9c0,7.4,6.1,13.5,13.5,13.5c7.4,0,13.5-6.1,13.5-13.5s-6.1-13.5-13.5-13.5C-273.4,362.4-279.5,368.5-279.5,375.9z\" fill=\"var(--pie-tertiary-light, #d0e2f0)\"></path><polygon points=\"-265.4,383.1 -258.6,377.2 -261.2,374.2 -264.3,376.9 -268.9,368.7 -272.4,370.6\" fill=\"var(--pie-tertiary, #146eb3)\"></polygon></svg>"), Me = j("<svg class=\"pie-correct-answer-toggle-svg svelte-6wlbb4\" preserveAspectRatio=\"xMinYMin meet\" version=\"1.1\" viewBox=\"-129.5 127 34 35\"><path d=\"M-112.9,160.4c-8.5,0-15.5-6.9-15.5-15.5c0-8.5,6.9-15.5,15.5-15.5s15.5,6.9,15.5,15.5 C-97.4,153.5-104.3,160.4-112.9,160.4z\" fill=\"#D0CAC5\" stroke=\"#E6E3E0\" stroke-width=\"0.75\"></path><path d=\"M-113.2,159c-8,0-14.5-6.5-14.5-14.5s6.5-14.5,14.5-14.5s14.5,6.5,14.5,14.5S-105.2,159-113.2,159z\" fill=\"#B3ABA4\" stroke=\"#CDC7C2\" stroke-width=\"0.5\"></path><circle cx=\"-114.2\" cy=\"143.5\" r=\"14\" fill=\"white\"></circle><path d=\"M-114.2,158c-8,0-14.5-6.5-14.5-14.5s6.5-14.5,14.5-14.5s14.5,6.5,14.5,14.5S-106.2,158-114.2,158z M-114.2,130c-7.4,0-13.5,6.1-13.5,13.5s6.1,13.5,13.5,13.5s13.5-6.1,13.5-13.5S-106.8,130-114.2,130z\" fill=\"var(--pie-background-dark, #ecedf1)\"></path><polygon points=\"-114.8,150.7 -121.6,144.8 -119,141.8 -115.9,144.5 -111.3,136.3 -107.8,138.2\" fill=\"var(--pie-tertiary, #146eb3)\"></polygon></svg>"), Ne = O("<div class=\"pie-correct-answer-toggle-row svelte-6wlbb4\"><button type=\"button\" class=\"mb-3 pie-toggle-correct-answer svelte-6wlbb4\" style=\"gap:var(--mpb-toggle-button-gap, 0.5rem);\" data-testid=\"show-correct-answer\"><span class=\"pie-correct-answer-toggle-content svelte-6wlbb4\"><span class=\"pie-correct-answer-toggle-icon-holder svelte-6wlbb4\" aria-hidden=\"true\"><!></span> <span class=\"pie-correct-answer-toggle-label svelte-6wlbb4\"> </span></span></button></div>"), Pe = O("<div class=\"mb-3 prose prose-p:my-1 sentence-line pie-sentence-line svelte-6wlbb4\"></div>"), Fe = O("<div class=\"mb-4 template-line pie-template-line svelte-6wlbb4\"><!><!><!></div>"), Ie = O("<p class=\"sr-only pie-result-feedback svelte-6wlbb4\" role=\"status\" aria-live=\"polite\"> </p>"), Le = O("<div><!> <!> <!> <!> <!> <!> <p class=\"sr-only pie-blank-hint svelte-6wlbb4\"> </p> <fieldset class=\"border-0 p-0 m-0 pie-choices-fieldset svelte-6wlbb4\"><legend class=\"sr-only pie-choices-legend svelte-6wlbb4\"> </legend> <div style=\"gap:var(--mpb-choice-group-gap, 0.5rem);\" role=\"radiogroup\" tabindex=\"-1\"></div></fieldset></div>"), Re = {
710
- hash: "svelte-6wlbb4",
711
- code: ".sr-only.svelte-6wlbb4 {position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;}.mc-populated-blank-root.svelte-6wlbb4 {--mpb-focus-ring: var(\n --pie-focus-outline,\n var(--pie-button-focus-outline, var(--pie-focus-checked-border, #1565c0))\n );}.mc-populated-blank-root.svelte-6wlbb4 .prose {max-width:none;}.pie-toggle-correct-answer.svelte-6wlbb4 {width:100%;cursor:pointer;border:0;background:transparent;padding:0;display:flex;justify-content:center;text-align:center;color:var(--pie-text, black);}.pie-correct-answer-toggle-row.svelte-6wlbb4 {width:100%;display:flex;justify-content:flex-end;}.pie-correct-answer-toggle-content.svelte-6wlbb4 {display:flex;margin:0 auto;align-items:center;}.pie-correct-answer-toggle-icon-holder.svelte-6wlbb4 {width:25px;margin-right:5px;display:inline-flex;align-items:center;justify-content:center;}.pie-correct-answer-toggle-svg.svelte-6wlbb4 {width:25px;height:25px;}.pie-correct-answer-toggle-label.svelte-6wlbb4 {width:fit-content;min-width:140px;align-self:center;vertical-align:middle;font-weight:400;user-select:none;}.pie-toggle-correct-answer.svelte-6wlbb4:hover .pie-correct-answer-toggle-label:where(.svelte-6wlbb4),\n .pie-toggle-correct-answer.svelte-6wlbb4:focus-visible .pie-correct-answer-toggle-label:where(.svelte-6wlbb4) {text-decoration:underline;}.template-line.svelte-6wlbb4 {white-space:pre-wrap;}.template-line.svelte-6wlbb4 p {margin:0;display:inline;}.layout-audio_blank_only.svelte-6wlbb4 .pie-audio-container,\n .layout-stimulus_image_blank.svelte-6wlbb4 .pie-audio-container {display:flex;width:min(100%, var(--mpb-audio-instructions-max-width, 875px));margin-left:auto;margin-right:auto;justify-content:flex-end;}.layout-audio_blank_only.svelte-6wlbb4 .template-line:where(.svelte-6wlbb4),\n .layout-stimulus_image_blank.svelte-6wlbb4 .template-line:where(.svelte-6wlbb4) {text-align:center;margin:var(--mpb-audio-blank-template-margin-top, 0.8rem) 0\n var(--mpb-audio-blank-template-margin-bottom, 1.8rem);}.layout-audio_blank_only.svelte-6wlbb4 fieldset:where(.svelte-6wlbb4) {display:flex;justify-content:center;}.layout-audio_blank_only.svelte-6wlbb4 .pie-blank-slot,\n .layout-stimulus_image_blank.svelte-6wlbb4 .pie-blank-slot {width:var(--mpb-blank-wide-width, 10rem);border-bottom-width:var(--mpb-blank-underline-wide-width, 6px);min-height:160px;padding-bottom:4px;}.layout-stimulus_image_blank.svelte-6wlbb4 {display:grid;grid-template-columns:minmax(var(--mpb-stimulus-min-column, 210px), 1fr) auto;grid-template-areas:'sentence audio'\n '. template'\n 'choices choices';column-gap:var(--mpb-stimulus-grid-column-gap, 2rem);row-gap:var(--mpb-stimulus-grid-row-gap, 0.7rem);align-items:start;}.layout-stimulus_image_blank.svelte-6wlbb4 .pie-audio-container {grid-area:audio;margin:0;}.layout-stimulus_image_blank.svelte-6wlbb4 .sentence-line:where(.svelte-6wlbb4) {grid-area:sentence;margin:var(--mpb-stimulus-sentence-margin-top, 0.2rem) 0 0;}.layout-stimulus_image_blank.svelte-6wlbb4 .template-line:where(.svelte-6wlbb4) {grid-area:template;margin:0;text-align:center;justify-self:center;}.layout-stimulus_image_blank.svelte-6wlbb4 fieldset:where(.svelte-6wlbb4) {grid-area:choices;margin-top:var(--mpb-stimulus-choices-margin-top, 0.9rem);}.layout-token_sequence.svelte-6wlbb4 {display:grid;grid-template-columns:1fr auto;grid-template-areas:'audio audio'\n 'template template'\n 'choices choices';column-gap:var(--mpb-token-grid-column-gap, 1.5rem);row-gap:var(--mpb-token-grid-row-gap, 0.8rem);align-items:start;}.layout-token_sequence.svelte-6wlbb4 .pie-audio-container {grid-area:audio;margin:0;justify-self:end;}.layout-token_sequence.svelte-6wlbb4 .template-line:where(.svelte-6wlbb4) {grid-area:template;margin:var(--mpb-token-template-margin-top, 0.6rem) 0 0;justify-self:center;text-align:center;}.layout-token_sequence.svelte-6wlbb4 .template-line:where(.svelte-6wlbb4) span + span {margin-left:var(--mpb-token-inline-token-gap, 0.35rem);}.layout-token_sequence.svelte-6wlbb4 .pie-blank-slot {width:var(--mpb-blank-standalone-width, 7rem);border-bottom-width:var(--mpb-blank-underline-wide-width, 4px);margin-left:var(--mpb-token-inline-token-gap, 0.35rem);}.layout-token_sequence.svelte-6wlbb4 fieldset:where(.svelte-6wlbb4) {grid-area:choices;margin-top:var(--mpb-token-choices-margin-top, 0.2rem);}.layout-inline_sentence.has-inline-audio.svelte-6wlbb4 {display:grid;grid-template-columns:minmax(var(--mpb-text-min-column, 260px), 1fr) auto;grid-template-areas:'template audio'\n 'choices choices';column-gap:var(--mpb-inline-grid-column-gap, 1.5rem);row-gap:var(--mpb-inline-grid-row-gap, 0.65rem);align-items:start;}.layout-inline_sentence.has-inline-audio.svelte-6wlbb4 .pie-audio-container {grid-area:audio;margin:0;justify-self:end;}.layout-inline_sentence.has-inline-audio.svelte-6wlbb4 .template-line:where(.svelte-6wlbb4) {grid-area:template;margin:var(--mpb-inline-template-margin-top, 0.45rem) 0 0;text-align:center;justify-self:center;}.layout-inline_sentence.has-inline-audio.svelte-6wlbb4 fieldset:where(.svelte-6wlbb4) {grid-area:choices;margin-top:var(--mpb-inline-choices-margin-top, 0.25rem);}\n\n /* Match Learnosity responsive behavior for CQT audio-blank layouts:\n at smaller widths, audio control shifts left and answer tiles stack. */\n @media (max-width: 760px) {.layout-audio_blank_only.svelte-6wlbb4 .pie-audio-container,\n .layout-stimulus_image_blank.svelte-6wlbb4 .pie-audio-container,\n .layout-token_sequence.svelte-6wlbb4 .pie-audio-container,\n .layout-inline_sentence.has-inline-audio.svelte-6wlbb4 .pie-audio-container {width:100%;margin-left:0;margin-right:0;justify-content:flex-start;justify-self:start;}.layout-audio_blank_only.svelte-6wlbb4 .pie-choices:where(.svelte-6wlbb4),\n .layout-token_sequence.svelte-6wlbb4 .pie-choices:where(.svelte-6wlbb4),\n .layout-stimulus_image_blank.svelte-6wlbb4 .pie-choices:where(.svelte-6wlbb4),\n .layout-inline_sentence.has-inline-audio.svelte-6wlbb4 .pie-choices:where(.svelte-6wlbb4) {flex-direction:column;align-items:flex-start;justify-content:flex-start;}.layout-audio_blank_only.svelte-6wlbb4 .choice-row-horizontal:where(.svelte-6wlbb4),\n .layout-token_sequence.svelte-6wlbb4 .choice-row-horizontal:where(.svelte-6wlbb4),\n .layout-stimulus_image_blank.svelte-6wlbb4 .choice-row-horizontal:where(.svelte-6wlbb4),\n .layout-inline_sentence.has-inline-audio.svelte-6wlbb4 .choice-row-horizontal:where(.svelte-6wlbb4) {width:min(100%, var(--mpb-narrow-choice-max-width, 230px));align-items:flex-start;}\n }"
712
- };
713
- function ze(s, u) {
714
- c(u, !0), ee(s, Re);
715
- let d = {
716
- answerChoices: "Answer choices",
717
- selectedAnswerInSentence: "Selected answer in sentence",
718
- blankPreSelectionHint: "The answer you choose will appear on the blank line above.",
719
- showCorrectAnswer: "Show correct answer",
720
- hideCorrectAnswer: "Hide correct answer",
721
- clickToEnableAutoplay: "Click to enable audio autoplay",
722
- audioResourceUnavailable: "Audio is enabled but no playable audio URL is configured."
723
- }, v = C(u, "model", 7), w = C(u, "session", 7), E = e(""), D = e(null), O = e(null), j = e(null), M = `mc-populated-blank-${Math.random().toString(36).slice(2, 10)}`, N = a(() => (v()?.mode || v()?.env?.mode || "").toString()), P = a(() => A(N) === "evaluate"), F = a(() => v()?.correctness), te = a(() => typeof v()?.responseCorrect == "boolean" ? v().responseCorrect : A(F) === "correct"), ne = a(() => A(F) === "correct"), re = a(() => A(F) === "incorrect"), R = e(!1), ie = a(() => A(P) && !A(te) && !!v()?.correctChoiceId), z = a(() => v()?.layoutProfile || ""), B = a(() => me({
724
- interactionMode: v()?.interactionMode,
725
- template: v()?.template,
726
- choiceLayout: v()?.choiceLayout,
727
- layoutProfile: A(z),
728
- hasAudio: v()?.hasAudio,
729
- useFeatureButtonAudio: v()?.useFeatureButtonAudio
730
- })), H = a(() => A(B).isAudioOnlyMode), U = a(() => A(B).isBlankOnlyTemplate), W = a(() => A(B).isHorizontalChoices), ae = a(() => A(B).hasInlineSentenceAudioLayout), oe = a(() => A(B).useFeatureButtonAudio), G = a(() => ge({
731
- layoutProfile: A(z),
732
- isBlankOnlyTemplate: A(U),
733
- configuredLimits: v()?.layoutLimits,
734
- customProfilePresets: v()?.layoutProfilePresets
735
- })), K = a(() => Array.isArray(v()?.choices) ? v().choices : []), q = a(() => v()?.choiceMode || "text"), J = a(() => w()?.choiceId || A(E) || ""), ce = a(() => `${M}-choice-group-${v()?.id || "1"}`), Y = a(() => ye({
736
- selectedId: A(J),
737
- isEvaluateMode: A(P),
738
- showCorrectAnswer: A(R),
739
- alwaysShowCorrect: !!v()?.alwaysShowCorrect,
740
- correctChoiceId: String(v()?.correctChoiceId || "")
741
- })), X = a(() => A(K).find((e) => e.id === A(Y))), le = a(() => String(A(X)?.labelHtml || "")), fe = a(() => be({
742
- isEvaluateMode: A(P),
743
- showCorrectAnswer: A(R),
744
- isCorrect: A(ne),
745
- isIncorrect: A(re),
746
- selectedId: A(J)
747
- })), pe = a(() => de({
748
- isEvaluateMode: A(P),
749
- correctChoiceId: String(v()?.correctChoiceId || ""),
750
- selectedId: String(A(J) || ""),
751
- showCorrectAnswer: A(R)
752
- })), Z = a(() => ({
753
- ...d,
754
- ...v()?.uiText || {}
755
- })), he = a(() => `${M}-prompt`), _e = a(() => `${M}-choices-legend`), Se = a(() => `${M}-result`), Ce = a(() => `${M}-blank-hint`), we = a(() => xe({
756
- prompt: v()?.prompt || "",
757
- legendMaxChars: A(G).legendMaxChars,
758
- answerChoicesLabel: A(Z).answerChoices
759
- })), De = a(() => v()?.prompt ? A(he) : void 0), Oe = a(() => v()?.prompt ? void 0 : String(v()?.choiceGroupLabel || "").trim() || A(we)), ze = a(() => v()?.prompt ? A(he) : void 0), Be = a(() => {
760
- let e = v()?.locale || "";
761
- return e ? e.slice(0, 2) : "en";
762
- }), Ve = a(() => Te(v()?.customType)), He = a(() => Ee(v()?.customType)), Ue = a(() => {
763
- let e = v()?.template || "", t = e.indexOf("{{blank}}");
764
- if (t < 0) return {
765
- before: e,
766
- after: ""
767
- };
768
- let n = e.slice(0, t), r = e.slice(t + 9);
769
- return A(z) === "inline_sentence" && (n = `${n.replace(/\s+$/, "")} `, r = ` ${r.replace(/^\s+/, "")}`), {
770
- before: n,
771
- after: r
772
- };
773
- });
774
- function We(e, t) {
775
- L({
776
- sourceEl: t,
777
- fallbackSelector: "mc-populated-blank",
778
- component: "mc-populated-blank",
779
- session: e,
780
- complete: !!e?.choiceId
781
- });
782
- }
783
- function Ge(e) {
784
- let t = e.target;
785
- if (!t.checked) return;
786
- let n = t.value;
787
- b(E, n, !0), We({
788
- ...w(),
789
- id: w()?.id || v()?.id || "1",
790
- element: "mc-populated-blank",
791
- choiceId: n
792
- }, t);
793
- }
794
- function Ke() {
795
- A(ie) && b(R, !A(R));
796
- }
797
- t(() => {
798
- (!A(P) || A(te)) && b(R, !1);
799
- });
800
- function qe(e) {
801
- if (v()?.disabled) return;
802
- let t = e.key;
803
- if (![
804
- "ArrowDown",
805
- "ArrowRight",
806
- "ArrowUp",
807
- "ArrowLeft"
808
- ].includes(t)) return;
809
- e.preventDefault();
810
- let n = e.currentTarget, r = Array.from(n.querySelectorAll("input[type=\"radio\"]:not([disabled])"));
811
- if (r.length === 0) return;
812
- let i = r.findIndex((e) => e.checked);
813
- i = t === "ArrowDown" || t === "ArrowRight" ? i < 0 ? 0 : (i + 1) % r.length : i < 0 ? r.length - 1 : (i - 1 + r.length) % r.length;
814
- let a = r[i];
815
- a.checked = !0, a.dispatchEvent(new Event("change", { bubbles: !0 })), a.focus();
816
- }
817
- let Je = a(() => ve({
818
- locale: v()?.locale,
819
- audioButtonSkin: v()?.audioButtonSkin,
820
- audioButtonSkinsByLocale: v()?.audioButtonSkinsByLocale
821
- }));
822
- function Ye() {
823
- I(A(j), { fallbackSelector: "mc-populated-blank" })?.onAudioStarted?.();
824
- }
825
- function Xe() {
826
- I(A(j), { fallbackSelector: "mc-populated-blank" })?.onAudioEnded?.();
827
- }
828
- t(() => {
829
- w()?.choiceId && b(E, w().choiceId, !0);
830
- }), t(() => {
831
- let e = A(D);
832
- if (e) return e.addEventListener("click", Ke), () => e.removeEventListener("click", Ke);
833
- }), t(() => {
834
- let e = A(O);
835
- if (!e) return;
836
- let t = (e) => {
837
- e.target?.type === "radio" && Ge(e);
838
- }, n = (e) => qe(e);
839
- return e.addEventListener("change", t), e.addEventListener("keydown", n), () => {
840
- e.removeEventListener("change", t), e.removeEventListener("keydown", n);
841
- };
842
- }), t(() => {
843
- ke(A(Ve));
844
- });
845
- var Ze = {
846
67
  get model() {
847
- return v();
848
- },
849
- set model(e) {
850
- v(e), y();
851
- },
852
- get session() {
853
- return w();
854
- },
68
+ return this.#e;
69
+ }
855
70
  set session(e) {
856
- w(e), y();
71
+ this.#t = e, super.session = e, this.dispatchSessionChanged();
857
72
  }
858
- }, Q = Le(), Qe = k(Q), $e = (e) => {
859
- var t = Ae();
860
- m(t, () => v().prompt, !0), i(t), l(() => f(t, "id", A(he))), g(e, t);
861
- };
862
- S(Qe, (e) => {
863
- v()?.prompt && e($e);
864
- });
865
- var et = n(Qe, 2), tt = (e) => {
866
- var t = Ne(), a = k(t), o = k(a), s = k(o), c = k(s), u = (e) => {
867
- g(e, je());
868
- }, d = (e) => {
869
- g(e, Me());
870
- };
871
- S(c, (e) => {
872
- A(R) ? e(u) : e(d, -1);
873
- }), i(s);
874
- var p = r(n(s, 2), !0);
875
- i(o), i(a), T(a, (e) => b(D, e), () => A(D)), i(t), l(() => {
876
- f(a, "aria-pressed", A(R)), _(p, A(R) ? A(Z).hideCorrectAnswer : A(Z).showCorrectAnswer);
877
- }), g(e, t);
878
- };
879
- S(et, (e) => {
880
- A(ie) && e(tt);
881
- });
882
- var nt = n(et, 2);
883
- {
884
- let e = a(() => !!v()?.hasAudio), t = a(() => v()?.audioUrl), n = a(() => !!v()?.autoplayAudioEnabled), r = a(() => v()?.locale);
885
- V(nt, {
886
- get hasAudio() {
887
- return A(e);
888
- },
889
- get audioUrl() {
890
- return A(t);
891
- },
892
- get useFeatureButtonAudio() {
893
- return A(oe);
894
- },
895
- get autoplayEnabled() {
896
- return A(n);
897
- },
898
- get featureAudioSkin() {
899
- return A(Je);
900
- },
901
- get uiText() {
902
- return A(Z);
903
- },
904
- get locale() {
905
- return A(r);
906
- },
907
- onaudiostarted: Ye,
908
- onaudioended: Xe
909
- });
910
- }
911
- var rt = n(nt, 2), it = (e) => {
912
- var t = Pe();
913
- m(t, () => v().sentenceHtml, !0), i(t), l(() => f(t, "aria-describedby", A(ze))), g(e, t);
914
- };
915
- S(rt, (e) => {
916
- v()?.sentenceHtml && e(it);
917
- });
918
- var at = n(rt, 2), ot = (e) => {
919
- var t = Fe(), r = k(t);
920
- m(r, () => A(Ue).before);
921
- var a = n(r);
922
- se(a, {
923
- get choiceMode() {
924
- return A(q);
925
- },
926
- get displayChoice() {
927
- return A(X);
928
- },
929
- get displayChoiceLabelHtml() {
930
- return A(le);
931
- },
932
- get isStandalone() {
933
- return A(U);
934
- },
935
- get blankWidth() {
936
- return A(G).blankWidth;
937
- },
938
- get blankBorderWidth() {
939
- return A(G).blankBorderWidth;
940
- },
941
- get ariaLabel() {
942
- return A(Z).selectedAnswerInSentence;
943
- }
944
- }), m(n(a), () => A(Ue).after), i(t), l(() => f(t, "aria-describedby", A(ze))), g(e, t);
945
- };
946
- S(at, (e) => {
947
- A(H) || e(ot);
948
- });
949
- var st = n(at, 2), ct = (e) => {
950
- var t = Ie(), n = r(t, !0);
951
- l(() => {
952
- f(t, "id", A(Se)), _(n, A(fe));
953
- }), g(e, t);
954
- };
955
- S(st, (e) => {
956
- A(fe) && e(ct);
957
- });
958
- var lt = n(st, 2), ut = r(lt, !0), dt = n(lt, 2), ft = k(dt), pt = r(ft, !0), $ = n(ft, 2);
959
- return h($, 21, () => A(K), (e) => e.id, (e, t) => {
960
- {
961
- let n = a(() => A(Y) === A(t).id), r = a(() => !!v()?.disabled), i = a(() => A(pe).get(A(t).id));
962
- ue(e, {
963
- get choice() {
964
- return A(t);
965
- },
966
- get choiceMode() {
967
- return A(q);
968
- },
969
- get isHorizontal() {
970
- return A(W);
971
- },
972
- get isSelected() {
973
- return A(n);
974
- },
975
- get isDisabled() {
976
- return A(r);
977
- },
978
- get correctness() {
979
- return A(i);
980
- },
981
- get isEvaluateMode() {
982
- return A(P);
983
- },
984
- get instanceId() {
985
- return M;
986
- },
987
- get radioGroupName() {
988
- return A(ce);
989
- }
990
- });
73
+ get session() {
74
+ return this.#t;
991
75
  }
992
- }), i($), T($, (e) => b(O, e), () => A(O)), i(dt), i(Q), T(Q, (e) => b(j, e), () => A(j)), l((e) => {
993
- x(Q, 1, `p-4 mc-populated-blank-root pie-element pie-element-mc-populated-blank pie-delivery-root layout-${A(z)} ${A(He)} ${A(ae) ? "has-inline-audio" : ""}`, "svelte-6wlbb4"), f(Q, "lang", A(Be)), p(Q, A(G).rootStyle), f(lt, "id", A(Ce)), _(ut, A(Z).blankPreSelectionHint), dt.disabled = v()?.disabled, f(ft, "id", A(_e)), _(pt, A(we)), x($, 1, `pie-choices ${A(W) ? "flex flex-row flex-wrap items-start justify-center" : "flex flex-col"}`, "svelte-6wlbb4"), f($, "aria-labelledby", A(De)), f($, "aria-label", A(Oe)), f($, "aria-describedby", e);
994
- }, [() => [A(Ce), A(fe) ? A(Se) : void 0].filter(Boolean).join(" ")]), g(s, Q), o(Ze);
76
+ isComplete() {
77
+ return t.isComplete(this.#e, this.#t);
78
+ }
79
+ writeSession(e) {
80
+ this.#t = n(this.#t, e), super.session = e;
81
+ }
82
+ dispatchSessionChanged() {
83
+ this.dispatchEvent(new i(this.tagName.toLowerCase(), this.isComplete()));
84
+ }
85
+ }
86
+ return o;
995
87
  }
996
- D(ze, {
997
- model: { type: "Object" },
998
- session: { type: "Object" },
999
- options: { type: "Object" }
1000
- }, [], []);
1001
88
  //#endregion
1002
89
  //#region src/delivery/index.ts
1003
- function Be(e, t, n = !1) {
1004
- return !(!t?.choiceId || e?.autoplayAudioEnabled && e?.completeAudioEnabled && e?.hasAudio && !n);
90
+ var o = a(e, { isComplete: (e, t) => !!t?.choiceId });
91
+ function s(e) {
92
+ return !!e?.completeAudioEnabled && !!e?.hasAudio;
1005
93
  }
1006
- var Ve = ze.element, He = class extends Ve {
1007
- _internalSession = null;
1008
- _model = null;
1009
- _options = null;
94
+ var c = class extends o {
1010
95
  audioComplete = !1;
1011
- _dispatchModelSet = () => {
1012
- this.dispatchEvent(new N(this.tagName.toLowerCase(), this._isComplete(), this._model !== void 0));
1013
- };
1014
- _dispatchSessionChanged = () => {
1015
- this.dispatchEvent(new P(this.tagName.toLowerCase(), this._isComplete()));
1016
- };
96
+ constructor() {
97
+ super(), this.onAudioStarted = () => {
98
+ this.#e({ audioStartTime: Date.now() });
99
+ }, this.onAudioEnded = () => {
100
+ this.audioComplete = !0, this.#e({ audioEndTime: Date.now() }), this.dispatchSessionChanged();
101
+ };
102
+ }
1017
103
  set model(e) {
1018
- this._model = e, this.audioComplete = !1, super.model = e, this._dispatchModelSet();
104
+ e?.audioUrl !== this.model?.audioUrl && (this.audioComplete = !1), super.model = e;
1019
105
  }
1020
106
  get model() {
1021
- return this._model;
1022
- }
1023
- set session(e) {
1024
- this._internalSession = e, super.session = e, this._dispatchSessionChanged();
1025
- }
1026
- get session() {
1027
- return this._internalSession;
1028
- }
1029
- set options(e) {
1030
- this._options = e, super.options = e;
107
+ return super.model;
1031
108
  }
1032
- get options() {
1033
- return this._options;
109
+ isComplete() {
110
+ return super.isComplete() && (this.audioComplete || !s(this.model));
1034
111
  }
1035
- onSessionChange = (e) => {
1036
- this._internalSession = e, super.session = e, this._dispatchSessionChanged();
1037
- };
1038
- onAudioStarted = () => {
1039
- this._internalSession = {
1040
- ...this._internalSession || {},
1041
- audioStartTime: Date.now()
112
+ #e(e) {
113
+ let t = this.session || {}, n = t.audioStartTime || e.audioStartTime, r = t.audioEndTime || e.audioEndTime, i = {
114
+ ...t,
115
+ ...n ? { audioStartTime: n } : {},
116
+ ...r ? { audioEndTime: r } : {}
1042
117
  };
1043
- };
1044
- onAudioEnded = () => {
1045
- this.audioComplete = !0, this._internalSession = {
1046
- ...this._internalSession || {},
1047
- audioEndTime: Date.now()
1048
- }, this._dispatchSessionChanged();
1049
- };
1050
- _isComplete = () => Be(this._model, this._internalSession, this.audioComplete);
1051
- connectedCallback() {
1052
- super.connectedCallback(), this.onSessionChange = this.onSessionChange, this.onAudioStarted = this.onAudioStarted, this.onAudioEnded = this.onAudioEnded;
118
+ !i.waitTime && n && r && (i.waitTime = r - n), this.writeSession(i);
1053
119
  }
1054
120
  };
1055
121
  //#endregion
1056
- export { He as default };
122
+ export { c as default };
1057
123
 
1058
124
  //# sourceMappingURL=index.js.map