import { EMBED_DEFINITIONS, LANGUAGES, RecursivePartial } from '@bigbluebutton/editor' import { version } from '../ui/version' import { TLEditorAssetUrls, defaultEditorAssetUrls } from '../utils/static-assets/assetUrls' import { TLUiIconType, iconTypes } from './icon-types' export type TLUiAssetUrls = TLEditorAssetUrls & { icons: Record, string> translations: Record<(typeof LANGUAGES)[number]['locale'], string> embedIcons: Record<(typeof EMBED_DEFINITIONS)[number]['type'], string> } /** @public */ export type TLUiAssetUrlOverrides = RecursivePartial export let defaultUiAssetUrls: TLUiAssetUrls = { ...defaultEditorAssetUrls, icons: Object.fromEntries( iconTypes.map((name) => [ name, `https://unpkg.com/@bigbluebutton/assets@${version}/icons/icon/${name}.svg`, ]) ) as Record, translations: Object.fromEntries( LANGUAGES.map((lang) => [ lang.locale, `https://unpkg.com/@bigbluebutton/assets@${version}/translations/${lang.locale}.json`, ]) ) as Record<(typeof LANGUAGES)[number]['locale'], string>, embedIcons: Object.fromEntries( EMBED_DEFINITIONS.map((def) => [ def.type, `https://unpkg.com/@bigbluebutton/assets@${version}/embed-icons/${def.type}.png`, ]) ) as Record<(typeof EMBED_DEFINITIONS)[number]['type'], string>, } /** @internal */ export function setDefaultUiAssetUrls(urls: TLUiAssetUrls) { defaultUiAssetUrls = urls } /** @internal */ export function useDefaultUiAssetUrlsWithOverrides( overrides?: RecursivePartial ): TLUiAssetUrls { if (!overrides) return defaultUiAssetUrls return { fonts: Object.assign({ ...defaultUiAssetUrls.fonts }, { ...overrides?.fonts }), icons: Object.assign({ ...defaultUiAssetUrls.icons }, { ...overrides?.icons }), embedIcons: Object.assign({ ...defaultUiAssetUrls.embedIcons }, { ...overrides?.embedIcons }), translations: Object.assign( { ...defaultUiAssetUrls.translations }, { ...overrides?.translations } ), } }