@twreporter/react-article-components 1.6.4-rc.1 → 1.6.4-rc.4

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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,36 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [1.6.4-rc.4](https://github.com/twreporter/twreporter-npm-packages/compare/@twreporter/react-article-components@1.6.4-rc.3...@twreporter/react-article-components@1.6.4-rc.4) (2022-09-05)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * make `useSnackBar` headless ([ddaf3dd](https://github.com/twreporter/twreporter-npm-packages/commit/ddaf3ddbd44abba3684f9209fc1b9e8b4c678c15))
12
+
13
+
14
+
15
+
16
+
17
+ ## [1.6.4-rc.3](https://github.com/twreporter/twreporter-npm-packages/compare/@twreporter/react-article-components@1.6.4-rc.2...@twreporter/react-article-components@1.6.4-rc.3) (2022-08-25)
18
+
19
+
20
+ ### Bug Fixes
21
+
22
+ * fix empty subcategory part ([#305](https://github.com/twreporter/twreporter-npm-packages/issues/305)) ([492d347](https://github.com/twreporter/twreporter-npm-packages/commit/492d347f00427ccf2e8f3b93590d91309ea05676))
23
+
24
+
25
+
26
+
27
+
28
+ ## [1.6.4-rc.2](https://github.com/twreporter/twreporter-npm-packages/compare/@twreporter/react-article-components@1.6.4-rc.1...@twreporter/react-article-components@1.6.4-rc.2) (2022-08-22)
29
+
30
+ **Note:** Version bump only for package @twreporter/react-article-components
31
+
32
+
33
+
34
+
35
+
6
36
  ## [1.6.4-rc.1](https://github.com/twreporter/twreporter-npm-packages/compare/@twreporter/react-article-components@1.6.4-rc.0...@twreporter/react-article-components@1.6.4-rc.1) (2022-08-22)
7
37
 
8
38
  **Note:** Version bump only for package @twreporter/react-article-components
@@ -332,7 +332,9 @@ var Article = /*#__PURE__*/function (_PureComponent) {
332
332
  var backToTopic = leadingProps && leadingProps.isTopicPublished ? leadingProps.topicHref : ''; // only for tablet and below
333
333
 
334
334
  var metadataAndToolsJSX = /*#__PURE__*/_react["default"].createElement(MetadataAndToolsBlock, null, /*#__PURE__*/_react["default"].createElement(_metadata["default"], {
335
- categories: post.categories,
335
+ categories: post.categories // TODO: remove when categorySet integration is done
336
+ ,
337
+ categorySet: post.categorySet,
336
338
  date: post.published_date,
337
339
  designers: post.designers,
338
340
  photographers: post.photographers,
@@ -365,7 +367,9 @@ var Article = /*#__PURE__*/function (_PureComponent) {
365
367
  onFontLevelChange: this.changeFontLevel
366
368
  }), /*#__PURE__*/_react["default"].createElement(DesktopAsideBlock, null, /*#__PURE__*/_react["default"].createElement(_desktopAside["default"], {
367
369
  backToTopic: backToTopic,
368
- categories: post.categories,
370
+ categories: post.categories // TODO: remove when categorySet integration is done
371
+ ,
372
+ categorySet: post.categorySet,
369
373
  date: post.published_date,
370
374
  designers: post.designers,
371
375
  photographers: post.photographers,
@@ -154,6 +154,7 @@ var Aside = /*#__PURE__*/function (_React$PureComponent) {
154
154
  articleMetaForBookmark = _this$props.articleMetaForBookmark,
155
155
  backToTopic = _this$props.backToTopic,
156
156
  categories = _this$props.categories,
157
+ categorySet = _this$props.categorySet,
157
158
  date = _this$props.date,
158
159
  designers = _this$props.designers,
159
160
  engineers = _this$props.engineers,
@@ -166,6 +167,7 @@ var Aside = /*#__PURE__*/function (_React$PureComponent) {
166
167
 
167
168
  var metadataJSX = /*#__PURE__*/_react["default"].createElement(_metadata["default"], {
168
169
  categories: categories,
170
+ categorySet: categorySet,
169
171
  date: date,
170
172
  designers: designers,
171
173
  photographers: photographers,
@@ -7,21 +7,19 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports["default"] = void 0;
9
9
 
10
- var _dynamicComponentsContext = _interopRequireDefault(require("../../contexts/dynamic-components-context"));
11
-
12
10
  var _react = _interopRequireWildcard(require("react"));
13
11
 
12
+ var _styledComponents = _interopRequireWildcard(require("styled-components"));
13
+
14
14
  var _get = _interopRequireDefault(require("lodash/get"));
15
15
 
16
16
  var _map = _interopRequireDefault(require("lodash/map"));
17
17
 
18
- var _mediaQuery = _interopRequireDefault(require("@twreporter/core/lib/utils/media-query"));
19
-
20
- var _aside = _interopRequireDefault(require("../../constants/prop-types/aside"));
21
-
22
18
  var _sortBy = _interopRequireDefault(require("lodash/sortBy"));
23
19
 
24
- var _styledComponents = _interopRequireWildcard(require("styled-components"));
20
+ var _dynamicComponentsContext = _interopRequireDefault(require("../../contexts/dynamic-components-context"));
21
+
22
+ var _aside = _interopRequireDefault(require("../../constants/prop-types/aside"));
25
23
 
26
24
  var _theme = _interopRequireDefault(require("../../constants/theme"));
27
25
 
@@ -31,14 +29,18 @@ var _typography = _interopRequireDefault(require("../../constants/typography"));
31
29
 
32
30
  var _category = require("../../constants/category");
33
31
 
34
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
32
+ var _mediaQuery = _interopRequireDefault(require("@twreporter/core/lib/utils/media-query"));
35
33
 
36
- 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); }
34
+ var _featureFlag = require("@twreporter/core/lib/constants/feature-flag");
37
35
 
38
- 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; }
36
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;
39
37
 
40
38
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
41
39
 
40
+ 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); }
41
+
42
+ 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; }
43
+
42
44
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
43
45
 
44
46
  function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
@@ -93,71 +95,92 @@ var CategoryFlex = /*#__PURE__*/_styledComponents["default"].div.withConfig({
93
95
  return props.flexGrow;
94
96
  }, _mediaQuery["default"].tabletAndBelow(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n padding-right: 15px;\n padding-left: 15px;\n "]))), _mediaQuery["default"].desktopAndAbove(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n padding-right: 5px;\n padding-left: 5px;\n "]))));
95
97
 
98
+ var CategorySetFlexBox = /*#__PURE__*/_styledComponents["default"].div.withConfig({
99
+ displayName: "metadata__CategorySetFlexBox",
100
+ componentId: "sc-1c3910m-2"
101
+ })(["display:flex;flex-direction:column;"]);
102
+
103
+ var LinkContainer = /*#__PURE__*/_styledComponents["default"].div.withConfig({
104
+ displayName: "metadata__LinkContainer",
105
+ componentId: "sc-1c3910m-3"
106
+ })(["display:flex;"]);
107
+
108
+ var CategorySetFlex = /*#__PURE__*/_styledComponents["default"].div.withConfig({
109
+ displayName: "metadata__CategorySetFlex",
110
+ componentId: "sc-1c3910m-4"
111
+ })(["", " ", " flex-basis:", ";", " ", ""], function (props) {
112
+ return props.isTop && createLine('top', props.theme.name);
113
+ }, function (props) {
114
+ return props.isCategory && 'min-width: 100px;';
115
+ }, function (props) {
116
+ return props.isCategory ? '100px' : 'calc(100% - 100px)';
117
+ }, _mediaQuery["default"].tabletAndBelow(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n padding-right: 10px;\n padding-left: 10px;\n "]))), _mediaQuery["default"].desktopAndAbove(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n padding-right: 5px;\n padding-left: 5px;\n "]))));
118
+
96
119
  var CategoryText = /*#__PURE__*/_styledComponents["default"].div.withConfig({
97
120
  displayName: "metadata__CategoryText",
98
- componentId: "sc-1c3910m-2"
121
+ componentId: "sc-1c3910m-5"
99
122
  })(["display:inline-block;font-size:16px;line-height:1;padding-left:5px;&:hover{padding-bottom:2px;border-width:0 0 1px 0;border-style:solid;}"]);
100
123
 
101
124
  var DateSection = /*#__PURE__*/_styledComponents["default"].div.withConfig({
102
125
  displayName: "metadata__DateSection",
103
- componentId: "sc-1c3910m-3"
126
+ componentId: "sc-1c3910m-6"
104
127
  })(["", " font-size:14px;color:", ";margin-left:5px;margin-top:15px;&::before{content:'\u520A\u51FA\u65E5\u671F';margin-right:10px;}"], function (props) {
105
128
  return createLine('top', props.theme.name);
106
129
  }, _color["default"].gray70);
107
130
 
108
131
  var AuthorSection = /*#__PURE__*/_styledComponents["default"].div.withConfig({
109
132
  displayName: "metadata__AuthorSection",
110
- componentId: "sc-1c3910m-4"
133
+ componentId: "sc-1c3910m-7"
111
134
  })(["margin-top:15px;margin-bottom:45px;"]);
112
135
 
113
136
  var AuthorRow = /*#__PURE__*/_styledComponents["default"].div.withConfig({
114
137
  displayName: "metadata__AuthorRow",
115
- componentId: "sc-1c3910m-5"
138
+ componentId: "sc-1c3910m-8"
116
139
  })(["display:flex;align-items:flex-start;margin-bottom:10px;"]);
117
140
 
118
141
  var AuthorJobTitle = /*#__PURE__*/_styledComponents["default"].div.withConfig({
119
142
  displayName: "metadata__AuthorJobTitle",
120
- componentId: "sc-1c3910m-6"
143
+ componentId: "sc-1c3910m-9"
121
144
  })(["font-size:14px;color:", ";margin-left:5px;padding-top:2px;line-height:1;flex-shrink:0;"], _color["default"].gray80);
122
145
 
123
146
  var AuthorNames = /*#__PURE__*/_styledComponents["default"].div.withConfig({
124
147
  displayName: "metadata__AuthorNames",
125
- componentId: "sc-1c3910m-7"
148
+ componentId: "sc-1c3910m-10"
126
149
  })(["display:flex;flex-wrap:wrap;"]);
127
150
 
128
151
  var AuthorName = /*#__PURE__*/_styledComponents["default"].div.withConfig({
129
152
  displayName: "metadata__AuthorName",
130
- componentId: "sc-1c3910m-8"
131
- })(["font-size:16px;margin-left:5px;line-height:1;padding-bottom:3px;word-break:keep-all;vertical-align:top;&:hover{padding-bottom:2px;border-width:0 0 1px 0;border-style:solid;}", ""], _mediaQuery["default"].mobileOnly(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n display: inline-block;\n "]))));
153
+ componentId: "sc-1c3910m-11"
154
+ })(["font-size:16px;margin-left:5px;line-height:1;padding-bottom:3px;word-break:keep-all;vertical-align:top;&:hover{padding-bottom:2px;border-width:0 0 1px 0;border-style:solid;}", ""], _mediaQuery["default"].mobileOnly(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n display: inline-block;\n "]))));
132
155
 
133
156
  var RawAuthorText = /*#__PURE__*/_styledComponents["default"].div.withConfig({
134
157
  displayName: "metadata__RawAuthorText",
135
- componentId: "sc-1c3910m-9"
158
+ componentId: "sc-1c3910m-12"
136
159
  })(["font-size:14px;color:", ";padding-left:5px;"], _color["default"].gray80);
137
160
 
138
161
  var AngledSeparationLine = /*#__PURE__*/_styledComponents["default"].div.withConfig({
139
162
  displayName: "metadata__AngledSeparationLine",
140
- componentId: "sc-1c3910m-10"
163
+ componentId: "sc-1c3910m-13"
141
164
  })(["border-width:0.5px;border-style:solid;width:15px;transform:translateY(9px) rotate(-45deg);flex-shrink:0;"]);
142
165
 
143
166
  var TagButton = /*#__PURE__*/_styledComponents["default"].div.withConfig({
144
167
  displayName: "metadata__TagButton",
145
- componentId: "sc-1c3910m-11"
168
+ componentId: "sc-1c3910m-14"
146
169
  })(["border-style:solid;border-width:1px;border-radius:50px;padding:5px 10px 5px 10px;font-size:14px;font-weight:", ";margin-bottom:10px;margin-right:10px;&:before{content:'#';}"], _typography["default"].font.weight.normal);
147
170
 
148
171
  var TagsSection = /*#__PURE__*/_styledComponents["default"].div.withConfig({
149
172
  displayName: "metadata__TagsSection",
150
- componentId: "sc-1c3910m-12"
173
+ componentId: "sc-1c3910m-15"
151
174
  })(["display:flex;flex-wrap:wrap;align-content:center;", ""], function (props) {
152
175
  return createLine('bottom', props.theme.name);
153
176
  });
154
177
 
155
178
  var MetadataContainer = /*#__PURE__*/_styledComponents["default"].div.withConfig({
156
179
  displayName: "metadata__MetadataContainer",
157
- componentId: "sc-1c3910m-13"
180
+ componentId: "sc-1c3910m-16"
158
181
  })(["", " letter-spacing:0.4px;", " ", ""], function (props) {
159
182
  return getMetadataContainerStyles(props.theme.name);
160
- }, _mediaQuery["default"].mobileOnly(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n width: calc(300/355*100%);\n margin: 0 auto;\n "]))), _mediaQuery["default"].tabletOnly(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n width: 513px;\n margin: 0 auto;\n "]))));
183
+ }, _mediaQuery["default"].mobileOnly(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n width: calc(300/355*100%);\n margin: 0 auto;\n "]))), _mediaQuery["default"].tabletOnly(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n width: 513px;\n margin: 0 auto;\n "]))));
161
184
 
