@vue-skuilder/courseware 0.1.33 → 0.1.35

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.
Files changed (85) hide show
  1. package/dist/CourseWare-BTFRjgBR.js +305 -0
  2. package/dist/CourseWare-BTFRjgBR.js.map +1 -0
  3. package/dist/CourseWare-DSeyTAtH.cjs +2 -0
  4. package/dist/CourseWare-DSeyTAtH.cjs.map +1 -0
  5. package/dist/assets/CourseWare.css +1 -0
  6. package/dist/assets/chess.css +1 -0
  7. package/dist/assets/index.css +1 -1
  8. package/dist/assets/math.css +1 -0
  9. package/dist/assets/piano.css +1 -0
  10. package/dist/assets/sightsing.css +1 -0
  11. package/dist/assets/typing.css +1 -0
  12. package/dist/backend.cjs.js +1 -1
  13. package/dist/backend.cjs.js.map +1 -1
  14. package/dist/backend.mjs +4 -3
  15. package/dist/backend.mjs.map +1 -1
  16. package/dist/chess/components/ChessBoard.vue.d.ts.map +1 -1
  17. package/dist/chess/composables/useChessgroundBounds.d.ts +24 -0
  18. package/dist/chess/composables/useChessgroundBounds.d.ts.map +1 -0
  19. package/dist/chess/questions/puzzle/puzzle.vue.d.ts.map +1 -1
  20. package/dist/chess-BbHATAzk.js +2949 -0
  21. package/dist/chess-BbHATAzk.js.map +1 -0
  22. package/dist/chess-BsgVZARV.cjs +7 -0
  23. package/dist/chess-BsgVZARV.cjs.map +1 -0
  24. package/dist/chess-C_2RQEuq.cjs +1 -0
  25. package/dist/chess-X1bmWmh3.js +3 -0
  26. package/dist/french-Bxet7hJm.cjs +2 -0
  27. package/dist/french-Bxet7hJm.cjs.map +1 -0
  28. package/dist/french-Dk7YG8Td.js +140 -0
  29. package/dist/french-Dk7YG8Td.js.map +1 -0
  30. package/dist/french-evUMlbbq.js +3 -0
  31. package/dist/french-x9P8RRn8.cjs +1 -0
  32. package/dist/index.cjs.js +2 -170
  33. package/dist/index.cjs.js.map +1 -1
  34. package/dist/index.d.ts +23 -0
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.mjs +172 -62021
  37. package/dist/index.mjs.map +1 -1
  38. package/dist/math-B1oDAkOy.cjs +34 -0
  39. package/dist/math-B1oDAkOy.cjs.map +1 -0
  40. package/dist/math-B4HbgYf6.js +13391 -0
  41. package/dist/math-B4HbgYf6.js.map +1 -0
  42. package/dist/math-BWlIa6-l.cjs +1 -0
  43. package/dist/math-DYni7rRl.js +3 -0
  44. package/dist/piano-BN5Btq91.js +3 -0
  45. package/dist/piano-Btvkzjfz.cjs +1 -0
  46. package/dist/piano-CefQUc72.cjs +2 -0
  47. package/dist/piano-CefQUc72.cjs.map +1 -0
  48. package/dist/piano-DF1g6yaX.js +3603 -0
  49. package/dist/piano-DF1g6yaX.js.map +1 -0
  50. package/dist/pitch-C-lh9ezH.cjs +2 -0
  51. package/dist/pitch-C-lh9ezH.cjs.map +1 -0
  52. package/dist/pitch-CgGJFkZ1.js +106 -0
  53. package/dist/pitch-CgGJFkZ1.js.map +1 -0
  54. package/dist/pitch-Dn0iNqiS.js +3 -0
  55. package/dist/pitch-DsopN5IR.cjs +1 -0
  56. package/dist/{shapes-nszfsx3o.js → shapes-BQUVJdp5.js} +3 -21
  57. package/dist/shapes-BQUVJdp5.js.map +1 -0
  58. package/dist/shapes-C_-mvrCc.cjs +2 -0
  59. package/dist/shapes-C_-mvrCc.cjs.map +1 -0
  60. package/dist/shapes-DRq8J94A.cjs +2 -0
  61. package/dist/shapes-DRq8J94A.cjs.map +1 -0
  62. package/dist/shapes-ICeg46lr.js +25 -0
  63. package/dist/shapes-ICeg46lr.js.map +1 -0
  64. package/dist/sightsing-BFQ7HRig.js +41061 -0
  65. package/dist/sightsing-BFQ7HRig.js.map +1 -0
  66. package/dist/sightsing-CJX3k0Fd.js +3 -0
  67. package/dist/sightsing-Cr_SJ5Vc.cjs +133 -0
  68. package/dist/sightsing-Cr_SJ5Vc.cjs.map +1 -0
  69. package/dist/sightsing-CtagQ0FJ.cjs +1 -0
  70. package/dist/typing-BevtfWlp.js +184 -0
  71. package/dist/typing-BevtfWlp.js.map +1 -0
  72. package/dist/typing-CBPjtwrg.cjs +1 -0
  73. package/dist/typing-CK-glKhm.cjs +2 -0
  74. package/dist/typing-CK-glKhm.cjs.map +1 -0
  75. package/dist/typing-k-ojjO7G.js +3 -0
  76. package/dist/word-work-BOnRlZgd.js +108 -0
  77. package/dist/word-work-BOnRlZgd.js.map +1 -0
  78. package/dist/word-work-C5MTSapy.cjs +1 -0
  79. package/dist/word-work-Dd6tIKrt.js +3 -0
  80. package/dist/word-work-fNbCLNuN.cjs +2 -0
  81. package/dist/word-work-fNbCLNuN.cjs.map +1 -0
  82. package/package.json +6 -5
  83. package/dist/shapes-DJ-ujuDr.cjs +0 -2
  84. package/dist/shapes-DJ-ujuDr.cjs.map +0 -1
  85. package/dist/shapes-nszfsx3o.js.map +0 -1
