1{"version":3,"file":"StatusBar.js","names":["COLOR_PRIMARY_DARK_KEY","WINDOW_TRANSLUCENT_STATUS","WINDOW_LIGHT_STATUS_BAR","withStatusBar","config","withStatusBarColors","withStatusBarStyles","withAndroidColors","modResults","setStatusBarColors","withAndroidStyles","setStatusBarStyles","colors","assignColorValue","name","value","getStatusBarColor","styles","hexString","floatElement","getStatusBarTranslucent","assignStylesValue","parent","getAppThemeLightNoActionBarGroup","targetApi","add","getStatusBarStyle","backgroundColor","androidStatusBar","assert","translucent","barStyle"],"sources":["../../src/android/StatusBar.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport assert from 'assert';\n\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withAndroidColors, withAndroidStyles } from '../plugins/android-plugins';\nimport { assignColorValue } from './Colors';\nimport { ResourceXML } from './Resources';\nimport { assignStylesValue, getAppThemeLightNoActionBarGroup } from './Styles';\n\n// https://developer.android.com/reference/android/R.attr#colorPrimaryDark\nconst COLOR_PRIMARY_DARK_KEY = 'colorPrimaryDark';\n// https://developer.android.com/reference/android/R.attr#windowTranslucentStatus\nconst WINDOW_TRANSLUCENT_STATUS = 'android:windowTranslucentStatus';\n// https://developer.android.com/reference/android/R.attr#windowLightStatusBar\nconst WINDOW_LIGHT_STATUS_BAR = 'android:windowLightStatusBar';\n\nexport const withStatusBar: ConfigPlugin = (config) => {\n config = withStatusBarColors(config);\n config = withStatusBarStyles(config);\n return config;\n};\n\nconst withStatusBarColors: ConfigPlugin = (config) => {\n return withAndroidColors(config, (config) => {\n config.modResults = setStatusBarColors(config, config.modResults);\n return config;\n });\n};\n\nconst withStatusBarStyles: ConfigPlugin = (config) => {\n return withAndroidStyles(config, (config) => {\n config.modResults = setStatusBarStyles(config, config.modResults);\n return config;\n });\n};\n\nexport function setStatusBarColors(\n config: Pick<ExpoConfig, 'androidStatusBar'>,\n colors: ResourceXML\n): ResourceXML {\n return assignColorValue(colors, {\n name: COLOR_PRIMARY_DARK_KEY,\n value: getStatusBarColor(config),\n });\n}\n\nexport function setStatusBarStyles(\n config: Pick<ExpoConfig, 'androidStatusBar'>,\n styles: ResourceXML\n): ResourceXML {\n const hexString = getStatusBarColor(config);\n const floatElement = getStatusBarTranslucent(config);\n\n styles = assignStylesValue(styles, {\n parent: getAppThemeLightNoActionBarGroup(),\n name: WINDOW_LIGHT_STATUS_BAR,\n targetApi: '23',\n value: 'true',\n // Default is light-content, don't need to do anything to set it\n add: getStatusBarStyle(config) === 'dark-content',\n });\n\n styles = assignStylesValue(styles, {\n parent: getAppThemeLightNoActionBarGroup(),\n name: WINDOW_TRANSLUCENT_STATUS,\n value: 'true',\n // translucent status bar set in theme\n add: floatElement,\n });\n\n styles = assignStylesValue(styles, {\n parent: getAppThemeLightNoActionBarGroup(),\n name: COLOR_PRIMARY_DARK_KEY,\n value: `@color/${COLOR_PRIMARY_DARK_KEY}`,\n // Remove the color if translucent is used\n add: !!hexString,\n });\n\n return styles;\n}\n\nexport function getStatusBarColor(config: Pick<ExpoConfig, 'androidStatusBar'>) {\n const backgroundColor = config.androidStatusBar?.backgroundColor;\n if (backgroundColor) {\n // Drop support for translucent\n assert(\n backgroundColor !== 'translucent',\n `androidStatusBar.backgroundColor must be a valid hex string, instead got: \"${backgroundColor}\"`\n );\n }\n return backgroundColor;\n}\n\n/**\n * Specifies whether the status bar should be \"translucent\". When true, the status bar is drawn with `position: absolute` and a gray underlay, when false `position: relative` (pushes content down).\n *\n * @default false\n * @param config\n * @returns\n */\nexport function getStatusBarTranslucent(config: Pick<ExpoConfig, 'androidStatusBar'>): boolean {\n return config.androidStatusBar?.translucent ?? false;\n}\n\nexport function getStatusBarStyle(config: Pick<ExpoConfig, 'androidStatusBar'>) {\n return config.androidStatusBar?.barStyle || 'light-content';\n}\n"],"mappings":"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"}