@longsightgroup/qti3-player 0.1.2 → 0.2.1

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
@@ -39,6 +39,35 @@ player?.addEventListener("qti-statechange", (event) => {
39
39
  });
40
40
  ```
41
41
 
42
+ ## Player Chrome Messages
43
+
44
+ The player keeps authored QTI content language separate from player chrome such as
45
+ remove buttons. Chrome language defaults to the player `languageOfInterface` property,
46
+ the `language-of-interface` attribute, browser language, document language, then
47
+ English. Hosts can override it when delivery settings require a fixed interface language.
48
+
49
+ Built-in catalogs are currently available for English, Spanish (`es-MX`, `es-ES`),
50
+ Swedish (`sv-SE`), German (`de-DE`), Portuguese (`pt-BR`, `pt-PT`), and French
51
+ (`fr-FR`, `fr-CA`).
52
+
53
+ ```ts
54
+ player.languageOfInterface = "es-MX";
55
+ player.messages = {
56
+ remove: () => "Eliminar",
57
+ removePair: ({ label }) => `Eliminar ${label}`,
58
+ };
59
+ ```
60
+
61
+ ## Portable Custom Interactions
62
+
63
+ For `qti-portable-custom-interaction`, the player renders a
64
+ `qti3-portable-custom-host` element, passes small module/configuration metadata through
65
+ `dataset` attributes, and emits `qti-portable-custom-mount` with the full parsed
66
+ definition. Host code can attach a PCI runtime and send response/state updates back with
67
+ `qti3-portable-custom-response`.
68
+ Production sandboxing, CSP, origin policy, and audit logging belong to the host delivery
69
+ system.
70
+
42
71
  ## Styling
43
72
 
44
73
  The player uses light DOM and is style-neutral by design. Host applications can style
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { type QtiAssessmentItem, type QtiAttemptStatus, type QtiAttemptStateV1, type QtiDiagnostic, type QtiScoreResult, type QtiValue } from "@longsightgroup/qti3-core";
1
+ import { type QtiAssessmentItem, type QtiAttemptStatus, type QtiAttemptStateV1, type QtiDiagnostic, type QtiInteraction, type QtiPortableCustomDefinition, type QtiPortableCustomStateValue, type QtiScoreResult, type QtiCatalogSupportResolution, type QtiCatalogSupportResolutionOptions, type QtiTextToSpeechTraversal, type QtiValue } from "@longsightgroup/qti3-core";
2
2
  export interface QtiPlayerSessionControl {
3
3
  validateResponses?: boolean | undefined;
4
4
  showFeedback?: boolean | undefined;
@@ -15,6 +15,14 @@ export interface QtiPlayerLoadOptions {
15
15
  fetchXml?: QtiPlayerFetchXml | undefined;
16
16
  resolveAsset?: QtiPlayerResolveAsset | undefined;
17
17
  }
18
+ export interface QtiPlayerRemoveMessageParams {
19
+ label: string;
20
+ }
21
+ export interface QtiPlayerMessages {
22
+ remove: () => string;
23
+ removePair: (params: QtiPlayerRemoveMessageParams) => string;
24
+ }
25
+ export type QtiPlayerMessageOverrides = Partial<QtiPlayerMessages>;
18
26
  export interface QtiReadyEventDetail {
19
27
  item: QtiAssessmentItem;
20
28
  }
@@ -25,6 +33,14 @@ export interface QtiResponseChangeEventDetail {
25
33
  responseIdentifier: string;
26
34
  value: QtiValue;
27
35
  }
36
+ export interface QtiPortableCustomMountEventDetail {
37
+ responseIdentifier: string;
38
+ interaction: QtiInteraction;
39
+ definition: QtiPortableCustomDefinition;
40
+ host: HTMLElement;
41
+ value: QtiValue;
42
+ state?: QtiPortableCustomStateValue | undefined;
43
+ }
28
44
  export type QtiScoreEventDetail = QtiScoreResult;
29
45
  export interface QtiValidationEventDetail {
30
46
  validationMessages: QtiDiagnostic[];
@@ -40,6 +56,7 @@ export interface QtiAssessmentItemPlayerEventDetailMap {
40
56
  "qti-ready": QtiReadyEventDetail;
41
57
  "qti-statechange": QtiStateChangeEventDetail;
42
58
  "qti-responsechange": QtiResponseChangeEventDetail;
59
+ "qti-portable-custom-mount": QtiPortableCustomMountEventDetail;
43
60
  "qti-score": QtiScoreEventDetail;
44
61
  "qti-validation": QtiValidationEventDetail;
45
62
  "qti-suspend": QtiSuspendEventDetail;
@@ -52,11 +69,21 @@ export type QtiAssessmentItemPlayerCustomEventMap = {
52
69
  };
53
70
  declare const HTMLElementBase: typeof HTMLElement;
54
71
  export declare class QtiAssessmentItemPlayer extends HTMLElementBase {
72
+ static get observedAttributes(): string[];
55
73
  private documentModel?;
56
74
  private session?;
57
75
  private resolveAsset;
58
76
  private validationMessages;
77
+ private languageOfInterfaceOverride;
78
+ private messageOverrides;
59
79
  private sessionControl;
80
+ get languageOfInterface(): string;
81
+ set languageOfInterface(value: string | undefined);
82
+ get locale(): string;
83
+ set locale(value: string | undefined);
84
+ get messages(): QtiPlayerMessageOverrides;
85
+ set messages(value: QtiPlayerMessageOverrides | undefined);
86
+ attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void;
60
87
  loadXml(xml: string, options?: QtiPlayerLoadOptions): Promise<void>;
61
88
  loadUrl(url: string, options?: QtiPlayerLoadOptions): Promise<void>;
62
89
  scoreAttempt(options?: QtiScoreAttemptOptions): QtiScoreResult | undefined;
@@ -65,10 +92,15 @@ export declare class QtiAssessmentItemPlayer extends HTMLElementBase {
65
92
  suspend(): void;
66
93
  endAttempt(options?: QtiScoreAttemptOptions): void;
67
94
  serialize(): QtiAttemptStateV1 | undefined;
95
+ getTextToSpeechTraversal(): QtiTextToSpeechTraversal | undefined;
96
+ getCatalogSupportResolution(options?: QtiCatalogSupportResolutionOptions): QtiCatalogSupportResolution | undefined;
68
97
  private emitStateChange;
69
98
  private dispatchPlayerEvent;
99
+ private playerMessages;
100
+ private rerenderIfLoaded;
70
101
  private render;
71
102
  private renderInteraction;
103
+ private renderPortableCustomResponse;
72
104
  private renderEmbeddedInteraction;
73
105
  private renderContentNodes;
74
106
  private renderContentNode;
@@ -84,6 +116,8 @@ export declare class QtiAssessmentItemPlayer extends HTMLElementBase {
84
116
  private currentTemplateValue;
85
117
  private mathTemplateValue;
86
118
  private currentResponseValue;
119
+ private currentInteractionState;
120
+ private setPortableCustomValidity;
87
121
  private applyDefaultStyles;
88
122
  private resolveRenderedAssets;
89
123
  private validateResponses;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}