import FontObserver from 'fontfaceobserver';
export default {
get name() {
return 'ExpoFontLoader';
},
loadAsync(fontFamilyName, resource) {
const canInjectStyle = document.head && typeof document.head.appendChild === 'function';
if (!canInjectStyle) {
throw new Error('E_FONT_CREATION_FAILED : document element cannot support injecting fonts');
}
const style = _createWebStyle(fontFamilyName, resource);
document.head.appendChild(style);
return new FontObserver(fontFamilyName).load();
},
};
function _createWebStyle(fontFamily, resource) {
const fontStyle = `@font-face {
font-family: ${fontFamily};
src: url(${resource});
}`;
const styleElement = document.createElement('style');
styleElement.type = 'text/css';
// @ts-ignore: TypeScript does not define HTMLStyleElement::styleSheet. This is just for IE and
// possibly can be removed if it's unnecessary on IE 11.
if (styleElement.styleSheet) {
// @ts-ignore
styleElement.styleSheet.cssText = fontStyle;
}
else {
const textNode = document.createTextNode(fontStyle);
styleElement.appendChild(textNode);
}
return styleElement;
}
//# sourceMappingURL=ExpoFontLoader.web.js.map