@vue-skuilder/platform-ui 0.1.35 → 0.1.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/dist/assets/{About-CYoEhp5l.js → About-BmmLOXxW.js} +2 -2
  2. package/dist/assets/{About-CYoEhp5l.js.map → About-BmmLOXxW.js.map} +1 -1
  3. package/dist/assets/AdminDashboard-CErUEgh7.js +2 -0
  4. package/dist/assets/{AdminDashboard-DO3Mo6_x.js.map → AdminDashboard-CErUEgh7.js.map} +1 -1
  5. package/dist/assets/{ClassroomCtrlPanel-DkBMgZJU.js → ClassroomCtrlPanel-CQlQ7U0H.js} +2 -2
  6. package/dist/assets/{ClassroomCtrlPanel-DkBMgZJU.js.map → ClassroomCtrlPanel-CQlQ7U0H.js.map} +1 -1
  7. package/dist/assets/{Classrooms-BRwjFo6r.js → Classrooms-CruLt4WS.js} +2 -2
  8. package/dist/assets/{Classrooms-BRwjFo6r.js.map → Classrooms-CruLt4WS.js.map} +1 -1
  9. package/dist/assets/{CourseRouter-BrofD0lZ.js → CourseRouter-CG2xLBSN.js} +2 -2
  10. package/dist/assets/{CourseRouter-BrofD0lZ.js.map → CourseRouter-CG2xLBSN.js.map} +1 -1
  11. package/dist/assets/CourseWare-BTFRjgBR-D750E7i0.css +1 -0
  12. package/dist/assets/{CourseWare-BTFRjgBR-ca7as3tn.js → CourseWare-BTFRjgBR-DzHuJePR.js} +3 -3
  13. package/dist/assets/{CourseWare-BTFRjgBR-ca7as3tn.js.map → CourseWare-BTFRjgBR-DzHuJePR.js.map} +1 -1
  14. package/dist/assets/{Courses-DyZS7Cle.js → Courses-DT_e7SM_.js} +2 -2
  15. package/dist/assets/{Courses-DyZS7Cle.js.map → Courses-DT_e7SM_.js.map} +1 -1
  16. package/dist/assets/EloModeration-CRi4H0dg.js +2 -0
  17. package/dist/assets/{EloModeration-B8hFSqwy.js.map → EloModeration-CRi4H0dg.js.map} +1 -1
  18. package/dist/assets/{JoinCode-DOLzN-p-.js → JoinCode-B5BsiUGo.js} +2 -2
  19. package/dist/assets/{JoinCode-DOLzN-p-.js.map → JoinCode-B5BsiUGo.js.map} +1 -1
  20. package/dist/assets/{NewCourseDialog-CjeJyyc3.js → NewCourseDialog-uYOn28uu.js} +2 -2
  21. package/dist/assets/{NewCourseDialog-CjeJyyc3.js.map → NewCourseDialog-uYOn28uu.js.map} +1 -1
  22. package/dist/assets/{ReleaseNotes-D9KhPUiR.js → ReleaseNotes-cmPGfYDr.js} +2 -2
  23. package/dist/assets/{ReleaseNotes-D9KhPUiR.js.map → ReleaseNotes-cmPGfYDr.js.map} +1 -1
  24. package/dist/assets/{RequestPasswordReset-CdzOhOXs.js → RequestPasswordReset-B6y-gK1D.js} +2 -2
  25. package/dist/assets/{RequestPasswordReset-CdzOhOXs.js.map → RequestPasswordReset-B6y-gK1D.js.map} +1 -1
  26. package/dist/assets/{ResetPassword-Cu62zkXq.js → ResetPassword-DujhlXIY.js} +2 -2
  27. package/dist/assets/{ResetPassword-Cu62zkXq.js.map → ResetPassword-DujhlXIY.js.map} +1 -1
  28. package/dist/assets/Study-BZVEhSPH.js +2 -0
  29. package/dist/assets/{Study-DYkoX3oR.js.map → Study-BZVEhSPH.js.map} +1 -1
  30. package/dist/assets/TagInformation-CSxHlSB_.js +2 -0
  31. package/dist/assets/{TagInformation-PbQDPmpb.js.map → TagInformation-CSxHlSB_.js.map} +1 -1
  32. package/dist/assets/{User-CIFHdgrZ.js → User-CPBeLVtj.js} +2 -2
  33. package/dist/assets/{User-CIFHdgrZ.js.map → User-CPBeLVtj.js.map} +1 -1
  34. package/dist/assets/{UserStats-DSyaFn7j.js → UserStats-D_0jGd_V.js} +2 -2
  35. package/dist/assets/{UserStats-DSyaFn7j.js.map → UserStats-D_0jGd_V.js.map} +1 -1
  36. package/dist/assets/{VerifyEmail-DWS9S3tV.js → VerifyEmail-DNWkeVaK.js} +2 -2
  37. package/dist/assets/{VerifyEmail-DWS9S3tV.js.map → VerifyEmail-DNWkeVaK.js.map} +1 -1
  38. package/dist/assets/chess-BbHATAzk-DB7z_kWx.css +1 -0
  39. package/dist/assets/{chess-BbHATAzk-DOhLaMTg.js → chess-BbHATAzk-QdPb2NKL.js} +2 -2
  40. package/dist/assets/chess-BbHATAzk-QdPb2NKL.js.map +1 -0
  41. package/dist/assets/chess-X1bmWmh3-BIJ2c9qj.js +1 -0
  42. package/dist/assets/{common-ui.es-ConLKYrk.js → common-ui.es-BKENyPWw.js} +4 -4
  43. package/dist/assets/{common-ui.es-ConLKYrk.js.map → common-ui.es-BKENyPWw.js.map} +1 -1
  44. package/dist/assets/common-ui.es-CiEkt-YW.js +1 -0
  45. package/dist/assets/{dist-DKtzwGWn.js → dist-DXR8aZcS.js} +34 -12
  46. package/dist/assets/dist-DXR8aZcS.js.map +1 -0
  47. package/dist/assets/{dist-Daq3OiEc.js → dist-DkO2jIq6.js} +3 -3
  48. package/dist/assets/dist-DkO2jIq6.js.map +1 -0
  49. package/dist/assets/dist-DybUdPG2.js +1 -0
  50. package/dist/assets/dist-ynKxKfpE.js +1 -0
  51. package/dist/assets/edit-ui.es-BELQ9vhV.js +1 -0
  52. package/dist/assets/{edit-ui.es-DNDxRLE6.js → edit-ui.es-BqKuNIaF.js} +2 -2
  53. package/dist/assets/{edit-ui.es-DNDxRLE6.js.map → edit-ui.es-BqKuNIaF.js.map} +1 -1
  54. package/dist/assets/{french-Dk7YG8Td-Bzxo0iir.js → french-Dk7YG8Td-D8yIv5X0.js} +2 -2
  55. package/dist/assets/{french-Dk7YG8Td-Bzxo0iir.js.map → french-Dk7YG8Td-D8yIv5X0.js.map} +1 -1
  56. package/dist/assets/french-evUMlbbq-DthHsC1k.js +1 -0
  57. package/dist/assets/index-C6oRctJ1.js +4 -0
  58. package/dist/assets/{index-B4di3I6o.js.map → index-C6oRctJ1.js.map} +1 -1
  59. package/dist/assets/math-B4HbgYf6-CZyvKZtp.css +1 -0
  60. package/dist/assets/{math-B4HbgYf6-DW4In8a5.js → math-B4HbgYf6-OCtLj5EC.js} +2 -2
  61. package/dist/assets/math-B4HbgYf6-OCtLj5EC.js.map +1 -0
  62. package/dist/assets/math-DYni7rRl-BYtdSUem.js +1 -0
  63. package/dist/assets/piano-BN5Btq91-CHcAB3LR.js +1 -0
  64. package/dist/assets/{piano-DF1g6yaX-C9jL6jej.js → piano-DF1g6yaX-5qaBtlIS.js} +2 -2
  65. package/dist/assets/piano-DF1g6yaX-5qaBtlIS.js.map +1 -0
  66. package/dist/assets/piano-DF1g6yaX-BLvDAgl1.css +1 -0
  67. package/dist/assets/{pitch-CgGJFkZ1-B4qiD-od.js → pitch-CgGJFkZ1-Dzk_IhJm.js} +2 -2
  68. package/dist/assets/{pitch-CgGJFkZ1-B4qiD-od.js.map → pitch-CgGJFkZ1-Dzk_IhJm.js.map} +1 -1
  69. package/dist/assets/pitch-Dn0iNqiS-BtLu6y7C.js +1 -0
  70. package/dist/assets/{server-RYtUROqF.js → server-BGaHYgjL.js} +2 -2
  71. package/dist/assets/{server-RYtUROqF.js.map → server-BGaHYgjL.js.map} +1 -1
  72. package/dist/assets/{sightsing-BFQ7HRig-gi-f6Gjx.js → sightsing-BFQ7HRig-C5c1duh9.js} +2 -2
  73. package/dist/assets/sightsing-BFQ7HRig-C5c1duh9.js.map +1 -0
  74. package/dist/assets/sightsing-BFQ7HRig-DkUGf5Yf.css +1 -0
  75. package/dist/assets/sightsing-CJX3k0Fd-BHdlbkRw.js +1 -0
  76. package/dist/assets/typing-BevtfWlp-B7ZMUAQJ.css +1 -0
  77. package/dist/assets/{typing-BevtfWlp-a9gMsGkx.js → typing-BevtfWlp-DGWRejzw.js} +2 -2
  78. package/dist/assets/typing-BevtfWlp-DGWRejzw.js.map +1 -0
  79. package/dist/assets/typing-k-ojjO7G-IjY29br_.js +1 -0
  80. package/dist/assets/{word-work-BOnRlZgd-DhZkqecP.js → word-work-BOnRlZgd-CWYZMFn6.js} +2 -2
  81. package/dist/assets/{word-work-BOnRlZgd-DhZkqecP.js.map → word-work-BOnRlZgd-CWYZMFn6.js.map} +1 -1
  82. package/dist/assets/word-work-Dd6tIKrt-DTcaMQ_N.js +1 -0
  83. package/dist/index.html +3 -3
  84. package/dist/sw.js +1 -1
  85. package/dist/sw.js.map +1 -1
  86. package/package.json +7 -7
  87. package/src/dev/Playtest.vue +254 -0
  88. package/dist/assets/AdminDashboard-DO3Mo6_x.js +0 -2
  89. package/dist/assets/EloModeration-B8hFSqwy.js +0 -2
  90. package/dist/assets/Study-DYkoX3oR.js +0 -2
  91. package/dist/assets/TagInformation-PbQDPmpb.js +0 -2
  92. package/dist/assets/chess-BbHATAzk-DOhLaMTg.js.map +0 -1
  93. package/dist/assets/chess-X1bmWmh3-C3HyTLIE.js +0 -1
  94. package/dist/assets/common-ui.es-BmXCkW19.js +0 -1
  95. package/dist/assets/dist-DKtzwGWn.js.map +0 -1
  96. package/dist/assets/dist-Daq3OiEc.js.map +0 -1
  97. package/dist/assets/dist-EH1RSdAN.js +0 -1
  98. package/dist/assets/dist-huY4PEit.js +0 -1
  99. package/dist/assets/edit-ui.es-C6Itr3tP.js +0 -1
  100. package/dist/assets/french-evUMlbbq-D88z2AaV.js +0 -1
  101. package/dist/assets/index-B4di3I6o.js +0 -4
  102. package/dist/assets/math-B4HbgYf6-DW4In8a5.js.map +0 -1
  103. package/dist/assets/math-DYni7rRl-BLRdDTmX.js +0 -1
  104. package/dist/assets/piano-BN5Btq91-D1ljSgCc.js +0 -1
  105. package/dist/assets/piano-DF1g6yaX-C9jL6jej.js.map +0 -1
  106. package/dist/assets/pitch-Dn0iNqiS-Vbm_Ue9p.js +0 -1
  107. package/dist/assets/sightsing-BFQ7HRig-gi-f6Gjx.js.map +0 -1
  108. package/dist/assets/sightsing-CJX3k0Fd-CLDxoSv_.js +0 -1
  109. package/dist/assets/typing-BevtfWlp-a9gMsGkx.js.map +0 -1
  110. package/dist/assets/typing-k-ojjO7G-CHVzRXi1.js +0 -1
  111. package/dist/assets/word-work-Dd6tIKrt-CVY1zayr.js +0 -1
