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