UNPKG

@realfavicongenerator/generate-favicon

Version:
39 lines (31 loc) 1.52 kB
import { FaviconAssetPathTransformer, FaviconFiles, FaviconMarkups, identityFaviconAssetPathTransformer } from "."; import { MasterIcon, transformSvg } from "../icon/helper"; import { TouchIconSettings } from "../icon/ios"; import { scaleSvg } from "../svg"; import { ImageAdapter } from "../svg/adapter"; export const TouchIconFileName = 'apple-touch-icon.png'; export const TouchIconPngSize = 180; export const generateTouchIconHtml = (faviconPath: string, appTitle: string | null, transformer: FaviconAssetPathTransformer = identityFaviconAssetPathTransformer): FaviconMarkups => { const markups = [ `<link rel="apple-touch-icon" sizes="180x180" href="${transformer(`${faviconPath}${TouchIconFileName}`, true, false)}" />`, ]; const cssSelectors = [ `link[rel="apple-touch-icon"]` ]; if (appTitle) { markups.push(`<meta name="apple-mobile-web-app-title" content="${appTitle}" />`); cssSelectors.push(`meta[name="apple-mobile-web-app-title"]`); } return { markups, cssSelectors }; } export const generateTouchIconFiles = async (masterIcon: MasterIcon, settings: TouchIconSettings, imageAdapeter: ImageAdapter): Promise<FaviconFiles> => { const transformedIcon = transformSvg( masterIcon.icon, settings.transformation, imageAdapeter, TouchIconPngSize ); const touchIcon = await imageAdapeter.convertSvgToPng( scaleSvg(transformedIcon, TouchIconPngSize, imageAdapeter) ); return { [TouchIconFileName]: touchIcon }; }