@@ -0,0 +1 @@
1
+ #abc{width:100%;height:100%}
@@ -0,0 +1 @@
1
+ import"./vue.runtime.esm-bundler-C3q8JS9f.js";import"./common-ui.es-BKENyPWw.js";import"./dist-leWgtXBf.js";import"./MarkdownRenderer-DoVbFpA6-CvaBjTS8.js";import"./dist-DXR8aZcS.js";import"./CourseWare-BTFRjgBR-DzHuJePR.js";import{t as e}from"./sightsing-BFQ7HRig-C5c1duh9.js";export{e as default};
@@ -0,0 +1 @@
1
+ .letter-display[data-v-4ae4db54]{color:#333;text-transform:uppercase;background-color:#f8f9fa;border:2px solid #dee2e6;border-radius:8px;justify-content:center;align-items:center;width:80px;height:80px;margin:20px auto;font-family:monospace;font-size:48px;font-weight:700;display:flex;box-shadow:0 2px #dee2e6,0 3px 3px #0003}.letter-display.pressed[data-v-4ae4db54]{transform:translateY(2px);box-shadow:0 0 #dee2e6,0 1px 2px #0003}
@@ -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{m as d}from"./common-ui.es-ConLKYrk.js";import{S as f,T as p,n as m,y as h}from"./dist-leWgtXBf.js";import{S as g,x as _}from"./MarkdownRenderer-DoVbFpA6-CvaBjTS8.js";import{n as v,t as y,u as b}from"./CourseWare-BTFRjgBR-ca7as3tn.js";var x,S,C=n({name:`LetterQuestionView`,props:{data:{type:Array,required:!0},modifyDifficulty:{type:Number,required:!1,default:0}},setup(t,{emit:n}){let r=g(t,n,`LetterQuestionView`),i=_(r),a=c(null);i.question.value=new D(t.data);let o=s(()=>i.question.value),handleKeyPress=e=>{if(!o.value)return;let t=e.key.toLowerCase(),n=o.value.letter.toLowerCase();if(t===n){a.value?.classList.add(`pressed`);let handleKeyUp=e=>{e.key.toLowerCase()===n&&(a.value?.classList.remove(`pressed`),i.submitAnswer(t),window.removeEventListener(`keyup`,handleKeyUp))};window.addEventListener(`keyup`,handleKeyUp)}else i.submitAnswer(t)};return u(()=>{window.addEventListener(`keypress`,handleKeyPress)}),e(()=>{window.removeEventListener(`keypress`,handleKeyPress)}),{...i,...r,letterDisplay:a,question:o}}}),w={"data-viewable":`LetterQuestionView`};function _sfc_render(e,n,s,c,u,d){return t(),a(`div`,w,[e.question?(t(),a(o,{key:0},[n[0]||(n[0]=i(`p`,{class:`text-h5`},`Type this letter!`,-1)),i(`div`,{ref:`letterDisplay`,class:`letter-display`},r(e.question.letter),513)],64)):l(``,!0)])}var T=y(C,[[`render`,_sfc_render],[`__scopeId`,`data-v-4ae4db54`]]),E=b(function(){let e=[];for(let t=0;t<26;t++)e.push({letter:String.fromCharCode(65+t)});return e},`data`),D=(x=class TypeLetterQuestion extends d{constructor(e){var _super=(...e)=>(super(...e),h(this,`letter`,void 0),this);_super(e),this.letter=e[0].letter}evaluate(e,t){return{isCorrect:this.isCorrect(e),performance:this.displayedSkill(e,t)}}displayedSkill(e,t){if(this.isCorrect(e)){if(t<3e3)return 1;{let e=1-(t-3e3)/7e3*.75;return Math.max(.25,e)}}return 0}dataShapes(){return TypeLetterQuestion.dataShapes}views(){return TypeLetterQuestion.views}isCorrect(e){let t=e.toLowerCase()===this.letter.toLowerCase();return console.log(`singleLetter Q isCorrect: ${t}`),t}},h(x,`dataShapes`,[{name:m.TYPING_singleLetter,fields:[{name:`letter`,type:f.STRING,validator:{instructions:`Enter a single letter`,test:function(e){return!e||e.length!==1||!/[a-zA-Z]/.test(e)?{status:p.error,msg:`Input must be a single letter`}:{status:p.ok,msg:``}}}}]}]),h(x,`views`,[T]),h(x,`acceptsUserData`,!0),h(x,`seedData`,E()),x),data=function(){return[{gameLength:30,initialSpeed:2,acceleration:.1,spawnInterval:1}]},O=new v(`typing`,[D,(S=class FallingLettersQuestion extends d{constructor(e){var _super2=(...e)=>(super(...e),h(this,`gameLength`,void 0),h(this,`initialSpeed`,void 0),h(this,`acceleration`,void 0),h(this,`spawnInterval`,void 0),this);_super2(e),this.gameLength=e[0].gameLength,this.initialSpeed=e[0].initialSpeed,this.acceleration=e[0].acceleration,this.spawnInterval=e[0].spawnInterval}evaluate(e){return{isCorrect:this.isCorrect(e),performance:this.displayedSkill(e)}}displayedSkill(e){return e.win?1:e.percentage}dataShapes(){return FallingLettersQuestion.dataShapes}views(){return FallingLettersQuestion.views}isCorrect(e){return e.win}},h(S,`dataShapes`,[{name:m.TYPING_fallingLetters,fields:[{name:`gameLength`,type:f.NUMBER},{name:`initialSpeed`,type:f.NUMBER},{name:`acceleration`,type:f.NUMBER},{name:`spawnInterval`,type:f.NUMBER,validator:{instructions:`How often should a new letter spawn? (in seconds)`,test:e=>typeof e==`string`?parseFloat(e)>0?{status:p.ok,msg:``}:{status:p.error,msg:`Must be greater than 0`}:{status:p.error,msg:`Unexpected non-string input.`},placeholder:`1`}}]}]),h(S,`views`,[]),h(S,`acceptsUserData`,!0),h(S,`seedData`,data()),S)]);export{O as t};
2
- //# sourceMappingURL=typing-BevtfWlp-a9gMsGkx.js.map
1
+ import"./chunk-D6hFPZc3.js";import{B as e,H as t,T as n,Vt as r,_ as i,b as a,f as o,g as s,lt as c,y as l,z as u}from"./vue.runtime.esm-bundler-C3q8JS9f.js";import{m as d}from"./common-ui.es-BKENyPWw.js";import{S as f,T as p,n as m,y as h}from"./dist-leWgtXBf.js";import{S as g,x as _}from"./MarkdownRenderer-DoVbFpA6-CvaBjTS8.js";import{n as v,t as y,u as b}from"./CourseWare-BTFRjgBR-DzHuJePR.js";var x,S,C=n({name:`LetterQuestionView`,props:{data:{type:Array,required:!0},modifyDifficulty:{type:Number,required:!1,default:0}},setup(t,{emit:n}){let r=g(t,n,`LetterQuestionView`),i=_(r),a=c(null);i.question.value=new D(t.data);let o=s(()=>i.question.value),handleKeyPress=e=>{if(!o.value)return;let t=e.key.toLowerCase(),n=o.value.letter.toLowerCase();if(t===n){a.value?.classList.add(`pressed`);let handleKeyUp=e=>{e.key.toLowerCase()===n&&(a.value?.classList.remove(`pressed`),i.submitAnswer(t),window.removeEventListener(`keyup`,handleKeyUp))};window.addEventListener(`keyup`,handleKeyUp)}else i.submitAnswer(t)};return u(()=>{window.addEventListener(`keypress`,handleKeyPress)}),e(()=>{window.removeEventListener(`keypress`,handleKeyPress)}),{...i,...r,letterDisplay:a,question:o}}}),w={"data-viewable":`LetterQuestionView`};function _sfc_render(e,n,s,c,u,d){return t(),a(`div`,w,[e.question?(t(),a(o,{key:0},[n[0]||(n[0]=i(`p`,{class:`text-h5`},`Type this letter!`,-1)),i(`div`,{ref:`letterDisplay`,class:`letter-display`},r(e.question.letter),513)],64)):l(``,!0)])}var T=y(C,[[`render`,_sfc_render],[`__scopeId`,`data-v-4ae4db54`]]),E=b(function(){let e=[];for(let t=0;t<26;t++)e.push({letter:String.fromCharCode(65+t)});return e},`data`),D=(x=class TypeLetterQuestion extends d{constructor(e){var _super=(...e)=>(super(...e),h(this,`letter`,void 0),this);_super(e),this.letter=e[0].letter}evaluate(e,t){return{isCorrect:this.isCorrect(e),performance:this.displayedSkill(e,t)}}displayedSkill(e,t){if(this.isCorrect(e)){if(t<3e3)return 1;{let e=1-(t-3e3)/7e3*.75;return Math.max(.25,e)}}return 0}dataShapes(){return TypeLetterQuestion.dataShapes}views(){return TypeLetterQuestion.views}isCorrect(e){let t=e.toLowerCase()===this.letter.toLowerCase();return console.log(`singleLetter Q isCorrect: ${t}`),t}},h(x,`dataShapes`,[{name:m.TYPING_singleLetter,fields:[{name:`letter`,type:f.STRING,validator:{instructions:`Enter a single letter`,test:function(e){return!e||e.length!==1||!/[a-zA-Z]/.test(e)?{status:p.error,msg:`Input must be a single letter`}:{status:p.ok,msg:``}}}}]}]),h(x,`views`,[T]),h(x,`acceptsUserData`,!0),h(x,`seedData`,E()),x),data=function(){return[{gameLength:30,initialSpeed:2,acceleration:.1,spawnInterval:1}]},O=new v(`typing`,[D,(S=class FallingLettersQuestion extends d{constructor(e){var _super2=(...e)=>(super(...e),h(this,`gameLength`,void 0),h(this,`initialSpeed`,void 0),h(this,`acceleration`,void 0),h(this,`spawnInterval`,void 0),this);_super2(e),this.gameLength=e[0].gameLength,this.initialSpeed=e[0].initialSpeed,this.acceleration=e[0].acceleration,this.spawnInterval=e[0].spawnInterval}evaluate(e){return{isCorrect:this.isCorrect(e),performance:this.displayedSkill(e)}}displayedSkill(e){return e.win?1:e.percentage}dataShapes(){return FallingLettersQuestion.dataShapes}views(){return FallingLettersQuestion.views}isCorrect(e){return e.win}},h(S,`dataShapes`,[{name:m.TYPING_fallingLetters,fields:[{name:`gameLength`,type:f.NUMBER},{name:`initialSpeed`,type:f.NUMBER},{name:`acceleration`,type:f.NUMBER},{name:`spawnInterval`,type:f.NUMBER,validator:{instructions:`How often should a new letter spawn? (in seconds)`,test:e=>typeof e==`string`?parseFloat(e)>0?{status:p.ok,msg:``}:{status:p.error,msg:`Must be greater than 0`}:{status:p.error,msg:`Unexpected non-string input.`},placeholder:`1`}}]}]),h(S,`views`,[]),h(S,`acceptsUserData`,!0),h(S,`seedData`,data()),S)]);export{O as t};
2
+ //# sourceMappingURL=typing-BevtfWlp-DGWRejzw.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typing-BevtfWlp-DGWRejzw.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"./common-ui.es-BKENyPWw.js";import"./dist-leWgtXBf.js";import"./MarkdownRenderer-DoVbFpA6-CvaBjTS8.js";import"./dist-DXR8aZcS.js";import"./CourseWare-BTFRjgBR-DzHuJePR.js";import{t as e}from"./typing-BevtfWlp-DGWRejzw.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{m as f}from"./common-ui.es-ConLKYrk.js";import{S as p,d as m,n as h,y as g}from"./dist-leWgtXBf.js";import{C as _,S as v,s as y,x as b}from"./MarkdownRenderer-DoVbFpA6-CvaBjTS8.js";import{n as x,t as S}from"./CourseWare-BTFRjgBR-ca7as3tn.js";var C,w=i({name:`IdentifyVocab`,components:{AudioAutoPlayer:_,UserInputString:y},props:{data:{type:Array,required:!0},modifyDifficulty:{type:Number,required:!1,default:0}},setup(e,{emit:t}){let n=v(e,t,`IdentifyVocab`),r=b(n),i=u(``);r.question.value=new k(e.data);let a=l(()=>r.question.value),submit=()=>{a.value&&r.submitAnswer(i.value)};return{...n,...r,answer:i,question:a,submit}}}),T={"data-viewable":`IdentifyVocab`},E={key:0,class:`text-h6`};function _sfc_render(i,l,u,f,p,m){let h=r(`UserInputString`),g=r(`center`),_=r(`audio-auto-player`);return n(),s(`div`,T,[i.question?(n(),s(c,{key:0},[l[1]||(l[1]=o(`span`,{class:`text-h5`},` Spell the word: `,-1)),t(h,{modelValue:i.answer,"onUpdate:modelValue":l[0]||(l[0]=e=>i.answer=e)},null,8,[`modelValue`]),t(g,null,{default:e(()=>[i.priorAttempts?(n(),s(`span`,E,a(i.question.word),1)):d(``,!0)]),_:1}),t(g,null,{default:e(()=>[t(_,{src:[i.getURL(`WordAudio`),i.getURL(`SentenceAudio`),i.getURL(`WordAudio`)]},null,8,[`src`])]),_:1})],64)):d(``,!0)])}var D=S(w,[[`render`,_sfc_render]]),O=[{name:`Word`,type:p.STRING,validator:m.NonEmptyString},{name:`ExampleSentence`,type:p.STRING},{name:`WordAudio`,type:p.AUDIO},{name:`SentenceAudio`,type:p.AUDIO}],k=(C=class SpellingQuestion extends f{constructor(e){var _super=(...e)=>(super(...e),g(this,`word`,void 0),g(this,`sentence`,void 0),g(this,`audio_word`,void 0),g(this,`audio_sentence`,void 0),this);_super(e),this.word=e[0].Word,this.sentence=e[0].Sentence,this.audio_word=e[0].WordAudio,this.audio_sentence=e[0].SentenceAudio}isCorrect(e){return e===this.word}dataShapes(){return SpellingQuestion.dataShapes}views(){return SpellingQuestion.views}},g(C,`dataShapes`,[{fields:O,name:h.WORDWORK_Spelling}]),g(C,`views`,[D]),C),A=new x(`wordWork`,[k]);export{A as t};
2
- //# sourceMappingURL=word-work-BOnRlZgd-DhZkqecP.js.map
1
+ import"./chunk-D6hFPZc3.js";import{$ as e,C as t,H as n,K as r,T as i,Vt as a,_ as o,b as s,f as c,g as l,lt as u,y as d}from"./vue.runtime.esm-bundler-C3q8JS9f.js";import{m as f}from"./common-ui.es-BKENyPWw.js";import{S as p,d as m,n as h,y as g}from"./dist-leWgtXBf.js";import{C as _,S as v,s as y,x as b}from"./MarkdownRenderer-DoVbFpA6-CvaBjTS8.js";import{n as x,t as S}from"./CourseWare-BTFRjgBR-DzHuJePR.js";var C,w=i({name:`IdentifyVocab`,components:{AudioAutoPlayer:_,UserInputString:y},props:{data:{type:Array,required:!0},modifyDifficulty:{type:Number,required:!1,default:0}},setup(e,{emit:t}){let n=v(e,t,`IdentifyVocab`),r=b(n),i=u(``);r.question.value=new k(e.data);let a=l(()=>r.question.value),submit=()=>{a.value&&r.submitAnswer(i.value)};return{...n,...r,answer:i,question:a,submit}}}),T={"data-viewable":`IdentifyVocab`},E={key:0,class:`text-h6`};function _sfc_render(i,l,u,f,p,m){let h=r(`UserInputString`),g=r(`center`),_=r(`audio-auto-player`);return n(),s(`div`,T,[i.question?(n(),s(c,{key:0},[l[1]||(l[1]=o(`span`,{class:`text-h5`},` Spell the word: `,-1)),t(h,{modelValue:i.answer,"onUpdate:modelValue":l[0]||(l[0]=e=>i.answer=e)},null,8,[`modelValue`]),t(g,null,{default:e(()=>[i.priorAttempts?(n(),s(`span`,E,a(i.question.word),1)):d(``,!0)]),_:1}),t(g,null,{default:e(()=>[t(_,{src:[i.getURL(`WordAudio`),i.getURL(`SentenceAudio`),i.getURL(`WordAudio`)]},null,8,[`src`])]),_:1})],64)):d(``,!0)])}var D=S(w,[[`render`,_sfc_render]]),O=[{name:`Word`,type:p.STRING,validator:m.NonEmptyString},{name:`ExampleSentence`,type:p.STRING},{name:`WordAudio`,type:p.AUDIO},{name:`SentenceAudio`,type:p.AUDIO}],k=(C=class SpellingQuestion extends f{constructor(e){var _super=(...e)=>(super(...e),g(this,`word`,void 0),g(this,`sentence`,void 0),g(this,`audio_word`,void 0),g(this,`audio_sentence`,void 0),this);_super(e),this.word=e[0].Word,this.sentence=e[0].Sentence,this.audio_word=e[0].WordAudio,this.audio_sentence=e[0].SentenceAudio}isCorrect(e){return e===this.word}dataShapes(){return SpellingQuestion.dataShapes}views(){return SpellingQuestion.views}},g(C,`dataShapes`,[{fields:O,name:h.WORDWORK_Spelling}]),g(C,`views`,[D]),C),A=new x(`wordWork`,[k]);export{A as t};
2
+ //# sourceMappingURL=word-work-BOnRlZgd-CWYZMFn6.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"word-work-BOnRlZgd-DhZkqecP.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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"}
1
+ {"version":3,"file":"word-work-BOnRlZgd-CWYZMFn6.js","names":["c","m","g","v","_","u","r","d","l","a","n","o","s","p","f","i","e","b","x","h","y","t"],"sources":["../../../courseware/dist/word-work-BOnRlZgd.js"],"sourcesContent":["import \"./shapes-BQUVJdp5.js\";\nimport { r as e, t } from \"./CourseWare-BTFRjgBR.js\";\nimport { Fragment as n, computed as r, createCommentVNode as i, createElementBlock as a, createElementVNode as o, createVNode as s, defineComponent as c, openBlock as l, ref as u, resolveComponent as d, toDisplayString as f, withCtx as p } from \"vue\";\nimport { AudioAutoPlayer as m, Question as h, UserInputString as g, useQuestionView as _, useViewable as v } from \"@vue-skuilder/common-ui\";\nimport { DataShapeName as y, FieldType as b, Validators as x } from \"@vue-skuilder/common\";\n//#region src/word-work/questions/spelling/textBox.vue?vue&type=script&lang.ts\nvar S = c({\n\tname: \"IdentifyVocab\",\n\tcomponents: {\n\t\tAudioAutoPlayer: m,\n\t\tUserInputString: g\n\t},\n\tprops: {\n\t\tdata: {\n\t\t\ttype: Array,\n\t\t\trequired: !0\n\t\t},\n\t\tmodifyDifficulty: {\n\t\t\ttype: Number,\n\t\t\trequired: !1,\n\t\t\tdefault: 0\n\t\t}\n\t},\n\tsetup(e, { emit: t }) {\n\t\tlet n = v(e, t, \"IdentifyVocab\"), i = _(n), a = u(\"\");\n\t\ti.question.value = new D(e.data);\n\t\tlet o = r(() => i.question.value), submit = () => {\n\t\t\to.value && i.submitAnswer(a.value);\n\t\t};\n\t\treturn {\n\t\t\t...n,\n\t\t\t...i,\n\t\t\tanswer: a,\n\t\t\tquestion: o,\n\t\t\tsubmit\n\t\t};\n\t}\n}), C = { \"data-viewable\": \"IdentifyVocab\" }, w = {\n\tkey: 0,\n\tclass: \"text-h6\"\n};\nfunction _sfc_render(e, t, r, c, u, m) {\n\tlet h = d(\"UserInputString\"), g = d(\"center\"), _ = d(\"audio-auto-player\");\n\treturn l(), a(\"div\", C, [e.question ? (l(), a(n, { key: 0 }, [\n\t\tt[1] ||= o(\"span\", { class: \"text-h5\" }, \" Spell the word: \", -1),\n\t\ts(h, {\n\t\t\tmodelValue: e.answer,\n\t\t\t\"onUpdate:modelValue\": t[0] ||= (t) => e.answer = t\n\t\t}, null, 8, [\"modelValue\"]),\n\t\ts(g, null, {\n\t\t\tdefault: p(() => [e.priorAttempts ? (l(), a(\"span\", w, f(e.question.word), 1)) : i(\"\", !0)]),\n\t\t\t_: 1\n\t\t}),\n\t\ts(g, null, {\n\t\t\tdefault: p(() => [s(_, { src: [\n\t\t\t\te.getURL(\"WordAudio\"),\n\t\t\t\te.getURL(\"SentenceAudio\"),\n\t\t\t\te.getURL(\"WordAudio\")\n\t\t\t] }, null, 8, [\"src\"])]),\n\t\t\t_: 1\n\t\t})\n\t], 64)) : i(\"\", !0)]);\n}\nvar T = /* @__PURE__ */ e(S, [[\"render\", _sfc_render]]), E = [\n\t{\n\t\tname: \"Word\",\n\t\ttype: b.STRING,\n\t\tvalidator: x.NonEmptyString\n\t},\n\t{\n\t\tname: \"ExampleSentence\",\n\t\ttype: b.STRING\n\t},\n\t{\n\t\tname: \"WordAudio\",\n\t\ttype: b.AUDIO\n\t},\n\t{\n\t\tname: \"SentenceAudio\",\n\t\ttype: b.AUDIO\n\t}\n], D = class SpellingQuestion extends h {\n\tstatic dataShapes = [{\n\t\tfields: E,\n\t\tname: y.WORDWORK_Spelling\n\t}];\n\tstatic views = [T];\n\tword;\n\tsentence;\n\taudio_word;\n\taudio_sentence;\n\tconstructor(e) {\n\t\tsuper(e), this.word = e[0].Word, this.sentence = e[0].Sentence, this.audio_word = e[0].WordAudio, this.audio_sentence = e[0].SentenceAudio;\n\t}\n\tisCorrect(e) {\n\t\treturn e === this.word;\n\t}\n\tdataShapes() {\n\t\treturn SpellingQuestion.dataShapes;\n\t}\n\tviews() {\n\t\treturn SpellingQuestion.views;\n\t}\n}, O = new t(\"wordWork\", [D]);\n//#endregion\nexport { O as t };\n\n//# sourceMappingURL=word-work-BOnRlZgd.js.map"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ import"./vue.runtime.esm-bundler-C3q8JS9f.js";import"./common-ui.es-BKENyPWw.js";import"./dist-leWgtXBf.js";import"./MarkdownRenderer-DoVbFpA6-CvaBjTS8.js";import"./dist-DXR8aZcS.js";import"./CourseWare-BTFRjgBR-DzHuJePR.js";import{t as e}from"./word-work-BOnRlZgd-CWYZMFn6.js";export{e as default};
package/dist/index.html CHANGED
@@ -8,13 +8,13 @@
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-B4di3I6o.js"></script>
11
+ <script type="module" crossorigin src="/assets/index-C6oRctJ1.js"></script>
12
12
  <link rel="modulepreload" crossorigin href="/assets/chunk-D6hFPZc3.js">
13
13
  <link rel="modulepreload" crossorigin href="/assets/dist-leWgtXBf.js">
14
- <link rel="modulepreload" crossorigin href="/assets/dist-DKtzwGWn.js">
14
+ <link rel="modulepreload" crossorigin href="/assets/dist-DXR8aZcS.js">
15
15
  <link rel="modulepreload" crossorigin href="/assets/vue.runtime.esm-bundler-C3q8JS9f.js">
16
16
  <link rel="modulepreload" crossorigin href="/assets/MarkdownRenderer-DoVbFpA6-CvaBjTS8.js">
17
- <link rel="modulepreload" crossorigin href="/assets/common-ui.es-ConLKYrk.js">
17
+ <link rel="modulepreload" crossorigin href="/assets/common-ui.es-BKENyPWw.js">
18
18
  <link rel="stylesheet" crossorigin href="/assets/common-ui-BY2Ut5jf.css">
19
19
  <link rel="stylesheet" crossorigin href="/assets/index-CmEEzdUX.css">
20
20
  <link rel="manifest" href="/manifest.webmanifest"></head>
package/dist/sw.js CHANGED
@@ -1,2 +1,2 @@
1
- if(!self.define){let s,e={};const l=(l,i)=>(l=new URL(l+".js",i).href,e[l]||new Promise((e=>{if("document"in self){const s=document.createElement("script");s.src=l,s.onload=e,document.head.appendChild(s)}else s=l,importScripts(l),e()})).then((()=>{let s=e[l];if(!s)throw new Error(`Module ${l} didn’t register its module`);return s})));self.define=(i,r)=>{const o=s||("document"in self?document.currentScript.src:"")||location.href;if(e[o])return;let n={};const u=s=>l(s,o),t={module:{uri:o},exports:n,require:u};e[o]=Promise.all(i.map((s=>t[s]||u(s)))).then((s=>(r(...s),n)))}}define(["./workbox-1be04862"],(function(s){"use strict";self.skipWaiting(),s.clientsClaim(),s.precacheAndRoute([{url:"assets/About-CYoEhp5l.js",revision:null},{url:"assets/AdminDashboard-CWnC_vEI.css",revision:null},{url:"assets/AdminDashboard-DO3Mo6_x.js",revision:null},{url:"assets/chess-BbHATAzk-DOhLaMTg.js",revision:null},{url:"assets/chess-X1bmWmh3-C3HyTLIE.js",revision:null},{url:"assets/chunk-D6hFPZc3.js",revision:null},{url:"assets/ClassroomCtrlPanel-DkBMgZJU.js",revision:null},{url:"assets/Classrooms-BRwjFo6r.js",revision:null},{url:"assets/common-ui-BY2Ut5jf.css",revision:null},{url:"assets/common-ui.es-BmXCkW19.js",revision:null},{url:"assets/common-ui.es-ConLKYrk.js",revision:null},{url:"assets/CourseRouter-BrofD0lZ.js",revision:null},{url:"assets/CourseRouter-DvfjFpWl.css",revision:null},{url:"assets/Courses-CsGfVDf9.css",revision:null},{url:"assets/Courses-DyZS7Cle.js",revision:null},{url:"assets/CourseWare-BTFRjgBR-ca7as3tn.js",revision:null},{url:"assets/dist-Daq3OiEc.js",revision:null},{url:"assets/dist-DKtzwGWn.js",revision:null},{url:"assets/dist-EH1RSdAN.js",revision:null},{url:"assets/dist-huY4PEit.js",revision:null},{url:"assets/dist-leWgtXBf.js",revision:null},{url:"assets/edit-ui.es-C6Itr3tP.js",revision:null},{url:"assets/edit-ui.es-DNDxRLE6.js",revision:null},{url:"assets/EloModeration-B8hFSqwy.js",revision:null},{url:"assets/EloModeration-DgUqPPoO.css",revision:null},{url:"assets/french-Dk7YG8Td-Bzxo0iir.js",revision:null},{url:"assets/french-evUMlbbq-D88z2AaV.js",revision:null},{url:"assets/index-B4di3I6o.js",revision:null},{url:"assets/index-CmEEzdUX.css",revision:null},{url:"assets/JoinCode-DOLzN-p-.js",revision:null},{url:"assets/JoinCode-DPSfXf5z.css",revision:null},{url:"assets/MarkdownRenderer-DoVbFpA6-CvaBjTS8.js",revision:null},{url:"assets/MarkdownRenderer-DoVbFpA6-DZdbKtns.js",revision:null},{url:"assets/materialdesignicons-webfont-Dp5v-WZN.woff2",revision:null},{url:"assets/math-B4HbgYf6-DW4In8a5.js",revision:null},{url:"assets/math-DYni7rRl-BLRdDTmX.js",revision:null},{url:"assets/NewCourseDialog-CjeJyyc3.js",revision:null},{url:"assets/piano-BN5Btq91-D1ljSgCc.js",revision:null},{url:"assets/piano-DF1g6yaX-C9jL6jej.js",revision:null},{url:"assets/pitch-CgGJFkZ1-B4qiD-od.js",revision:null},{url:"assets/pitch-Dn0iNqiS-Vbm_Ue9p.js",revision:null},{url:"assets/ReleaseNotes-D9KhPUiR.js",revision:null},{url:"assets/RequestPasswordReset-CdzOhOXs.js",revision:null},{url:"assets/RequestPasswordReset-Du5-awJG.css",revision:null},{url:"assets/ResetPassword-Cu62zkXq.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-RYtUROqF.js",revision:null},{url:"assets/sightsing-BFQ7HRig-gi-f6Gjx.js",revision:null},{url:"assets/sightsing-CJX3k0Fd-CLDxoSv_.js",revision:null},{url:"assets/Study-DYkoX3oR.js",revision:null},{url:"assets/Study-R4LCAP7J.css",revision:null},{url:"assets/TagInformation-PbQDPmpb.js",revision:null},{url:"assets/typing-BevtfWlp-a9gMsGkx.js",revision:null},{url:"assets/typing-k-ojjO7G-CHVzRXi1.js",revision:null},{url:"assets/User-CIFHdgrZ.js",revision:null},{url:"assets/UserStats-DSyaFn7j.js",revision:null},{url:"assets/VerifyEmail-DWS9S3tV.js",revision:null},{url:"assets/vue.runtime.esm-bundler-C3q8JS9f.js",revision:null},{url:"assets/word-work-BOnRlZgd-DhZkqecP.js",revision:null},{url:"assets/word-work-Dd6tIKrt-CVY1zayr.js",revision:null},{url:"assets/workbox-window.prod.es5-DBwpKi3B.js",revision:null},{url:"favicon.ico",revision:"b71387b4508120b59615e43d5e103706"},{url:"img/icons/safari-pinned-tab.svg",revision:"f22d501a35a87d9f21701cb031f6ea17"},{url:"index.html",revision:"8722fd160e8da9c3e306bb37ce274c7d"},{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)).*$/]}))}));
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-BmmLOXxW.js",revision:null},{url:"assets/AdminDashboard-CErUEgh7.js",revision:null},{url:"assets/AdminDashboard-CWnC_vEI.css",revision:null},{url:"assets/chess-BbHATAzk-DB7z_kWx.css",revision:null},{url:"assets/chess-BbHATAzk-QdPb2NKL.js",revision:null},{url:"assets/chess-X1bmWmh3-BIJ2c9qj.js",revision:null},{url:"assets/chunk-D6hFPZc3.js",revision:null},{url:"assets/ClassroomCtrlPanel-CQlQ7U0H.js",revision:null},{url:"assets/Classrooms-CruLt4WS.js",revision:null},{url:"assets/common-ui-BY2Ut5jf.css",revision:null},{url:"assets/common-ui.es-BKENyPWw.js",revision:null},{url:"assets/common-ui.es-CiEkt-YW.js",revision:null},{url:"assets/CourseRouter-CG2xLBSN.js",revision:null},{url:"assets/CourseRouter-DvfjFpWl.css",revision:null},{url:"assets/Courses-CsGfVDf9.css",revision:null},{url:"assets/Courses-DT_e7SM_.js",revision:null},{url:"assets/CourseWare-BTFRjgBR-D750E7i0.css",revision:null},{url:"assets/CourseWare-BTFRjgBR-DzHuJePR.js",revision:null},{url:"assets/dist-DkO2jIq6.js",revision:null},{url:"assets/dist-DXR8aZcS.js",revision:null},{url:"assets/dist-DybUdPG2.js",revision:null},{url:"assets/dist-leWgtXBf.js",revision:null},{url:"assets/dist-ynKxKfpE.js",revision:null},{url:"assets/edit-ui.es-BELQ9vhV.js",revision:null},{url:"assets/edit-ui.es-BqKuNIaF.js",revision:null},{url:"assets/EloModeration-CRi4H0dg.js",revision:null},{url:"assets/EloModeration-DgUqPPoO.css",revision:null},{url:"assets/french-Dk7YG8Td-D8yIv5X0.js",revision:null},{url:"assets/french-evUMlbbq-DthHsC1k.js",revision:null},{url:"assets/index-C6oRctJ1.js",revision:null},{url:"assets/index-CmEEzdUX.css",revision:null},{url:"assets/JoinCode-B5BsiUGo.js",revision:null},{url:"assets/JoinCode-DPSfXf5z.css",revision:null},{url:"assets/MarkdownRenderer-DoVbFpA6-CvaBjTS8.js",revision:null},{url:"assets/MarkdownRenderer-DoVbFpA6-DZdbKtns.js",revision:null},{url:"assets/materialdesignicons-webfont-Dp5v-WZN.woff2",revision:null},{url:"assets/math-B4HbgYf6-CZyvKZtp.css",revision:null},{url:"assets/math-B4HbgYf6-OCtLj5EC.js",revision:null},{url:"assets/math-DYni7rRl-BYtdSUem.js",revision:null},{url:"assets/NewCourseDialog-uYOn28uu.js",revision:null},{url:"assets/piano-BN5Btq91-CHcAB3LR.js",revision:null},{url:"assets/piano-DF1g6yaX-5qaBtlIS.js",revision:null},{url:"assets/piano-DF1g6yaX-BLvDAgl1.css",revision:null},{url:"assets/pitch-CgGJFkZ1-Dzk_IhJm.js",revision:null},{url:"assets/pitch-Dn0iNqiS-BtLu6y7C.js",revision:null},{url:"assets/ReleaseNotes-cmPGfYDr.js",revision:null},{url:"assets/RequestPasswordReset-B6y-gK1D.js",revision:null},{url:"assets/RequestPasswordReset-Du5-awJG.css",revision:null},{url:"assets/ResetPassword-DujhlXIY.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-BGaHYgjL.js",revision:null},{url:"assets/sightsing-BFQ7HRig-C5c1duh9.js",revision:null},{url:"assets/sightsing-BFQ7HRig-DkUGf5Yf.css",revision:null},{url:"assets/sightsing-CJX3k0Fd-BHdlbkRw.js",revision:null},{url:"assets/Study-BZVEhSPH.js",revision:null},{url:"assets/Study-R4LCAP7J.css",revision:null},{url:"assets/TagInformation-CSxHlSB_.js",revision:null},{url:"assets/typing-BevtfWlp-B7ZMUAQJ.css",revision:null},{url:"assets/typing-BevtfWlp-DGWRejzw.js",revision:null},{url:"assets/typing-k-ojjO7G-IjY29br_.js",revision:null},{url:"assets/User-CPBeLVtj.js",revision:null},{url:"assets/UserStats-D_0jGd_V.js",revision:null},{url:"assets/VerifyEmail-DNWkeVaK.js",revision:null},{url:"assets/vue.runtime.esm-bundler-C3q8JS9f.js",revision:null},{url:"assets/word-work-BOnRlZgd-CWYZMFn6.js",revision:null},{url:"assets/word-work-Dd6tIKrt-DTcaMQ_N.js",revision:null},{url:"assets/workbox-window.prod.es5-DBwpKi3B.js",revision:null},{url:"favicon.ico",revision:"b71387b4508120b59615e43d5e103706"},{url:"img/icons/safari-pinned-tab.svg",revision:"f22d501a35a87d9f21701cb031f6ea17"},{url:"index.html",revision:"b30ba4bfeb5bd16ba9e08e9c692bd0bb"},{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/8748fa0583258fc5f50dc28dc3dff3d8/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-CYoEhp5l.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/AdminDashboard-CWnC_vEI.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/AdminDashboard-DO3Mo6_x.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/chess-BbHATAzk-DOhLaMTg.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/chess-X1bmWmh3-C3HyTLIE.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/chunk-D6hFPZc3.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ClassroomCtrlPanel-DkBMgZJU.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Classrooms-BRwjFo6r.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/common-ui-BY2Ut5jf.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/common-ui.es-BmXCkW19.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/common-ui.es-ConLKYrk.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/CourseRouter-BrofD0lZ.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-DyZS7Cle.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/CourseWare-BTFRjgBR-ca7as3tn.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dist-Daq3OiEc.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dist-DKtzwGWn.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dist-EH1RSdAN.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dist-huY4PEit.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dist-leWgtXBf.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/edit-ui.es-C6Itr3tP.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/edit-ui.es-DNDxRLE6.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/EloModeration-B8hFSqwy.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/EloModeration-DgUqPPoO.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/french-Dk7YG8Td-Bzxo0iir.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/french-evUMlbbq-D88z2AaV.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-B4di3I6o.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-CmEEzdUX.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/JoinCode-DOLzN-p-.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/JoinCode-DPSfXf5z.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/MarkdownRenderer-DoVbFpA6-CvaBjTS8.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/MarkdownRenderer-DoVbFpA6-DZdbKtns.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/materialdesignicons-webfont-Dp5v-WZN.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/math-B4HbgYf6-DW4In8a5.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/math-DYni7rRl-BLRdDTmX.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/NewCourseDialog-CjeJyyc3.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/piano-BN5Btq91-D1ljSgCc.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/piano-DF1g6yaX-C9jL6jej.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/pitch-CgGJFkZ1-B4qiD-od.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/pitch-Dn0iNqiS-Vbm_Ue9p.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ReleaseNotes-D9KhPUiR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/RequestPasswordReset-CdzOhOXs.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/RequestPasswordReset-Du5-awJG.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ResetPassword-Cu62zkXq.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-RYtUROqF.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/sightsing-BFQ7HRig-gi-f6Gjx.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/sightsing-CJX3k0Fd-CLDxoSv_.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Study-DYkoX3oR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Study-R4LCAP7J.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/TagInformation-PbQDPmpb.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/typing-BevtfWlp-a9gMsGkx.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/typing-k-ojjO7G-CHVzRXi1.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/User-CIFHdgrZ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/UserStats-DSyaFn7j.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/VerifyEmail-DWS9S3tV.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-DhZkqecP.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/word-work-Dd6tIKrt-CVY1zayr.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/workbox-window.prod.es5-DBwpKi3B.js\",\n \"revision\": null\n },\n {\n \"url\": \"favicon.ico\",\n \"revision\": \"b71387b4508120b59615e43d5e103706\"\n },\n {\n \"url\": \"img/icons/safari-pinned-tab.svg\",\n \"revision\": \"f22d501a35a87d9f21701cb031f6ea17\"\n },\n {\n \"url\": \"index.html\",\n \"revision\": \"8722fd160e8da9c3e306bb37ce274c7d\"\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,qCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,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,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,mCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,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,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,qCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,cACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,aACPC,SAAY,oCAEd,CACED,IAAO,gBACPC,SAAY,oCAEd,CACED,IAAO,aACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,qCAEb,CAAE,GACLC,EAAAA,wBAC6BC,EAAAC,cAAC,IAAIC,EAA+BC,gBAACC,0BAA2C,eAAgB,CAC3HC,UAAW,CAAC"}
1
+ {"version":3,"file":"sw.js","sources":["../../../../../../../tmp/e28b97a52c2841cbb7bc699bc64877ce/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-BmmLOXxW.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/AdminDashboard-CErUEgh7.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/AdminDashboard-CWnC_vEI.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/chess-BbHATAzk-DB7z_kWx.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/chess-BbHATAzk-QdPb2NKL.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/chess-X1bmWmh3-BIJ2c9qj.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/chunk-D6hFPZc3.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ClassroomCtrlPanel-CQlQ7U0H.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Classrooms-CruLt4WS.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/common-ui-BY2Ut5jf.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/common-ui.es-BKENyPWw.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/common-ui.es-CiEkt-YW.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/CourseRouter-CG2xLBSN.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-DT_e7SM_.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/CourseWare-BTFRjgBR-D750E7i0.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/CourseWare-BTFRjgBR-DzHuJePR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dist-DkO2jIq6.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dist-DXR8aZcS.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dist-DybUdPG2.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dist-leWgtXBf.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dist-ynKxKfpE.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/edit-ui.es-BELQ9vhV.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/edit-ui.es-BqKuNIaF.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/EloModeration-CRi4H0dg.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/EloModeration-DgUqPPoO.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/french-Dk7YG8Td-D8yIv5X0.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/french-evUMlbbq-DthHsC1k.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-C6oRctJ1.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-CmEEzdUX.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/JoinCode-B5BsiUGo.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/JoinCode-DPSfXf5z.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/MarkdownRenderer-DoVbFpA6-CvaBjTS8.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/MarkdownRenderer-DoVbFpA6-DZdbKtns.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/materialdesignicons-webfont-Dp5v-WZN.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/math-B4HbgYf6-CZyvKZtp.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/math-B4HbgYf6-OCtLj5EC.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/math-DYni7rRl-BYtdSUem.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/NewCourseDialog-uYOn28uu.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/piano-BN5Btq91-CHcAB3LR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/piano-DF1g6yaX-5qaBtlIS.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/piano-DF1g6yaX-BLvDAgl1.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/pitch-CgGJFkZ1-Dzk_IhJm.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/pitch-Dn0iNqiS-BtLu6y7C.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ReleaseNotes-cmPGfYDr.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/RequestPasswordReset-B6y-gK1D.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/RequestPasswordReset-Du5-awJG.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ResetPassword-DujhlXIY.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-BGaHYgjL.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/sightsing-BFQ7HRig-C5c1duh9.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/sightsing-BFQ7HRig-DkUGf5Yf.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/sightsing-CJX3k0Fd-BHdlbkRw.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Study-BZVEhSPH.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/Study-R4LCAP7J.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/TagInformation-CSxHlSB_.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/typing-BevtfWlp-B7ZMUAQJ.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/typing-BevtfWlp-DGWRejzw.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/typing-k-ojjO7G-IjY29br_.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/User-CPBeLVtj.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/UserStats-D_0jGd_V.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/VerifyEmail-DNWkeVaK.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-CWYZMFn6.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/word-work-Dd6tIKrt-DTcaMQ_N.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/workbox-window.prod.es5-DBwpKi3B.js\",\n \"revision\": null\n },\n {\n \"url\": \"favicon.ico\",\n \"revision\": \"b71387b4508120b59615e43d5e103706\"\n },\n {\n \"url\": \"img/icons/safari-pinned-tab.svg\",\n \"revision\": \"f22d501a35a87d9f21701cb031f6ea17\"\n },\n {\n \"url\": \"index.html\",\n \"revision\": \"b30ba4bfeb5bd16ba9e08e9c692bd0bb\"\n },\n {\n \"url\": \"manifest.json\",\n \"revision\": \"14a155103e25199244cdda503219c3e1\"\n },\n {\n \"url\": \"robots.txt\",\n \"revision\": \"b6216d61c03e6ce0c9aea6ca7808f7ca\"\n },\n {\n \"url\": \"manifest.webmanifest\",\n \"revision\": \"0ad80257ac95729a8c88588d23a396c1\"\n }\n], {});\nworkbox_precaching_cleanupOutdatedCaches();\nworkbox_routing_registerRoute(new workbox_routing_NavigationRoute(workbox_precaching_createHandlerBoundToURL(\"/index.html\"), {\n allowlist: [/^(?!\\/(couch|express)).*$/],\n \n}));\n\n\n\n\n\n\n"],"names":["self","skipWaiting","workbox_core_clientsClaim","workbox_precaching_precacheAndRoute","url","revision","workbox_precaching_cleanupOutdatedCaches","workbox","registerRoute","workbox_routing_NavigationRoute","NavigationRoute","workbox_precaching_createHandlerBoundToURL","allowlist"],"mappings":"0nBAwBAA,KAAKC,cAELC,EAAAA,eAQAC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,yCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,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,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,oCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,sCACPC,SAAY,MAEd,CACED,IAAO,4CACPC,SAAY,MAEd,CACED,IAAO,uCACPC,SAAY,MAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,yCACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,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,6CACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,cACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,aACPC,SAAY,oCAEd,CACED,IAAO,gBACPC,SAAY,oCAEd,CACED,IAAO,aACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,qCAEb,CAAE,GACLC,EAAAA,wBAC6BC,EAAAC,cAAC,IAAIC,EAA+BC,gBAACC,0BAA2C,eAAgB,CAC3HC,UAAW,CAAC"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "0.1.35",
6
+ "version": "0.1.38",
7
7
  "scripts": {
8
8
  "dev": "vite",
9
9
  "build": "vite build",
@@ -25,11 +25,11 @@
25
25
  "dependencies": {
26
26
  "@mdi/font": "^7.3.67",
27
27
  "@tonaljs/tonal": "^3.6.0",
28
- "@vue-skuilder/common": "0.1.35",
29
- "@vue-skuilder/common-ui": "0.1.35",
30
- "@vue-skuilder/courseware": "0.1.35",
31
- "@vue-skuilder/db": "0.1.35",
32
- "@vue-skuilder/edit-ui": "0.1.35",
28
+ "@vue-skuilder/common": "0.1.38",
29
+ "@vue-skuilder/common-ui": "0.1.38",
30
+ "@vue-skuilder/courseware": "0.1.38",
31
+ "@vue-skuilder/db": "0.1.38",
32
+ "@vue-skuilder/edit-ui": "0.1.38",
33
33
  "@vue/compiler-sfc": "^3.5.13",
34
34
  "abcjs": "^6.2.2",
35
35
  "canvas-confetti": "^1.9.3",
@@ -91,5 +91,5 @@
91
91
  "engines": {
92
92
  "node": ">=18"
93
93
  },
94
- "stableVersion": "0.1.35"
94
+ "stableVersion": "0.1.38"
95
95
  }
@@ -0,0 +1,254 @@
1
+ <template>
2
+ <div class="playtest pa-4">
3
+ <!-- Index mode: no question selected -->
4
+ <template v-if="!slug">
5
+ <h1 class="text-h4 mb-4">Playtest</h1>
6
+ <p class="text-body-2 mb-4">
7
+ Render any question type from <code>@vue-skuilder/courseware</code> with author-input
8
+ and/or self-generation. Dev-only route. Bypasses the <code>allCourseWare</code> registry —
9
+ unregistered prototypes (e.g. forks) are loadable here.
10
+ </p>
11
+ <div v-for="group in grouped" :key="group.domain" class="mb-4">
12
+ <h2 class="text-h6">{{ group.domain }}</h2>
13
+ <ul>
14
+ <li v-for="q in group.questions" :key="q.slug">
15
+ <router-link :to="`/play/${q.slug}`">{{ q.slug }}</router-link>
16
+ </li>
17
+ </ul>
18
+ </div>
19
+ </template>
20
+
21
+ <!-- Loading / error -->
22
+ <template v-else-if="loadError">
23
+ <router-link to="/play">&larr; back to index</router-link>
24
+ <v-alert type="error" class="mt-4">{{ loadError }}</v-alert>
25
+ </template>
26
+ <template v-else-if="!QClass">
27
+ <v-progress-circular indeterminate />
28
+ </template>
29
+
30
+ <!-- Question mode -->
31
+ <template v-else>
32
+ <div class="d-flex align-center mb-3">
33
+ <router-link to="/play">&larr; index</router-link>
34
+ <h1 class="text-h5 mx-4">{{ slug }}</h1>
35
+ <v-chip size="small" :color="QClass.acceptsUserData ? 'primary' : 'secondary'">
36
+ {{ QClass.acceptsUserData ? 'authored' : 'self-gen' }}
37
+ </v-chip>
38
+ <v-spacer />
39
+ <v-btn size="small" color="primary" @click="reroll">Reroll</v-btn>
40
+ </div>
41
+
42
+ <v-row>
43
+ <!-- Author input + DataInputForm's own preview -->
44
+ <v-col v-if="dataShape" cols="12" lg="6">
45
+ <h3 class="text-subtitle-1 mb-2">Author input</h3>
46
+ <DataInputForm
47
+ :key="`form-${rerollKey}`"
48
+ :data-shape="dataShape"
49
+ :preview-component="QClass"
50
+ :course-cfg="fakeCourseCfg"
51
+ />
52
+ </v-col>
53
+
54
+ <!-- Direct CardViewer + response log -->
55
+ <v-col :cols="dataShape ? 12 : 12" :lg="dataShape ? 6 : 12">
56
+ <h3 class="text-subtitle-1 mb-2">Render &amp; capture</h3>
57
+ <div v-if="renderData">
58
+ <CardViewer
59
+ :key="`view-${rerollKey}`"
60
+ :view="QClass.views[0]"
61
+ :data="renderData"
62
+ card_id="playtest"
63
+ course_id="playtest"
64
+ @emit-response="onResponse"
65
+ />
66
+ </div>
67
+ <v-alert v-else type="info" density="compact">
68
+ Fill in the author form on the left to populate render data.
69
+ </v-alert>
70
+
71
+ <h3 class="text-subtitle-1 mt-4 mb-2">
72
+ Response log ({{ responseLog.length }})
73
+ <v-btn v-if="responseLog.length" size="x-small" variant="text" @click="responseLog = []">
74
+ clear
75
+ </v-btn>
76
+ </h3>
77
+ <pre v-if="responseLog.length" class="response-log">{{
78
+ JSON.stringify(responseLog, null, 2)
79
+ }}</pre>
80
+ <div v-else class="text-caption text-grey">No responses captured yet.</div>
81
+ </v-col>
82
+ </v-row>
83
+ </template>
84
+ </div>
85
+ </template>
86
+
87
+ <script lang="ts">
88
+ import { defineComponent } from 'vue';
89
+ import { useRoute } from 'vue-router';
90
+ import { DataInputForm, useDataInputFormStore } from '@vue-skuilder/edit-ui';
91
+ import { CardViewer, Question } from '@vue-skuilder/common-ui';
92
+ import type { DataShape, CourseConfig, ViewData } from '@vue-skuilder/common';
93
+ import type { CardRecord } from '@vue-skuilder/db';
94
+
95
+ type QClass = typeof Question;
96
+
97
+ // Discover every question module under @vue-skuilder/courseware.
98
+ // import.meta.glob is resolved at build time; in dev these are real
99
+ // filesystem paths across the yarn workspace.
100
+ const questionModules = import.meta.glob('../../../courseware/src/**/questions/**/index.ts');
101
+
102
+ const PREFIX = '../../../courseware/src/';
103
+ const SUFFIX = '/index.ts';
104
+
105
+ function pathToSlug(path: string): string {
106
+ // path: ../../../courseware/src/chess/questions/puzzle/index.ts
107
+ // slug: chess/puzzle
108
+ return path.slice(PREFIX.length, -SUFFIX.length).replace('/questions/', '/');
109
+ }
110
+
111
+ function slugToPath(slug: string): string {
112
+ // slug: chess/puzzle → path: chess/questions/puzzle
113
+ const [domain, ...rest] = slug.split('/');
114
+ return `${PREFIX}${domain}/questions/${rest.join('/')}${SUFFIX}`;
115
+ }
116
+
117
+ const allSlugs = Object.keys(questionModules).map(pathToSlug).sort();
118
+
119
+ const groupedSlugs = allSlugs.reduce<{ domain: string; questions: { slug: string }[] }[]>(
120
+ (acc, slug) => {
121
+ const domain = slug.split('/')[0];
122
+ let group = acc.find((g) => g.domain === domain);
123
+ if (!group) {
124
+ group = { domain, questions: [] };
125
+ acc.push(group);
126
+ }
127
+ group.questions.push({ slug });
128
+ return acc;
129
+ },
130
+ []
131
+ );
132
+
133
+ const fakeCourseCfg: CourseConfig = {
134
+ courseID: 'playtest',
135
+ name: 'Playtest',
136
+ description: 'Dev playtest harness — not a real course.',
137
+ admins: ['admin'],
138
+ creator: 'admin',
139
+ deleted: false,
140
+ moderators: [],
141
+ public: false,
142
+ disambiguator: 'playtest',
143
+ questionTypes: [],
144
+ dataShapes: [],
145
+ };
146
+
147
+ export default defineComponent({
148
+ name: 'PlaytestViewer',
149
+ components: { DataInputForm, CardViewer },
150
+
151
+ setup() {
152
+ return { route: useRoute(), dataInputFormStore: useDataInputFormStore() };
153
+ },
154
+
155
+ data() {
156
+ return {
157
+ QClass: null as QClass | null,
158
+ dataShape: null as DataShape | null,
159
+ loadError: '' as string,
160
+ rerollKey: 0,
161
+ responseLog: [] as CardRecord[],
162
+ grouped: groupedSlugs,
163
+ fakeCourseCfg,
164
+ };
165
+ },
166
+
167
+ computed: {
168
+ slug(): string {
169
+ const raw = this.route.params.pathMatch;
170
+ const s = Array.isArray(raw) ? raw.join('/') : raw || '';
171
+ return s.replace(/^\/+|\/+$/g, '');
172
+ },
173
+
174
+ /**
175
+ * Reactive view-data assembled from the DataInputForm store.
176
+ *
177
+ * Returns `[previewInput]` when the form's validation passes — this is
178
+ * the same shape `card-browser` consumes inside DataInputForm, so the
179
+ * two panels stay in sync. If the dataShape has no fields (rare;
180
+ * fully self-generating types), fall back to `[{}]` so the view can
181
+ * still mount.
182
+ */
183
+ renderData(): ViewData[] | null {
184
+ if (!this.dataShape) return null;
185
+ if (this.dataShape.fields.length === 0) return [{}];
186
+ const preview = this.dataInputFormStore.dataInputForm.fieldStore.getPreview;
187
+ if (!preview || Object.keys(preview).length === 0) return null;
188
+ return [preview as ViewData];
189
+ },
190
+ },
191
+
192
+ watch: {
193
+ slug: {
194
+ immediate: true,
195
+ handler(s: string) {
196
+ this.load(s);
197
+ },
198
+ },
199
+ },
200
+
201
+ methods: {
202
+ async load(slug: string) {
203
+ this.QClass = null;
204
+ this.dataShape = null;
205
+ this.loadError = '';
206
+ this.responseLog = [];
207
+ if (!slug) return;
208
+
209
+ const path = slugToPath(slug);
210
+ const loader = questionModules[path];
211
+ if (!loader) {
212
+ this.loadError = `No module at ${path}. Known slugs: ${allSlugs.join(', ')}`;
213
+ return;
214
+ }
215
+
216
+ try {
217
+ const mod = (await loader()) as Record<string, unknown>;
218
+ const found = Object.values(mod).find(
219
+ (v) => typeof v === 'function' && (v as { prototype: unknown }).prototype instanceof Question
220
+ ) as QClass | undefined;
221
+ if (!found) {
222
+ this.loadError = `Module ${path} exports no Question subclass.`;
223
+ return;
224
+ }
225
+ this.QClass = found;
226
+ this.dataShape = found.dataShapes?.[0] ?? null;
227
+ } catch (e) {
228
+ this.loadError = `Failed to load ${path}: ${(e as Error).message}`;
229
+ }
230
+ },
231
+
232
+ reroll() {
233
+ this.rerollKey++;
234
+ this.responseLog = [];
235
+ },
236
+
237
+ onResponse(r: CardRecord) {
238
+ this.responseLog.push(r);
239
+ },
240
+ },
241
+ });
242
+ </script>
243
+
244
+ <style scoped>
245
+ .response-log {
246
+ background: rgba(0, 0, 0, 0.04);
247
+ padding: 8px;
248
+ border-radius: 4px;
249
+ font-size: 12px;
250
+ max-height: 320px;
251
+ overflow: auto;
252
+ white-space: pre-wrap;
253
+ }
254
+ </style>
@@ -1,2 +0,0 @@
1
- import"./chunk-D6hFPZc3.js";import{$ as e,C as t,H as n,K as r,S as i,T as a,Vt as o,_ as s,b as c,v as l,y as u}from"./vue.runtime.esm-bundler-C3q8JS9f.js";import{B as d,T as f,b as p,c as m,p as h}from"./common-ui.es-ConLKYrk.js";import"./dist-leWgtXBf.js";import"./MarkdownRenderer-DoVbFpA6-CvaBjTS8.js";import{k as g,n as _}from"./dist-DKtzwGWn.js";import{t as v}from"./index-B4di3I6o.js";import{t as y}from"./dist-Daq3OiEc.js";var b=a({name:`AdminDashboard`,components:{CardSearch:m,CardSearchResults:h,CardHistoryViewer:p,CardLoader:d},data(){return{query:``,selectedCard:null,userId:``,userDB:null,dataLayer:null,adminDB:null,selectedUserId:``,selectedUserReader:null,selectedCourseId:null,userOptions:[],courseOptions:[]}},async created(){this.userDB=await f(),this.userId=this.userDB.getUsername(),this.dataLayer=await g(),this.adminDB=this.dataLayer.getAdminDB(),await this.loadUsers(),await this.loadCourses()},methods:{async loadUsers(){try{this.userOptions=(await this.adminDB.getUsers()).filter(e=>e.name&&!e.name.startsWith(`Guest_`)).map(e=>({label:e.name||`Unknown User`,value:e.name||``})).filter(e=>e.value!==``)}catch(e){console.error(`Failed to load users:`,e)}},async onUserSelected(e){if(!e){this.selectedUserReader=null;return}try{this.selectedUserReader=await this.dataLayer.createUserReaderForUser(e)}catch(e){console.error(`Failed to create user reader:`,e),this.selectedUserReader=null}},onSearch(e){this.query=e},onCardSelected(e){this.selectedCard=e},async loadCourses(){try{this.courseOptions=(await _.allCourseWare()).filter(e=>e._id).map(e=>{let t=e.name&&e.name.trim(),n,r;return t&&t!==e._id&&t!==``?(n=t,r=t.toLowerCase()):(n=e._id,r=e._id.toLowerCase()),{label:`📚 ${n}`,value:e._id,sortKey:r}}).sort((e,t)=>e.sortKey.localeCompare(t.sortKey)),console.log(`Loaded ${this.courseOptions.length} courses for filtering (lightweight mode)`)}catch(e){console.error(`Failed to load courses (lightweight):`,e),await this.loadCoursesExpensive()}},async loadCoursesExpensive(){try{console.log(`Using expensive course loading (full configs)...`),this.courseOptions=(await this.dataLayer.getAdminDB().getCourses()).filter(e=>e.courseID).map(e=>{let t=e.name&&e.name.trim(),n=e.creator?` (${e.creator})`:``,r,i;return t&&t!==e.courseID?(r=t,i=t.toLowerCase()):(r=e.courseID,i=e.courseID.toLowerCase()),{label:`${e.public?`🌐`:`🔒`} ${r}${n}`,value:e.courseID,sortKey:i}}).sort((e,t)=>e.sortKey.localeCompare(t.sortKey)),console.log(`Loaded ${this.courseOptions.length} courses for filtering (expensive mode)`)}catch(e){console.error(`Failed to load courses (expensive):`,e),this.loadCoursesBasic()}},async loadCoursesBasic(){try{console.log(`Using fallback course loading (IDs only)`),this.courseOptions=[{label:`⚠️ Course names not available - using IDs only`,value:``}]}catch(e){console.error(`Failed to load basic courses:`,e)}},onCourseFilterChanged(){this.query},getCourseNameById(e){let t=this.courseOptions.find(t=>t.value===e);return t?t.label:e},getSelectedCourseDetails(){return this.selectedCourseId?`ID: ${this.selectedCourseId}`:``},viewLookup(e){return y.getView(e)}}}),x={class:`admin-dashboard`},S={key:0,class:`mt-2`},C={key:0,class:`text-caption text-grey-darken-1`};function _sfc_render(a,d,f,p,m,h){let g=r(`v-card-title`),_=r(`v-select`),v=r(`v-chip`),y=r(`v-card-text`),b=r(`v-card`),w=r(`card-search`),T=r(`card-search-results`),E=r(`v-col`),D=r(`card-loader`),O=r(`v-row`),k=r(`card-history-viewer`);return n(),c(`div`,x,[d[4]||(d[4]=s(`h1`,null,`Admin Dashboard`,-1)),t(b,{class:`mb-4`},{default:e(()=>[t(g,null,{default:e(()=>d[2]||(d[2]=[i(`User Selection`)])),_:1}),t(y,null,{default:e(()=>[t(_,{modelValue:a.selectedUserId,"onUpdate:modelValue":[d[0]||(d[0]=e=>a.selectedUserId=e),a.onUserSelected],items:a.userOptions,"item-title":`label`,"item-value":`value`,label:`Select User`},null,8,[`modelValue`,`items`,`onUpdate:modelValue`]),a.selectedUserId?(n(),l(v,{key:0,color:`primary`,class:`mt-2`},{default:e(()=>[i(` Viewing data for: `+o(a.selectedUserId),1)]),_:1})):u(``,!0)]),_:1})]),_:1}),t(b,{class:`mb-4`},{default:e(()=>[t(g,null,{default:e(()=>d[3]||(d[3]=[i(`Search Filters`)])),_:1}),t(y,null,{default:e(()=>[t(_,{modelValue:a.selectedCourseId,"onUpdate:modelValue":[d[1]||(d[1]=e=>a.selectedCourseId=e),a.onCourseFilterChanged],items:a.courseOptions,"item-title":`label`,"item-value":`value`,label:`Filter by Course (optional)`,clearable:``},null,8,[`modelValue`,`items`,`onUpdate:modelValue`]),a.selectedCourseId?(n(),c(`div`,S,[t(v,{color:`info`,class:`mb-1`},{default:e(()=>[i(` 🎯 `+o(a.getCourseNameById(a.selectedCourseId)),1)]),_:1}),a.getSelectedCourseDetails()?(n(),c(`div`,C,o(a.getSelectedCourseDetails()),1)):u(``,!0)])):(n(),l(v,{key:1,color:`warning`,class:`mt-2`},{default:e(()=>[i(` ⚠️ Searching ALL `+o(a.courseOptions.length)+` courses (may be slow) `,1)]),_:1}))]),_:1})]),_:1}),t(w,{onSearch:a.onSearch},null,8,[`onSearch`]),t(O,null,{default:e(()=>[t(E,{cols:`6`},{default:e(()=>[a.query?(n(),l(T,{key:0,query:a.query,"data-layer":a.dataLayer,"course-filter":a.selectedCourseId,onCardSelected:a.onCardSelected},null,8,[`query`,`data-layer`,`course-filter`,`onCardSelected`])):u(``,!0)]),_:1}),t(E,{cols:`6`},{default:e(()=>[a.selectedCard?(n(),l(D,{key:0,qualified_id:{courseID:a.selectedCard.courseId,cardID:a.selectedCard.cardId},"view-lookup":a.viewLookup},null,8,[`qualified_id`,`view-lookup`])):u(``,!0)]),_:1})]),_:1}),a.selectedCard&&a.selectedUserReader?(n(),l(k,{key:0,"card-id":a.selectedCard.cardId,"course-id":a.selectedCard.courseId,"user-id":a.selectedUserId,"user-d-b":a.selectedUserReader},null,8,[`card-id`,`course-id`,`user-id`,`user-d-b`])):u(``,!0)])}var w=v(b,[[`render`,_sfc_render],[`__scopeId`,`data-v-7409c94e`]]);export{w as default};
2
- //# sourceMappingURL=AdminDashboard-DO3Mo6_x.js.map
@@ -1,2 +0,0 @@
1
- import"./chunk-D6hFPZc3.js";import{$ as e,C as t,H as n,K as r,S as i,T as a,_ as o,v as s,y as c}from"./vue.runtime.esm-bundler-C3q8JS9f.js";import{B as l}from"./common-ui.es-ConLKYrk.js";import{m as u}from"./dist-leWgtXBf.js";import"./MarkdownRenderer-DoVbFpA6-CvaBjTS8.js";import{k as d}from"./dist-DKtzwGWn.js";import{t as f}from"./index-B4di3I6o.js";import{t as p}from"./dist-Daq3OiEc.js";var m=a({name:`ELOModerator`,components:{CardLoader:l},props:{courseId:{type:String,required:!0}},data(){return{courseDB:null,updatePending:!0,courseConfig:null,cards:[],id1:null,id2:null,elo1:null,elo2:null,viewLookup:p.getView}},async created(){this.courseDB=d().getCourseDB(this.courseId),this.courseConfig=await this.courseDB.getCourseConfig(),await this.getNewCards()},methods:{vote(e){if(!this.elo1||!this.elo2)return;let t=u(this.elo1,this.elo2,e===`a`?1:0,{globalOnly:!0});this.courseDB.updateCardElo(this.cards[0].cardId,t.userElo),this.courseDB.updateCardElo(this.cards[1].cardId,t.cardElo),this.getNewCards()},async getNewCards(){this.courseDB&&(this.updatePending=!0,this.cards=await this.courseDB.getInexperiencedCards(),this.id1=null,this.id2=null,this.id1={courseID:this.courseId,cardID:this.cards[0].cardId},this.id2={courseID:this.courseId,cardID:this.cards[1].cardId},this.elo1=this.cards[0].elo,this.elo2=this.cards[1].elo,this.updatePending=!1)}}});function _sfc_render(a,l,u,d,f,p){let m=r(`v-col`),h=r(`v-row`),g=r(`v-icon`),_=r(`v-btn`),v=r(`card-loader`),y=r(`v-container`);return a.updatePending?c(``,!0):(n(),s(y,{key:0},{default:e(()=>[t(h,null,{default:e(()=>[t(m,{cols:`12`},{default:e(()=>l[2]||(l[2]=[o(`h1`,null,[i(`Which seems `),o(`em`,null,`harder`),i(`?`)],-1)])),_:1})]),_:1}),t(h,null,{default:e(()=>[t(m,null,{default:e(()=>[t(_,{color:`success`,class:`ma-5`,onClick:l[0]||(l[0]=e=>a.vote(`a`))},{default:e(()=>[t(g,null,{default:e(()=>l[3]||(l[3]=[i(`mdi-check`)])),_:1})]),_:1}),t(v,{class:`ma-2`,qualified_id:a.id1,"view-lookup":a.viewLookup},null,8,[`qualified_id`,`view-lookup`])]),_:1})]),_:1}),t(h,null,{default:e(()=>[t(m,null,{default:e(()=>[t(_,{color:`success`,class:`ma-5`,onClick:l[1]||(l[1]=e=>a.vote(`b`))},{default:e(()=>[t(g,null,{default:e(()=>l[4]||(l[4]=[i(`mdi-check`)])),_:1})]),_:1}),t(v,{class:`ma-2`,qualified_id:a.id2,"view-lookup":a.viewLookup},null,8,[`qualified_id`,`view-lookup`])]),_:1})]),_:1})]),_:1}))}var h=f(m,[[`render`,_sfc_render],[`__scopeId`,`data-v-df68b8b6`]]);export{h as default};
2
- //# sourceMappingURL=EloModeration-B8hFSqwy.js.map
@@ -1,2 +0,0 @@
1
- import{i as e}from"./chunk-D6hFPZc3.js";import{$ as t,C as n,H as r,It as i,K as a,S as o,T as s,Vt as c,W as l,_ as u,b as d,f,v as p,y as m}from"./vue.runtime.esm-bundler-C3q8JS9f.js";import{I as h,M as g,T as _,o as v,z as y}from"./common-ui.es-ConLKYrk.js";import{o as b}from"./dist-leWgtXBf.js";import{n as x}from"./MarkdownRenderer-DoVbFpA6-CvaBjTS8.js";import{k as S}from"./dist-DKtzwGWn.js";import{t as C}from"./index-B4di3I6o.js";import{t as w}from"./dist-Daq3OiEc.js";import{i as T}from"./edit-ui.es-DNDxRLE6.js";var E=s({name:`SessionConfiguration`,components:{SkMouseTrapToolTip:v,CourseTagFilterWidget:y},props:{initialTimeLimit:{type:Number,required:!0,default:5}},emits:[`initStudySession`],data(){return{registeredHotkeys:[],allSelected:!0,activeCourses:[],activeClasses:[],hasRegistrations:!0,user:null,timeLimit:this.initialTimeLimit,courseLoadError:!1,classroomLoadError:!1,expandedFilters:{}}},computed:{hasSelectedSources(){return this.activeCourses.some(e=>e.selected)||this.activeClasses.some(e=>e.selected)},hasAnyActiveFilter(){return this.activeCourses.some(e=>e.selected&&this.hasActiveTagFilter(e))},activeFilterCount(){return this.activeCourses.filter(e=>e.selected&&this.hasActiveTagFilter(e)).length}},watch:{timeLimit:{handler(){this.timeLimit<=0&&(this.timeLimit=1)}}},beforeUnmount(){this.registeredHotkeys&&this.registeredHotkeys.forEach(e=>{x.removeBinding(e)})},async created(){this.user=await _(),this.timeLimit=this.initialTimeLimit,this.setHotkeys();let[e,t]=await Promise.allSettled([this.getActiveCourses(),this.getActiveClassrooms()]);e.status===`rejected`&&(console.error(`Failed to load courses:`,e.reason),this.courseLoadError=!0),t.status===`rejected`&&(console.error(`Failed to load classrooms:`,t.reason),this.classroomLoadError=!0),this.activeCourses.length===0&&this.activeClasses.length===0&&!this.courseLoadError&&!this.classroomLoadError&&(this.hasRegistrations=!1)},mounted(){document.getElementById(`SelectAll`)?.focus()},unmounted(){this.registeredHotkeys&&this.registeredHotkeys.forEach(e=>{x.removeBinding(e)})},methods:{inc(){this.timeLimit+=1,console.log(`inc to ${this.timeLimit}`)},dec(){this.timeLimit--,console.log(`dec to ${this.timeLimit}`)},update(){console.log(JSON.stringify(this.activeCourses)),console.log(JSON.stringify(this.activeClasses))},toggleAll(){console.log(`Toggling all courses`),this.activeCourses.forEach(e=>{e.selected=this.allSelected}),this.activeClasses.forEach(e=>{e.selected=this.allSelected}),console.log(JSON.stringify(this.activeCourses))},toggleTagFilter(e){this.expandedFilters[e]=!this.expandedFilters[e]},hasActiveTagFilter(e){return b(e.tagFilter)},startSession(){this.registeredHotkeys&&this.registeredHotkeys.forEach(e=>{x.removeBinding(e)});let e=this.activeCourses.filter(e=>e.selected).map(e=>{let t={type:`course`,id:e.courseID};return b(e.tagFilter)&&(t.tagFilter=e.tagFilter),t}),t=this.activeClasses.filter(e=>e.selected).map(e=>({type:`classroom`,id:e.classID})),n=[...e,...t];this.$emit(`initStudySession`,n,this.timeLimit)},async getActiveClassrooms(){let e=await(await _()).getActiveClasses(),t=[];console.log(`Active classes: ${JSON.stringify(e)}`),await Promise.all(e.map(e=>(async e=>{let n=await S().getClassroomDB(e,`student`);t.push({classID:e,name:n.getConfig().name,selected:!0,reviews:0})})(e))),this.activeClasses=t},async getActiveCourses(){this.activeCourses=(await this.user.getActiveCourses()).map(e=>({...e,selected:!0,name:``,reviews:0,tagFilter:void 0})),Promise.all(this.activeCourses.map(async(e,t)=>{let n=await S().getCoursesDB().getCourseConfig(e.courseID),r=await this.user?.getCourseInterface(e.courseID);return(async()=>Promise.all([this.activeCourses[t].name=n.name,this.activeCourses[t].reviews=await r.getScheduledReviewCount()]))()}))},setHotkeys(){let e=[{hotkey:`right`,callback:()=>{this.timeLimit++},command:`Increase time limit`},{hotkey:`left`,callback:()=>{this.timeLimit--},command:`Decrease time limit`}];x.addBinding(e),this.registeredHotkeys=e.map(e=>e.hotkey)}}}),D={key:0},O={class:`session-layout`},k={class:`course-selection-container`},A={class:`course-row-header`},j={class:`course-row-header`},M={class:`course-row-actions`},N={class:`reviews-count`},P={key:0,class:`tag-filter-container`},F={class:`select-all-row mt-3`},I={class:`fixed-controls-container`},L={class:`fixed-controls`},R={class:`mb-5`},z={key:0,class:`filter-summary mb-4`},B={class:`text-caption`},V={key:1,class:`text-h4`},H={key:2,class:`text-h4`};function _sfc_render$1(e,i,s,h,g,_){let v=a(`v-alert`),y=a(`v-checkbox`),b=a(`v-icon`),x=a(`v-btn`),S=a(`CourseTagFilterWidget`),C=a(`v-expand-transition`),w=a(`v-text-field`),T=a(`SkMouseTrapToolTip`),E=a(`router-link`);return e.hasRegistrations||e.courseLoadError||e.classroomLoadError?(r(),d(`div`,D,[i[11]||(i[11]=u(`div`,{"data-cy":`select-quilts-header`,class:`text-h4 mb-4`},`Study Session Setup`,-1)),e.courseLoadError?(r(),p(v,{key:0,type:`warning`,class:`mb-4`},{default:t(()=>i[2]||(i[2]=[o(` Unable to load course data. Some features may be unavailable. `)])),_:1})):m(``,!0),e.classroomLoadError?(r(),p(v,{key:1,type:`warning`,class:`mb-4`},{default:t(()=>i[3]||(i[3]=[o(` Unable to load classroom data. You can still study individual courses. `)])),_:1})):m(``,!0),u(`div`,O,[u(`div`,k,[i[6]||(i[6]=u(`div`,{class:`text-h6 mb-3`},`Select Quilts to Study`,-1)),(r(!0),d(f,null,l(e.activeClasses,t=>(r(),d(`div`,{key:t.classID,class:`course-row`},[u(`div`,A,[n(y,{modelValue:t.selected,"onUpdate:modelValue":e=>t.selected=e,label:`Class: ${t.name}`,"hide-details":``,onClickCapture:e.update},null,8,[`modelValue`,`onUpdate:modelValue`,`label`,`onClickCapture`]),i[4]||(i[4]=u(`span`,{class:`reviews-count`},`-`,-1))])]))),128)),(r(!0),d(f,null,l(e.activeCourses,a=>(r(),d(`div`,{key:a.courseID,class:`course-row`},[u(`div`,j,[n(y,{modelValue:a.selected,"onUpdate:modelValue":e=>a.selected=e,"data-cy":`course-checkbox`,label:`q/${a.name}`,"hide-details":``,onClickCapture:e.update},null,8,[`modelValue`,`onUpdate:modelValue`,`label`,`onClickCapture`]),u(`div`,M,[u(`span`,N,c(a.reviews),1),a.selected?(r(),p(x,{key:0,variant:`text`,size:`small`,color:e.hasActiveTagFilter(a)?`primary`:`default`,onClick:t=>e.toggleTagFilter(a.courseID)},{default:t(()=>[n(b,{start:``,size:`small`},{default:t(()=>i[5]||(i[5]=[o(`mdi-filter-variant`)])),_:1}),o(` `+c(e.hasActiveTagFilter(a)?`Filtered`:`Filter`)+` `,1),n(b,{end:``,size:`small`},{default:t(()=>[o(c(e.expandedFilters[a.courseID]?`mdi-chevron-up`:`mdi-chevron-down`),1)]),_:2},1024)]),_:2},1032,[`color`,`onClick`])):m(``,!0)])]),n(C,null,{default:t(()=>[a.selected&&e.expandedFilters[a.courseID]?(r(),d(`div`,P,[n(S,{modelValue:a.tagFilter,"onUpdate:modelValue":e=>a.tagFilter=e,"course-id":a.courseID},null,8,[`modelValue`,`onUpdate:modelValue`,`course-id`])])):m(``,!0)]),_:2},1024)]))),128)),u(`div`,F,[n(y,{id:`SelectAll`,ref:`selectAll`,modelValue:e.allSelected,"onUpdate:modelValue":[i[0]||(i[0]=t=>e.allSelected=t),e.toggleAll],autofocus:``,label:`Select All`,"hide-details":``},null,8,[`modelValue`,`onUpdate:modelValue`])])]),u(`div`,I,[u(`div`,L,[i[10]||(i[10]=u(`div`,{class:`text-h6 mb-3`},`Session Settings`,-1)),u(`div`,R,[n(w,{ref:`numberField`,modelValue:e.timeLimit,"onUpdate:modelValue":i[1]||(i[1]=t=>e.timeLimit=t),class:`time-limit-field`,variant:`outlined`,label:`Study Session Timelimit`,"prepend-inner-icon":`mdi-clock-outline`,"prepend-icon":`mdi-minus`,"append-icon":`mdi-plus`,suffix:e.timeLimit>1?`minutes`:`minute`,mask:`##`,type:`number`,"onClick:prepend":e.dec,"onClick:append":e.inc},null,8,[`modelValue`,`suffix`,`onClick:prepend`,`onClick:append`])]),e.hasAnyActiveFilter?(r(),d(`div`,z,[n(b,{size:`small`,color:`primary`,class:`mr-1`},{default:t(()=>i[7]||(i[7]=[o(`mdi-filter`)])),_:1}),u(`span`,B,c(e.activeFilterCount)+` course`+c(e.activeFilterCount>1?`s`:``)+` with tag filters `,1)])):m(``,!0),n(T,{hotkey:`enter`,command:`Start Session`,disabled:!e.hasSelectedSources,"highlight-effect":`scale`},{default:t(()=>[n(x,{"data-cy":`start-studying-button`,color:`success`,size:`large`,block:``,class:`start-btn`,disabled:!e.hasSelectedSources,onClick:e.startSession},{default:t(()=>[n(b,{start:``},{default:t(()=>i[8]||(i[8]=[o(`mdi-play`)])),_:1}),i[9]||(i[9]=o(` Start! `))]),_:1},8,[`disabled`,`onClick`])]),_:1},8,[`disabled`])])])])])):!e.courseLoadError&&!e.classroomLoadError?(r(),d(`div`,V,[i[15]||(i[15]=u(`p`,null,`You don't have anything to study!`,-1)),u(`p`,null,[i[13]||(i[13]=o(`Head over to the `)),n(E,{to:`/quilts`},{default:t(()=>i[12]||(i[12]=[o(`Quilts`)])),_:1}),i[14]||(i[14]=o(` page to find something for you.`))])])):(r(),d(`div`,H,i[16]||(i[16]=[u(`p`,null,`Unable to load study data due to technical issues.`,-1),u(`p`,null,`Please try refreshing the page or contact support if the problem persists.`,-1)])))}e(_sfc_render$1,`_sfc_render`);var U=C(E,[[`render`,_sfc_render$1],[`__scopeId`,`data-v-c5ff4b5f`]]);function randomInt(e,t){return Math.floor(Math.random()*(t-e+1))+e}var W=s({name:`StudyView`,components:{SessionConfiguration:U,StudySession:g},inject:{router:{from:`router`}},props:{previewCourseID:{type:String,required:!1,default:``},randomPreview:{type:Boolean,required:!1},focusCourseID:{type:String,required:!1,default:``}},data(){return{user:null,studySessionConfig:void 0,previewCourseConfig:void 0,previewMode:!1,sessionTimeLimit:5,inSession:!1,sessionPrepared:!1,sessionError:!1,errorMessage:``,sessionContentSources:[],dataInputFormStore:T(),getViewComponent:e=>w.getView(e),dataLayer:S()}},async created(){this.user=await _(),this.studySessionConfig={likesConfetti:h().config.likesConfetti};let e=``;if(this.randomPreview){let t=await this.user.getCourseRegistrationsDoc(),n=(await S().getCoursesDB().getCourseList()).map(e=>e.courseID),r=n.filter(e=>!t.courses.some(t=>t.courseID===e));e=r.length>0?r[randomInt(0,r.length)]:n[randomInt(0,n.length)]}if(this.previewCourseID&&(this.previewMode=!0,S().getCoursesDB().getCourseList().then(e=>{e.forEach(e=>{e.courseID===this.previewCourseID&&(this.previewCourseConfig=e,this.previewCourseConfig.courseID=e.courseID)})}),console.log(`[Study] COURSE PREVIEW MODE FOR ${this.previewCourseID}`),await this.user.registerForCourse(this.previewCourseID,!0),e=this.previewCourseID),this.focusCourseID&&(console.log(`[Study] FOCUS study session: ${this.focusCourseID}`),e=this.focusCourseID),e){let t=this.parseTagFilterFromQuery(),n={type:`course`,id:e};b(t)&&(n.tagFilter=t,console.log(`[Study] Tag filter from query params:`,t)),this.initStudySession([n],this.sessionTimeLimit)}},methods:{refreshRoute(){this.router.go(0)},async initStudySession(e,t){console.log(`[Study] starting study session w/ sources: ${JSON.stringify(e)}`),this.sessionContentSources=e,this.sessionTimeLimit=t,this.inSession=!0,this.sessionPrepared=!1,console.log(`[Study] Waiting for session-prepared event from StudySession component`)},registerUserForPreviewCourse(){this.user.registerForCourse(this.previewCourseConfig.courseID).then(()=>this.router.push(`/quilts/${this.previewCourseConfig.courseID}`))},handleSessionFinished(){this.refreshRoute()},handleSessionPrepared(){console.log(`[Study] Session preparation complete - received session-prepared event`),this.sessionPrepared=!0,this.sessionError=!1,this.errorMessage=``},handleSessionError({message:e,error:t}){console.error(`[Study] Session error:`,e,t),this.sessionError=!0,this.errorMessage=e||`An error occurred while preparing your study session.`,this.sessionPrepared=!1},parseTagFilterFromQuery(){let e=this.$route.query.include,t=this.$route.query.exclude,parseParam=e=>e?Array.isArray(e)?e.flatMap(e=>e?e.split(`,`).map(e=>e.trim()):[]).filter(Boolean):e.split(`,`).map(e=>e.trim()).filter(Boolean):[];return{include:parseParam(e),exclude:parseParam(t)}}}}),G={key:0},K={key:1},q={key:0,align:`center`},J={class:`text-h5`},Y={key:1},X={key:2},Z={key:0,class:`session-loading`},Q={key:1,class:`session-error`},$={class:`text-subtitle-1 mt-2`};function _sfc_render(e,s,l,f,p,h){let g=a(`SessionConfiguration`),_=a(`v-btn`),v=a(`router-link`),y=a(`v-spacer`),b=a(`v-col`),x=a(`v-row`),S=a(`v-progress-circular`),C=a(`v-container`),w=a(`v-icon`),T=a(`StudySession`);return e.inSession?(r(),d(`div`,K,[e.previewMode&&e.previewCourseConfig?(r(),d(`div`,q,[n(x,null,{default:t(()=>[n(b,null,{default:t(()=>[u(`span`,J,[s[1]||(s[1]=o(` Quilt preview for `)),u(`em`,null,c(e.previewCourseConfig.name),1)]),n(_,{size:`small`,color:`primary`,onClick:e.registerUserForPreviewCourse},{default:t(()=>s[2]||(s[2]=[o(`Join`)])),_:1},8,[`onClick`]),n(v,{to:`/quilts/${e.previewCourseConfig.courseID}`},{default:t(()=>[n(_,{size:`small`,color:`secondary`},{default:t(()=>s[3]||(s[3]=[o(`More info`)])),_:1})]),_:1},8,[`to`]),n(y)]),_:1})]),_:1})])):e.previewMode?(r(),d(`div`,Y,[n(x,null,{default:t(()=>[n(b,null,{default:t(()=>s[4]||(s[4]=[u(`span`,{class:`text-h5`},`... No course was specified for the preview.`,-1),u(`div`,null,`(this shouldn't happen)...`,-1)])),_:1})]),_:1})])):m(``,!0),e.inSession?(r(),d(`div`,X,[!e.sessionPrepared&&!e.sessionError?(r(),d(`div`,Z,[n(C,{class:`text-center`},{default:t(()=>[n(x,{justify:`center`,align:`center`,style:{"min-height":`50vh`}},{default:t(()=>[n(b,{cols:`12`},{default:t(()=>[n(S,{size:`70`,width:`7`,color:`primary`,indeterminate:``}),s[5]||(s[5]=u(`div`,{class:`text-h5 mt-4`},`Preparing your study session...`,-1)),s[6]||(s[6]=u(`div`,{class:`text-subtitle-1 mt-2`},`Getting your learning materials ready`,-1))]),_:1})]),_:1})]),_:1})])):m(``,!0),e.sessionError?(r(),d(`div`,Q,[n(C,{class:`text-center`},{default:t(()=>[n(x,{justify:`center`,align:`center`,style:{"min-height":`50vh`}},{default:t(()=>[n(b,{cols:`12`},{default:t(()=>[n(w,{size:`64`,color:`error`},{default:t(()=>s[7]||(s[7]=[o(`mdi-alert-circle`)])),_:1}),s[9]||(s[9]=u(`div`,{class:`text-h5 mt-4 text-error`},`Session Preparation Failed`,-1)),u(`div`,$,c(e.errorMessage||`There was a problem preparing your study session.`),1),n(_,{color:`primary`,class:`mt-6`,onClick:e.refreshRoute},{default:t(()=>s[8]||(s[8]=[o(`Try Again`)])),_:1},8,[`onClick`])]),_:1})]),_:1})]),_:1})])):m(``,!0),n(T,{"content-sources":e.sessionContentSources,"session-time-limit":e.sessionTimeLimit,user:e.user,"session-config":e.studySessionConfig,"data-layer":e.dataLayer,"get-view-component":e.getViewComponent,class:i({"hidden-session":!e.sessionPrepared}),onSessionFinished:e.handleSessionFinished,onSessionPrepared:e.handleSessionPrepared,onSessionError:e.handleSessionError},null,8,[`content-sources`,`session-time-limit`,`user`,`session-config`,`data-layer`,`get-view-component`,`class`,`onSessionFinished`,`onSessionPrepared`,`onSessionError`])])):m(``,!0)])):(r(),d(`div`,G,[n(g,{"initial-time-limit":e.sessionTimeLimit,onInitStudySession:s[0]||(s[0]=(t,n)=>e.initStudySession(t,n))},null,8,[`initial-time-limit`])]))}var ee=C(W,[[`render`,_sfc_render],[`__scopeId`,`data-v-dcbc1fde`]]);export{ee as default};
2
- //# sourceMappingURL=Study-DYkoX3oR.js.map
@@ -1,2 +0,0 @@
1
- import"./chunk-D6hFPZc3.js";import{$ as e,C as t,H as n,K as r,S as i,T as a,Vt as o,_ as s,b as c,v as l,y as u}from"./vue.runtime.esm-bundler-C3q8JS9f.js";import{P as d,v as f}from"./common-ui.es-ConLKYrk.js";import{T as p}from"./dist-leWgtXBf.js";import"./MarkdownRenderer-DoVbFpA6-CvaBjTS8.js";import{k as m,r as h}from"./dist-DKtzwGWn.js";import{t as g}from"./index-B4di3I6o.js";import{t as _}from"./dist-Daq3OiEc.js";var v=a({name:`TagInformation`,components:{CourseCardBrowser:d},props:{tagId:{type:String,required:!0},courseId:{type:String,required:!0}},data(){return{snippetModel:``,editingSnippet:!1,snippetSaving:!1,wikiModel:``,editingWiki:!1,wikiSaving:!1,courseDB:null,tag:{course:this.courseId,name:this.tagId,snippet:``,wiki:``,taggedCards:[],docType:h.TAG},course:{courseID:this.courseId,name:``,description:``,public:!1,deleted:!1,dataShapes:[],questionTypes:[],creator:``,admins:[],moderators:[]}}},async created(){this.courseDB=m().getCourseDB(this.courseId),this.tag=await this.courseDB.getTag(this.tagId),this.snippetModel=this.tag.snippet,this.wikiModel=this.tag.wiki,this.course=await this.courseDB.getCourseConfig()},methods:{viewLookup(e){return _.getView(e)},editSnippet(){console.log(`[TagInformation] EditSnip`),this.editingSnippet=!0,this.$refs.snippetEditor.focus()},editWiki(){console.log(`[TagInformation] EditWiki`),this.editingWiki=!0,this.$refs.wikiEditor.focus()},async saveSnippet(){this.snippetSaving=!0,(await this.courseDB.updateTag({...this.tag,snippet:this.snippetModel})).ok?(console.log(`[TagInformation] OK`),this.tag.snippet=this.snippetModel,f({text:`Updated applied - thanks!`,status:p.ok})):f({text:`error in applying update!`,status:p.error}),this.editingSnippet=!1,this.snippetSaving=!1},async saveWiki(){this.wikiSaving=!0,(await this.courseDB.updateTag({...this.tag,wiki:this.wikiModel})).ok?(this.tag.wiki=this.wikiModel,f({text:`Updated applied - thanks!`,status:p.ok})):f({text:`error in applying update!`,status:p.error}),this.editingWiki=!1,this.wikiSaving=!1},cancelEditSnippet(){console.log(`[TagInformation] Cancelling EditSnip`),this.editingSnippet=!1,this.snippetModel=this.tag.snippet},cancelEditWiki(){this.editingWiki=!1,this.wikiModel=this.tag.wiki}}}),y={key:0},b={key:0};function _sfc_render(a,d,f,p,m,h){let g=r(`router-link`),_=r(`v-icon`),v=r(`v-progress-circular`),x=r(`v-fade-transition`),S=r(`v-text-field`),C=r(`course-card-browser`);return n(),c(`div`,null,[s(`h1`,null,[t(g,{to:`/q/${a.course.name}`},{default:e(()=>[i(o(a.course.name),1)]),_:1},8,[`to`]),i(` > Tag: `+o(a.tag.name),1)]),d[8]||(d[8]=s(`br`,null,null,-1)),s(`p`,null,o(a.tag.taggedCards.length)+` card`+o(a.tag.taggedCards.length===1?``:`s`),1),t(S,{ref:`snippetEditor`,modelValue:a.snippetModel,"onUpdate:modelValue":d[0]||(d[0]=e=>a.snippetModel=e),variant:`outlined`,readonly:!a.editingSnippet,counter:a.editingSnippet,label:`Brief tag description:`,placeholder:`No snippet yet - add one!`,type:`text`},{prepend:e(()=>[a.editingSnippet?(n(),c(`span`,y,[t(_,{color:`primary`,onClick:a.saveSnippet},{default:e(()=>d[2]||(d[2]=[i(`mdi-content-save`)])),_:1},8,[`onClick`])])):(n(),l(_,{key:1,color:`primary`,onClick:a.editSnippet},{default:e(()=>d[3]||(d[3]=[i(`mdi-pencil`)])),_:1},8,[`onClick`]))]),append:e(()=>[a.editingSnippet?(n(),l(_,{key:0,onClick:a.cancelEditSnippet},{default:e(()=>d[4]||(d[4]=[i(`mdi-cancel`)])),_:1},8,[`onClick`])):u(``,!0),t(x,{"leave-absolute":``},{default:e(()=>[a.snippetSaving?(n(),l(v,{key:0,size:`20`,color:`info`,indeterminate:``})):u(``,!0)]),_:1})]),_:1},8,[`modelValue`,`readonly`,`counter`]),t(S,{ref:`wikiEditor`,modelValue:a.wikiModel,"onUpdate:modelValue":d[1]||(d[1]=e=>a.wikiModel=e),variant:`outlined`,readonly:!a.editingWiki,counter:a.editingWiki,label:`Extended tag description:`,placeholder:`No wiki yet - consider adding one!`,textarea:``},{prepend:e(()=>[a.editingWiki?(n(),c(`span`,b,[t(_,{color:`primary`,onClick:a.saveWiki},{default:e(()=>d[5]||(d[5]=[i(`mdi-content-save`)])),_:1},8,[`onClick`])])):(n(),l(_,{key:1,color:`primary`,onClick:a.editWiki},{default:e(()=>d[6]||(d[6]=[i(`mdi-pencil`)])),_:1},8,[`onClick`]))]),append:e(()=>[a.editingWiki?(n(),l(_,{key:0,onClick:a.cancelEditWiki},{default:e(()=>d[7]||(d[7]=[i(`mdi-cancel`)])),_:1},8,[`onClick`])):u(``,!0),t(x,{"leave-absolute":``},{default:e(()=>[a.wikiSaving?(n(),l(v,{key:0,size:`20`,color:`info`,indeterminate:``})):u(``,!0)]),_:1})]),_:1},8,[`modelValue`,`readonly`,`counter`]),t(C,{"course-id":a.courseId,"tag-id":a.tagId,"view-lookup-function":a.viewLookup},null,8,[`course-id`,`tag-id`,`view-lookup-function`])])}var x=g(v,[[`render`,_sfc_render]]);export{x as default};
2
- //# sourceMappingURL=TagInformation-PbQDPmpb.js.map