@examplary/qti 0.0.1 → 1.0.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.
- package/README.md +6 -1
- package/dist/ims/ims-package.d.ts +1 -1
- package/dist/ims/ims-package.js +2 -2
- package/dist/ims/ims-package.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/qti/interactions/associate-interaction.d.ts +36 -0
- package/dist/qti/interactions/associate-interaction.js +46 -0
- package/dist/qti/interactions/associate-interaction.js.map +1 -0
- package/dist/qti/interactions/choice-interaction.d.ts +36 -0
- package/dist/qti/interactions/choice-interaction.js +43 -0
- package/dist/qti/interactions/choice-interaction.js.map +1 -0
- package/dist/qti/interactions/drawing-interaction.d.ts +25 -0
- package/dist/qti/interactions/drawing-interaction.js +30 -0
- package/dist/qti/interactions/drawing-interaction.js.map +1 -0
- package/dist/qti/interactions/end-attempt-interaction.d.ts +21 -0
- package/dist/qti/interactions/end-attempt-interaction.js +27 -0
- package/dist/qti/interactions/end-attempt-interaction.js.map +1 -0
- package/dist/qti/interactions/extended-text-interaction.d.ts +28 -0
- package/dist/qti/interactions/extended-text-interaction.js +34 -0
- package/dist/qti/interactions/extended-text-interaction.js.map +1 -0
- package/dist/qti/interactions/gap-match-interaction.d.ts +34 -0
- package/dist/qti/interactions/gap-match-interaction.js +46 -0
- package/dist/qti/interactions/gap-match-interaction.js.map +1 -0
- package/dist/qti/interactions/graphic-associate-interaction.d.ts +37 -0
- package/dist/qti/interactions/graphic-associate-interaction.js +47 -0
- package/dist/qti/interactions/graphic-associate-interaction.js.map +1 -0
- package/dist/qti/interactions/graphic-gap-match-interaction.d.ts +42 -0
- package/dist/qti/interactions/graphic-gap-match-interaction.js +64 -0
- package/dist/qti/interactions/graphic-gap-match-interaction.js.map +1 -0
- package/dist/qti/interactions/graphic-order-interaction.d.ts +28 -0
- package/dist/qti/interactions/graphic-order-interaction.js +46 -0
- package/dist/qti/interactions/graphic-order-interaction.js.map +1 -0
- package/dist/qti/interactions/hotspot-interaction.d.ts +41 -0
- package/dist/qti/interactions/hotspot-interaction.js +46 -0
- package/dist/qti/interactions/hotspot-interaction.js.map +1 -0
- package/dist/qti/interactions/hottext-interaction.d.ts +22 -0
- package/dist/qti/interactions/hottext-interaction.js +31 -0
- package/dist/qti/interactions/hottext-interaction.js.map +1 -0
- package/dist/qti/interactions/index.d.ts +63 -0
- package/dist/qti/interactions/index.js +64 -0
- package/dist/qti/interactions/index.js.map +1 -0
- package/dist/qti/interactions/inline-choice-interaction.d.ts +30 -0
- package/dist/qti/interactions/inline-choice-interaction.js +40 -0
- package/dist/qti/interactions/inline-choice-interaction.js.map +1 -0
- package/dist/qti/interactions/interaction.d.ts +20 -0
- package/dist/qti/interactions/interaction.js +24 -0
- package/dist/qti/interactions/interaction.js.map +1 -0
- package/dist/qti/interactions/match-interaction.d.ts +31 -0
- package/dist/qti/interactions/match-interaction.js +63 -0
- package/dist/qti/interactions/match-interaction.js.map +1 -0
- package/dist/qti/interactions/media-interaction.d.ts +31 -0
- package/dist/qti/interactions/media-interaction.js +36 -0
- package/dist/qti/interactions/media-interaction.js.map +1 -0
- package/dist/qti/interactions/order-interaction.d.ts +28 -0
- package/dist/qti/interactions/order-interaction.js +43 -0
- package/dist/qti/interactions/order-interaction.js.map +1 -0
- package/dist/qti/interactions/position-object-interaction.d.ts +36 -0
- package/dist/qti/interactions/position-object-interaction.js +43 -0
- package/dist/qti/interactions/position-object-interaction.js.map +1 -0
- package/dist/qti/interactions/select-point-interaction.d.ts +28 -0
- package/dist/qti/interactions/select-point-interaction.js +33 -0
- package/dist/qti/interactions/select-point-interaction.js.map +1 -0
- package/dist/qti/interactions/slider-interaction.d.ts +26 -0
- package/dist/qti/interactions/slider-interaction.js +32 -0
- package/dist/qti/interactions/slider-interaction.js.map +1 -0
- package/dist/qti/interactions/text-entry-interaction.d.ts +25 -0
- package/dist/qti/interactions/text-entry-interaction.js +31 -0
- package/dist/qti/interactions/text-entry-interaction.js.map +1 -0
- package/dist/qti/interactions/upload-interaction.d.ts +19 -0
- package/dist/qti/interactions/upload-interaction.js +25 -0
- package/dist/qti/interactions/upload-interaction.js.map +1 -0
- package/dist/qti/qti-element.d.ts +11 -0
- package/dist/qti/qti-element.js +29 -0
- package/dist/qti/qti-element.js.map +1 -0
- package/dist/qti/qti-item.d.ts +7 -3
- package/dist/qti/qti-item.js +18 -21
- package/dist/qti/qti-item.js.map +1 -1
- package/dist/qti/qti-test.d.ts +5 -3
- package/dist/qti/qti-test.js +8 -6
- package/dist/qti/qti-test.js.map +1 -1
- package/dist/utils/html.d.ts +2 -0
- package/dist/utils/html.js +15 -0
- package/dist/utils/html.js.map +1 -0
- package/package.json +1 -1
package/dist/qti/qti-item.js
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
import { create
|
|
1
|
+
import { create } from "xmlbuilder2/lib/index.js";
|
|
2
|
+
import { QtiElement } from "./qti-element";
|
|
2
3
|
import { ImsManifestResourceType } from "../ims/ims-manifest";
|
|
4
|
+
import { appendHtmlFragment } from "../utils/html";
|
|
3
5
|
export var ResponseProcessingTemplate;
|
|
4
6
|
(function (ResponseProcessingTemplate) {
|
|
5
7
|
ResponseProcessingTemplate["MatchCorrect"] = "https://purl.imsglobal.org/spec/qti/v3p0/rptemplates/match_correct.xml";
|
|
6
8
|
ResponseProcessingTemplate["MapResponse"] = "https://purl.imsglobal.org/spec/qti/v3p0/rptemplates/map_response.xml";
|
|
7
9
|
ResponseProcessingTemplate["MapResponsePoint"] = "https://purl.imsglobal.org/spec/qti/v3p0/rptemplates/map_response_point.xml";
|
|
8
10
|
})(ResponseProcessingTemplate || (ResponseProcessingTemplate = {}));
|
|
9
|
-
export class QtiItem {
|
|
11
|
+
export class QtiItem extends QtiElement {
|
|
10
12
|
constructor(options) {
|
|
13
|
+
super();
|
|
11
14
|
this.responseDeclarations = new Map();
|
|
12
15
|
this.identifier = options?.identifier || "item-" + Date.now();
|
|
13
16
|
this.adaptive = options?.adaptive;
|
|
@@ -31,11 +34,8 @@ export class QtiItem {
|
|
|
31
34
|
"xml:lang": this.language,
|
|
32
35
|
});
|
|
33
36
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
}
|
|
37
|
-
addToPackage(pkg) {
|
|
38
|
-
pkg.addResource({
|
|
37
|
+
async addToPackage(pkg) {
|
|
38
|
+
await pkg.addResource({
|
|
39
39
|
identifier: this.identifier,
|
|
40
40
|
type: ImsManifestResourceType.imsqti_item_xmlv3p0,
|
|
41
41
|
}, [
|
|
@@ -46,7 +46,7 @@ export class QtiItem {
|
|
|
46
46
|
]);
|
|
47
47
|
}
|
|
48
48
|
addToTest(test) {
|
|
49
|
-
test.addItemReference(this.identifier, `
|
|
49
|
+
test.addItemReference(this.identifier, `item-${this.identifier}.xml`);
|
|
50
50
|
}
|
|
51
51
|
getOrCreateItemBody() {
|
|
52
52
|
if (!this.itemBody) {
|
|
@@ -55,18 +55,11 @@ export class QtiItem {
|
|
|
55
55
|
return this.itemBody;
|
|
56
56
|
}
|
|
57
57
|
addItemBodyFromHtml(html) {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
const frag = fragment({
|
|
64
|
-
invalidCharReplacement: "�",
|
|
65
|
-
}, `<div>
|
|
66
|
-
${this.title ? `<h1>${this.title}</h1>` : ""}
|
|
67
|
-
${html}
|
|
68
|
-
</div>`);
|
|
69
|
-
this.getOrCreateItemBody().import(frag);
|
|
58
|
+
const content = `${this.title ? `<h1>${this.title}</h1>` : ""}${html}`;
|
|
59
|
+
appendHtmlFragment(content, this.getOrCreateItemBody());
|
|
60
|
+
}
|
|
61
|
+
addInteraction(interaction) {
|
|
62
|
+
this.getOrCreateItemBody().import(interaction.getXmlBuilder());
|
|
70
63
|
}
|
|
71
64
|
addPciInteraction(interaction, externalModules = false) {
|
|
72
65
|
const pci = this.getOrCreateItemBody().ele("qti-portable-custom-interaction", {
|
|
@@ -95,6 +88,7 @@ export class QtiItem {
|
|
|
95
88
|
cardinality: "single",
|
|
96
89
|
baseType: "string",
|
|
97
90
|
}) {
|
|
91
|
+
// TODO: some implementations expect the response to be defined before the body, so we should enforce order
|
|
98
92
|
if (this.responseDeclarations.has(responseDeclaration.identifier)) {
|
|
99
93
|
throw new Error(`Response declaration with identifier ${responseDeclaration.identifier} already exists.`);
|
|
100
94
|
}
|
|
@@ -142,8 +136,11 @@ export class QtiItem {
|
|
|
142
136
|
outcome
|
|
143
137
|
.ele("qti-default-value")
|
|
144
138
|
.ele("qti-value")
|
|
145
|
-
.txt(outcomeDeclaration.defaultValue
|
|
139
|
+
.txt(outcomeDeclaration.defaultValue.toString());
|
|
146
140
|
}
|
|
147
141
|
}
|
|
142
|
+
getRootElement() {
|
|
143
|
+
return this.item;
|
|
144
|
+
}
|
|
148
145
|
}
|
|
149
146
|
//# sourceMappingURL=qti-item.js.map
|
package/dist/qti/qti-item.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qti-item.js","sourceRoot":"","sources":["../../src/qti/qti-item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"qti-item.js","sourceRoot":"","sources":["../../src/qti/qti-item.ts"],"names":[],"mappings":"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"}
|
package/dist/qti/qti-test.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { XMLBuilder } from "xmlbuilder2/lib/interfaces";
|
|
2
|
+
import { QtiElement } from "./qti-element";
|
|
1
3
|
import { ImsPackage } from "../ims/ims-package";
|
|
2
4
|
type QtiTestOptions = {
|
|
3
5
|
identifier?: string;
|
|
@@ -6,7 +8,7 @@ type QtiTestOptions = {
|
|
|
6
8
|
toolName?: string;
|
|
7
9
|
toolVersion?: string;
|
|
8
10
|
};
|
|
9
|
-
export declare class QtiTest {
|
|
11
|
+
export declare class QtiTest extends QtiElement {
|
|
10
12
|
identifier: string;
|
|
11
13
|
title?: string;
|
|
12
14
|
language?: string;
|
|
@@ -17,9 +19,9 @@ export declare class QtiTest {
|
|
|
17
19
|
private section;
|
|
18
20
|
private outcomeProcessing;
|
|
19
21
|
constructor(options?: QtiTestOptions);
|
|
20
|
-
|
|
21
|
-
addToPackage(pkg: ImsPackage): void;
|
|
22
|
+
addToPackage(pkg: ImsPackage): Promise<void>;
|
|
22
23
|
addItemReference(itemIdentifier: string, href: string): void;
|
|
23
24
|
private addOutcomeDeclaration;
|
|
25
|
+
protected getRootElement(): XMLBuilder;
|
|
24
26
|
}
|
|
25
27
|
export {};
|
package/dist/qti/qti-test.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { create } from "xmlbuilder2/lib/index.js";
|
|
2
|
+
import { QtiElement } from "./qti-element";
|
|
2
3
|
import { ImsManifestResourceType } from "../ims/ims-manifest";
|
|
3
|
-
export class QtiTest {
|
|
4
|
+
export class QtiTest extends QtiElement {
|
|
4
5
|
constructor(options) {
|
|
6
|
+
super();
|
|
5
7
|
this.identifier = options?.identifier || "test-" + Date.now();
|
|
6
8
|
this.title = options?.title;
|
|
7
9
|
this.language = options?.language;
|
|
@@ -33,11 +35,8 @@ export class QtiTest {
|
|
|
33
35
|
this.addOutcomeDeclaration("SCORE");
|
|
34
36
|
this.addOutcomeDeclaration("MAX_SCORE");
|
|
35
37
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
addToPackage(pkg) {
|
|
40
|
-
pkg.addResource({
|
|
38
|
+
async addToPackage(pkg) {
|
|
39
|
+
await pkg.addResource({
|
|
41
40
|
identifier: this.identifier,
|
|
42
41
|
type: ImsManifestResourceType.imsqti_test_xmlv3p0,
|
|
43
42
|
}, [
|
|
@@ -72,5 +71,8 @@ export class QtiTest {
|
|
|
72
71
|
"variable-identifier": identifier,
|
|
73
72
|
});
|
|
74
73
|
}
|
|
74
|
+
getRootElement() {
|
|
75
|
+
return this.test;
|
|
76
|
+
}
|
|
75
77
|
}
|
|
76
78
|
//# sourceMappingURL=qti-test.js.map
|
package/dist/qti/qti-test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qti-test.js","sourceRoot":"","sources":["../../src/qti/qti-test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"qti-test.js","sourceRoot":"","sources":["../../src/qti/qti-test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { fragment } from "xmlbuilder2";
|
|
2
|
+
export const appendHtmlFragment = (html, toElement) => {
|
|
3
|
+
// TODO: support inline math -> MathML conversion
|
|
4
|
+
// https://www.imsglobal.org/spec/qti/v3p0/impl#h.z1siiqfxmyc5
|
|
5
|
+
// TODO: convert other custom web components to valid HTML5
|
|
6
|
+
// file-attachment
|
|
7
|
+
// page-clipping
|
|
8
|
+
const doc = fragment({
|
|
9
|
+
invalidCharReplacement: "�",
|
|
10
|
+
}, `<div>${html}</div>`);
|
|
11
|
+
doc.each((child) => {
|
|
12
|
+
toElement.import(child);
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=html.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/utils/html.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAAY,EAAE,SAAqB,EAAE,EAAE;IACxE,iDAAiD;IACjD,8DAA8D;IAE9D,2DAA2D;IAC3D,kBAAkB;IAClB,gBAAgB;IAEhB,MAAM,GAAG,GAAG,QAAQ,CAClB;QACE,sBAAsB,EAAE,GAAG;KAC5B,EACD,QAAQ,IAAI,QAAQ,CACrB,CAAC;IAEF,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;QACjB,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
|