@vue-skuilder/courseware 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chess-BVYo88i5.cjs +1 -0
- package/dist/{chess-BsgVZARV.cjs → chess-BWes0jGA.cjs} +2 -2
- package/dist/{chess-BsgVZARV.cjs.map → chess-BWes0jGA.cjs.map} +1 -1
- package/dist/{chess-BbHATAzk.js → chess-E2uOAyQS.js} +10 -8
- package/dist/{chess-BbHATAzk.js.map → chess-E2uOAyQS.js.map} +1 -1
- package/dist/{chess-X1bmWmh3.js → chess-Lfm7Fsvs.js} +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.mjs +2 -2
- package/package.json +5 -5
- package/dist/chess-C_2RQEuq.cjs +0 -1
package/dist/index.cjs.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});require('./assets/index.css');const e=require(`./shapes-C_-mvrCc.cjs`),t=require(`./CourseWare-DSeyTAtH.cjs`),n=require(`./chess-BsgVZARV.cjs`),r=require(`./french-Bxet7hJm.cjs`),i=require(`./math-B1oDAkOy.cjs`),a=require(`./piano-CefQUc72.cjs`),o=require(`./pitch-C-lh9ezH.cjs`),s=require(`./sightsing-Cr_SJ5Vc.cjs`),c=require(`./typing-CK-glKhm.cjs`),l=require(`./word-work-fNbCLNuN.cjs`);let u=require(`vue`),d=require(`@vue-skuilder/common-ui`),f=require(`@vue-skuilder/common`),p=require(`@vue-skuilder/db`);var m=new t.t(`default`,[t.n]),h=(0,u.defineComponent)({name:`PianoRangeVisualizer`,props:{lowestNote:{type:Number,required:!0},highestNote:{type:Number,required:!0},maxWidth:{type:Number,default:1e3}},setup(e){let t=(0,u.ref)(null),n=(0,u.ref)(800),r=(0,u.computed)(()=>{let e=0;for(let t=21;t<=108;t++)isWhiteKey(t)&&e++;return e}),i=(0,u.computed)(()=>Math.min(22,n.value/Math.max(25,r.value))),a=(0,u.computed)(()=>i.value*.6),o=(0,u.computed)(()=>Math.min(e.maxWidth,i.value*r.value+10)),isWhiteKey=e=>{let t=e%12;return[0,2,4,5,7,9,11].includes(t)},getKeyPosition=e=>{let t=0;for(let n=21;n<e;n++)isWhiteKey(n)&&t++;return isWhiteKey(e)?t*i.value:t*i.value-a.value/2},getNoteLabel=e=>{let t=[`C`,`C#`,`D`,`D#`,`E`,`F`,`F#`,`G`,`G#`,`A`,`A#`,`B`],n=e%12,r=Math.floor(e/12)-1;return`${t[n]}${r}`};return(0,u.onMounted)(()=>{t.value&&(n.value=t.value.clientWidth,new ResizeObserver(e=>{for(let t of e)n.value=t.contentRect.width}).observe(t.value))}),{pianoWrapper:t,keyHeight:100,blackKeyHeight:60,whiteKeyWidth:i,blackKeyWidth:a,svgWidth:o,isWhiteKey,getKeyPosition,getNoteLabel}}}),g={class:`piano-range-container`},_={class:`piano-wrapper`,ref:`pianoWrapper`},v=[`width`,`height`],y={class:`background-keys`,opacity:`0.15`},b=[`x`,`width`,`height`],x=[`x`,`width`,`height`],S={class:`selected-range`},C=[`x`,`width`,`height`],w=[`x`,`width`,`height`],T={class:`range-markers`},E=[`x`,`height`],D=[`x`,`height`],O=[`x`,`y`],k=[`x`,`y`];function _sfc_render$1(e,t,n,r,i,a){return(0,u.openBlock)(),(0,u.createElementBlock)(`div`,g,[(0,u.createElementVNode)(`div`,_,[((0,u.openBlock)(),(0,u.createElementBlock)(`svg`,{width:e.svgWidth,height:e.keyHeight+20,class:`piano-svg`},[(0,u.createElementVNode)(`g`,y,[((0,u.openBlock)(),(0,u.createElementBlock)(u.Fragment,null,(0,u.renderList)(88,t=>((0,u.openBlock)(),(0,u.createElementBlock)(u.Fragment,{key:`bg-${t}`},[e.isWhiteKey(t+20)?((0,u.openBlock)(),(0,u.createElementBlock)(`rect`,{key:0,x:e.getKeyPosition(t+20),y:`0`,width:e.whiteKeyWidth,height:e.keyHeight,class:`white-key`,stroke:`#999`,"stroke-width":`1`},null,8,b)):(0,u.createCommentVNode)(``,!0)],64))),64)),((0,u.openBlock)(),(0,u.createElementBlock)(u.Fragment,null,(0,u.renderList)(88,t=>((0,u.openBlock)(),(0,u.createElementBlock)(u.Fragment,{key:`bg-black-${t}`},[e.isWhiteKey(t+20)?(0,u.createCommentVNode)(``,!0):((0,u.openBlock)(),(0,u.createElementBlock)(`rect`,{key:0,x:e.getKeyPosition(t+20),y:`0`,width:e.blackKeyWidth,height:e.blackKeyHeight,class:`black-key`},null,8,x))],64))),64))]),(0,u.createElementVNode)(`g`,S,[((0,u.openBlock)(),(0,u.createElementBlock)(u.Fragment,null,(0,u.renderList)(128,t=>((0,u.openBlock)(),(0,u.createElementBlock)(u.Fragment,{key:`white-${t}`},[e.isWhiteKey(t)&&t>=e.lowestNote&&t<=e.highestNote?((0,u.openBlock)(),(0,u.createElementBlock)(`rect`,{key:0,x:e.getKeyPosition(t),y:`0`,width:e.whiteKeyWidth,height:e.keyHeight,class:`white-key active`,stroke:`#666`,"stroke-width":`1`},null,8,C)):(0,u.createCommentVNode)(``,!0)],64))),64)),((0,u.openBlock)(),(0,u.createElementBlock)(u.Fragment,null,(0,u.renderList)(128,t=>((0,u.openBlock)(),(0,u.createElementBlock)(u.Fragment,{key:`black-${t}`},[!e.isWhiteKey(t)&&t>=e.lowestNote&&t<=e.highestNote?((0,u.openBlock)(),(0,u.createElementBlock)(`rect`,{key:0,x:e.getKeyPosition(t),y:`0`,width:e.blackKeyWidth,height:e.blackKeyHeight,class:`black-key active`},null,8,w)):(0,u.createCommentVNode)(``,!0)],64))),64))]),(0,u.createElementVNode)(`g`,T,[(0,u.createElementVNode)(`rect`,{x:e.getKeyPosition(e.lowestNote)-2,y:`0`,width:4,height:e.keyHeight+5,class:`range-marker start`},null,8,E),(0,u.createElementVNode)(`rect`,{x:e.getKeyPosition(e.highestNote)+e.whiteKeyWidth-2,y:`0`,width:4,height:e.keyHeight+5,class:`range-marker end`},null,8,D)]),(0,u.createElementVNode)(`text`,{x:e.getKeyPosition(e.lowestNote)+3,y:e.keyHeight+12,class:`note-label`},(0,u.toDisplayString)(e.getNoteLabel(e.lowestNote)),9,O),(0,u.createElementVNode)(`text`,{x:e.getKeyPosition(e.highestNote)+e.whiteKeyWidth-3,y:e.keyHeight+12,"text-anchor":`end`,class:`note-label`},(0,u.toDisplayString)(e.getNoteLabel(e.highestNote)),9,k)],8,v))],512)])}e.r(_sfc_render$1,`_sfc_render`);var A=t.r(h,[[`render`,_sfc_render$1],[`__scopeId`,`data-v-4b232a8b`]]),j=(0,u.defineComponent)({name:`MidiConfig`,components:{PianoRangeVisualizer:A},props:{_id:{type:String,required:!0},user:{type:Object,required:!0}},setup(e){let t=(0,u.ref)(),n=(0,u.ref)(!0),r=(0,u.ref)([]),i=(0,u.ref)([]),o=(0,u.ref)(``),s=(0,u.ref)(``),c=(0,u.ref)(!1),l=(0,u.ref)(``),m=(0,u.ref)(``),h=(0,u.ref)(!1),g=(0,u.ref)(`full-88`),_=(0,u.ref)(21),v=(0,u.ref)(108),y=(0,u.ref)(``),b=(0,u.ref)(0),x=(0,u.ref)(0),S=(0,u.ref)([]),initNoteOptions=()=>{let e=[`C`,`C#`,`D`,`D#`,`E`,`F`,`F#`,`G`,`G#`,`A`,`A#`,`B`],t=[];for(let n=0;n<=127;n++){let r=Math.floor(n/12)-1,i=e[n%12];t.push({title:`${i}${r} (${n})`,value:n})}S.value=t},C=(0,u.ref)([{title:`Full 88-key Piano (A0-C8)`,value:`full-88`},{title:`76-key Keyboard (E1-G7)`,value:`76-key`},{title:`61-key Keyboard (C2-C7)`,value:`61-key`},{title:`49-key Keyboard (C3-C7)`,value:`49-key`},{title:`37-key Keyboard (C3-C6)`,value:`37-key`},{title:`25-key Keyboard (C4-C6)`,value:`25-key`},{title:`Custom Range`,value:`custom`}]),checkConfigChanged=()=>{h.value=o.value!==l.value||s.value!==m.value||g.value!==y.value||g.value===`custom`&&(_.value!==b.value||v.value!==x.value)},updateCustomRangeFromPreset=()=>{switch(g.value){case`full-88`:_.value=21,v.value=108;break;case`76-key`:_.value=28,v.value=103;break;case`61-key`:_.value=36,v.value=96;break;case`49-key`:_.value=48,v.value=96;break;case`37-key`:_.value=48,v.value=84;break;case`25-key`:_.value=60,v.value=84;break}checkConfigChanged()},updateRangeAndCheckChanges=()=>{_.value>=v.value&&(v.value=_.value+12),checkConfigChanged()},playSound=()=>{t.value?.play([{note:{number:64,name:`E`,octave:4},type:`noteon`,velocity:.4251968503937008,timestamp:0},{note:{number:64,name:`E`,octave:4},velocity:.3779527559055118,type:`noteoff`,timestamp:511.90500000002794},{note:{number:60,name:`C`,octave:4},type:`noteon`,velocity:.5275590551181102,timestamp:535.8800000001211},{note:{number:60,name:`C`,octave:4},velocity:.33858267716535434,type:`noteoff`,timestamp:674.9899999999907},{note:{number:60,name:`C`,octave:4},type:`noteon`,velocity:.5590551181102362,timestamp:1070.8800000000047},{note:{number:60,name:`C`,octave:4},velocity:.3464566929133858,type:`noteoff`,timestamp:1214.8999999999069},{note:{number:64,name:`E`,octave:4},type:`noteon`,velocity:.5118110236220472,timestamp:1424.9400000000605},{note:{number:64,name:`E`,octave:4},velocity:.2755905511811024,type:`noteoff`,timestamp:1576.9150000000373},{note:{number:62,name:`D`,octave:4},type:`noteon`,velocity:.3937007874015748,timestamp:1756.9149999999208},{note:{number:62,name:`D`,octave:4},velocity:.36220472440944884,type:`noteoff`,timestamp:1926.9899999998743},{note:{number:60,name:`C`,octave:4},type:`noteon`,velocity:.5196850393700787,timestamp:1970.9600000000792},{note:{number:60,name:`C`,octave:4},velocity:.36220472440944884,type:`noteoff`,timestamp:2126.009999999893},{note:{number:60,name:`C`,octave:4},type:`noteon`,velocity:.5984251968503937,timestamp:2502.0050000000047},{note:{number:60,name:`C`,octave:4},velocity:.3858267716535433,type:`noteoff`,timestamp:2853.920000000042},{note:{number:67,name:`G`,octave:4},type:`noteon`,velocity:.6850393700787402,timestamp:2875.8649999999907},{note:{number:67,name:`G`,octave:4},velocity:.6377952755905512,type:`noteoff`,timestamp:4497.004999999888}])},indicateHeardNotes=e=>{(0,d.alertUser)({text:`I hear a ${e.note.name}!`,status:f.Status.ok})};(0,u.watch)(o,()=>{t.value?.selectInput(o.value),checkConfigChanged()}),(0,u.watch)(s,()=>{t.value?.selectOutput(s.value),checkConfigChanged()});let retrieveSettings=async()=>{let t=await(await e.user.getCourseInterface(e._id)).getCourseSettings();if(t?.midiinput){let e=t.midiinput.toString();r.value.some(t=>t.value===e)&&(o.value=e,l.value=e)}if(t?.midioutput){let e=t.midioutput.toString();i.value.some(t=>t.value===e)&&(s.value=e,m.value=e)}t?.keyboardRange&&(y.value=t.keyboardRange.toString(),g.value=y.value),t?.lowestNote&&(b.value=parseInt(t.lowestNote.toString()),_.value=b.value),t?.highestNote&&(x.value=parseInt(t.highestNote.toString()),v.value=x.value),t?.lowestNote&&t?.highestNote&&!t?.keyboardRange&&(g.value=`custom`),h.value=!1},saveSettings=async()=>{c.value=!0,(await(0,p.getDataLayer)().getUserDB().getCourseInterface(e._id)).updateCourseSettings([{key:`midiinput`,value:o.value},{key:`midioutput`,value:s.value},{key:`keyboardRange`,value:g.value},{key:`lowestNote`,value:_.value},{key:`highestNote`,value:v.value}]),l.value=o.value,m.value=s.value,y.value=g.value,b.value=_.value,x.value=v.value,h.value=!1,c.value=!1,(0,d.alertUser)({text:`Settings updated.`,status:f.Status.ok})};return(0,u.onMounted)(async()=>{initNoteOptions();try{t.value=await a.r.instance(),n.value=t.value.state===`ready`||t.value.state===`nodevice`}catch(e){console.log(`Error on midi Init: ${e}`),n.value=!1}n.value&&(t.value?.addNoteonListenter(indicateHeardNotes),t.value?(r.value=t.value.inputs.filter(e=>e.state===`connected`).map(e=>({title:`${e.manufacturer}: ${e.name}`,value:e.id})),i.value=t.value?.outputs.filter(e=>e.state===`connected`).map(e=>({title:`${e.manufacturer}: ${e.name}`,value:e.id}))):(r.value=[{title:`No inputs available`,value:``}],i.value=[{title:`No outputs available`,value:``}]),await retrieveSettings(),!o.value&&r.value.length>0&&(o.value=r.value[0].value),!s.value&&i.value.length>0&&(s.value=i.value[0].value))}),{midiSupported:n,inputs:r,outputs:i,selectedInput:o,selectedOutput:s,updatePending:c,playSound,saveSettings,configChanged:h,lowestNote:_,highestNote:v,keyboardRangeOptions:C,selectedKeyboardRange:g,noteOptions:S,updateCustomRangeFromPreset,updateRangeAndCheckChanges}}}),M={key:0,class:`custom-range-inputs d-flex gap-4`},N={class:`d-flex justify-space-between mt-3`},P={key:1};function _sfc_render(e,t,n,r,i,a){let o=(0,u.resolveComponent)(`v-toolbar-title`),s=(0,u.resolveComponent)(`v-toolbar`),c=(0,u.resolveComponent)(`v-select`),l=(0,u.resolveComponent)(`v-divider`),d=(0,u.resolveComponent)(`piano-range-visualizer`),f=(0,u.resolveComponent)(`v-btn`),p=(0,u.resolveComponent)(`v-form`),m=(0,u.resolveComponent)(`v-card-text`),h=(0,u.resolveComponent)(`v-card`);return(0,u.openBlock)(),(0,u.createBlock)(h,null,{default:(0,u.withCtx)(()=>[(0,u.createVNode)(s,{dense:``},{default:(0,u.withCtx)(()=>[(0,u.createVNode)(o,null,{default:(0,u.withCtx)(()=>t[5]||=[(0,u.createTextVNode)(`Configure Midi Device`)]),_:1})]),_:1}),(0,u.createVNode)(m,null,{default:(0,u.withCtx)(()=>[e.midiSupported?((0,u.openBlock)(),(0,u.createBlock)(p,{key:0,onsubmit:`return false;`},{default:(0,u.withCtx)(()=>[(0,u.createVNode)(c,{modelValue:e.selectedInput,"onUpdate:modelValue":t[0]||=t=>e.selectedInput=t,items:e.inputs,label:`Select Input`,hint:`Play some notes on your input device to test the connection`},null,8,[`modelValue`,`items`]),(0,u.createVNode)(c,{modelValue:e.selectedOutput,"onUpdate:modelValue":t[1]||=t=>e.selectedOutput=t,items:e.outputs,label:`Select Output`},null,8,[`modelValue`,`items`]),(0,u.createVNode)(l,{class:`my-4`}),t[8]||=(0,u.createElementVNode)(`h3`,{class:`text-subtitle-1 mb-2`},`Keyboard Range`,-1),(0,u.createVNode)(c,{modelValue:e.selectedKeyboardRange,"onUpdate:modelValue":[t[2]||=t=>e.selectedKeyboardRange=t,e.updateCustomRangeFromPreset],items:e.keyboardRangeOptions,label:`Select Keyboard Range`},null,8,[`modelValue`,`items`,`onUpdate:modelValue`]),e.selectedKeyboardRange===`custom`?((0,u.openBlock)(),(0,u.createElementBlock)(`div`,M,[(0,u.createVNode)(c,{modelValue:e.lowestNote,"onUpdate:modelValue":[t[3]||=t=>e.lowestNote=t,e.updateRangeAndCheckChanges],items:e.noteOptions,label:`Lowest Note`},null,8,[`modelValue`,`items`,`onUpdate:modelValue`]),(0,u.createVNode)(c,{modelValue:e.highestNote,"onUpdate:modelValue":[t[4]||=t=>e.highestNote=t,e.updateRangeAndCheckChanges],items:e.noteOptions,label:`Highest Note`},null,8,[`modelValue`,`items`,`onUpdate:modelValue`])])):(0,u.createCommentVNode)(``,!0),(0,u.createVNode)(d,{"lowest-note":e.lowestNote,"highest-note":e.highestNote},null,8,[`lowest-note`,`highest-note`]),(0,u.createElementVNode)(`div`,N,[(0,u.createVNode)(f,{color:`primary`,onClick:e.playSound},{default:(0,u.withCtx)(()=>t[6]||=[(0,u.createTextVNode)(`Test midi output`)]),_:1},8,[`onClick`]),(0,u.createVNode)(f,{loading:e.updatePending,disabled:!e.configChanged&&!e.updatePending,color:`info`,class:`save-button`,onClick:e.saveSettings},{default:(0,u.withCtx)(()=>t[7]||=[(0,u.createTextVNode)(` Save these settings `)]),_:1},8,[`loading`,`disabled`,`onClick`])])]),_:1})):((0,u.openBlock)(),(0,u.createElementBlock)(`div`,P,t[9]||=[(0,u.createElementVNode)(`p`,null,`This quilt requires a midi input device, which is not supported by this browser.`,-1),(0,u.createElementVNode)(`div`,null,[(0,u.createElementVNode)(`p`,null,`Try one of the following browsers:`),(0,u.createElementVNode)(`ul`,null,[(0,u.createElementVNode)(`li`,null,[(0,u.createElementVNode)(`a`,{href:`https://www.google.com/chrome/`},`Google Chrome`)]),(0,u.createElementVNode)(`li`,null,[(0,u.createElementVNode)(`a`,{href:`https://www.microsoft.com/edge`},`Microsoft Edge`)]),(0,u.createElementVNode)(`li`,null,[(0,u.createElementVNode)(`a`,{href:`https://brave.com/`},`Brave`)])])],-1)]))]),_:1})]),_:1})}var F=t.r(j,[[`render`,_sfc_render],[`__scopeId`,`data-v-6ee9020f`]]),I=d.useQuestionView;async function loadSubcourse(e){let t;switch(e){case`chess`:t=await Promise.resolve().then(()=>require(`./chess-C_2RQEuq.cjs`));break;case`french`:t=await Promise.resolve().then(()=>require(`./french-x9P8RRn8.cjs`));break;case`math`:t=await Promise.resolve().then(()=>require(`./math-BWlIa6-l.cjs`));break;case`piano`:t=await Promise.resolve().then(()=>require(`./piano-Btvkzjfz.cjs`));break;case`pitch`:t=await Promise.resolve().then(()=>require(`./pitch-DsopN5IR.cjs`));break;case`sightSing`:t=await Promise.resolve().then(()=>require(`./sightsing-CtagQ0FJ.cjs`));break;case`typing`:t=await Promise.resolve().then(()=>require(`./typing-CBPjtwrg.cjs`));break;case`wordWork`:t=await Promise.resolve().then(()=>require(`./word-work-C5MTSapy.cjs`));break}let n=t.default;return L.courses.find(e=>e.name===n.name)||L.courses.push(n),n}async function loadAllSubcourses(){await Promise.all([`chess`,`french`,`math`,`piano`,`pitch`,`sightSing`,`typing`,`wordWork`].map(e=>loadSubcourse(e)))}var AllCourseWare=class{courseWareList;get courses(){return this.courseWareList}constructor(e){this.courseWareList=e}getCourseWare(e){return this.courseWareList.find(t=>t.name===e)}cachedRawViews=null;allViewsRaw(){if(!this.cachedRawViews){let e=this.allViews();this.cachedRawViews=Object.fromEntries(Object.entries(e).map(([e,t])=>[e,(0,u.markRaw)(t)]))}return this.cachedRawViews}allViews(){let e={};return this.courseWareList.forEach(t=>{Object.assign(e,t.allViewsMap)}),e}getView(e){let t;t=typeof e==`string`?f.NameSpacer.getViewDescriptor(e):e;let n=this.getCourseWare(t.course);if(n){let e=n.getQuestion(t.questionType);if(e){let r=e.views.find(e=>e.name===t.view);if(r)return r;throw console.error(`QuestionView ${t.view} not found in course ${t.course}
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});require('./assets/index.css');const e=require(`./shapes-C_-mvrCc.cjs`),t=require(`./CourseWare-DSeyTAtH.cjs`),n=require(`./chess-BWes0jGA.cjs`),r=require(`./french-Bxet7hJm.cjs`),i=require(`./math-B1oDAkOy.cjs`),a=require(`./piano-CefQUc72.cjs`),o=require(`./pitch-C-lh9ezH.cjs`),s=require(`./sightsing-Cr_SJ5Vc.cjs`),c=require(`./typing-CK-glKhm.cjs`),l=require(`./word-work-fNbCLNuN.cjs`);let u=require(`vue`),d=require(`@vue-skuilder/common-ui`),f=require(`@vue-skuilder/common`),p=require(`@vue-skuilder/db`);var m=new t.t(`default`,[t.n]),h=(0,u.defineComponent)({name:`PianoRangeVisualizer`,props:{lowestNote:{type:Number,required:!0},highestNote:{type:Number,required:!0},maxWidth:{type:Number,default:1e3}},setup(e){let t=(0,u.ref)(null),n=(0,u.ref)(800),r=(0,u.computed)(()=>{let e=0;for(let t=21;t<=108;t++)isWhiteKey(t)&&e++;return e}),i=(0,u.computed)(()=>Math.min(22,n.value/Math.max(25,r.value))),a=(0,u.computed)(()=>i.value*.6),o=(0,u.computed)(()=>Math.min(e.maxWidth,i.value*r.value+10)),isWhiteKey=e=>{let t=e%12;return[0,2,4,5,7,9,11].includes(t)},getKeyPosition=e=>{let t=0;for(let n=21;n<e;n++)isWhiteKey(n)&&t++;return isWhiteKey(e)?t*i.value:t*i.value-a.value/2},getNoteLabel=e=>{let t=[`C`,`C#`,`D`,`D#`,`E`,`F`,`F#`,`G`,`G#`,`A`,`A#`,`B`],n=e%12,r=Math.floor(e/12)-1;return`${t[n]}${r}`};return(0,u.onMounted)(()=>{t.value&&(n.value=t.value.clientWidth,new ResizeObserver(e=>{for(let t of e)n.value=t.contentRect.width}).observe(t.value))}),{pianoWrapper:t,keyHeight:100,blackKeyHeight:60,whiteKeyWidth:i,blackKeyWidth:a,svgWidth:o,isWhiteKey,getKeyPosition,getNoteLabel}}}),g={class:`piano-range-container`},_={class:`piano-wrapper`,ref:`pianoWrapper`},v=[`width`,`height`],y={class:`background-keys`,opacity:`0.15`},b=[`x`,`width`,`height`],x=[`x`,`width`,`height`],S={class:`selected-range`},C=[`x`,`width`,`height`],w=[`x`,`width`,`height`],T={class:`range-markers`},E=[`x`,`height`],D=[`x`,`height`],O=[`x`,`y`],k=[`x`,`y`];function _sfc_render$1(e,t,n,r,i,a){return(0,u.openBlock)(),(0,u.createElementBlock)(`div`,g,[(0,u.createElementVNode)(`div`,_,[((0,u.openBlock)(),(0,u.createElementBlock)(`svg`,{width:e.svgWidth,height:e.keyHeight+20,class:`piano-svg`},[(0,u.createElementVNode)(`g`,y,[((0,u.openBlock)(),(0,u.createElementBlock)(u.Fragment,null,(0,u.renderList)(88,t=>((0,u.openBlock)(),(0,u.createElementBlock)(u.Fragment,{key:`bg-${t}`},[e.isWhiteKey(t+20)?((0,u.openBlock)(),(0,u.createElementBlock)(`rect`,{key:0,x:e.getKeyPosition(t+20),y:`0`,width:e.whiteKeyWidth,height:e.keyHeight,class:`white-key`,stroke:`#999`,"stroke-width":`1`},null,8,b)):(0,u.createCommentVNode)(``,!0)],64))),64)),((0,u.openBlock)(),(0,u.createElementBlock)(u.Fragment,null,(0,u.renderList)(88,t=>((0,u.openBlock)(),(0,u.createElementBlock)(u.Fragment,{key:`bg-black-${t}`},[e.isWhiteKey(t+20)?(0,u.createCommentVNode)(``,!0):((0,u.openBlock)(),(0,u.createElementBlock)(`rect`,{key:0,x:e.getKeyPosition(t+20),y:`0`,width:e.blackKeyWidth,height:e.blackKeyHeight,class:`black-key`},null,8,x))],64))),64))]),(0,u.createElementVNode)(`g`,S,[((0,u.openBlock)(),(0,u.createElementBlock)(u.Fragment,null,(0,u.renderList)(128,t=>((0,u.openBlock)(),(0,u.createElementBlock)(u.Fragment,{key:`white-${t}`},[e.isWhiteKey(t)&&t>=e.lowestNote&&t<=e.highestNote?((0,u.openBlock)(),(0,u.createElementBlock)(`rect`,{key:0,x:e.getKeyPosition(t),y:`0`,width:e.whiteKeyWidth,height:e.keyHeight,class:`white-key active`,stroke:`#666`,"stroke-width":`1`},null,8,C)):(0,u.createCommentVNode)(``,!0)],64))),64)),((0,u.openBlock)(),(0,u.createElementBlock)(u.Fragment,null,(0,u.renderList)(128,t=>((0,u.openBlock)(),(0,u.createElementBlock)(u.Fragment,{key:`black-${t}`},[!e.isWhiteKey(t)&&t>=e.lowestNote&&t<=e.highestNote?((0,u.openBlock)(),(0,u.createElementBlock)(`rect`,{key:0,x:e.getKeyPosition(t),y:`0`,width:e.blackKeyWidth,height:e.blackKeyHeight,class:`black-key active`},null,8,w)):(0,u.createCommentVNode)(``,!0)],64))),64))]),(0,u.createElementVNode)(`g`,T,[(0,u.createElementVNode)(`rect`,{x:e.getKeyPosition(e.lowestNote)-2,y:`0`,width:4,height:e.keyHeight+5,class:`range-marker start`},null,8,E),(0,u.createElementVNode)(`rect`,{x:e.getKeyPosition(e.highestNote)+e.whiteKeyWidth-2,y:`0`,width:4,height:e.keyHeight+5,class:`range-marker end`},null,8,D)]),(0,u.createElementVNode)(`text`,{x:e.getKeyPosition(e.lowestNote)+3,y:e.keyHeight+12,class:`note-label`},(0,u.toDisplayString)(e.getNoteLabel(e.lowestNote)),9,O),(0,u.createElementVNode)(`text`,{x:e.getKeyPosition(e.highestNote)+e.whiteKeyWidth-3,y:e.keyHeight+12,"text-anchor":`end`,class:`note-label`},(0,u.toDisplayString)(e.getNoteLabel(e.highestNote)),9,k)],8,v))],512)])}e.r(_sfc_render$1,`_sfc_render`);var A=t.r(h,[[`render`,_sfc_render$1],[`__scopeId`,`data-v-4b232a8b`]]),j=(0,u.defineComponent)({name:`MidiConfig`,components:{PianoRangeVisualizer:A},props:{_id:{type:String,required:!0},user:{type:Object,required:!0}},setup(e){let t=(0,u.ref)(),n=(0,u.ref)(!0),r=(0,u.ref)([]),i=(0,u.ref)([]),o=(0,u.ref)(``),s=(0,u.ref)(``),c=(0,u.ref)(!1),l=(0,u.ref)(``),m=(0,u.ref)(``),h=(0,u.ref)(!1),g=(0,u.ref)(`full-88`),_=(0,u.ref)(21),v=(0,u.ref)(108),y=(0,u.ref)(``),b=(0,u.ref)(0),x=(0,u.ref)(0),S=(0,u.ref)([]),initNoteOptions=()=>{let e=[`C`,`C#`,`D`,`D#`,`E`,`F`,`F#`,`G`,`G#`,`A`,`A#`,`B`],t=[];for(let n=0;n<=127;n++){let r=Math.floor(n/12)-1,i=e[n%12];t.push({title:`${i}${r} (${n})`,value:n})}S.value=t},C=(0,u.ref)([{title:`Full 88-key Piano (A0-C8)`,value:`full-88`},{title:`76-key Keyboard (E1-G7)`,value:`76-key`},{title:`61-key Keyboard (C2-C7)`,value:`61-key`},{title:`49-key Keyboard (C3-C7)`,value:`49-key`},{title:`37-key Keyboard (C3-C6)`,value:`37-key`},{title:`25-key Keyboard (C4-C6)`,value:`25-key`},{title:`Custom Range`,value:`custom`}]),checkConfigChanged=()=>{h.value=o.value!==l.value||s.value!==m.value||g.value!==y.value||g.value===`custom`&&(_.value!==b.value||v.value!==x.value)},updateCustomRangeFromPreset=()=>{switch(g.value){case`full-88`:_.value=21,v.value=108;break;case`76-key`:_.value=28,v.value=103;break;case`61-key`:_.value=36,v.value=96;break;case`49-key`:_.value=48,v.value=96;break;case`37-key`:_.value=48,v.value=84;break;case`25-key`:_.value=60,v.value=84;break}checkConfigChanged()},updateRangeAndCheckChanges=()=>{_.value>=v.value&&(v.value=_.value+12),checkConfigChanged()},playSound=()=>{t.value?.play([{note:{number:64,name:`E`,octave:4},type:`noteon`,velocity:.4251968503937008,timestamp:0},{note:{number:64,name:`E`,octave:4},velocity:.3779527559055118,type:`noteoff`,timestamp:511.90500000002794},{note:{number:60,name:`C`,octave:4},type:`noteon`,velocity:.5275590551181102,timestamp:535.8800000001211},{note:{number:60,name:`C`,octave:4},velocity:.33858267716535434,type:`noteoff`,timestamp:674.9899999999907},{note:{number:60,name:`C`,octave:4},type:`noteon`,velocity:.5590551181102362,timestamp:1070.8800000000047},{note:{number:60,name:`C`,octave:4},velocity:.3464566929133858,type:`noteoff`,timestamp:1214.8999999999069},{note:{number:64,name:`E`,octave:4},type:`noteon`,velocity:.5118110236220472,timestamp:1424.9400000000605},{note:{number:64,name:`E`,octave:4},velocity:.2755905511811024,type:`noteoff`,timestamp:1576.9150000000373},{note:{number:62,name:`D`,octave:4},type:`noteon`,velocity:.3937007874015748,timestamp:1756.9149999999208},{note:{number:62,name:`D`,octave:4},velocity:.36220472440944884,type:`noteoff`,timestamp:1926.9899999998743},{note:{number:60,name:`C`,octave:4},type:`noteon`,velocity:.5196850393700787,timestamp:1970.9600000000792},{note:{number:60,name:`C`,octave:4},velocity:.36220472440944884,type:`noteoff`,timestamp:2126.009999999893},{note:{number:60,name:`C`,octave:4},type:`noteon`,velocity:.5984251968503937,timestamp:2502.0050000000047},{note:{number:60,name:`C`,octave:4},velocity:.3858267716535433,type:`noteoff`,timestamp:2853.920000000042},{note:{number:67,name:`G`,octave:4},type:`noteon`,velocity:.6850393700787402,timestamp:2875.8649999999907},{note:{number:67,name:`G`,octave:4},velocity:.6377952755905512,type:`noteoff`,timestamp:4497.004999999888}])},indicateHeardNotes=e=>{(0,d.alertUser)({text:`I hear a ${e.note.name}!`,status:f.Status.ok})};(0,u.watch)(o,()=>{t.value?.selectInput(o.value),checkConfigChanged()}),(0,u.watch)(s,()=>{t.value?.selectOutput(s.value),checkConfigChanged()});let retrieveSettings=async()=>{let t=await(await e.user.getCourseInterface(e._id)).getCourseSettings();if(t?.midiinput){let e=t.midiinput.toString();r.value.some(t=>t.value===e)&&(o.value=e,l.value=e)}if(t?.midioutput){let e=t.midioutput.toString();i.value.some(t=>t.value===e)&&(s.value=e,m.value=e)}t?.keyboardRange&&(y.value=t.keyboardRange.toString(),g.value=y.value),t?.lowestNote&&(b.value=parseInt(t.lowestNote.toString()),_.value=b.value),t?.highestNote&&(x.value=parseInt(t.highestNote.toString()),v.value=x.value),t?.lowestNote&&t?.highestNote&&!t?.keyboardRange&&(g.value=`custom`),h.value=!1},saveSettings=async()=>{c.value=!0,(await(0,p.getDataLayer)().getUserDB().getCourseInterface(e._id)).updateCourseSettings([{key:`midiinput`,value:o.value},{key:`midioutput`,value:s.value},{key:`keyboardRange`,value:g.value},{key:`lowestNote`,value:_.value},{key:`highestNote`,value:v.value}]),l.value=o.value,m.value=s.value,y.value=g.value,b.value=_.value,x.value=v.value,h.value=!1,c.value=!1,(0,d.alertUser)({text:`Settings updated.`,status:f.Status.ok})};return(0,u.onMounted)(async()=>{initNoteOptions();try{t.value=await a.r.instance(),n.value=t.value.state===`ready`||t.value.state===`nodevice`}catch(e){console.log(`Error on midi Init: ${e}`),n.value=!1}n.value&&(t.value?.addNoteonListenter(indicateHeardNotes),t.value?(r.value=t.value.inputs.filter(e=>e.state===`connected`).map(e=>({title:`${e.manufacturer}: ${e.name}`,value:e.id})),i.value=t.value?.outputs.filter(e=>e.state===`connected`).map(e=>({title:`${e.manufacturer}: ${e.name}`,value:e.id}))):(r.value=[{title:`No inputs available`,value:``}],i.value=[{title:`No outputs available`,value:``}]),await retrieveSettings(),!o.value&&r.value.length>0&&(o.value=r.value[0].value),!s.value&&i.value.length>0&&(s.value=i.value[0].value))}),{midiSupported:n,inputs:r,outputs:i,selectedInput:o,selectedOutput:s,updatePending:c,playSound,saveSettings,configChanged:h,lowestNote:_,highestNote:v,keyboardRangeOptions:C,selectedKeyboardRange:g,noteOptions:S,updateCustomRangeFromPreset,updateRangeAndCheckChanges}}}),M={key:0,class:`custom-range-inputs d-flex gap-4`},N={class:`d-flex justify-space-between mt-3`},P={key:1};function _sfc_render(e,t,n,r,i,a){let o=(0,u.resolveComponent)(`v-toolbar-title`),s=(0,u.resolveComponent)(`v-toolbar`),c=(0,u.resolveComponent)(`v-select`),l=(0,u.resolveComponent)(`v-divider`),d=(0,u.resolveComponent)(`piano-range-visualizer`),f=(0,u.resolveComponent)(`v-btn`),p=(0,u.resolveComponent)(`v-form`),m=(0,u.resolveComponent)(`v-card-text`),h=(0,u.resolveComponent)(`v-card`);return(0,u.openBlock)(),(0,u.createBlock)(h,null,{default:(0,u.withCtx)(()=>[(0,u.createVNode)(s,{dense:``},{default:(0,u.withCtx)(()=>[(0,u.createVNode)(o,null,{default:(0,u.withCtx)(()=>t[5]||=[(0,u.createTextVNode)(`Configure Midi Device`)]),_:1})]),_:1}),(0,u.createVNode)(m,null,{default:(0,u.withCtx)(()=>[e.midiSupported?((0,u.openBlock)(),(0,u.createBlock)(p,{key:0,onsubmit:`return false;`},{default:(0,u.withCtx)(()=>[(0,u.createVNode)(c,{modelValue:e.selectedInput,"onUpdate:modelValue":t[0]||=t=>e.selectedInput=t,items:e.inputs,label:`Select Input`,hint:`Play some notes on your input device to test the connection`},null,8,[`modelValue`,`items`]),(0,u.createVNode)(c,{modelValue:e.selectedOutput,"onUpdate:modelValue":t[1]||=t=>e.selectedOutput=t,items:e.outputs,label:`Select Output`},null,8,[`modelValue`,`items`]),(0,u.createVNode)(l,{class:`my-4`}),t[8]||=(0,u.createElementVNode)(`h3`,{class:`text-subtitle-1 mb-2`},`Keyboard Range`,-1),(0,u.createVNode)(c,{modelValue:e.selectedKeyboardRange,"onUpdate:modelValue":[t[2]||=t=>e.selectedKeyboardRange=t,e.updateCustomRangeFromPreset],items:e.keyboardRangeOptions,label:`Select Keyboard Range`},null,8,[`modelValue`,`items`,`onUpdate:modelValue`]),e.selectedKeyboardRange===`custom`?((0,u.openBlock)(),(0,u.createElementBlock)(`div`,M,[(0,u.createVNode)(c,{modelValue:e.lowestNote,"onUpdate:modelValue":[t[3]||=t=>e.lowestNote=t,e.updateRangeAndCheckChanges],items:e.noteOptions,label:`Lowest Note`},null,8,[`modelValue`,`items`,`onUpdate:modelValue`]),(0,u.createVNode)(c,{modelValue:e.highestNote,"onUpdate:modelValue":[t[4]||=t=>e.highestNote=t,e.updateRangeAndCheckChanges],items:e.noteOptions,label:`Highest Note`},null,8,[`modelValue`,`items`,`onUpdate:modelValue`])])):(0,u.createCommentVNode)(``,!0),(0,u.createVNode)(d,{"lowest-note":e.lowestNote,"highest-note":e.highestNote},null,8,[`lowest-note`,`highest-note`]),(0,u.createElementVNode)(`div`,N,[(0,u.createVNode)(f,{color:`primary`,onClick:e.playSound},{default:(0,u.withCtx)(()=>t[6]||=[(0,u.createTextVNode)(`Test midi output`)]),_:1},8,[`onClick`]),(0,u.createVNode)(f,{loading:e.updatePending,disabled:!e.configChanged&&!e.updatePending,color:`info`,class:`save-button`,onClick:e.saveSettings},{default:(0,u.withCtx)(()=>t[7]||=[(0,u.createTextVNode)(` Save these settings `)]),_:1},8,[`loading`,`disabled`,`onClick`])])]),_:1})):((0,u.openBlock)(),(0,u.createElementBlock)(`div`,P,t[9]||=[(0,u.createElementVNode)(`p`,null,`This quilt requires a midi input device, which is not supported by this browser.`,-1),(0,u.createElementVNode)(`div`,null,[(0,u.createElementVNode)(`p`,null,`Try one of the following browsers:`),(0,u.createElementVNode)(`ul`,null,[(0,u.createElementVNode)(`li`,null,[(0,u.createElementVNode)(`a`,{href:`https://www.google.com/chrome/`},`Google Chrome`)]),(0,u.createElementVNode)(`li`,null,[(0,u.createElementVNode)(`a`,{href:`https://www.microsoft.com/edge`},`Microsoft Edge`)]),(0,u.createElementVNode)(`li`,null,[(0,u.createElementVNode)(`a`,{href:`https://brave.com/`},`Brave`)])])],-1)]))]),_:1})]),_:1})}var F=t.r(j,[[`render`,_sfc_render],[`__scopeId`,`data-v-6ee9020f`]]),I=d.useQuestionView;async function loadSubcourse(e){let t;switch(e){case`chess`:t=await Promise.resolve().then(()=>require(`./chess-BVYo88i5.cjs`));break;case`french`:t=await Promise.resolve().then(()=>require(`./french-x9P8RRn8.cjs`));break;case`math`:t=await Promise.resolve().then(()=>require(`./math-BWlIa6-l.cjs`));break;case`piano`:t=await Promise.resolve().then(()=>require(`./piano-Btvkzjfz.cjs`));break;case`pitch`:t=await Promise.resolve().then(()=>require(`./pitch-DsopN5IR.cjs`));break;case`sightSing`:t=await Promise.resolve().then(()=>require(`./sightsing-CtagQ0FJ.cjs`));break;case`typing`:t=await Promise.resolve().then(()=>require(`./typing-CBPjtwrg.cjs`));break;case`wordWork`:t=await Promise.resolve().then(()=>require(`./word-work-C5MTSapy.cjs`));break}let n=t.default;return L.courses.find(e=>e.name===n.name)||L.courses.push(n),n}async function loadAllSubcourses(){await Promise.all([`chess`,`french`,`math`,`piano`,`pitch`,`sightSing`,`typing`,`wordWork`].map(e=>loadSubcourse(e)))}var AllCourseWare=class{courseWareList;get courses(){return this.courseWareList}constructor(e){this.courseWareList=e}getCourseWare(e){return this.courseWareList.find(t=>t.name===e)}cachedRawViews=null;allViewsRaw(){if(!this.cachedRawViews){let e=this.allViews();this.cachedRawViews=Object.fromEntries(Object.entries(e).map(([e,t])=>[e,(0,u.markRaw)(t)]))}return this.cachedRawViews}allViews(){let e={};return this.courseWareList.forEach(t=>{Object.assign(e,t.allViewsMap)}),e}getView(e){let t;t=typeof e==`string`?f.NameSpacer.getViewDescriptor(e):e;let n=this.getCourseWare(t.course);if(n){let e=n.getQuestion(t.questionType);if(e){let r=e.views.find(e=>e.name===t.view);if(r)return r;throw console.error(`QuestionView ${t.view} not found in course ${t.course}
|
|
2
2
|
|
|
3
3
|
descriptor: ${JSON.stringify(t)}
|
|
4
4
|
|
package/dist/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as e, t } from "./shapes-BQUVJdp5.js";
|
|
2
2
|
import { i as n, n as r, r as i, t as a } from "./CourseWare-BTFRjgBR.js";
|
|
3
|
-
import { t as o } from "./chess-
|
|
3
|
+
import { t as o } from "./chess-E2uOAyQS.js";
|
|
4
4
|
import { t as s } from "./french-Dk7YG8Td.js";
|
|
5
5
|
import { t as c } from "./math-B4HbgYf6.js";
|
|
6
6
|
import { a as l, i as u, n as d, o as f, r as p, t as m } from "./piano-DF1g6yaX.js";
|
|
@@ -621,7 +621,7 @@ async function loadSubcourse(e) {
|
|
|
621
621
|
let t;
|
|
622
622
|
switch (e) {
|
|
623
623
|
case "chess":
|
|
624
|
-
t = await import("./chess-
|
|
624
|
+
t = await import("./chess-Lfm7Fsvs.js");
|
|
625
625
|
break;
|
|
626
626
|
case "french":
|
|
627
627
|
t = await import("./french-evUMlbbq.js");
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "0.2.
|
|
6
|
+
"version": "0.2.1",
|
|
7
7
|
"type": "module",
|
|
8
8
|
"sideEffects": false,
|
|
9
9
|
"main": "./dist/index.cjs.js",
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
"lint:check": "eslint ."
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@vue-skuilder/common": "0.2.
|
|
48
|
-
"@vue-skuilder/common-ui": "0.2.
|
|
49
|
-
"@vue-skuilder/db": "0.2.
|
|
47
|
+
"@vue-skuilder/common": "0.2.1",
|
|
48
|
+
"@vue-skuilder/common-ui": "0.2.1",
|
|
49
|
+
"@vue-skuilder/db": "0.2.1",
|
|
50
50
|
"moment": "^2.29.4",
|
|
51
51
|
"paper": "^0.12.3",
|
|
52
52
|
"vue": "^3.5.13"
|
|
@@ -69,5 +69,5 @@
|
|
|
69
69
|
"peerDependencies": {
|
|
70
70
|
"vue": "^3.2.0"
|
|
71
71
|
},
|
|
72
|
-
"stableVersion": "0.2.
|
|
72
|
+
"stableVersion": "0.2.1"
|
|
73
73
|
}
|
package/dist/chess-C_2RQEuq.cjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
require(`./CourseWare-DSeyTAtH.cjs`);const e=require(`./chess-BsgVZARV.cjs`);exports.default=e.t;
|