{"version":3,"file":"MediaHelpers.js","sourceRoot":"","sources":["../../TS/MediaHelpers.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,YAAY;IAMd,UAAU;QACb,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC;QAElC,MAAM,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;QAE9B,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,QAAQ,CAAC,EAAU;QACvB,IAAI,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAC1C,IAAI,KAAK,GAAG,IAAI,CAAC;QAEjB,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,IAAI,SAAS,EAAE;YACzC,IAAI,OAAO,YAAY,gBAAgB,EAAE;gBACrC,KAAK,GAAG,OAAO,CAAC;aACnB;iBACI;gBACD,IAAI,aAAa,GAAG,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;gBAC1D,IAAI,aAAa,IAAI,IAAI,IAAI,aAAa,IAAI,SAAS,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;oBACjF,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;iBAC5B;aACJ;SACJ;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAEM,SAAS,CAAC,EAAU;QACvB,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAE9B,IAAI,KAAK,IAAI,IAAI,EAAE;YACf,KAAK,CAAC,IAAI,EAAE,CAAC;SAChB;IACL,CAAC;IAEM,SAAS,CAAC,EAAU,EAAE,YAAqB,KAAK;QACnD,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAE9B,IAAI,KAAK,IAAI,IAAI,EAAE;YACf,IAAI,SAAS,EAAE;gBACX,KAAK,CAAC,IAAI,EAAE,CAAC;aAChB;YAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YAE7B,IAAI,OAAO,KAAK,SAAS,EAAE;gBACvB,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE;oBACd,eAAe;gBACnB,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;oBACb,qBAAqB;oBACrB,kHAAkH;oBAClH,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;oBACpB,KAAK,CAAC,IAAI,EAAE,CAAC;gBACjB,CAAC,CAAC,CAAC;aACN;SACJ;IACL,CAAC;IAEM,UAAU,CAAC,EAAU;QACxB,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAE9B,IAAI,KAAK,IAAI,IAAI,EAAE;YACf,KAAK,CAAC,KAAK,EAAE,CAAC;SACjB;IACL,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAAC,GAAW;QACrC,IAAI;YACA,IAAI,YAAY,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;YAElC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,kBAAkB;SAClD;QAAC,OAAO,CAAC,EAAE;YACR,oDAAoD;SACvD;IACL,CAAC;CACJ","sourcesContent":["import { IJSModule } from \"./IJSModule.js\";\r\n\r\nexport class MediaHelpers implements IJSModule {\r\n\r\n public serviceName: string;\r\n\r\n private ASSEMBLYNAME;\r\n\r\n public initialize(): boolean {\r\n this.ASSEMBLYNAME = 'SPCW';\r\n this.serviceName = \"MediaHelpers\";\r\n\r\n window['MediaHelpers'] = this;\r\n\r\n return true;\r\n }\r\n\r\n private getAudio(id: string): HTMLAudioElement {\r\n let element = document.getElementById(id);\r\n let audio = null;\r\n\r\n if (element != null && element != undefined) {\r\n if (element instanceof HTMLAudioElement) {\r\n audio = element;\r\n }\r\n else {\r\n let audioElements = element.getElementsByTagName('audio');\r\n if (audioElements != null && audioElements != undefined && audioElements.length > 0) {\r\n audio = audioElements[0];\r\n }\r\n }\r\n }\r\n\r\n return audio;\r\n }\r\n\r\n public loadAudio(id: string): void {\r\n let audio = this.getAudio(id);\r\n\r\n if (audio != null) {\r\n audio.load();\r\n }\r\n }\r\n\r\n public playAudio(id: string, fromStart: boolean = false): void {\r\n let audio = this.getAudio(id);\r\n\r\n if (audio != null) {\r\n if (fromStart) {\r\n audio.load();\r\n }\r\n\r\n const promise = audio.play();\r\n\r\n if (promise !== undefined) {\r\n promise.then(() => {\r\n // play started\r\n }).catch(error => {\r\n // play was prevented\r\n // VM - fixes load interruption error but not the user interaction one. Has to be detected outside before the call\r\n audio.muted = false;\r\n audio.play();\r\n });\r\n }\r\n }\r\n }\r\n\r\n public pauseAudio(id: string): void {\r\n let audio = this.getAudio(id);\r\n\r\n if (audio != null) {\r\n audio.pause();\r\n }\r\n }\r\n\r\n public async playAudioFromUrl(url: string) {\r\n try {\r\n let oneTimeAudio = new Audio(url);\r\n\r\n var _ = oneTimeAudio.play(); // fire and forget\r\n } catch (e) {\r\n // CJ - do anything with this? return in JSOpResult?\r\n }\r\n }\r\n}\r\n"]}