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