@vue-skuilder/platform-ui 0.1.34 → 0.1.36
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/dist/assets/{About-BpqIdlZQ.js → About-eVevEMqh.js} +2 -2
- package/dist/assets/{About-BpqIdlZQ.js.map → About-eVevEMqh.js.map} +1 -1
- package/dist/assets/AdminDashboard-C_oJ8NGZ.js +2 -0
- package/dist/assets/{AdminDashboard-BObO6egG.js.map → AdminDashboard-C_oJ8NGZ.js.map} +1 -1
- package/dist/assets/{ClassroomCtrlPanel-lgN6cdTd.js → ClassroomCtrlPanel-DanEeAZ0.js} +2 -2
- package/dist/assets/{ClassroomCtrlPanel-lgN6cdTd.js.map → ClassroomCtrlPanel-DanEeAZ0.js.map} +1 -1
- package/dist/assets/{Classrooms-BWoQ4i1_.js → Classrooms-OrG6VOnx.js} +2 -2
- package/dist/assets/{Classrooms-BWoQ4i1_.js.map → Classrooms-OrG6VOnx.js.map} +1 -1
- package/dist/assets/{CourseRouter-CODD0Qm5.js → CourseRouter-CK8Xh2h2.js} +3 -3
- package/dist/assets/{CourseRouter-CODD0Qm5.js.map → CourseRouter-CK8Xh2h2.js.map} +1 -1
- package/dist/assets/CourseWare-BTFRjgBR-D750E7i0.css +1 -0
- package/dist/assets/CourseWare-BTFRjgBR-OzjKW1B2.js +3 -0
- package/dist/assets/CourseWare-BTFRjgBR-OzjKW1B2.js.map +1 -0
- package/dist/assets/{Courses-ClDdLQUO.js → Courses-DB0JFz1Q.js} +2 -2
- package/dist/assets/{Courses-ClDdLQUO.js.map → Courses-DB0JFz1Q.js.map} +1 -1
- package/dist/assets/EloModeration-BmU0CqZt.js +2 -0
- package/dist/assets/{EloModeration-B6LM11G_.js.map → EloModeration-BmU0CqZt.js.map} +1 -1
- package/dist/assets/{JoinCode-DgPD_OFL.js → JoinCode-KoSLXpUy.js} +2 -2
- package/dist/assets/{JoinCode-DgPD_OFL.js.map → JoinCode-KoSLXpUy.js.map} +1 -1
- package/dist/assets/{MarkdownRenderer-DoVbFpA6-BIbDxYC4.js → MarkdownRenderer-DoVbFpA6-CvaBjTS8.js} +2 -2
- package/dist/assets/{MarkdownRenderer-DoVbFpA6-BIbDxYC4.js.map → MarkdownRenderer-DoVbFpA6-CvaBjTS8.js.map} +1 -1
- package/dist/assets/MarkdownRenderer-DoVbFpA6-DZdbKtns.js +1 -0
- package/dist/assets/{NewCourseDialog-DhwvBT3y.js → NewCourseDialog-BXxQ1cvK.js} +2 -2
- package/dist/assets/{NewCourseDialog-DhwvBT3y.js.map → NewCourseDialog-BXxQ1cvK.js.map} +1 -1
- package/dist/assets/{ReleaseNotes-DtwDIIfH.js → ReleaseNotes-CERYwZro.js} +2 -2
- package/dist/assets/{ReleaseNotes-DtwDIIfH.js.map → ReleaseNotes-CERYwZro.js.map} +1 -1
- package/dist/assets/{RequestPasswordReset-DBv0XCIk.js → RequestPasswordReset-Bc4FHaYS.js} +2 -2
- package/dist/assets/{RequestPasswordReset-DBv0XCIk.js.map → RequestPasswordReset-Bc4FHaYS.js.map} +1 -1
- package/dist/assets/{ResetPassword-BtBplqsQ.js → ResetPassword-CeR_bmOz.js} +2 -2
- package/dist/assets/{ResetPassword-BtBplqsQ.js.map → ResetPassword-CeR_bmOz.js.map} +1 -1
- package/dist/assets/Study-voro05GB.js +2 -0
- package/dist/assets/{Study-D9W1DKes.js.map → Study-voro05GB.js.map} +1 -1
- package/dist/assets/TagInformation-1urKQaI-.js +2 -0
- package/dist/assets/{TagInformation-DgUkKxoU.js.map → TagInformation-1urKQaI-.js.map} +1 -1
- package/dist/assets/{User-DorFkRx_.js → User-26Hebdw-.js} +2 -2
- package/dist/assets/{User-DorFkRx_.js.map → User-26Hebdw-.js.map} +1 -1
- package/dist/assets/{UserStats-ck9Oh4qt.js → UserStats-DbWUnAPD.js} +2 -2
- package/dist/assets/{UserStats-ck9Oh4qt.js.map → UserStats-DbWUnAPD.js.map} +1 -1
- package/dist/assets/{VerifyEmail-BYt5xfhm.js → VerifyEmail-uix17ueS.js} +2 -2
- package/dist/assets/{VerifyEmail-BYt5xfhm.js.map → VerifyEmail-uix17ueS.js.map} +1 -1
- package/dist/assets/chess-BbHATAzk-BhFAwbgX.js +7 -0
- package/dist/assets/chess-BbHATAzk-BhFAwbgX.js.map +1 -0
- package/dist/assets/chess-BbHATAzk-DB7z_kWx.css +1 -0
- package/dist/assets/chess-X1bmWmh3-C7B3mHa1.js +1 -0
- package/dist/assets/common-ui.es-C18SEA_L.js +1 -0
- package/dist/assets/{common-ui.es-BrXWBn7p.js → common-ui.es-p3cgaI_b.js} +5 -5
- package/dist/assets/{common-ui.es-BrXWBn7p.js.map → common-ui.es-p3cgaI_b.js.map} +1 -1
- package/dist/assets/dist-CszlUrrD.js +1 -0
- package/dist/assets/dist-D2Tzeiyw.js +1 -0
- package/dist/assets/{dist-CzLl7g6t.js → dist-DA7EuQY2.js} +34 -12
- package/dist/assets/dist-DA7EuQY2.js.map +1 -0
- package/dist/assets/dist-DCY40cJ7.js +18 -0
- package/dist/assets/dist-DCY40cJ7.js.map +1 -0
- package/dist/assets/{dist-CrcJCHFk.js → dist-leWgtXBf.js} +2 -2
- package/dist/assets/dist-leWgtXBf.js.map +1 -0
- package/dist/assets/edit-ui.es-BIV0deYk.js +36 -0
- package/dist/assets/{edit-ui.es-C9MhXwkt.js.map → edit-ui.es-BIV0deYk.js.map} +1 -1
- package/dist/assets/edit-ui.es-BLMFpJm1.js +1 -0
- package/dist/assets/french-Dk7YG8Td-YK4jNZUN.js +2 -0
- package/dist/assets/french-Dk7YG8Td-YK4jNZUN.js.map +1 -0
- package/dist/assets/french-evUMlbbq-BbJDdRqK.js +1 -0
- package/dist/assets/index-B-cSF0fq.js +4 -0
- package/dist/assets/index-B-cSF0fq.js.map +1 -0
- package/dist/assets/{index-C8gy3Ea0.css → index-CmEEzdUX.css} +1 -1
- package/dist/assets/math-B4HbgYf6-CLJIZTjv.js +34 -0
- package/dist/assets/math-B4HbgYf6-CLJIZTjv.js.map +1 -0
- package/dist/assets/math-B4HbgYf6-CZyvKZtp.css +1 -0
- package/dist/assets/math-DYni7rRl-C6a4BDoN.js +1 -0
- package/dist/assets/piano-BN5Btq91-Cdn8kuW5.js +1 -0
- package/dist/assets/piano-DF1g6yaX-AR14jqWm.js +2 -0
- package/dist/assets/piano-DF1g6yaX-AR14jqWm.js.map +1 -0
- package/dist/assets/piano-DF1g6yaX-BLvDAgl1.css +1 -0
- package/dist/assets/pitch-CgGJFkZ1-DYkp_AV0.js +2 -0
- package/dist/assets/pitch-CgGJFkZ1-DYkp_AV0.js.map +1 -0
- package/dist/assets/pitch-Dn0iNqiS-CJ_97iB4.js +1 -0
- package/dist/assets/{server-Db_WegNj.js → server-Bq50faqp.js} +2 -2
- package/dist/assets/{server-Db_WegNj.js.map → server-Bq50faqp.js.map} +1 -1
- package/dist/assets/sightsing-BFQ7HRig-BNrrORP_.js +133 -0
- package/dist/assets/sightsing-BFQ7HRig-BNrrORP_.js.map +1 -0
- package/dist/assets/sightsing-BFQ7HRig-DkUGf5Yf.css +1 -0
- package/dist/assets/sightsing-CJX3k0Fd-l4fhB1Aj.js +1 -0
- package/dist/assets/typing-BevtfWlp-B7ZMUAQJ.css +1 -0
- package/dist/assets/typing-BevtfWlp-Cl6jtRmX.js +2 -0
- package/dist/assets/typing-BevtfWlp-Cl6jtRmX.js.map +1 -0
- package/dist/assets/typing-k-ojjO7G-CHgxm7Rx.js +1 -0
- package/dist/assets/word-work-BOnRlZgd-CGV2xRx9.js +2 -0
- package/dist/assets/word-work-BOnRlZgd-CGV2xRx9.js.map +1 -0
- package/dist/assets/word-work-Dd6tIKrt-BjF3-3lq.js +1 -0
- package/dist/index.html +6 -6
- package/dist/sw.js +1 -1
- package/dist/sw.js.map +1 -1
- package/package.json +7 -7
- package/src/dev/Playtest.vue +254 -0
- package/src/main.ts +13 -2
- package/src/router.ts +17 -17
- package/dist/assets/AdminDashboard-BObO6egG.js +0 -2
- package/dist/assets/DataInputFormTester-ywHjm2yC.js +0 -2
- package/dist/assets/DataInputFormTester-ywHjm2yC.js.map +0 -1
- package/dist/assets/EloModeration-B6LM11G_.js +0 -2
- package/dist/assets/MarkdownRenderer-DoVbFpA6-CQGwEJFh.js +0 -1
- package/dist/assets/Study-D9W1DKes.js +0 -2
- package/dist/assets/TagInformation-DgUkKxoU.js +0 -2
- package/dist/assets/common-ui.es-DKUQOgQx.js +0 -1
- package/dist/assets/dist-5cG6aSxW.js +0 -1
- package/dist/assets/dist-CrcJCHFk.js.map +0 -1
- package/dist/assets/dist-CzLl7g6t.js.map +0 -1
- package/dist/assets/dist-D5-LrzD6.js +0 -186
- package/dist/assets/dist-D5-LrzD6.js.map +0 -1
- package/dist/assets/dist-y6_rrqhr.js +0 -1
- package/dist/assets/edit-ui.es-C9MhXwkt.js +0 -36
- package/dist/assets/edit-ui.es-DT9CMaNG.js +0 -1
- package/dist/assets/index-DUZItsH-.js +0 -4
- package/dist/assets/index-DUZItsH-.js.map +0 -1
- package/src/dev/DataInputFormTester.vue +0 -117
|
@@ -0,0 +1 @@
|
|
|
1
|
+
#abc{width:100%;height:100%}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./vue.runtime.esm-bundler-C3q8JS9f.js";import"./common-ui.es-p3cgaI_b.js";import"./dist-leWgtXBf.js";import"./MarkdownRenderer-DoVbFpA6-CvaBjTS8.js";import"./dist-DA7EuQY2.js";import"./CourseWare-BTFRjgBR-OzjKW1B2.js";import{t as e}from"./sightsing-BFQ7HRig-BNrrORP_.js";export{e as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.letter-display[data-v-4ae4db54]{color:#333;text-transform:uppercase;background-color:#f8f9fa;border:2px solid #dee2e6;border-radius:8px;justify-content:center;align-items:center;width:80px;height:80px;margin:20px auto;font-family:monospace;font-size:48px;font-weight:700;display:flex;box-shadow:0 2px #dee2e6,0 3px 3px #0003}.letter-display.pressed[data-v-4ae4db54]{transform:translateY(2px);box-shadow:0 0 #dee2e6,0 1px 2px #0003}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import"./chunk-D6hFPZc3.js";import{B as e,H as t,T as n,Vt as r,_ as i,b as a,f as o,g as s,lt as c,y as l,z as u}from"./vue.runtime.esm-bundler-C3q8JS9f.js";import{m as d}from"./common-ui.es-p3cgaI_b.js";import{S as f,T as p,n as m,y as h}from"./dist-leWgtXBf.js";import{S as g,x as _}from"./MarkdownRenderer-DoVbFpA6-CvaBjTS8.js";import{n as v,t as y,u as b}from"./CourseWare-BTFRjgBR-OzjKW1B2.js";var x,S,C=n({name:`LetterQuestionView`,props:{data:{type:Array,required:!0},modifyDifficulty:{type:Number,required:!1,default:0}},setup(t,{emit:n}){let r=g(t,n,`LetterQuestionView`),i=_(r),a=c(null);i.question.value=new D(t.data);let o=s(()=>i.question.value),handleKeyPress=e=>{if(!o.value)return;let t=e.key.toLowerCase(),n=o.value.letter.toLowerCase();if(t===n){a.value?.classList.add(`pressed`);let handleKeyUp=e=>{e.key.toLowerCase()===n&&(a.value?.classList.remove(`pressed`),i.submitAnswer(t),window.removeEventListener(`keyup`,handleKeyUp))};window.addEventListener(`keyup`,handleKeyUp)}else i.submitAnswer(t)};return u(()=>{window.addEventListener(`keypress`,handleKeyPress)}),e(()=>{window.removeEventListener(`keypress`,handleKeyPress)}),{...i,...r,letterDisplay:a,question:o}}}),w={"data-viewable":`LetterQuestionView`};function _sfc_render(e,n,s,c,u,d){return t(),a(`div`,w,[e.question?(t(),a(o,{key:0},[n[0]||(n[0]=i(`p`,{class:`text-h5`},`Type this letter!`,-1)),i(`div`,{ref:`letterDisplay`,class:`letter-display`},r(e.question.letter),513)],64)):l(``,!0)])}var T=y(C,[[`render`,_sfc_render],[`__scopeId`,`data-v-4ae4db54`]]),E=b(function(){let e=[];for(let t=0;t<26;t++)e.push({letter:String.fromCharCode(65+t)});return e},`data`),D=(x=class TypeLetterQuestion extends d{constructor(e){var _super=(...e)=>(super(...e),h(this,`letter`,void 0),this);_super(e),this.letter=e[0].letter}evaluate(e,t){return{isCorrect:this.isCorrect(e),performance:this.displayedSkill(e,t)}}displayedSkill(e,t){if(this.isCorrect(e)){if(t<3e3)return 1;{let e=1-(t-3e3)/7e3*.75;return Math.max(.25,e)}}return 0}dataShapes(){return TypeLetterQuestion.dataShapes}views(){return TypeLetterQuestion.views}isCorrect(e){let t=e.toLowerCase()===this.letter.toLowerCase();return console.log(`singleLetter Q isCorrect: ${t}`),t}},h(x,`dataShapes`,[{name:m.TYPING_singleLetter,fields:[{name:`letter`,type:f.STRING,validator:{instructions:`Enter a single letter`,test:function(e){return!e||e.length!==1||!/[a-zA-Z]/.test(e)?{status:p.error,msg:`Input must be a single letter`}:{status:p.ok,msg:``}}}}]}]),h(x,`views`,[T]),h(x,`acceptsUserData`,!0),h(x,`seedData`,E()),x),data=function(){return[{gameLength:30,initialSpeed:2,acceleration:.1,spawnInterval:1}]},O=new v(`typing`,[D,(S=class FallingLettersQuestion extends d{constructor(e){var _super2=(...e)=>(super(...e),h(this,`gameLength`,void 0),h(this,`initialSpeed`,void 0),h(this,`acceleration`,void 0),h(this,`spawnInterval`,void 0),this);_super2(e),this.gameLength=e[0].gameLength,this.initialSpeed=e[0].initialSpeed,this.acceleration=e[0].acceleration,this.spawnInterval=e[0].spawnInterval}evaluate(e){return{isCorrect:this.isCorrect(e),performance:this.displayedSkill(e)}}displayedSkill(e){return e.win?1:e.percentage}dataShapes(){return FallingLettersQuestion.dataShapes}views(){return FallingLettersQuestion.views}isCorrect(e){return e.win}},h(S,`dataShapes`,[{name:m.TYPING_fallingLetters,fields:[{name:`gameLength`,type:f.NUMBER},{name:`initialSpeed`,type:f.NUMBER},{name:`acceleration`,type:f.NUMBER},{name:`spawnInterval`,type:f.NUMBER,validator:{instructions:`How often should a new letter spawn? (in seconds)`,test:e=>typeof e==`string`?parseFloat(e)>0?{status:p.ok,msg:``}:{status:p.error,msg:`Must be greater than 0`}:{status:p.error,msg:`Unexpected non-string input.`},placeholder:`1`}}]}]),h(S,`views`,[]),h(S,`acceptsUserData`,!0),h(S,`seedData`,data()),S)]);export{O as t};
|
|
2
|
+
//# sourceMappingURL=typing-BevtfWlp-Cl6jtRmX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typing-BevtfWlp-Cl6jtRmX.js","names":["c","g","h","f","i","l","u","d","o","r","s","p","a","t","e","m","_","v","y","n"],"sources":["../../../courseware/dist/typing-BevtfWlp.js"],"sourcesContent":["import { r as e } from \"./shapes-BQUVJdp5.js\";\nimport { r as t, t as n } from \"./CourseWare-BTFRjgBR.js\";\nimport { Fragment as r, computed as i, createCommentVNode as a, createElementBlock as o, createElementVNode as s, defineComponent as c, onMounted as l, onUnmounted as u, openBlock as d, ref as f, toDisplayString as p } from \"vue\";\nimport { Question as m, useQuestionView as h, useViewable as g } from \"@vue-skuilder/common-ui\";\nimport { DataShapeName as _, FieldType as v, Status as y } from \"@vue-skuilder/common\";\nimport './assets/typing.css';//#region src/typing/questions/single-letter/typeSingleLetter.vue?vue&type=script&lang.ts\nvar b = c({\n\tname: \"LetterQuestionView\",\n\tprops: {\n\t\tdata: {\n\t\t\ttype: Array,\n\t\t\trequired: !0\n\t\t},\n\t\tmodifyDifficulty: {\n\t\t\ttype: Number,\n\t\t\trequired: !1,\n\t\t\tdefault: 0\n\t\t}\n\t},\n\tsetup(e, { emit: t }) {\n\t\tlet n = g(e, t, \"LetterQuestionView\"), r = h(n), a = f(null);\n\t\tr.question.value = new w(e.data);\n\t\tlet o = i(() => r.question.value), handleKeyPress = (e) => {\n\t\t\tif (!o.value) return;\n\t\t\tlet t = e.key.toLowerCase(), n = o.value.letter.toLowerCase();\n\t\t\tif (t === n) {\n\t\t\t\ta.value?.classList.add(\"pressed\");\n\t\t\t\tlet handleKeyUp = (e) => {\n\t\t\t\t\te.key.toLowerCase() === n && (a.value?.classList.remove(\"pressed\"), r.submitAnswer(t), window.removeEventListener(\"keyup\", handleKeyUp));\n\t\t\t\t};\n\t\t\t\twindow.addEventListener(\"keyup\", handleKeyUp);\n\t\t\t} else r.submitAnswer(t);\n\t\t};\n\t\treturn l(() => {\n\t\t\twindow.addEventListener(\"keypress\", handleKeyPress);\n\t\t}), u(() => {\n\t\t\twindow.removeEventListener(\"keypress\", handleKeyPress);\n\t\t}), {\n\t\t\t...r,\n\t\t\t...n,\n\t\t\tletterDisplay: a,\n\t\t\tquestion: o\n\t\t};\n\t}\n}), x = { \"data-viewable\": \"LetterQuestionView\" };\nfunction _sfc_render(e, t, n, i, c, l) {\n\treturn d(), o(\"div\", x, [e.question ? (d(), o(r, { key: 0 }, [t[0] ||= s(\"p\", { class: \"text-h5\" }, \"Type this letter!\", -1), s(\"div\", {\n\t\tref: \"letterDisplay\",\n\t\tclass: \"letter-display\"\n\t}, p(e.question.letter), 513)], 64)) : a(\"\", !0)]);\n}\nvar S = /* @__PURE__ */ t(b, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-4ae4db54\"]]), C = /* @__PURE__ */ e(function() {\n\tlet e = [];\n\tfor (let t = 0; t < 26; t++) e.push({ letter: String.fromCharCode(65 + t) });\n\treturn e;\n}, \"data\"), w = class TypeLetterQuestion extends m {\n\tstatic dataShapes = [{\n\t\tname: _.TYPING_singleLetter,\n\t\tfields: [{\n\t\t\tname: \"letter\",\n\t\t\ttype: v.STRING,\n\t\t\tvalidator: {\n\t\t\t\tinstructions: \"Enter a single letter\",\n\t\t\t\ttest: function(e) {\n\t\t\t\t\treturn !e || e.length !== 1 || !/[a-zA-Z]/.test(e) ? {\n\t\t\t\t\t\tstatus: y.error,\n\t\t\t\t\t\tmsg: \"Input must be a single letter\"\n\t\t\t\t\t} : {\n\t\t\t\t\t\tstatus: y.ok,\n\t\t\t\t\t\tmsg: \"\"\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t}]\n\t}];\n\tstatic views = [S];\n\tstatic acceptsUserData = !0;\n\tletter;\n\tstatic seedData = C();\n\tconstructor(e) {\n\t\tsuper(e), this.letter = e[0].letter;\n\t}\n\tevaluate(e, t) {\n\t\treturn {\n\t\t\tisCorrect: this.isCorrect(e),\n\t\t\tperformance: this.displayedSkill(e, t)\n\t\t};\n\t}\n\tdisplayedSkill(e, t) {\n\t\tif (this.isCorrect(e)) {\n\t\t\tif (t < 3e3) return 1;\n\t\t\t{\n\t\t\t\tlet e = 1 - (t - 3e3) / 7e3 * .75;\n\t\t\t\treturn Math.max(.25, e);\n\t\t\t}\n\t\t}\n\t\treturn 0;\n\t}\n\tdataShapes() {\n\t\treturn TypeLetterQuestion.dataShapes;\n\t}\n\tviews() {\n\t\treturn TypeLetterQuestion.views;\n\t}\n\tisCorrect(e) {\n\t\tlet t = e.toLowerCase() === this.letter.toLowerCase();\n\t\treturn console.log(`singleLetter Q isCorrect: ${t}`), t;\n\t}\n}, data = function() {\n\treturn [{\n\t\tgameLength: 30,\n\t\tinitialSpeed: 2,\n\t\tacceleration: .1,\n\t\tspawnInterval: 1\n\t}];\n}, T = new n(\"typing\", [w, class FallingLettersQuestion extends m {\n\tstatic dataShapes = [{\n\t\tname: _.TYPING_fallingLetters,\n\t\tfields: [\n\t\t\t{\n\t\t\t\tname: \"gameLength\",\n\t\t\t\ttype: v.NUMBER\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"initialSpeed\",\n\t\t\t\ttype: v.NUMBER\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"acceleration\",\n\t\t\t\ttype: v.NUMBER\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"spawnInterval\",\n\t\t\t\ttype: v.NUMBER,\n\t\t\t\tvalidator: {\n\t\t\t\t\tinstructions: \"How often should a new letter spawn? (in seconds)\",\n\t\t\t\t\ttest: (e) => typeof e == \"string\" ? parseFloat(e) > 0 ? {\n\t\t\t\t\t\tstatus: y.ok,\n\t\t\t\t\t\tmsg: \"\"\n\t\t\t\t\t} : {\n\t\t\t\t\t\tstatus: y.error,\n\t\t\t\t\t\tmsg: \"Must be greater than 0\"\n\t\t\t\t\t} : {\n\t\t\t\t\t\tstatus: y.error,\n\t\t\t\t\t\tmsg: \"Unexpected non-string input.\"\n\t\t\t\t\t},\n\t\t\t\t\tplaceholder: \"1\"\n\t\t\t\t}\n\t\t\t}\n\t\t]\n\t}];\n\tstatic views = [];\n\tstatic acceptsUserData = !0;\n\tstatic seedData = data();\n\tgameLength;\n\tinitialSpeed;\n\tacceleration;\n\tspawnInterval;\n\tconstructor(e) {\n\t\tsuper(e), this.gameLength = e[0].gameLength, this.initialSpeed = e[0].initialSpeed, this.acceleration = e[0].acceleration, this.spawnInterval = e[0].spawnInterval;\n\t}\n\tevaluate(e) {\n\t\treturn {\n\t\t\tisCorrect: this.isCorrect(e),\n\t\t\tperformance: this.displayedSkill(e)\n\t\t};\n\t}\n\tdisplayedSkill(e) {\n\t\treturn e.win ? 1 : e.percentage;\n\t}\n\tdataShapes() {\n\t\treturn FallingLettersQuestion.dataShapes;\n\t}\n\tviews() {\n\t\treturn FallingLettersQuestion.views;\n\t}\n\tisCorrect(e) {\n\t\treturn e.win;\n\t}\n}]);\n//#endregion\nexport { T as t };\n\n//# sourceMappingURL=typing-BevtfWlp.js.map"],"mappings":"wZAMI,EAAIA,EAAE,CACT,KAAM,qBACN,MAAO,CACN,KAAM,CACL,KAAM,MACN,SAAU,CAAC,EACX,CACD,iBAAkB,CACjB,KAAM,OACN,SAAU,CAAC,EACX,QAAS,EACT,CACD,CACD,MAAM,EAAG,CAAE,KAAM,GAAK,CACrB,IAAI,EAAIC,EAAE,EAAG,EAAG,qBAAqB,CAAE,EAAIC,EAAE,EAAE,CAAE,EAAIC,EAAE,KAAK,CAC5D,EAAE,SAAS,MAAQ,IAAI,EAAE,EAAE,KAAK,CAChC,IAAI,EAAIC,MAAQ,EAAE,SAAS,MAAM,CAAE,eAAkB,GAAM,CAC1D,GAAI,CAAC,EAAE,MAAO,OACd,IAAI,EAAI,EAAE,IAAI,aAAa,CAAE,EAAI,EAAE,MAAM,OAAO,aAAa,CAC7D,GAAI,IAAM,EAAG,CACZ,EAAE,OAAO,UAAU,IAAI,UAAU,CACjC,IAAI,YAAe,GAAM,CACxB,EAAE,IAAI,aAAa,GAAK,IAAM,EAAE,OAAO,UAAU,OAAO,UAAU,CAAE,EAAE,aAAa,EAAE,CAAE,OAAO,oBAAoB,QAAS,YAAY,GAExI,OAAO,iBAAiB,QAAS,YAAY,MACvC,EAAE,aAAa,EAAE,EAEzB,OAAOC,MAAQ,CACd,OAAO,iBAAiB,WAAY,eAAe,EAClD,CAAEC,MAAQ,CACX,OAAO,oBAAoB,WAAY,eAAe,EACrD,CAAE,CACH,GAAG,EACH,GAAG,EACH,cAAe,EACf,SAAU,EACV,EAEF,CAAC,CAAE,EAAI,CAAE,gBAAiB,qBAAsB,CACjD,SAAS,YAAY,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CACtC,OAAOC,GAAG,CAAEC,EAAE,MAAO,EAAG,CAAC,EAAE,UAAYD,GAAG,CAAEC,EAAEC,EAAG,CAAE,IAAK,EAAG,CAAE,CAAC,EAAE,KAAF,EAAE,GAAOC,EAAE,IAAK,CAAE,MAAO,UAAW,CAAE,oBAAqB,GAAG,EAAEA,EAAE,MAAO,CACtI,IAAK,gBACL,MAAO,iBACP,CAAEC,EAAE,EAAE,SAAS,OAAO,CAAE,IAAI,CAAC,CAAE,GAAG,EAAIC,EAAE,GAAI,CAAC,EAAE,CAAC,CAAC,KAE/C,EAAoBC,EAAE,EAAG,CAAC,CAAC,SAAU,YAAY,CAAE,CAAC,YAAa,kBAAkB,CAAC,CAAC,CAAE,EAAoBC,EAAE,UAAW,CAC3H,IAAI,EAAI,EAAE,CACV,IAAK,IAAI,EAAI,EAAG,EAAI,GAAI,IAAK,EAAE,KAAK,CAAE,OAAQ,OAAO,aAAa,GAAK,EAAE,CAAE,CAAC,CAC5E,OAAO,GACL,OAAO,CAAE,GAAA,EAAI,MAAM,2BAA2BC,CAAE,CAwBlD,YAAY,EAAG,wCAFf,SAAA,IAAA,GAAO,CAAA,MAGN,OAAM,EAAE,CAAE,KAAK,OAAS,EAAE,GAAG,OAE9B,SAAS,EAAG,EAAG,CACd,MAAO,CACN,UAAW,KAAK,UAAU,EAAE,CAC5B,YAAa,KAAK,eAAe,EAAG,EAAE,CACtC,CAEF,eAAe,EAAG,EAAG,CACpB,GAAI,KAAK,UAAU,EAAE,CAAE,CACtB,GAAI,EAAI,IAAK,MAAO,GACpB,CACC,IAAI,EAAI,GAAK,EAAI,KAAO,IAAM,IAC9B,OAAO,KAAK,IAAI,IAAK,EAAE,EAGzB,MAAO,GAER,YAAa,CACZ,OAAO,mBAAmB,WAE3B,OAAQ,CACP,OAAO,mBAAmB,MAE3B,UAAU,EAAG,CACZ,IAAI,EAAI,EAAE,aAAa,GAAK,KAAK,OAAO,aAAa,CACrD,OAAO,QAAQ,IAAI,6BAA6B,IAAI,CAAE,QAlDhD,aAAa,CAAC,CACpB,KAAMC,EAAE,oBACR,OAAQ,CAAC,CACR,KAAM,SACN,KAAMC,EAAE,OACR,UAAW,CACV,aAAc,wBACd,KAAM,SAAS,EAAG,CACjB,MAAO,CAAC,GAAK,EAAE,SAAW,GAAK,CAAC,WAAW,KAAK,EAAE,CAAG,CACpD,OAAQC,EAAE,MACV,IAAK,gCACL,CAAG,CACH,OAAQA,EAAE,GACV,IAAK,GACL,EAEF,CACD,CAAC,CACF,CAAC,CAAC,CAAA,EAAA,EACI,QAAQ,CAAC,EAAE,CAAC,CAAA,EAAA,EACZ,kBAAkB,CAAC,EAAE,CAAA,EAAA,EAErB,WAAW,GAAG,CAAC,CAAA,GA8BpB,KAAO,UAAW,CACpB,MAAO,CAAC,CACP,WAAY,GACZ,aAAc,EACd,aAAc,GACd,cAAe,EACf,CAAC,EACA,EAAI,IAAIC,EAAE,SAAU,CAAC,GAAA,EAAG,MAAM,+BAA+BJ,CAAE,CA2CjE,YAAY,EAAG,yCAJf,aAAA,IAAA,GAAW,CAAA,EAAA,KACX,eAAA,IAAA,GAAa,CAAA,EAAA,KACb,eAAA,IAAA,GAAa,CAAA,EAAA,KACb,gBAAA,IAAA,GAAc,CAAA,MAEb,QAAM,EAAE,CAAE,KAAK,WAAa,EAAE,GAAG,WAAY,KAAK,aAAe,EAAE,GAAG,aAAc,KAAK,aAAe,EAAE,GAAG,aAAc,KAAK,cAAgB,EAAE,GAAG,cAEtJ,SAAS,EAAG,CACX,MAAO,CACN,UAAW,KAAK,UAAU,EAAE,CAC5B,YAAa,KAAK,eAAe,EAAE,CACnC,CAEF,eAAe,EAAG,CACjB,OAAO,EAAE,IAAM,EAAI,EAAE,WAEtB,YAAa,CACZ,OAAO,uBAAuB,WAE/B,OAAQ,CACP,OAAO,uBAAuB,MAE/B,UAAU,EAAG,CACZ,OAAO,EAAE,UA7DH,aAAa,CAAC,CACpB,KAAMC,EAAE,sBACR,OAAQ,CACP,CACC,KAAM,aACN,KAAMC,EAAE,OACR,CACD,CACC,KAAM,eACN,KAAMA,EAAE,OACR,CACD,CACC,KAAM,eACN,KAAMA,EAAE,OACR,CACD,CACC,KAAM,gBACN,KAAMA,EAAE,OACR,UAAW,CACV,aAAc,oDACd,KAAO,GAAM,OAAO,GAAK,SAAW,WAAW,EAAE,CAAG,EAAI,CACvD,OAAQC,EAAE,GACV,IAAK,GACL,CAAG,CACH,OAAQA,EAAE,MACV,IAAK,yBACL,CAAG,CACH,OAAQA,EAAE,MACV,IAAK,+BACL,CACD,YAAa,IACb,CACD,CACD,CACD,CAAC,CAAC,CAAA,EAAA,EACI,QAAQ,EAAE,CAAC,CAAA,EAAA,EACX,kBAAkB,CAAC,EAAE,CAAA,EAAA,EACrB,WAAW,MAAM,CAAC,CAAA,GA0BxB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./vue.runtime.esm-bundler-C3q8JS9f.js";import"./common-ui.es-p3cgaI_b.js";import"./dist-leWgtXBf.js";import"./MarkdownRenderer-DoVbFpA6-CvaBjTS8.js";import"./dist-DA7EuQY2.js";import"./CourseWare-BTFRjgBR-OzjKW1B2.js";import{t as e}from"./typing-BevtfWlp-Cl6jtRmX.js";export{e as default};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import"./chunk-D6hFPZc3.js";import{$ as e,C as t,H as n,K as r,T as i,Vt as a,_ as o,b as s,f as c,g as l,lt as u,y as d}from"./vue.runtime.esm-bundler-C3q8JS9f.js";import{m as f}from"./common-ui.es-p3cgaI_b.js";import{S as p,d as m,n as h,y as g}from"./dist-leWgtXBf.js";import{C as _,S as v,s as y,x as b}from"./MarkdownRenderer-DoVbFpA6-CvaBjTS8.js";import{n as x,t as S}from"./CourseWare-BTFRjgBR-OzjKW1B2.js";var C,w=i({name:`IdentifyVocab`,components:{AudioAutoPlayer:_,UserInputString:y},props:{data:{type:Array,required:!0},modifyDifficulty:{type:Number,required:!1,default:0}},setup(e,{emit:t}){let n=v(e,t,`IdentifyVocab`),r=b(n),i=u(``);r.question.value=new k(e.data);let a=l(()=>r.question.value),submit=()=>{a.value&&r.submitAnswer(i.value)};return{...n,...r,answer:i,question:a,submit}}}),T={"data-viewable":`IdentifyVocab`},E={key:0,class:`text-h6`};function _sfc_render(i,l,u,f,p,m){let h=r(`UserInputString`),g=r(`center`),_=r(`audio-auto-player`);return n(),s(`div`,T,[i.question?(n(),s(c,{key:0},[l[1]||(l[1]=o(`span`,{class:`text-h5`},` Spell the word: `,-1)),t(h,{modelValue:i.answer,"onUpdate:modelValue":l[0]||(l[0]=e=>i.answer=e)},null,8,[`modelValue`]),t(g,null,{default:e(()=>[i.priorAttempts?(n(),s(`span`,E,a(i.question.word),1)):d(``,!0)]),_:1}),t(g,null,{default:e(()=>[t(_,{src:[i.getURL(`WordAudio`),i.getURL(`SentenceAudio`),i.getURL(`WordAudio`)]},null,8,[`src`])]),_:1})],64)):d(``,!0)])}var D=S(w,[[`render`,_sfc_render]]),O=[{name:`Word`,type:p.STRING,validator:m.NonEmptyString},{name:`ExampleSentence`,type:p.STRING},{name:`WordAudio`,type:p.AUDIO},{name:`SentenceAudio`,type:p.AUDIO}],k=(C=class SpellingQuestion extends f{constructor(e){var _super=(...e)=>(super(...e),g(this,`word`,void 0),g(this,`sentence`,void 0),g(this,`audio_word`,void 0),g(this,`audio_sentence`,void 0),this);_super(e),this.word=e[0].Word,this.sentence=e[0].Sentence,this.audio_word=e[0].WordAudio,this.audio_sentence=e[0].SentenceAudio}isCorrect(e){return e===this.word}dataShapes(){return SpellingQuestion.dataShapes}views(){return SpellingQuestion.views}},g(C,`dataShapes`,[{fields:O,name:h.WORDWORK_Spelling}]),g(C,`views`,[D]),C),A=new x(`wordWork`,[k]);export{A as t};
|
|
2
|
+
//# sourceMappingURL=word-work-BOnRlZgd-CGV2xRx9.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"word-work-BOnRlZgd-CGV2xRx9.js","names":["c","m","g","v","_","u","r","d","l","a","n","o","s","p","f","i","e","b","x","h","y","t"],"sources":["../../../courseware/dist/word-work-BOnRlZgd.js"],"sourcesContent":["import \"./shapes-BQUVJdp5.js\";\nimport { r as e, t } from \"./CourseWare-BTFRjgBR.js\";\nimport { Fragment as n, computed as r, createCommentVNode as i, createElementBlock as a, createElementVNode as o, createVNode as s, defineComponent as c, openBlock as l, ref as u, resolveComponent as d, toDisplayString as f, withCtx as p } from \"vue\";\nimport { AudioAutoPlayer as m, Question as h, UserInputString as g, useQuestionView as _, useViewable as v } from \"@vue-skuilder/common-ui\";\nimport { DataShapeName as y, FieldType as b, Validators as x } from \"@vue-skuilder/common\";\n//#region src/word-work/questions/spelling/textBox.vue?vue&type=script&lang.ts\nvar S = c({\n\tname: \"IdentifyVocab\",\n\tcomponents: {\n\t\tAudioAutoPlayer: m,\n\t\tUserInputString: g\n\t},\n\tprops: {\n\t\tdata: {\n\t\t\ttype: Array,\n\t\t\trequired: !0\n\t\t},\n\t\tmodifyDifficulty: {\n\t\t\ttype: Number,\n\t\t\trequired: !1,\n\t\t\tdefault: 0\n\t\t}\n\t},\n\tsetup(e, { emit: t }) {\n\t\tlet n = v(e, t, \"IdentifyVocab\"), i = _(n), a = u(\"\");\n\t\ti.question.value = new D(e.data);\n\t\tlet o = r(() => i.question.value), submit = () => {\n\t\t\to.value && i.submitAnswer(a.value);\n\t\t};\n\t\treturn {\n\t\t\t...n,\n\t\t\t...i,\n\t\t\tanswer: a,\n\t\t\tquestion: o,\n\t\t\tsubmit\n\t\t};\n\t}\n}), C = { \"data-viewable\": \"IdentifyVocab\" }, w = {\n\tkey: 0,\n\tclass: \"text-h6\"\n};\nfunction _sfc_render(e, t, r, c, u, m) {\n\tlet h = d(\"UserInputString\"), g = d(\"center\"), _ = d(\"audio-auto-player\");\n\treturn l(), a(\"div\", C, [e.question ? (l(), a(n, { key: 0 }, [\n\t\tt[1] ||= o(\"span\", { class: \"text-h5\" }, \" Spell the word: \", -1),\n\t\ts(h, {\n\t\t\tmodelValue: e.answer,\n\t\t\t\"onUpdate:modelValue\": t[0] ||= (t) => e.answer = t\n\t\t}, null, 8, [\"modelValue\"]),\n\t\ts(g, null, {\n\t\t\tdefault: p(() => [e.priorAttempts ? (l(), a(\"span\", w, f(e.question.word), 1)) : i(\"\", !0)]),\n\t\t\t_: 1\n\t\t}),\n\t\ts(g, null, {\n\t\t\tdefault: p(() => [s(_, { src: [\n\t\t\t\te.getURL(\"WordAudio\"),\n\t\t\t\te.getURL(\"SentenceAudio\"),\n\t\t\t\te.getURL(\"WordAudio\")\n\t\t\t] }, null, 8, [\"src\"])]),\n\t\t\t_: 1\n\t\t})\n\t], 64)) : i(\"\", !0)]);\n}\nvar T = /* @__PURE__ */ e(S, [[\"render\", _sfc_render]]), E = [\n\t{\n\t\tname: \"Word\",\n\t\ttype: b.STRING,\n\t\tvalidator: x.NonEmptyString\n\t},\n\t{\n\t\tname: \"ExampleSentence\",\n\t\ttype: b.STRING\n\t},\n\t{\n\t\tname: \"WordAudio\",\n\t\ttype: b.AUDIO\n\t},\n\t{\n\t\tname: \"SentenceAudio\",\n\t\ttype: b.AUDIO\n\t}\n], D = class SpellingQuestion extends h {\n\tstatic dataShapes = [{\n\t\tfields: E,\n\t\tname: y.WORDWORK_Spelling\n\t}];\n\tstatic views = [T];\n\tword;\n\tsentence;\n\taudio_word;\n\taudio_sentence;\n\tconstructor(e) {\n\t\tsuper(e), this.word = e[0].Word, this.sentence = e[0].Sentence, this.audio_word = e[0].WordAudio, this.audio_sentence = e[0].SentenceAudio;\n\t}\n\tisCorrect(e) {\n\t\treturn e === this.word;\n\t}\n\tdataShapes() {\n\t\treturn SpellingQuestion.dataShapes;\n\t}\n\tviews() {\n\t\treturn SpellingQuestion.views;\n\t}\n}, O = new t(\"wordWork\", [D]);\n//#endregion\nexport { O as t };\n\n//# sourceMappingURL=word-work-BOnRlZgd.js.map"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./vue.runtime.esm-bundler-C3q8JS9f.js";import"./common-ui.es-p3cgaI_b.js";import"./dist-leWgtXBf.js";import"./MarkdownRenderer-DoVbFpA6-CvaBjTS8.js";import"./dist-DA7EuQY2.js";import"./CourseWare-BTFRjgBR-OzjKW1B2.js";import{t as e}from"./word-work-BOnRlZgd-CGV2xRx9.js";export{e as default};
|
package/dist/index.html
CHANGED
|
@@ -8,15 +8,15 @@
|
|
|
8
8
|
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
|
|
9
9
|
<link rel="shortcut icon" href="/favicon.ico" />
|
|
10
10
|
<title>eduQuilt</title>
|
|
11
|
-
<script type="module" crossorigin src="/assets/index-
|
|
11
|
+
<script type="module" crossorigin src="/assets/index-B-cSF0fq.js"></script>
|
|
12
12
|
<link rel="modulepreload" crossorigin href="/assets/chunk-D6hFPZc3.js">
|
|
13
|
-
<link rel="modulepreload" crossorigin href="/assets/dist-
|
|
14
|
-
<link rel="modulepreload" crossorigin href="/assets/dist-
|
|
13
|
+
<link rel="modulepreload" crossorigin href="/assets/dist-leWgtXBf.js">
|
|
14
|
+
<link rel="modulepreload" crossorigin href="/assets/dist-DA7EuQY2.js">
|
|
15
15
|
<link rel="modulepreload" crossorigin href="/assets/vue.runtime.esm-bundler-C3q8JS9f.js">
|
|
16
|
-
<link rel="modulepreload" crossorigin href="/assets/MarkdownRenderer-DoVbFpA6-
|
|
17
|
-
<link rel="modulepreload" crossorigin href="/assets/common-ui.es-
|
|
16
|
+
<link rel="modulepreload" crossorigin href="/assets/MarkdownRenderer-DoVbFpA6-CvaBjTS8.js">
|
|
17
|
+
<link rel="modulepreload" crossorigin href="/assets/common-ui.es-p3cgaI_b.js">
|
|
18
18
|
<link rel="stylesheet" crossorigin href="/assets/common-ui-BY2Ut5jf.css">
|
|
19
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
19
|
+
<link rel="stylesheet" crossorigin href="/assets/index-CmEEzdUX.css">
|
|
20
20
|
<link rel="manifest" href="/manifest.webmanifest"></head>
|
|
21
21
|
|
|
22
22
|
<body>
|
package/dist/sw.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
if(!self.define){let s,e={};const l=(l,i)=>(l=new URL(l+".js",i).href,e[l]||new Promise((e=>{if("document"in self){const s=document.createElement("script");s.src=l,s.onload=e,document.head.appendChild(s)}else s=l,importScripts(l),e()})).then((()=>{let s=e[l];if(!s)throw new Error(`Module ${l} didn’t register its module`);return s})));self.define=(i,
|
|
1
|
+
if(!self.define){let s,e={};const l=(l,i)=>(l=new URL(l+".js",i).href,e[l]||new Promise((e=>{if("document"in self){const s=document.createElement("script");s.src=l,s.onload=e,document.head.appendChild(s)}else s=l,importScripts(l),e()})).then((()=>{let s=e[l];if(!s)throw new Error(`Module ${l} didn’t register its module`);return s})));self.define=(i,r)=>{const n=s||("document"in self?document.currentScript.src:"")||location.href;if(e[n])return;let o={};const u=s=>l(s,n),t={module:{uri:n},exports:o,require:u};e[n]=Promise.all(i.map((s=>t[s]||u(s)))).then((s=>(r(...s),o)))}}define(["./workbox-1be04862"],(function(s){"use strict";self.skipWaiting(),s.clientsClaim(),s.precacheAndRoute([{url:"assets/About-eVevEMqh.js",revision:null},{url:"assets/AdminDashboard-C_oJ8NGZ.js",revision:null},{url:"assets/AdminDashboard-CWnC_vEI.css",revision:null},{url:"assets/chess-BbHATAzk-BhFAwbgX.js",revision:null},{url:"assets/chess-BbHATAzk-DB7z_kWx.css",revision:null},{url:"assets/chess-X1bmWmh3-C7B3mHa1.js",revision:null},{url:"assets/chunk-D6hFPZc3.js",revision:null},{url:"assets/ClassroomCtrlPanel-DanEeAZ0.js",revision:null},{url:"assets/Classrooms-OrG6VOnx.js",revision:null},{url:"assets/common-ui-BY2Ut5jf.css",revision:null},{url:"assets/common-ui.es-C18SEA_L.js",revision:null},{url:"assets/common-ui.es-p3cgaI_b.js",revision:null},{url:"assets/CourseRouter-CK8Xh2h2.js",revision:null},{url:"assets/CourseRouter-DvfjFpWl.css",revision:null},{url:"assets/Courses-CsGfVDf9.css",revision:null},{url:"assets/Courses-DB0JFz1Q.js",revision:null},{url:"assets/CourseWare-BTFRjgBR-D750E7i0.css",revision:null},{url:"assets/CourseWare-BTFRjgBR-OzjKW1B2.js",revision:null},{url:"assets/dist-CszlUrrD.js",revision:null},{url:"assets/dist-D2Tzeiyw.js",revision:null},{url:"assets/dist-DA7EuQY2.js",revision:null},{url:"assets/dist-DCY40cJ7.js",revision:null},{url:"assets/dist-leWgtXBf.js",revision:null},{url:"assets/edit-ui.es-BIV0deYk.js",revision:null},{url:"assets/edit-ui.es-BLMFpJm1.js",revision:null},{url:"assets/EloModeration-BmU0CqZt.js",revision:null},{url:"assets/EloModeration-DgUqPPoO.css",revision:null},{url:"assets/french-Dk7YG8Td-YK4jNZUN.js",revision:null},{url:"assets/french-evUMlbbq-BbJDdRqK.js",revision:null},{url:"assets/index-B-cSF0fq.js",revision:null},{url:"assets/index-CmEEzdUX.css",revision:null},{url:"assets/JoinCode-DPSfXf5z.css",revision:null},{url:"assets/JoinCode-KoSLXpUy.js",revision:null},{url:"assets/MarkdownRenderer-DoVbFpA6-CvaBjTS8.js",revision:null},{url:"assets/MarkdownRenderer-DoVbFpA6-DZdbKtns.js",revision:null},{url:"assets/materialdesignicons-webfont-Dp5v-WZN.woff2",revision:null},{url:"assets/math-B4HbgYf6-CLJIZTjv.js",revision:null},{url:"assets/math-B4HbgYf6-CZyvKZtp.css",revision:null},{url:"assets/math-DYni7rRl-C6a4BDoN.js",revision:null},{url:"assets/NewCourseDialog-BXxQ1cvK.js",revision:null},{url:"assets/piano-BN5Btq91-Cdn8kuW5.js",revision:null},{url:"assets/piano-DF1g6yaX-AR14jqWm.js",revision:null},{url:"assets/piano-DF1g6yaX-BLvDAgl1.css",revision:null},{url:"assets/pitch-CgGJFkZ1-DYkp_AV0.js",revision:null},{url:"assets/pitch-Dn0iNqiS-CJ_97iB4.js",revision:null},{url:"assets/ReleaseNotes-CERYwZro.js",revision:null},{url:"assets/RequestPasswordReset-Bc4FHaYS.js",revision:null},{url:"assets/RequestPasswordReset-Du5-awJG.css",revision:null},{url:"assets/ResetPassword-CeR_bmOz.js",revision:null},{url:"assets/Roboto-Black-VhoA2qKx.woff2",revision:null},{url:"assets/Roboto-BlackItalic-D4yie1YO.woff2",revision:null},{url:"assets/Roboto-Bold-hN3duQhD.woff2",revision:null},{url:"assets/Roboto-BoldItalic-BWDm51uc.woff2",revision:null},{url:"assets/Roboto-Light-DHTugVNA.woff2",revision:null},{url:"assets/Roboto-LightItalic-JQyp2Y3P.woff2",revision:null},{url:"assets/Roboto-Medium-ByKogCTi.woff2",revision:null},{url:"assets/Roboto-MediumItalic-i1eR0KbF.woff2",revision:null},{url:"assets/Roboto-Regular-C6rbFxYz.woff2",revision:null},{url:"assets/Roboto-RegularItalic-CvPUdkvM.woff2",revision:null},{url:"assets/Roboto-Thin-NicBC1pN.woff2",revision:null},{url:"assets/Roboto-ThinItalic-CKlCjrO_.woff2",revision:null},{url:"assets/server-Bq50faqp.js",revision:null},{url:"assets/sightsing-BFQ7HRig-BNrrORP_.js",revision:null},{url:"assets/sightsing-BFQ7HRig-DkUGf5Yf.css",revision:null},{url:"assets/sightsing-CJX3k0Fd-l4fhB1Aj.js",revision:null},{url:"assets/Study-R4LCAP7J.css",revision:null},{url:"assets/Study-voro05GB.js",revision:null},{url:"assets/TagInformation-1urKQaI-.js",revision:null},{url:"assets/typing-BevtfWlp-B7ZMUAQJ.css",revision:null},{url:"assets/typing-BevtfWlp-Cl6jtRmX.js",revision:null},{url:"assets/typing-k-ojjO7G-CHgxm7Rx.js",revision:null},{url:"assets/User-26Hebdw-.js",revision:null},{url:"assets/UserStats-DbWUnAPD.js",revision:null},{url:"assets/VerifyEmail-uix17ueS.js",revision:null},{url:"assets/vue.runtime.esm-bundler-C3q8JS9f.js",revision:null},{url:"assets/word-work-BOnRlZgd-CGV2xRx9.js",revision:null},{url:"assets/word-work-Dd6tIKrt-BjF3-3lq.js",revision:null},{url:"assets/workbox-window.prod.es5-DBwpKi3B.js",revision:null},{url:"favicon.ico",revision:"b71387b4508120b59615e43d5e103706"},{url:"img/icons/safari-pinned-tab.svg",revision:"f22d501a35a87d9f21701cb031f6ea17"},{url:"index.html",revision:"2d74e67693c07ab49c1cd655f61a595f"},{url:"manifest.json",revision:"14a155103e25199244cdda503219c3e1"},{url:"robots.txt",revision:"b6216d61c03e6ce0c9aea6ca7808f7ca"},{url:"manifest.webmanifest",revision:"0ad80257ac95729a8c88588d23a396c1"}],{}),s.cleanupOutdatedCaches(),s.registerRoute(new s.NavigationRoute(s.createHandlerBoundToURL("/index.html"),{allowlist:[/^(?!\/(couch|express)).*$/]}))}));
|
|
2
2
|
//# sourceMappingURL=sw.js.map
|
package/dist/sw.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sw.js","sources":["../../../../../../../tmp/fe55481d26ab027419f39877b414fb23/sw.js"],"sourcesContent":["import {clientsClaim as workbox_core_clientsClaim} from '/home/runner/work/vue-skuilder/vue-skuilder/node_modules/workbox-core/clientsClaim.mjs';\nimport {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/home/runner/work/vue-skuilder/vue-skuilder/node_modules/workbox-precaching/precacheAndRoute.mjs';\nimport {cleanupOutdatedCaches as workbox_precaching_cleanupOutdatedCaches} from '/home/runner/work/vue-skuilder/vue-skuilder/node_modules/workbox-precaching/cleanupOutdatedCaches.mjs';\nimport {registerRoute as workbox_routing_registerRoute} from '/home/runner/work/vue-skuilder/vue-skuilder/node_modules/workbox-routing/registerRoute.mjs';\nimport {NavigationRoute as workbox_routing_NavigationRoute} from '/home/runner/work/vue-skuilder/vue-skuilder/node_modules/workbox-routing/NavigationRoute.mjs';\nimport {createHandlerBoundToURL as workbox_precaching_createHandlerBoundToURL} from '/home/runner/work/vue-skuilder/vue-skuilder/node_modules/workbox-precaching/createHandlerBoundToURL.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\n\n\n\nself.skipWaiting();\n\nworkbox_core_clientsClaim();\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"assets/About-BpqIdlZQ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/AdminDashboard-BObO6egG.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/AdminDashboard-CWnC_vEI.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/chunk-D6hFPZc3.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ClassroomCtrlPanel-lgN6cdTd.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Classrooms-BWoQ4i1_.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/common-ui-BY2Ut5jf.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/common-ui.es-BrXWBn7p.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/common-ui.es-DKUQOgQx.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/CourseRouter-CODD0Qm5.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/CourseRouter-DvfjFpWl.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Courses-ClDdLQUO.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Courses-CsGfVDf9.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/DataInputFormTester-ywHjm2yC.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dist-5cG6aSxW.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dist-CrcJCHFk.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dist-CzLl7g6t.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dist-D5-LrzD6.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dist-y6_rrqhr.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/edit-ui.es-C9MhXwkt.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/edit-ui.es-DT9CMaNG.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/EloModeration-B6LM11G_.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/EloModeration-DgUqPPoO.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-C8gy3Ea0.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-DUZItsH-.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/JoinCode-DgPD_OFL.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/JoinCode-DPSfXf5z.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/MarkdownRenderer-DoVbFpA6-BIbDxYC4.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/MarkdownRenderer-DoVbFpA6-CQGwEJFh.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/materialdesignicons-webfont-Dp5v-WZN.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/NewCourseDialog-DhwvBT3y.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ReleaseNotes-DtwDIIfH.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/RequestPasswordReset-DBv0XCIk.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/RequestPasswordReset-Du5-awJG.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ResetPassword-BtBplqsQ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Roboto-Black-VhoA2qKx.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Roboto-BlackItalic-D4yie1YO.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Roboto-Bold-hN3duQhD.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Roboto-BoldItalic-BWDm51uc.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Roboto-Light-DHTugVNA.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Roboto-LightItalic-JQyp2Y3P.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Roboto-Medium-ByKogCTi.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Roboto-MediumItalic-i1eR0KbF.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Roboto-Regular-C6rbFxYz.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Roboto-RegularItalic-CvPUdkvM.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Roboto-Thin-NicBC1pN.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Roboto-ThinItalic-CKlCjrO_.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/server-Db_WegNj.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Study-D9W1DKes.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Study-R4LCAP7J.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/TagInformation-DgUkKxoU.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/User-DorFkRx_.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/UserStats-ck9Oh4qt.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/VerifyEmail-BYt5xfhm.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vue.runtime.esm-bundler-C3q8JS9f.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/workbox-window.prod.es5-DBwpKi3B.js\",\n \"revision\": null\n },\n {\n \"url\": \"favicon.ico\",\n \"revision\": \"b71387b4508120b59615e43d5e103706\"\n },\n {\n \"url\": \"img/icons/safari-pinned-tab.svg\",\n \"revision\": \"f22d501a35a87d9f21701cb031f6ea17\"\n },\n {\n \"url\": \"index.html\",\n \"revision\": \"5fa4fb13f89206e02c184546abd6b0c2\"\n },\n {\n \"url\": \"manifest.json\",\n \"revision\": \"14a155103e25199244cdda503219c3e1\"\n },\n {\n \"url\": \"robots.txt\",\n \"revision\": \"b6216d61c03e6ce0c9aea6ca7808f7ca\"\n },\n {\n \"url\": \"manifest.webmanifest\",\n \"revision\": \"0ad80257ac95729a8c88588d23a396c1\"\n }\n], {});\nworkbox_precaching_cleanupOutdatedCaches();\nworkbox_routing_registerRoute(new workbox_routing_NavigationRoute(workbox_precaching_createHandlerBoundToURL(\"/index.html\"), {\n allowlist: [/^(?!\\/(couch|express)).*$/],\n \n}));\n\n\n\n\n\n\n"],"names":["self","skipWaiting","workbox_core_clientsClaim","workbox_precaching_precacheAndRoute","url","revision","workbox_precaching_cleanupOutdatedCaches","workbox","registerRoute","workbox_routing_NavigationRoute","NavigationRoute","workbox_precaching_createHandlerBoundToURL","allowlist"],"mappings":"0nBAwBAA,KAAKC,cAELC,EAAAA,eAQAC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,yCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,+CACPC,SAAY,MAEd,CACED,IAAO,+CACPC,SAAY,MAEd,CACED,IAAO,oDACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,sCACPC,SAAY,MAEd,CACED,IAAO,4CACPC,SAAY,MAEd,CACED,IAAO,uCACPC,SAAY,MAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,cACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,aACPC,SAAY,oCAEd,CACED,IAAO,gBACPC,SAAY,oCAEd,CACED,IAAO,aACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,qCAEb,CAAE,GACLC,EAAAA,wBAC6BC,EAAAC,cAAC,IAAIC,EAA+BC,gBAACC,0BAA2C,eAAgB,CAC3HC,UAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"sw.js","sources":["../../../../../../../tmp/349a1c64ac676ca07ca32c252e837879/sw.js"],"sourcesContent":["import {clientsClaim as workbox_core_clientsClaim} from '/home/runner/work/vue-skuilder/vue-skuilder/node_modules/workbox-core/clientsClaim.mjs';\nimport {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/home/runner/work/vue-skuilder/vue-skuilder/node_modules/workbox-precaching/precacheAndRoute.mjs';\nimport {cleanupOutdatedCaches as workbox_precaching_cleanupOutdatedCaches} from '/home/runner/work/vue-skuilder/vue-skuilder/node_modules/workbox-precaching/cleanupOutdatedCaches.mjs';\nimport {registerRoute as workbox_routing_registerRoute} from '/home/runner/work/vue-skuilder/vue-skuilder/node_modules/workbox-routing/registerRoute.mjs';\nimport {NavigationRoute as workbox_routing_NavigationRoute} from '/home/runner/work/vue-skuilder/vue-skuilder/node_modules/workbox-routing/NavigationRoute.mjs';\nimport {createHandlerBoundToURL as workbox_precaching_createHandlerBoundToURL} from '/home/runner/work/vue-skuilder/vue-skuilder/node_modules/workbox-precaching/createHandlerBoundToURL.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\n\n\n\nself.skipWaiting();\n\nworkbox_core_clientsClaim();\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"assets/About-eVevEMqh.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/AdminDashboard-C_oJ8NGZ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/AdminDashboard-CWnC_vEI.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/chess-BbHATAzk-BhFAwbgX.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/chess-BbHATAzk-DB7z_kWx.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/chess-X1bmWmh3-C7B3mHa1.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/chunk-D6hFPZc3.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ClassroomCtrlPanel-DanEeAZ0.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Classrooms-OrG6VOnx.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/common-ui-BY2Ut5jf.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/common-ui.es-C18SEA_L.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/common-ui.es-p3cgaI_b.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/CourseRouter-CK8Xh2h2.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/CourseRouter-DvfjFpWl.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Courses-CsGfVDf9.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Courses-DB0JFz1Q.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/CourseWare-BTFRjgBR-D750E7i0.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/CourseWare-BTFRjgBR-OzjKW1B2.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dist-CszlUrrD.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dist-D2Tzeiyw.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dist-DA7EuQY2.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dist-DCY40cJ7.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dist-leWgtXBf.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/edit-ui.es-BIV0deYk.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/edit-ui.es-BLMFpJm1.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/EloModeration-BmU0CqZt.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/EloModeration-DgUqPPoO.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/french-Dk7YG8Td-YK4jNZUN.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/french-evUMlbbq-BbJDdRqK.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-B-cSF0fq.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-CmEEzdUX.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/JoinCode-DPSfXf5z.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/JoinCode-KoSLXpUy.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/MarkdownRenderer-DoVbFpA6-CvaBjTS8.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/MarkdownRenderer-DoVbFpA6-DZdbKtns.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/materialdesignicons-webfont-Dp5v-WZN.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/math-B4HbgYf6-CLJIZTjv.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/math-B4HbgYf6-CZyvKZtp.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/math-DYni7rRl-C6a4BDoN.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/NewCourseDialog-BXxQ1cvK.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/piano-BN5Btq91-Cdn8kuW5.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/piano-DF1g6yaX-AR14jqWm.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/piano-DF1g6yaX-BLvDAgl1.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/pitch-CgGJFkZ1-DYkp_AV0.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/pitch-Dn0iNqiS-CJ_97iB4.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ReleaseNotes-CERYwZro.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/RequestPasswordReset-Bc4FHaYS.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/RequestPasswordReset-Du5-awJG.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ResetPassword-CeR_bmOz.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Roboto-Black-VhoA2qKx.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Roboto-BlackItalic-D4yie1YO.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Roboto-Bold-hN3duQhD.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Roboto-BoldItalic-BWDm51uc.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Roboto-Light-DHTugVNA.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Roboto-LightItalic-JQyp2Y3P.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Roboto-Medium-ByKogCTi.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Roboto-MediumItalic-i1eR0KbF.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Roboto-Regular-C6rbFxYz.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Roboto-RegularItalic-CvPUdkvM.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Roboto-Thin-NicBC1pN.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Roboto-ThinItalic-CKlCjrO_.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/server-Bq50faqp.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/sightsing-BFQ7HRig-BNrrORP_.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/sightsing-BFQ7HRig-DkUGf5Yf.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/sightsing-CJX3k0Fd-l4fhB1Aj.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Study-R4LCAP7J.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Study-voro05GB.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/TagInformation-1urKQaI-.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/typing-BevtfWlp-B7ZMUAQJ.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/typing-BevtfWlp-Cl6jtRmX.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/typing-k-ojjO7G-CHgxm7Rx.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/User-26Hebdw-.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/UserStats-DbWUnAPD.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/VerifyEmail-uix17ueS.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vue.runtime.esm-bundler-C3q8JS9f.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/word-work-BOnRlZgd-CGV2xRx9.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/word-work-Dd6tIKrt-BjF3-3lq.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/workbox-window.prod.es5-DBwpKi3B.js\",\n \"revision\": null\n },\n {\n \"url\": \"favicon.ico\",\n \"revision\": \"b71387b4508120b59615e43d5e103706\"\n },\n {\n \"url\": \"img/icons/safari-pinned-tab.svg\",\n \"revision\": \"f22d501a35a87d9f21701cb031f6ea17\"\n },\n {\n \"url\": \"index.html\",\n \"revision\": \"2d74e67693c07ab49c1cd655f61a595f\"\n },\n {\n \"url\": \"manifest.json\",\n \"revision\": \"14a155103e25199244cdda503219c3e1\"\n },\n {\n \"url\": \"robots.txt\",\n \"revision\": \"b6216d61c03e6ce0c9aea6ca7808f7ca\"\n },\n {\n \"url\": \"manifest.webmanifest\",\n \"revision\": \"0ad80257ac95729a8c88588d23a396c1\"\n }\n], {});\nworkbox_precaching_cleanupOutdatedCaches();\nworkbox_routing_registerRoute(new workbox_routing_NavigationRoute(workbox_precaching_createHandlerBoundToURL(\"/index.html\"), {\n allowlist: [/^(?!\\/(couch|express)).*$/],\n \n}));\n\n\n\n\n\n\n"],"names":["self","skipWaiting","workbox_core_clientsClaim","workbox_precaching_precacheAndRoute","url","revision","workbox_precaching_cleanupOutdatedCaches","workbox","registerRoute","workbox_routing_NavigationRoute","NavigationRoute","workbox_precaching_createHandlerBoundToURL","allowlist"],"mappings":"0nBAwBAA,KAAKC,cAELC,EAAAA,eAQAC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,yCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,+CACPC,SAAY,MAEd,CACED,IAAO,+CACPC,SAAY,MAEd,CACED,IAAO,oDACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,sCACPC,SAAY,MAEd,CACED,IAAO,4CACPC,SAAY,MAEd,CACED,IAAO,uCACPC,SAAY,MAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,yCACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,sCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,cACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,aACPC,SAAY,oCAEd,CACED,IAAO,gBACPC,SAAY,oCAEd,CACED,IAAO,aACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,qCAEb,CAAE,GACLC,EAAAA,wBAC6BC,EAAAC,cAAC,IAAIC,EAA+BC,gBAACC,0BAA2C,eAAgB,CAC3HC,UAAW,CAAC"}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "0.1.
|
|
6
|
+
"version": "0.1.36",
|
|
7
7
|
"scripts": {
|
|
8
8
|
"dev": "vite",
|
|
9
9
|
"build": "vite build",
|
|
@@ -25,11 +25,11 @@
|
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"@mdi/font": "^7.3.67",
|
|
27
27
|
"@tonaljs/tonal": "^3.6.0",
|
|
28
|
-
"@vue-skuilder/common": "0.1.
|
|
29
|
-
"@vue-skuilder/common-ui": "0.1.
|
|
30
|
-
"@vue-skuilder/courseware": "0.1.
|
|
31
|
-
"@vue-skuilder/db": "0.1.
|
|
32
|
-
"@vue-skuilder/edit-ui": "0.1.
|
|
28
|
+
"@vue-skuilder/common": "0.1.36",
|
|
29
|
+
"@vue-skuilder/common-ui": "0.1.36",
|
|
30
|
+
"@vue-skuilder/courseware": "0.1.36",
|
|
31
|
+
"@vue-skuilder/db": "0.1.36",
|
|
32
|
+
"@vue-skuilder/edit-ui": "0.1.36",
|
|
33
33
|
"@vue/compiler-sfc": "^3.5.13",
|
|
34
34
|
"abcjs": "^6.2.2",
|
|
35
35
|
"canvas-confetti": "^1.9.3",
|
|
@@ -91,5 +91,5 @@
|
|
|
91
91
|
"engines": {
|
|
92
92
|
"node": ">=18"
|
|
93
93
|
},
|
|
94
|
-
"stableVersion": "0.1.
|
|
94
|
+
"stableVersion": "0.1.36"
|
|
95
95
|
}
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="playtest pa-4">
|
|
3
|
+
<!-- Index mode: no question selected -->
|
|
4
|
+
<template v-if="!slug">
|
|
5
|
+
<h1 class="text-h4 mb-4">Playtest</h1>
|
|
6
|
+
<p class="text-body-2 mb-4">
|
|
7
|
+
Render any question type from <code>@vue-skuilder/courseware</code> with author-input
|
|
8
|
+
and/or self-generation. Dev-only route. Bypasses the <code>allCourseWare</code> registry —
|
|
9
|
+
unregistered prototypes (e.g. forks) are loadable here.
|
|
10
|
+
</p>
|
|
11
|
+
<div v-for="group in grouped" :key="group.domain" class="mb-4">
|
|
12
|
+
<h2 class="text-h6">{{ group.domain }}</h2>
|
|
13
|
+
<ul>
|
|
14
|
+
<li v-for="q in group.questions" :key="q.slug">
|
|
15
|
+
<router-link :to="`/play/${q.slug}`">{{ q.slug }}</router-link>
|
|
16
|
+
</li>
|
|
17
|
+
</ul>
|
|
18
|
+
</div>
|
|
19
|
+
</template>
|
|
20
|
+
|
|
21
|
+
<!-- Loading / error -->
|
|
22
|
+
<template v-else-if="loadError">
|
|
23
|
+
<router-link to="/play">← back to index</router-link>
|
|
24
|
+
<v-alert type="error" class="mt-4">{{ loadError }}</v-alert>
|
|
25
|
+
</template>
|
|
26
|
+
<template v-else-if="!QClass">
|
|
27
|
+
<v-progress-circular indeterminate />
|
|
28
|
+
</template>
|
|
29
|
+
|
|
30
|
+
<!-- Question mode -->
|
|
31
|
+
<template v-else>
|
|
32
|
+
<div class="d-flex align-center mb-3">
|
|
33
|
+
<router-link to="/play">← index</router-link>
|
|
34
|
+
<h1 class="text-h5 mx-4">{{ slug }}</h1>
|
|
35
|
+
<v-chip size="small" :color="QClass.acceptsUserData ? 'primary' : 'secondary'">
|
|
36
|
+
{{ QClass.acceptsUserData ? 'authored' : 'self-gen' }}
|
|
37
|
+
</v-chip>
|
|
38
|
+
<v-spacer />
|
|
39
|
+
<v-btn size="small" color="primary" @click="reroll">Reroll</v-btn>
|
|
40
|
+
</div>
|
|
41
|
+
|
|
42
|
+
<v-row>
|
|
43
|
+
<!-- Author input + DataInputForm's own preview -->
|
|
44
|
+
<v-col v-if="dataShape" cols="12" lg="6">
|
|
45
|
+
<h3 class="text-subtitle-1 mb-2">Author input</h3>
|
|
46
|
+
<DataInputForm
|
|
47
|
+
:key="`form-${rerollKey}`"
|
|
48
|
+
:data-shape="dataShape"
|
|
49
|
+
:preview-component="QClass"
|
|
50
|
+
:course-cfg="fakeCourseCfg"
|
|
51
|
+
/>
|
|
52
|
+
</v-col>
|
|
53
|
+
|
|
54
|
+
<!-- Direct CardViewer + response log -->
|
|
55
|
+
<v-col :cols="dataShape ? 12 : 12" :lg="dataShape ? 6 : 12">
|
|
56
|
+
<h3 class="text-subtitle-1 mb-2">Render & capture</h3>
|
|
57
|
+
<div v-if="renderData">
|
|
58
|
+
<CardViewer
|
|
59
|
+
:key="`view-${rerollKey}`"
|
|
60
|
+
:view="QClass.views[0]"
|
|
61
|
+
:data="renderData"
|
|
62
|
+
card_id="playtest"
|
|
63
|
+
course_id="playtest"
|
|
64
|
+
@emit-response="onResponse"
|
|
65
|
+
/>
|
|
66
|
+
</div>
|
|
67
|
+
<v-alert v-else type="info" density="compact">
|
|
68
|
+
Fill in the author form on the left to populate render data.
|
|
69
|
+
</v-alert>
|
|
70
|
+
|
|
71
|
+
<h3 class="text-subtitle-1 mt-4 mb-2">
|
|
72
|
+
Response log ({{ responseLog.length }})
|
|
73
|
+
<v-btn v-if="responseLog.length" size="x-small" variant="text" @click="responseLog = []">
|
|
74
|
+
clear
|
|
75
|
+
</v-btn>
|
|
76
|
+
</h3>
|
|
77
|
+
<pre v-if="responseLog.length" class="response-log">{{
|
|
78
|
+
JSON.stringify(responseLog, null, 2)
|
|
79
|
+
}}</pre>
|
|
80
|
+
<div v-else class="text-caption text-grey">No responses captured yet.</div>
|
|
81
|
+
</v-col>
|
|
82
|
+
</v-row>
|
|
83
|
+
</template>
|
|
84
|
+
</div>
|
|
85
|
+
</template>
|
|
86
|
+
|
|
87
|
+
<script lang="ts">
|
|
88
|
+
import { defineComponent } from 'vue';
|
|
89
|
+
import { useRoute } from 'vue-router';
|
|
90
|
+
import { DataInputForm, useDataInputFormStore } from '@vue-skuilder/edit-ui';
|
|
91
|
+
import { CardViewer, Question } from '@vue-skuilder/common-ui';
|
|
92
|
+
import type { DataShape, CourseConfig, ViewData } from '@vue-skuilder/common';
|
|
93
|
+
import type { CardRecord } from '@vue-skuilder/db';
|
|
94
|
+
|
|
95
|
+
type QClass = typeof Question;
|
|
96
|
+
|
|
97
|
+
// Discover every question module under @vue-skuilder/courseware.
|
|
98
|
+
// import.meta.glob is resolved at build time; in dev these are real
|
|
99
|
+
// filesystem paths across the yarn workspace.
|
|
100
|
+
const questionModules = import.meta.glob('../../../courseware/src/**/questions/**/index.ts');
|
|
101
|
+
|
|
102
|
+
const PREFIX = '../../../courseware/src/';
|
|
103
|
+
const SUFFIX = '/index.ts';
|
|
104
|
+
|
|
105
|
+
function pathToSlug(path: string): string {
|
|
106
|
+
// path: ../../../courseware/src/chess/questions/puzzle/index.ts
|
|
107
|
+
// slug: chess/puzzle
|
|
108
|
+
return path.slice(PREFIX.length, -SUFFIX.length).replace('/questions/', '/');
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
function slugToPath(slug: string): string {
|
|
112
|
+
// slug: chess/puzzle → path: chess/questions/puzzle
|
|
113
|
+
const [domain, ...rest] = slug.split('/');
|
|
114
|
+
return `${PREFIX}${domain}/questions/${rest.join('/')}${SUFFIX}`;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
const allSlugs = Object.keys(questionModules).map(pathToSlug).sort();
|
|
118
|
+
|
|
119
|
+
const groupedSlugs = allSlugs.reduce<{ domain: string; questions: { slug: string }[] }[]>(
|
|
120
|
+
(acc, slug) => {
|
|
121
|
+
const domain = slug.split('/')[0];
|
|
122
|
+
let group = acc.find((g) => g.domain === domain);
|
|
123
|
+
if (!group) {
|
|
124
|
+
group = { domain, questions: [] };
|
|
125
|
+
acc.push(group);
|
|
126
|
+
}
|
|
127
|
+
group.questions.push({ slug });
|
|
128
|
+
return acc;
|
|
129
|
+
},
|
|
130
|
+
[]
|
|
131
|
+
);
|
|
132
|
+
|
|
133
|
+
const fakeCourseCfg: CourseConfig = {
|
|
134
|
+
courseID: 'playtest',
|
|
135
|
+
name: 'Playtest',
|
|
136
|
+
description: 'Dev playtest harness — not a real course.',
|
|
137
|
+
admins: ['admin'],
|
|
138
|
+
creator: 'admin',
|
|
139
|
+
deleted: false,
|
|
140
|
+
moderators: [],
|
|
141
|
+
public: false,
|
|
142
|
+
disambiguator: 'playtest',
|
|
143
|
+
questionTypes: [],
|
|
144
|
+
dataShapes: [],
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
export default defineComponent({
|
|
148
|
+
name: 'PlaytestViewer',
|
|
149
|
+
components: { DataInputForm, CardViewer },
|
|
150
|
+
|
|
151
|
+
setup() {
|
|
152
|
+
return { route: useRoute(), dataInputFormStore: useDataInputFormStore() };
|
|
153
|
+
},
|
|
154
|
+
|
|
155
|
+
data() {
|
|
156
|
+
return {
|
|
157
|
+
QClass: null as QClass | null,
|
|
158
|
+
dataShape: null as DataShape | null,
|
|
159
|
+
loadError: '' as string,
|
|
160
|
+
rerollKey: 0,
|
|
161
|
+
responseLog: [] as CardRecord[],
|
|
162
|
+
grouped: groupedSlugs,
|
|
163
|
+
fakeCourseCfg,
|
|
164
|
+
};
|
|
165
|
+
},
|
|
166
|
+
|
|
167
|
+
computed: {
|
|
168
|
+
slug(): string {
|
|
169
|
+
const raw = this.route.params.pathMatch;
|
|
170
|
+
const s = Array.isArray(raw) ? raw.join('/') : raw || '';
|
|
171
|
+
return s.replace(/^\/+|\/+$/g, '');
|
|
172
|
+
},
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Reactive view-data assembled from the DataInputForm store.
|
|
176
|
+
*
|
|
177
|
+
* Returns `[previewInput]` when the form's validation passes — this is
|
|
178
|
+
* the same shape `card-browser` consumes inside DataInputForm, so the
|
|
179
|
+
* two panels stay in sync. If the dataShape has no fields (rare;
|
|
180
|
+
* fully self-generating types), fall back to `[{}]` so the view can
|
|
181
|
+
* still mount.
|
|
182
|
+
*/
|
|
183
|
+
renderData(): ViewData[] | null {
|
|
184
|
+
if (!this.dataShape) return null;
|
|
185
|
+
if (this.dataShape.fields.length === 0) return [{}];
|
|
186
|
+
const preview = this.dataInputFormStore.dataInputForm.fieldStore.getPreview;
|
|
187
|
+
if (!preview || Object.keys(preview).length === 0) return null;
|
|
188
|
+
return [preview as ViewData];
|
|
189
|
+
},
|
|
190
|
+
},
|
|
191
|
+
|
|
192
|
+
watch: {
|
|
193
|
+
slug: {
|
|
194
|
+
immediate: true,
|
|
195
|
+
handler(s: string) {
|
|
196
|
+
this.load(s);
|
|
197
|
+
},
|
|
198
|
+
},
|
|
199
|
+
},
|
|
200
|
+
|
|
201
|
+
methods: {
|
|
202
|
+
async load(slug: string) {
|
|
203
|
+
this.QClass = null;
|
|
204
|
+
this.dataShape = null;
|
|
205
|
+
this.loadError = '';
|
|
206
|
+
this.responseLog = [];
|
|
207
|
+
if (!slug) return;
|
|
208
|
+
|
|
209
|
+
const path = slugToPath(slug);
|
|
210
|
+
const loader = questionModules[path];
|
|
211
|
+
if (!loader) {
|
|
212
|
+
this.loadError = `No module at ${path}. Known slugs: ${allSlugs.join(', ')}`;
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
try {
|
|
217
|
+
const mod = (await loader()) as Record<string, unknown>;
|
|
218
|
+
const found = Object.values(mod).find(
|
|
219
|
+
(v) => typeof v === 'function' && (v as { prototype: unknown }).prototype instanceof Question
|
|
220
|
+
) as QClass | undefined;
|
|
221
|
+
if (!found) {
|
|
222
|
+
this.loadError = `Module ${path} exports no Question subclass.`;
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
this.QClass = found;
|
|
226
|
+
this.dataShape = found.dataShapes?.[0] ?? null;
|
|
227
|
+
} catch (e) {
|
|
228
|
+
this.loadError = `Failed to load ${path}: ${(e as Error).message}`;
|
|
229
|
+
}
|
|
230
|
+
},
|
|
231
|
+
|
|
232
|
+
reroll() {
|
|
233
|
+
this.rerollKey++;
|
|
234
|
+
this.responseLog = [];
|
|
235
|
+
},
|
|
236
|
+
|
|
237
|
+
onResponse(r: CardRecord) {
|
|
238
|
+
this.responseLog.push(r);
|
|
239
|
+
},
|
|
240
|
+
},
|
|
241
|
+
});
|
|
242
|
+
</script>
|
|
243
|
+
|
|
244
|
+
<style scoped>
|
|
245
|
+
.response-log {
|
|
246
|
+
background: rgba(0, 0, 0, 0.04);
|
|
247
|
+
padding: 8px;
|
|
248
|
+
border-radius: 4px;
|
|
249
|
+
font-size: 12px;
|
|
250
|
+
max-height: 320px;
|
|
251
|
+
overflow: auto;
|
|
252
|
+
white-space: pre-wrap;
|
|
253
|
+
}
|
|
254
|
+
</style>
|
package/src/main.ts
CHANGED
|
@@ -27,8 +27,19 @@ import { initializeDataLayer } from '@vue-skuilder/db';
|
|
|
27
27
|
const pinia = createPinia();
|
|
28
28
|
const app = createApp(App);
|
|
29
29
|
|
|
30
|
-
// Dynamically import { allCourseWare }
|
|
31
|
-
|
|
30
|
+
// Dynamically import { allCourseWare } and register all built-in courses.
|
|
31
|
+
// As of the courseware tree-shaking refactor, `allCourseWare` starts empty;
|
|
32
|
+
// platform-ui historically depended on all subcourses being available, so
|
|
33
|
+
// we eagerly load them all here. See packages/courseware/src/index.ts.
|
|
34
|
+
const {
|
|
35
|
+
allCourseWare: Courses,
|
|
36
|
+
defaultCourse,
|
|
37
|
+
loadAllSubcourses,
|
|
38
|
+
} = await import('@vue-skuilder/courseware');
|
|
39
|
+
if (!Courses.courses.find((c) => c.name === defaultCourse.name)) {
|
|
40
|
+
Courses.courses.push(defaultCourse);
|
|
41
|
+
}
|
|
42
|
+
await loadAllSubcourses();
|
|
32
43
|
|
|
33
44
|
// Register all view components globally
|
|
34
45
|
const viewComponents = Courses.allViewsRaw();
|
package/src/router.ts
CHANGED
|
@@ -27,29 +27,29 @@ const VerifyEmailView = () => import('./views/VerifyEmail.vue');
|
|
|
27
27
|
const RequestPasswordResetView = () => import('./views/RequestPasswordReset.vue');
|
|
28
28
|
const ResetPasswordView = () => import('./views/ResetPassword.vue');
|
|
29
29
|
const MarkdownRenderer = () => import('@vue-skuilder/common-ui').then((m) => m.MarkdownRenderer);
|
|
30
|
-
|
|
30
|
+
// Dev-only playtest harness. Lazy-imported but the route entry below is
|
|
31
|
+
// also wrapped in `import.meta.env.DEV` so the chunk is dropped from prod
|
|
32
|
+
// builds entirely.
|
|
33
|
+
const Playtest = () => import('./dev/Playtest.vue');
|
|
31
34
|
|
|
32
35
|
const router = createRouter({
|
|
33
36
|
history: createWebHistory(),
|
|
34
37
|
// mode: 'history', // deprecated in Vue 3 / Vue Router 4
|
|
35
38
|
|
|
36
39
|
routes: [
|
|
37
|
-
//
|
|
38
|
-
//
|
|
39
|
-
//
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
component: DataInputFormTester,
|
|
51
|
-
props: true,
|
|
52
|
-
},
|
|
40
|
+
// Dev-only playtest harness — see ./dev/Playtest.vue. The route is
|
|
41
|
+
// only registered when Vite is in dev mode, so prod builds neither
|
|
42
|
+
// expose the URL nor include the chunk.
|
|
43
|
+
...(import.meta.env.DEV
|
|
44
|
+
? [
|
|
45
|
+
{
|
|
46
|
+
path: '/play/:pathMatch(.*)?',
|
|
47
|
+
name: 'playtest',
|
|
48
|
+
component: Playtest,
|
|
49
|
+
props: true,
|
|
50
|
+
},
|
|
51
|
+
]
|
|
52
|
+
: []),
|
|
53
53
|
{
|
|
54
54
|
path: '/md',
|
|
55
55
|
component: MarkdownRenderer,
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"./chunk-D6hFPZc3.js";import{$ as e,C as t,H as n,K as r,S as i,T as a,Vt as o,_ as s,b as c,v as l,y as u}from"./vue.runtime.esm-bundler-C3q8JS9f.js";import{B as d,T as f,b as p,c as m,p as h}from"./common-ui.es-BrXWBn7p.js";import"./dist-CrcJCHFk.js";import"./MarkdownRenderer-DoVbFpA6-BIbDxYC4.js";import{k as g,n as _}from"./dist-CzLl7g6t.js";import{t as v}from"./index-DUZItsH-.js";import{g as y}from"./dist-D5-LrzD6.js";var b=a({name:`AdminDashboard`,components:{CardSearch:m,CardSearchResults:h,CardHistoryViewer:p,CardLoader:d},data(){return{query:``,selectedCard:null,userId:``,userDB:null,dataLayer:null,adminDB:null,selectedUserId:``,selectedUserReader:null,selectedCourseId:null,userOptions:[],courseOptions:[]}},async created(){this.userDB=await f(),this.userId=this.userDB.getUsername(),this.dataLayer=await g(),this.adminDB=this.dataLayer.getAdminDB(),await this.loadUsers(),await this.loadCourses()},methods:{async loadUsers(){try{this.userOptions=(await this.adminDB.getUsers()).filter(e=>e.name&&!e.name.startsWith(`Guest_`)).map(e=>({label:e.name||`Unknown User`,value:e.name||``})).filter(e=>e.value!==``)}catch(e){console.error(`Failed to load users:`,e)}},async onUserSelected(e){if(!e){this.selectedUserReader=null;return}try{this.selectedUserReader=await this.dataLayer.createUserReaderForUser(e)}catch(e){console.error(`Failed to create user reader:`,e),this.selectedUserReader=null}},onSearch(e){this.query=e},onCardSelected(e){this.selectedCard=e},async loadCourses(){try{this.courseOptions=(await _.allCourseWare()).filter(e=>e._id).map(e=>{let t=e.name&&e.name.trim(),n,r;return t&&t!==e._id&&t!==``?(n=t,r=t.toLowerCase()):(n=e._id,r=e._id.toLowerCase()),{label:`📚 ${n}`,value:e._id,sortKey:r}}).sort((e,t)=>e.sortKey.localeCompare(t.sortKey)),console.log(`Loaded ${this.courseOptions.length} courses for filtering (lightweight mode)`)}catch(e){console.error(`Failed to load courses (lightweight):`,e),await this.loadCoursesExpensive()}},async loadCoursesExpensive(){try{console.log(`Using expensive course loading (full configs)...`),this.courseOptions=(await this.dataLayer.getAdminDB().getCourses()).filter(e=>e.courseID).map(e=>{let t=e.name&&e.name.trim(),n=e.creator?` (${e.creator})`:``,r,i;return t&&t!==e.courseID?(r=t,i=t.toLowerCase()):(r=e.courseID,i=e.courseID.toLowerCase()),{label:`${e.public?`🌐`:`🔒`} ${r}${n}`,value:e.courseID,sortKey:i}}).sort((e,t)=>e.sortKey.localeCompare(t.sortKey)),console.log(`Loaded ${this.courseOptions.length} courses for filtering (expensive mode)`)}catch(e){console.error(`Failed to load courses (expensive):`,e),this.loadCoursesBasic()}},async loadCoursesBasic(){try{console.log(`Using fallback course loading (IDs only)`),this.courseOptions=[{label:`⚠️ Course names not available - using IDs only`,value:``}]}catch(e){console.error(`Failed to load basic courses:`,e)}},onCourseFilterChanged(){this.query},getCourseNameById(e){let t=this.courseOptions.find(t=>t.value===e);return t?t.label:e},getSelectedCourseDetails(){return this.selectedCourseId?`ID: ${this.selectedCourseId}`:``},viewLookup(e){return y.getView(e)}}}),x={class:`admin-dashboard`},S={key:0,class:`mt-2`},C={key:0,class:`text-caption text-grey-darken-1`};function _sfc_render(a,d,f,p,m,h){let g=r(`v-card-title`),_=r(`v-select`),v=r(`v-chip`),y=r(`v-card-text`),b=r(`v-card`),w=r(`card-search`),T=r(`card-search-results`),E=r(`v-col`),D=r(`card-loader`),O=r(`v-row`),k=r(`card-history-viewer`);return n(),c(`div`,x,[d[4]||(d[4]=s(`h1`,null,`Admin Dashboard`,-1)),t(b,{class:`mb-4`},{default:e(()=>[t(g,null,{default:e(()=>d[2]||(d[2]=[i(`User Selection`)])),_:1}),t(y,null,{default:e(()=>[t(_,{modelValue:a.selectedUserId,"onUpdate:modelValue":[d[0]||(d[0]=e=>a.selectedUserId=e),a.onUserSelected],items:a.userOptions,"item-title":`label`,"item-value":`value`,label:`Select User`},null,8,[`modelValue`,`items`,`onUpdate:modelValue`]),a.selectedUserId?(n(),l(v,{key:0,color:`primary`,class:`mt-2`},{default:e(()=>[i(` Viewing data for: `+o(a.selectedUserId),1)]),_:1})):u(``,!0)]),_:1})]),_:1}),t(b,{class:`mb-4`},{default:e(()=>[t(g,null,{default:e(()=>d[3]||(d[3]=[i(`Search Filters`)])),_:1}),t(y,null,{default:e(()=>[t(_,{modelValue:a.selectedCourseId,"onUpdate:modelValue":[d[1]||(d[1]=e=>a.selectedCourseId=e),a.onCourseFilterChanged],items:a.courseOptions,"item-title":`label`,"item-value":`value`,label:`Filter by Course (optional)`,clearable:``},null,8,[`modelValue`,`items`,`onUpdate:modelValue`]),a.selectedCourseId?(n(),c(`div`,S,[t(v,{color:`info`,class:`mb-1`},{default:e(()=>[i(` 🎯 `+o(a.getCourseNameById(a.selectedCourseId)),1)]),_:1}),a.getSelectedCourseDetails()?(n(),c(`div`,C,o(a.getSelectedCourseDetails()),1)):u(``,!0)])):(n(),l(v,{key:1,color:`warning`,class:`mt-2`},{default:e(()=>[i(` ⚠️ Searching ALL `+o(a.courseOptions.length)+` courses (may be slow) `,1)]),_:1}))]),_:1})]),_:1}),t(w,{onSearch:a.onSearch},null,8,[`onSearch`]),t(O,null,{default:e(()=>[t(E,{cols:`6`},{default:e(()=>[a.query?(n(),l(T,{key:0,query:a.query,"data-layer":a.dataLayer,"course-filter":a.selectedCourseId,onCardSelected:a.onCardSelected},null,8,[`query`,`data-layer`,`course-filter`,`onCardSelected`])):u(``,!0)]),_:1}),t(E,{cols:`6`},{default:e(()=>[a.selectedCard?(n(),l(D,{key:0,qualified_id:{courseID:a.selectedCard.courseId,cardID:a.selectedCard.cardId},"view-lookup":a.viewLookup},null,8,[`qualified_id`,`view-lookup`])):u(``,!0)]),_:1})]),_:1}),a.selectedCard&&a.selectedUserReader?(n(),l(k,{key:0,"card-id":a.selectedCard.cardId,"course-id":a.selectedCard.courseId,"user-id":a.selectedUserId,"user-d-b":a.selectedUserReader},null,8,[`card-id`,`course-id`,`user-id`,`user-d-b`])):u(``,!0)])}var w=v(b,[[`render`,_sfc_render],[`__scopeId`,`data-v-7409c94e`]]);export{w as default};
|
|
2
|
-
//# sourceMappingURL=AdminDashboard-BObO6egG.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"./chunk-D6hFPZc3.js";import{H as e,K as t,T as n,b as r,v as i}from"./vue.runtime.esm-bundler-C3q8JS9f.js";import{G as a,m as o}from"./common-ui.es-BrXWBn7p.js";import"./dist-CrcJCHFk.js";import"./MarkdownRenderer-DoVbFpA6-BIbDxYC4.js";import"./dist-CzLl7g6t.js";import{t as s}from"./index-DUZItsH-.js";import"./dist-D5-LrzD6.js";import{n as c}from"./edit-ui.es-C9MhXwkt.js";var l=Object.assign({}),u=n({name:`DataInputFormTester`,components:{DataInputForm:c},setup(){return{route:a()}},data(){return{dataShape:null,cds:null,component:null}},async created(){try{let e=`../${this.route.params.pathMatch}/index.ts`;if(console.log(`Looking for module:`,e),console.log(`Available paths:`,Object.keys(l)),e in l){let t=await l[e](),n=Object.entries(t).find(([e,t])=>{let n=typeof t==`function`,r=n&&t.prototype instanceof o;return console.log(`Checking export "${e}":`,{isClass:n,extendsQuestion:r,type:typeof t}),r});if(!n)throw Error(`No export found extending Question class`);this.component=n[1];let r=this.component?.dataShapes[0];r&&(this.dataShape=r)}else throw Error(`No module found at path: ${e}`)}catch(e){console.log(`[difTester] Error loading component`,e)}}}),d={key:1};function _sfc_render(n,a,o,s,c,l){let u=t(`data-input-form`);return e(),r(`div`,null,[n.component&&n.dataShape?(e(),i(u,{key:0,"data-shape":n.dataShape,"course-cfg":{courseID:`testCourse`,name:`testCourseName`,description:`All of these courses will be the same!`,admins:[`admin`],creator:`admin`,deleted:!1,moderators:[],public:!0,disambiguator:`testCourseName`,questionTypes:[],dataShapes:[]},"preview-component":n.component},null,8,[`data-shape`,`preview-component`])):(e(),r(`div`,d,` No component loaded :/ `))])}var f=s(u,[[`render`,_sfc_render]]);export{f as default};
|
|
2
|
-
//# sourceMappingURL=DataInputFormTester-ywHjm2yC.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DataInputFormTester-ywHjm2yC.js","names":[],"sources":["../../src/dev/DataInputFormTester.vue","../../src/dev/DataInputFormTester.vue"],"sourcesContent":["<template>\n <div>\n <data-input-form\n v-if=\"component && dataShape\"\n :data-shape=\"dataShape\"\n :course-cfg=\"{\n courseID: 'testCourse',\n name: 'testCourseName',\n description: 'All of these courses will be the same!',\n admins: ['admin'],\n creator: 'admin',\n deleted: false,\n moderators: [],\n public: true,\n disambiguator: 'testCourseName',\n questionTypes: [],\n dataShapes: [],\n }\"\n :preview-component=\"component\"\n />\n <div v-else>\n No component loaded :/\n <!--\n\n todo: provide list of Question type components, with router links\n to their DataInputFormTester loaders.\n\n --></div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { DataInputForm } from '@vue-skuilder/edit-ui';\nimport { DataShape } from '../../src/base-course/Interfaces/DataShape';\nimport { useRoute } from 'vue-router';\nimport { Question } from '@vue-skuilder/common-ui';\n\ntype CourseShapes = {\n courseID: string;\n dataShapes: DataShape[];\n};\n\nconst questionModules = import.meta.glob('../**/questions/**/index.ts', {\n // Adding eager: false ensures lazy loading\n eager: false,\n});\n\ntype ModuleExports = {\n [key: string]: unknown;\n};\n\nexport default defineComponent({\n name: 'DataInputFormTester',\n\n components: {\n DataInputForm,\n },\n\n setup() {\n return {\n route: useRoute(),\n };\n },\n\n data() {\n return {\n dataShape: null as DataShape | null,\n cds: null as CourseShapes[] | null,\n component: null as typeof Question | null,\n };\n },\n\n async created() {\n try {\n const q = this.route.params.pathMatch;\n const modulePath = `../${q}/index.ts`;\n\n console.log('Looking for module:', modulePath);\n console.log('Available paths:', Object.keys(questionModules));\n\n if (modulePath in questionModules) {\n const module = (await questionModules[modulePath]()) as ModuleExports;\n\n // Find the Question implementation\n const matchingExport = Object.entries(module).find(([name, exportValue]) => {\n const isClass = typeof exportValue === 'function';\n const extendsQuestion = isClass && exportValue.prototype instanceof Question;\n\n console.log(`Checking export \"${name}\":`, {\n isClass,\n extendsQuestion,\n type: typeof exportValue,\n });\n\n return extendsQuestion;\n });\n\n if (!matchingExport) {\n throw new Error('No export found extending Question class');\n }\n\n this.component = matchingExport[1] as typeof Question;\n\n const ds = this.component?.dataShapes[0];\n if (ds) {\n this.dataShape = ds;\n }\n } else {\n throw new Error(`No module found at path: ${modulePath}`);\n }\n } catch (e) {\n console.log('[difTester] Error loading component', e);\n }\n },\n});\n</script>\n","<template>\n <div>\n <data-input-form\n v-if=\"component && dataShape\"\n :data-shape=\"dataShape\"\n :course-cfg=\"{\n courseID: 'testCourse',\n name: 'testCourseName',\n description: 'All of these courses will be the same!',\n admins: ['admin'],\n creator: 'admin',\n deleted: false,\n moderators: [],\n public: true,\n disambiguator: 'testCourseName',\n questionTypes: [],\n dataShapes: [],\n }\"\n :preview-component=\"component\"\n />\n <div v-else>\n No component loaded :/\n <!--\n\n todo: provide list of Question type components, with router links\n to their DataInputFormTester loaders.\n\n --></div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { DataInputForm } from '@vue-skuilder/edit-ui';\nimport { DataShape } from '../../src/base-course/Interfaces/DataShape';\nimport { useRoute } from 'vue-router';\nimport { Question } from '@vue-skuilder/common-ui';\n\ntype CourseShapes = {\n courseID: string;\n dataShapes: DataShape[];\n};\n\nconst questionModules = import.meta.glob('../**/questions/**/index.ts', {\n // Adding eager: false ensures lazy loading\n eager: false,\n});\n\ntype ModuleExports = {\n [key: string]: unknown;\n};\n\nexport default defineComponent({\n name: 'DataInputFormTester',\n\n components: {\n DataInputForm,\n },\n\n setup() {\n return {\n route: useRoute(),\n };\n },\n\n data() {\n return {\n dataShape: null as DataShape | null,\n cds: null as CourseShapes[] | null,\n component: null as typeof Question | null,\n };\n },\n\n async created() {\n try {\n const q = this.route.params.pathMatch;\n const modulePath = `../${q}/index.ts`;\n\n console.log('Looking for module:', modulePath);\n console.log('Available paths:', Object.keys(questionModules));\n\n if (modulePath in questionModules) {\n const module = (await questionModules[modulePath]()) as ModuleExports;\n\n // Find the Question implementation\n const matchingExport = Object.entries(module).find(([name, exportValue]) => {\n const isClass = typeof exportValue === 'function';\n const extendsQuestion = isClass && exportValue.prototype instanceof Question;\n\n console.log(`Checking export \"${name}\":`, {\n isClass,\n extendsQuestion,\n type: typeof exportValue,\n });\n\n return extendsQuestion;\n });\n\n if (!matchingExport) {\n throw new Error('No export found extending Question class');\n }\n\n this.component = matchingExport[1] as typeof Question;\n\n const ds = this.component?.dataShapes[0];\n if (ds) {\n this.dataShape = ds;\n }\n } else {\n throw new Error(`No module found at path: ${modulePath}`);\n }\n } catch (e) {\n console.log('[difTester] Error loading component', e);\n }\n },\n});\n</script>\n"],"mappings":"8XC2CA,IAAM,EAAkB,OAAA,OAAA,EAAA,CAGtB,CAMF,EAAe,EAAgB,CAC7B,KAAM,sBAEN,WAAY,CACV,cAAA,EACD,CAED,OAAQ,CACN,MAAO,CACL,MAAO,GAAU,CAClB,EAGH,MAAO,CACL,MAAO,CACL,UAAW,KACX,IAAK,KACL,UAAW,KACZ,EAGH,MAAM,SAAU,CACd,GAAI,CAEF,IAAM,EAAa,MADT,KAAK,MAAM,OAAO,UACD,WAK3B,GAHA,QAAQ,IAAI,sBAAuB,EAAW,CAC9C,QAAQ,IAAI,mBAAoB,OAAO,KAAK,EAAgB,CAAC,CAEzD,KAAc,EAAiB,CACjC,IAAM,EAAU,MAAM,EAAgB,IAAa,CAG7C,EAAiB,OAAO,QAAQ,EAAO,CAAC,MAAM,CAAC,EAAM,KAAiB,CAC1E,IAAM,EAAU,OAAO,GAAgB,WACjC,EAAkB,GAAW,EAAY,qBAAqB,EAQpE,OANA,QAAQ,IAAI,oBAAoB,EAAK,IAAK,CACxC,UACA,kBACA,KAAM,OAAO,EACd,CAAC,CAEK,GACP,CAEF,GAAI,CAAC,EACH,MAAU,MAAM,2CAA2C,CAG7D,KAAK,UAAY,EAAe,GAEhC,IAAM,EAAK,KAAK,WAAW,WAAW,GAClC,IACF,KAAK,UAAY,QAGnB,MAAU,MAAM,4BAA4B,IAAa,OAEpD,EAAG,CACV,QAAQ,IAAI,sCAAuC,EAAE,GAG1D,CAAC,IAnHF,IAAA,EAAA,yEACE,EA2BM,MAAA,KAAA,CAzBI,EAAA,WAAa,EAAA,WAAA,GAAA,CADrB,EAiBE,EAAA,CAnBN,IAAA,EAIO,aAAY,EAAA,UACZ,aAAY,oOAYZ,CACA,oBAAmB,EAAA,4DAEtB,EAOS,MA3Bb,EAoBgB,2BAEV,EAAA,CAAA"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import"./chunk-D6hFPZc3.js";import{$ as e,C as t,H as n,K as r,S as i,T as a,_ as o,v as s,y as c}from"./vue.runtime.esm-bundler-C3q8JS9f.js";import{B as l}from"./common-ui.es-BrXWBn7p.js";import{m as u}from"./dist-CrcJCHFk.js";import"./MarkdownRenderer-DoVbFpA6-BIbDxYC4.js";import{k as d}from"./dist-CzLl7g6t.js";import{t as f}from"./index-DUZItsH-.js";import{g as p}from"./dist-D5-LrzD6.js";var m=a({name:`ELOModerator`,components:{CardLoader:l},props:{courseId:{type:String,required:!0}},data(){return{courseDB:null,updatePending:!0,courseConfig:null,cards:[],id1:null,id2:null,elo1:null,elo2:null,viewLookup:p.getView}},async created(){this.courseDB=d().getCourseDB(this.courseId),this.courseConfig=await this.courseDB.getCourseConfig(),await this.getNewCards()},methods:{vote(e){if(!this.elo1||!this.elo2)return;let t=u(this.elo1,this.elo2,e===`a`?1:0,{globalOnly:!0});this.courseDB.updateCardElo(this.cards[0].cardId,t.userElo),this.courseDB.updateCardElo(this.cards[1].cardId,t.cardElo),this.getNewCards()},async getNewCards(){this.courseDB&&(this.updatePending=!0,this.cards=await this.courseDB.getInexperiencedCards(),this.id1=null,this.id2=null,this.id1={courseID:this.courseId,cardID:this.cards[0].cardId},this.id2={courseID:this.courseId,cardID:this.cards[1].cardId},this.elo1=this.cards[0].elo,this.elo2=this.cards[1].elo,this.updatePending=!1)}}});function _sfc_render(a,l,u,d,f,p){let m=r(`v-col`),h=r(`v-row`),g=r(`v-icon`),_=r(`v-btn`),v=r(`card-loader`),y=r(`v-container`);return a.updatePending?c(``,!0):(n(),s(y,{key:0},{default:e(()=>[t(h,null,{default:e(()=>[t(m,{cols:`12`},{default:e(()=>l[2]||(l[2]=[o(`h1`,null,[i(`Which seems `),o(`em`,null,`harder`),i(`?`)],-1)])),_:1})]),_:1}),t(h,null,{default:e(()=>[t(m,null,{default:e(()=>[t(_,{color:`success`,class:`ma-5`,onClick:l[0]||(l[0]=e=>a.vote(`a`))},{default:e(()=>[t(g,null,{default:e(()=>l[3]||(l[3]=[i(`mdi-check`)])),_:1})]),_:1}),t(v,{class:`ma-2`,qualified_id:a.id1,"view-lookup":a.viewLookup},null,8,[`qualified_id`,`view-lookup`])]),_:1})]),_:1}),t(h,null,{default:e(()=>[t(m,null,{default:e(()=>[t(_,{color:`success`,class:`ma-5`,onClick:l[1]||(l[1]=e=>a.vote(`b`))},{default:e(()=>[t(g,null,{default:e(()=>l[4]||(l[4]=[i(`mdi-check`)])),_:1})]),_:1}),t(v,{class:`ma-2`,qualified_id:a.id2,"view-lookup":a.viewLookup},null,8,[`qualified_id`,`view-lookup`])]),_:1})]),_:1})]),_:1}))}var h=f(m,[[`render`,_sfc_render],[`__scopeId`,`data-v-df68b8b6`]]);export{h as default};
|
|
2
|
-
//# sourceMappingURL=EloModeration-B6LM11G_.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./vue.runtime.esm-bundler-C3q8JS9f.js";import"./dist-CrcJCHFk.js";import{w as e}from"./MarkdownRenderer-DoVbFpA6-BIbDxYC4.js";export{e as n};
|