162
185
  function getMetadataContainerStyles(themeName) {
163
186
  switch (themeName) {
@@ -214,6 +237,36 @@ var Metadata = /*#__PURE__*/function (_PureComponent) {
214
237
  return categoriesJSX;
215
238
  }));
216
239
  }
240
+ }, {
241
+ key: "renderCategorySetSection",
242
+ value: function renderCategorySetSection() {
243
+ var categorySet = this.props.categorySet;
244
+ return /*#__PURE__*/_react["default"].createElement(CategorySetFlexBox, null, /*#__PURE__*/_react["default"].createElement(_dynamicComponentsContext["default"].Consumer, null, function (components) {
245
+ var categorySetJSX = _.map(categorySet, function (set, index) {
246
+ var _set$category, _set$category2, _set$subcategory, _set$subcategory2, _set$category3;
247
+
248
+ var genLink = function genLink(path, name) {
249
+ var isCategory = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
250
+ return /*#__PURE__*/_react["default"].createElement(CategorySetFlex, {
251
+ isCategory: isCategory,
252
+ isTop: index === 0
253
+ }, path && name && /*#__PURE__*/_react["default"].createElement(components.Link, {
254
+ to: path
255
+ }, /*#__PURE__*/_react["default"].createElement(CategoryText, {
256
+ style: {
257
+ fontWeight: isCategory ? 'bold' : 'normal'
258
+ }
259
+ }, name)));
260
+ };
261
+
262
+ return /*#__PURE__*/_react["default"].createElement(LinkContainer, {
263
+ key: "categorySet-".concat(index)
264
+ }, genLink("/categories/".concat(set === null || set === void 0 ? void 0 : (_set$category = set.category) === null || _set$category === void 0 ? void 0 : _set$category.id), set === null || set === void 0 ? void 0 : (_set$category2 = set.category) === null || _set$category2 === void 0 ? void 0 : _set$category2.name, true), set !== null && set !== void 0 && (_set$subcategory = set.subcategory) !== null && _set$subcategory !== void 0 && _set$subcategory.id && set !== null && set !== void 0 && (_set$subcategory2 = set.subcategory) !== null && _set$subcategory2 !== void 0 && _set$subcategory2.name ? genLink("/tags/".concat(set.subcategory.id), set.subcategory.name) : genLink("/categories/".concat(set === null || set === void 0 ? void 0 : (_set$category3 = set.category) === null || _set$category3 === void 0 ? void 0 : _set$category3.id), '全部'));
265
+ });
266
+
267
+ return categorySetJSX;
268
+ }));
269
+ }
217
270
  }, {
218
271
  key: "renderTagsSection",
219
272
  value: function renderTagsSection() {
@@ -264,7 +317,7 @@ var Metadata = /*#__PURE__*/function (_PureComponent) {
264
317
  month: 'numeric',
265
318
  day: 'numeric'
266
319
  }) : '';
267
- return /*#__PURE__*/_react["default"].createElement(MetadataContainer, null, this.renderCategorySection(), /*#__PURE__*/_react["default"].createElement(DateSection, null, date), this.renderAuthorsSection(), this.renderTagsSection());
320
+ return /*#__PURE__*/_react["default"].createElement(MetadataContainer, null, _featureFlag.ENABLE_NEW_INFO_ARCH && this.renderCategorySetSection(), !_featureFlag.ENABLE_NEW_INFO_ARCH && this.renderCategorySection(), /*#__PURE__*/_react["default"].createElement(DateSection, null, date), this.renderAuthorsSection(), this.renderTagsSection());
268
321
  }
