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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"}