@twreporter/universal-header 2.2.0-rc.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/CHANGELOG.md +302 -0
  2. package/LICENSE +21 -0
  3. package/README.md +223 -0
  4. package/lib/actions/auth.js +105 -0
  5. package/lib/actions/error-action-creators.js +162 -0
  6. package/lib/components/action-button.js +216 -0
  7. package/lib/components/channels.js +420 -0
  8. package/lib/components/customized-link.js +49 -0
  9. package/lib/components/drop-down-menu.js +138 -0
  10. package/lib/components/hamburger-icons.js +270 -0
  11. package/lib/components/hamburger-menu.js +152 -0
  12. package/lib/components/header.js +233 -0
  13. package/lib/components/icons.js +276 -0
  14. package/lib/components/mobile-header.js +264 -0
  15. package/lib/components/search-box.js +214 -0
  16. package/lib/components/slogan.js +57 -0
  17. package/lib/constants/action-types.js +14 -0
  18. package/lib/constants/actions.js +35 -0
  19. package/lib/constants/categories.js +32 -0
  20. package/lib/constants/channels.js +41 -0
  21. package/lib/constants/colors.js +17 -0
  22. package/lib/constants/external-links.js +13 -0
  23. package/lib/constants/fonts.js +32 -0
  24. package/lib/constants/prop-types.js +46 -0
  25. package/lib/constants/services.js +31 -0
  26. package/lib/constants/slogan.js +9 -0
  27. package/lib/constants/theme.js +13 -0
  28. package/lib/containers/header.js +375 -0
  29. package/lib/contexts/header-context.js +17 -0
  30. package/lib/index.js +18 -0
  31. package/lib/reducers/auth.js +109 -0
  32. package/lib/reducers/index.js +22 -0
  33. package/lib/standalone-header.js +110 -0
  34. package/lib/utils/animations.js +32 -0
  35. package/lib/utils/icon.js +905 -0
  36. package/lib/utils/jwt.js +37 -0
  37. package/lib/utils/links.js +177 -0
  38. package/lib/utils/theme.js +415 -0
  39. package/package.json +38 -0
