@twreporter/universal-header 2.4.0-rc.5 → 2.4.0-rc.7

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.
@@ -5,10 +5,12 @@ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "functi
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports["default"] = void 0;
8
+ exports["default"] = exports.MobileIcons = void 0;
9
9
 
10
10
  var _react = _interopRequireWildcard(require("react"));
11
11
 
12
+ var _propTypes = _interopRequireDefault(require("prop-types"));
13
+
12
14
  var _querystring = _interopRequireDefault(require("querystring"));
13
15
 
14
16
  var _styledComponents = _interopRequireDefault(require("styled-components"));
@@ -87,7 +89,10 @@ var StyledDialog = /*#__PURE__*/(0, _styledComponents["default"])(_card.Dialog).
87
89
  return props.showDialog ? '1' : '0';
88
90
  });
89
91
 
90
- var LogInOutIcon = function LogInOutIcon() {
92
+ var LogInOutIcon = function LogInOutIcon(_ref) {
93
+ var _ref$loginButtonType = _ref.loginButtonType,
94
+ loginButtonType = _ref$loginButtonType === void 0 ? 'icon' : _ref$loginButtonType;
95
+
91
96
  var _useState = (0, _react.useState)(false),
92
97
  _useState2 = _slicedToArray(_useState, 2),
93
98
  showDialog = _useState2[0],
@@ -136,15 +141,19 @@ var LogInOutIcon = function LogInOutIcon() {
136
141
  releaseBranch: releaseBranch
137
142
  });
138
143
 
144
+ var LoginButton = loginButtonType === 'icon' || isAuthed ? /*#__PURE__*/_react["default"].createElement(_button.IconButton, {
145
+ iconComponent: Icon,
146
+ theme: theme
147
+ }) : /*#__PURE__*/_react["default"].createElement(_button.TextButton, {
148
+ text: "\u767B\u5165",
149
+ theme: theme
150
+ });
139
151
  return /*#__PURE__*/_react["default"].createElement(IconContainer, {
140
152
  key: "login"
141
153
  }, /*#__PURE__*/_react["default"].createElement(LogContainer, {
142
154
  onClick: onClickIcon,
143
155
  ref: ref
144
- }, /*#__PURE__*/_react["default"].createElement(_button.IconButton, {
145
- iconComponent: Icon,
146
- theme: theme
147
- }), /*#__PURE__*/_react["default"].createElement(_CSSTransition["default"], {
156
+ }, LoginButton, /*#__PURE__*/_react["default"].createElement(_CSSTransition["default"], {
148
157
  "in": showDialog,
149
158
  classNames: "dialog-effect",
150
159
  timeout: {
@@ -161,6 +170,10 @@ var LogInOutIcon = function LogInOutIcon() {
161
170
  }))));
162
171
  };
163
172
 
173
+ LogInOutIcon.propTypes = {
174
+ loginButtonType: _propTypes["default"].oneOf(['icon', 'text'])
175
+ };
176
+
164
177
  var SearchIcon = function SearchIcon() {
165
178
  var _useState3 = (0, _react.useState)(false),
166
179
  _useState4 = _slicedToArray(_useState3, 2),
@@ -248,5 +261,12 @@ var Icons = function Icons() {
248
261
  return /*#__PURE__*/_react["default"].createElement(IconsContainer, null, /*#__PURE__*/_react["default"].createElement(SearchIcon, null), /*#__PURE__*/_react["default"].createElement(BookmarkIcon, null), /*#__PURE__*/_react["default"].createElement(LogInOutIcon, null));
249
262
  };
250
263
 
264
+ var MobileIcons = function MobileIcons() {
265
+ return /*#__PURE__*/_react["default"].createElement(IconsContainer, null, /*#__PURE__*/_react["default"].createElement(LogInOutIcon, {
266
+ loginButtonType: "text"
267
+ }));
268
+ };
269
+
270
+ exports.MobileIcons = MobileIcons;
251
271
  var _default = Icons;
252
272
  exports["default"] = _default;
@@ -15,6 +15,8 @@ var _headerContext = _interopRequireDefault(require("../contexts/header-context"
15
15
 
16
16
  var _slogan = _interopRequireDefault(require("../constants/slogan"));
17
17
 
18
+ var _fonts = _interopRequireDefault(require("../constants/fonts"));
19
+
18
20
  var _theme = require("../utils/theme");
19
21
 
20
22
  var _font = require("@twreporter/core/lib/constants/font");
@@ -32,7 +34,7 @@ var SloganContainer = /*#__PURE__*/_styledComponents["default"].div.withConfig({
32
34
  componentId: "sc-1eoofl8-0"
33
35
  })(["color:", ";display:flex;align-items:center;cursor:default;font-family:", ";font-weight:", ";font-size:14px;"], function (props) {
34
36
  return props.color;
35
- }, _font.fontFamily.title, _font.fontWeight.normal);
37
+ }, _fonts["default"].family.serif, _font.fontWeight.normal);
36
38
 
37
39
  var Slogan = function Slogan(_ref) {
38
40
  var props = _extends({}, _ref);
@@ -0,0 +1,117 @@
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 = _interopRequireWildcard(require("react"));
11
+
12
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
13
+
14
+ var _headerContext = _interopRequireWildcard(require("../contexts/header-context"));
15
+
16
+ var _links = require("../utils/links");
17
+
18
+ var _theme = require("../utils/theme");
19
+
20
+ var _customizedLink = _interopRequireDefault(require("@twreporter/react-components/lib/customized-link"));
21
+
22
+ var _icon = require("@twreporter/react-components/lib/icon");
23
+
24
+ var _button = require("@twreporter/react-components/lib/button");
25
+
26
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
27
+
28
+ 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); }
29
+
30
+ 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; }
31
+
32
+ // context
33
+ // utils
34
+ // @twreporter
35
+ var TabBarContainer = /*#__PURE__*/_styledComponents["default"].div.withConfig({
36
+ displayName: "tab-bar__TabBarContainer",
37
+ componentId: "bdt7uj-0"
38
+ })(["display:flex;justify-content:space-between;padding:4px 16px;border-top:1px solid ", ";background-color:", ";a{text-decoration:none;}"], function (props) {
39
+ return props.borderColor;
40
+ }, function (props) {
41
+ return props.bgColor;
42
+ });
43
+
44
+ var ButtonContainer = /*#__PURE__*/_styledComponents["default"].div.withConfig({
45
+ displayName: "tab-bar__ButtonContainer",
46
+ componentId: "bdt7uj-1"
47
+ })(["display:flex;justify-content:center;margin-right:8px;flex:1;&:last-child{margin-right:0;}a{text-decoration:none;}"]);
48
+
49
+ var TabBar = function TabBar() {
50
+ var _useContext = (0, _react.useContext)(_headerContext["default"]),
51
+ theme = _useContext.theme,
52
+ releaseBranch = _useContext.releaseBranch,
53
+ isLinkExternal = _useContext.isLinkExternal,
54
+ pathname = _useContext.pathname;
55
+
56
+ var _useContext2 = (0, _react.useContext)(_headerContext.HamburgerContext),
57
+ toggleHamburger = _useContext2.toggleHamburger,
58
+ isHamburgerMenuOpen = _useContext2.isHamburgerMenuOpen;
59
+
60
+ var _getTabBarLinks = (0, _links.getTabBarLinks)(isLinkExternal, releaseBranch),
61
+ home = _getTabBarLinks.home,
62
+ latest = _getTabBarLinks.latest,
63
+ bookmark = _getTabBarLinks.bookmark;
64
+
65
+ var HomeIcon = /*#__PURE__*/_react["default"].createElement(_icon.Home, {
66
+ releaseBranch: releaseBranch
67
+ });
68
+
69
+ var ClockIcon = /*#__PURE__*/_react["default"].createElement(_icon.Clock, {
70
+ releaseBranch: releaseBranch
71
+ });
72
+
73
+ var BookmarkIcon = /*#__PURE__*/_react["default"].createElement(_icon.Bookmark, {
74
+ releaseBranch: releaseBranch
75
+ });
76
+
77
+ var HamburgerIcon = /*#__PURE__*/_react["default"].createElement(_icon.Hamburger, {
78
+ releaseBranch: releaseBranch
79
+ });
80
+
81
+ var _selectTabBarTheme = (0, _theme.selectTabBarTheme)(theme),
82
+ bgColor = _selectTabBarTheme.bgColor,
83
+ borderColor = _selectTabBarTheme.borderColor;
84
+
85
+ var isHomeActive = !isHamburgerMenuOpen && pathname === '/';
86
+ var isLatestActive = !isHamburgerMenuOpen && pathname === '/latest';
87
+ var isBookmarkActive = !isHamburgerMenuOpen && pathname === '/bookmarks';
88
+ return /*#__PURE__*/_react["default"].createElement(TabBarContainer, {
89
+ bgColor: bgColor,
90
+ borderColor: borderColor
91
+ }, /*#__PURE__*/_react["default"].createElement(ButtonContainer, null, /*#__PURE__*/_react["default"].createElement(_customizedLink["default"], home, /*#__PURE__*/_react["default"].createElement(_button.IconWithTextButton, {
92
+ text: "\u9996\u9801",
93
+ iconComponent: HomeIcon,
94
+ theme: theme,
95
+ active: isHomeActive
96
+ }))), /*#__PURE__*/_react["default"].createElement(ButtonContainer, null, /*#__PURE__*/_react["default"].createElement(_customizedLink["default"], latest, /*#__PURE__*/_react["default"].createElement(_button.IconWithTextButton, {
97
+ text: "\u6700\u65B0",
98
+ iconComponent: ClockIcon,
99
+ theme: theme,
100
+ active: isLatestActive
101
+ }))), /*#__PURE__*/_react["default"].createElement(ButtonContainer, null, /*#__PURE__*/_react["default"].createElement(_customizedLink["default"], bookmark, /*#__PURE__*/_react["default"].createElement(_button.IconWithTextButton, {
102
+ text: "\u6211\u7684\u66F8\u7C64",
103
+ iconComponent: BookmarkIcon,
104
+ theme: theme,
105
+ active: isBookmarkActive
106
+ }))), /*#__PURE__*/_react["default"].createElement(ButtonContainer, {
107
+ onClick: toggleHamburger
108
+ }, /*#__PURE__*/_react["default"].createElement(_button.IconWithTextButton, {
109
+ text: "\u9078\u55AE",
110
+ iconComponent: HamburgerIcon,
111
+ theme: theme,
112
+ active: isHamburgerMenuOpen
113
+ })));
114
+ };
115
+
116
+ var _default = TabBar;
117
+ exports["default"] = _default;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.tabBar = exports["default"] = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
11
+
12
+ var _tabBar = _interopRequireDefault(require("./tab-bar"));
13
+
14
+ var _headerContext = _interopRequireDefault(require("../contexts/header-context"));
15
+
16
+ var _theme = require("@twreporter/core/lib/constants/theme");
17
+
18
+ var _releaseBranch = require("@twreporter/core/lib/constants/release-branch");
19
+
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
21
+
22
+ /* eslint-disable react/prop-types */
23
+ var _default = {
24
+ title: 'Tab Bar',
25
+ component: _tabBar["default"],
26
+ argTypes: {
27
+ theme: _theme.THEME_STORYBOOK_ARG_TYPE,
28
+ releaseBranch: _releaseBranch.BRANCH_STORYBOOK_ARG_TYPE
29
+ }
30
+ };
31
+ exports["default"] = _default;
32
+
33
+ var Container = /*#__PURE__*/_styledComponents["default"].div.withConfig({
34
+ displayName: "tab-barstories__Container",
35
+ componentId: "paqbaf-0"
36
+ })(["width:320px;"]);
37
+
38
+ var tabBar = function tabBar(props) {
39
+ var theme = props.theme,
40
+ releaseBranch = props.releaseBranch;
41
+ var context = {
42
+ theme: theme,
43
+ releaseBranch: releaseBranch,
44
+ isLinkExternal: true
45
+ };
46
+ return /*#__PURE__*/_react["default"].createElement(_headerContext["default"].Provider, {
47
+ value: context
48
+ }, /*#__PURE__*/_react["default"].createElement(Container, null, /*#__PURE__*/_react["default"].createElement(_tabBar["default"], null)));
49
+ };
50
+
51
+ exports.tabBar = tabBar;
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.BUTTON_SIZE_STORYBOOK_ARG_TYPE = exports.BUTTON_SIZE_PROP_TYPE = exports.BUTTON_SIZE_TYPE = exports.BUTTON_WIDTH_STORYBOOK_ARG_TYPE = exports.BUTTON_WIDTH_PROP_TYPE = exports.BUTTON_WIDTH_TYPE = exports.TEXT_STORYBOOK_ARG_TYPE = exports.TEXT_PROP_TYPE = exports.TEXT_TYPE = exports.DIRECTION_STORYBOOK_ARG_TYPE = exports.DIRECTION_PROP_TYPE = exports.DIRECTION_TYPE = void 0;
7
+
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
11
+
12
+ var DIRECTION_TYPE = {
13
+ row: 'row',
14
+ column: 'column'
15
+ };
16
+ exports.DIRECTION_TYPE = DIRECTION_TYPE;
17
+
18
+ var DIRECTION_PROP_TYPE = _propTypes["default"].oneOf([DIRECTION_TYPE.row, DIRECTION_TYPE.column]);
19
+
20
+ exports.DIRECTION_PROP_TYPE = DIRECTION_PROP_TYPE;
21
+ var DIRECTION_STORYBOOK_ARG_TYPE = {
22
+ defaultValue: DIRECTION_TYPE.row,
23
+ options: [DIRECTION_TYPE.row, DIRECTION_TYPE.column],
24
+ control: {
25
+ type: 'radio'
26
+ }
27
+ };
28
+ exports.DIRECTION_STORYBOOK_ARG_TYPE = DIRECTION_STORYBOOK_ARG_TYPE;
29
+ var TEXT_TYPE = {
30
+ brief: 'brief',
31
+ full: 'full'
32
+ };
33
+ exports.TEXT_TYPE = TEXT_TYPE;
34
+
35
+ var TEXT_PROP_TYPE = _propTypes["default"].oneOf([TEXT_TYPE.brief, TEXT_TYPE.full]);
36
+
37
+ exports.TEXT_PROP_TYPE = TEXT_PROP_TYPE;
38
+ var TEXT_STORYBOOK_ARG_TYPE = {
39
+ defaultValue: TEXT_TYPE.brief,
40
+ options: [TEXT_TYPE.brief, TEXT_TYPE.full],
41
+ control: {
42
+ type: 'radio'
43
+ }
44
+ };
45
+ exports.TEXT_STORYBOOK_ARG_TYPE = TEXT_STORYBOOK_ARG_TYPE;
46
+ var BUTTON_WIDTH_TYPE = {
47
+ fit: 'fit',
48
+ stretch: 'stretch'
49
+ };
50
+ exports.BUTTON_WIDTH_TYPE = BUTTON_WIDTH_TYPE;
51
+
52
+ var BUTTON_WIDTH_PROP_TYPE = _propTypes["default"].oneOf([BUTTON_WIDTH_TYPE.fit, BUTTON_WIDTH_TYPE.stretch]);
53
+
54
+ exports.BUTTON_WIDTH_PROP_TYPE = BUTTON_WIDTH_PROP_TYPE;
55
+ var BUTTON_WIDTH_STORYBOOK_ARG_TYPE = {
56
+ defaultValue: BUTTON_WIDTH_TYPE.fit,
57
+ options: [BUTTON_WIDTH_TYPE.fit, BUTTON_WIDTH_TYPE.stretch],
58
+ control: {
59
+ type: 'radio'
60
+ }
61
+ };
62
+ exports.BUTTON_WIDTH_STORYBOOK_ARG_TYPE = BUTTON_WIDTH_STORYBOOK_ARG_TYPE;
63
+ var BUTTON_SIZE_TYPE = {
64
+ S: 'S',
65
+ L: 'L'
66
+ };
67
+ exports.BUTTON_SIZE_TYPE = BUTTON_SIZE_TYPE;
68
+
69
+ var BUTTON_SIZE_PROP_TYPE = _propTypes["default"].oneOf([BUTTON_SIZE_TYPE.S, BUTTON_SIZE_TYPE.L]);
70
+
71
+ exports.BUTTON_SIZE_PROP_TYPE = BUTTON_SIZE_PROP_TYPE;
72
+ var BUTTON_SIZE_STORYBOOK_ARG_TYPE = {
73
+ defaultValue: BUTTON_SIZE_TYPE.S,
74
+ options: [BUTTON_SIZE_TYPE.S, BUTTON_SIZE_TYPE.L],
75
+ control: {
76
+ type: 'radio'
77
+ }
78
+ };
79
+ exports.BUTTON_SIZE_STORYBOOK_ARG_TYPE = BUTTON_SIZE_STORYBOOK_ARG_TYPE;
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.ACTION_ORDER = exports.ACTION_BUTTON_TYPE = exports.ACTION_LABEL = exports.ACTION_KEY = void 0;
7
7
 
8
- var _row, _column, _ACTION_BUTTON_TYPE;
8
+ var _brief, _full, _ACTION_BUTTON_TYPE;
9
9
 
10
10
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
11
11
 
@@ -16,8 +16,8 @@ var actionKeys = {
16
16
  var ACTION_KEY = actionKeys;
17
17
  exports.ACTION_KEY = ACTION_KEY;
18
18
  var ACTION_LABEL = {
19
- row: (_row = {}, _defineProperty(_row, actionKeys.support, '贊助'), _defineProperty(_row, actionKeys.newsLetter, '訂閱'), _row),
20
- column: (_column = {}, _defineProperty(_column, actionKeys.support, '贊助我們'), _defineProperty(_column, actionKeys.newsLetter, '訂閱電子報'), _column)
19
+ brief: (_brief = {}, _defineProperty(_brief, actionKeys.support, '贊助'), _defineProperty(_brief, actionKeys.newsLetter, '訂閱'), _brief),
20
+ full: (_full = {}, _defineProperty(_full, actionKeys.support, '贊助我們'), _defineProperty(_full, actionKeys.newsLetter, '訂閱電子報'), _full)
21
21
  };
22
22
  exports.ACTION_LABEL = ACTION_LABEL;
23
23
  var ACTION_BUTTON_TYPE = (_ACTION_BUTTON_TYPE = {}, _defineProperty(_ACTION_BUTTON_TYPE, actionKeys.support, 'primary'), _defineProperty(_ACTION_BUTTON_TYPE, actionKeys.newsLetter, 'secondary'), _ACTION_BUTTON_TYPE);
@@ -28,7 +28,7 @@ var channelKey = {
28
28
  var CHANNEL_KEY = channelKey; // external links are in external-links.js file
29
29
 
30
30
  exports.CHANNEL_KEY = CHANNEL_KEY;
31
- var CHANNEL_PATH = (_CHANNEL_PATH = {}, _defineProperty(_CHANNEL_PATH, channelKey.latest, '/categories/latest'), _defineProperty(_CHANNEL_PATH, channelKey.topic, '/topics'), _defineProperty(_CHANNEL_PATH, channelKey.humanStory, '/tags/58db34a30f56b40d001ae6a6'), _defineProperty(_CHANNEL_PATH, channelKey.photography, '/photography'), _defineProperty(_CHANNEL_PATH, channelKey.infographic, "/tags/".concat(_infogram.INFOGRAM_ID)), _CHANNEL_PATH);
31
+ var CHANNEL_PATH = (_CHANNEL_PATH = {}, _defineProperty(_CHANNEL_PATH, channelKey.latest, '/latest'), _defineProperty(_CHANNEL_PATH, channelKey.topic, '/topics'), _defineProperty(_CHANNEL_PATH, channelKey.humanStory, '/tags/58db34a30f56b40d001ae6a6'), _defineProperty(_CHANNEL_PATH, channelKey.photography, '/photography'), _defineProperty(_CHANNEL_PATH, channelKey.infographic, "/tags/".concat(_infogram.INFOGRAM_ID)), _CHANNEL_PATH);
32
32
  exports.CHANNEL_PATH = CHANNEL_PATH;
33
33
  var CHANNEL_LABEL = (_CHANNEL_LABEL = {}, _defineProperty(_CHANNEL_LABEL, channelKey.latest, '最新'), _defineProperty(_CHANNEL_LABEL, channelKey.topic, '深度專題'), _defineProperty(_CHANNEL_LABEL, channelKey.category, '議題'), _defineProperty(_CHANNEL_LABEL, channelKey.opinion, '評論'), _defineProperty(_CHANNEL_LABEL, channelKey.column, '專欄'), _defineProperty(_CHANNEL_LABEL, channelKey.humanStory, '人物故事'), _defineProperty(_CHANNEL_LABEL, channelKey.photography, '影像'), _defineProperty(_CHANNEL_LABEL, channelKey.podcast, 'Podcast'), _defineProperty(_CHANNEL_LABEL, channelKey.kidsReporter, '少年報導者'), _defineProperty(_CHANNEL_LABEL, channelKey.infographic, '數位敘事'), _CHANNEL_LABEL);
34
34
  exports.CHANNEL_LABEL = CHANNEL_LABEL;
@@ -31,10 +31,14 @@ var linkPropTypes = {
31
31
  isExternal: _propTypes["default"].bool.isRequired
32
32
  };
33
33
  var hamburgerContextPropTypes = {
34
- closeHamburgerMenu: _propTypes["default"].func
34
+ toggleHamburger: _propTypes["default"].func,
35
+ closeHamburgerMenu: _propTypes["default"].func,
36
+ isHamburgerMenuOpen: _propTypes["default"]["boolean"]
35
37
  };
36
38
  var hamburgerContextDefaultProps = {
37
- closeHamburgerMenu: function closeHamburgerMenu() {}
39
+ toggleHamburger: function toggleHamburger() {},
40
+ closeHamburgerMenu: function closeHamburgerMenu() {},
41
+ isHamburgerMenuOpen: false
38
42
  };
39
43
  var CONTEXT_PROP = {
40
44
  propTypes: contextPropTypes,
@@ -29,7 +29,7 @@ var _map = _interopRequireDefault(require("lodash/map"));
29
29
 
30
30
  var _reduce = _interopRequireDefault(require("lodash/reduce"));
31
31
 
32
- var _excluded = ["releaseBranch", "isAuthed", "isLinkExternal", "theme"];
32
+ var _excluded = ["releaseBranch", "isAuthed", "isLinkExternal", "theme", "pathname"];
33
33
 
34
34
  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); }
35
35
 
@@ -227,6 +227,7 @@ var Container = /*#__PURE__*/function (_React$PureComponent) {
227
227
  isAuthed = _this$props.isAuthed,
228
228
  isLinkExternal = _this$props.isLinkExternal,
229
229
  theme = _this$props.theme,
230
+ pathname = _this$props.pathname,
230
231
  passThrough = _objectWithoutProperties(_this$props, _excluded);
231
232
 
232
233
  var _this$state = this.state,
@@ -237,6 +238,7 @@ var Container = /*#__PURE__*/function (_React$PureComponent) {
237
238
  isAuthed: isAuthed,
238
239
  isLinkExternal: isLinkExternal,
239
240
  theme: theme,
241
+ pathname: pathname,
240
242
  toUseNarrow: toUseNarrow,
241
243
  hideHeader: hideHeader
242
244
  };
@@ -257,11 +259,13 @@ var Container = /*#__PURE__*/function (_React$PureComponent) {
257
259
  }(_react["default"].PureComponent);
258
260
 
259
261
  _defineProperty(Container, "defaultProps", _objectSpread(_objectSpread({}, _propTypes2.CONTEXT_PROP.defaultProps), {}, {
260
- pathname: ''
262
+ pathname: '',
263
+ location: {}
261
264
  }));
262
265
 
263
266
  _defineProperty(Container, "propTypes", _objectSpread(_objectSpread({}, _propTypes2.CONTEXT_PROP.propTypes), {}, {
264
- pathname: _propTypes["default"].string
267
+ pathname: _propTypes["default"].string,
268
+ location: _propTypes["default"].object
265
269
  }));
266
270
 
267
271
  function mapStateToProps(state) {
@@ -12,7 +12,8 @@ exports.getActionLinks = getActionLinks;
12
12
  exports.getFooterLinks = getFooterLinks;
13
13
  exports.getSocialMediaLinks = getSocialMediaLinks;
14
14
  exports.getChannelLinks = getChannelLinks;
15
- exports.getCategoryLink = void 0;
15
+ exports.getTabBarLinks = getTabBarLinks;
16
+ exports.getCategoryLink = exports.checkReferrer = void 0;
16
17
 
17
18
  var _services = require("../constants/services");
18
19
 
@@ -34,13 +35,16 @@ var _forEach = _interopRequireDefault(require("lodash/forEach"));
34
35
 
35
36
  var _reduce = _interopRequireDefault(require("lodash/reduce"));
36
37
 
38
+ var _split = _interopRequireDefault(require("lodash/split"));
39
+
37
40
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
38
41
 
39
42
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
40
43
 
41
44
  var _ = {
42
45
  forEach: _forEach["default"],
43
- reduce: _reduce["default"]
46
+ reduce: _reduce["default"],
47
+ split: _split["default"]
44
48
  };
45
49
  var originsForClient = _requestOrigins["default"].forClientSideRendering;
46
50
  /**
@@ -97,6 +101,15 @@ var __composeExternalLink = function __composeExternalLink(link) {
97
101
  };
98
102
  };
99
103
 
104
+ var checkReferrer = function checkReferrer() {
105
+ var referrer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
106
+ var releaseBranch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultReleaseBranch;
107
+ var url = new URL(referrer);
108
+ return url.origin === mainBaseURL[releaseBranch];
109
+ };
110
+
111
+ exports.checkReferrer = checkReferrer;
112
+
100
113
  var getCategoryLink = function getCategoryLink() {
101
114
  var isExternal = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultIsExternal;
102
115
  var releaseBranch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultReleaseBranch;
@@ -181,4 +194,14 @@ function getChannelLinks() {
181
194
 
182
195
  links[_channels.CHANNEL_KEY.kidsReporter] = __composeExternalLink(__getExternalLinks().kidsReporter, '_blank');
183
196
  return links;
197
+ }
198
+
199
+ function getTabBarLinks() {
200
+ var isExternal = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultIsExternal;
201
+ var releaseBranch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultReleaseBranch;
202
+ return {
203
+ home: __getLink(isExternal, releaseBranch, mainBaseURL, ''),
204
+ latest: __getLink(isExternal, releaseBranch, mainBaseURL, '/latest'),
205
+ bookmark: __getLink(isExternal, releaseBranch, mainBaseURL, _services.servicePathnames.bookmarks)
206
+ };
184
207
  }