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.57 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).STEMCtunnel={})}(this,(function(e){"use strict";class t{$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 s(e,t){return e.id===t}function n(){return Math.random()}const o="undefined"!=typeof window?new t(window):new t(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.`)}}),i=new class{tunnel;constructor(e){this.tunnel=e}createItem(e){return new Promise(((t,o)=>{const i=n(),r=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 n=e.data;s(n,i)&&(n.err?o(n.err):t(n.value),r.dispose())}}));this.tunnel.postMessage({type:"@stemcstudio/gradebook:create-item",id:i,item:e})}))}getItems(){return new Promise(((e,t)=>{const o=n(),i=this.tunnel.subscribe((function(n){if(function(e){const t=e;return!(!t.data.type||"@stemcstudio/gradebook:get-items-response"!==t.data.type)}(n)){const r=n.data;s(r,o)&&(r.err?t(r.err):e(r.value),i.dispose())}}));this.tunnel.postMessage({type:"@stemcstudio/gradebook:get-items",id:o})}))}getResults(e){return new Promise(((t,o)=>{const i=n(),r=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 n=e.data;s(n,i)&&(n.err?o(n.err):t(n.value),r.dispose())}}));this.tunnel.postMessage({type:"@stemcstudio/gradebook:get-results",id:i,itemId:e})}))}submitScore(e,t){return new Promise(((o,i)=>{const r=n(),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 t=e.data;s(t,r)&&(t.err?i(t.err):o(),a.dispose())}}));this.tunnel.postMessage({type:"@stemcstudio/gradebook:submit-score",id:r,itemId:e,score:t})}))}}(o),r=new class{tunnel;constructor(e){this.tunnel=e}getMembers(){return new Promise(((e,t)=>{const o=n(),i=this.tunnel.subscribe((function(n){if(function(e){const t=e;return!(!t.data.type||"@stemcstudio/organization:get-members-response"!==t.data.type)}(n)){const r=n.data;s(r,o)&&(r.err?t(r.err):e(r.value),i.dispose())}}));this.tunnel.postMessage({type:"@stemcstudio/organization:get-members",id:o})}))}}(o),a=new class{tunnel;constructor(e){this.tunnel=e}alert(e){return new Promise(((t,o)=>{const i=n(),r=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 n=e.data;s(n,i)&&(n.err?o(n.err):t(n.value),r.dispose())}}));this.tunnel.postMessage({type:"@stemcstudio/modal-dialog-service:alert",id:i,title:e.title,message:e.message})}))}confirm(e){return new Promise(((t,o)=>{const i=(r=e.title,a=e.message,c=e.actionButtonText,u=e.cancelButtonText,{type:"@stemcstudio/modal-dialog-service:confirm",id:n(),title:r,message:a,actionButtonText:c,cancelButtonText:u});var r,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 n=e.data;s(n,i.id)&&(n.err?o(n.err):t(n.value),d.dispose())}}));this.tunnel.postMessage(i)}))}prompt(e){return new Promise(((t,o)=>{const i=(r=e.title,a=e.message,c=e.text,u=e.label,d=e.hint,l=e.actionButtonText,m=e.cancelButtonText,{type:"@stemcstudio/modal-dialog-service:prompt",id:n(),title:r,message:a,text:c,label:u,hint:d,actionButtonText:l,cancelButtonText:m});var r,a,c,u,d,l,m;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 n=e.data;s(n,i.id)&&(n.err?o(n.err):t(n.value),p.dispose())}}));this.tunnel.postMessage(i)}))}}(o);e.cohort=r,e.gradebook=i,e.tunnel=o,e.user=a})); //# sourceMappingURL=index.min.js.map