269
322
  }]);
270
323
 
@@ -275,6 +328,7 @@ _defineProperty(Metadata, "propTypes", _aside["default"].metadata);
275
328
 
276
329
  _defineProperty(Metadata, "defaultProps", {
277
330
  categories: [],
331
+ categorySet: [],
278
332
  tags: [],
279
333
  writers: [],
280
334
  photographers: [],
@@ -65,7 +65,7 @@ var _ = {
65
65
  isNil: _isNil["default"]
66
66
  }; // global var
67
67
 
68
- var HideTextContext = /*#__PURE__*/(0, _react.createContext)();
68
+ var ToolBarContext = /*#__PURE__*/(0, _react.createContext)();
69
69
  var defaultFbAppID = '962589903815787';
70
70
 
71
71
  var defaultFunc = function defaultFunc() {};
@@ -90,8 +90,8 @@ var OptionContainer = /*#__PURE__*/_styledComponents["default"].div.withConfig({
90
90
  var SnackBarContainer = /*#__PURE__*/_styledComponents["default"].div.withConfig({
91
91
  displayName: "mobile-tool-bar__SnackBarContainer",
92
92
  componentId: "do65sv-3"
93
- })(["z-index:5;opacity:", ";position:absolute;left:50%;transform:translateX(-50%);transition:opacity 100ms;"], function (props) {
94
- return props.showSnackBar ? '1' : '0';
93
+ })(["z-index:5;position:absolute;left:50%;transform:translateX(-50%);transition:opacity 100ms;opacity:", ";"], function (props) {
94
+ return props.showSnackBar ? 1 : 0;
95
95
  });
96
96
 
97
97
  var ToolBarContainer = /*#__PURE__*/_styledComponents["default"].div.withConfig({
@@ -246,12 +246,10 @@ var ShareBy = function ShareBy(_ref4) {
246
246
  showOption = _useState2[0],
247
247
  setShowState = _useState2[1];
248
248
 
249
- var _useState3 = (0, _react.useState)(false),
250
- _useState4 = _slicedToArray(_useState3, 2),
251
- showSnackBar = _useState4[0],
252
- setSnackBar = _useState4[1];
249
+ var _useContext = (0, _react.useContext)(ToolBarContext),
250
+ hideText = _useContext.hideText,
251
+ toastr = _useContext.toastr;
253
252
 
254
- var hideText = (0, _react.useContext)(HideTextContext);
255
253
  var themeContext = (0, _react.useContext)(_styledComponents.ThemeContext);
256
254
  var theme = themeContext.name === _theme["default"].article.v2.photo ? 'photography' : 'normal';
257
255
  var releaseBranch = themeContext.releaseBranch;
@@ -261,10 +259,10 @@ var ShareBy = function ShareBy(_ref4) {
261
259
  return;
262
260
  }
263
261
 
264
- setSnackBar(true);
265
- setTimeout(function () {
266
- setSnackBar(false);
267
- }, 3000);
262
+ toastr({
263
+ text: '已複製',
264
+ timeout: 3000
265
+ });
268
266
  };
269
267
 
270
268
  var onButtonClick = function onButtonClick() {
@@ -294,11 +292,6 @@ var ShareBy = function ShareBy(_ref4) {
294
292
  appID: fbAppID
295
293
  }), /*#__PURE__*/_react["default"].createElement(LineShare, null), /*#__PURE__*/_react["default"].createElement(TwitterShare, null), /*#__PURE__*/_react["default"].createElement(CopyUrl, {
296
294
  onclick: onCopyUrl
297
- })), /*#__PURE__*/_react["default"].createElement(SnackBarContainer, {
298
- showSnackBar: showSnackBar
299
- }, /*#__PURE__*/_react["default"].createElement(_snackBar.SnackBar, {
300
- text: "\u5DF2\u8907\u88FD",
301
- theme: theme
302
295
  })));
303
296
  };
304
297
 
@@ -308,7 +301,10 @@ ShareBy.propTypes = {
308
301
 
309
302
  var FontLevel = function FontLevel(_ref5) {
310
303
  var changeFontLevel = _ref5.changeFontLevel;
311
- var hideText = (0, _react.useContext)(HideTextContext);
304
+
305
+ var _useContext2 = (0, _react.useContext)(ToolBarContext),
306
+ hideText = _useContext2.hideText;
307
+
312
308
  var themeContext = (0, _react.useContext)(_styledComponents.ThemeContext);
313
309
  var theme = themeContext.name === _theme["default"].article.v2.photo ? 'photography' : 'normal';
314
310
  var releaseBranch = themeContext.releaseBranch;
@@ -331,17 +327,10 @@ FontLevel.propTypes = {
331
327
  var BookmarkBlock = function BookmarkBlock(_ref6) {
332
328
  var articleMeta = _ref6.articleMeta;
333
329
 
334
- var _useState5 = (0, _react.useState)(false),
335
- _useState6 = _slicedToArray(_useState5, 2),
336
- showSnackBar = _useState6[0],
337
- setSnackBar = _useState6[1];
330
+ var _useContext3 = (0, _react.useContext)(ToolBarContext),
331
+ hideText = _useContext3.hideText,
332
+ toastr = _useContext3.toastr;
338
333
 
339
- var _useState7 = (0, _react.useState)(''),
340
- _useState8 = _slicedToArray(_useState7, 2),
341
- snackbarText = _useState8[0],
342
- setSnackbarText = _useState8[1];
343
-
344
- var hideText = (0, _react.useContext)(HideTextContext);
345
334
  var themeContext = (0, _react.useContext)(_styledComponents.ThemeContext);
346
335
  var theme = themeContext.name === _theme["default"].article.v2.photo ? 'photography' : 'normal';
347
336
  var releaseBranch = themeContext.releaseBranch;
@@ -373,7 +362,7 @@ var BookmarkBlock = function BookmarkBlock(_ref6) {
373
362
  console.error('add bookmark fail', _context2.t0);
374
363
 
375
364
  case 9:
376
- toastr(isBookmarked);
365
+ onClickButton(isBookmarked);
377
366
 
378
367
  case 10:
379
368
  case "end":
@@ -402,24 +391,19 @@ var BookmarkBlock = function BookmarkBlock(_ref6) {
402
391
  }));
403
392
  };
404
393
 
405
- var toastr = function toastr(isBookmarked) {
406
- setSnackbarText(isBookmarked ? '已取消書籤' : '已儲存');
407
- setSnackBar(true);
408
- setTimeout(function () {
409
- setSnackBar(false);
410
- }, 3000);
394
+ var onClickButton = function onClickButton(isBookmarked) {
395
+ var text = isBookmarked ? '已取消書籤' : '已儲存';
396
+ toastr({
397
+ text: text,
398
+ timeout: 3000
399
+ });
411
400
  };
412
401
 
413
402
  return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_bookmarkWidget["default"], {
414
403
  toAutoCheck: false,
415
404
  articleMeta: articleMeta,
416
405
  renderIcon: renderIcon
417
- }), /*#__PURE__*/_react["default"].createElement(SnackBarContainer, {
418
- showSnackBar: showSnackBar
419
- }, /*#__PURE__*/_react["default"].createElement(_snackBar.SnackBar, {
420
- text: snackbarText,
421
- theme: theme
422
- })));
406
+ }));
423
407
  };
