@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 +29 -0
- package/dist/index.d.ts +35 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +898 -104
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
- package/src/index.ts +1018 -107
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;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|