1"use strict"; 2 3Object.defineProperty(exports, "__esModule", { 4 value: true 5}); 6exports.getStatusBarColor = getStatusBarColor; 7exports.getStatusBarStyle = getStatusBarStyle; 8exports.getStatusBarTranslucent = getStatusBarTranslucent; 9exports.setStatusBarColors = setStatusBarColors; 10exports.setStatusBarStyles = setStatusBarStyles; 11exports.withStatusBar = void 0; 12function _assert() { 13 const data = _interopRequireDefault(require("assert")); 14 _assert = function () { 15 return data; 16 }; 17 return data; 18} 19function _Colors() { 20 const data = require("./Colors"); 21 _Colors = function () { 22 return data; 23 }; 24 return data; 25} 26function _Styles() { 27 const data = require("./Styles"); 28 _Styles = function () { 29 return data; 30 }; 31 return data; 32} 33function _androidPlugins() { 34 const data = require("../plugins/android-plugins"); 35 _androidPlugins = function () { 36 return data; 37 }; 38 return data; 39} 40function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 41// https://developer.android.com/reference/android/R.attr#colorPrimaryDark 42const COLOR_PRIMARY_DARK_KEY = 'colorPrimaryDark'; 43// https://developer.android.com/reference/android/R.attr#windowTranslucentStatus 44const WINDOW_TRANSLUCENT_STATUS = 'android:windowTranslucentStatus'; 45// https://developer.android.com/reference/android/R.attr#windowLightStatusBar 46const WINDOW_LIGHT_STATUS_BAR = 'android:windowLightStatusBar'; 47const withStatusBar = config => { 48 config = withStatusBarColors(config); 49 config = withStatusBarStyles(config); 50 return config; 51}; 52exports.withStatusBar = withStatusBar; 53const withStatusBarColors = config => { 54 return (0, _androidPlugins().withAndroidColors)(config, config => { 55 config.modResults = setStatusBarColors(config, config.modResults); 56 return config; 57 }); 58}; 59const withStatusBarStyles = config => { 60 return (0, _androidPlugins().withAndroidStyles)(config, config => { 61 config.modResults = setStatusBarStyles(config, config.modResults); 62 return config; 63 }); 64}; 65function setStatusBarColors(config, colors) { 66 return (0, _Colors().assignColorValue)(colors, { 67 name: COLOR_PRIMARY_DARK_KEY, 68 value: getStatusBarColor(config) 69 }); 70} 71function setStatusBarStyles(config, styles) { 72 const hexString = getStatusBarColor(config); 73 const floatElement = getStatusBarTranslucent(config); 74 styles = (0, _Styles().assignStylesValue)(styles, { 75 parent: (0, _Styles().getAppThemeLightNoActionBarGroup)(), 76 name: WINDOW_LIGHT_STATUS_BAR, 77 targetApi: '23', 78 value: 'true', 79 // Default is light-content, don't need to do anything to set it 80 add: getStatusBarStyle(config) === 'dark-content' 81 }); 82 styles = (0, _Styles().assignStylesValue)(styles, { 83 parent: (0, _Styles().getAppThemeLightNoActionBarGroup)(), 84 name: WINDOW_TRANSLUCENT_STATUS, 85 value: 'true', 86 // translucent status bar set in theme 87 add: floatElement 88 }); 89 styles = (0, _Styles().assignStylesValue)(styles, { 90 parent: (0, _Styles().getAppThemeLightNoActionBarGroup)(), 91 name: COLOR_PRIMARY_DARK_KEY, 92 value: `@color/${COLOR_PRIMARY_DARK_KEY}`, 93 // Remove the color if translucent is used 94 add: !!hexString 95 }); 96 return styles; 97} 98function getStatusBarColor(config) { 99 var _config$androidStatus; 100 const backgroundColor = (_config$androidStatus = config.androidStatusBar) === null || _config$androidStatus === void 0 ? void 0 : _config$androidStatus.backgroundColor; 101 if (backgroundColor) { 102 // Drop support for translucent 103 (0, _assert().default)(backgroundColor !== 'translucent', `androidStatusBar.backgroundColor must be a valid hex string, instead got: "${backgroundColor}"`); 104 } 105 return backgroundColor; 106} 107 108/** 109 * 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). 110 * 111 * @default false 112 * @param config 113 * @returns 114 */ 115function getStatusBarTranslucent(config) { 116 var _config$androidStatus2, _config$androidStatus3; 117 return (_config$androidStatus2 = (_config$androidStatus3 = config.androidStatusBar) === null || _config$androidStatus3 === void 0 ? void 0 : _config$androidStatus3.translucent) !== null && _config$androidStatus2 !== void 0 ? _config$androidStatus2 : false; 118} 119function getStatusBarStyle(config) { 120 var _config$androidStatus4; 121 return ((_config$androidStatus4 = config.androidStatusBar) === null || _config$androidStatus4 === void 0 ? void 0 : _config$androidStatus4.barStyle) || 'light-content'; 122} 123//# sourceMappingURL=StatusBar.js.map