UNPKG

stemcstudio-tunnel

Version:

Allows STEMCstudio programs to post and receive messages when embedded in an IFrame and an LTI 1.3 LMS.

3 lines (2 loc) 4.33 kB
class e{$window;constructor(e){this.$window=e,this.setWindow(e)}setWindow(e){if(!e)throw new Error("window must be defined.");this.$window=e}subscribe(e){return this.$window.addEventListener("message",e),t=()=>{this.$window.removeEventListener("message",e)},{dispose:()=>{t()}};var t}postMessage(e,t){try{const s="undefined"!=typeof document?document.location.origin:"";this.$window.parent.postMessage(e,s,t)}catch(t){console.error(`${JSON.stringify(e)}`),console.error(`Cause: ${t}`)}}}function t(e,t){return e.id===t}function s(){return Math.random()}const n="undefined"!=typeof window?new e(window):new e(new class{parent;addEventListener(e,t){throw new Error(`addEventListener(type=${e}, handler=${typeof t}) method is not implemented.`)}removeEventListener(e,t){throw new Error(`removeEventListener(type=${e}, handler=${typeof t}) method is not implemented.`)}}),o=new class{tunnel;constructor(e){this.tunnel=e}createItem(e){return new Promise(((n,o)=>{const r=s(),i=this.tunnel.subscribe((function(e){if(function(e){const t=e;return!(!t.data.type||"@stemcstudio/gradebook:create-item-response"!==t.data.type)}(e)){const s=e.data;t(s,r)&&(s.err?o(s.err):n(s.value),i.dispose())}}));this.tunnel.postMessage({type:"@stemcstudio/gradebook:create-item",id:r,item:e})}))}getItems(){return new Promise(((e,n)=>{const o=s(),r=this.tunnel.subscribe((function(s){if(function(e){const t=e;return!(!t.data.type||"@stemcstudio/gradebook:get-items-response"!==t.data.type)}(s)){const i=s.data;t(i,o)&&(i.err?n(i.err):e(i.value),r.dispose())}}));this.tunnel.postMessage({type:"@stemcstudio/gradebook:get-items",id:o})}))}getResults(e){return new Promise(((n,o)=>{const r=s(),i=this.tunnel.subscribe((function(e){if(function(e){const t=e;return!(!t.data.type||"@stemcstudio/gradebook:get-results-response"!==t.data.type)}(e)){const s=e.data;t(s,r)&&(s.err?o(s.err):n(s.value),i.dispose())}}));this.tunnel.postMessage({type:"@stemcstudio/gradebook:get-results",id:r,itemId:e})}))}submitScore(e,n){return new Promise(((o,r)=>{const i=s(),a=this.tunnel.subscribe((function(e){if(function(e){const t=e;return!(!t.data.type||"@stemcstudio/gradebook:submit-score-response"!==t.data.type)}(e)){const s=e.data;t(s,i)&&(s.err?r(s.err):o(),a.dispose())}}));this.tunnel.postMessage({type:"@stemcstudio/gradebook:submit-score",id:i,itemId:e,score:n})}))}}(n),r=new class{tunnel;constructor(e){this.tunnel=e}getMembers(){return new Promise(((e,n)=>{const o=s(),r=this.tunnel.subscribe((function(s){if(function(e){const t=e;return!(!t.data.type||"@stemcstudio/organization:get-members-response"!==t.data.type)}(s)){const i=s.data;t(i,o)&&(i.err?n(i.err):e(i.value),r.dispose())}}));this.tunnel.postMessage({type:"@stemcstudio/organization:get-members",id:o})}))}}(n),i=new class{tunnel;constructor(e){this.tunnel=e}alert(e){return new Promise(((n,o)=>{const r=s(),i=this.tunnel.subscribe((function(e){if(function(e){const t=e;return!(!t.data.type||"@stemcstudio/modal-dialog-service:alert-response"!==t.data.type)}(e)){const s=e.data;t(s,r)&&(s.err?o(s.err):n(s.value),i.dispose())}}));this.tunnel.postMessage({type:"@stemcstudio/modal-dialog-service:alert",id:r,title:e.title,message:e.message})}))}confirm(e){return new Promise(((n,o)=>{const r=(i=e.title,a=e.message,c=e.actionButtonText,u=e.cancelButtonText,{type:"@stemcstudio/modal-dialog-service:confirm",id:s(),title:i,message:a,actionButtonText:c,cancelButtonText:u});var i,a,c,u;const d=this.tunnel.subscribe((function(e){if(function(e){const t=e;return!(!t.data.type||"@stemcstudio/modal-dialog-service:confirm-response"!==t.data.type)}(e)){const s=e.data;t(s,r.id)&&(s.err?o(s.err):n(s.value),d.dispose())}}));this.tunnel.postMessage(r)}))}prompt(e){return new Promise(((n,o)=>{const r=(i=e.title,a=e.message,c=e.text,u=e.label,d=e.hint,m=e.actionButtonText,l=e.cancelButtonText,{type:"@stemcstudio/modal-dialog-service:prompt",id:s(),title:i,message:a,text:c,label:u,hint:d,actionButtonText:m,cancelButtonText:l});var i,a,c,u,d,m,l;const p=this.tunnel.subscribe((function(e){if(function(e){const t=e;return!(!t.data.type||"@stemcstudio/modal-dialog-service:prompt-response"!==t.data.type)}(e)){const s=e.data;t(s,r.id)&&(s.err?o(s.err):n(s.value),p.dispose())}}));this.tunnel.postMessage(r)}))}}(n);export{r as cohort,o as gradebook,n as tunnel,i as user}; //# sourceMappingURL=index.min.js.map