1{"version":3,"file":"withAndroidIcons.js","names":["_configPlugins","data","require","_imageUtils","_fsExtra","_interopRequireDefault","_path","_withAndroidManifestIcons","obj","__esModule","default","Colors","AndroidConfig","dpiValues","mdpi","folderName","scale","hdpi","xhdpi","xxhdpi","xxxhdpi","exports","BASELINE_PIXEL_SIZE","ANDROID_RES_PATH","MIPMAP_ANYDPI_V26","ICON_BACKGROUND","IC_LAUNCHER_PNG","IC_LAUNCHER_ROUND_PNG","IC_LAUNCHER_BACKGROUND_PNG","IC_LAUNCHER_FOREGROUND_PNG","IC_LAUNCHER_MONOCHROME_PNG","IC_LAUNCHER_XML","IC_LAUNCHER_ROUND_XML","withAndroidIcons","config","foregroundImage","backgroundColor","backgroundImage","monochromeImage","getAdaptiveIcon","icon","getIcon","withAndroidManifestIcons","withAndroidAdaptiveIconColors","withDangerousMod","_config$android","setIconAsync","modRequest","projectRoot","isAdaptive","android","adaptiveIcon","setRoundIconManifest","manifest","_config$android2","application","Manifest","getMainApplicationOrThrow","$","withAndroidColors","modResults","setBackgroundColor","_config$android3","_config$android$adapt","_config$android4","_config$android4$adap","_config$android$adapt2","_config$android5","_config$android5$adap","_config$android$adapt3","_config$android6","_config$android6$adap","_config$android$adapt4","_config$android7","_config$android7$adap","configureLegacyIconAsync","generateRoundIconAsync","deleteIconNamedAsync","configureAdaptiveIconAsync","generateMultiLayerImageAsync","outputImageFileName","imageCacheFolder","backgroundImageCacheFolder","borderRadiusRatio","generateMonochromeImageAsync","backgroundImageFileName","icLauncherXmlString","createAdaptiveIconXmlString","createAdaptiveIconXmlFiles","colors","assignColorValue","value","name","background","iconElements","push","join","add","anyDpiV26Directory","path","resolve","fs","ensureDir","launcherPath","launcherRoundPath","Promise","all","writeFile","map","existsSync","remove","iterateDpiValues","dpiFolder","iconLayer","generateIconAsync","cacheType","src","backgroundLayer","compositeImagesAsync","foreground","monochromeIcon","callback","Object","values","iconSizePx","generateImageAsync","width","height","resizeMode","borderRadius","undefined","source"],"sources":["../../../src/plugins/icons/withAndroidIcons.ts"],"sourcesContent":["import {\n AndroidConfig,\n ConfigPlugin,\n withAndroidColors,\n withDangerousMod,\n} from '@expo/config-plugins';\nimport { ResourceXML } from '@expo/config-plugins/build/android/Resources';\nimport { ExpoConfig } from '@expo/config-types';\nimport { compositeImagesAsync, generateImageAsync } from '@expo/image-utils';\nimport fs from 'fs-extra';\nimport path from 'path';\n\nimport { withAndroidManifestIcons } from './withAndroidManifestIcons';\n\nconst { Colors } = AndroidConfig;\n\ntype DPIString = 'mdpi' | 'hdpi' | 'xhdpi' | 'xxhdpi' | 'xxxhdpi';\ntype dpiMap = Record<DPIString, { folderName: string; scale: number }>;\n\nexport const dpiValues: dpiMap = {\n mdpi: { folderName: 'mipmap-mdpi', scale: 1 },\n hdpi: { folderName: 'mipmap-hdpi', scale: 1.5 },\n xhdpi: { folderName: 'mipmap-xhdpi', scale: 2 },\n xxhdpi: { folderName: 'mipmap-xxhdpi', scale: 3 },\n xxxhdpi: { folderName: 'mipmap-xxxhdpi', scale: 4 },\n};\nconst BASELINE_PIXEL_SIZE = 108;\nexport const ANDROID_RES_PATH = 'android/app/src/main/res/';\nconst MIPMAP_ANYDPI_V26 = 'mipmap-anydpi-v26';\nconst ICON_BACKGROUND = 'iconBackground';\nconst IC_LAUNCHER_PNG = 'ic_launcher.png';\nconst IC_LAUNCHER_ROUND_PNG = 'ic_launcher_round.png';\nconst IC_LAUNCHER_BACKGROUND_PNG = 'ic_launcher_background.png';\nconst IC_LAUNCHER_FOREGROUND_PNG = 'ic_launcher_foreground.png';\nconst IC_LAUNCHER_MONOCHROME_PNG = 'ic_launcher_monochrome.png';\nconst IC_LAUNCHER_XML = 'ic_launcher.xml';\nconst IC_LAUNCHER_ROUND_XML = 'ic_launcher_round.xml';\n\nexport const withAndroidIcons: ConfigPlugin = (config) => {\n const { foregroundImage, backgroundColor, backgroundImage, monochromeImage } =\n getAdaptiveIcon(config);\n const icon = foregroundImage ?? getIcon(config);\n\n if (!icon) {\n return config;\n }\n\n config = withAndroidManifestIcons(config);\n // Apply colors.xml changes\n config = withAndroidAdaptiveIconColors(config, backgroundColor);\n return withDangerousMod(config, [\n 'android',\n async (config) => {\n await setIconAsync(config.modRequest.projectRoot, {\n icon,\n backgroundColor,\n backgroundImage,\n monochromeImage,\n isAdaptive: !!config.android?.adaptiveIcon,\n });\n return config;\n },\n ]);\n};\n\nexport function setRoundIconManifest(\n config: Pick<ExpoConfig, 'android'>,\n manifest: AndroidConfig.Manifest.AndroidManifest\n): AndroidConfig.Manifest.AndroidManifest {\n const isAdaptive = !!config.android?.adaptiveIcon;\n const application = AndroidConfig.Manifest.getMainApplicationOrThrow(manifest);\n\n if (isAdaptive) {\n application.$['android:roundIcon'] = '@mipmap/ic_launcher_round';\n } else {\n delete application.$['android:roundIcon'];\n }\n return manifest;\n}\n\nconst withAndroidAdaptiveIconColors: ConfigPlugin<string | null> = (config, backgroundColor) => {\n return withAndroidColors(config, (config) => {\n config.modResults = setBackgroundColor(backgroundColor ?? '#FFFFFF', config.modResults);\n return config;\n });\n};\n\nexport function getIcon(config: ExpoConfig) {\n return config.android?.icon || config.icon || null;\n}\n\nexport function getAdaptiveIcon(config: ExpoConfig) {\n return {\n foregroundImage: config.android?.adaptiveIcon?.foregroundImage ?? null,\n backgroundColor: config.android?.adaptiveIcon?.backgroundColor ?? null,\n backgroundImage: config.android?.adaptiveIcon?.backgroundImage ?? null,\n monochromeImage: config.android?.adaptiveIcon?.monochromeImage ?? null,\n };\n}\n\n/**\n * Resizes the user-provided icon to create a set of legacy icon files in\n * their respective \"mipmap\" directories for <= Android 7, and creates a set of adaptive\n * icon files for > Android 7 from the adaptive icon files (if provided).\n */\nexport async function setIconAsync(\n projectRoot: string,\n {\n icon,\n backgroundColor,\n backgroundImage,\n monochromeImage,\n isAdaptive,\n }: {\n icon: string | null;\n backgroundColor: string | null;\n backgroundImage: string | null;\n monochromeImage: string | null;\n isAdaptive: boolean;\n }\n) {\n if (!icon) {\n return null;\n }\n\n await configureLegacyIconAsync(projectRoot, icon, backgroundImage, backgroundColor);\n if (isAdaptive) {\n await generateRoundIconAsync(projectRoot, icon, backgroundImage, backgroundColor);\n } else {\n await deleteIconNamedAsync(projectRoot, IC_LAUNCHER_ROUND_PNG);\n }\n await configureAdaptiveIconAsync(projectRoot, icon, backgroundImage, monochromeImage, isAdaptive);\n\n return true;\n}\n\n/**\n * Configures legacy icon files to be used on Android 7 and earlier. If adaptive icon configuration\n * was provided, we create a pseudo-adaptive icon by layering the provided files (or background\n * color if no backgroundImage is provided. If no backgroundImage and no backgroundColor are provided,\n * the background is set to transparent.)\n */\nasync function configureLegacyIconAsync(\n projectRoot: string,\n icon: string,\n backgroundImage: string | null,\n backgroundColor: string | null\n) {\n return generateMultiLayerImageAsync(projectRoot, {\n icon,\n backgroundImage,\n backgroundColor,\n outputImageFileName: IC_LAUNCHER_PNG,\n imageCacheFolder: 'android-standard-square',\n backgroundImageCacheFolder: 'android-standard-square-background',\n });\n}\n\nasync function generateRoundIconAsync(\n projectRoot: string,\n icon: string,\n backgroundImage: string | null,\n backgroundColor: string | null\n) {\n return generateMultiLayerImageAsync(projectRoot, {\n icon,\n borderRadiusRatio: 0.5,\n outputImageFileName: IC_LAUNCHER_ROUND_PNG,\n backgroundImage,\n backgroundColor,\n imageCacheFolder: 'android-standard-circle',\n backgroundImageCacheFolder: 'android-standard-round-background',\n });\n}\n\n/**\n * Configures adaptive icon files to be used on Android 8 and up. A foreground image must be provided,\n * and will have a transparent background unless:\n * - A backgroundImage is provided, or\n * - A backgroundColor was specified\n */\nexport async function configureAdaptiveIconAsync(\n projectRoot: string,\n foregroundImage: string,\n backgroundImage: string | null,\n monochromeImage: string | null,\n isAdaptive: boolean\n) {\n if (monochromeImage) {\n await generateMonochromeImageAsync(projectRoot, {\n icon: monochromeImage,\n imageCacheFolder: 'android-adaptive-monochrome',\n outputImageFileName: IC_LAUNCHER_MONOCHROME_PNG,\n });\n }\n await generateMultiLayerImageAsync(projectRoot, {\n backgroundColor: 'transparent',\n backgroundImage,\n backgroundImageCacheFolder: 'android-adaptive-background',\n outputImageFileName: IC_LAUNCHER_FOREGROUND_PNG,\n icon: foregroundImage,\n imageCacheFolder: 'android-adaptive-foreground',\n backgroundImageFileName: IC_LAUNCHER_BACKGROUND_PNG,\n });\n\n // create ic_launcher.xml and ic_launcher_round.xml\n const icLauncherXmlString = createAdaptiveIconXmlString(backgroundImage, monochromeImage);\n await createAdaptiveIconXmlFiles(\n projectRoot,\n icLauncherXmlString,\n // If the user only defined icon and not android.adaptiveIcon, then skip enabling the layering system\n // this will scale the image down and present it uncropped.\n isAdaptive\n );\n}\n\nfunction setBackgroundColor(backgroundColor: string | null, colors: ResourceXML) {\n return Colors.assignColorValue(colors, {\n value: backgroundColor,\n name: ICON_BACKGROUND,\n });\n}\n\nexport const createAdaptiveIconXmlString = (\n backgroundImage: string | null,\n monochromeImage: string | null\n) => {\n const background = backgroundImage ? `@mipmap/ic_launcher_background` : `@color/iconBackground`;\n\n const iconElements: string[] = [\n `<background android:drawable=\"${background}\"/>`,\n '<foreground android:drawable=\"@mipmap/ic_launcher_foreground\"/>',\n ];\n\n if (monochromeImage) {\n iconElements.push('<monochrome android:drawable=\"@mipmap/ic_launcher_monochrome\"/>');\n }\n\n return `<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<adaptive-icon xmlns:android=\"http://schemas.android.com/apk/res/android\">\n ${iconElements.join('\\n ')}\n</adaptive-icon>`;\n};\n\nasync function createAdaptiveIconXmlFiles(\n projectRoot: string,\n icLauncherXmlString: string,\n add: boolean\n) {\n const anyDpiV26Directory = path.resolve(projectRoot, ANDROID_RES_PATH, MIPMAP_ANYDPI_V26);\n await fs.ensureDir(anyDpiV26Directory);\n const launcherPath = path.resolve(anyDpiV26Directory, IC_LAUNCHER_XML);\n const launcherRoundPath = path.resolve(anyDpiV26Directory, IC_LAUNCHER_ROUND_XML);\n if (add) {\n await Promise.all([\n fs.writeFile(launcherPath, icLauncherXmlString),\n fs.writeFile(launcherRoundPath, icLauncherXmlString),\n ]);\n } else {\n // Remove the xml if the icon switches from adaptive to standard.\n await Promise.all(\n [launcherPath, launcherRoundPath].map(async (path) => {\n if (fs.existsSync(path)) {\n return fs.remove(path);\n }\n })\n );\n }\n}\n\nasync function generateMultiLayerImageAsync(\n projectRoot: string,\n {\n icon,\n backgroundColor,\n backgroundImage,\n imageCacheFolder,\n backgroundImageCacheFolder,\n borderRadiusRatio,\n outputImageFileName,\n backgroundImageFileName,\n }: {\n icon: string;\n backgroundImage: string | null;\n backgroundColor: string | null;\n imageCacheFolder: string;\n backgroundImageCacheFolder: string;\n backgroundImageFileName?: string;\n borderRadiusRatio?: number;\n outputImageFileName: string;\n }\n) {\n await iterateDpiValues(projectRoot, async ({ dpiFolder, scale }) => {\n let iconLayer = await generateIconAsync(projectRoot, {\n cacheType: imageCacheFolder,\n src: icon,\n scale,\n // backgroundImage overrides backgroundColor\n backgroundColor: backgroundImage ? 'transparent' : backgroundColor ?? 'transparent',\n borderRadiusRatio,\n });\n\n if (backgroundImage) {\n const backgroundLayer = await generateIconAsync(projectRoot, {\n cacheType: backgroundImageCacheFolder,\n src: backgroundImage,\n scale,\n backgroundColor: 'transparent',\n borderRadiusRatio,\n });\n\n if (backgroundImageFileName) {\n await fs.writeFile(path.resolve(dpiFolder, backgroundImageFileName), backgroundLayer);\n } else {\n iconLayer = await compositeImagesAsync({\n foreground: iconLayer,\n background: backgroundLayer,\n });\n }\n } else if (backgroundImageFileName) {\n // Remove any instances of ic_launcher_background.png that are there from previous icons\n await deleteIconNamedAsync(projectRoot, backgroundImageFileName);\n }\n\n await fs.ensureDir(dpiFolder);\n await fs.writeFile(path.resolve(dpiFolder, outputImageFileName), iconLayer);\n });\n}\n\nasync function generateMonochromeImageAsync(\n projectRoot: string,\n {\n icon,\n imageCacheFolder,\n outputImageFileName,\n }: { icon: string; imageCacheFolder: string; outputImageFileName: string }\n) {\n await iterateDpiValues(projectRoot, async ({ dpiFolder, scale }) => {\n const monochromeIcon = await generateIconAsync(projectRoot, {\n cacheType: imageCacheFolder,\n src: icon,\n scale,\n backgroundColor: 'transparent',\n });\n await fs.ensureDir(dpiFolder);\n await fs.writeFile(path.resolve(dpiFolder, outputImageFileName), monochromeIcon);\n });\n}\n\nfunction iterateDpiValues(\n projectRoot: string,\n callback: (value: { dpiFolder: string; folderName: string; scale: number }) => Promise<void>\n) {\n return Promise.all(\n Object.values(dpiValues).map((value) =>\n callback({\n dpiFolder: path.resolve(projectRoot, ANDROID_RES_PATH, value.folderName),\n ...value,\n })\n )\n );\n}\n\nasync function deleteIconNamedAsync(projectRoot: string, name: string) {\n return iterateDpiValues(projectRoot, ({ dpiFolder }) => {\n return fs.remove(path.resolve(dpiFolder, name));\n });\n}\n\nasync function generateIconAsync(\n projectRoot: string,\n {\n cacheType,\n src,\n scale,\n backgroundColor,\n borderRadiusRatio,\n }: {\n cacheType: string;\n src: string;\n scale: number;\n backgroundColor: string;\n borderRadiusRatio?: number;\n }\n) {\n const iconSizePx = BASELINE_PIXEL_SIZE * scale;\n\n return (\n await generateImageAsync(\n { projectRoot, cacheType },\n {\n src,\n width: iconSizePx,\n height: iconSizePx,\n resizeMode: 'cover',\n backgroundColor,\n borderRadius: borderRadiusRatio ? iconSizePx * borderRadiusRatio : undefined,\n }\n )\n ).source;\n}\n"],"mappings":"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"}