@pie-players/pie-assessment-player 0.3.28 → 0.3.30

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.
package/README.md CHANGED
@@ -18,6 +18,29 @@ Assessment-player now exposes a `debug` option on `pie-assessment-player-default
18
18
  The setting is forwarded to the rendered section-player instance and also applies
19
19
  the global flag (`window.PIE_DEBUG`) for shared runtime logging behavior.
20
20
 
21
+ ## Card Title Formatter
22
+
23
+ Use the existing `hooks` registration surface on `pie-assessment-player-default`.
24
+ The callback is forwarded to each rendered section-player instance, including the
25
+ initially mounted section (for example when launching directly into section 2).
26
+
27
+ ```ts
28
+ const host = document.querySelector("pie-assessment-player-default") as any;
29
+ host.hooks = {
30
+ ...(host.hooks || {}),
31
+ cardTitleFormatter: (context: Record<string, unknown>) => {
32
+ if (context.kind === "item") {
33
+ const itemIndex = Number(context.itemIndex ?? 0) + 1;
34
+ return `Question ${itemIndex}`;
35
+ }
36
+ if (context.kind === "passage") {
37
+ return "Reading passage";
38
+ }
39
+ return typeof context.defaultTitle === "string" ? context.defaultTitle : "";
40
+ },
41
+ };
42
+ ```
43
+
21
44
  Component registration entrypoints:
22
45
 
23
46
  - `@pie-players/pie-assessment-player/components/assessment-player-default-element`
@@ -31,7 +54,6 @@ Assessment-player instrumentation is provider-agnostic and built on the shared
31
54
  Canonical provider injection paths:
32
55
 
33
56
  - `sectionPlayerRuntime.player.loaderConfig.instrumentationProvider`
34
- - `sectionPlayerPlayer.loaderConfig.instrumentationProvider` (fallback)
35
57
 
36
58
  Provider semantics:
37
59
 
@@ -64,3 +86,17 @@ Toolkit tool/backend operational stream (when toolkit is mounted):
64
86
  - `pie-tool-init-start|success|error`
65
87
  - `pie-tool-backend-call-start|success|error`
66
88
  - `pie-tool-library-load-start|success|error`
89
+
90
+ ## Content trust boundary
91
+
92
+ Assessment markup reaches the DOM via the underlying
93
+ `<pie-item-player>` element, which now sanitizes item / passage markup by
94
+ default through DOMPurify. See
95
+ [pie-item-player README](./README.md#content-trust-boundary)
96
+ for the allow-list, opt-out mechanics (`trust-markup`), and the
97
+ `sanitizeMarkup` property override. Assessment-player hosts forward these
98
+ settings by setting `runtime.player.trustMarkup` /
99
+ `runtime.player.sanitizeMarkup` on the shared runtime they pass into the
100
+ section-player instances; the section-player runtime flattens `runtime.player.*`
101
+ fields onto the embedded `<pie-item-player>` (see the section-player README
102
+ for the exact forwarding shape).
@@ -22,7 +22,6 @@ export declare class AssessmentPlayerDefaultElement extends HTMLElement implemen
22
22
  private unsubscribeController?;
23
23
  private detachInstrumentationBridge?;
24
24
  private _sectionPlayerRuntime;
25
- private _sectionPlayerPlayer;
26
25
  private readiness;
27
26
  constructor();
28
27
  attributeChangedCallback(name: string, _oldValue: string | null, value: string | null): void;
@@ -30,8 +29,6 @@ export declare class AssessmentPlayerDefaultElement extends HTMLElement implemen
30
29
  set debug(value: boolean | string | null | undefined);
31
30
  get sectionPlayerRuntime(): AssessmentPlayerRuntimeConfig["sectionPlayerRuntime"];
32
31
  set sectionPlayerRuntime(value: AssessmentPlayerRuntimeConfig["sectionPlayerRuntime"]);
33
- get sectionPlayerPlayer(): AssessmentPlayerRuntimeConfig["sectionPlayerPlayer"];
34
- set sectionPlayerPlayer(value: AssessmentPlayerRuntimeConfig["sectionPlayerPlayer"]);
35
32
  connectedCallback(): void;
36
33
  disconnectedCallback(): void;
37
34
  private dispatch;
@@ -40,6 +37,7 @@ export declare class AssessmentPlayerDefaultElement extends HTMLElement implemen
40
37
  private attachInstrumentationBridge;
41
38
  private renderEmptyState;
42
39
  private buildSectionPlayerTag;
40
+ private cleanupTtsForSectionNavigation;
43
41
  private syncCurrentSectionSessionIntoAssessment;
44
42
  private attachSectionControllerReadyListener;
45
43
  private render;
@@ -1 +1 @@
1
- {"version":3,"file":"AssessmentPlayerDefaultElement.d.ts","sourceRoot":"","sources":["../../src/components/AssessmentPlayerDefaultElement.ts"],"names":[],"mappings":"AAAA,OAAO,6EAA6E,CAAC;AACrF,OAAO,4EAA4E,CAAC;AAMpF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,uCAAuC,CAAC;AAEjE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAC;AAQxF,OAAO,KAAK,EACX,gCAAgC,EAChC,mCAAmC,EACnC,wBAAwB,EACxB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EACX,oBAAoB,EACpB,qBAAqB,EACrB,6BAA6B,EAC7B,MAAM,aAAa,CAAC;AAoBrB,qBAAa,8BACZ,SAAQ,WACR,YAAW,mCAAmC;IAE9C,MAAM,KAAK,kBAAkB,aAS5B;IAED,YAAY,SAAM;IAClB,SAAS,SAAM;IACf,UAAU,EAAE,oBAAoB,GAAG,IAAI,CAAQ;IAC/C,GAAG,EAAE,GAAG,GAAG,IAAI,CAAQ;IACvB,WAAW,EAAE,OAAO,CAAQ;IAC5B,KAAK,EAAE,qBAAqB,GAAG,IAAI,CAAQ;IAC3C,cAAc,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAQ;IAC3D,mBAAmB,EAAE,WAAW,GAAG,UAAU,CAAe;IAC5D,UAAU,EAAE,MAAM,GAAG,KAAK,GAAG,WAAW,CAAU;IAClD,OAAO,CAAC,MAAM,CAAkD;IAEhE,OAAO,CAAC,UAAU,CAA2C;IAC7D,OAAO,CAAC,sBAAsB,CACxB;IACN,OAAO,CAAC,sBAAsB,CACxB;IACN,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,oBAAoB,CAAwC;IACpE,OAAO,CAAC,qBAAqB,CAAC,CAAa;IAC3C,OAAO,CAAC,2BAA2B,CAAC,CAAa;IACjD,OAAO,CAAC,qBAAqB,CACvB;IACN,OAAO,CAAC,oBAAoB,CACtB;IACN,OAAO,CAAC,SAAS,CAEf;;IASF,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAkBrF,IAAI,KAAK,IAAI,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAE/C;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,EAGnD;IAED,IAAI,oBAAoB,IAAI,6BAA6B,CAAC,sBAAsB,CAAC,CAEhF;IAED,IAAI,oBAAoB,CAAC,KAAK,EAAE,6BAA6B,CAAC,sBAAsB,CAAC,EAKpF;IAED,IAAI,mBAAmB,IAAI,6BAA6B,CAAC,qBAAqB,CAAC,CAE9E;IAED,IAAI,mBAAmB,CAAC,KAAK,EAAE,6BAA6B,CAAC,qBAAqB,CAAC,EAKlF;IAED,iBAAiB;IAmBjB,oBAAoB;IAOpB,OAAO,CAAC,QAAQ;YAWF,mBAAmB;IAgEjC,OAAO,CAAC,8BAA8B;IAQtC,OAAO,CAAC,2BAA2B;IAenC,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,qBAAqB;IAM7B,OAAO,CAAC,uCAAuC;IAe/C,OAAO,CAAC,oCAAoC;IAqB5C,OAAO,CAAC,MAAM;IA6Hd,OAAO,CAAC,cAAc;IActB,WAAW,IAAI,wBAAwB;IA6BvC,gBAAgB;IAIhB,eAAe;;;IAIf,cAAc,IAAI,gCAAgC;IAIlD,UAAU,CAAC,iBAAiB,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;IAgCvD,YAAY,IAAI,OAAO;IAqBvB,gBAAgB,IAAI,OAAO;IAqB3B,uBAAuB,IAAI,0BAA0B,GAAG,IAAI;IAItD,2BAA2B,CAAC,SAAS,SAAO;CASlD"}
1
+ {"version":3,"file":"AssessmentPlayerDefaultElement.d.ts","sourceRoot":"","sources":["../../src/components/AssessmentPlayerDefaultElement.ts"],"names":[],"mappings":"AAAA,OAAO,6EAA6E,CAAC;AACrF,OAAO,4EAA4E,CAAC;AAMpF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,uCAAuC,CAAC;AAEjE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAC;AAQxF,OAAO,KAAK,EACX,gCAAgC,EAChC,mCAAmC,EACnC,wBAAwB,EACxB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EACX,oBAAoB,EACpB,qBAAqB,EACrB,6BAA6B,EAC7B,MAAM,aAAa,CAAC;AAgCrB,qBAAa,8BACZ,SAAQ,WACR,YAAW,mCAAmC;IAE9C,MAAM,KAAK,kBAAkB,aAS5B;IAED,YAAY,SAAM;IAClB,SAAS,SAAM;IACf,UAAU,EAAE,oBAAoB,GAAG,IAAI,CAAQ;IAC/C,GAAG,EAAE,GAAG,GAAG,IAAI,CAAQ;IACvB,WAAW,EAAE,OAAO,CAAQ;IAC5B,KAAK,EAAE,qBAAqB,GAAG,IAAI,CAAQ;IAC3C,cAAc,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAQ;IAC3D,mBAAmB,EAAE,WAAW,GAAG,UAAU,CAAe;IAC5D,UAAU,EAAE,MAAM,GAAG,KAAK,GAAG,WAAW,CAAU;IAClD,OAAO,CAAC,MAAM,CAAkD;IAEhE,OAAO,CAAC,UAAU,CAA2C;IAC7D,OAAO,CAAC,sBAAsB,CACxB;IACN,OAAO,CAAC,sBAAsB,CAEf;IACf,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,oBAAoB,CAAwC;IACpE,OAAO,CAAC,qBAAqB,CAAC,CAAa;IAC3C,OAAO,CAAC,2BAA2B,CAAC,CAAa;IACjD,OAAO,CAAC,qBAAqB,CACvB;IACN,OAAO,CAAC,SAAS,CAEf;;IASF,wBAAwB,CACvB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,KAAK,EAAE,MAAM,GAAG,IAAI;IAoBrB,IAAI,KAAK,IAAI,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAE/C;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,EAGnD;IAED,IAAI,oBAAoB,IAAI,6BAA6B,CAAC,sBAAsB,CAAC,CAEhF;IAED,IAAI,oBAAoB,CAAC,KAAK,EAAE,6BAA6B,CAAC,sBAAsB,CAAC,EAKpF;IAED,iBAAiB;IAmBjB,oBAAoB;IAOpB,OAAO,CAAC,QAAQ;YAeF,mBAAmB;IAmEjC,OAAO,CAAC,8BAA8B;IAOtC,OAAO,CAAC,2BAA2B;IAenC,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,qBAAqB;IAM7B,OAAO,CAAC,8BAA8B;IAqBtC,OAAO,CAAC,uCAAuC;IAe/C,OAAO,CAAC,oCAAoC;IA2B5C,OAAO,CAAC,MAAM;IA8Hd,OAAO,CAAC,cAAc;IActB,WAAW,IAAI,wBAAwB;IA6BvC,gBAAgB;IAIhB,eAAe;;;IAIf,cAAc,IAAI,gCAAgC;IAIlD,UAAU,CAAC,iBAAiB,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;IAiCvD,YAAY,IAAI,OAAO;IAqBvB,gBAAgB,IAAI,OAAO;IAqB3B,uBAAuB,IAAI,0BAA0B,GAAG,IAAI;IAItD,2BAA2B,CAAC,SAAS,SAAO;CAUlD"}
@@ -1,7 +1,7 @@
1
1
  import "@pie-players/pie-section-player/components/section-player-splitpane-element";
2
2
  import "@pie-players/pie-section-player/components/section-player-vertical-element";
3
3
  import { defineCustomElementSafely as _ } from "@pie-players/pie-players-shared";
4
- function p(e, t) {
4
+ function m(e, t) {
5
5
  const s = `[${e}]`;
6
6
  return {
7
7
  debug: (n, ...i) => {
@@ -12,17 +12,17 @@ function p(e, t) {
12
12
  error: (n, ...i) => console.error(s, n, ...i)
13
13
  };
14
14
  }
15
- function f() {
15
+ function p() {
16
16
  return typeof window < "u" && window.PIE_DEBUG === !0;
17
17
  }
18
18
  var S;
19
19
  (function(e) {
20
20
  e.player = "player.js", e.clientPlayer = "client-player.js", e.editor = "editor.js";
21
21
  })(S || (S = {}));
22
- var w;
22
+ var P;
23
23
  (function(e) {
24
24
  e.loading = "loading", e.loaded = "loaded";
25
- })(w || (w = {}));
25
+ })(P || (P = {}));
26
26
  function g(e) {
27
27
  "@babel/helpers - typeof";
28
28
  return g = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(t) {
@@ -53,13 +53,18 @@ function a(e, t, s) {
53
53
  writable: !0
54
54
  }) : e[t] = s, e;
55
55
  }
56
+ function U(e) {
57
+ if (!e || typeof e != "object") return !1;
58
+ const t = e;
59
+ return typeof t.providerId == "string" && typeof t.providerName == "string" && typeof t.initialize == "function" && typeof t.trackError == "function" && typeof t.trackEvent == "function" && typeof t.destroy == "function" && typeof t.isReady == "function";
60
+ }
56
61
  typeof window < "u" && !window.pieHelpers && (window.pieHelpers = {
57
62
  loadingScripts: {},
58
63
  loadingPromises: {},
59
64
  globalLoadQueue: Promise.resolve(),
60
65
  activeBundleUrl: null
61
66
  });
62
- var U = "https://proxy.pie-api.com", J = `${U}/bundles/`;
67
+ var $ = "https://proxy.pie-api.com", J = `${$}/bundles/`;
63
68
  function B(e) {
64
69
  try {
65
70
  const t = {
@@ -73,7 +78,7 @@ function B(e) {
73
78
  } catch {
74
79
  }
75
80
  }
76
- var Le = typeof window < "u" && window.PIE_BUILDER_ORIGIN_URL || B("PUBLIC_BUILDER_ORIGIN_URL") || U, K = typeof window < "u" && window.PIE_BUILDER_BUNDLE_URL || B("PUBLIC_BUILDER_BUNDLE_URL") || J, N;
81
+ var Le = typeof window < "u" && window.PIE_BUILDER_ORIGIN_URL || B("PUBLIC_BUILDER_ORIGIN_URL") || $, K = typeof window < "u" && window.PIE_BUILDER_BUNDLE_URL || B("PUBLIC_BUILDER_BUNDLE_URL") || J, N;
77
82
  (function(e) {
78
83
  e.SAVE = "save", e.MODEL = "model", e.SCORE = "score", e.MANUAL_SCORE = "manual-score";
79
84
  })(N || (N = {}));
@@ -89,9 +94,9 @@ var x;
89
94
  (function(e) {
90
95
  e.PENDING = "pending", e.IN_PROGRESS = "in_progress", e.COMPLETED = "completed", e.FAILED = "failed";
91
96
  })(x || (x = {}));
92
- var W = class $ extends CustomEvent {
97
+ var W = class O extends CustomEvent {
93
98
  constructor(t, s = !1) {
94
- super($.TYPE, {
99
+ super(O.TYPE, {
95
100
  bubbles: !0,
96
101
  detail: {
97
102
  update: t,
@@ -101,9 +106,9 @@ var W = class $ extends CustomEvent {
101
106
  }
102
107
  };
103
108
  a(W, "TYPE", "model.updated");
104
- var Q = class O extends CustomEvent {
109
+ var Q = class M extends CustomEvent {
105
110
  constructor(t, s) {
106
- super(O.TYPE, {
111
+ super(M.TYPE, {
107
112
  bubbles: !0,
108
113
  detail: {
109
114
  src: t,
@@ -113,9 +118,9 @@ var Q = class O extends CustomEvent {
113
118
  }
114
119
  };
115
120
  a(Q, "TYPE", "delete.image");
116
- var Z = class M extends CustomEvent {
121
+ var Z = class F extends CustomEvent {
117
122
  constructor(t) {
118
- super(M.TYPE, {
123
+ super(F.TYPE, {
119
124
  bubbles: !0,
120
125
  detail: t
121
126
  }), a(this, "handler", void 0), this.handler = t;
@@ -134,18 +139,18 @@ var X = class z extends CustomEvent {
134
139
  }
135
140
  };
136
141
  a(X, "TYPE", "delete.sound");
137
- var ee = class F extends CustomEvent {
142
+ var ee = class G extends CustomEvent {
138
143
  constructor(t) {
139
- super(F.TYPE, {
144
+ super(G.TYPE, {
140
145
  bubbles: !0,
141
146
  detail: t
142
147
  }), a(this, "handler", void 0), this.handler = t;
143
148
  }
144
149
  };
145
150
  a(ee, "TYPE", "insert.sound");
146
- var te = class G extends CustomEvent {
151
+ var te = class j extends CustomEvent {
147
152
  constructor(t, s) {
148
- super(G.TYPE, {
153
+ super(j.TYPE, {
149
154
  bubbles: !0,
150
155
  composed: !0,
151
156
  detail: {
@@ -160,20 +165,14 @@ var R;
160
165
  (function(e) {
161
166
  e[e.ROOT = 0] = "ROOT", e[e.SUBJECT = 1] = "SUBJECT", e[e.LEVEL = 2] = "LEVEL", e[e.STANDARD = 3] = "STANDARD";
162
167
  })(R || (R = {}));
163
- var ke = p("math-rendering", () => f()), Te = p("pie-scoring", () => f()), De = p("pie-updates", () => f()), _e = p("pie-initialization", () => f()), Ue = {
168
+ var ke = m("math-rendering", () => p()), Te = m("pie-scoring", () => p()), De = m("pie-updates", () => p()), _e = m("pie-initialization", () => p()), Ue = {
164
169
  buildServiceBase: K,
165
170
  bundleType: S.player,
166
171
  env: {
167
172
  mode: "gather",
168
173
  role: "student"
169
174
  }
170
- };
171
- function j(e) {
172
- if (!e || typeof e != "object") return !1;
173
- const t = e;
174
- return typeof t.providerId == "string" && typeof t.providerName == "string" && typeof t.initialize == "function" && typeof t.trackError == "function" && typeof t.trackEvent == "function" && typeof t.destroy == "function" && typeof t.isReady == "function";
175
- }
176
- var se = p("instrumentation-event-bridge", () => f());
175
+ }, se = m("instrumentation-event-bridge", () => p());
177
176
  function ne(e) {
178
177
  return e && typeof e == "object" ? e : typeof e > "u" ? {} : { value: e };
179
178
  }
@@ -195,7 +194,7 @@ function oe(e) {
195
194
  };
196
195
  if (!e.instrumentationProvider) return () => {
197
196
  };
198
- if (!j(e.instrumentationProvider))
197
+ if (!U(e.instrumentationProvider))
199
198
  return e.debug && ie(e.component), () => {
200
199
  };
201
200
  const t = e.instrumentationProvider, s = [], n = Math.max(0, e.dedupeWindowMs ?? 0), i = /* @__PURE__ */ new Map(), c = (o, r) => {
@@ -221,8 +220,8 @@ function oe(e) {
221
220
  timestamp: h
222
221
  };
223
222
  if (n > 0) {
224
- const b = Date.now(), E = c(o, I), P = i.get(E);
225
- if (typeof P == "number" && b - P < n) return;
223
+ const b = Date.now(), E = c(o, I), w = i.get(E);
224
+ if (typeof w == "number" && b - w < n) return;
226
225
  i.set(E, b);
227
226
  }
228
227
  t.trackEvent(o.instrumentationEventName, { ...I });
@@ -358,7 +357,7 @@ function D(e) {
358
357
  function de(e, t) {
359
358
  return e.kind === "value" || e.kind === "null" ? e : t;
360
359
  }
361
- var v, le = p("instrumentation-provider-resolution", () => f());
360
+ var v, le = m("instrumentation-provider-resolution", () => p());
362
361
  function ue() {
363
362
  return v || (v = new ce(), v.initialize()), v;
364
363
  }
@@ -366,7 +365,7 @@ function he(e) {
366
365
  const t = k(e.runtimePlayer), s = k(e.player), n = D(t), i = D(s), c = n ?? i ?? !1, o = de(T(t), T(s));
367
366
  if (o.kind !== "null") {
368
367
  if (o.kind === "unset") return c ? ue() : void 0;
369
- if (j(o.value)) return o.value;
368
+ if (U(o.value)) return o.value;
370
369
  if (e.debug) {
371
370
  const r = e.component ? `[${e.component}] ` : "";
372
371
  le.warn(`${r}Ignoring invalid instrumentation provider; expected InstrumentationProvider contract`);
@@ -406,8 +405,8 @@ var me = [
406
405
  sourceEventName: "assessment-error",
407
406
  instrumentationEventName: "pie-assessment-error"
408
407
  }
409
- ];
410
- function m() {
408
+ ], $e = m("pie-overrides", () => p());
409
+ function f() {
411
410
  return Date.now();
412
411
  }
413
412
  function y(e) {
@@ -581,7 +580,7 @@ var Ie = class {
581
580
  const e = await (await this.getPersistenceStrategy()).loadSession(this.storageContext);
582
581
  e && (this.session = e, this.emit({
583
582
  type: "assessment-session-applied",
584
- timestamp: m()
583
+ timestamp: f()
585
584
  })), this.ensureSession(), this.readiness = "ready";
586
585
  } catch (e) {
587
586
  this.readiness = "error", this.handleError(e, "session-load");
@@ -632,7 +631,7 @@ var Ie = class {
632
631
  const i = this.buildNavigationSnapshot();
633
632
  return this.emit({
634
633
  type: "assessment-route-changed",
635
- timestamp: m(),
634
+ timestamp: f(),
636
635
  currentSectionIndex: i.currentSectionIndex,
637
636
  totalSections: i.totalSections,
638
637
  currentSectionId: i.currentSectionId,
@@ -641,10 +640,10 @@ var Ie = class {
641
640
  canPrevious: i.canPrevious
642
641
  }), this.emit({
643
642
  type: "assessment-session-changed",
644
- timestamp: m()
643
+ timestamp: f()
645
644
  }), this.emit({
646
645
  type: "assessment-progress-changed",
647
- timestamp: m(),
646
+ timestamp: f(),
648
647
  visitedSectionCount: this.ensureSession().navigationState.visitedSectionIdentifiers.length,
649
648
  totalSections: i.totalSections
650
649
  }), !0;
@@ -665,7 +664,7 @@ var Ie = class {
665
664
  async submit() {
666
665
  this.submitted = !0, this.emit({
667
666
  type: "assessment-submission-state-changed",
668
- timestamp: m(),
667
+ timestamp: f(),
669
668
  submitted: !0
670
669
  }), await this.persist();
671
670
  }
@@ -688,7 +687,7 @@ var Ie = class {
688
687
  sectionSession: t
689
688
  }), this.emit({
690
689
  type: "assessment-session-changed",
691
- timestamp: m()
690
+ timestamp: f()
692
691
  });
693
692
  }
694
693
  }, u = {
@@ -702,13 +701,13 @@ var Ie = class {
702
701
  submissionStateChanged: "assessment-submission-state-changed",
703
702
  error: "assessment-error"
704
703
  }, be = "pie-section-player-splitpane", Ee = "pie-section-player-vertical";
705
- function Pe(e, t = !1) {
704
+ function we(e, t = !1) {
706
705
  if (e == null) return t;
707
706
  if (typeof e == "boolean") return e;
708
707
  const s = e.trim().toLowerCase();
709
708
  return s === "" || s === "true" || s === "1" || s === "yes";
710
709
  }
711
- var we = class extends HTMLElement {
710
+ var Pe = class extends HTMLElement {
712
711
  static get observedAttributes() {
713
712
  return [
714
713
  "assessment-id",
@@ -720,7 +719,7 @@ var we = class extends HTMLElement {
720
719
  ];
721
720
  }
722
721
  constructor() {
723
- super(), this.assessmentId = "", this.attemptId = "", this.assessment = null, this.env = null, this.coordinator = null, this.hooks = null, this.showNavigation = !0, this.sectionPlayerLayout = "splitpane", this.playerType = "iife", this._debug = void 0, this.controller = null, this.controllerReadyPromise = null, this.controllerReadyResolve = null, this.sectionHost = null, this.sectionControllerRef = null, this._sectionPlayerRuntime = null, this._sectionPlayerPlayer = null, this.readiness = { phase: "bootstrapping" }, this.controllerReadyPromise = new Promise((e) => {
722
+ super(), this.assessmentId = "", this.attemptId = "", this.assessment = null, this.env = null, this.coordinator = null, this.hooks = null, this.showNavigation = !0, this.sectionPlayerLayout = "splitpane", this.playerType = "iife", this._debug = void 0, this.controller = null, this.controllerReadyPromise = null, this.controllerReadyResolve = null, this.sectionHost = null, this.sectionControllerRef = null, this._sectionPlayerRuntime = null, this.readiness = { phase: "bootstrapping" }, this.controllerReadyPromise = new Promise((e) => {
724
723
  this.controllerReadyResolve = e;
725
724
  });
726
725
  }
@@ -739,16 +738,12 @@ var we = class extends HTMLElement {
739
738
  set sectionPlayerRuntime(e) {
740
739
  this._sectionPlayerRuntime = e, this.isConnected && this.attachInstrumentationBridge();
741
740
  }
742
- get sectionPlayerPlayer() {
743
- return this._sectionPlayerPlayer;
744
- }
745
- set sectionPlayerPlayer(e) {
746
- this._sectionPlayerPlayer = e, this.isConnected && this.attachInstrumentationBridge();
747
- }
748
741
  connectedCallback() {
749
- this.assessmentId || (this.assessmentId = this.getAttribute("assessment-id") || ""), this.attemptId || (this.attemptId = this.getAttribute("attempt-id") || ""), this.showNavigation = this.getAttribute("show-navigation") ?? this.showNavigation, this.sectionPlayerLayout = this.getAttribute("section-player-layout") === "vertical" ? "vertical" : this.sectionPlayerLayout;
750
- const e = this.getAttribute("player-type");
751
- e && (this.playerType = e), this.debug = this.getAttribute("debug") ?? this.debug, this.attachInstrumentationBridge(), this.bootstrapController();
742
+ this.assessmentId || (this.assessmentId = this.getAttribute("assessment-id") || ""), this.attemptId || (this.attemptId = this.getAttribute("attempt-id") || ""), this.showNavigation = this.getAttribute("show-navigation") ?? this.showNavigation;
743
+ const e = this.getAttribute("section-player-layout");
744
+ this.sectionPlayerLayout = e === "vertical" ? "vertical" : this.sectionPlayerLayout;
745
+ const t = this.getAttribute("player-type");
746
+ t && (this.playerType = t), this.debug = this.getAttribute("debug") ?? this.debug, this.attachInstrumentationBridge(), this.bootstrapController();
752
747
  }
753
748
  disconnectedCallback() {
754
749
  this.unsubscribeController?.(), this.detachInstrumentationBridge?.(), this.detachInstrumentationBridge = void 0, this.hooks?.onAssessmentControllerDispose?.(this.controller || void 0);
@@ -774,7 +769,7 @@ var we = class extends HTMLElement {
774
769
  hooks: this.hooks || void 0
775
770
  });
776
771
  this.unsubscribeController?.(), this.controller = e, this.unsubscribeController = e.subscribe((t) => {
777
- t.type === "assessment-route-changed" && (this.dispatch(u.routeChanged, t), this.render()), t.type === "assessment-session-applied" && this.dispatch(u.sessionApplied, t), t.type === "assessment-session-changed" && this.dispatch(u.sessionChanged, t), t.type === "assessment-progress-changed" && this.dispatch(u.progressChanged, t), t.type === "assessment-submission-state-changed" && this.dispatch(u.submissionStateChanged, t);
772
+ t.type === "assessment-route-changed" && (this.cleanupTtsForSectionNavigation(t), this.dispatch(u.routeChanged, t), this.render()), t.type === "assessment-session-applied" && this.dispatch(u.sessionApplied, t), t.type === "assessment-session-changed" && this.dispatch(u.sessionChanged, t), t.type === "assessment-progress-changed" && this.dispatch(u.progressChanged, t), t.type === "assessment-submission-state-changed" && this.dispatch(u.submissionStateChanged, t);
778
773
  });
779
774
  try {
780
775
  await e.initialize(), this.readiness = { phase: "ready" }, this.controllerReadyResolve?.(e), this.dispatch(u.controllerReady, { controller: e }), this.hooks?.onAssessmentControllerReady?.(e), this.render();
@@ -785,7 +780,6 @@ var we = class extends HTMLElement {
785
780
  resolveInstrumentationProvider() {
786
781
  return he({
787
782
  runtimePlayer: this.sectionPlayerRuntime?.player,
788
- player: this.sectionPlayerPlayer,
789
783
  component: "pie-assessment-player-default"
790
784
  });
791
785
  }
@@ -810,24 +804,39 @@ var we = class extends HTMLElement {
810
804
  buildSectionPlayerTag() {
811
805
  return this.sectionPlayerLayout === "vertical" ? Ee : be;
812
806
  }
807
+ cleanupTtsForSectionNavigation(e) {
808
+ if (e.currentSectionId && e.previousSectionId && e.currentSectionId === e.previousSectionId) return;
809
+ const t = this.coordinator?.ttsService;
810
+ if (t) {
811
+ try {
812
+ t.stop?.();
813
+ } catch {
814
+ }
815
+ try {
816
+ t.requestControlHandoff?.();
817
+ } catch {
818
+ }
819
+ }
820
+ }
813
821
  syncCurrentSectionSessionIntoAssessment() {
814
822
  const e = this.controller;
815
823
  if (!e) return;
816
- const t = this.sectionControllerRef || this.sectionHost?.firstElementChild?.getSectionController?.();
824
+ const t = this.sectionHost?.firstElementChild?.getSectionController?.() || this.sectionControllerRef;
817
825
  if (!t?.getSession) return;
818
826
  const s = e.getCurrentSection();
819
827
  s && e.updateSectionSession(s.sectionIdentifier, t.getSession());
820
828
  }
821
829
  attachSectionControllerReadyListener(e, t) {
822
830
  e.addEventListener("section-controller-ready", async (s) => {
823
- this.sectionControllerRef = s.detail?.controller || null;
824
- const n = this.controller?.getSectionSession(t);
825
- n && this.sectionControllerRef?.applySession && await this.sectionControllerRef.applySession(n, { mode: "replace" });
831
+ const n = s.detail;
832
+ this.sectionControllerRef = n?.controller || null;
833
+ const i = this.controller?.getSectionSession(t);
834
+ i && this.sectionControllerRef?.applySession && await this.sectionControllerRef.applySession(i, { mode: "replace" });
826
835
  }), e.addEventListener("session-changed", () => this.syncCurrentSectionSessionIntoAssessment()), e.addEventListener("item-session-changed", () => this.syncCurrentSectionSessionIntoAssessment());
827
836
  }
828
837
  render() {
829
838
  const e = this.controller;
830
- this.attachInstrumentationBridge(), this.innerHTML = "";
839
+ this.attachInstrumentationBridge(), this.innerHTML = "", this.sectionControllerRef = null;
831
840
  const t = document.createElement("div");
832
841
  t.className = "pie-assessment-player-default";
833
842
  const s = document.createElement("style");
@@ -880,7 +889,7 @@ var we = class extends HTMLElement {
880
889
  }
881
890
  `, t.appendChild(s);
