@streambird/streambird-js
Version:
72 lines (69 loc) • 2.25 kB
JavaScript
const PUBLIC_URL = 'https://js.streambird.io/sdk/dist/v1.0.20/streambird.js';
function getJSUrl() {
try {
if (process.env.STREAMBIRD_JS_SDK_URL) {
return process.env.STREAMBIRD_JS_SDK_URL;
}
if (process.env.REACT_APP_STREAMBIRD_JS_SDK_URL) {
return process.env.REACT_APP_STREAMBIRD_JS_SDK_URL;
}
if (process.env.NEXT_PUBLIC_STREAMBIRD_JS_SDK_URL) {
return process.env.NEXT_PUBLIC_STREAMBIRD_JS_SDK_URL;
}
if (process.env.STORYBOOK_STREAMBIRD_JS_SDK_URL) {
return process.env.STORYBOOK_STREAMBIRD_JS_SDK_URL;
}
return PUBLIC_URL;
}
catch (err) {
return PUBLIC_URL;
}
}
const STREAMBIRD_JS_URL = getJSUrl();
const findOrCreateScript = () => {
const scripts = document.querySelectorAll(`script[src="${STREAMBIRD_JS_URL}"]`);
if (scripts[0]) {
return scripts[0];
}
const script = document.createElement('script');
script.src = STREAMBIRD_JS_URL;
document.head.appendChild(script);
return script;
};
const loadScript = () => {
const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';
if (!isBrowser) {
return Promise.resolve(null);
}
return new Promise((resolve, reject) => {
if (window.Streambird) {
console.warn('Streambird.js has already been loaded');
resolve(window.Streambird);
}
const script = findOrCreateScript();
script.addEventListener('load', () => {
if (window.Streambird) {
resolve(window.Streambird);
}
else {
reject(new Error('Streambird.js could not be loaded'));
}
});
script.addEventListener('error', () => {
reject(new Error('Streambird.js could not be loaded'));
});
});
};
const streambirdPromise = Promise.resolve().then(() => loadScript());
let loadCalled = false;
streambirdPromise.catch((err) => {
if (!loadCalled) {
console.warn(err);
}
});
const loadStreambird = () => {
loadCalled = true;
return streambirdPromise;
};
export { loadStreambird };
//# sourceMappingURL=index.esm.js.map