@vue-skuilder/platform-ui 0.2.31 → 0.2.32
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-B8hGg4uI.js → About-B214b3Ir.js} +2 -2
- package/dist/assets/{About-B8hGg4uI.js.map → About-B214b3Ir.js.map} +1 -1
- package/dist/assets/{AdminDashboard-CokJ3Dt8.js → AdminDashboard-CzTzSre6.js} +2 -2
- package/dist/assets/{AdminDashboard-CokJ3Dt8.js.map → AdminDashboard-CzTzSre6.js.map} +1 -1
- package/dist/assets/{AdminLearner-F1fWIyBA.js → AdminLearner-Bytn_WEj.js} +2 -2
- package/dist/assets/{AdminLearner-F1fWIyBA.js.map → AdminLearner-Bytn_WEj.js.map} +1 -1
- package/dist/assets/{ClassroomCtrlPanel-DYlMFipO.js → ClassroomCtrlPanel-CNqwuP0s.js} +2 -2
- package/dist/assets/{ClassroomCtrlPanel-DYlMFipO.js.map → ClassroomCtrlPanel-CNqwuP0s.js.map} +1 -1
- package/dist/assets/{Classrooms-BUaIYSBb.js → Classrooms-CGj2OjuF.js} +2 -2
- package/dist/assets/{Classrooms-BUaIYSBb.js.map → Classrooms-CGj2OjuF.js.map} +1 -1
- package/dist/assets/{CourseRouter-D3xYcL-n.js → CourseRouter-CfTN19pR.js} +2 -2
- package/dist/assets/{CourseRouter-D3xYcL-n.js.map → CourseRouter-CfTN19pR.js.map} +1 -1
- package/dist/assets/{CourseWare-BTFRjgBR-D5fSKikf.js → CourseWare-BTFRjgBR-BJbHZcMM.js} +3 -3
- package/dist/assets/{CourseWare-BTFRjgBR-D5fSKikf.js.map → CourseWare-BTFRjgBR-BJbHZcMM.js.map} +1 -1
- package/dist/assets/{Courses-DV_EXjCG.js → Courses-CpGd_QfD.js} +2 -2
- package/dist/assets/{Courses-DV_EXjCG.js.map → Courses-CpGd_QfD.js.map} +1 -1
- package/dist/assets/{EloModeration-CoCPYveS.js → EloModeration-BsqLd3Zv.js} +2 -2
- package/dist/assets/{EloModeration-CoCPYveS.js.map → EloModeration-BsqLd3Zv.js.map} +1 -1
- package/dist/assets/{JoinCode-CyJvlujW.js → JoinCode-DZIR9DQp.js} +2 -2
- package/dist/assets/{JoinCode-CyJvlujW.js.map → JoinCode-DZIR9DQp.js.map} +1 -1
- package/dist/assets/{NewCourseDialog-aLeJlDNm.js → NewCourseDialog-CBcivNiO.js} +2 -2
- package/dist/assets/{NewCourseDialog-aLeJlDNm.js.map → NewCourseDialog-CBcivNiO.js.map} +1 -1
- package/dist/assets/{ReleaseNotes-C6dmS8yw.js → ReleaseNotes-DT0-L42Z.js} +2 -2
- package/dist/assets/{ReleaseNotes-C6dmS8yw.js.map → ReleaseNotes-DT0-L42Z.js.map} +1 -1
- package/dist/assets/{RequestPasswordReset-K_iLC-Iz.js → RequestPasswordReset-B8k7NuRM.js} +2 -2
- package/dist/assets/{RequestPasswordReset-K_iLC-Iz.js.map → RequestPasswordReset-B8k7NuRM.js.map} +1 -1
- package/dist/assets/{ResetPassword-DzftY2p0.js → ResetPassword-BZIUGR3j.js} +2 -2
- package/dist/assets/{ResetPassword-DzftY2p0.js.map → ResetPassword-BZIUGR3j.js.map} +1 -1
- package/dist/assets/{Study-_hXuTqGs.js → Study-Cj7TcDn4.js} +2 -2
- package/dist/assets/{Study-_hXuTqGs.js.map → Study-Cj7TcDn4.js.map} +1 -1
- package/dist/assets/{TagInformation-Du_SXj1u.js → TagInformation-DibgRiob.js} +2 -2
- package/dist/assets/{TagInformation-Du_SXj1u.js.map → TagInformation-DibgRiob.js.map} +1 -1
- package/dist/assets/{User-BEBHCSY8.js → User-Np8Oiqyi.js} +2 -2
- package/dist/assets/{User-BEBHCSY8.js.map → User-Np8Oiqyi.js.map} +1 -1
- package/dist/assets/{UserStats-BU5bp1WJ.js → UserStats-BMGNG7x3.js} +2 -2
- package/dist/assets/{UserStats-BU5bp1WJ.js.map → UserStats-BMGNG7x3.js.map} +1 -1
- package/dist/assets/{VerifyEmail-BHua2U9A.js → VerifyEmail-5HHoEaEd.js} +2 -2
- package/dist/assets/{VerifyEmail-BHua2U9A.js.map → VerifyEmail-5HHoEaEd.js.map} +1 -1
- package/dist/assets/admin-C4Ua7x6R.js +4 -0
- package/dist/assets/admin-C4Ua7x6R.js.map +1 -0
- package/dist/assets/{admin-7qdAJswS.css → admin-Cfzt4Vei.css} +1 -1
- package/dist/assets/{chess-E2uOAyQS-BxlZRhDQ.js → chess-E2uOAyQS-CCtmF-5U.js} +2 -2
- package/dist/assets/{chess-E2uOAyQS-BxlZRhDQ.js.map → chess-E2uOAyQS-CCtmF-5U.js.map} +1 -1
- package/dist/assets/chess-Lfm7Fsvs-5pbFi0-y.js +1 -0
- package/dist/assets/{common-ui.es-DgKeG5TP.js → common-ui.es-0v3pK9MO.js} +1 -1
- package/dist/assets/{common-ui.es-DA_s8IG6.js → common-ui.es-BNWvg8Db.js} +4 -4
- package/dist/assets/{common-ui.es-DA_s8IG6.js.map → common-ui.es-BNWvg8Db.js.map} +1 -1
- package/dist/assets/dist-BFT7J5fx.js +1 -0
- package/dist/assets/{dist-Cr-5eJ0-.js → dist-BIG2z9Yo.js} +3 -3
- package/dist/assets/{dist-Cr-5eJ0-.js.map → dist-BIG2z9Yo.js.map} +1 -1
- package/dist/assets/{dist-sk9QmPBI.js → dist-CIgUAYYy.js} +6 -5
- package/dist/assets/{dist-sk9QmPBI.js.map → dist-CIgUAYYy.js.map} +1 -1
- package/dist/assets/dist-D_cPFAOj.js +1 -0
- package/dist/assets/edit-ui.es-CcjPb9cO.js +1 -0
- package/dist/assets/{edit-ui.es-BvU22nW8.js → edit-ui.es-D0RNDqcl.js} +2 -2
- package/dist/assets/{edit-ui.es-BvU22nW8.js.map → edit-ui.es-D0RNDqcl.js.map} +1 -1
- package/dist/assets/{french-Dk7YG8Td-DkIlocR5.js → french-Dk7YG8Td-7f2kjsfA.js} +2 -2
- package/dist/assets/{french-Dk7YG8Td-DkIlocR5.js.map → french-Dk7YG8Td-7f2kjsfA.js.map} +1 -1
- package/dist/assets/french-evUMlbbq-CmdXHGPK.js +1 -0
- package/dist/assets/{index-DmF2uBY0.js → index-HZf9vYUM.js} +4 -4
- package/dist/assets/{index-DmF2uBY0.js.map → index-HZf9vYUM.js.map} +1 -1
- package/dist/assets/{math-B4HbgYf6-CyzXvPAn.js → math-B4HbgYf6-DOuMgmiQ.js} +2 -2
- package/dist/assets/{math-B4HbgYf6-CyzXvPAn.js.map → math-B4HbgYf6-DOuMgmiQ.js.map} +1 -1
- package/dist/assets/math-DYni7rRl-DZKNTT_I.js +1 -0
- package/dist/assets/piano-BN5Btq91-kiaeJhGB.js +1 -0
- package/dist/assets/{piano-DF1g6yaX-CjTAtRkn.js → piano-DF1g6yaX-CAYlAEmp.js} +2 -2
- package/dist/assets/{piano-DF1g6yaX-CjTAtRkn.js.map → piano-DF1g6yaX-CAYlAEmp.js.map} +1 -1
- package/dist/assets/{pitch-CgGJFkZ1-BFmwOAVB.js → pitch-CgGJFkZ1-C23Jvxwz.js} +2 -2
- package/dist/assets/{pitch-CgGJFkZ1-BFmwOAVB.js.map → pitch-CgGJFkZ1-C23Jvxwz.js.map} +1 -1
- package/dist/assets/pitch-Dn0iNqiS-DrRXHh5V.js +1 -0
- package/dist/assets/{server-OcZCCXA0.js → server-B8QRdqwc.js} +2 -2
- package/dist/assets/{server-OcZCCXA0.js.map → server-B8QRdqwc.js.map} +1 -1
- package/dist/assets/{sightsing-BFQ7HRig-vWVPlu1j.js → sightsing-BFQ7HRig-DnGENSwZ.js} +2 -2
- package/dist/assets/{sightsing-BFQ7HRig-vWVPlu1j.js.map → sightsing-BFQ7HRig-DnGENSwZ.js.map} +1 -1
- package/dist/assets/sightsing-CJX3k0Fd-nfWf5BKe.js +1 -0
- package/dist/assets/{typing-BevtfWlp-CyxWSAtY.js → typing-BevtfWlp-CyBXe67n.js} +2 -2
- package/dist/assets/{typing-BevtfWlp-CyxWSAtY.js.map → typing-BevtfWlp-CyBXe67n.js.map} +1 -1
- package/dist/assets/typing-k-ojjO7G-BkgFAffT.js +1 -0
- package/dist/assets/{word-work-BOnRlZgd-B91Toruk.js → word-work-BOnRlZgd-I_fnRmvE.js} +2 -2
- package/dist/assets/{word-work-BOnRlZgd-B91Toruk.js.map → word-work-BOnRlZgd-I_fnRmvE.js.map} +1 -1
- package/dist/assets/word-work-Dd6tIKrt-CQlqIXEs.js +1 -0
- package/dist/index.html +3 -3
- package/dist/sw.js +1 -1
- package/dist/sw.js.map +1 -1
- package/package.json +7 -7
- package/dist/assets/admin-ua4_RK2L.js +0 -4
- package/dist/assets/admin-ua4_RK2L.js.map +0 -1
- package/dist/assets/chess-Lfm7Fsvs-DFvvUWcF.js +0 -1
- package/dist/assets/dist-DV3iQBZl.js +0 -1
- package/dist/assets/dist-Ubbhh-gm.js +0 -1
- package/dist/assets/edit-ui.es-CBp3tHSA.js +0 -1
- package/dist/assets/french-evUMlbbq-D1l1sbHC.js +0 -1
- package/dist/assets/math-DYni7rRl-xBXi71Kr.js +0 -1
- package/dist/assets/piano-BN5Btq91-Df2sweTl.js +0 -1
- package/dist/assets/pitch-Dn0iNqiS-ZPelvu11.js +0 -1
- package/dist/assets/sightsing-CJX3k0Fd-pCqMHic0.js +0 -1
- package/dist/assets/typing-k-ojjO7G-Cjd9r06R.js +0 -1
- package/dist/assets/word-work-Dd6tIKrt-B_YDaaSy.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./vue.runtime.esm-bundler-C3q8JS9f.js";import"./dist-otyR79at.js";import"./MarkdownRenderer-kStoDRNE-D6ShHXDF.js";import"./dist-CIgUAYYy.js";import"./common-ui.es-BNWvg8Db.js";import"./CourseWare-BTFRjgBR-BJbHZcMM.js";import{t as e}from"./sightsing-BFQ7HRig-DnGENSwZ.js";export{e as default};
|
|
@@ -1,2 +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{E as d,b as f,k as p,n as m}from"./dist-otyR79at.js";import{S as h,x as g}from"./MarkdownRenderer-kStoDRNE-D6ShHXDF.js";import{h as _}from"./common-ui.es-
|
|
2
|
-
//# sourceMappingURL=typing-BevtfWlp-
|
|
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{E as d,b as f,k as p,n as m}from"./dist-otyR79at.js";import{S as h,x as g}from"./MarkdownRenderer-kStoDRNE-D6ShHXDF.js";import{h as _}from"./common-ui.es-BNWvg8Db.js";import{n as v,t as y,u as b}from"./CourseWare-BTFRjgBR-BJbHZcMM.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=h(t,n,`LetterQuestionView`),i=g(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 _{constructor(e){var _super=(...e)=>(super(...e),f(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}},f(x,`dataShapes`,[{name:m.TYPING_singleLetter,fields:[{name:`letter`,type:d.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:``}}}}]}]),f(x,`views`,[T]),f(x,`acceptsUserData`,!0),f(x,`seedData`,E()),x),data=function(){return[{gameLength:30,initialSpeed:2,acceleration:.1,spawnInterval:1}]},O=new v(`typing`,[D,(S=class FallingLettersQuestion extends _{constructor(e){var _super2=(...e)=>(super(...e),f(this,`gameLength`,void 0),f(this,`initialSpeed`,void 0),f(this,`acceleration`,void 0),f(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}},f(S,`dataShapes`,[{name:m.TYPING_fallingLetters,fields:[{name:`gameLength`,type:d.NUMBER},{name:`initialSpeed`,type:d.NUMBER},{name:`acceleration`,type:d.NUMBER},{name:`spawnInterval`,type:d.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`}}]}]),f(S,`views`,[]),f(S,`acceptsUserData`,!0),f(S,`seedData`,data()),S)]);export{O as t};
|
|
2
|
+
//# sourceMappingURL=typing-BevtfWlp-CyBXe67n.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typing-BevtfWlp-
|
|
1
|
+
{"version":3,"file":"typing-BevtfWlp-CyBXe67n.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":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./vue.runtime.esm-bundler-C3q8JS9f.js";import"./dist-otyR79at.js";import"./MarkdownRenderer-kStoDRNE-D6ShHXDF.js";import"./dist-CIgUAYYy.js";import"./common-ui.es-BNWvg8Db.js";import"./CourseWare-BTFRjgBR-BJbHZcMM.js";import{t as e}from"./typing-BevtfWlp-CyBXe67n.js";export{e as default};
|
|
@@ -1,2 +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{E as f,b as p,d as m,n as h}from"./dist-otyR79at.js";import{C as g,S as _,s as v,x as y}from"./MarkdownRenderer-kStoDRNE-D6ShHXDF.js";import{h as b}from"./common-ui.es-
|
|
2
|
-
//# sourceMappingURL=word-work-BOnRlZgd-
|
|
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{E as f,b as p,d as m,n as h}from"./dist-otyR79at.js";import{C as g,S as _,s as v,x as y}from"./MarkdownRenderer-kStoDRNE-D6ShHXDF.js";import{h as b}from"./common-ui.es-BNWvg8Db.js";import{n as x,t as S}from"./CourseWare-BTFRjgBR-BJbHZcMM.js";var C,w=i({name:`IdentifyVocab`,components:{AudioAutoPlayer:g,UserInputString:v},props:{data:{type:Array,required:!0},modifyDifficulty:{type:Number,required:!1,default:0}},setup(e,{emit:t}){let n=_(e,t,`IdentifyVocab`),r=y(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:f.STRING,validator:m.NonEmptyString},{name:`ExampleSentence`,type:f.STRING},{name:`WordAudio`,type:f.AUDIO},{name:`SentenceAudio`,type:f.AUDIO}],k=(C=class SpellingQuestion extends b{constructor(e){var _super=(...e)=>(super(...e),p(this,`word`,void 0),p(this,`sentence`,void 0),p(this,`audio_word`,void 0),p(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}},p(C,`dataShapes`,[{fields:O,name:h.WORDWORK_Spelling}]),p(C,`views`,[D]),C),A=new x(`wordWork`,[k]);export{A as t};
|
|
2
|
+
//# sourceMappingURL=word-work-BOnRlZgd-I_fnRmvE.js.map
|
package/dist/assets/{word-work-BOnRlZgd-B91Toruk.js.map → word-work-BOnRlZgd-I_fnRmvE.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"word-work-BOnRlZgd-
|
|
1
|
+
{"version":3,"file":"word-work-BOnRlZgd-I_fnRmvE.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"./dist-otyR79at.js";import"./MarkdownRenderer-kStoDRNE-D6ShHXDF.js";import"./dist-CIgUAYYy.js";import"./common-ui.es-BNWvg8Db.js";import"./CourseWare-BTFRjgBR-BJbHZcMM.js";import{t as e}from"./word-work-BOnRlZgd-I_fnRmvE.js";export{e as default};
|
package/dist/index.html
CHANGED
|
@@ -8,14 +8,14 @@
|
|
|
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-HZf9vYUM.js"></script>
|
|
12
12
|
<link rel="modulepreload" crossorigin href="/assets/chunk-D6hFPZc3.js">
|
|
13
13
|
<link rel="modulepreload" crossorigin href="/assets/dist-otyR79at.js">
|
|
14
|
-
<link rel="modulepreload" crossorigin href="/assets/dist-
|
|
14
|
+
<link rel="modulepreload" crossorigin href="/assets/dist-CIgUAYYy.js">
|
|
15
15
|
<link rel="modulepreload" crossorigin href="/assets/vue.runtime.esm-bundler-C3q8JS9f.js">
|
|
16
16
|
<link rel="modulepreload" crossorigin href="/assets/MarkdownRenderer-kStoDRNE-D6ShHXDF.js">
|
|
17
17
|
<link rel="modulepreload" crossorigin href="/assets/vue-router-CDq4a4rc.js">
|
|
18
|
-
<link rel="modulepreload" crossorigin href="/assets/common-ui.es-
|
|
18
|
+
<link rel="modulepreload" crossorigin href="/assets/common-ui.es-BNWvg8Db.js">
|
|
19
19
|
<link rel="stylesheet" crossorigin href="/assets/common-ui-BY2Ut5jf.css">
|
|
20
20
|
<link rel="stylesheet" crossorigin href="/assets/index-NFrxkZjT.css">
|
|
21
21
|
<link rel="manifest" href="/manifest.webmanifest"></head>
|
package/dist/sw.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
if(!self.define){let s,
|
|
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-B214b3Ir.js",revision:null},{url:"assets/admin-C4Ua7x6R.js",revision:null},{url:"assets/admin-Cfzt4Vei.css",revision:null},{url:"assets/AdminDashboard-CzTzSre6.js",revision:null},{url:"assets/AdminDashboard-fWfBatiA.css",revision:null},{url:"assets/AdminLearner-Bytn_WEj.js",revision:null},{url:"assets/chess-E2uOAyQS-CCtmF-5U.js",revision:null},{url:"assets/chess-E2uOAyQS-DB7z_kWx.css",revision:null},{url:"assets/chess-Lfm7Fsvs-5pbFi0-y.js",revision:null},{url:"assets/chunk-D6hFPZc3.js",revision:null},{url:"assets/ClassroomCtrlPanel-CNqwuP0s.js",revision:null},{url:"assets/Classrooms-CGj2OjuF.js",revision:null},{url:"assets/common-ui-BY2Ut5jf.css",revision:null},{url:"assets/common-ui.es-0v3pK9MO.js",revision:null},{url:"assets/common-ui.es-BNWvg8Db.js",revision:null},{url:"assets/CourseRouter-CfTN19pR.js",revision:null},{url:"assets/CourseRouter-DvfjFpWl.css",revision:null},{url:"assets/Courses-CpGd_QfD.js",revision:null},{url:"assets/Courses-CsGfVDf9.css",revision:null},{url:"assets/CourseWare-BTFRjgBR-BJbHZcMM.js",revision:null},{url:"assets/CourseWare-BTFRjgBR-D750E7i0.css",revision:null},{url:"assets/dist-BFT7J5fx.js",revision:null},{url:"assets/dist-BIG2z9Yo.js",revision:null},{url:"assets/dist-CIgUAYYy.js",revision:null},{url:"assets/dist-D_cPFAOj.js",revision:null},{url:"assets/dist-otyR79at.js",revision:null},{url:"assets/edit-ui.es-CcjPb9cO.js",revision:null},{url:"assets/edit-ui.es-D0RNDqcl.js",revision:null},{url:"assets/EloModeration-BsqLd3Zv.js",revision:null},{url:"assets/EloModeration-DgUqPPoO.css",revision:null},{url:"assets/french-Dk7YG8Td-7f2kjsfA.js",revision:null},{url:"assets/french-evUMlbbq-CmdXHGPK.js",revision:null},{url:"assets/index-HZf9vYUM.js",revision:null},{url:"assets/index-NFrxkZjT.css",revision:null},{url:"assets/JoinCode-DPSfXf5z.css",revision:null},{url:"assets/JoinCode-DZIR9DQp.js",revision:null},{url:"assets/MarkdownRenderer-kStoDRNE-B0wYWYhQ.js",revision:null},{url:"assets/MarkdownRenderer-kStoDRNE-D6ShHXDF.js",revision:null},{url:"assets/materialdesignicons-webfont-Dp5v-WZN.woff2",revision:null},{url:"assets/math-B4HbgYf6-CZyvKZtp.css",revision:null},{url:"assets/math-B4HbgYf6-DOuMgmiQ.js",revision:null},{url:"assets/math-DYni7rRl-DZKNTT_I.js",revision:null},{url:"assets/NewCourseDialog-CBcivNiO.js",revision:null},{url:"assets/piano-BN5Btq91-kiaeJhGB.js",revision:null},{url:"assets/piano-DF1g6yaX-BLvDAgl1.css",revision:null},{url:"assets/piano-DF1g6yaX-CAYlAEmp.js",revision:null},{url:"assets/pitch-CgGJFkZ1-C23Jvxwz.js",revision:null},{url:"assets/pitch-Dn0iNqiS-DrRXHh5V.js",revision:null},{url:"assets/ReleaseNotes-DT0-L42Z.js",revision:null},{url:"assets/RequestPasswordReset-B8k7NuRM.js",revision:null},{url:"assets/RequestPasswordReset-Du5-awJG.css",revision:null},{url:"assets/ResetPassword-BZIUGR3j.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-B8QRdqwc.js",revision:null},{url:"assets/sightsing-BFQ7HRig-DkUGf5Yf.css",revision:null},{url:"assets/sightsing-BFQ7HRig-DnGENSwZ.js",revision:null},{url:"assets/sightsing-CJX3k0Fd-nfWf5BKe.js",revision:null},{url:"assets/Study-Cj7TcDn4.js",revision:null},{url:"assets/Study-R4LCAP7J.css",revision:null},{url:"assets/TagInformation-DibgRiob.js",revision:null},{url:"assets/typing-BevtfWlp-B7ZMUAQJ.css",revision:null},{url:"assets/typing-BevtfWlp-CyBXe67n.js",revision:null},{url:"assets/typing-k-ojjO7G-BkgFAffT.js",revision:null},{url:"assets/User-Np8Oiqyi.js",revision:null},{url:"assets/UserStats-BMGNG7x3.js",revision:null},{url:"assets/VerifyEmail-5HHoEaEd.js",revision:null},{url:"assets/vue-router-CDq4a4rc.js",revision:null},{url:"assets/vue.runtime.esm-bundler-C3q8JS9f.js",revision:null},{url:"assets/word-work-BOnRlZgd-I_fnRmvE.js",revision:null},{url:"assets/word-work-Dd6tIKrt-CQlqIXEs.js",revision:null},{url:"assets/workbox-window.prod.es5-r2bRTooK.js",revision:null},{url:"favicon.ico",revision:"b71387b4508120b59615e43d5e103706"},{url:"img/icons/safari-pinned-tab.svg",revision:"f22d501a35a87d9f21701cb031f6ea17"},{url:"index.html",revision:"b130e188e86fb4acb8d1948fca5c43e6"},{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/bc3a71dc96d9f4c41b0d64400a5d4a2c/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-B8hGg4uI.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/admin-7qdAJswS.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/admin-ua4_RK2L.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/AdminDashboard-CokJ3Dt8.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/AdminDashboard-fWfBatiA.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/AdminLearner-F1fWIyBA.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/chess-E2uOAyQS-BxlZRhDQ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/chess-E2uOAyQS-DB7z_kWx.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/chess-Lfm7Fsvs-DFvvUWcF.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/chunk-D6hFPZc3.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ClassroomCtrlPanel-DYlMFipO.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Classrooms-BUaIYSBb.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/common-ui-BY2Ut5jf.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/common-ui.es-DA_s8IG6.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/common-ui.es-DgKeG5TP.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/CourseRouter-D3xYcL-n.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-DV_EXjCG.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/CourseWare-BTFRjgBR-D5fSKikf.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/CourseWare-BTFRjgBR-D750E7i0.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dist-Cr-5eJ0-.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dist-DV3iQBZl.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dist-otyR79at.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dist-sk9QmPBI.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dist-Ubbhh-gm.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/edit-ui.es-BvU22nW8.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/edit-ui.es-CBp3tHSA.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/EloModeration-CoCPYveS.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/EloModeration-DgUqPPoO.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/french-Dk7YG8Td-DkIlocR5.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/french-evUMlbbq-D1l1sbHC.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-DmF2uBY0.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-NFrxkZjT.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/JoinCode-CyJvlujW.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/JoinCode-DPSfXf5z.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/MarkdownRenderer-kStoDRNE-B0wYWYhQ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/MarkdownRenderer-kStoDRNE-D6ShHXDF.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/materialdesignicons-webfont-Dp5v-WZN.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/math-B4HbgYf6-CyzXvPAn.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/math-B4HbgYf6-CZyvKZtp.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/math-DYni7rRl-xBXi71Kr.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/NewCourseDialog-aLeJlDNm.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/piano-BN5Btq91-Df2sweTl.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/piano-DF1g6yaX-BLvDAgl1.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/piano-DF1g6yaX-CjTAtRkn.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/pitch-CgGJFkZ1-BFmwOAVB.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/pitch-Dn0iNqiS-ZPelvu11.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ReleaseNotes-C6dmS8yw.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/RequestPasswordReset-Du5-awJG.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/RequestPasswordReset-K_iLC-Iz.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ResetPassword-DzftY2p0.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-OcZCCXA0.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/sightsing-BFQ7HRig-DkUGf5Yf.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/sightsing-BFQ7HRig-vWVPlu1j.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/sightsing-CJX3k0Fd-pCqMHic0.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Study-_hXuTqGs.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Study-R4LCAP7J.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/TagInformation-Du_SXj1u.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/typing-BevtfWlp-B7ZMUAQJ.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/typing-BevtfWlp-CyxWSAtY.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/typing-k-ojjO7G-Cjd9r06R.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/User-BEBHCSY8.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/UserStats-BU5bp1WJ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/VerifyEmail-BHua2U9A.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vue-router-CDq4a4rc.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-B91Toruk.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/word-work-Dd6tIKrt-B_YDaaSy.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/workbox-window.prod.es5-r2bRTooK.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\": \"db7e9d5eb410955f58676628fc34455f\"\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,4BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,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,yCACPC,SAAY,MAEd,CACED,IAAO,0CACPC,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,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,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,qCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,0CACPC,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,yCACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,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,gCACPC,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"}
|
|
1
|
+
{"version":3,"file":"sw.js","sources":["../../../../../../../tmp/ad658a7a698c49033fdfdd9221e344d4/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-B214b3Ir.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/admin-C4Ua7x6R.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/admin-Cfzt4Vei.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/AdminDashboard-CzTzSre6.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/AdminDashboard-fWfBatiA.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/AdminLearner-Bytn_WEj.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/chess-E2uOAyQS-CCtmF-5U.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/chess-E2uOAyQS-DB7z_kWx.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/chess-Lfm7Fsvs-5pbFi0-y.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/chunk-D6hFPZc3.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ClassroomCtrlPanel-CNqwuP0s.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Classrooms-CGj2OjuF.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/common-ui-BY2Ut5jf.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/common-ui.es-0v3pK9MO.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/common-ui.es-BNWvg8Db.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/CourseRouter-CfTN19pR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/CourseRouter-DvfjFpWl.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Courses-CpGd_QfD.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Courses-CsGfVDf9.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/CourseWare-BTFRjgBR-BJbHZcMM.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/CourseWare-BTFRjgBR-D750E7i0.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dist-BFT7J5fx.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dist-BIG2z9Yo.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dist-CIgUAYYy.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dist-D_cPFAOj.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dist-otyR79at.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/edit-ui.es-CcjPb9cO.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/edit-ui.es-D0RNDqcl.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/EloModeration-BsqLd3Zv.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/EloModeration-DgUqPPoO.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/french-Dk7YG8Td-7f2kjsfA.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/french-evUMlbbq-CmdXHGPK.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-HZf9vYUM.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-NFrxkZjT.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/JoinCode-DPSfXf5z.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/JoinCode-DZIR9DQp.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/MarkdownRenderer-kStoDRNE-B0wYWYhQ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/MarkdownRenderer-kStoDRNE-D6ShHXDF.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/materialdesignicons-webfont-Dp5v-WZN.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/math-B4HbgYf6-CZyvKZtp.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/math-B4HbgYf6-DOuMgmiQ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/math-DYni7rRl-DZKNTT_I.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/NewCourseDialog-CBcivNiO.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/piano-BN5Btq91-kiaeJhGB.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/piano-DF1g6yaX-BLvDAgl1.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/piano-DF1g6yaX-CAYlAEmp.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/pitch-CgGJFkZ1-C23Jvxwz.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/pitch-Dn0iNqiS-DrRXHh5V.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ReleaseNotes-DT0-L42Z.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/RequestPasswordReset-B8k7NuRM.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/RequestPasswordReset-Du5-awJG.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ResetPassword-BZIUGR3j.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-B8QRdqwc.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/sightsing-BFQ7HRig-DkUGf5Yf.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/sightsing-BFQ7HRig-DnGENSwZ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/sightsing-CJX3k0Fd-nfWf5BKe.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Study-Cj7TcDn4.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Study-R4LCAP7J.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/TagInformation-DibgRiob.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/typing-BevtfWlp-B7ZMUAQJ.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/typing-BevtfWlp-CyBXe67n.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/typing-k-ojjO7G-BkgFAffT.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/User-Np8Oiqyi.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/UserStats-BMGNG7x3.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/VerifyEmail-5HHoEaEd.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vue-router-CDq4a4rc.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-I_fnRmvE.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/word-work-Dd6tIKrt-CQlqIXEs.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/workbox-window.prod.es5-r2bRTooK.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\": \"b130e188e86fb4acb8d1948fca5c43e6\"\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,2BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,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,6BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,yCACPC,SAAY,MAEd,CACED,IAAO,0CACPC,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,oCACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,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,yCACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,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,gCACPC,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.2.
|
|
6
|
+
"version": "0.2.32",
|
|
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.2.
|
|
29
|
-
"@vue-skuilder/common-ui": "0.2.
|
|
30
|
-
"@vue-skuilder/courseware": "0.2.
|
|
31
|
-
"@vue-skuilder/db": "0.2.
|
|
32
|
-
"@vue-skuilder/edit-ui": "0.2.
|
|
28
|
+
"@vue-skuilder/common": "0.2.32",
|
|
29
|
+
"@vue-skuilder/common-ui": "0.2.32",
|
|
30
|
+
"@vue-skuilder/courseware": "0.2.32",
|
|
31
|
+
"@vue-skuilder/db": "0.2.32",
|
|
32
|
+
"@vue-skuilder/edit-ui": "0.2.32",
|
|
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.2.
|
|
94
|
+
"stableVersion": "0.2.32"
|
|
95
95
|
}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import"./chunk-D6hFPZc3.js";import{$ as e,C as t,H as n,It as r,K as i,N as a,Rt as o,S as s,T as c,Vt as l,W as u,Z as d,_ as f,b as p,dt as m,f as h,g,ht as _,l as v,lt as y,v as b,y as x,z as S}from"./vue.runtime.esm-bundler-C3q8JS9f.js";import{kt as C,y as w}from"./dist-sk9QmPBI.js";var T={cardHistory:`cardH`,scheduled:`card_review_`,session:`SESSION::`,strategyState:`STRATEGY_STATE::`,registrations:`CourseRegistrations`};function toIsoTimestamp(e){if(typeof e==`number`)return new Date(e).toISOString();let t=String(e??``),n=Date.parse(t);return Number.isNaN(n)?t:new Date(n).toISOString()}function dumpFileName(e){return`userdb-${e.username}-${e.fetchedAt.slice(0,16).replace(`:`,``)}Z.json`}function parseLearnerDump(e){let t=JSON.parse(e);if(!t||typeof t.username!=`string`||!Array.isArray(t.docs))throw Error("[diagnostics] Not a learner dump: expected `username` and a `docs` array");return t}function questionTypeOf(e){if(typeof e!=`string`)return;let t=e.split(`.`);return t.length>=2?t[t.length-2]:e}function summarizeCards(e){let t=new Map(e.displayableData.map(e=>[e._id,e])),n=new Map;for(let r of e.cards){let e={};for(let n of t.get(r.id_displayable_data?.[0]??``)?.data??[])e[n.name]=n.data;n.set(r._id,{cardId:r._id,questionType:questionTypeOf(r.id_view),elo:r.elo,tags:[],data:e})}for(let t of e.tags)for(let e of t.taggedCards??[])n.get(e)?.tags.push(t.name);return n}function inferCourseId(e){if(e.courseId)return e.courseId;if(e.course)return e.course.courseId;let t=new Map;for(let n of e.docs)n._id.startsWith(T.session)&&typeof n.courseId==`string`&&t.set(n.courseId,(t.get(n.courseId)??0)+1);return[...t.entries()].sort((e,t)=>t[1]-e[1])[0]?.[0]}function fromDump(e,t){let n=t??inferCourseId(e);if(!n)throw Error(`[diagnostics] No course id given, and none found in the dump`);let r=[],i=[],a=[],o={},s;for(let t of e.docs){let e=t._id;if(e.startsWith(T.session))t.courseId===n&&r.push(t);else if(e.startsWith(T.cardHistory)){if(t.courseID!==n)continue;let e=t;i.push({...e,records:(e.records??[]).map(e=>({...e,timeStamp:toIsoTimestamp(e.timeStamp)})).sort((e,t)=>e.timeStamp.localeCompare(t.timeStamp))})}else if(e.startsWith(T.scheduled))t.courseId===n&&a.push(t);else if(e.startsWith(T.strategyState)){let[,r,i]=e.split(`::`);r===n&&i&&(o[i]=t.data)}else e===T.registrations&&(s=t)}return r.sort((e,t)=>e.startTime.localeCompare(t.startTime)),a.sort((e,t)=>String(e.reviewTime).localeCompare(String(t.reviewTime))),{username:e.username,courseId:n,asOf:e.fetchedAt,sessions:r,cardHistories:i,scheduled:a,registration:s,strategyState:o,tombstones:(e.tombstones??[]).map(({id:e,seq:t})=>({id:e,seq:t})),...e.course&&e.course.courseId===n?{cards:summarizeCards(e.course),...e.course.strategies?{strategies:e.course.strategies}:{}}:{}}}function userDbName(e){let t=``;for(let n of new TextEncoder().encode(e))t+=n.toString(16).padStart(2,`0`);return`userdb-`+t}function base64(e){let t=``;for(let n of new TextEncoder().encode(e))t+=String.fromCharCode(n);return btoa(t)}function trimTrailingSlashes(e){let t=e.length;for(;t>0&&e[t-1]===`/`;)t--;return e.slice(0,t)}function couchReader(e){let t=e.fetchImpl??fetch,n=trimTrailingSlashes(e.couchUrl),r={Accept:`application/json`};e.auth.kind===`basic`&&(r.Authorization=`Basic `+base64(`${e.auth.username}:${e.auth.password}`));let i=e.auth.kind===`cookie`?`include`:void 0;async function get(e,a={}){let o=await t(`${n}/${e}`,{method:a.method??`GET`,headers:a.body?{...r,"Content-Type":`application/json`}:r,...a.body?{body:JSON.stringify(a.body)}:{},...i?{credentials:i}:{}});if(!o.ok){let t=await o.text().catch(()=>``);throw Error(`[diagnostics] ${a.method??`GET`} ${e} -> ${o.status} ${t}`)}return await o.json()}async function byKeys(e,t){let n=[];for(let r=0;r<t.length;r+=500){let i=await get(`${e}/_all_docs?include_docs=true`,{method:`POST`,body:{keys:t.slice(r,r+500)}});for(let e of i.rows)e.doc&&n.push(e.doc)}return n}async function byPrefix(e,t){return(await get(`${e}/_all_docs?${new URLSearchParams({include_docs:`true`,startkey:JSON.stringify(t),endkey:JSON.stringify(t+``)})}`)).rows.map(e=>e.doc).filter(e=>!!e)}return{base:n,get,byKeys,byPrefix}}function touchedCardIds(e){let t=new Set;for(let n of e)if(n._id.startsWith(`cardH`)&&typeof n.cardID==`string`)t.add(n.cardID);else if(n._id.startsWith(`card_review_`)&&typeof n.cardId==`string`)t.add(n.cardId);else if(n._id.startsWith(`SESSION::`)&&Array.isArray(n.eloEvents))for(let e of n.eloEvents)e.cardId&&t.add(e.cardId);return[...t]}async function fetchLearnerDump(e){let t=couchReader(e),n=userDbName(e.username),r=new Date().toISOString(),i=await t.get(n),a=new URLSearchParams({include_docs:`true`});e.attachments&&a.set(`attachments`,`true`);let o=(await t.get(`${n}/_all_docs?${a}`)).rows.map(e=>e.doc).filter(e=>!!e),s=(await t.get(`${n}/_changes?style=main_only`)).results.filter(e=>e.deleted).map(e=>({id:e.id,rev:e.changes[0]?.rev,seq:Number(String(e.seq).split(`-`)[0])})),c=e.cards??`touched`,l;if(c!==`none`){let n=`coursedb-${e.courseId}`,r;r=c===`all`?(await t.get(`${n}/_find`,{method:`POST`,body:{selector:{docType:`CARD`},limit:1e6}})).docs:await t.byKeys(n,touchedCardIds(o));let i=new Set(r.map(e=>e._id)),a=new Set;for(let e of r)for(let t of e.id_displayable_data??[])a.add(t);let s=await t.byKeys(n,[...a]),u=(await t.byPrefix(n,`TAG`)).map(e=>{let t=Array.isArray(e.taggedCards)?e.taggedCards:[];return{...e,taggedCount:t.length,taggedCards:c===`all`?t:t.filter(e=>i.has(e))}}).filter(e=>c===`all`||e.taggedCards.length>0),d=await t.byPrefix(n,`NAVIGATION_STRATEGY`);l={courseId:e.courseId,source:`${t.base}/${n}`,scope:c,cards:r,displayableData:s,tags:u,strategies:d}}return{formatVersion:1,username:e.username,dbName:n,source:t.base,fetchedAt:r,courseId:e.courseId,info:i,docs:o,tombstones:s,...l?{course:l}:{}}}var isSkillTag=(e,t)=>e?.isSkillTag?.(t)??!1,shortTag=(e,t)=>e?.shortTag?.(t)??t;function bySkillThenName(e){return(t,n)=>{let r=Number(isSkillTag(e,n))-Number(isSkillTag(e,t));return r===0?t.localeCompare(n):r}}function defaultSnapshotMetrics(e){let t={};for(let[n,r]of Object.entries(e))if(typeof r==`number`)t[n]=r;else if(r&&typeof r==`object`&&!Array.isArray(r))for(let[e,i]of Object.entries(r))typeof i==`number`&&(t[`${n}.${e}`]=i);return t}var E={churned:{label:`Churned`,help:`Many pipeline runs relative to cards served: the plan kept being rebuilt rather than consumed.`},"out-of-content":{label:`Out of content`,help:`Ended with time left on the clock: content ran out before the session did.`},walked:{label:`Walked`,help:`Abandoned or never closed, after real time invested. Not a mis-click.`},stalled:{label:`Stalled`,help:`No progress metric moved and ELO was essentially flat. The sitting produced nothing measurable.`},grinding:{label:`Grinding`,help:`Majority-incorrect, or ended with unfinished cards still in the failed queue.`}},D={churnRunsPerCard:1/3,churnMinCards:4,outOfContentSeconds:20,walkMinCards:2,stallEloEpsilon:5,grindAccuracy:.5};function stateRows(e,t){let n=t?.snapshotMetrics??defaultSnapshotMetrics,r=e.stateAtStart?n(e.stateAtStart):{},i=e.stateAtEnd?n(e.stateAtEnd):{};return[...new Set([...Object.keys(r),...Object.keys(i)])].map(e=>{let t=r[e]??null,n=i[e]??null;return{label:e,from:t,to:n,delta:t!==null&&n!==null?n-t:null}})}function flagSession(e,t){let n=D,{doc:r,accuracy:i,eloNet:a}=e,o=[],s=r.tally?.cardsPresented??0,c=r.runs?.length??0;s>=n.churnMinCards&&c/s>n.churnRunsPerCard&&o.push(`churned`),r.status===`closed`&&(r.tally?.secondsRemaining??0)>n.outOfContentSeconds&&o.push(`out-of-content`),(r.status===`open`||r.status===`abandoned`&&s>=n.walkMinCards)&&o.push(`walked`);let l=e.state.filter(e=>t?.progressMetrics?.includes(e.label)),u=a!==null||l.some(e=>e.delta!==null);return s>0&&u&&l.every(e=>(e.delta??0)===0)&&Math.abs(a??0)<n.stallEloEpsilon&&o.push(`stalled`),(i!==null&&i<n.grindAccuracy&&s>0||(r.tally?.failedQRemaining??0)>0)&&o.push(`grinding`),o}function summarizeSession(e,t){let n=Date.parse(e.startTime),r=e.endTime?Date.parse(e.endTime):NaN,i=Number.isNaN(n)||Number.isNaN(r)?null:Math.round((r-n)/1e3),a=e.tally?.responses??0,o=a>0?(e.tally?.correct??0)/a:null,s=e.eloEvents??[],c={doc:e,durationSeconds:i,accuracy:o,eloNet:s.length?s.reduce((e,t)=>e+(t.global.after-t.global.before),0):null,state:stateRows(e,t)};return{...c,flags:flagSession(c,t)}}function summarizeSessions(e,t){return e.sessions.map(e=>summarizeSession(e,t)).reverse()}function toResponseEloDelta(e,t){let n=bySkillThenName(t),r=Object.entries(e.tags??{}).map(([e,t])=>({tag:e,before:t.before,after:t.after,delta:t.after-t.before,score:t.score})).sort((e,t)=>n(e.tag,t.tag));return{userScore:e.userScore,global:{before:e.global.before,after:e.global.after,delta:e.global.after-e.global.before},...e.card?{card:{before:e.card.before,after:e.card.after,delta:e.card.after-e.card.before}}:{},tags:r}}function attachEloEvents(e,t,n){let r=new Set;for(let i of t){let t=Date.parse(i.at),a=-1,o=1/0;e.forEach((e,n)=>{if(r.has(n)||e.cardId!==i.cardId)return;let s=Math.abs(Date.parse(e.at)+e.timeSpentMs-t);s<o&&(o=s,a=n)}),a>=0&&(r.add(a),e[a].elo=toResponseEloDelta(i,n))}}function byTime(e,t){let n=Date.parse(e.at),r=Date.parse(t.at);return Number.isNaN(n)||Number.isNaN(r)?e.at.localeCompare(t.at):n-r}function sessionDetail(e,t,n){let r=e.sessions.find(e=>e.sessionId===t);if(!r)return null;let i=[];for(let r of e.cardHistories){let a=e.cards?.get(r.cardID);for(let e of r.records)e.sessionId===t&&i.push({kind:`response`,at:e.timeStamp,cardId:r.cardID,...a?{card:a,questionType:a.questionType}:{},tags:a?[...a.tags].sort(bySkillThenName(n)):[],isCorrect:typeof e.isCorrect==`boolean`?e.isCorrect:null,timeSpentMs:e.timeSpent??0,priorAttempts:typeof e.priorAttemps==`number`?e.priorAttemps:null,userAnswer:e.userAnswer})}r.eloEvents?.length&&attachEloEvents(i,r.eloEvents,n);let a=[...(r.runs??[]).map(e=>({kind:`run`,at:e.at,run:e})),...i].sort(byTime);return{summary:summarizeSession(r,n),timeline:a,responsesMissing:(r.tally?.responses??0)>i.length}}function servedTags(e,t){let n=new Map;for(let t of e)if(t.kind===`response`)for(let e of t.tags){let r=n.get(e);r||(r={responses:0,correct:0,incorrect:0,totalTimeMs:0,cards:new Set},n.set(e,r)),r.responses+=1,r.totalTimeMs+=t.timeSpentMs,r.cards.add(t.cardId),t.isCorrect===!0?r.correct+=1:t.isCorrect===!1&&(r.incorrect+=1)}return[...n.entries()].map(([e,t])=>{let n=t.correct+t.incorrect;return{tag:e,responses:t.responses,correct:t.correct,incorrect:t.incorrect,accuracy:n>0?t.correct/n:null,totalTimeMs:t.totalTimeMs,cards:t.cards.size}}).sort((e,n)=>{let r=Number(isSkillTag(t,n.tag))-Number(isSkillTag(t,e.tag));return r===0?n.responses===e.responses?e.tag.localeCompare(n.tag):n.responses-e.responses:r})}function eloLedger(e){let t={count:0,net:0,gained:0,lost:0,wins:0,losses:0};for(let n of e){if(n.kind!==`response`||!n.elo)continue;let e=n.elo.global.delta;t.count+=1,t.net+=e,e>0?(t.gained+=e,t.wins+=1):e<0&&(t.lost+=e,t.losses+=1)}return t.count?t:null}var O=3;function cardDossiers(e){let t=Date.parse(e.asOf),n=new Map;for(let t of e.scheduled){let e=String(t.reviewTime),r=n.get(t.cardId);(!r||e<r)&&n.set(t.cardId,e)}return e.cardHistories.map(r=>{let i=e.cards?.get(r.cardID),a=r.records.filter(e=>e.isCorrect===!1).length,o=r.records.reduce((e,t)=>e+(t.timeSpent??0),0),s=n.get(r.cardID),c=s?{reviewTime:s,overdue:Date.parse(s)<=t}:null,l=i?.elo?.global?.score??null,u=i?.elo?.global?.count??null;return{cardId:r.cardID,...i?{card:i}:{},records:r.records,lapses:r.lapses??0,streak:r.streak??0,bestIntervalSeconds:r.bestInterval??0,attempts:r.records.length,fails:a,firstSeen:r.records[0]?.timeStamp??null,lastSeen:r.records[r.records.length-1]?.timeStamp??null,totalTimeMs:o,pendingReview:c,cardElo:l,cardEloCount:u,stuck:a>0&&!!c?.overdue,frozenElo:a>=O&&u!==null&&u<a,painScore:o*(a+1)}}).sort((e,t)=>t.painScore-e.painScore)}function recordPerformance(e){let t=e.performance;return typeof t==`number`?t:t&&typeof t==`object`&&typeof t._global==`number`?t._global:null}function runCardSource(e){return e.required?`required: ${e.required}`:e.generator??`unknown`}function selectedBySource(e){let t=new Map;for(let n of e.cards??[]){if(!n.selected)continue;let e=runCardSource(n);t.set(e,(t.get(e)??0)+1)}return[...t].map(([e,t])=>({source:e,count:t})).sort((e,t)=>t.count-e.count)}function pipelineRunStats(e,t={}){let n=e.sessions.filter(e=>!t.since||e.startTime>=t.since),r=new Map;for(let t of e.cardHistories)for(let e of t.records){if(!e.sessionId)continue;let n=r.get(e.sessionId)??[];n.push({cardId:t.cardID,record:e}),r.set(e.sessionId,n)}let i=new Map,gen=e=>{let t=i.get(e);return t||(t={name:e,runs:0,cards:0,newCards:0,reviewCards:0,topScoreMax:0,topScoreLast:0,selected:0,firstAttempts:0,firstAttemptsCorrect:0},i.set(e,t)),t},a=new Map,o=new Map,s=0,c=0,l=0,u,d;for(let e of n){let t=new Map;for(let n of e.runs??[]){s++,(!u||n.at<u)&&(u=n.at),(!d||n.at>d)&&(d=n.at);for(let e of n.generators??[]){let t=gen(e.name);t.runs++,t.cards+=e.cardCount,t.newCards+=e.newCount,t.reviewCards+=e.reviewCount,t.topScoreMax=Math.max(t.topScoreMax,e.topScore),t.topScoreLast=e.topScore}for(let e of n.filters??[]){let t=a.get(e.name)??{name:e.name,runs:0,boosted:0,penalized:0,passed:0,removed:0};t.runs++,e.kind&&(t.kind=e.kind),t.boosted+=e.boosted,t.penalized+=e.penalized,t.passed+=e.passed,t.removed+=e.removed,a.set(e.name,t)}for(let e of n.regulators??[]){let t=o.get(e.name)??{name:e.name,class:e.class,runs:0,meanMultiplier:0,maxMultiplier:0,runsActive:0,last:e,sumMultiplier:0};t.runs++,t.sumMultiplier+=e.multiplier,t.maxMultiplier=Math.max(t.maxMultiplier,e.multiplier),e.multiplier>1&&t.runsActive++,t.last=e,o.set(e.name,t)}if(n.cards){c++;for(let e of n.cards)if(e.selected){if(!e.generator){l++;continue}gen(e.generator).selected++,t.has(e.cardId)||t.set(e.cardId,e.generator)}}}for(let{cardId:n,record:i}of r.get(e.sessionId)??[]){let e=t.get(n);if(!e||i.priorAttemps!==0)continue;let r=gen(e);r.firstAttempts++,i.isCorrect===!0&&r.firstAttemptsCorrect++}}return{sessions:n.length,runs:s,runsWithSelection:c,firstRunAt:u,lastRunAt:d,generators:[...i.values()].map(({cards:e,newCards:t,reviewCards:n,...r})=>({...r,meanCards:r.runs?e/r.runs:0,meanNew:r.runs?t/r.runs:0,meanReview:r.runs?n/r.runs:0})).sort((e,t)=>t.runs-e.runs||e.name.localeCompare(t.name)),filters:[...a.values()].sort((e,t)=>e.name.localeCompare(t.name)),regulators:[...o.values()].map(({sumMultiplier:e,...t})=>({...t,meanMultiplier:t.runs?e/t.runs:0})),selectedUnattributed:l}}function fmtDelta(e){if(e===null)return`—`;if(e===0)return`0`;let t=Number.isInteger(e)?e:Number(e.toFixed(1));return t>0?`+${t}`:String(t)}function fmtDuration(e){let t=Math.max(0,Math.round(e));if(t<60)return`${t}s`;let n=Math.floor(t/60);return n<60?t%60?`${n}m${t%60}s`:`${n}m`:`${(n/60).toFixed(1)}h`}function fmtAnswer(e,t=40){if(e==null)return``;if(typeof e==`string`||typeof e==`number`)return String(e);try{let n=JSON.stringify(e);return n.length>t?`${n.slice(0,t)}\u2026`:n}catch{return String(e)}}function fmtScore(e){return e===null||!Number.isFinite(e)?`∞`:Math.abs(e)>=.01||e===0?e.toFixed(2):e.toExponential(1)}function trailText(e,t){let n=[` ${e}: ${t.cardId} (${t.origin}, ${runCardSource(t)}) final ${fmtScore(t.score)}`];for(let e of t.trail)n.push(` ${e.action} ${e.strategyName} \u2192 ${fmtScore(e.score)}: ${e.reason}`);return n}function regulatorText(e){let t=e.inputs;if(e.name===`review-mass`)return`review mass ${e.urgency.toFixed(1)} over ${t.due??e.applied} due (healthy ${t.healthyMass}) \u2192 \xD7${e.multiplier.toFixed(2)}`;let n=t.frozenHours?`, ${t.frozenHours.toFixed(1)}h frozen`:``;return`intake ${e.urgency.toFixed(1)}h since a new card${n}; ${t.eligibleNew??e.applied}/${t.newCandidates??`?`} new eligible \u2192 \xD7${e.multiplier.toFixed(2)}`}function runText(e){let t=[];if(t.push(`RUN ${e.label}${e.mode?` [${e.mode}]`:``} @ ${e.at} \u2014 generated ${e.generatedCount} \u2192 selected ${e.finalCount} (${e.newSelected} new, ${e.reviewsSelected} review)`+(e.generatedCount>0&&e.finalCount===0?` ⚠ nothing survived`:``)),typeof e.userElo==`number`&&t.push(` userElo: ${Math.round(e.userElo)}`),e.generators?.length){t.push(` generators:`);for(let n of e.generators)t.push(` - ${n.name}: ${n.cardCount} cards (${n.newCount} new, ${n.reviewCount} review), topScore ${n.topScore.toFixed(2)}`)}if(e.filters?.length){t.push(` filters:`);for(let n of e.filters)t.push(` - ${n.name}${n.kind?` (${n.kind})`:``}: +${n.boosted} boosted, -${n.penalized} penalized, ${n.passed} passed, ${n.removed} removed`)}if(e.regulators?.length){t.push(` regulators:`);for(let n of e.regulators)t.push(` - ${regulatorText(n)}`)}if(e.hints&&t.push(` hints: ${JSON.stringify(e.hints)}`),e.cards?.length){let n=selectedBySource(e).map(e=>`${e.source} ${e.count}`);n.length&&t.push(` selected by source: ${n.join(` · `)}`),t.push(` selection (✓ selected, · runner-up):`);for(let n of e.cards)t.push(` ${n.selected?`✓`:`·`} ${n.cardId} (${n.origin}, ${runCardSource(n)}) ${fmtScore(n.score)}`)}if(e.unselectedNew?.nextInLine&&t.push(...trailText(`next new in line`,e.unselectedNew.nextInLine)),e.unselectedNew?.topGenerated&&t.push(...trailText(`top-generated new (sunk)`,e.unselectedNew.topGenerated)),e.discardedTail){let n=e.discardedTail;t.push(` discardedTail: ${n.count} cards`+(n.scoreRange?` \xB7 score [${n.scoreRange[0].toFixed(2)}, ${n.scoreRange[1].toFixed(2)}]`:``)+(n.eloRange?` \xB7 elo [${Math.round(n.eloRange[0])}, ${Math.round(n.eloRange[1])}]`:``)),n.note&&t.push(` ${n.note}`)}return t.join(`
|
|
2
|
-
`)}function scoredTagDeltas(e){return e.tags.filter(e=>e.score!==null&&e.delta!==0).slice(0,4)}function eloSuffix(e,t){if(!e)return``;let n=`ELO g:${e.global.before}\u2192${e.global.after} (${fmtDelta(e.global.delta)})`,r=scoredTagDeltas(e).map(e=>`${shortTag(t,e.tag)}:${fmtDelta(e.delta)}`);return` ${n}${r.length?` | ${r.join(` `)}`:``}`}function clock(e){let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toISOString().slice(11,19)}function sessionText(e,t,n={},r){let i=t.summary,a=i.doc,o=t.timeline.filter(e=>e.kind===`response`).length,s=[];if(s.push(`# Study session ${a.sessionId} \u2014 user ${e}`),s.push(``),s.push(`## Legend`),s.push(`- The TIMELINE is one time-ordered stream: RUN lines are pipeline (re)plans;`),s.push(` the lines between them are card responses in the order presented.`),s.push(`- RUN "generated N → selected M (a new, b review)": the pipeline produced N`),s.push(` candidates and chose M. "nothing survived" = generated > 0 but 0 selected.`),s.push(` Bootstrap runs fire before card #1; replans are interleaved by time.`),s.push(`- generators: each source's contribution. filters: how each reshaped scores`),s.push(` (gate: not ready yet; signal: preference). regulators: the pressure on each class,`),s.push(` review mass (due reviews by value) and intake (hours since a new card).`),s.push(` hints: the ReplanHints the navigator was told (_label = replan reason).`),s.push(` selection: the chosen cards and top runners-up. "next new in line" / "top-generated`),s.push(` new (sunk)": the unselected new cards worth explaining, with each score change.`),s.push(` Each card reads (origin, source). origin: review = a scheduled review, new = anything`),s.push(` else. source: the generator that produced it, or "required: <hint>" when a hint forced`),s.push(` it. Older runs show origin "unknown" for prescribed and hint-required cards.`),s.push(`- RESP "✓/✗ type <cardId> [tags] Ts (attempt k) 'answer'": one presentation and`),s.push(` its outcome. A trailing "ELO g:before→after (Δ) | tag:Δ …" is the exchange it`),s.push(` produced. Only first attempts move ELO.`),s.push(``),s.push(`## Headline`),s.push(`- status: ${a.status}`),s.push(`- start: ${a.startTime}${a.endTime?` \xB7 end: ${a.endTime}`:``}`),s.push(`- clock: ${i.durationSeconds??`—`}s of ${a.plannedSeconds}s planned`+(a.tally?` \xB7 ${a.tally.secondsRemaining}s remaining`:``)),a.tally&&s.push(`- tally: ${a.tally.cardsPresented} cards, ${a.tally.responses} responses (${a.tally.correct} correct / ${a.tally.incorrect} incorrect) \xB7 failedQ remaining ${a.tally.failedQRemaining}`),s.push(`- flags: ${i.flags.length?i.flags.join(`, `):`none`}`),s.push(`- config: batchLimit ${a.config?.defaultBatchLimit??`?`}, ${a.config?.sourceCount??`?`} source(s), opening queues supply ${a.initialQueues?.supplyQ??`?`} / failed ${a.initialQueues?.failedQ??`?`}`),t.responsesMissing&&s.push(`- \u26A0 responsesMissing: tally claims ${a.tally?.responses} responses but only ${o} stamped records were found.`),s.push(``),i.state.length){s.push(`## Learner state (start → end, Δ)`);for(let e of i.state)s.push(`- ${e.label}: ${e.from??`—`} \u2192 ${e.to??`—`} (${fmtDelta(e.delta)})`);s.push(``)}if(s.push(`## Session hints`),s.push(`- at open: ${a.config?.initHints?JSON.stringify(a.config.initHints):`none`}`),s.push(`- at close: ${a.finalHints?JSON.stringify(a.finalHints):`none`}`),s.push(``),n.servedTags?.length){s.push(`## Served tags`);for(let e of n.servedTags)s.push(`- ${e.tag}: ${e.responses} resp / ${e.cards} card(s), acc ${e.accuracy===null?`n/a`:`${Math.round(e.accuracy*100)}%`} (${e.correct}\u2713/${e.incorrect}\u2717), ${(e.totalTimeMs/1e3).toFixed(1)}s`);s.push(``)}let c=n.eloLedger;c&&(s.push(`## ELO ledger (learner global)`),s.push(`- net ${fmtDelta(c.net)} across ${c.count} exchange(s) \xB7 gained ${fmtDelta(c.gained)} over ${c.wins} win(s) \xB7 lost ${fmtDelta(c.lost)} over ${c.losses} loss(es)`),s.push(``)),s.push(`## Timeline (${t.timeline.length} entries)`);for(let e of t.timeline){if(e.kind===`run`){s.push(runText(e.run));continue}let t=e.isCorrect===!0?`✓`:e.isCorrect===!1?`✗`:`·`,n=e.tags.length?` [${e.tags.join(`, `)}]`:``,i=e.priorAttempts?` (attempt ${e.priorAttempts+1})`:``,a=e.userAnswer==null?``:` '${fmtAnswer(e.userAnswer)}'`;s.push(`RESP ${clock(e.at)} ${t} ${e.questionType??`card`} ${e.cardId}${n} \u2014 ${(e.timeSpentMs/1e3).toFixed(1)}s${i}${a}${eloSuffix(e.elo,r)}`)}return s.join(`
|
|
3
|
-
`)}var k=Object.defineProperty,__name=(e,t)=>k(e,`name`,{value:t,configurable:!0});function useLearnerDataset(){let e=m(null),t=m(null),n=y(!1),r=y(null);async function load(i,a){n.value=!0,r.value=null;try{let n=await i();t.value=fromDump(n,a),e.value=n}catch(e){r.value=e instanceof Error?e.message:String(e)}finally{n.value=!1}}function loadFromCouch(e){return load(()=>fetchLearnerDump({...e,auth:{kind:`cookie`}}),e.courseId)}function loadFromFile(e,t){return load(async()=>parseLearnerDump(await e.text()),t)}return{dump:e,dataset:t,loading:n,error:r,loadFromCouch,loadFromFile}}function downloadLearnerDump(e){let t=new Blob([JSON.stringify(e,null,2)],{type:`application/json`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=dumpFileName(e),r.click(),URL.revokeObjectURL(n)}var A={class:`d-flex flex-wrap align-center ga-2`},j={key:1,class:`d-flex flex-wrap align-center ga-2 mt-3`},M=c({__name:`LearnerDatasetSource`,props:{couchUrl:{},courseId:{},initialUsername:{},autoload:{type:Boolean}},emits:[`loaded`],setup(r,{emit:a}){let o=r,c=a,{dump:u,dataset:m,loading:C,error:w,loadFromCouch:T,loadFromFile:E}=useLearnerDataset(),D=y(o.initialUsername??``),O=y(null),k=g(()=>{let e=m.value?.sessions??[];return e.length?`${e[0].startTime.slice(0,10)} .. ${e[e.length-1].startTime.slice(0,10)}`:``});function loadLive(){!o.couchUrl||!o.courseId||!D.value||T({couchUrl:o.couchUrl,courseId:o.courseId,username:D.value})}function onFile(e){let t=e.target,n=t.files?.[0];n&&E(n,o.courseId),t.value=``}return d(m,e=>{e&&u.value&&c(`loaded`,e,u.value)}),S(()=>{o.autoload&&loadLive()}),(r,a)=>{let o=i(`v-text-field`),c=i(`v-btn`),d=i(`v-alert`),g=i(`v-spacer`),y=i(`v-card-text`),S=i(`v-card`);return n(),b(S,{variant:`outlined`},{default:e(()=>[t(y,null,{default:e(()=>[f(`div`,A,[t(o,{modelValue:D.value,"onUpdate:modelValue":a[0]||(a[0]=e=>D.value=e),label:`Learner`,density:`compact`,"hide-details":``,style:{"max-width":`16rem`},disabled:!r.couchUrl||!r.courseId,onKeydown:v(loadLive,[`enter`])},null,8,[`modelValue`,`disabled`]),t(c,{color:`primary`,loading:_(C),disabled:!r.couchUrl||!r.courseId||!D.value,onClick:loadLive},{default:e(()=>a[3]||(a[3]=[s(` Load `)])),_:1},8,[`loading`,`disabled`]),a[5]||(a[5]=f(`span`,{class:`text-medium-emphasis mx-2`},`or`,-1)),t(c,{variant:`tonal`,"prepend-icon":`mdi-file-upload-outline`,onClick:a[1]||(a[1]=e=>O.value?.click())},{default:e(()=>a[4]||(a[4]=[s(` Open dump file `)])),_:1}),f(`input`,{ref_key:`fileInput`,ref:O,type:`file`,accept:`.json,application/json`,hidden:``,onChange:onFile},null,544)]),_(w)?(n(),b(d,{key:0,type:`error`,variant:`tonal`,density:`compact`,class:`mt-3`},{default:e(()=>[s(l(_(w)),1)]),_:1})):x(``,!0),_(m)&&_(u)?(n(),p(`div`,j,[f(`span`,null,[f(`strong`,null,l(_(m).username),1),s(` · `+l(_(m).sessions.length)+` sessions `,1),k.value?(n(),p(h,{key:0},[s(`(`+l(k.value)+`)`,1)],64)):x(``,!0),s(` · `+l(_(m).cardHistories.length)+` cards seen · as of `+l(_(m).asOf.slice(0,16))+`Z `,1),_(m).cards?x(``,!0):(n(),p(h,{key:1},[s(`· no course slice`)],64))]),t(g),t(c,{variant:`text`,size:`small`,"prepend-icon":`mdi-download`,onClick:a[2]||(a[2]=e=>_(downloadLearnerDump)(_(u)))},{default:e(()=>a[6]||(a[6]=[s(` Save dump `)])),_:1})])):x(``,!0)]),_:1})]),_:1})}}}),N={churned:{icon:`mdi-autorenew`,color:`warning`},"out-of-content":{icon:`mdi-cup-off-outline`,color:`error`},walked:{icon:`mdi-exit-run`,color:`error`},stalled:{icon:`mdi-arrow-collapse-horizontal`,color:`grey`},grinding:{icon:`mdi-alert-octagon-outline`,color:`warning`}};function statusColor(e){return e===`closed`?`success`:e===`abandoned`?`warning`:`error`}function accuracyClass(e){return e===null?`text-disabled`:e>=.8?`text-success`:e<.5?`text-error`:``}function deltaClass(e){return e===null||e===0?`text-disabled`:e>0?`text-success`:`text-error`}function deltaColor(e){return e>0?`success`:e<0?`error`:`grey`}function fmtTime(e){if(!e)return`—`;let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString()}function fmtClock(e){let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleTimeString(void 0,{hour12:!1})}function shortId(e,t=28){return e.length>t?`…${e.slice(-(t-2))}`:e}function useCopy(){let e=y(null),t=null;async function copy(n,r){try{await navigator.clipboard.writeText(n),e.value=r,t&&clearTimeout(t),t=setTimeout(()=>e.value=null,1400)}catch(e){console.warn(`[admin] clipboard write failed`,e)}}return{copied:e,copy}}var P={key:0,class:`text-caption mb-2`},F={class:`text-medium-emphasis`},I={class:`d-flex flex-wrap mb-2 ga-1`},L={key:0,class:`text-caption text-disabled`},R={class:`text-caption text-medium-emphasis mb-2`},z={key:0,class:`text-error`},B={class:`text-no-wrap`},V={key:2,class:`text-disabled`},ee={class:`text-truncate`,style:{"max-width":`200px`}},te=c({__name:`CardDossierDetail`,props:{dossier:{},interpreters:{}},setup(a){function perf(e){let t=recordPerformance(e);return t===null?`—`:t.toFixed(2)}function fmtInterval(e){return e?e<3600?`${Math.round(e/60)}m`:e<86400?`${Math.round(e/3600)}h`:`${Math.round(e/86400)}d`:`none`}return(a,o)=>{let c=i(`v-chip`),d=i(`v-icon`),m=i(`v-table`);return n(),p(`div`,null,[a.dossier.card&&Object.keys(a.dossier.card.data).length?(n(),p(`div`,P,[(n(!0),p(h,null,u(a.dossier.card.data,(e,t)=>(n(),p(`span`,{key:t,class:`mr-3`},[f(`span`,F,l(t)+`:`,1),s(` `+l(_(fmtAnswer)(e,60)),1)]))),128))])):x(``,!0),f(`div`,I,[(n(!0),p(h,null,u(a.dossier.card?.tags??[],t=>(n(),b(c,{key:t,size:`x-small`,variant:`outlined`,color:_(isSkillTag)(a.interpreters,t)?`primary`:void 0},{default:e(()=>[s(l(t),1)]),_:2},1032,[`color`]))),128)),a.dossier.card?x(``,!0):(n(),p(`span`,L,`no course data in this dataset`))]),f(`div`,R,[s(` lapses `+l(a.dossier.lapses)+` · streak `+l(a.dossier.streak)+` · best interval `+l(fmtInterval(a.dossier.bestIntervalSeconds))+` · `,1),a.dossier.pendingReview?(n(),p(h,{key:0},[s(` next review `+l(_(fmtTime)(a.dossier.pendingReview.reviewTime))+` `,1),a.dossier.pendingReview.overdue?(n(),p(`span`,z,`(overdue)`)):x(``,!0)],64)):(n(),p(h,{key:1},[s(`no review scheduled`)],64))]),t(m,{density:`compact`,class:`sk-record-table`},{default:e(()=>[o[2]||(o[2]=f(`thead`,null,[f(`tr`,null,[f(`th`,null,`#`),f(`th`,null,`When`),f(`th`,null,`Result`),f(`th`,null,`Perf`),f(`th`,null,`Prior att.`),f(`th`,null,`Time`),f(`th`,null,`Answer`)])],-1)),f(`tbody`,null,[(n(!0),p(h,null,u(a.dossier.records,(t,i)=>(n(),p(`tr`,{key:i,class:r(t.isCorrect===!1?`sk-fail-row`:``)},[f(`td`,null,l(i+1),1),f(`td`,B,l(_(fmtTime)(t.timeStamp)),1),f(`td`,null,[t.isCorrect===!0?(n(),b(d,{key:0,size:`small`,color:`success`},{default:e(()=>o[0]||(o[0]=[s(`mdi-check`)])),_:1})):t.isCorrect===!1?(n(),b(d,{key:1,size:`small`,color:`error`},{default:e(()=>o[1]||(o[1]=[s(`mdi-close`)])),_:1})):(n(),p(`span`,V,`—`))]),f(`td`,null,l(perf(t)),1),f(`td`,null,l(t.priorAttemps??`—`),1),f(`td`,null,l(((t.timeSpent??0)/1e3).toFixed(1))+`s`,1),f(`td`,ee,l(_(fmtAnswer)(t.userAnswer)),1)],2))),128))])]),_:1})])}}}),H=__name((e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},`default`),U=H(te,[[`__scopeId`,`data-v-76b0a622`]]),W={class:`text-caption text-medium-emphasis mb-4`},G={class:`text-h6`},K={class:`text-caption`},q={class:`d-flex align-center flex-wrap mb-3 ga-3`},J={class:`d-flex align-center flex-wrap ga-2`,style:{width:`100%`}},Y={class:`text-body-2 font-weight-medium`},X={class:`text-caption text-medium-emphasis`},Z={key:2,class:`text-caption`},Q={key:0,class:`ml-1 text-disabled`},ne=H(c({__name:`LearnerCardHistory`,props:{dataset:{},interpreters:{},focus:{}},setup(o){let c=o,m=g(()=>cardDossiers(c.dataset)),v=y(`all`),S=y(``),C=y([]),w=y(null),T=g(()=>({stuck:m.value.filter(e=>e.stuck).length,failed:m.value.filter(e=>e.fails>0).length,frozen:m.value.filter(e=>e.frozenElo).length})),E=g(()=>[{label:`cards seen`,value:m.value.length,color:`primary`},{label:`total attempts`,value:m.value.reduce((e,t)=>e+t.attempts,0),color:`primary`},{label:`total fails`,value:m.value.reduce((e,t)=>e+t.fails,0),color:`error`},{label:`time on cards`,value:fmtDuration(m.value.reduce((e,t)=>e+t.totalTimeMs,0)/1e3),color:`grey`},{label:`stuck reviews`,value:T.value.stuck,color:`error`},{label:`frozen ELO`,value:T.value.frozen,color:`warning`}]),D=g(()=>{let e=m.value;v.value===`stuck`?e=e.filter(e=>e.stuck):v.value===`failed`?e=e.filter(e=>e.fails>0):v.value===`frozen`&&(e=e.filter(e=>e.frozenElo));let t=S.value?.trim().toLowerCase();return t&&(e=e.filter(e=>e.cardId.toLowerCase().includes(t)||(e.card?.questionType??``).toLowerCase().includes(t)||(e.card?.tags??[]).some(e=>e.toLowerCase().includes(t))||Object.values(e.card?.data??{}).some(e=>typeof e==`string`&&e.toLowerCase().includes(t)))),e});function headline(e){let t=Object.values(e.card?.data??{}).find(e=>typeof e==`string`&&e.length<=40);return typeof t==`string`?t:``}async function applyFocus(e){!e||!m.value.some(t=>t.cardId===e)||(v.value=`all`,S.value=e,C.value=[e],await a(),document.querySelector(`[data-card="${CSS.escape(e)}"]`)?.scrollIntoView({behavior:`smooth`,block:`center`}),w.value=e,setTimeout(()=>{w.value===e&&(w.value=null)},2200))}return d(()=>c.focus,e=>void applyFocus(e),{immediate:!0}),(a,o)=>{let c=i(`v-icon`),d=i(`v-card`),g=i(`v-col`),y=i(`v-row`),O=i(`v-btn`),k=i(`v-btn-toggle`),A=i(`v-text-field`),j=i(`v-alert`),M=i(`v-spacer`),N=i(`v-chip`),P=i(`v-expansion-panel-title`),F=i(`v-expansion-panel-text`),I=i(`v-expansion-panel`),L=i(`v-expansion-panels`);return n(),p(`div`,null,[f(`p`,W,[o[5]||(o[5]=s(` Every card the learner has met, most painful first (time sunk × failures), with its pending review and current card ELO. `)),t(c,{size:`x-small`,color:`error`},{default:e(()=>o[3]||(o[3]=[s(`mdi-sync-alert`)])),_:1}),o[6]||(o[6]=s(` is a failed card holding an overdue review; `)),t(c,{size:`x-small`,color:`warning`},{default:e(()=>o[4]||(o[4]=[s(`mdi-snowflake`)])),_:1}),o[7]||(o[7]=s(` is a repeatedly failed card whose ELO has fewer updates than failures. `))]),t(y,{dense:``,class:`mb-2`},{default:e(()=>[(n(!0),p(h,null,u(E.value,r=>(n(),b(g,{key:r.label,cols:`6`,sm:`4`,md:`2`},{default:e(()=>[t(d,{variant:`tonal`,color:r.color,class:`pa-2 text-center`},{default:e(()=>[f(`div`,G,l(r.value),1),f(`div`,K,l(r.label),1)]),_:2},1032,[`color`])]),_:2},1024))),128))]),_:1}),f(`div`,q,[t(k,{modelValue:v.value,"onUpdate:modelValue":o[0]||(o[0]=e=>v.value=e),density:`compact`,color:`primary`,variant:`outlined`},{default:e(()=>[t(O,{value:`all`,size:`small`},{default:e(()=>[s(`All (`+l(m.value.length)+`)`,1)]),_:1}),t(O,{value:`stuck`,size:`small`},{default:e(()=>[t(c,{start:``,size:`small`,color:`error`},{default:e(()=>o[8]||(o[8]=[s(`mdi-sync-alert`)])),_:1}),s(` Stuck (`+l(T.value.stuck)+`) `,1)]),_:1}),t(O,{value:`failed`,size:`small`},{default:e(()=>[s(`Ever failed (`+l(T.value.failed)+`)`,1)]),_:1}),t(O,{value:`frozen`,size:`small`},{default:e(()=>[t(c,{start:``,size:`small`,color:`warning`},{default:e(()=>o[9]||(o[9]=[s(`mdi-snowflake`)])),_:1}),s(` Frozen ELO (`+l(T.value.frozen)+`) `,1)]),_:1})]),_:1},8,[`modelValue`]),t(A,{modelValue:S.value,"onUpdate:modelValue":o[1]||(o[1]=e=>S.value=e),density:`compact`,variant:`outlined`,"hide-details":``,clearable:``,placeholder:`filter by card / tag / type / content`,"prepend-inner-icon":`mdi-magnify`,style:{"max-width":`320px`}},null,8,[`modelValue`])]),m.value.length===0?(n(),b(j,{key:0,type:`info`,variant:`tonal`},{default:e(()=>o[10]||(o[10]=[s(`No card history for this learner.`)])),_:1})):(n(),b(L,{key:1,modelValue:C.value,"onUpdate:modelValue":o[2]||(o[2]=e=>C.value=e),multiple:``,variant:`accordion`},{default:e(()=>[(n(!0),p(h,null,u(D.value,i=>(n(),b(I,{key:i.cardId,value:i.cardId,"data-card":i.cardId,class:r(i.cardId===w.value?`sk-card-flash`:``)},{default:e(()=>[t(P,null,{default:e(()=>[f(`div`,J,[i.stuck?(n(),b(c,{key:0,color:`error`,size:`small`,title:`failed + overdue review`},{default:e(()=>o[11]||(o[11]=[s(`mdi-sync-alert`)])),_:1})):x(``,!0),i.frozenElo?(n(),b(c,{key:1,color:`warning`,size:`small`,title:`repeatedly failed, ELO barely updated`},{default:e(()=>o[12]||(o[12]=[s(` mdi-snowflake `)])),_:1})):x(``,!0),f(`span`,Y,l(i.card?.questionType??`card`),1),f(`code`,X,l(_(shortId)(i.cardId,24)),1),headline(i)?(n(),p(`span`,Z,l(headline(i)),1)):x(``,!0),t(M),i.fails>0?(n(),b(N,{key:3,size:`x-small`,color:`error`,variant:`tonal`},{default:e(()=>[s(l(i.fails)+` fail`+l(i.fails===1?``:`s`),1)]),_:2},1024)):x(``,!0),t(N,{size:`x-small`,variant:`tonal`},{default:e(()=>[s(l(i.attempts)+` view`+l(i.attempts===1?``:`s`),1)]),_:2},1024),t(N,{size:`x-small`,variant:`tonal`,color:`grey`},{default:e(()=>[s(l(_(fmtDuration)(i.totalTimeMs/1e3)),1)]),_:2},1024),i.pendingReview?(n(),b(N,{key:4,size:`x-small`,color:i.pendingReview.overdue?`error`:`success`,variant:`flat`},{default:e(()=>[s(` review `+l(i.pendingReview.overdue?`overdue`:`scheduled`),1)]),_:2},1032,[`color`])):x(``,!0),t(N,{size:`x-small`,variant:`tonal`,color:i.frozenElo?`warning`:void 0},{default:e(()=>[s(` ELO `+l(i.cardElo===null?`?`:Math.round(i.cardElo))+` `,1),i.cardEloCount===null?x(``,!0):(n(),p(`span`,Q,`/`+l(i.cardEloCount),1))]),_:2},1032,[`color`])])]),_:2},1024),t(F,null,{default:e(()=>[t(U,{dossier:i,interpreters:a.interpreters},null,8,[`dossier`,`interpreters`])]),_:2},1024)]),_:2},1032,[`value`,`data-card`,`class`]))),128))]),_:1},8,[`modelValue`]))])}}}),[[`__scopeId`,`data-v-bb6b302b`]]),re={class:`sk-run-detail`},ie={key:0,class:`mb-2`},ae={class:`text-right`},oe={class:`text-right`},se={class:`text-right`},ce={class:`text-right`},le={key:1,class:`mb-2`},ue={class:`text-right`},de={class:`text-right`},fe={class:`text-right`},pe={key:2,class:`mb-2`},me={key:3,class:`mb-2`},he={class:`text-caption font-weight-medium`},ge={key:0,class:`text-medium-emphasis font-weight-regular`},_e={key:1,title:`runner-up`},ve=[`onClick`],ye={class:`text-right`},be={class:`text-caption font-weight-medium`},xe=[`onClick`],Se={class:`text-medium-emphasis`},Ce={class:`text-no-wrap`},we={class:`text-no-wrap`},Te={class:`text-right text-no-wrap`},Ee={class:`text-caption`},De={key:4,class:`mb-2`},Oe={class:`sk-hint-block`},ke={key:5,class:`text-caption text-medium-emphasis`},Ae={key:2},je=H(c({__name:`RunDetail`,props:{run:{}},emits:[`open-card`],setup(a,{emit:o}){let c=a,d=o,m=g(()=>{let e=c.run.unselectedNew,t=[];return e?.nextInLine&&t.push({label:`next new card in line`,card:e.nextInLine}),e?.topGenerated&&t.push({label:`top-generated new card (sunk)`,card:e.topGenerated}),t}),v=g(()=>selectedBySource(c.run).map(e=>`${e.source} ${e.count}`).join(` · `));return(a,o)=>{let c=i(`v-table`),g=i(`v-icon`);return n(),p(`div`,re,[a.run.generators?.length?(n(),p(`div`,ie,[o[1]||(o[1]=f(`div`,{class:`text-caption font-weight-medium`},`generators`,-1)),t(c,{density:`compact`,class:`sk-mini-table`},{default:e(()=>[o[0]||(o[0]=f(`thead`,null,[f(`tr`,null,[f(`th`),f(`th`,{class:`text-right`},`cards`),f(`th`,{class:`text-right`},`new`),f(`th`,{class:`text-right`},`review`),f(`th`,{class:`text-right`},`top`)])],-1)),f(`tbody`,null,[(n(!0),p(h,null,u(a.run.generators,e=>(n(),p(`tr`,{key:e.name},[f(`td`,null,l(e.name),1),f(`td`,ae,l(e.cardCount),1),f(`td`,oe,l(e.newCount),1),f(`td`,se,l(e.reviewCount),1),f(`td`,ce,l(e.topScore.toFixed(2)),1)]))),128))])]),_:1})])):x(``,!0),a.run.filters?.length?(n(),p(`div`,le,[o[3]||(o[3]=f(`div`,{class:`text-caption font-weight-medium`},`filters`,-1)),t(c,{density:`compact`,class:`sk-mini-table`},{default:e(()=>[o[2]||(o[2]=f(`thead`,null,[f(`tr`,null,[f(`th`),f(`th`,null,`kind`),f(`th`,{class:`text-right`},`boosted`),f(`th`,{class:`text-right`},`penalized`),f(`th`,{class:`text-right`},`passed`),f(`th`,{class:`text-right`},`removed`)])],-1)),f(`tbody`,null,[(n(!0),p(h,null,u(a.run.filters,e=>(n(),p(`tr`,{key:e.name},[f(`td`,null,l(e.name),1),f(`td`,null,l(e.kind??`—`),1),f(`td`,ue,l(e.boosted),1),f(`td`,de,l(e.penalized),1),f(`td`,fe,l(e.passed),1),f(`td`,{class:r([`text-right`,e.removed>0?`text-error`:``])},l(e.removed),3)]))),128))])]),_:1})])):x(``,!0),a.run.regulators?.length?(n(),p(`div`,pe,[o[4]||(o[4]=f(`div`,{class:`text-caption font-weight-medium`},`regulators`,-1)),(n(!0),p(h,null,u(a.run.regulators,e=>(n(),p(`div`,{key:e.name,class:`sk-mini-line`},[f(`span`,{class:r(e.multiplier>1?`text-warning`:`text-medium-emphasis`)},` ×`+l(e.multiplier.toFixed(2)),3),s(` `+l(_(regulatorText)(e)),1)]))),128))])):x(``,!0),a.run.cards?.length?(n(),p(`div`,me,[f(`div`,he,[o[5]||(o[5]=s(` selection `)),v.value?(n(),p(`span`,ge,` · by source: `+l(v.value),1)):x(``,!0)]),t(c,{density:`compact`,class:`sk-mini-table`},{default:e(()=>[o[7]||(o[7]=f(`thead`,null,[f(`tr`,null,[f(`th`),f(`th`,null,`card`),f(`th`,null,`origin`),f(`th`,null,`source`),f(`th`,{class:`text-right`},`score`)])],-1)),f(`tbody`,null,[(n(!0),p(h,null,u(a.run.cards,t=>(n(),p(`tr`,{key:t.cardId,class:r(t.selected?``:`text-medium-emphasis`)},[f(`td`,null,[t.selected?(n(),b(g,{key:0,size:`x-small`,color:`success`},{default:e(()=>o[6]||(o[6]=[s(`mdi-check`)])),_:1})):(n(),p(`span`,_e,`·`))]),f(`td`,null,[f(`a`,{class:`sk-card-link`,onClick:e=>d(`open-card`,t.cardId)},l(t.cardId),9,ve)]),f(`td`,null,l(t.origin),1),f(`td`,null,l(_(runCardSource)(t)),1),f(`td`,ye,l(_(fmtScore)(t.score)),1)],2))),128))])]),_:1})])):x(``,!0),(n(!0),p(h,null,u(m.value,r=>(n(),p(`div`,{key:r.label,class:`mb-2`},[f(`div`,be,[s(l(r.label)+`: `,1),f(`a`,{class:`sk-card-link`,onClick:e=>d(`open-card`,r.card.cardId)},l(r.card.cardId),9,xe),f(`span`,Se,` (`+l(r.card.origin)+`, `+l(_(runCardSource)(r.card))+`) final `+l(_(fmtScore)(r.card.score)),1)]),t(c,{density:`compact`,class:`sk-mini-table`},{default:e(()=>[f(`tbody`,null,[(n(!0),p(h,null,u(r.card.trail,(e,t)=>(n(),p(`tr`,{key:t},[f(`td`,Ce,l(e.action),1),f(`td`,we,l(e.strategyName),1),f(`td`,Te,l(_(fmtScore)(e.score)),1),f(`td`,Ee,l(e.reason),1)]))),128))])]),_:2},1024)]))),128)),a.run.hints?(n(),p(`div`,De,[o[8]||(o[8]=f(`div`,{class:`text-caption font-weight-medium`},`hints`,-1)),f(`pre`,Oe,l(JSON.stringify(a.run.hints,null,2)),1)])):x(``,!0),a.run.discardedTail?(n(),p(`div`,ke,[s(` discarded tail: `+l(a.run.discardedTail.count)+` cards `,1),a.run.discardedTail.scoreRange?(n(),p(h,{key:0},[s(` · score [`+l(a.run.discardedTail.scoreRange[0].toFixed(2))+`, `+l(a.run.discardedTail.scoreRange[1].toFixed(2))+`] `,1)],64)):x(``,!0),a.run.discardedTail.eloRange?(n(),p(h,{key:1},[s(` · ELO [`+l(Math.round(a.run.discardedTail.eloRange[0]))+`, `+l(Math.round(a.run.discardedTail.eloRange[1]))+`] `,1)],64)):x(``,!0),a.run.discardedTail.note?(n(),p(`div`,Ae,l(a.run.discardedTail.note),1)):x(``,!0)])):x(``,!0)])}}}),[[`__scopeId`,`data-v-4e9c454b`]]),Me={class:`d-flex align-center flex-wrap mb-4 ga-2`},Ne={class:`text-caption text-medium-emphasis`},Pe={class:`text-right`},Fe={class:`text-right`},Ie={key:1,class:`text-caption text-disabled`},Le={class:`sk-hint-block`},Re={class:`sk-hint-block`},ze={class:`text-caption text-medium-emphasis mb-4`},Be={class:`text-right`},Ve={class:`text-right`},He={class:`text-disabled`},Ue={class:`text-right`},We={class:`d-flex flex-wrap ga-5`},Ge={class:`text-caption text-medium-emphasis`},Ke={class:`text-h6 text-success`},qe={class:`text-caption text-medium-emphasis`},Je={class:`text-h6 text-error`},Ye={class:`text-h6`},Xe={class:`text-caption text-disabled`},Ze={class:`d-flex align-center flex-wrap mb-2 ga-3`},Qe={key:4,class:`sk-timeline`},$e={class:`sk-tl-time text-caption text-disabled`},et={class:`sk-tl-gutter`},tt={key:0,class:`sk-tl-body`},nt={class:`d-flex align-center flex-wrap ga-1`},rt={class:`font-weight-medium`},it={class:`text-caption text-medium-emphasis ml-2`},at={key:1,class:`text-caption text-error ml-2`},ot={key:1,class:`sk-tl-body`},st=[`title`,`onClick`],ct={class:`text-caption`},lt={class:`text-caption text-medium-emphasis ml-2`},ut={key:0,class:`text-caption text-disabled ml-2`},dt=H(c({__name:`LearnerSessionDetail`,props:{dataset:{},sessionId:{},interpreters:{}},emits:[`open-card`],setup(a,{emit:o}){let c=a,d=o,m=g(()=>sessionDetail(c.dataset,c.sessionId,c.interpreters)),v=g(()=>m.value.summary.doc),S=g(()=>servedTags(m.value?.timeline??[],c.interpreters)),C=g(()=>eloLedger(m.value?.timeline??[])),w=g(()=>m.value?.timeline.filter(e=>e.kind===`response`).length??0),T=y(`all`),D=g(()=>{let e=m.value?.timeline??[];return!T.value||T.value===`all`?e:e.filter(e=>e.kind===T.value)}),O=y(new Set);function toggle(e){let t=new Set(O.value);t.has(e)?t.delete(e):t.add(e),O.value=t}let{copied:k,copy:A}=useCopy();function asText(){return m.value?sessionText(c.dataset.username,m.value,{servedTags:S.value,eloLedger:C.value},c.interpreters):``}let j=g(()=>{let e=m.value?.summary;if(!e)return``;let t=fmtDuration(e.doc.plannedSeconds);return e.durationSeconds===null?`— of ${t}`:`${fmtDuration(e.durationSeconds)} of ${t}`});function skillTags(e){return e.filter(e=>isSkillTag(c.interpreters,e)).slice(0,3)}function fmtNum(e){return e===null?`—`:Number.isInteger(e)?String(e):e.toFixed(1)}function fmtHints(e){return e==null?`none`:JSON.stringify(e,null,2)}function entryIcon(e){return e.kind===`run`?`mdi-cog-refresh-outline`:e.isCorrect===!0?`mdi-check-circle-outline`:e.isCorrect===!1?`mdi-close-circle-outline`:`mdi-circle-small`}function entryColor(e){return e.kind===`run`?`primary`:e.isCorrect===!0?`success`:e.isCorrect===!1?`error`:`grey`}function rowClass(e){return e.kind===`run`?`sk-tl-run`:e.isCorrect===!1?`sk-tl-fail`:``}return(a,o)=>{let c=i(`v-alert`),g=i(`v-chip`),y=i(`v-icon`),M=i(`v-spacer`),P=i(`v-btn`),F=i(`v-table`),I=i(`v-card`),L=i(`v-col`),R=i(`v-row`),z=i(`v-btn-toggle`);return n(),p(`div`,null,[m.value?(n(),p(h,{key:1},[f(`div`,Me,[t(g,{size:`small`,variant:`flat`,color:_(statusColor)(v.value.status)},{default:e(()=>[s(l(v.value.status),1)]),_:1},8,[`color`]),t(g,{size:`small`,variant:`tonal`},{default:e(()=>[s(l(_(fmtTime)(v.value.startTime)),1)]),_:1}),t(g,{size:`small`,variant:`tonal`,color:`grey`},{default:e(()=>[s(l(j.value),1)]),_:1}),(n(!0),p(h,null,u(m.value.summary.flags,r=>(n(),b(g,{key:r,size:`small`,variant:`tonal`,color:_(N)[r].color,title:_(E)[r].help},{default:e(()=>[t(y,{start:``,size:`small`},{default:e(()=>[s(l(_(N)[r].icon),1)]),_:2},1024),s(` `+l(_(E)[r].label),1)]),_:2},1032,[`color`,`title`]))),128)),t(M),f(`code`,Ne,l(a.sessionId),1),t(P,{variant:`text`,size:`small`,"prepend-icon":_(k)===`session`?`mdi-check`:`mdi-clipboard-text-outline`,color:_(k)===`session`?`success`:void 0,onClick:o[0]||(o[0]=e=>_(A)(asText(),`session`))},{default:e(()=>[s(l(_(k)===`session`?`Copied`:`Copy as text`),1)]),_:1},8,[`prepend-icon`,`color`])]),m.value.responsesMissing?(n(),b(c,{key:0,type:`warning`,variant:`tonal`,density:`compact`,class:`mb-4`},{default:e(()=>[s(` The session records `+l(v.value.tally?.responses)+` responses but only `+l(w.value)+` card records carry its id. The timeline is incomplete. `,1)]),_:1})):x(``,!0),t(R,{class:`mb-2`},{default:e(()=>[t(L,{cols:`12`,md:`6`},{default:e(()=>[t(I,{variant:`outlined`,class:`pa-3 h-100`},{default:e(()=>[o[4]||(o[4]=f(`div`,{class:`text-subtitle-2 mb-1`},`Learner state`,-1)),o[5]||(o[5]=f(`div`,{class:`text-caption text-medium-emphasis mb-3`},` What the navigator was choosing against, and what moved. `,-1)),m.value.summary.state.length?(n(),b(F,{key:0,density:`compact`,class:`sk-mini-table`},{default:e(()=>[o[3]||(o[3]=f(`thead`,null,[f(`tr`,null,[f(`th`),f(`th`,{class:`text-right`},`Start`),f(`th`,{class:`text-right`},`End`),f(`th`,{class:`text-right`},`Δ`)])],-1)),f(`tbody`,null,[(n(!0),p(h,null,u(m.value.summary.state,e=>(n(),p(`tr`,{key:e.label},[f(`td`,null,l(e.label),1),f(`td`,Pe,l(fmtNum(e.from)),1),f(`td`,Fe,l(fmtNum(e.to)),1),f(`td`,{class:r([`text-right`,_(deltaClass)(e.delta)])},l(_(fmtDelta)(e.delta)),3)]))),128))])]),_:1})):(n(),p(`div`,Ie,`No state snapshot recorded.`))]),_:1})]),_:1}),t(L,{cols:`12`,md:`6`},{default:e(()=>[t(I,{variant:`outlined`,class:`pa-3 h-100`},{default:e(()=>[o[6]||(o[6]=f(`div`,{class:`text-subtitle-2 mb-1`},`Session hints`,-1)),o[7]||(o[7]=f(`div`,{class:`text-caption text-medium-emphasis mb-3`},` What outcome observers told the navigator. They act only through these. `,-1)),o[8]||(o[8]=f(`span`,{class:`text-caption font-weight-medium`},`at open`,-1)),f(`pre`,Le,l(fmtHints(v.value.config?.initHints)),1),o[9]||(o[9]=f(`span`,{class:`text-caption font-weight-medium`},`at close`,-1)),f(`pre`,Re,l(fmtHints(v.value.finalHints)),1)]),_:1})]),_:1})]),_:1}),f(`div`,ze,[s(` batch limit `+l(v.value.config?.defaultBatchLimit??`?`)+` · `+l(v.value.config?.sourceCount??`?`)+` source(s) · opening queues supply `+l(v.value.initialQueues?.supplyQ??`?`)+` / failed `+l(v.value.initialQueues?.failedQ??`?`)+` `,1),v.value.tally?(n(),p(h,{key:0},[s(` · ended with `+l(v.value.tally.failedQRemaining)+` still in the failed queue`,1)],64)):x(``,!0)]),S.value.length?(n(),b(I,{key:1,variant:`outlined`,class:`pa-3 mb-4`},{default:e(()=>[o[11]||(o[11]=f(`div`,{class:`text-subtitle-2 mb-1`},`Served tags`,-1)),o[12]||(o[12]=f(`div`,{class:`text-caption text-medium-emphasis mb-2`},` What this sitting put in front of the learner, by content tag. A response with several tags counts toward each. `,-1)),t(F,{density:`compact`,class:`sk-mini-table`},{default:e(()=>[o[10]||(o[10]=f(`thead`,null,[f(`tr`,null,[f(`th`,null,`Tag`),f(`th`,{class:`text-right`},`Resp.`),f(`th`,{class:`text-right`},`Cards`),f(`th`,{class:`text-right`},`Accuracy`),f(`th`,{class:`text-right`},`Time`)])],-1)),f(`tbody`,null,[(n(!0),p(h,null,u(S.value,e=>(n(),p(`tr`,{key:e.tag},[f(`td`,null,[f(`code`,{class:r(_(isSkillTag)(a.interpreters,e.tag)?`text-primary`:``)},l(e.tag),3)]),f(`td`,Be,l(e.responses),1),f(`td`,Ve,l(e.cards),1),f(`td`,{class:r([`text-right`,_(accuracyClass)(e.accuracy)])},[e.accuracy===null?(n(),p(h,{key:0},[s(`—`)],64)):(n(),p(h,{key:1},[s(l(Math.round(e.accuracy*100))+`% `,1),f(`span`,He,`(`+l(e.correct)+`/`+l(e.correct+e.incorrect)+`)`,1)],64))],2),f(`td`,Ue,l((e.totalTimeMs/1e3).toFixed(1))+`s`,1)]))),128))])]),_:1})]),_:1})):x(``,!0),C.value?(n(),b(I,{key:2,variant:`outlined`,class:`pa-3 mb-4`},{default:e(()=>[o[15]||(o[15]=f(`div`,{class:`text-subtitle-2 mb-1`},`ELO ledger`,-1)),o[16]||(o[16]=f(`div`,{class:`text-caption text-medium-emphasis mb-3`},` The per-response learner global-ELO exchanges that net to the session's ELO move. Wins above the learner's level pay little; losses below it cost a lot, so a high hit rate can still net negative. `,-1)),f(`div`,We,[f(`div`,null,[o[13]||(o[13]=f(`div`,{class:`text-caption text-medium-emphasis`},`net`,-1)),f(`div`,{class:r([`text-h6`,_(deltaClass)(C.value.net)])},l(_(fmtDelta)(C.value.net)),3)]),f(`div`,null,[f(`div`,Ge,`gained · `+l(C.value.wins)+` win(s)`,1),f(`div`,Ke,l(_(fmtDelta)(C.value.gained)),1)]),f(`div`,null,[f(`div`,qe,`lost · `+l(C.value.losses)+` loss(es)`,1),f(`div`,Je,l(_(fmtDelta)(C.value.lost)),1)]),f(`div`,null,[o[14]||(o[14]=f(`div`,{class:`text-caption text-medium-emphasis`},`exchanges`,-1)),f(`div`,Ye,l(C.value.count),1),f(`div`,Xe,`of `+l(w.value)+` response(s)`,1)])])]),_:1})):x(``,!0),f(`div`,Ze,[o[17]||(o[17]=f(`h2`,{class:`text-h6`},`Timeline`,-1)),t(z,{modelValue:T.value,"onUpdate:modelValue":o[1]||(o[1]=e=>T.value=e),density:`compact`,color:`primary`,variant:`outlined`},{default:e(()=>[t(P,{value:`all`,size:`small`},{default:e(()=>[s(`All (`+l(m.value.timeline.length)+`)`,1)]),_:1}),t(P,{value:`response`,size:`small`},{default:e(()=>[s(`Responses (`+l(w.value)+`)`,1)]),_:1}),t(P,{value:`run`,size:`small`},{default:e(()=>[s(`Runs (`+l(m.value.timeline.length-w.value)+`)`,1)]),_:1})]),_:1},8,[`modelValue`])]),m.value.timeline.length===0?(n(),b(c,{key:3,type:`info`,variant:`tonal`},{default:e(()=>o[18]||(o[18]=[s(`Nothing recorded for this session.`)])),_:1})):(n(),p(`div`,Qe,[(n(!0),p(h,null,u(D.value,(i,c)=>(n(),p(`div`,{key:c,class:r([`sk-tl-row`,rowClass(i)])},[f(`div`,$e,l(_(fmtClock)(i.at)),1),f(`div`,et,[t(y,{size:`small`,color:entryColor(i)},{default:e(()=>[s(l(entryIcon(i)),1)]),_:2},1032,[`color`])]),i.kind===`run`?(n(),p(`div`,tt,[f(`div`,nt,[f(`span`,rt,l(i.run.label),1),i.run.mode?(n(),b(g,{key:0,size:`x-small`,variant:`tonal`},{default:e(()=>[s(l(i.run.mode),1)]),_:2},1024)):x(``,!0),f(`span`,it,` generated `+l(i.run.generatedCount)+` → selected `+l(i.run.finalCount)+` (`+l(i.run.newSelected)+` new, `+l(i.run.reviewsSelected)+` review) `,1),i.run.generatedCount>0&&i.run.finalCount===0?(n(),p(`span`,at,` nothing survived `)):x(``,!0),typeof i.run.userElo==`number`?(n(),b(g,{key:2,size:`x-small`,variant:`tonal`,color:`grey`,class:`ml-2`},{default:e(()=>[s(` ELO `+l(Math.round(i.run.userElo)),1)]),_:2},1024)):x(``,!0),t(M),t(P,{icon:O.value.has(i.run.runId)?`mdi-chevron-up`:`mdi-chevron-down`,size:`x-small`,variant:`text`,onClick:e=>toggle(i.run.runId)},null,8,[`icon`,`onClick`]),t(P,{icon:_(k)===i.run.runId?`mdi-check`:`mdi-content-copy`,size:`x-small`,variant:`text`,color:_(k)===i.run.runId?`success`:void 0,title:`Copy run as text`,onClick:e=>_(A)(_(runText)(i.run),i.run.runId)},null,8,[`icon`,`color`,`onClick`])]),O.value.has(i.run.runId)?(n(),b(je,{key:0,run:i.run,class:`mt-1`,onOpenCard:o[2]||(o[2]=e=>d(`open-card`,e))},null,8,[`run`])):x(``,!0)])):(n(),p(`div`,ot,[f(`a`,{class:`sk-card-link`,title:`Open ${i.cardId} in card history`,onClick:e=>d(`open-card`,i.cardId)},[s(l(i.questionType??`card`)+` `,1),f(`code`,ct,l(_(shortId)(i.cardId)),1)],8,st),(n(!0),p(h,null,u(skillTags(i.tags),t=>(n(),b(g,{key:t,size:`x-small`,variant:`outlined`,color:`primary`,class:`ml-1`},{default:e(()=>[s(l(_(shortTag)(a.interpreters,t)),1)]),_:2},1024))),128)),f(`span`,lt,[s(l((i.timeSpentMs/1e3).toFixed(1))+`s `,1),i.priorAttempts?(n(),p(h,{key:0},[s(` · attempt `+l(i.priorAttempts+1),1)],64)):x(``,!0)]),i.userAnswer==null?x(``,!0):(n(),p(`span`,ut,`“`+l(_(fmtAnswer)(i.userAnswer))+`”`,1)),i.elo?(n(),p(h,{key:1},[t(g,{size:`x-small`,variant:`tonal`,color:_(deltaColor)(i.elo.global.delta),class:`ml-2`,title:`learner global ELO ${i.elo.global.before} → ${i.elo.global.after} · userScore ${i.elo.userScore.toFixed(2)}`},{default:e(()=>[s(` ELO `+l(_(fmtDelta)(i.elo.global.delta)),1)]),_:2},1032,[`color`,`title`]),(n(!0),p(h,null,u(_(scoredTagDeltas)(i.elo),t=>(n(),b(g,{key:t.tag,size:`x-small`,variant:`text`,color:_(deltaColor)(t.delta),class:`sk-elo-tag`,title:`${t.tag}: ${t.before} → ${t.after} (score ${t.score?.toFixed(2)})`},{default:e(()=>[s(l(_(shortTag)(a.interpreters,t.tag))+` `+l(_(fmtDelta)(t.delta)),1)]),_:2},1032,[`color`,`title`]))),128))],64)):x(``,!0)]))],2))),128))]))],64)):(n(),b(c,{key:0,type:`info`,variant:`tonal`},{default:e(()=>[s(`No session with id `+l(a.sessionId)+`.`,1)]),_:1}))])}}}),[[`__scopeId`,`data-v-36c9215c`]]),ft={class:`text-h6`},pt={class:`text-caption`},mt={class:`d-flex align-center flex-wrap mb-3 ga-3`},ht=[`onClick`],gt={class:`text-no-wrap`},_t={class:`text-right`},vt={class:`text-right`},yt={key:1,class:`text-disabled`},bt={class:`text-right`},xt={class:`text-no-wrap text-caption`},St={class:`text-no-wrap text-caption`},Ct={key:0},wt={key:0,class:`text-disabled`},Tt={class:`text-right`},Et=H(c({__name:`LearnerSessionList`,props:{dataset:{},interpreters:{}},emits:[`open`],setup(a,{emit:o}){let c=a,d=o,m=g(()=>summarizeSessions(c.dataset,c.interpreters)),v=y(`all`),S=g(()=>{let e=new Map;for(let t of m.value)for(let n of t.flags)e.set(n,(e.get(n)??0)+1);return[...e.entries()].map(([e,t])=>({flag:e,count:t})).sort((e,t)=>t.count-e.count)}),C=g(()=>!v.value||v.value===`all`?m.value:m.value.filter(e=>e.flags.includes(v.value))),w=g(()=>{let e=m.value,t=e.filter(e=>e.doc.status===`closed`).length,n=e.reduce((e,t)=>e+(t.doc.tally?.responses??0),0),r=e.reduce((e,t)=>e+(t.doc.tally?.correct??0),0),i=e.reduce((e,t)=>e+(t.durationSeconds??0),0);return[{label:`sessions`,value:e.length,color:`primary`},{label:`completed`,value:t,color:`success`},{label:`not completed`,value:e.length-t,color:`error`},{label:`responses`,value:n,color:`primary`},{label:`overall acc.`,value:n>0?`${Math.round(r/n*100)}%`:`—`,color:`primary`},{label:`time studied`,value:fmtDuration(i),color:`grey`}]});function deltas(e){let t=[];e.eloNet!==null&&t.push({label:`elo`,delta:Math.round(e.eloNet)});for(let n of c.interpreters?.progressMetrics??[]){let r=e.state.find(e=>e.label===n);r&&t.push({label:n,delta:r.delta})}return t}function clockText(e){let t=fmtDuration(e.doc.plannedSeconds);return e.durationSeconds===null?`— of ${t}`:`${fmtDuration(e.durationSeconds)} of ${t}`}return(a,o)=>{let c=i(`v-card`),g=i(`v-col`),y=i(`v-row`),T=i(`v-btn`),D=i(`v-icon`),O=i(`v-btn-toggle`),k=i(`v-alert`),A=i(`v-chip`),j=i(`v-table`);return n(),p(`div`,null,[o[4]||(o[4]=f(`p`,{class:`text-caption text-medium-emphasis mb-4`},[s(` One row per sitting. Flags name a specific way the session failed to do its job; open one to read its interleaved timeline of responses and pipeline runs. `),f(`strong`,null,`Δ`),s(` is movement across the session: ELO, then any progress metrics the course declares. `)],-1)),t(y,{dense:``,class:`mb-2`},{default:e(()=>[(n(!0),p(h,null,u(w.value,r=>(n(),b(g,{key:r.label,cols:`6`,sm:`4`,md:`2`},{default:e(()=>[t(c,{variant:`tonal`,color:r.color,class:`pa-2 text-center`},{default:e(()=>[f(`div`,ft,l(r.value),1),f(`div`,pt,l(r.label),1)]),_:2},1032,[`color`])]),_:2},1024))),128))]),_:1}),f(`div`,mt,[t(O,{modelValue:v.value,"onUpdate:modelValue":o[0]||(o[0]=e=>v.value=e),density:`compact`,color:`primary`,variant:`outlined`},{default:e(()=>[t(T,{value:`all`,size:`small`},{default:e(()=>[s(`All (`+l(m.value.length)+`)`,1)]),_:1}),(n(!0),p(h,null,u(S.value,r=>(n(),b(T,{key:r.flag,value:r.flag,size:`small`,title:_(E)[r.flag].help},{default:e(()=>[t(D,{start:``,size:`small`,color:_(N)[r.flag].color},{default:e(()=>[s(l(_(N)[r.flag].icon),1)]),_:2},1032,[`color`]),s(` `+l(_(E)[r.flag].label)+` (`+l(r.count)+`) `,1)]),_:2},1032,[`value`,`title`]))),128))]),_:1},8,[`modelValue`])]),m.value.length===0?(n(),b(k,{key:0,type:`info`,variant:`tonal`},{default:e(()=>o[1]||(o[1]=[s(` No study sessions recorded. Session records began with a framework release; there is no backfill, so earlier activity shows only in card history. `)])),_:1})):(n(),b(j,{key:1,density:`compact`,class:`sk-admin-table`},{default:e(()=>[o[3]||(o[3]=f(`thead`,null,[f(`tr`,null,[f(`th`,null,`Started`),f(`th`,null,`Status`),f(`th`,{class:`text-right`},`Cards`),f(`th`,{class:`text-right`},`Acc.`),f(`th`,{class:`text-right`},`Runs`),f(`th`,null,`Clock`),f(`th`,null,`Δ`),f(`th`,null,`Flags`),f(`th`)])],-1)),f(`tbody`,null,[(n(!0),p(h,null,u(C.value,i=>(n(),p(`tr`,{key:i.doc.sessionId,class:`sk-admin-row`,onClick:e=>d(`open`,i.doc.sessionId)},[f(`td`,gt,l(_(fmtTime)(i.doc.startTime)),1),f(`td`,null,[t(A,{size:`x-small`,variant:`flat`,color:_(statusColor)(i.doc.status)},{default:e(()=>[s(l(i.doc.status),1)]),_:2},1032,[`color`])]),f(`td`,_t,l(i.doc.tally?.cardsPresented??`—`),1),f(`td`,vt,[i.accuracy===null?(n(),p(`span`,yt,`—`)):(n(),p(`span`,{key:0,class:r(_(accuracyClass)(i.accuracy))},l(Math.round(i.accuracy*100))+`% `,3))]),f(`td`,bt,l(i.doc.runs?.length??0),1),f(`td`,xt,l(clockText(i)),1),f(`td`,St,[(n(!0),p(h,null,u(deltas(i),(e,t)=>(n(),p(h,{key:e.label},[t>0?(n(),p(`span`,Ct,` · `)):x(``,!0),f(`span`,{class:r(_(deltaClass)(e.delta))},l(_(fmtDelta)(e.delta))+`\xA0`+l(e.label),3)],64))),128)),deltas(i).length===0?(n(),p(`span`,wt,`—`)):x(``,!0)]),f(`td`,null,[(n(!0),p(h,null,u(i.flags,t=>(n(),b(D,{key:t,size:`small`,class:`mr-1`,color:_(N)[t].color,title:`${_(E)[t].label}: ${_(E)[t].help}`},{default:e(()=>[s(l(_(N)[t].icon),1)]),_:2},1032,[`color`,`title`]))),128))]),f(`td`,Tt,[t(D,{size:`small`,class:`text-disabled`},{default:e(()=>o[2]||(o[2]=[s(`mdi-chevron-right`)])),_:1})])],8,ht))),128))])]),_:1}))])}}}),[[`__scopeId`,`data-v-5c46cc58`]]),Dt={class:`sk-pipeline`},Ot={class:`d-flex flex-wrap align-center ga-2 mb-3`},kt={class:`text-caption`},At={key:0,class:`text-caption text-medium-emphasis`},jt={class:`sk-stage`},Mt={class:`d-flex align-center mb-1`},Nt={class:`sk-stage-num`},Pt={class:`font-weight-medium`},Ft={class:`text-caption text-medium-emphasis mb-2`},It={class:`d-flex flex-wrap align-center ga-2`},Lt={class:`font-weight-medium`},Rt={class:`text-caption`},zt={key:0,class:`text-caption mt-1`},Bt={key:1,class:`text-caption mt-1`},Vt={key:1,class:`text-medium-emphasis`},Ht={key:2,class:`mt-1`},Ut=[`onClick`],Wt={key:0,class:`sk-config`},Gt={key:0,class:`text-caption text-medium-emphasis`},Kt={class:`d-flex flex-wrap align-center ga-2`},qt={class:`font-weight-medium`},Jt={class:`text-caption`},Yt={key:0,class:`text-caption mt-1`},Xt={key:1,class:`text-caption mt-1 text-medium-emphasis`},Zt={key:2,class:`mt-1`},Qt={class:`sk-impact-bar`},$t=[`title`],en={class:`text-caption`},$={key:1,class:`text-caption text-medium-emphasis`},tn={key:3,class:`mt-1`},nn=[`onClick`],rn={key:0,class:`sk-config`},an={class:`sk-nav`},on={class:`d-flex flex-wrap align-center ga-2`},sn={class:`text-caption mt-1`},cn={key:0,class:`text-caption mt-1`},ln={class:`sk-nav`},un={class:`d-flex flex-wrap align-center ga-2`},dn={class:`text-caption mt-1`},fn={key:0,class:`text-caption mt-1`},pn={key:0,class:`text-caption text-medium-emphasis`},mn={key:3,class:`text-caption`},hn={key:0,class:`sk-stage-arrow`},gn={key:0,class:`text-caption text-medium-emphasis mt-3`},_n=H(c({__name:`PipelineOverview`,props:{strategies:{},courseId:{},stats:{},statsLabel:{}},setup(a){let c=a,d={"strategy-doc":{label:`strategy doc`,color:`primary`},"assembler-default":{label:`added by the assembler`,color:`secondary`},"default-pipeline":{label:`default pipeline`,color:`warning`}},regStat=e=>c.stats?.regulators.find(t=>t.name===e);function regStatText(e){return`In these runs: active (×>1) in ${e.runsActive}/${e.runs}, mean ×${e.meanMultiplier.toFixed(2)}, max ×${e.maxMultiplier.toFixed(2)}. Last: ${regulatorText(e.last)}.`}let m={gate:`Gate: its penalties mean not ready yet; regulators will not lift what it penalized.`,signal:`Signal: its penalties express preference.`};function filterKind(e){let t=e.kind??filterStat(e.name)?.kind;return t?{kind:t,label:t,help:m[t]}:{kind:`gate`,label:`gate (undeclared)`,help:`${m.gate} Its class declares no kind, so it counts as a gate.`}}let v=g(()=>C(c.strategies,c.courseId)),S=g(()=>new Map((c.stats?.generators??[]).map(e=>[e.name,e]))),T=g(()=>new Map((c.stats?.filters??[]).map(e=>[e.name,e]))),genStat=e=>S.value.get(e),filterStat=e=>T.value.get(e),E=g(()=>{let e=[...v.value.notes],t=c.stats;if(!t)return e;for(let t of v.value.filters){let n=filterStat(t.name);n&&n.boosted+n.penalized+n.removed===0&&e.push(`${t.name} changed no candidate's score in ${n.runs} runs.`)}if(t.runsWithSelection>0)for(let t of v.value.generators){let n=genStat(t.name);n&&n.runs>0&&n.selected===0&&e.push(`${t.name} proposed candidates in ${n.runs} runs, and none was selected.`)}return e});function accuracyOf(e){return e.firstAttempts>0?e.firstAttemptsCorrect/e.firstAttempts:null}function impactParts(e){let t=e.boosted+e.penalized+e.passed+e.removed||1;return[{key:`boosted`,count:e.boosted,color:`success`},{key:`penalized`,count:e.penalized,color:`warning`},{key:`passed`,count:e.passed,color:`grey`},{key:`removed`,count:e.removed,color:`error`}].map(e=>({...e,share:e.count/t}))}function fmtNum(e){return e>=10?Math.round(e).toString():e.toFixed(1)}function fmtPct(e){return e===0?`0%`:e<.01?`<1%`:`${Math.round(e*100)}%`}let D=y(new Set);function toggleConfig(e){let t=new Set(D.value);t.has(e)?t.delete(e):t.add(e),D.value=t}function prettyConfig(e){if(!e)return``;try{let t=JSON.parse(e),n=JSON.stringify(t,null,2);return n===`{}`?``:n}catch{return e}}return(a,c)=>{let m=i(`v-chip`),g=i(`v-alert`),y=i(`v-icon`);return n(),p(`div`,Dt,[f(`div`,Ot,[t(m,{size:`small`,variant:`tonal`,color:v.value.kind===`default`?`warning`:`primary`},{default:e(()=>[s(l(v.value.kind===`default`?`default pipeline: the course has no strategy docs`:`assembled from strategy docs`),1)]),_:1},8,[`color`]),f(`span`,kt,l(v.value.generators.length)+` generator(s) · `+l(v.value.filters.length)+` filter(s) `,1),a.stats?(n(),p(`span`,At,` · run stats`+l(a.statsLabel?` for ${a.statsLabel}`:``)+`: `+l(a.stats.runs)+` runs over `+l(a.stats.sessions)+` sessions, `+l(_(fmtTime)(a.stats.firstRunAt))+` – `+l(_(fmtTime)(a.stats.lastRunAt)),1)):x(``,!0)]),(n(!0),p(h,null,u(v.value.skipped,t=>(n(),b(g,{key:t.strategy._id,type:`warning`,variant:`tonal`,density:`compact`,class:`mb-2`},{default:e(()=>[f(`strong`,null,l(t.strategy.name),1),c[0]||(c[0]=s(` (`)),f(`code`,null,l(t.strategy.implementingClass),1),s(`) is `+l(t.reason)+` in this app, so it would not run here. A course's own navigators only plan correctly in the app that registers them. `,1)]),_:2},1024))),128)),(n(!0),p(h,null,u(v.value.warnings,t=>(n(),b(g,{key:t,type:`warning`,variant:`tonal`,density:`compact`,class:`mb-2`},{default:e(()=>[s(l(t),1)]),_:2},1024))),128)),(n(!0),p(h,null,u(E.value,t=>(n(),b(g,{key:t,type:`info`,variant:`tonal`,density:`compact`,class:`mb-2`},{default:e(()=>[s(l(t),1)]),_:2},1024))),128)),(n(!0),p(h,null,u(_(w),(i,g)=>(n(),p(`div`,{key:i.key},[f(`div`,jt,[f(`div`,Mt,[f(`span`,Nt,l(g+1),1),f(`span`,Pt,l(i.title),1)]),f(`div`,Ft,l(i.summary),1),i.key===`generate`?(n(!0),p(h,{key:0},u(v.value.generators,i=>(n(),p(`div`,{key:i.name,class:`sk-nav`},[f(`div`,It,[f(`span`,Lt,l(i.name),1),f(`code`,Rt,l(i.implementingClass),1),t(m,{size:`x-small`,variant:`outlined`,color:d[i.origin].color},{default:e(()=>[s(l(d[i.origin].label),1)]),_:2},1032,[`color`])]),i.strategy?.description?(n(),p(`div`,zt,l(i.strategy.description),1)):x(``,!0),a.stats?(n(),p(`div`,Bt,[genStat(i.name)?(n(),p(h,{key:0},[s(l(fmtNum(genStat(i.name).meanCards))+` candidates/run (`+l(fmtNum(genStat(i.name).meanNew))+` new, `+l(fmtNum(genStat(i.name).meanReview))+` review) · top score `+l(genStat(i.name).topScoreLast.toFixed(2))+` last, `+l(genStat(i.name).topScoreMax.toFixed(2))+` max `,1),a.stats.runsWithSelection>0?(n(),p(h,{key:0},[c[1]||(c[1]=s(` · `)),f(`strong`,null,l(genStat(i.name).selected),1),c[2]||(c[2]=s(` selected `)),genStat(i.name).firstAttempts>0?(n(),p(h,{key:0},[s(` · first attempts `+l(genStat(i.name).firstAttemptsCorrect)+`/`+l(genStat(i.name).firstAttempts)+` correct `,1),f(`span`,{class:r(_(accuracyClass)(accuracyOf(genStat(i.name))))},` (`+l(Math.round(100*accuracyOf(genStat(i.name))))+`%) `,3)],64)):x(``,!0)],64)):x(``,!0)],64)):(n(),p(`span`,Vt,`absent from these runs`))])):x(``,!0),prettyConfig(i.strategy?.serializedData)?(n(),p(`div`,Ht,[f(`a`,{class:`sk-config-link text-caption`,onClick:e=>toggleConfig(`g:${i.name}`)},l(D.value.has(`g:${i.name}`)?`Hide`:`Show`)+` config `,9,Ut),D.value.has(`g:${i.name}`)?(n(),p(`pre`,Wt,l(prettyConfig(i.strategy?.serializedData)),1)):x(``,!0)])):x(``,!0)]))),128)):i.key===`filter`?(n(),p(h,{key:1},[v.value.filters.length===0?(n(),p(`div`,Gt,`No filters.`)):x(``,!0),(n(!0),p(h,null,u(v.value.filters,i=>(n(),p(`div`,{key:i.name,class:`sk-nav`},[f(`div`,Kt,[f(`span`,qt,l(i.name),1),f(`code`,Jt,l(i.implementingClass),1),t(m,{size:`x-small`,variant:`outlined`,color:d[i.origin].color},{default:e(()=>[s(l(d[i.origin].label),1)]),_:2},1032,[`color`]),i.strategy?.learnable?(n(),b(m,{key:0,size:`x-small`,variant:`outlined`},{default:e(()=>c[3]||(c[3]=[s(`learnable weight`)])),_:1})):x(``,!0),t(m,{size:`x-small`,variant:`tonal`,color:filterKind(i).kind===`gate`?`deep-orange`:`blue-grey`,title:filterKind(i).help},{default:e(()=>[s(l(filterKind(i).label),1)]),_:2},1032,[`color`,`title`])]),i.strategy?.description?(n(),p(`div`,Yt,l(i.strategy.description),1)):i.strategy?x(``,!0):(n(),p(`div`,Xt,` Built in code; no strategy document. `)),a.stats?(n(),p(`div`,Zt,[filterStat(i.name)?(n(),p(h,{key:0},[f(`div`,Qt,[(n(!0),p(h,null,u(impactParts(filterStat(i.name)),e=>(n(),p(`div`,{key:e.key,class:r(`bg-${e.color}`),style:o({width:`${e.share*100}%`}),title:`${e.key}: ${e.count}`},null,14,$t))),128))]),f(`div`,en,[s(` over `+l(filterStat(i.name).runs)+` runs: `,1),(n(!0),p(h,null,u(impactParts(filterStat(i.name)),e=>(n(),p(`span`,{key:e.key,class:`mr-2`},[f(`span`,{class:r(`text-${e.color}`)},`●`,2),s(` `+l(e.key)+` `+l(fmtPct(e.share)),1)]))),128))])],64)):(n(),p(`span`,$,`absent from these runs`))])):x(``,!0),prettyConfig(i.strategy?.serializedData)?(n(),p(`div`,tn,[f(`a`,{class:`sk-config-link text-caption`,onClick:e=>toggleConfig(`f:${i.name}`)},l(D.value.has(`f:${i.name}`)?`Hide`:`Show`)+` config `,9,nn),D.value.has(`f:${i.name}`)?(n(),p(`pre`,rn,l(prettyConfig(i.strategy?.serializedData)),1)):x(``,!0)])):x(``,!0)]))),128))],64)):i.key===`regulate`?(n(),p(h,{key:2},[f(`div`,an,[f(`div`,on,[c[5]||(c[5]=f(`span`,{class:`font-weight-medium`},`Review mass`,-1)),t(m,{size:`x-small`,variant:`outlined`},{default:e(()=>c[4]||(c[4]=[s(`on review cards`)])),_:1})]),f(`div`,sn,` Each due review weighs its SRS urgency (0–1) times the filters' net effect on it. Above `+l(v.value.regulators.reviewMass.healthyMass)+` card-equivalents, every review is multiplied by ×`+l(v.value.regulators.reviewMass.rate)+` per `+l(v.value.regulators.reviewMass.healthyMass)+` in excess (uncapped). Reviews without an urgency weigh their score against `+l(v.value.regulators.reviewMass.referenceScore)+`. `,1),regStat(`review-mass`)?(n(),p(`div`,cn,l(regStatText(regStat(`review-mass`))),1)):x(``,!0)]),f(`div`,ln,[f(`div`,un,[c[7]||(c[7]=f(`span`,{class:`font-weight-medium`},`Intake`,-1)),t(m,{size:`x-small`,variant:`outlined`},{default:e(()=>c[6]||(c[6]=[s(`on new cards no gate penalized`)])),_:1})]),f(`div`,dn,` ×`+l(v.value.regulators.intake.rate)+` per `+l(v.value.regulators.intake.scaleHours)+` hours since a new card was last presented (uncapped). The clock stops while no eligible new card exists. `,1),regStat(`intake`)?(n(),p(`div`,fn,l(regStatText(regStat(`intake`))),1)):x(``,!0)]),a.stats&&a.stats.regulators.length===0?(n(),p(`div`,pn,` None of these runs recorded regulator readings (recorded from 0.2.29). `)):x(``,!0)],64)):i.key===`select`&&a.stats&&a.stats.runsWithSelection>0?(n(),p(`div`,mn,[s(l(a.stats.selectedUnattributed)+` selected card(s) had no generator: forced in by a hint's `,1),c[8]||(c[8]=f(`code`,null,`requireCards`,-1)),c[9]||(c[9]=s(`. `))])):x(``,!0)]),g<_(w).length-1?(n(),p(`div`,hn,[t(y,{size:`small`},{default:e(()=>c[10]||(c[10]=[s(`mdi-arrow-down`)])),_:1})])):x(``,!0)]))),128)),a.stats&&a.stats.runsWithSelection===0?(n(),p(`div`,gn,` None of these runs recorded which cards they selected (recorded from 0.2.28), so selection and first-attempt counts are not shown. `)):x(``,!0)])}}}),[[`__scopeId`,`data-v-24b6038f`]]),vn=c({__name:`LearnerDiagnostics`,props:{dataset:{},interpreters:{}},setup(r){let a=r,o=y(`sessions`),c=y(null),u=y(void 0),f=g(()=>pipelineRunStats(a.dataset));function openCard(e){u.value=void 0,o.value=`cards`,setTimeout(()=>u.value=e)}return d(()=>a.dataset,()=>{o.value=`sessions`,c.value=null,u.value=void 0}),(r,a)=>{let d=i(`v-tab`),m=i(`v-tabs`),g=i(`v-btn`);return n(),p(`div`,null,[t(m,{modelValue:o.value,"onUpdate:modelValue":a[0]||(a[0]=e=>o.value=e),density:`compact`,class:`mb-4`},{default:e(()=>[t(d,{value:`sessions`},{default:e(()=>[s(`Sessions (`+l(r.dataset.sessions.length)+`)`,1)]),_:1}),t(d,{value:`cards`},{default:e(()=>[s(`Cards (`+l(r.dataset.cardHistories.length)+`)`,1)]),_:1}),r.dataset.strategies?(n(),b(d,{key:0,value:`pipeline`},{default:e(()=>a[3]||(a[3]=[s(`Pipeline`)])),_:1})):x(``,!0)]),_:1},8,[`modelValue`]),o.value===`sessions`?(n(),p(h,{key:0},[c.value?(n(),p(h,{key:0},[t(g,{variant:`text`,size:`small`,"prepend-icon":`mdi-arrow-left`,class:`mb-2`,onClick:a[1]||(a[1]=e=>c.value=null)},{default:e(()=>a[4]||(a[4]=[s(` All sessions `)])),_:1}),t(dt,{dataset:r.dataset,"session-id":c.value,interpreters:r.interpreters,onOpenCard:openCard},null,8,[`dataset`,`session-id`,`interpreters`])],64)):(n(),b(Et,{key:1,dataset:r.dataset,interpreters:r.interpreters,onOpen:a[2]||(a[2]=e=>c.value=e)},null,8,[`dataset`,`interpreters`]))],64)):o.value===`cards`?(n(),b(ne,{key:1,dataset:r.dataset,interpreters:r.interpreters,focus:u.value},null,8,[`dataset`,`interpreters`,`focus`])):o.value===`pipeline`&&r.dataset.strategies?(n(),b(_n,{key:2,strategies:r.dataset.strategies,"course-id":r.dataset.courseId,stats:f.value,"stats-label":r.dataset.username},null,8,[`strategies`,`course-id`,`stats`,`stats-label`])):x(``,!0)])}}});export{fetchLearnerDump as a,cardDossiers as i,M as n,fromDump as o,U as r,vn as t};
|
|
4
|
-
//# sourceMappingURL=admin-ua4_RK2L.js.map
|