@@ -0,0 +1,270 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+
8
+ var _headerContext = _interopRequireDefault(require("../contexts/header-context"));
9
+
10
+ var _customizedLink = _interopRequireDefault(require("./customized-link"));
11
+
12
+ var _propTypes = _interopRequireDefault(require("prop-types"));
13
+
14
+ var _react = _interopRequireDefault(require("react"));
15
+
16
+ var _links = _interopRequireDefault(require("../utils/links"));
17
+
18
+ var _querystring = _interopRequireDefault(require("querystring"));
19
+
20
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
21
+
22
+ var _theme = _interopRequireDefault(require("../utils/theme"));
23
+
24
+ var _mediaQuery = _interopRequireDefault(require("@twreporter/core/lib/utils/media-query"));
25
+
26
+ var _map = _interopRequireDefault(require("lodash/map"));
27
+
28
+ var _templateObject;
29
+
30
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
31
+
32
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
33
+
34
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
35
+
36
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
37
+
38
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
39
+
40
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
41
+
42
+ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
43
+
44
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
45
+
46
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
47
+
48
+ var _ = {
49
+ map: _map["default"]
50
+ };
51
+ var styles = {
52
+ iconHeight: {
53
+ mobile: 42,
54
+ // px
55
+ tablet: 60 // px
56
+
57
+ },
58
+ iconWidth: {
59
+ mobile: 42,
60
+ // px
61
+ tablet: 60 // px
62
+
63
+ }
64
+ };
65
+
66
+ var IconContainer = /*#__PURE__*/_styledComponents["default"].div.withConfig({
67
+ displayName: "hamburger-icons__IconContainer",
68
+ componentId: "sc-11ma9zq-0"
69
+ })(["height:", "px;width:", "px;display:flex;justify-content:center;align-items:center;margin-right:17px;a{display:flex;}", ""], styles.iconHeight.mobile, styles.iconWidth.mobile, _mediaQuery["default"].tabletOnly(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n height: ", "px;\n width: ", "px;\n margin-right: 25px;\n "])), styles.iconHeight.tablet, styles.iconWidth.tablet));
70
+
71
+ var IconsContainer = /*#__PURE__*/_styledComponents["default"].div.withConfig({
72
+ displayName: "hamburger-icons__IconsContainer",
73
+ componentId: "sc-11ma9zq-1"
74
+ })(["display:flex;", "{border:1px solid;border-radius:50%;border-color:", ";}"], IconContainer, function (props) {
75
+ return props.borderColor;
76
+ });
77
+
78
+ var Login = function Login(_ref) {
79
+ var callback = _ref.callback;
80
+
81
+ var handleLogin = function handleLogin(releaseBranch) {
82
+ var redirectURL = window.location.href;
83
+
84
+ var query = _querystring["default"].stringify({
85
+ destination: redirectURL
86
+ });
87
+
88
+ window.location = _links["default"].getLoginLink(releaseBranch).to + '?' + query;
89
+ };
90
+
91
+ var handleClick = function handleClick(e, releaseBranch) {
92
+ e.preventDefault();
93
+ handleLogin(releaseBranch);
94
+ callback();
95
+ };
96
+
97
+ return /*#__PURE__*/_react["default"].createElement(IconContainer, null, /*#__PURE__*/_react["default"].createElement(_headerContext["default"].Consumer, null, function (_ref2) {
98
+ var releaseBranch = _ref2.releaseBranch,
99
+ theme = _ref2.theme;
100
+
101
+ var _themeUtils$selectHam = _slicedToArray(_theme["default"].selectHamburgerServiceIcons(theme).login, 1),
102
+ LogInIcon = _themeUtils$selectHam[0];
103
+
104
+ return /*#__PURE__*/_react["default"].createElement(_customizedLink["default"], {
105
+ onClick: function onClick(e) {
106
+ return handleClick(e, releaseBranch);
107
+ }
108
+ }, /*#__PURE__*/_react["default"].createElement(LogInIcon, null));
109
+ }));
110
+ };
111
+
112
+ Login.propTypes = {
113
+ callback: _propTypes["default"].func
114
+ };
115
+ Login.defaultProps = {
116
+ callback: function callback() {}
117
+ };
118
+
119
+ var Logout = function Logout(_ref3) {
120
+ var callback = _ref3.callback;
121
+
122
+ var handleLogout = function handleLogout(releaseBranch) {
123
+ var redirectURL = window.location.href;
124
+
125
+ var query = _querystring["default"].stringify({
126
+ destination: redirectURL
127
+ });
128
+
129
+ window.location = _links["default"].getLogoutLink(releaseBranch).to + '?' + query;
130
+ };
131
+
132
+ var handleClick = function handleClick(e, releaseBranch) {
133
+ e.preventDefault();
134
+ handleLogout(releaseBranch);
135
+ callback();
136
+ };
137
+
138
+ return /*#__PURE__*/_react["default"].createElement(IconContainer, null, /*#__PURE__*/_react["default"].createElement(_headerContext["default"].Consumer, null, function (_ref4) {
139
+ var releaseBranch = _ref4.releaseBranch,
140
+ theme = _ref4.theme;
141
+
142
+ var _themeUtils$selectHam2 = _slicedToArray(_theme["default"].selectHamburgerServiceIcons(theme).logout, 1),
143
+ LogOutIcon = _themeUtils$selectHam2[0];
144
+
145
+ return /*#__PURE__*/_react["default"].createElement(_customizedLink["default"], {
146
+ onClick: function onClick(e) {
147
+ return handleClick(e, releaseBranch);
148
+ }
149
+ }, /*#__PURE__*/_react["default"].createElement(LogOutIcon, null));
150
+ }));
151
+ };
152
+
153
+ Logout.propTypes = {
154
+ callback: _propTypes["default"].func
155
+ };
156
+ Logout.defaultProps = {
157
+ callback: function callback() {}
158
+ };
159
+
160
+ var Search = function Search(_ref5) {
161
+ var callback = _ref5.callback;
162
+ return /*#__PURE__*/_react["default"].createElement(IconContainer, null, /*#__PURE__*/_react["default"].createElement(_headerContext["default"].Consumer, null, function (_ref6) {
163
+ var releaseBranch = _ref6.releaseBranch,
164
+ isLinkExternal = _ref6.isLinkExternal,
165
+ theme = _ref6.theme;
166
+
167
+ var _themeUtils$selectHam3 = _slicedToArray(_theme["default"].selectHamburgerServiceIcons(theme).search, 1),
168
+ SearchIcon = _themeUtils$selectHam3[0];
169
+
170
+ var link = _links["default"].getSearchLink(isLinkExternal, releaseBranch);
171
+
172
+ return /*#__PURE__*/_react["default"].createElement(_customizedLink["default"], _extends({}, link, {
173
+ onClick: callback
174
+ }), /*#__PURE__*/_react["default"].createElement(SearchIcon, null));
175
+ }));
176
+ };
177
+
178
+ Search.propTypes = {
179
+ callback: _propTypes["default"].func
180
+ };
181
+ Search.defaultProps = {
182
+ callback: function callback() {}
183
+ };
184
+
185
+ var Bookmark = function Bookmark(_ref7) {
186
+ var callback = _ref7.callback;
187
+ return /*#__PURE__*/_react["default"].createElement(IconContainer, null, /*#__PURE__*/_react["default"].createElement(_headerContext["default"].Consumer, null, function (_ref8) {
188
+ var releaseBranch = _ref8.releaseBranch,
189
+ isLinkExternal = _ref8.isLinkExternal,
190
+ theme = _ref8.theme;
191
+
192
+ var _themeUtils$selectHam4 = _slicedToArray(_theme["default"].selectHamburgerServiceIcons(theme).bookmark, 1),
193
+ BookmarkIcon = _themeUtils$selectHam4[0];
194
+
195
+ var link = _links["default"].getBookmarksLink(isLinkExternal, releaseBranch);
196
+
197
+ return /*#__PURE__*/_react["default"].createElement(_customizedLink["default"], _extends({}, link, {
198
+ onClick: callback
199
+ }), /*#__PURE__*/_react["default"].createElement(BookmarkIcon, null));
200
+ }));
201
+ };
202
+
203
+ Bookmark.propTypes = {
204
+ callback: _propTypes["default"].func
205
+ };
206
+ Bookmark.defaultProps = {
207
+ callback: function callback() {}
208
+ };
209
+
210
+ var HamburgerService = function HamburgerService(_ref9) {
211
+ var services = _ref9.services,
212
+ callback = _ref9.callback;
213
+
214
+ var _prepareIconJsx = function _prepareIconJsx(service) {
215
+ var serviceKey = service.key;
216
+
217
+ switch (serviceKey) {
218
+ case 'login':
219
+ return /*#__PURE__*/_react["default"].createElement(Login, {
220
+ callback: callback,
221
+ key: serviceKey
222
+ });
223
+
224
+ case 'logout':
225
+ return /*#__PURE__*/_react["default"].createElement(Logout, {
226
+ callback: callback,
227
+ key: serviceKey
228
+ });
229
+
230
+ case 'search':
231
+ return /*#__PURE__*/_react["default"].createElement(Search, {
232
+ callback: callback,
233
+ key: serviceKey
234
+ });
235
+
236
+ case 'bookmarks':
237
+ return /*#__PURE__*/_react["default"].createElement(Bookmark, {
238
+ callback: callback,
239
+ key: serviceKey
240
+ });
241
+
242
+ default:
243
+ return null;
244
+ }
245
+ };
246
+
247
+ return /*#__PURE__*/_react["default"].createElement(_headerContext["default"].Consumer, null, function (_ref10) {
248
+ var theme = _ref10.theme;
249
+
250
+ var _themeUtils$selectHam5 = _theme["default"].selectHamburgerServiceTheme(theme),
251
+ borderColor = _themeUtils$selectHam5.borderColor;
252
+
253
+ return /*#__PURE__*/_react["default"].createElement(IconsContainer, {
254
+ borderColor: borderColor
255
+ }, _.map(services, function (service) {
256
+ return _prepareIconJsx(service);
257
+ }));
258
+ });
259
+ };
260
+
261
+ HamburgerService.propTypes = {
262
+ services: _propTypes["default"].array,
263
+ callback: _propTypes["default"].func
264
+ };
265
+ HamburgerService.defaultProps = {
266
+ services: [],
267
+ callback: function callback() {}
268
+ };
269
+ var _default = HamburgerService;
270
+ exports["default"] = _default;
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+
10
+ var _react = _interopRequireDefault(require("react"));
11
+
12
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
13
+
14
+ var _css = require("@twreporter/core/lib/utils/css");
15
+
16
+ var _mobilePopUpModal = _interopRequireDefault(require("@twreporter/react-components/lib/mobile-pop-up-modal"));
17
+
18
+ var _headerContext = _interopRequireDefault(require("../contexts/header-context"));
19
+
20
+ var _theme = _interopRequireDefault(require("../utils/theme"));
21
+
22
+ var _colors = _interopRequireDefault(require("../constants/colors"));
23
+
24
+ var _actionButton = _interopRequireDefault(require("./action-button"));
25
+
26
+ var _slogan = _interopRequireDefault(require("./slogan"));
27
+
28
+ var _customizedLink = _interopRequireDefault(require("./customized-link"));
29
+
30
+ var _hamburgerIcons = _interopRequireDefault(require("./hamburger-icons"));
31
+
32
+ var _channels = _interopRequireDefault(require("./channels.js"));
33
+
34
+ var _mediaQuery = _interopRequireDefault(require("@twreporter/core/lib/utils/media-query"));
35
+
36
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4;
37
+
38
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
39
+
40
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
41
+
42
+ var styles = {
43
+ closeButtonHeight: {
44
+ mobile: 42,
45
+ // px
46
+ tablet: 60 // px
47
+
48
+ },
49
+ sloganMargin: {
50
+ mobile: [28, 0],
51
+ tablet: [38, 0]
52
+ },
53
+ channelMargin: {
54
+ mobile: [20, 0, 0, 0],
55
+ tablet: [40, 0, 0, 0]
56
+ },
57
+ serviceMargin: {
58
+ mobile: [16, 0, 22, 0],
59
+ tablet: [24, 0, 42, 0]
60
+ }
61
+ };
62
+
63
+ var MenuContainer = /*#__PURE__*/_styledComponents["default"].div.withConfig({
64
+ displayName: "hamburger-menu__MenuContainer",
65
+ componentId: "sc-15rzowt-0"
66
+ })(["background-color:", ";display:flex;flex-direction:column;justify-content:space-between;height:auto;min-height:100%;"], function (props) {
67
+ return props.bgColor;
68
+ });
69
+
70
+ var CloseContainer = /*#__PURE__*/_styledComponents["default"].div.withConfig({
71
+ displayName: "hamburger-menu__CloseContainer",
72
+ componentId: "sc-15rzowt-1"
73
+ })(["position:absolute;top:10px;right:10px;height:", "px;width:", "px;", ""], styles.closeButtonHeight.mobile, styles.closeButtonHeight.mobile, _mediaQuery["default"].tabletOnly(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n height: ", "px;\n width: ", "px;\n "])), styles.closeButtonHeight.tablet, styles.closeButtonHeight.tablet));
74
+
75
+ var FlexBox = /*#__PURE__*/_styledComponents["default"].div.withConfig({
76
+ displayName: "hamburger-menu__FlexBox",
77
+ componentId: "sc-15rzowt-2"
78
+ })(["display:flex;flex-direction:column;align-items:center;"]);
79
+
80
+ var SloganContainer = /*#__PURE__*/_styledComponents["default"].div.withConfig({
81
+ displayName: "hamburger-menu__SloganContainer",
82
+ componentId: "sc-15rzowt-3"
83
+ })(["margin:", ";", ""], (0, _css.arrayToCssShorthand)(styles.sloganMargin.mobile), _mediaQuery["default"].tabletOnly(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n margin: ", ";\n "])), (0, _css.arrayToCssShorthand)(styles.sloganMargin.tablet)));
84
+
85
+ var ActionContainer = /*#__PURE__*/_styledComponents["default"].div.withConfig({
86
+ displayName: "hamburger-menu__ActionContainer",
87
+ componentId: "sc-15rzowt-4"
88
+ })(["width:100%;padding:0 30px;"]);
89
+
90
+ var ChannelContainer = /*#__PURE__*/_styledComponents["default"].div.withConfig({
91
+ displayName: "hamburger-menu__ChannelContainer",
92
+ componentId: "sc-15rzowt-5"
93
+ })(["width:100%;margin:10px 0;margin:", ";", ""], (0, _css.arrayToCssShorthand)(styles.channelMargin.mobile), _mediaQuery["default"].tabletOnly(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n margin: ", ";\n "])), (0, _css.arrayToCssShorthand)(styles.channelMargin.tablet)));
94
+
95
+ var ServiceContainer = /*#__PURE__*/_styledComponents["default"].div.withConfig({
96
+ displayName: "hamburger-menu__ServiceContainer",
97
+ componentId: "sc-15rzowt-6"
98
+ })(["position:relative;bottom:0;display:flex;justify-content:center;align-items:center;width:100%;margin:", ";", ""], (0, _css.arrayToCssShorthand)(styles.serviceMargin.mobile), _mediaQuery["default"].tabletOnly(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n margin: ", ";\n "])), (0, _css.arrayToCssShorthand)(styles.serviceMargin.tablet)));
99
+
100
+ var HamburgerMenu = function HamburgerMenu(_ref) {
101
+ var channels = _ref.channels,
102
+ services = _ref.services,
103
+ actions = _ref.actions,
104
+ handleClose = _ref.handleClose;
105
+ return /*#__PURE__*/_react["default"].createElement(_headerContext["default"].Consumer, null, function (_ref2) {
106
+ var theme = _ref2.theme;
107
+
108
+ var _themeUtils$selectHam = _theme["default"].selectHamburgerMenuTheme(theme),
109
+ bgColor = _themeUtils$selectHam.bgColor;
110
+
111
+ var CloseIcon = _theme["default"].selectIcons(theme).close;
112
+
113
+ var closeJSX = /*#__PURE__*/_react["default"].createElement(CloseContainer, {
114
+ onClick: handleClose
115
+ }, /*#__PURE__*/_react["default"].createElement(CloseIcon, null));
116
+
117
+ return /*#__PURE__*/_react["default"].createElement(_mobilePopUpModal["default"], null, /*#__PURE__*/_react["default"].createElement(MenuContainer, {
118
+ bgColor: bgColor
119
+ }, closeJSX, /*#__PURE__*/_react["default"].createElement(FlexBox, null, /*#__PURE__*/_react["default"].createElement(SloganContainer, null, /*#__PURE__*/_react["default"].createElement(_slogan["default"], {
120
+ themeFunction: _theme["default"].selectSloganHBTheme
121
+ })), /*#__PURE__*/_react["default"].createElement(ActionContainer, null, /*#__PURE__*/_react["default"].createElement(_actionButton["default"], {
122
+ actions: actions,
123
+ direction: "column",
124
+ themeFunction: _theme["default"].selectActionButtonHBTheme,
125
+ callback: handleClose
126
+ })), /*#__PURE__*/_react["default"].createElement(ChannelContainer, null, /*#__PURE__*/_react["default"].createElement(_channels["default"], {
127
+ data: channels,
128
+ direction: "column",
129
+ currentPathname: "",
130
+ themeFunction: _theme["default"].selectChannelHBTheme,
131
+ callback: handleClose
132
+ }))), /*#__PURE__*/_react["default"].createElement(ServiceContainer, null, /*#__PURE__*/_react["default"].createElement(_hamburgerIcons["default"], {
133
+ services: services,
134
+ callback: handleClose
135
+ }))));
136
+ });
137
+ };
138
+
139
+ HamburgerMenu.propTypes = {
140
+ channels: _propTypes["default"].array,
141
+ services: _propTypes["default"].array,
142
+ actions: _propTypes["default"].array,
143
+ handleClose: _propTypes["default"].func
144
+ };
145
+ HamburgerMenu.defaultProps = {
146
+ channels: [],
147
+ services: [],
148
+ actions: [],
149
+ handleClose: function handleClose() {}
150
+ };
151
+ var _default = HamburgerMenu;
152
+ exports["default"] = _default;
@@ -0,0 +1,233 @@
1
+ "use strict";
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+
10
+ var _react = _interopRequireDefault(require("react"));
11
+
12
+ var _propTypes = _interopRequireDefault(require("prop-types"));
13
+
14
+ var _CSSTransition = _interopRequireDefault(require("react-transition-group/CSSTransition"));
15
+
16
+ var _styledComponents = _interopRequireWildcard(require("styled-components"));
17
+
18
+ var _headerContext = _interopRequireDefault(require("../contexts/header-context"));
19
+
20
+ var _links = _interopRequireDefault(require("../utils/links"));
21
+
22
+ var _theme = _interopRequireDefault(require("../utils/theme"));
23
+
24
+ var _animations = _interopRequireDefault(require("../utils/animations"));
25
+
26
+ var _colors = _interopRequireDefault(require("../constants/colors"));
27
+
28
+ var _channels = _interopRequireDefault(require("./channels"));
29
+
30
+ var _actionButton = _interopRequireDefault(require("./action-button"));
31
+
32
+ var _icons = _interopRequireDefault(require("./icons"));
33
+
34
+ var _customizedLink = _interopRequireDefault(require("./customized-link"));
35
+
36
+ var _slogan = _interopRequireDefault(require("./slogan"));
37
+
38
+ var _css = require("@twreporter/core/lib/utils/css");
39
+
40
+ var _mediaQuery = _interopRequireDefault(require("@twreporter/core/lib/utils/media-query"));
41
+
42
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
43
+
44
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
45
+
46
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
47
+
48
+ // @twreporter
49
+ var CHANNEL_HEIGHT = 37; // px
50
+
51
+ var styles = {
52
+ headerHeight: {
53
+ wide: 83,
54
+ // px
55
+ narrow: 46 // px
56
+
57
+ },
58
+ topRowPadding: {
59
+ desktop: [0, 60] // px
60
+
61
+ },
62
+ topRowMaxWidth: {
63
+ desktop: 1024,
64
+ hd: 1440 // px
65
+
66
+ },
67
+ channelMaxWidth: {
68
+ hd: 1320 // px
69
+
70
+ },
71
+ channelBottomBorderWidth: [1, 0, 1, 0] // px
72
+
73
+ };
74
+
75
+ var headerWide = _animations["default"].changeHeight("".concat(styles.headerHeight.narrow, "px"), "".concat(styles.headerHeight.wide, "px"));
76
+
77
+ var headerNarrow = _animations["default"].changeHeight("".concat(styles.headerHeight.wide, "px"), "".concat(styles.headerHeight.narrow, "px"));
78
+
79
+ var HeaderEffect = /*#__PURE__*/(0, _styledComponents.css)([".header-effect-enter{height:", "px;}.header-effect-enter-active{animation:", " 0.3s linear;animation-delay:400ms;}.header-effect-exit-active{animation:", " 0.3s linear;animation-delay:400ms;}.header-effect-exit-done{height:", "px;}"], styles.headerHeight.narrow, headerWide, headerNarrow, styles.headerHeight.narrow);
80
+ var ActionEffect = /*#__PURE__*/(0, _styledComponents.css)([".action-effect-enter{transform:translateX(-40px);}.action-effect-enter-active{animation:", " 0.3s;animation-delay:400ms;}.action-effect-exit-active{animation:", " 0.3s;animation-delay:400ms;}.action-effect-exit-done{transform:translateX(-40px);}"], _animations["default"].changeTranslateX('-40px', 0), _animations["default"].changeTranslateX(0, '-40px'));
81
+ var SloganEffect = /*#__PURE__*/(0, _styledComponents.css)([".slogan-effect-enter{opacity:0;}.slogagn-effect-enter-active{animation:", " 0.3s;animation-delay:400ms;}.slogan-effect-exit-active{animation:", " 0.3s;animation-delay:400ms;}.slogan-effect-exit-done{opacity:0;}"], _animations["default"].changeOpacity('0', '1'), _animations["default"].changeOpacity('1', '0'));
82
+ var channelSlideIn = /*#__PURE__*/(0, _styledComponents.keyframes)(["from{transform:translateY(", "px);opacity:0;}to{transform:translateY(0);opacity:1;}"], -CHANNEL_HEIGHT);
83
+ var channelSlideOut = /*#__PURE__*/(0, _styledComponents.keyframes)(["from{transform:translateY(0);}to{transform:translateY(", "px);}"], -CHANNEL_HEIGHT);
84
+ var ChannelEffect = /*#__PURE__*/(0, _styledComponents.css)([".channel-effect-enter{opacity:0;}.channel-effect-enter-active{animation:", " 0.2s linear;animation-delay:500ms;}.channel-effect-exit-active{animation:", " 0.2s linear;animation-delay:100ms;}"], channelSlideIn, channelSlideOut);
85
+ var LogoEffect = /*#__PURE__*/(0, _styledComponents.css)([".logo-effect-enter{width:80%;}.logo-effect-enter-active{animation:", " 0.3s linear;animation-delay:400ms;}.logo-effect-exit-active{animation:", " 0.3s linear;animation-delay:400ms;}.logo-effect-exit-done{width:80%;}"], _animations["default"].changeWidth('80%', '100%'), _animations["default"].changeWidth('100%', '80%'));
86
+
87
+ var Box = /*#__PURE__*/_styledComponents["default"].div.withConfig({
88
+ displayName: "header__Box",
89
+ componentId: "sc-1krza7i-0"
90
+ })(["transform:translateY(", ");transition:transform 0.3s linear;background-color:", ";box-sizing:border-box;position:relative;width:100%;display:flex;flex-direction:column;align-items:center;a:link,a:visited,a:hover,a:active{text-decoration:none;}", ""], function (props) {
91
+ return props.isHide ? "".concat(-styles.headerHeight.narrow, "px") : 0;
92
+ }, function (props) {
93
+ return props.bgColor;
94
+ }, HeaderEffect);
95
+
96
+ var TopRow = /*#__PURE__*/_styledComponents["default"].div.withConfig({
97
+ displayName: "header__TopRow",
98
+ componentId: "sc-1krza7i-1"
99
+ })(["height:", "px;padding:", ";max-width:", "px;width:100%;box-sizing:border-box;display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between;align-items:center;z-index:3;"], styles.headerHeight.wide, (0, _css.arrayToCssShorthand)(styles.topRowPadding.desktop), styles.topRowMaxWidth.hd);
100
+
101
+ var ChannelContainer = /*#__PURE__*/_styledComponents["default"].div.withConfig({
102
+ displayName: "header__ChannelContainer",
103
+ componentId: "sc-1krza7i-2"
104
+ })(["width:calc(100% - 120px);max-width:", "px;z-index:1;", ""], styles.channelMaxWidth.hd, ChannelEffect);
105
+
106
+ var FlexGroup = /*#__PURE__*/_styledComponents["default"].div.withConfig({
107
+ displayName: "header__FlexGroup",
108
+ componentId: "sc-1krza7i-3"
109
+ })(["display:flex;"]);
110
+
111
+ var FlexItem = /*#__PURE__*/(0, _styledComponents.css)(["margin-right:14px;display:flex;align-items:center;"]);
112
+
113
+ var LogoContainer = /*#__PURE__*/_styledComponents["default"].div.withConfig({
114
+ displayName: "header__LogoContainer",
115
+ componentId: "sc-1krza7i-4"
116
+ })(["", " ", ""], FlexItem, LogoEffect);
117
+
118
+ var SloganContainer = /*#__PURE__*/_styledComponents["default"].div.withConfig({
119
+ displayName: "header__SloganContainer",
120
+ componentId: "sc-1krza7i-5"
121
+ })(["", " ", ""], FlexItem, SloganEffect);
122
+
123
+ var ActionContainer = /*#__PURE__*/_styledComponents["default"].div.withConfig({
124
+ displayName: "header__ActionContainer",
125
+ componentId: "sc-1krza7i-6"
126
+ })(["", " ", ""], FlexItem, ActionEffect);
127
+
128
+ var ChannelTopContainer = /*#__PURE__*/_styledComponents["default"].div.withConfig({
129
+ displayName: "header__ChannelTopContainer",
130
+ componentId: "sc-1krza7i-7"
131
+ })(["position:absolute;width:calc(100% - 530px);min-width:480px;max-width:910px;right:calc(50% - 540px);", " ", ""], FlexItem, ChannelEffect);
132
+
133
+ var Header = function Header(_ref) {
134
+ var pathname = _ref.pathname,
135
+ channels = _ref.channels,
136
+ services = _ref.services,
137
+ actions = _ref.actions,
138
+ narrowActions = _ref.narrowActions;
139
+ return /*#__PURE__*/_react["default"].createElement(_headerContext["default"].Consumer, null, function (_ref2) {
140
+ var releaseBranch = _ref2.releaseBranch,
141
+ isLinkExternal = _ref2.isLinkExternal,
142
+ theme = _ref2.theme,
143
+ toUseNarrow = _ref2.toUseNarrow,
144
+ hideHeader = _ref2.hideHeader;
145
+
146
+ var bgColor = _theme["default"].selectBgColor(theme);
147
+
148
+ var Logo = _theme["default"].selectLogoComponent(theme);
149
+
150
+ return /*#__PURE__*/_react["default"].createElement(Box, {
151
+ bgColor: bgColor,
152
+ isHide: hideHeader
153
+ }, /*#__PURE__*/_react["default"].createElement(_CSSTransition["default"], {
154
+ "in": !toUseNarrow,
155
+ classNames: "header-effect",
156
+ timeout: {
157
+ appear: 0,
158
+ enter: 700,
159
+ exit: 700
160
+ }
161
+ }, /*#__PURE__*/_react["default"].createElement(TopRow, null, /*#__PURE__*/_react["default"].createElement(FlexGroup, null, /*#__PURE__*/_react["default"].createElement(LogoContainer, null, /*#__PURE__*/_react["default"].createElement(_customizedLink["default"], _links["default"].getLogoLink(isLinkExternal, releaseBranch), /*#__PURE__*/_react["default"].createElement(_CSSTransition["default"], {
162
+ "in": !toUseNarrow,
163
+ classNames: "logo-effect",
164
+ timeout: {
165
+ appear: 0,
166
+ enter: 700,
167
+ exit: 700
168
+ }
169
+ }, /*#__PURE__*/_react["default"].createElement(Logo, null)))), /*#__PURE__*/_react["default"].createElement(ActionContainer, null, /*#__PURE__*/_react["default"].createElement(_CSSTransition["default"], {
170
+ "in": !toUseNarrow,
171
+ classNames: "action-effect",
172
+ timeout: {
173
+ appear: 0,
174
+ enter: 700,
175
+ exit: 700
176
+ }
177
+ }, /*#__PURE__*/_react["default"].createElement(_actionButton["default"], {
178
+ actions: toUseNarrow ? narrowActions : actions
179
+ }))), /*#__PURE__*/_react["default"].createElement(SloganContainer, null, /*#__PURE__*/_react["default"].createElement(_CSSTransition["default"], {
180
+ "in": !toUseNarrow,
181
+ classNames: "slogan-effect",
182
+ timeout: {
183
+ appear: 0,
184
+ enter: 700,
185
+ exit: 700
186
+ }
187
+ }, /*#__PURE__*/_react["default"].createElement(_slogan["default"], null)))), /*#__PURE__*/_react["default"].createElement(ChannelTopContainer, null, /*#__PURE__*/_react["default"].createElement(_CSSTransition["default"], {
188
+ "in": toUseNarrow,
189
+ classNames: "channel-effect",
190
+ timeout: {
191
+ appear: 0,
192
+ enter: 700,
193
+ exit: 300
194
+ },
195
+ unmountOnExit: true
196
+ }, /*#__PURE__*/_react["default"].createElement(_channels["default"], {
197
+ currentPathname: pathname,
198
+ data: channels
199
+ }))), /*#__PURE__*/_react["default"].createElement(_icons["default"], {
200
+ services: services
201
+ }))), /*#__PURE__*/_react["default"].createElement(ChannelContainer, null, /*#__PURE__*/_react["default"].createElement(_CSSTransition["default"], {
202
+ "in": !toUseNarrow,
203
+ classNames: "channel-effect",
204
+ timeout: {
205
+ appear: 0,
206
+ enter: 700,
207
+ exit: 300
208
+ },
209
+ unmountOnExit: true
210
+ }, /*#__PURE__*/_react["default"].createElement(_channels["default"], {
211
+ currentPathname: pathname,
212
+ data: channels,
213
+ borderWidth: styles.channelBottomBorderWidth
214
+ }))));
215
+ });
216
+ };
217
+
218
+ Header.propTypes = {
219
+ pathname: _propTypes["default"].string,
220
+ channels: _channels["default"].propTypes.data,
221
+ services: _propTypes["default"].array,
222
+ actions: _propTypes["default"].array,
223
+ narrowActions: _propTypes["default"].array
224
+ };
225
+ Header.defaultProps = {
226
+ pathname: '',
227
+ channels: _channels["default"].defaultProps.data,
228
+ services: [],
229
+ actions: [],
230
+ narrowActions: []
231
+ };
232
+ var _default = Header;
233
+ exports["default"] = _default;