1082815dcSEvan Bacon"use strict";
2082815dcSEvan Bacon
3082815dcSEvan BaconObject.defineProperty(exports, "__esModule", {
4082815dcSEvan Bacon  value: true
5082815dcSEvan Bacon});
6082815dcSEvan Baconexports.getStatusBarColor = getStatusBarColor;
7082815dcSEvan Baconexports.getStatusBarStyle = getStatusBarStyle;
8082815dcSEvan Baconexports.getStatusBarTranslucent = getStatusBarTranslucent;
9082815dcSEvan Baconexports.setStatusBarColors = setStatusBarColors;
10082815dcSEvan Baconexports.setStatusBarStyles = setStatusBarStyles;
11082815dcSEvan Baconexports.withStatusBar = void 0;
12082815dcSEvan Baconfunction _assert() {
13082815dcSEvan Bacon  const data = _interopRequireDefault(require("assert"));
14082815dcSEvan Bacon  _assert = function () {
15082815dcSEvan Bacon    return data;
16082815dcSEvan Bacon  };
17082815dcSEvan Bacon  return data;
18082815dcSEvan Bacon}
19082815dcSEvan Baconfunction _Colors() {
20082815dcSEvan Bacon  const data = require("./Colors");
21082815dcSEvan Bacon  _Colors = function () {
22082815dcSEvan Bacon    return data;
23082815dcSEvan Bacon  };
24082815dcSEvan Bacon  return data;
25082815dcSEvan Bacon}
26082815dcSEvan Baconfunction _Styles() {
27082815dcSEvan Bacon  const data = require("./Styles");
28082815dcSEvan Bacon  _Styles = function () {
29082815dcSEvan Bacon    return data;
30082815dcSEvan Bacon  };
31082815dcSEvan Bacon  return data;
32082815dcSEvan Bacon}
33*8a424bebSJames Idefunction _androidPlugins() {
34*8a424bebSJames Ide  const data = require("../plugins/android-plugins");
35*8a424bebSJames Ide  _androidPlugins = function () {
36*8a424bebSJames Ide    return data;
37*8a424bebSJames Ide  };
38*8a424bebSJames Ide  return data;
39*8a424bebSJames Ide}
40082815dcSEvan Baconfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
41082815dcSEvan Bacon// https://developer.android.com/reference/android/R.attr#colorPrimaryDark
42ee216927STomasz Sapetaconst COLOR_PRIMARY_DARK_KEY = 'colorPrimaryDark';
43ee216927STomasz Sapeta// https://developer.android.com/reference/android/R.attr#windowTranslucentStatus
44ee216927STomasz Sapetaconst WINDOW_TRANSLUCENT_STATUS = 'android:windowTranslucentStatus';
45ee216927STomasz Sapeta// https://developer.android.com/reference/android/R.attr#windowLightStatusBar
46082815dcSEvan Baconconst WINDOW_LIGHT_STATUS_BAR = 'android:windowLightStatusBar';
47082815dcSEvan Baconconst withStatusBar = config => {
48082815dcSEvan Bacon  config = withStatusBarColors(config);
49082815dcSEvan Bacon  config = withStatusBarStyles(config);
50082815dcSEvan Bacon  return config;
51082815dcSEvan Bacon};
52082815dcSEvan Baconexports.withStatusBar = withStatusBar;
53082815dcSEvan Baconconst withStatusBarColors = config => {
54082815dcSEvan Bacon  return (0, _androidPlugins().withAndroidColors)(config, config => {
55082815dcSEvan Bacon    config.modResults = setStatusBarColors(config, config.modResults);
56082815dcSEvan Bacon    return config;
57082815dcSEvan Bacon  });
58082815dcSEvan Bacon};
59082815dcSEvan Baconconst withStatusBarStyles = config => {
60082815dcSEvan Bacon  return (0, _androidPlugins().withAndroidStyles)(config, config => {
61082815dcSEvan Bacon    config.modResults = setStatusBarStyles(config, config.modResults);
62082815dcSEvan Bacon    return config;
63082815dcSEvan Bacon  });
64082815dcSEvan Bacon};
65082815dcSEvan Baconfunction setStatusBarColors(config, colors) {
66082815dcSEvan Bacon  return (0, _Colors().assignColorValue)(colors, {
67082815dcSEvan Bacon    name: COLOR_PRIMARY_DARK_KEY,
68082815dcSEvan Bacon    value: getStatusBarColor(config)
69082815dcSEvan Bacon  });
70082815dcSEvan Bacon}
71082815dcSEvan Baconfunction setStatusBarStyles(config, styles) {
72082815dcSEvan Bacon  const hexString = getStatusBarColor(config);
73082815dcSEvan Bacon  const floatElement = getStatusBarTranslucent(config);
74082815dcSEvan Bacon  styles = (0, _Styles().assignStylesValue)(styles, {
75082815dcSEvan Bacon    parent: (0, _Styles().getAppThemeLightNoActionBarGroup)(),
76082815dcSEvan Bacon    name: WINDOW_LIGHT_STATUS_BAR,
77082815dcSEvan Bacon    targetApi: '23',
78082815dcSEvan Bacon    value: 'true',
79082815dcSEvan Bacon    // Default is light-content, don't need to do anything to set it
80082815dcSEvan Bacon    add: getStatusBarStyle(config) === 'dark-content'
81082815dcSEvan Bacon  });
82082815dcSEvan Bacon  styles = (0, _Styles().assignStylesValue)(styles, {
83082815dcSEvan Bacon    parent: (0, _Styles().getAppThemeLightNoActionBarGroup)(),
84082815dcSEvan Bacon    name: WINDOW_TRANSLUCENT_STATUS,
85082815dcSEvan Bacon    value: 'true',
86082815dcSEvan Bacon    // translucent status bar set in theme
87082815dcSEvan Bacon    add: floatElement
88082815dcSEvan Bacon  });
89082815dcSEvan Bacon  styles = (0, _Styles().assignStylesValue)(styles, {
90082815dcSEvan Bacon    parent: (0, _Styles().getAppThemeLightNoActionBarGroup)(),
91082815dcSEvan Bacon    name: COLOR_PRIMARY_DARK_KEY,
92082815dcSEvan Bacon    value: `@color/${COLOR_PRIMARY_DARK_KEY}`,
93082815dcSEvan Bacon    // Remove the color if translucent is used
94082815dcSEvan Bacon    add: !!hexString
95082815dcSEvan Bacon  });
96082815dcSEvan Bacon  return styles;
97082815dcSEvan Bacon}
98082815dcSEvan Baconfunction getStatusBarColor(config) {
99082815dcSEvan Bacon  var _config$androidStatus;
100082815dcSEvan Bacon  const backgroundColor = (_config$androidStatus = config.androidStatusBar) === null || _config$androidStatus === void 0 ? void 0 : _config$androidStatus.backgroundColor;
101082815dcSEvan Bacon  if (backgroundColor) {
102082815dcSEvan Bacon    // Drop support for translucent
103082815dcSEvan Bacon    (0, _assert().default)(backgroundColor !== 'translucent', `androidStatusBar.backgroundColor must be a valid hex string, instead got: "${backgroundColor}"`);
104082815dcSEvan Bacon  }
105082815dcSEvan Bacon  return backgroundColor;
106082815dcSEvan Bacon}
107ee216927STomasz Sapeta
108082815dcSEvan Bacon/**
109082815dcSEvan Bacon * 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).
110082815dcSEvan Bacon *
111082815dcSEvan Bacon * @default false
112082815dcSEvan Bacon * @param config
113082815dcSEvan Bacon * @returns
114082815dcSEvan Bacon */
115082815dcSEvan Baconfunction getStatusBarTranslucent(config) {
116082815dcSEvan Bacon  var _config$androidStatus2, _config$androidStatus3;
117082815dcSEvan Bacon  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;
118082815dcSEvan Bacon}
119082815dcSEvan Baconfunction getStatusBarStyle(config) {
120082815dcSEvan Bacon  var _config$androidStatus4;
121082815dcSEvan Bacon  return ((_config$androidStatus4 = config.androidStatusBar) === null || _config$androidStatus4 === void 0 ? void 0 : _config$androidStatus4.barStyle) || 'light-content';
122082815dcSEvan Bacon}
123082815dcSEvan Bacon//# sourceMappingURL=StatusBar.js.map