882
891
  const n = this.getSnapshot();
883
- if (Pe(this.showNavigation, !0)) {
892
+ if (we(this.showNavigation, !0)) {
884
893
  const o = document.createElement("div");
885
894
  o.className = "pie-assessment-player-navigation";
886
895
  const r = document.createElement("div");
@@ -901,7 +910,7 @@ var we = class extends HTMLElement {
901
910
  const d = typeof this.debug == "boolean" ? String(this.debug) : this.debug;
902
911
  r.setAttribute("debug", d);
903
912
  }
904
- r.section = c.section, this.env && (r.env = this.env), this.coordinator && (r.coordinator = this.coordinator), this.sectionPlayerRuntime && (r.runtime = this.sectionPlayerRuntime), this.sectionPlayerPlayer && (r.player = this.sectionPlayerPlayer), this.attachSectionControllerReadyListener(r, c.sectionIdentifier), i.appendChild(r);
913
+ r.section = c.section, this.env && (r.env = this.env), this.coordinator && (r.coordinator = this.coordinator), this.sectionPlayerRuntime && (r.runtime = this.sectionPlayerRuntime), r.hooks = { cardTitleFormatter: this.hooks?.cardTitleFormatter }, this.attachSectionControllerReadyListener(r, c.sectionIdentifier), i.appendChild(r);
905
914
  }
906
915
  t.appendChild(i), this.appendChild(t);
907
916
  }