424
408
 
425
409
  BookmarkBlock.propTypes = {
@@ -428,7 +412,10 @@ BookmarkBlock.propTypes = {
428
412
 
429
413
  var BackToTopic = function BackToTopic(_ref8) {
430
414
  var backToTopic = _ref8.backToTopic;
431
- var hideText = (0, _react.useContext)(HideTextContext);
415
+
416
+ var _useContext4 = (0, _react.useContext)(ToolBarContext),
417
+ hideText = _useContext4.hideText;
418
+
432
419
  var themeContext = (0, _react.useContext)(_styledComponents.ThemeContext);
433
420
  var theme = themeContext.name === _theme["default"].article.v2.photo ? 'photography' : 'normal';
434
421
  var releaseBranch = themeContext.releaseBranch;
@@ -452,7 +439,9 @@ BackToTopic.propTypes = {
452
439
  };
453
440
 
454
441
  var RelatedPost = function RelatedPost() {
455
- var hideText = (0, _react.useContext)(HideTextContext);
442
+ var _useContext5 = (0, _react.useContext)(ToolBarContext),
443
+ hideText = _useContext5.hideText;
444
+
456
445
  var themeContext = (0, _react.useContext)(_styledComponents.ThemeContext);
457
446
  var theme = themeContext.name === _theme["default"].article.v2.photo ? 'photography' : 'normal';
458
447
  var releaseBranch = themeContext.releaseBranch;
@@ -479,10 +468,10 @@ var ToolBar = function ToolBar(_ref9) {
479
468
  onFontLevelChange = _ref9.onFontLevelChange,
480
469
  className = _ref9.className;
481
470
 
482
- var _useState9 = (0, _react.useState)('init'),
483
- _useState10 = _slicedToArray(_useState9, 2),
484
- scrollDirection = _useState10[0],
485
- setScrollDirection = _useState10[1];
471
+ var _useState3 = (0, _react.useState)('init'),
472
+ _useState4 = _slicedToArray(_useState3, 2),
473
+ scrollDirection = _useState4[0],
474
+ setScrollDirection = _useState4[1];
486
475
 
487
476
  (0, _react.useEffect)(function () {
488
477
  var threshold = 8;
@@ -523,17 +512,27 @@ var ToolBar = function ToolBar(_ref9) {
523
512
  };
524
513
  }, [scrollDirection]);
525
514
  var themeContext = (0, _react.useContext)(_styledComponents.ThemeContext);
515
+ var theme = themeContext.name === _theme["default"].article.v2.photo ? 'photography' : 'normal';
526
516
 
527
517
  var _getToolBarTheme = (0, _theme2.getToolBarTheme)(themeContext.name),
528
518
  bgColor = _getToolBarTheme.bgColor,
529
519
  shadow = _getToolBarTheme.shadow;
530
520
 
521
+ var _useSnackBar = (0, _snackBar.useSnackBar)(),
522
+ showSnackBar = _useSnackBar.showSnackBar,
523
+ snackBarText = _useSnackBar.snackBarText,
524
+ toastr = _useSnackBar.toastr;
525
+
531
526
  var backToTopicJSX = backToTopic ? /*#__PURE__*/_react["default"].createElement(BackToTopic, {
532
527
  backToTopic: backToTopic
533
528
  }) : null;
534
529
  var hideText = scrollDirection === 'down';
535
- return /*#__PURE__*/_react["default"].createElement(HideTextContext.Provider, {
536
- value: hideText
530
+ var contextValue = {
531
+ hideText: hideText,
532
+ toastr: toastr
533
+ };
534
+ return /*#__PURE__*/_react["default"].createElement(ToolBarContext.Provider, {
535
+ value: contextValue
537
536
  }, /*#__PURE__*/_react["default"].createElement(ToolBarContainer, {
538
537
  bgColor: bgColor,
539
538
  shadow: shadow,
@@ -545,7 +544,12 @@ var ToolBar = function ToolBar(_ref9) {
545
544
  fbAppID: fbAppID
546
545
  }), /*#__PURE__*/_react["default"].createElement(BookmarkBlock, {
547
546
  articleMeta: articleMetaForBookmark
548
- }), /*#__PURE__*/_react["default"].createElement(RelatedPost, null), backToTopicJSX));
547
+ }), /*#__PURE__*/_react["default"].createElement(RelatedPost, null), backToTopicJSX, /*#__PURE__*/_react["default"].createElement(SnackBarContainer, {
548
+ showSnackBar: showSnackBar
549
+ }, /*#__PURE__*/_react["default"].createElement(_snackBar.SnackBar, {
550
+ text: snackBarText,
551
+ theme: theme
552
+ }))));
549
553
  };
550
554
 
551
555
  ToolBar.propTypes = _aside["default"].tools;
@@ -23,6 +23,10 @@ var _default = {
23
23
  name: _propTypes["default"].string.isRequired,
24
24
  sort_order: _propTypes["default"].number.isRequired
25
25
  })),
