@transcend-io/consent-manager-ui
Version:
Transcend Consent Manager reference consent UI
30 lines (28 loc) • 955 B
text/typescript
import { CSP_NONCE } from './config';
import { getAppContainer } from './consent-manager';
import { logger } from './logger';
import { createHTMLElement } from './utils/create-html-element';
/**
* Inject CSS into the application
*
* @param stylesheetUrl - The default URL to attempt to load CSS rom
* @returns Promise that finishes when the stylesheet has loaded
*/
export const injectCss = (stylesheetUrl: string): Promise<void> =>
new Promise((res) => {
const root = getAppContainer();
if (root && stylesheetUrl) {
const link = createHTMLElement<HTMLLinkElement>('link');
if (CSP_NONCE) {
link.nonce = CSP_NONCE;
}
link.type = 'text/css';
link.rel = 'stylesheet';
link.id = stylesheetUrl;
link.href = stylesheetUrl;
link.addEventListener('load', () => res());
root.appendChild(link);
} else {
logger.error(`Failed to inject css into consent manager!`);
}
});