@@ -0,0 +1 @@
1
+ require(`./CourseWare-DSeyTAtH.cjs`);const e=require(`./chess-BsgVZARV.cjs`);exports.default=e.t;
@@ -0,0 +1,3 @@
1
+ import "./CourseWare-BTFRjgBR.js";
2
+ import { t as e } from "./chess-BbHATAzk.js";
3
+ export { e as default };
@@ -0,0 +1,2 @@
1
+ const e=require(`./shapes-C_-mvrCc.cjs`),t=require(`./CourseWare-DSeyTAtH.cjs`);let n=require(`vue`),r=require(`@vue-skuilder/common-ui`),i=require(`@vue-skuilder/common`);var a=(0,n.defineComponent)({name:`AudioParseView`,components:{AudioAutoPlayer:r.AudioAutoPlayer},props:{data:{type:Array,required:!0},modifyDifficulty:{type:Number,required:!1,default:0}},setup(e,{emit:t}){let i=(0,r.useViewable)(e,t,`AudioParseView`),a=(0,r.useQuestionView)(i),o=(0,n.ref)(``);a.question.value=new c(e.data);let s=(0,n.computed)(()=>a.question.value),submit=()=>{s.value};return{...i,...a,answer:o,question:s,submit}}}),o={"data-viewable":`AudioParseView`};function _sfc_render$1(e,t,r,i,a,s){let c=(0,n.resolveComponent)(`AudioAutoPlayer`);return(0,n.openBlock)(),(0,n.createElementBlock)(`div`,o,[e.question?((0,n.openBlock)(),(0,n.createElementBlock)(n.Fragment,{key:0},[(0,n.createVNode)(c,{src:e.getURL(`audio`)},null,8,[`src`]),t[0]||=(0,n.createElementVNode)(`br`,null,null,-1),t[1]||=(0,n.createElementVNode)(`br`,null,null,-1),(0,n.createTextVNode)(` `+(0,n.toDisplayString)(e.question.text),1)],64)):(0,n.createCommentVNode)(``,!0)])}e.r(_sfc_render$1,`_sfc_render`);var s=t.r(a,[[`render`,_sfc_render$1]]),c=class AudioParsingQuestion extends r.Question{static dataShapes=[{name:i.DataShapeName.FRENCH_AudioParse,fields:[{name:`audio`,type:i.FieldType.IMAGE},{name:`text`,type:i.FieldType.STRING,validator:{test:e=>{let t=e.length<45;return{msg:t?``:`It's too long!`,status:t?i.Status.ok:i.Status.error}}}}]}];static views=[s];audio;text;constructor(e){super(e),this.audio=e[0].audio,this.text=e[0].text}isCorrect(e){throw Error(`isCorrect() not implemented - cannor parse ${e}`)}dataShapes(){return AudioParsingQuestion.dataShapes}views(){return AudioParsingQuestion.views}},l=(0,n.defineComponent)({name:`IdentifyVocab`,components:{},props:{data:{type:Array,required:!0},modifyDifficulty:{type:Number,required:!1,default:0}},setup(e,{emit:t}){let i=(0,r.useViewable)(e,t,`IdentifyVocab`),a=(0,r.useQuestionView)(i);a.question.value=new p(e.data);let o=(0,n.computed)(()=>a.question.value);return{...i,...a,question:o}}}),u={"data-viewable":`IdentifyVocab`};function _sfc_render(e,t,r,i,a,o){return(0,n.openBlock)(),(0,n.createElementBlock)(`div`,u,[e.question?((0,n.openBlock)(),(0,n.createElementBlock)(n.Fragment,{key:0},[(0,n.createTextVNode)(` This is a vocabulary question. `)],64)):(0,n.createCommentVNode)(``,!0)])}var d=t.r(l,[[`render`,_sfc_render]]),f=[{name:`word`,type:i.FieldType.STRING,validator:i.Validators.NonEmptyString},{name:`image`,type:i.FieldType.IMAGE},{name:`audio`,type:i.FieldType.AUDIO}],p=class VocabQuestion extends r.Question{static dataShapes=[{fields:f,name:i.DataShapeName.FRENCH_Vocab}];static views=[d];isCorrect(e){throw Error(`isCorrect() not implemented. Cannot parse ${e}`)}dataShapes(){return VocabQuestion.dataShapes}views(){return VocabQuestion.views}},m=new t.t(`french`,[c,p]);Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return m}});
2
+ //# sourceMappingURL=french-Bxet7hJm.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"french-Bxet7hJm.cjs","names":[],"sources":["../src/french/questions/audioparse/view.vue","../src/french/questions/audioparse/view.vue","../src/french/questions/audioparse/index.ts","../src/french/questions/vocab/identify.vue","../src/french/questions/vocab/identify.vue","../src/french/questions/vocab/index.ts","../src/french/index.ts"],"sourcesContent":["<template>\n <div data-viewable=\"AudioParseView\">\n <template v-if=\"question\">\n <AudioAutoPlayer :src=\"getURL('audio')\" />\n <br /><br />\n {{ question.text }}\n </template>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, computed, PropType } from 'vue';\nimport { AudioParsingQuestion } from './index';\nimport { AudioAutoPlayer, useViewable, useQuestionView } from '@vue-skuilder/common-ui';\nimport { ViewData } from '@vue-skuilder/common';\n\nexport default defineComponent({\n name: 'AudioParseView',\n\n components: {\n AudioAutoPlayer,\n },\n\n props: {\n data: {\n type: Array as PropType<ViewData[]>,\n required: true,\n },\n modifyDifficulty: {\n type: Number,\n required: false,\n default: 0,\n },\n },\n\n setup(props, { emit }) {\n const viewableUtils = useViewable(props, emit, 'AudioParseView');\n const questionUtils = useQuestionView<AudioParsingQuestion>(viewableUtils);\n\n const answer = ref('');\n\n // Initialize question immediately\n questionUtils.question.value = new AudioParsingQuestion(props.data);\n\n // Expose the question directly for template access\n const question = computed(() => questionUtils.question.value);\n\n const submit = () => {\n if (question.value) {\n // const isCorrect = question.value.isCorrect(parseInt(answer.value, 10));\n // alert(isCorrect);\n }\n };\n\n return {\n ...viewableUtils,\n ...questionUtils,\n answer,\n question,\n submit,\n };\n },\n});\n</script>\n","<template>\n <div data-viewable=\"AudioParseView\">\n <template v-if=\"question\">\n <AudioAutoPlayer :src=\"getURL('audio')\" />\n <br /><br />\n {{ question.text }}\n </template>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, computed, PropType } from 'vue';\nimport { AudioParsingQuestion } from './index';\nimport { AudioAutoPlayer, useViewable, useQuestionView } from '@vue-skuilder/common-ui';\nimport { ViewData } from '@vue-skuilder/common';\n\nexport default defineComponent({\n name: 'AudioParseView',\n\n components: {\n AudioAutoPlayer,\n },\n\n props: {\n data: {\n type: Array as PropType<ViewData[]>,\n required: true,\n },\n modifyDifficulty: {\n type: Number,\n required: false,\n default: 0,\n },\n },\n\n setup(props, { emit }) {\n const viewableUtils = useViewable(props, emit, 'AudioParseView');\n const questionUtils = useQuestionView<AudioParsingQuestion>(viewableUtils);\n\n const answer = ref('');\n\n // Initialize question immediately\n questionUtils.question.value = new AudioParsingQuestion(props.data);\n\n // Expose the question directly for template access\n const question = computed(() => questionUtils.question.value);\n\n const submit = () => {\n if (question.value) {\n // const isCorrect = question.value.isCorrect(parseInt(answer.value, 10));\n // alert(isCorrect);\n }\n };\n\n return {\n ...viewableUtils,\n ...questionUtils,\n answer,\n question,\n submit,\n };\n },\n});\n</script>\n","import { Question } from '@vue-skuilder/common-ui';\nimport { DataShapeName, Answer, FieldType, ViewData } from '@vue-skuilder/common';\nimport AudioParseView from './view.vue';\nimport { DataShape, Status } from '@vue-skuilder/common';\n\nexport class AudioParsingQuestion extends Question {\n public static dataShapes: DataShape[] = [\n {\n name: DataShapeName.FRENCH_AudioParse,\n fields: [\n {\n name: 'audio',\n type: FieldType.IMAGE,\n },\n {\n name: 'text',\n type: FieldType.STRING,\n validator: {\n test: (value: string) => {\n const good = value.length < 45;\n return {\n msg: good ? '' : \"It's too long!\",\n status: good ? Status.ok : Status.error,\n };\n },\n },\n },\n ],\n },\n ];\n public static views = [AudioParseView];\n\n public audio: Blob;\n public text: string;\n\n constructor(data: ViewData[]) {\n super(data);\n this.audio = data[0].audio as Blob;\n this.text = data[0].text as string;\n }\n\n public isCorrect(answer: Answer): boolean {\n throw new Error(`isCorrect() not implemented - cannor parse ${answer}`);\n }\n\n public dataShapes() {\n return AudioParsingQuestion.dataShapes;\n }\n public views() {\n return AudioParsingQuestion.views;\n }\n}\n","<template>\n <div data-viewable=\"IdentifyVocab\">\n <template v-if=\"question\"> This is a vocabulary question. </template>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, PropType } from 'vue';\nimport { useViewable, useQuestionView } from '@vue-skuilder/common-ui';\nimport { VocabQuestion } from '@courseware/french/questions/vocab';\nimport { ViewData } from '@vue-skuilder/common';\n// import AudioAutoPlayer from '@courseware/base-course/Components/AudioAutoPlayer.vue';\n// import UserInputString from '@courseware/base-course/Components/UserInput/UserInputString.vue';\n\nexport default defineComponent({\n name: 'IdentifyVocab',\n\n components: {\n // AudioAutoPlayer,\n // UserInputString,\n },\n\n props: {\n data: {\n type: Array as PropType<ViewData[]>,\n required: true,\n },\n modifyDifficulty: {\n type: Number,\n required: false,\n default: 0,\n },\n },\n\n setup(props, { emit }) {\n const viewableUtils = useViewable(props, emit, 'IdentifyVocab');\n const questionUtils = useQuestionView<VocabQuestion>(viewableUtils);\n\n // Initialize question immediately\n questionUtils.question.value = new VocabQuestion(props.data);\n\n // Expose the question directly for template access\n const question = computed(() => questionUtils.question.value);\n\n return {\n ...viewableUtils,\n ...questionUtils,\n question,\n };\n },\n});\n</script>\n","<template>\n <div data-viewable=\"IdentifyVocab\">\n <template v-if=\"question\"> This is a vocabulary question. </template>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, PropType } from 'vue';\nimport { useViewable, useQuestionView } from '@vue-skuilder/common-ui';\nimport { VocabQuestion } from '@courseware/french/questions/vocab';\nimport { ViewData } from '@vue-skuilder/common';\n// import AudioAutoPlayer from '@courseware/base-course/Components/AudioAutoPlayer.vue';\n// import UserInputString from '@courseware/base-course/Components/UserInput/UserInputString.vue';\n\nexport default defineComponent({\n name: 'IdentifyVocab',\n\n components: {\n // AudioAutoPlayer,\n // UserInputString,\n },\n\n props: {\n data: {\n type: Array as PropType<ViewData[]>,\n required: true,\n },\n modifyDifficulty: {\n type: Number,\n required: false,\n default: 0,\n },\n },\n\n setup(props, { emit }) {\n const viewableUtils = useViewable(props, emit, 'IdentifyVocab');\n const questionUtils = useQuestionView<VocabQuestion>(viewableUtils);\n\n // Initialize question immediately\n questionUtils.question.value = new VocabQuestion(props.data);\n\n // Expose the question directly for template access\n const question = computed(() => questionUtils.question.value);\n\n return {\n ...viewableUtils,\n ...questionUtils,\n question,\n };\n },\n});\n</script>\n","import { Question } from '@vue-skuilder/common-ui';\nimport {\n Answer,\n DataShapeName,\n Validators,\n DataShape,\n FieldDefinition,\n FieldType,\n} from '@vue-skuilder/common';\nimport IdentifyVocab from './identify.vue';\n\nconst fields: FieldDefinition[] = [\n {\n name: 'word',\n type: FieldType.STRING,\n validator: Validators.NonEmptyString,\n },\n {\n name: 'image',\n type: FieldType.IMAGE,\n },\n {\n name: 'audio',\n type: FieldType.AUDIO,\n },\n];\n\nexport class VocabQuestion extends Question {\n public static dataShapes: DataShape[] = [\n {\n fields,\n name: DataShapeName.FRENCH_Vocab,\n },\n ];\n\n public static views = [IdentifyVocab];\n\n public isCorrect(answer: Answer): boolean {\n throw new Error(`isCorrect() not implemented. Cannot parse ${answer}`);\n }\n public dataShapes(): DataShape[] {\n return VocabQuestion.dataShapes;\n }\n public views() {\n return VocabQuestion.views;\n }\n}\n","import { CourseWare } from '../CourseWare';\nimport { AudioParsingQuestion } from './questions/audioparse';\nimport { VocabQuestion } from './questions/vocab';\n\nconst french: CourseWare = new CourseWare('french', [AudioParsingQuestion, VocabQuestion]);\n\nexport default french;\n"],"mappings":"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"}
@@ -0,0 +1,140 @@
1
+ import { r as e } from "./shapes-BQUVJdp5.js";
2
+ import { r as t, t as n } from "./CourseWare-BTFRjgBR.js";
3
+ import { Fragment as r, computed as i, createCommentVNode as a, createElementBlock as o, createElementVNode as s, createTextVNode as c, createVNode as l, defineComponent as u, openBlock as d, ref as f, resolveComponent as p, toDisplayString as m } from "vue";
4
+ import { AudioAutoPlayer as h, Question as g, useQuestionView as _, useViewable as v } from "@vue-skuilder/common-ui";
5
+ import { DataShapeName as y, FieldType as b, Status as x, Validators as S } from "@vue-skuilder/common";
6
+ //#region src/french/questions/audioparse/view.vue?vue&type=script&lang.ts
7
+ var C = u({
8
+ name: "AudioParseView",
9
+ components: { AudioAutoPlayer: h },
10
+ props: {
11
+ data: {
12
+ type: Array,
13
+ required: !0
14
+ },
15
+ modifyDifficulty: {
16
+ type: Number,
17
+ required: !1,
18
+ default: 0
19
+ }
20
+ },
21
+ setup(e, { emit: t }) {
22
+ let n = v(e, t, "AudioParseView"), r = _(n), a = f("");
23
+ r.question.value = new E(e.data);
24
+ let o = i(() => r.question.value), submit = () => {
25
+ o.value;
26
+ };
27
+ return {
28
+ ...n,
29
+ ...r,
30
+ answer: a,
31
+ question: o,
32
+ submit
33
+ };
34
+ }
35
+ }), w = { "data-viewable": "AudioParseView" };
36
+ function _sfc_render$1(e, t, n, i, u, f) {
37
+ let h = p("AudioAutoPlayer");
38
+ return d(), o("div", w, [e.question ? (d(), o(r, { key: 0 }, [
39
+ l(h, { src: e.getURL("audio") }, null, 8, ["src"]),
40
+ t[0] ||= s("br", null, null, -1),
41
+ t[1] ||= s("br", null, null, -1),
42
+ c(" " + m(e.question.text), 1)
43
+ ], 64)) : a("", !0)]);
44
+ }
45
+ e(_sfc_render$1, "_sfc_render");
46
+ var T = /* @__PURE__ */ t(C, [["render", _sfc_render$1]]), E = class AudioParsingQuestion extends g {
47
+ static dataShapes = [{
48
+ name: y.FRENCH_AudioParse,
49
+ fields: [{
50
+ name: "audio",
51
+ type: b.IMAGE
52
+ }, {
53
+ name: "text",
54
+ type: b.STRING,
55
+ validator: { test: (e) => {
56
+ let t = e.length < 45;
57
+ return {
58
+ msg: t ? "" : "It's too long!",
59
+ status: t ? x.ok : x.error
60
+ };
61
+ } }
62
+ }]
63
+ }];
64
+ static views = [T];
65
+ audio;
66
+ text;
67
+ constructor(e) {
68
+ super(e), this.audio = e[0].audio, this.text = e[0].text;
69
+ }
70
+ isCorrect(e) {
71
+ throw Error(`isCorrect() not implemented - cannor parse ${e}`);
72
+ }
73
+ dataShapes() {
74
+ return AudioParsingQuestion.dataShapes;
75
+ }
76
+ views() {
77
+ return AudioParsingQuestion.views;
78
+ }
79
+ }, D = u({
80
+ name: "IdentifyVocab",
81
+ components: {},
82
+ props: {
83
+ data: {
84
+ type: Array,
85
+ required: !0
86
+ },
87
+ modifyDifficulty: {
88
+ type: Number,
89
+ required: !1,
90
+ default: 0
91
+ }
92
+ },
93
+ setup(e, { emit: t }) {
94
+ let n = v(e, t, "IdentifyVocab"), r = _(n);
95
+ r.question.value = new j(e.data);
96
+ let a = i(() => r.question.value);
97
+ return {
98
+ ...n,
99
+ ...r,
100
+ question: a
101
+ };
102
+ }
103
+ }), O = { "data-viewable": "IdentifyVocab" };
104
+ function _sfc_render(e, t, n, i, s, l) {
105
+ return d(), o("div", O, [e.question ? (d(), o(r, { key: 0 }, [c(" This is a vocabulary question. ")], 64)) : a("", !0)]);
106
+ }
107
+ var k = /* @__PURE__ */ t(D, [["render", _sfc_render]]), A = [
108
+ {
109
+ name: "word",
110
+ type: b.STRING,
111
+ validator: S.NonEmptyString
112
+ },
113
+ {
114
+ name: "image",
115
+ type: b.IMAGE
116
+ },
117
+ {
118
+ name: "audio",
119
+ type: b.AUDIO
120
+ }
121
+ ], j = class VocabQuestion extends g {
122
+ static dataShapes = [{
123
+ fields: A,
124
+ name: y.FRENCH_Vocab
125
+ }];
126
+ static views = [k];
127
+ isCorrect(e) {
128
+ throw Error(`isCorrect() not implemented. Cannot parse ${e}`);
129
+ }
130
+ dataShapes() {
131
+ return VocabQuestion.dataShapes;
132
+ }
133
+ views() {
134
+ return VocabQuestion.views;
135
+ }
136
+ }, M = new n("french", [E, j]);
137
+ //#endregion
138
+ export { M as t };
139
+
140
+ //# sourceMappingURL=french-Dk7YG8Td.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"french-Dk7YG8Td.js","names":[],"sources":["../src/french/questions/audioparse/view.vue","../src/french/questions/audioparse/view.vue","../src/french/questions/audioparse/index.ts","../src/french/questions/vocab/identify.vue","../src/french/questions/vocab/identify.vue","../src/french/questions/vocab/index.ts","../src/french/index.ts"],"sourcesContent":["<template>\n <div data-viewable=\"AudioParseView\">\n <template v-if=\"question\">\n <AudioAutoPlayer :src=\"getURL('audio')\" />\n <br /><br />\n {{ question.text }}\n </template>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, computed, PropType } from 'vue';\nimport { AudioParsingQuestion } from './index';\nimport { AudioAutoPlayer, useViewable, useQuestionView } from '@vue-skuilder/common-ui';\nimport { ViewData } from '@vue-skuilder/common';\n\nexport default defineComponent({\n name: 'AudioParseView',\n\n components: {\n AudioAutoPlayer,\n },\n\n props: {\n data: {\n type: Array as PropType<ViewData[]>,\n required: true,\n },\n modifyDifficulty: {\n type: Number,\n required: false,\n default: 0,\n },\n },\n\n setup(props, { emit }) {\n const viewableUtils = useViewable(props, emit, 'AudioParseView');\n const questionUtils = useQuestionView<AudioParsingQuestion>(viewableUtils);\n\n const answer = ref('');\n\n // Initialize question immediately\n questionUtils.question.value = new AudioParsingQuestion(props.data);\n\n // Expose the question directly for template access\n const question = computed(() => questionUtils.question.value);\n\n const submit = () => {\n if (question.value) {\n // const isCorrect = question.value.isCorrect(parseInt(answer.value, 10));\n // alert(isCorrect);\n }\n };\n\n return {\n ...viewableUtils,\n ...questionUtils,\n answer,\n question,\n submit,\n };\n },\n});\n</script>\n","<template>\n <div data-viewable=\"AudioParseView\">\n <template v-if=\"question\">\n <AudioAutoPlayer :src=\"getURL('audio')\" />\n <br /><br />\n {{ question.text }}\n </template>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, computed, PropType } from 'vue';\nimport { AudioParsingQuestion } from './index';\nimport { AudioAutoPlayer, useViewable, useQuestionView } from '@vue-skuilder/common-ui';\nimport { ViewData } from '@vue-skuilder/common';\n\nexport default defineComponent({\n name: 'AudioParseView',\n\n components: {\n AudioAutoPlayer,\n },\n\n props: {\n data: {\n type: Array as PropType<ViewData[]>,\n required: true,\n },\n modifyDifficulty: {\n type: Number,\n required: false,\n default: 0,\n },\n },\n\n setup(props, { emit }) {\n const viewableUtils = useViewable(props, emit, 'AudioParseView');\n const questionUtils = useQuestionView<AudioParsingQuestion>(viewableUtils);\n\n const answer = ref('');\n\n // Initialize question immediately\n questionUtils.question.value = new AudioParsingQuestion(props.data);\n\n // Expose the question directly for template access\n const question = computed(() => questionUtils.question.value);\n\n const submit = () => {\n if (question.value) {\n // const isCorrect = question.value.isCorrect(parseInt(answer.value, 10));\n // alert(isCorrect);\n }\n };\n\n return {\n ...viewableUtils,\n ...questionUtils,\n answer,\n question,\n submit,\n };\n },\n});\n</script>\n","import { Question } from '@vue-skuilder/common-ui';\nimport { DataShapeName, Answer, FieldType, ViewData } from '@vue-skuilder/common';\nimport AudioParseView from './view.vue';\nimport { DataShape, Status } from '@vue-skuilder/common';\n\nexport class AudioParsingQuestion extends Question {\n public static dataShapes: DataShape[] = [\n {\n name: DataShapeName.FRENCH_AudioParse,\n fields: [\n {\n name: 'audio',\n type: FieldType.IMAGE,\n },\n {\n name: 'text',\n type: FieldType.STRING,\n validator: {\n test: (value: string) => {\n const good = value.length < 45;\n return {\n msg: good ? '' : \"It's too long!\",\n status: good ? Status.ok : Status.error,\n };\n },\n },\n },\n ],\n },\n ];\n public static views = [AudioParseView];\n\n public audio: Blob;\n public text: string;\n\n constructor(data: ViewData[]) {\n super(data);\n this.audio = data[0].audio as Blob;\n this.text = data[0].text as string;\n }\n\n public isCorrect(answer: Answer): boolean {\n throw new Error(`isCorrect() not implemented - cannor parse ${answer}`);\n }\n\n public dataShapes() {\n return AudioParsingQuestion.dataShapes;\n }\n public views() {\n return AudioParsingQuestion.views;\n }\n}\n","<template>\n <div data-viewable=\"IdentifyVocab\">\n <template v-if=\"question\"> This is a vocabulary question. </template>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, PropType } from 'vue';\nimport { useViewable, useQuestionView } from '@vue-skuilder/common-ui';\nimport { VocabQuestion } from '@courseware/french/questions/vocab';\nimport { ViewData } from '@vue-skuilder/common';\n// import AudioAutoPlayer from '@courseware/base-course/Components/AudioAutoPlayer.vue';\n// import UserInputString from '@courseware/base-course/Components/UserInput/UserInputString.vue';\n\nexport default defineComponent({\n name: 'IdentifyVocab',\n\n components: {\n // AudioAutoPlayer,\n // UserInputString,\n },\n\n props: {\n data: {\n type: Array as PropType<ViewData[]>,\n required: true,\n },\n modifyDifficulty: {\n type: Number,\n required: false,\n default: 0,\n },\n },\n\n setup(props, { emit }) {\n const viewableUtils = useViewable(props, emit, 'IdentifyVocab');\n const questionUtils = useQuestionView<VocabQuestion>(viewableUtils);\n\n // Initialize question immediately\n questionUtils.question.value = new VocabQuestion(props.data);\n\n // Expose the question directly for template access\n const question = computed(() => questionUtils.question.value);\n\n return {\n ...viewableUtils,\n ...questionUtils,\n question,\n };\n },\n});\n</script>\n","<template>\n <div data-viewable=\"IdentifyVocab\">\n <template v-if=\"question\"> This is a vocabulary question. </template>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, PropType } from 'vue';\nimport { useViewable, useQuestionView } from '@vue-skuilder/common-ui';\nimport { VocabQuestion } from '@courseware/french/questions/vocab';\nimport { ViewData } from '@vue-skuilder/common';\n// import AudioAutoPlayer from '@courseware/base-course/Components/AudioAutoPlayer.vue';\n// import UserInputString from '@courseware/base-course/Components/UserInput/UserInputString.vue';\n\nexport default defineComponent({\n name: 'IdentifyVocab',\n\n components: {\n // AudioAutoPlayer,\n // UserInputString,\n },\n\n props: {\n data: {\n type: Array as PropType<ViewData[]>,\n required: true,\n },\n modifyDifficulty: {\n type: Number,\n required: false,\n default: 0,\n },\n },\n\n setup(props, { emit }) {\n const viewableUtils = useViewable(props, emit, 'IdentifyVocab');\n const questionUtils = useQuestionView<VocabQuestion>(viewableUtils);\n\n // Initialize question immediately\n questionUtils.question.value = new VocabQuestion(props.data);\n\n // Expose the question directly for template access\n const question = computed(() => questionUtils.question.value);\n\n return {\n ...viewableUtils,\n ...questionUtils,\n question,\n };\n },\n});\n</script>\n","import { Question } from '@vue-skuilder/common-ui';\nimport {\n Answer,\n DataShapeName,\n Validators,\n DataShape,\n FieldDefinition,\n FieldType,\n} from '@vue-skuilder/common';\nimport IdentifyVocab from './identify.vue';\n\nconst fields: FieldDefinition[] = [\n {\n name: 'word',\n type: FieldType.STRING,\n validator: Validators.NonEmptyString,\n },\n {\n name: 'image',\n type: FieldType.IMAGE,\n },\n {\n name: 'audio',\n type: FieldType.AUDIO,\n },\n];\n\nexport class VocabQuestion extends Question {\n public static dataShapes: DataShape[] = [\n {\n fields,\n name: DataShapeName.FRENCH_Vocab,\n },\n ];\n\n public static views = [IdentifyVocab];\n\n public isCorrect(answer: Answer): boolean {\n throw new Error(`isCorrect() not implemented. Cannot parse ${answer}`);\n }\n public dataShapes(): DataShape[] {\n return VocabQuestion.dataShapes;\n }\n public views() {\n return VocabQuestion.views;\n }\n}\n","import { CourseWare } from '../CourseWare';\nimport { AudioParsingQuestion } from './questions/audioparse';\nimport { VocabQuestion } from './questions/vocab';\n\nconst french: CourseWare = new CourseWare('french', [AudioParsingQuestion, VocabQuestion]);\n\nexport default french;\n"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import "./CourseWare-BTFRjgBR.js";
2
+ import { t as e } from "./french-Dk7YG8Td.js";
3
+ export { e as default };
@@ -0,0 +1 @@
1
+ require(`./CourseWare-DSeyTAtH.cjs`);const e=require(`./french-Bxet7hJm.cjs`);exports.default=e.t;