41 lines
1.2 KiB
TypeScript
41 lines
1.2 KiB
TypeScript
import { CodedError, UnavailabilityError } from 'expo-modules-core';
|
|
|
|
import ExpoFontLoader from './ExpoFontLoader';
|
|
import { FontSource } from './Font.types';
|
|
import { getAssetForSource, loadSingleFontAsync } from './FontLoader';
|
|
|
|
/**
|
|
* @returns the server resources that should be statically extracted.
|
|
* @private
|
|
*/
|
|
export function getServerResources(): string[] {
|
|
if (!ExpoFontLoader.getServerResources) {
|
|
throw new UnavailabilityError('expo-font', 'getServerResources');
|
|
}
|
|
return ExpoFontLoader.getServerResources();
|
|
}
|
|
|
|
/**
|
|
* @returns clear the server resources from the global scope.
|
|
* @private
|
|
*/
|
|
export function resetServerContext() {
|
|
if (!ExpoFontLoader.resetServerContext) {
|
|
throw new UnavailabilityError('expo-font', 'resetServerContext');
|
|
}
|
|
return ExpoFontLoader.resetServerContext();
|
|
}
|
|
|
|
export function registerStaticFont(fontFamily: string, source?: FontSource | null) {
|
|
// MUST BE A SYNC FUNCTION!
|
|
if (!source) {
|
|
throw new CodedError(
|
|
`ERR_FONT_SOURCE`,
|
|
`Cannot load null or undefined font source: { "${fontFamily}": ${source} }. Expected asset of type \`FontSource\` for fontFamily of name: "${fontFamily}"`
|
|
);
|
|
}
|
|
const asset = getAssetForSource(source);
|
|
|
|
loadSingleFontAsync(fontFamily, asset);
|
|
}
|