UNPKG

react-chromecast

Version:
3 lines (2 loc) 5.11 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("react-helmet");function n(){return(n=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}const r=function(){function e(){}return e.prototype.then=function(t,n){const r=new e,o=this.s;if(o){const e=1&o?t:n;if(e){try{i(r,1,e(this.v))}catch(e){i(r,2,e)}return r}return this}return this.o=function(e){try{const o=e.v;1&e.s?i(r,1,t?t(o):o):n?i(r,1,n(o)):i(r,2,o)}catch(e){i(r,2,e)}},r},e}();function i(e,t,n){if(!e.s){if(n instanceof r){if(!n.s)return void(n.o=i.bind(null,e,t));1&t&&(t=n.s),n=n.v}if(n&&n.then)return void n.then(i.bind(null,e,t),i.bind(null,e,2));e.s=t,e.v=n;const o=e.o;o&&o(e)}}function o(e){return e instanceof r&&1&e.s}"undefined"!=typeof Symbol&&(Symbol.iterator||(Symbol.iterator=Symbol("Symbol.iterator"))),"undefined"!=typeof Symbol&&(Symbol.asyncIterator||(Symbol.asyncIterator=Symbol("Symbol.asyncIterator")));var s=e.createContext({}),c=e.useState,u=e.useEffect;exports.default=function(a){var l=a.children,f=c({}),v=f[0],d=f[1],m=c({}),h=m[0],y=m[1];return u((function(){!function(){try{var e,t,n=function(){if(0===u||!e)throw new Error("Can't Load castReceiver and\\or castSender");d({castReceiver:e,castSender:t})},s=!1,c=!1,u=15,a=function(e,t,n){for(var s;;){var c=e();if(o(c)&&(c=c.v),!c)return u;if(c.then){s=0;break}var u=n();if(u&&u.then){if(!o(u)){s=1;break}u=u.s}}var a=new r,l=i.bind(null,a,2);return(0===s?c.then(v):1===s?u.then(f):(void 0).then((function(){(c=e())?c.then?c.then(v).then(void 0,l):v(c):i(a,1,u)}))).then(void 0,l),a;function f(t){u=t;do{if(!(c=e())||o(c)&&!c.v)return void i(a,1,u);if(c.then)return void c.then(v).then(void 0,l);o(u=n())&&(u=u.v)}while(!u||!u.then);u.then(f).then(void 0,l)}function v(e){e?(u=n())&&u.then?u.then(f).then(void 0,l):f(u):i(a,1,u)}}((function(){return!s}),0,(function(){try{e=window.chrome.cast,t=window.cast.framework,c=!0}catch(e){--u||(c=!0)}finally{if(c)return void(s=!0)}return Promise.resolve(new Promise((function(e){setTimeout(e,95)}))).then((function(){}))}));a&&a.then?a.then(n):n()}catch(e){Promise.reject(e)}}()}),[]),e.createElement(e.Fragment,null,e.createElement(t.Helmet,null,e.createElement("script",{src:"//www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1"}),e.createElement("script",{src:"//www.gstatic.com/cast/sdk/libs/receiver/2.0.0/cast_receiver.js"})),e.createElement(s.Provider,{value:n({},v,{session:h,setSession:y})},l))},exports.useCast=function(t){var r=t||{},i=r.initialize_media_player,o=r.auto_initialize,c=e.useContext(s),u=c.castReceiver,a=c.castSender,l=c.setSession,f=e.useState({}),v=f[0],d=f[1],m=e.useState(!1),h=m[0],y=m[1],w=e.useCallback((function(e){if(u){var t=new u.SessionRequest(u.media[e]),n=new u.ApiConfig(t,(function(e){l&&l(e),y(!0)}),(function(e){}));u.initialize(n,(function(e){}),(function(e){})),d({castReceiver:u})}}),[u,l]),p=e.useCallback((function(){return new Promise((function(e,t){u&&u.requestSession((function(t){l&&l(t),y(!0),e(t)}),(function(n){return y(!1),h?e(null):t(n)}))}))}),[u,l]);e.useEffect((function(){if(u){if(d({castReceiver:u}),o&&!i)throw new Error("if you pass auto_initialize: true, you should pass initialize_media_player");o&&i&&w(i)}}),[u,a]);var b=n({},v,{handleConnection:p,isConnect:h});return o||(b.initializeCast=w),b},exports.useMedia=function(){var t=e.useContext(s),n=t.session,r=t.castReceiver,i=e.useState(null),o=i[0],c=i[1],u=e.useState(!1),a=u[0],l=u[1];e.useEffect((function(){!n&&a&&l(!1)}),[n,a]);var f=e.useCallback((function(e,t){return new Promise((function(i,o){if(!r||!n)return o(new Error("An Error occurred"));var s=new r.media.MediaInfo(e),u=new r.media.LoadRequest(s);u.autoplay=t||!0,n.loadMedia(u,(function(e){c(e),l(!0),i(e)}),(function(e){return o(e)}))}))}),[r,n]),v=e.useCallback((function(e){try{if(!r&&!o)return Promise.resolve();var t=new r.media.MediaInfo(e),n=new r.media.QueueItem(t);return Promise.resolve(o.queueAppendItem(n)).then((function(){}))}catch(e){return Promise.reject(e)}}),[o,r]),d=e.useCallback((function(){try{return o?Promise.resolve(o.play()).then((function(){})):Promise.resolve()}catch(e){return Promise.reject(e)}}),[o]),m=e.useCallback((function(){try{return o?Promise.resolve(o.pause()).then((function(){})):Promise.resolve()}catch(e){return Promise.reject(e)}}),[o]),h=e.useCallback((function(){try{return o?Promise.resolve(o.queuePrev()).then((function(){})):Promise.resolve()}catch(e){return Promise.reject(e)}}),[o]),y=e.useCallback((function(){try{return o?Promise.resolve(o.queueNext()).then((function(){})):Promise.resolve()}catch(e){return Promise.reject(e)}}),[o]),w=e.useCallback((function(e){try{if(!o&&!r)return Promise.resolve();var t=new r.media.SeekRequest;return t.currentTime=e,Promise.resolve(o.seek(t)).then((function(){}))}catch(e){return Promise.reject(e)}}),[o,r]);return{playMedia:f,addMedia:v,play:d,pause:m,isMedia:a,next:y,prev:h,to:w}}; //# sourceMappingURL=react-chromecast.cjs.production.min.js.map