26
+ categorySet: _propTypes["default"].arrayOf(_propTypes["default"].shape({
27
+ category: _propTypes["default"].string.isRequired,
28
+ subcategory: _propTypes["default"].string.isRequired
29
+ })),
26
30
  tags: _propTypes["default"].arrayOf(_propTypes["default"].shape({
27
31
  id: _propTypes["default"].string.isRequired,
28
32
  name: _propTypes["default"].string.isRequired
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@twreporter/react-article-components",
3
- "version": "1.6.4-rc.1",
3
+ "version": "1.6.4-rc.4",
4
4
  "description": "The Reporter react article components, which are used in article page",
5
5
  "main": "lib/components/article-page.js",
6
6
  "repository": "https://github.com/twreporter/twreporter-npm-packages.git",
@@ -25,9 +25,9 @@
25
25
  },
26
26
  "dependencies": {
27
27
  "@twreporter/core": "^1.6.0-rc.0",
28
- "@twreporter/react-components": "^8.12.1-rc.1",
28
+ "@twreporter/react-components": "^8.13.0-rc.0",
29
29
  "@twreporter/redux": "^7.3.0-rc.0",
30
- "@twreporter/universal-header": "^2.2.14-rc.1",
30
+ "@twreporter/universal-header": "^2.2.14-rc.2",
31
31
  "howler": "^2.2.3",
32
32
  "lodash": "^4.17.11",
33
33
  "memoize-one": "^5.0.5",
@@ -40,5 +40,5 @@
40
40
  "files": [
41
41
  "lib"
42
42
  ],
43
- "gitHead": "c39b265ecd77107f0e1aeb6d3d147efb969c6226"
43
+ "gitHead": "a94c5e961dbe609191117cd9e67b0b5a6d883e31"
44
44
  }