@@ -1002,7 +1011,7 @@ var we = class extends HTMLElement {
1002
1011
  return Promise.race([t, s]);
1003
1012
  }
1004
1013
  };
1005
- _("pie-assessment-player-default", we, "assessment player default tag");
1014
+ _("pie-assessment-player-default", Pe, "assessment player default tag");
1006
1015
  function Ne(e, t = !1) {
1007
1016
  if (e == null) return t;
1008
1017
  if (typeof e == "boolean") return e;
package/dist/types.d.ts CHANGED
@@ -62,6 +62,7 @@ export interface AssessmentSessionPersistenceFactoryDefaults {
62
62
  createDefaultPersistence: () => AssessmentSessionPersistenceStrategy | Promise<AssessmentSessionPersistenceStrategy>;
63
63
  }
64
64
  export interface AssessmentPlayerHooks {
65
+ cardTitleFormatter?: (context: Record<string, unknown>) => string | null | undefined;
65
66
  createAssessmentDeliveryPlan?: (context: AssessmentDeliveryPlanContext, defaults: AssessmentDeliveryPlanFactoryDefaults) => AssessmentDeliveryPlan | Promise<AssessmentDeliveryPlan>;
66
67
  createAssessmentSessionPersistence?: (context: AssessmentSessionPersistenceContext, defaults: AssessmentSessionPersistenceFactoryDefaults) => AssessmentSessionPersistenceStrategy | Promise<AssessmentSessionPersistenceStrategy>;
67
68
  onBeforeAssessmentHydrate?: (context: AssessmentSessionPersistenceContext) => void | Promise<void>;
@@ -101,11 +102,6 @@ export interface AssessmentPlayerRuntimeConfig {
101
102
  * Useful for advanced configuration such as runtime.player.loaderConfig observability wiring.
102
103
  */
103
104
  sectionPlayerRuntime?: SectionPlayerRuntimeOverrides | null;
104
- /**
105
- * Optional section-player player overrides passed through by assessment-player.
106
- * Useful for directly supplying runtime-equivalent player settings such as loaderConfig.
107
- */
108
- sectionPlayerPlayer?: SectionPlayerLoaderOverrides | null;
109
105
  hooks?: AssessmentPlayerHooks;
110
106
  }
111
107
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,iBAAiB,EACjB,GAAG,EACH,QAAQ,EACR,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAElF,MAAM,WAAW,sBAAsB;IACtC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,gCAAgC;IAChD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,yBAAyB,EAAE,MAAM,EAAE,CAAC;IACpC,wBAAwB,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,4BAA4B;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,6BAA6B;IAC7C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,sBAAsB,GAAG,IAAI,CAAC;CACvC;AAED,MAAM,WAAW,iBAAiB;IACjC,OAAO,EAAE,CAAC,CAAC;IACX,kCAAkC,EAAE,MAAM,CAAC;IAC3C,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,gCAAgC,CAAC;IAClD,WAAW,EAAE,4BAA4B,CAAC;IAC1C,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,6BAA6B,CAAC,CAAC;IAC/D,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,yBAAyB;IACzC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,iBAAiB,CAAC;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACtC,QAAQ,EAAE,yBAAyB,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,6BAA6B;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,oBAAoB,GAAG,IAAI,CAAC;CACxC;AAED,MAAM,WAAW,qCAAqC;IACrD,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;CACxD;AAED,MAAM,WAAW,mCAAmC;IACnD,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oCAAoC;IACpD,WAAW,CACV,OAAO,EAAE,mCAAmC,GAC1C,iBAAiB,GAAG,IAAI,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IAChE,WAAW,CACV,OAAO,EAAE,mCAAmC,EAC5C,OAAO,EAAE,iBAAiB,GAAG,IAAI,GAC/B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,YAAY,CAAC,CACZ,OAAO,EAAE,mCAAmC,GAC1C,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,2CAA2C;IAC3D,wBAAwB,EAAE,MACvB,oCAAoC,GACpC,OAAO,CAAC,oCAAoC,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,qBAAqB;IACrC,kBAAkB,CAAC,EAAE,CACpB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC/B,4BAA4B,CAAC,EAAE,CAC9B,OAAO,EAAE,6BAA6B,EACtC,QAAQ,EAAE,qCAAqC,KAC3C,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAC9D,kCAAkC,CAAC,EAAE,CACpC,OAAO,EAAE,mCAAmC,EAC5C,QAAQ,EAAE,2CAA2C,KAEnD,oCAAoC,GACpC,OAAO,CAAC,oCAAoC,CAAC,CAAC;IACjD,yBAAyB,CAAC,EAAE,CAC3B,OAAO,EAAE,mCAAmC,KACxC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,yBAAyB,CAAC,EAAE,CAC3B,OAAO,EAAE,mCAAmC,EAC5C,OAAO,EAAE,iBAAiB,GAAG,IAAI,KAC7B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,2BAA2B,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E,6BAA6B,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9E,OAAO,CAAC,EAAE,CACT,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE;QACR,KAAK,EACF,sBAAsB,GACtB,cAAc,GACd,cAAc,GACd,iBAAiB,GACjB,oBAAoB,GACpB,YAAY,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAClC,KACG,IAAI,CAAC;IACV,WAAW,CAAC,EAAE,CACb,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC7B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACpC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,iBAAiB,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,4BAA4B;IAC5C,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,6BAA6B;IAC7C,MAAM,CAAC,EAAE,4BAA4B,GAAG,IAAI,CAAC;IAC7C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,6BAA6B;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACzC,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,6BAA6B,GAAG,IAAI,CAAC;IAC5D,KAAK,CAAC,EAAE,qBAAqB,CAAC;CAC9B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pie-players/pie-assessment-player",
3
- "version": "0.3.28",
3
+ "version": "0.3.30",
4
4
  "type": "module",
5
5
  "description": "Assessment-level coordinator custom elements for orchestrating section-player instances",
6
6
  "license": "MIT",
@@ -49,16 +49,16 @@
49
49
  "lint": "biome check ."
50
50
  },
51
51
  "dependencies": {
52
- "@pie-players/pie-assessment-toolkit": "0.3.28",
53
- "@pie-players/pie-players-shared": "0.3.28",
54
- "@pie-players/pie-section-player": "0.3.28"
52
+ "@pie-players/pie-assessment-toolkit": "0.3.30",
53
+ "@pie-players/pie-players-shared": "0.3.30",
54
+ "@pie-players/pie-section-player": "0.3.30"
55
55
  },
56
56
  "devDependencies": {
57
57
  "@axe-core/playwright": "^4.11.1",
58
- "@playwright/test": "^1.58.2",
59
- "@biomejs/biome": "^2.3.13",
58
+ "@playwright/test": "^1.59.1",
59
+ "@biomejs/biome": "^2.4.12",
60
60
  "typescript": "^5.9.3",
61
- "vite": "^8.0.1",
61
+ "vite": "^8.0.10",
62
62
  "vite-plugin-dts": "^4.5.4"
63
63
  },
64
64
  "homepage": "https://github.com/pie-framework/pie-players/tree/master/packages/assessment-player#readme",