@pie-element/mc-populated-blank 0.2.10 → 0.2.12
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 +0 -2
- package/dist/author/index.js +186 -152
- package/dist/author/index.js.map +1 -1
- package/dist/controller/defaults.d.ts +41 -73
- package/dist/controller/defaults.d.ts.map +1 -1
- package/dist/controller/index.d.ts +154 -10
- package/dist/controller/index.d.ts.map +1 -1
- package/dist/controller/index.js +29 -30
- package/dist/controller/index.js.map +1 -1
- package/dist/delivery/computeAudioMode.d.ts +7 -0
- package/dist/delivery/computeAudioMode.d.ts.map +1 -0
- package/dist/delivery/computeChoiceCorrectness.d.ts +18 -0
- package/dist/delivery/computeChoiceCorrectness.d.ts.map +1 -0
- package/dist/delivery/computeDisplayState.d.ts +47 -0
- package/dist/delivery/computeDisplayState.d.ts.map +1 -0
- package/dist/delivery/computeLayoutProfile.d.ts +18 -0
- package/dist/delivery/computeLayoutProfile.d.ts.map +1 -0
- package/dist/delivery/computeLayoutStyle.d.ts +27 -0
- package/dist/delivery/computeLayoutStyle.d.ts.map +1 -0
- package/dist/delivery/index.d.ts.map +1 -1
- package/dist/delivery/index.js +1591 -927
- package/dist/delivery/index.js.map +1 -1
- package/dist/delivery/variant-css-map.d.ts.map +1 -1
- package/dist/index.iife.d.ts +151 -10
- package/dist/index.iife.d.ts.map +1 -1
- package/dist/index.iife.js +233 -114
- package/dist/index.js +1591 -927
- package/dist/index.js.map +1 -1
- package/dist/print/index.js +194 -166
- package/dist/print/index.js.map +1 -1
- package/dist/shared/layoutLimits.d.ts +40 -0
- package/dist/shared/layoutLimits.d.ts.map +1 -0
- package/dist/shared/types.d.ts +82 -0
- package/dist/shared/types.d.ts.map +1 -0
- package/package.json +5 -14
- package/src/author/Author.svelte +0 -41
- package/src/author/index.ts +0 -28
- package/src/controller/defaults.ts +0 -91
- package/src/controller/index.ts +0 -359
- package/src/delivery/McPopulatedBlank.svelte +0 -1246
- package/src/delivery/cqt-css/sel-r1-g-stem.css +0 -29
- package/src/delivery/cqt-css/sel-r1-gg-plus.css +0 -29
- package/src/delivery/cqt-css/sel-r1-ggplus.css +0 -34
- package/src/delivery/cqt-css/sel-r1-gplusggg.css +0 -20
- package/src/delivery/cqt-css/sel-r1-plusggg.css +0 -20
- package/src/delivery/cqt-css/sel-r1-s3.css +0 -91
- package/src/delivery/cqt-css/sel-vic.css +0 -38
- package/src/delivery/cqt-css/sr-vic.css +0 -14
- package/src/delivery/index.ts +0 -103
- package/src/delivery/variant-css-map.ts +0 -110
- package/src/index.iife.ts +0 -13
- package/src/index.ts +0 -1
- package/src/print/Print.svelte +0 -95
- package/src/print/index.ts +0 -18
- package/src/types/css-raw.d.ts +0 -4
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export type LayoutLimits = {
|
|
2
|
+
blankStandaloneWidthRem: number;
|
|
3
|
+
blankWideWidthRem: number;
|
|
4
|
+
blankUnderlineWidthPx: number;
|
|
5
|
+
blankUnderlineWideWidthPx: number;
|
|
6
|
+
horizontalChoiceWidthPx: number;
|
|
7
|
+
horizontalChoiceWidthVw: number;
|
|
8
|
+
horizontalChoiceTileMinHeightRem: number;
|
|
9
|
+
horizontalChoiceContentMinHeightRem: number;
|
|
10
|
+
selectedImageMaxHeightRem: number;
|
|
11
|
+
choiceImageMaxHeightRem: number;
|
|
12
|
+
listenButtonSizePx: number;
|
|
13
|
+
stimulusMinColumnPx: number;
|
|
14
|
+
textMinColumnPx: number;
|
|
15
|
+
legendMaxChars: number;
|
|
16
|
+
choiceGroupGapRem: number;
|
|
17
|
+
choiceRowGapRem: number;
|
|
18
|
+
toggleButtonGapRem: number;
|
|
19
|
+
horizontalChoiceRadioTopMarginRem: number;
|
|
20
|
+
audioBlankTemplateMarginTopRem: number;
|
|
21
|
+
audioBlankTemplateMarginBottomRem: number;
|
|
22
|
+
audioInstructionsMaxWidthPx: number;
|
|
23
|
+
narrowHorizontalChoiceMaxWidthPx: number;
|
|
24
|
+
stimulusGridColumnGapRem: number;
|
|
25
|
+
stimulusGridRowGapRem: number;
|
|
26
|
+
stimulusSentenceMarginTopRem: number;
|
|
27
|
+
stimulusChoicesMarginTopRem: number;
|
|
28
|
+
tokenGridColumnGapRem: number;
|
|
29
|
+
tokenGridRowGapRem: number;
|
|
30
|
+
tokenTemplateMarginTopRem: number;
|
|
31
|
+
tokenInlineTokenGapRem: number;
|
|
32
|
+
tokenChoicesMarginTopRem: number;
|
|
33
|
+
inlineGridColumnGapRem: number;
|
|
34
|
+
inlineGridRowGapRem: number;
|
|
35
|
+
inlineTemplateMarginTopRem: number;
|
|
36
|
+
inlineChoicesMarginTopRem: number;
|
|
37
|
+
};
|
|
38
|
+
/** Baseline values tuned to match historical CQT visuals; override via model.layoutLimits. */
|
|
39
|
+
export declare const DEFAULT_LAYOUT_LIMITS: LayoutLimits;
|
|
40
|
+
//# sourceMappingURL=layoutLimits.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layoutLimits.d.ts","sourceRoot":"","sources":["../../src/shared/layoutLimits.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG;IACzB,uBAAuB,EAAE,MAAM,CAAC;IAChC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,yBAAyB,EAAE,MAAM,CAAC;IAClC,uBAAuB,EAAE,MAAM,CAAC;IAChC,uBAAuB,EAAE,MAAM,CAAC;IAChC,gCAAgC,EAAE,MAAM,CAAC;IACzC,mCAAmC,EAAE,MAAM,CAAC;IAC5C,yBAAyB,EAAE,MAAM,CAAC;IAClC,uBAAuB,EAAE,MAAM,CAAC;IAChC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iCAAiC,EAAE,MAAM,CAAC;IAC1C,8BAA8B,EAAE,MAAM,CAAC;IACvC,iCAAiC,EAAE,MAAM,CAAC;IAC1C,2BAA2B,EAAE,MAAM,CAAC;IACpC,gCAAgC,EAAE,MAAM,CAAC;IACzC,wBAAwB,EAAE,MAAM,CAAC;IACjC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,4BAA4B,EAAE,MAAM,CAAC;IACrC,2BAA2B,EAAE,MAAM,CAAC;IACpC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,yBAAyB,EAAE,MAAM,CAAC;IAClC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,wBAAwB,EAAE,MAAM,CAAC;IACjC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,0BAA0B,EAAE,MAAM,CAAC;IACnC,yBAAyB,EAAE,MAAM,CAAC;CACnC,CAAC;AAEF,8FAA8F;AAC9F,eAAO,MAAM,qBAAqB,EAAE,YAoCnC,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import type { LayoutLimits } from './layoutLimits';
|
|
2
|
+
export type McpbChoiceMode = 'text' | 'image';
|
|
3
|
+
export type McpbInteractionMode = 'populate_blank' | 'audio_mc_only';
|
|
4
|
+
export type McpbDeliveryMode = 'gather' | 'view' | 'evaluate' | 'authoring' | 'print';
|
|
5
|
+
export type McpbRole = 'student' | 'instructor';
|
|
6
|
+
export type McpbCorrectness = 'correct' | 'incorrect' | 'unanswered';
|
|
7
|
+
export interface McpbChoice {
|
|
8
|
+
id: string;
|
|
9
|
+
labelHtml?: string;
|
|
10
|
+
imageUrl?: string;
|
|
11
|
+
imageAlt?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface McpbAudioButtonSkin {
|
|
14
|
+
silentUrl: string;
|
|
15
|
+
playingUrl: string;
|
|
16
|
+
}
|
|
17
|
+
export interface McpbUiText {
|
|
18
|
+
answerChoices?: string;
|
|
19
|
+
selectedAnswerInSentence?: string;
|
|
20
|
+
showCorrectAnswer?: string;
|
|
21
|
+
hideCorrectAnswer?: string;
|
|
22
|
+
clickToEnableAutoplay?: string;
|
|
23
|
+
audioResourceUnavailable?: string;
|
|
24
|
+
transcriptLabel?: string;
|
|
25
|
+
listenLabelEn?: string;
|
|
26
|
+
listenLabelEs?: string;
|
|
27
|
+
listenSilentAlt?: string;
|
|
28
|
+
listenPlayingAlt?: string;
|
|
29
|
+
listenSilentAltEs?: string;
|
|
30
|
+
listenPlayingAltEs?: string;
|
|
31
|
+
}
|
|
32
|
+
export interface McpbQuestion {
|
|
33
|
+
id?: string;
|
|
34
|
+
element?: string;
|
|
35
|
+
prompt?: string;
|
|
36
|
+
promptEnabled?: boolean;
|
|
37
|
+
interactionMode?: McpbInteractionMode;
|
|
38
|
+
layoutProfile?: string;
|
|
39
|
+
choiceLayout?: string;
|
|
40
|
+
layoutProfilePresets?: Record<string, Partial<LayoutLimits>>;
|
|
41
|
+
layoutLimits?: Partial<LayoutLimits>;
|
|
42
|
+
audioButtonSkin?: McpbAudioButtonSkin | null;
|
|
43
|
+
audioButtonSkinsByLocale?: Record<string, McpbAudioButtonSkin>;
|
|
44
|
+
uiText?: McpbUiText;
|
|
45
|
+
sentenceHtml?: string;
|
|
46
|
+
template?: string;
|
|
47
|
+
choiceMode?: McpbChoiceMode;
|
|
48
|
+
choices?: McpbChoice[];
|
|
49
|
+
correctChoiceId?: string;
|
|
50
|
+
hasAudio?: boolean;
|
|
51
|
+
autoplayAudioEnabled?: boolean;
|
|
52
|
+
completeAudioEnabled?: boolean;
|
|
53
|
+
audioUrl?: string;
|
|
54
|
+
audioTranscript?: string;
|
|
55
|
+
showVisibleTranscript?: boolean;
|
|
56
|
+
useFeatureButtonAudio?: boolean;
|
|
57
|
+
locale?: string;
|
|
58
|
+
shuffle?: boolean;
|
|
59
|
+
lockChoiceOrder?: boolean;
|
|
60
|
+
teacherInstructions?: string;
|
|
61
|
+
teacherInstructionsEnabled?: boolean;
|
|
62
|
+
customType?: string;
|
|
63
|
+
}
|
|
64
|
+
export interface McpbSession {
|
|
65
|
+
id?: string;
|
|
66
|
+
element?: string;
|
|
67
|
+
choiceId?: string;
|
|
68
|
+
audioStartTime?: number;
|
|
69
|
+
audioEndTime?: number;
|
|
70
|
+
shuffledValues?: string[];
|
|
71
|
+
data?: {
|
|
72
|
+
shuffledValues?: string[];
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
export interface McpbEnv {
|
|
76
|
+
mode?: McpbDeliveryMode;
|
|
77
|
+
role?: McpbRole;
|
|
78
|
+
'@pie-element'?: {
|
|
79
|
+
lockChoiceOrder?: boolean;
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/mc-populated-blank",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.12",
|
|
4
4
|
"description": "Multiple-choice option populates an inline blank in a sentence template (Svelte 5 PIE element)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -10,34 +10,28 @@
|
|
|
10
10
|
},
|
|
11
11
|
"exports": {
|
|
12
12
|
".": {
|
|
13
|
-
"development": "./src/index.ts",
|
|
14
13
|
"types": "./dist/index.d.ts",
|
|
15
14
|
"default": "./dist/index.js"
|
|
16
15
|
},
|
|
17
16
|
"./delivery": {
|
|
18
|
-
"development": "./src/delivery/index.ts",
|
|
19
17
|
"types": "./dist/delivery/index.d.ts",
|
|
20
18
|
"default": "./dist/delivery/index.js"
|
|
21
19
|
},
|
|
22
20
|
"./controller": {
|
|
23
|
-
"development": "./src/controller/index.ts",
|
|
24
21
|
"types": "./dist/controller/index.d.ts",
|
|
25
22
|
"default": "./dist/controller/index.js"
|
|
26
23
|
},
|
|
27
24
|
"./author": {
|
|
28
|
-
"development": "./src/author/index.ts",
|
|
29
25
|
"types": "./dist/author/index.d.ts",
|
|
30
26
|
"default": "./dist/author/index.js"
|
|
31
27
|
},
|
|
32
28
|
"./print": {
|
|
33
|
-
"development": "./src/print/index.ts",
|
|
34
29
|
"types": "./dist/print/index.d.ts",
|
|
35
30
|
"default": "./dist/print/index.js"
|
|
36
31
|
}
|
|
37
32
|
},
|
|
38
33
|
"files": [
|
|
39
34
|
"dist",
|
|
40
|
-
"src",
|
|
41
35
|
"controller.js"
|
|
42
36
|
],
|
|
43
37
|
"sideEffects": false,
|
|
@@ -46,16 +40,13 @@
|
|
|
46
40
|
"dev": "vite",
|
|
47
41
|
"clean": "rm -rf dist tsconfig.tsbuildinfo"
|
|
48
42
|
},
|
|
49
|
-
"dependencies": {
|
|
50
|
-
"@pie-lib/styling-svelte": "0.1.2"
|
|
51
|
-
},
|
|
52
|
-
"peerDependencies": {
|
|
53
|
-
"svelte": "^5.0.0"
|
|
54
|
-
},
|
|
55
43
|
"devDependencies": {
|
|
44
|
+
"@pie-lib/delivery-events-svelte": "0.1.0",
|
|
45
|
+
"@pie-lib/styling-svelte": "0.1.2",
|
|
56
46
|
"@sveltejs/vite-plugin-svelte": "^7.0.0",
|
|
57
47
|
"svelte": "^5.54.0",
|
|
58
48
|
"typescript": "^5.9.3",
|
|
59
|
-
"vite": "^8.0.1"
|
|
49
|
+
"vite": "^8.0.1",
|
|
50
|
+
"vitest": "^4.1.0"
|
|
60
51
|
}
|
|
61
52
|
}
|
package/src/author/Author.svelte
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
<svelte:options
|
|
2
|
-
customElement={{
|
|
3
|
-
shadow: 'none',
|
|
4
|
-
props: {
|
|
5
|
-
model: { type: 'Object' },
|
|
6
|
-
},
|
|
7
|
-
}}
|
|
8
|
-
/>
|
|
9
|
-
|
|
10
|
-
<script lang="ts">
|
|
11
|
-
// Keep the same prop shape expected by the wrapper.
|
|
12
|
-
let { model = $bindable(), onChange }: { model?: any; onChange?: (model: any) => void } = $props();
|
|
13
|
-
</script>
|
|
14
|
-
|
|
15
|
-
<div class="mc-populated-blank-author-placeholder" role="status" aria-live="polite">
|
|
16
|
-
<p class="title">Author view placeholder</p>
|
|
17
|
-
<p class="body">This authoring interface is a placeholder and will be implemented later.</p>
|
|
18
|
-
</div>
|
|
19
|
-
|
|
20
|
-
<style>
|
|
21
|
-
.mc-populated-blank-author-placeholder {
|
|
22
|
-
max-width: 56rem;
|
|
23
|
-
margin: 24px auto;
|
|
24
|
-
padding: 20px;
|
|
25
|
-
border: 1px dashed #cbd5e1;
|
|
26
|
-
border-radius: 8px;
|
|
27
|
-
background: #f8fafc;
|
|
28
|
-
color: #334155;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
.title {
|
|
32
|
-
margin: 0 0 8px;
|
|
33
|
-
font-size: 1rem;
|
|
34
|
-
font-weight: 600;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
.body {
|
|
38
|
-
margin: 0;
|
|
39
|
-
font-size: 0.9rem;
|
|
40
|
-
}
|
|
41
|
-
</style>
|
package/src/author/index.ts
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import AuthorComponent from './Author.svelte';
|
|
2
|
-
|
|
3
|
-
const SvelteElementClass = (AuthorComponent as any).element;
|
|
4
|
-
|
|
5
|
-
class McPopulatedBlankAuthor extends SvelteElementClass {
|
|
6
|
-
private _model: any = null;
|
|
7
|
-
private _onChange: ((model: any) => void) | null = null;
|
|
8
|
-
|
|
9
|
-
set model(m: any) {
|
|
10
|
-
this._model = m;
|
|
11
|
-
super.model = m;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
get model() {
|
|
15
|
-
return this._model;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
set onChange(fn: (model: any) => void) {
|
|
19
|
-
this._onChange = fn;
|
|
20
|
-
(this as any).onChange = fn;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
get onChange() {
|
|
24
|
-
return this._onChange || (() => {});
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export default McPopulatedBlankAuthor;
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
/** Token authors must include exactly once in `template` (HTML). */
|
|
2
|
-
export const BLANK_TOKEN = '{{blank}}';
|
|
3
|
-
/** Baseline values tuned to match historical CQT visuals; override via model.layoutLimits. */
|
|
4
|
-
export const DEFAULT_LAYOUT_LIMITS = {
|
|
5
|
-
blankStandaloneWidthRem: 7,
|
|
6
|
-
blankWideWidthRem: 10,
|
|
7
|
-
blankUnderlineWidthPx: 2,
|
|
8
|
-
blankUnderlineWideWidthPx: 4,
|
|
9
|
-
horizontalChoiceWidthPx: 170,
|
|
10
|
-
horizontalChoiceWidthVw: 30,
|
|
11
|
-
horizontalChoiceTileMinHeightRem: 11,
|
|
12
|
-
horizontalChoiceContentMinHeightRem: 7.5,
|
|
13
|
-
selectedImageMaxHeightRem: 4,
|
|
14
|
-
choiceImageMaxHeightRem: 5,
|
|
15
|
-
listenButtonSizePx: 128,
|
|
16
|
-
stimulusMinColumnPx: 210,
|
|
17
|
-
textMinColumnPx: 260,
|
|
18
|
-
legendMaxChars: 120,
|
|
19
|
-
choiceGroupGapRem: 0.5,
|
|
20
|
-
choiceRowGapRem: 0.5,
|
|
21
|
-
toggleButtonGapRem: 0.5,
|
|
22
|
-
horizontalChoiceRadioTopMarginRem: 0.5,
|
|
23
|
-
audioBlankTemplateMarginTopRem: 0.8,
|
|
24
|
-
audioBlankTemplateMarginBottomRem: 1.8,
|
|
25
|
-
audioInstructionsMaxWidthPx: 875,
|
|
26
|
-
narrowHorizontalChoiceMaxWidthPx: 230,
|
|
27
|
-
stimulusGridColumnGapRem: 2,
|
|
28
|
-
stimulusGridRowGapRem: 0.7,
|
|
29
|
-
stimulusSentenceMarginTopRem: 0.2,
|
|
30
|
-
stimulusChoicesMarginTopRem: 0.9,
|
|
31
|
-
tokenGridColumnGapRem: 1.5,
|
|
32
|
-
tokenGridRowGapRem: 0.8,
|
|
33
|
-
tokenTemplateMarginTopRem: 0.6,
|
|
34
|
-
tokenInlineTokenGapRem: 0.35,
|
|
35
|
-
tokenChoicesMarginTopRem: 0.2,
|
|
36
|
-
inlineGridColumnGapRem: 1.5,
|
|
37
|
-
inlineGridRowGapRem: 0.65,
|
|
38
|
-
inlineTemplateMarginTopRem: 0.45,
|
|
39
|
-
inlineChoicesMarginTopRem: 0.25,
|
|
40
|
-
} as const;
|
|
41
|
-
|
|
42
|
-
export default {
|
|
43
|
-
model: {
|
|
44
|
-
id: '1',
|
|
45
|
-
element: 'mc-populated-blank',
|
|
46
|
-
prompt: '<p><strong>Demo prompt</strong></p>',
|
|
47
|
-
promptEnabled: true,
|
|
48
|
-
interactionMode: 'populate_blank' as const,
|
|
49
|
-
layoutProfile: '',
|
|
50
|
-
choiceLayout: '',
|
|
51
|
-
layoutProfilePresets: {},
|
|
52
|
-
layoutLimits: { ...DEFAULT_LAYOUT_LIMITS },
|
|
53
|
-
audioButtonSkin: null,
|
|
54
|
-
audioButtonSkinsByLocale: {},
|
|
55
|
-
uiText: {
|
|
56
|
-
answerChoices: 'Answer choices',
|
|
57
|
-
selectedAnswerInSentence: 'Selected answer in sentence',
|
|
58
|
-
showCorrectAnswer: 'Show correct answer',
|
|
59
|
-
hideCorrectAnswer: 'Hide correct answer',
|
|
60
|
-
clickToEnableAutoplay: 'Click to enable audio autoplay',
|
|
61
|
-
audioResourceUnavailable: 'Audio is enabled but no playable audio URL is configured.',
|
|
62
|
-
transcriptLabel: 'Transcript',
|
|
63
|
-
listenLabelEn: 'Listen',
|
|
64
|
-
listenLabelEs: 'Escuchar',
|
|
65
|
-
},
|
|
66
|
-
sentenceHtml: '',
|
|
67
|
-
template: `<p>The answer is ${BLANK_TOKEN}.</p>`,
|
|
68
|
-
choiceMode: 'text' as const,
|
|
69
|
-
choices: [
|
|
70
|
-
{ id: 'c1', labelHtml: '<p>Option A</p>' },
|
|
71
|
-
{ id: 'c2', labelHtml: '<p>Option B</p>' },
|
|
72
|
-
{ id: 'c3', labelHtml: '<p>Option C</p>' },
|
|
73
|
-
],
|
|
74
|
-
correctChoiceId: 'c2',
|
|
75
|
-
hasAudio: false,
|
|
76
|
-
autoplayAudioEnabled: false,
|
|
77
|
-
completeAudioEnabled: false,
|
|
78
|
-
audioUrl: '',
|
|
79
|
-
audioTranscript: '',
|
|
80
|
-
showVisibleTranscript: false,
|
|
81
|
-
locale: '',
|
|
82
|
-
teacherInstructions: '',
|
|
83
|
-
teacherInstructionsEnabled: false,
|
|
84
|
-
},
|
|
85
|
-
configuration: {
|
|
86
|
-
prompt: {
|
|
87
|
-
label: 'Prompt',
|
|
88
|
-
settings: true,
|
|
89
|
-
},
|
|
90
|
-
},
|
|
91
|
-
};
|