@twreporter/react-article-components 1.4.12-rc.6 → 1.5.0-rc.0

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,39 @@
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.5.0-rc.0](https://github.com/twreporter/twreporter-npm-packages/compare/@twreporter/react-article-components@1.4.12...@twreporter/react-article-components@1.5.0-rc.0) (2022-06-08)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * adjustment style & animation ([1694069](https://github.com/twreporter/twreporter-npm-packages/commit/1694069e769e685b6ec892e0d736111023c1319a))
12
+ * fix defect ([a1cdd55](https://github.com/twreporter/twreporter-npm-packages/commit/a1cdd5504676563ad8816a4b8aebc79dbe774821))
13
+
14
+
15
+ ### Features
16
+
17
+ * add article tool bar & snackbar component ([942328d](https://github.com/twreporter/twreporter-npm-packages/commit/942328d7f9175a39bf74f3650f148e29e5d12274))
18
+
19
+
20
+
21
+
22
+
23
+ ## [1.4.12](https://github.com/twreporter/twreporter-npm-packages/compare/@twreporter/react-article-components@1.4.12-rc.7...@twreporter/react-article-components@1.4.12) (2022-06-07)
24
+
25
+ **Note:** Version bump only for package @twreporter/react-article-components
26
+
27
+
28
+
29
+
30
+
31
+ ## [1.4.12-rc.7](https://github.com/twreporter/twreporter-npm-packages/compare/@twreporter/react-article-components@1.4.12-rc.6...@twreporter/react-article-components@1.4.12-rc.7) (2022-06-06)
32
+
33
+ **Note:** Version bump only for package @twreporter/react-article-components
34
+
35
+
36
+
37
+
38
+
6
39
  ## [1.4.12-rc.6](https://github.com/twreporter/twreporter-npm-packages/compare/@twreporter/react-article-components@1.4.12-rc.5...@twreporter/react-article-components@1.4.12-rc.6) (2022-05-30)
7
40
 
8
41
 
@@ -27,7 +27,7 @@ var _link = _interopRequireDefault(require("./link"));
27
27
 
28
28
  var _metadata = _interopRequireDefault(require("./aside/metadata"));
29
29
 
30
- var _mobileAside = _interopRequireDefault(require("./aside/mobile-aside"));
30
+ var _mobileToolBar = _interopRequireDefault(require("./aside/mobile-tool-bar"));
31
31
 
32
32
  var _related = _interopRequireDefault(require("./related"));
33
33
 
@@ -35,7 +35,7 @@ var _separationCurve = _interopRequireDefault(require("./separation-curve"));
35
35
 
36
36
  var _uiManager = _interopRequireDefault(require("../managers/ui-manager"));
37
37
 
38
- var _tools = _interopRequireDefault(require("./aside/tools"));
38
+ var _desktopTools = _interopRequireDefault(require("./aside/desktop-tools"));
39
39
 
40
40
  var _theme = _interopRequireDefault(require("../constants/theme"));
41
41
 
@@ -43,15 +43,17 @@ var _color = _interopRequireDefault(require("../constants/color"));
43
43
 
44
44
  var _typography = _interopRequireDefault(require("../constants/typography"));
45
45
 
46
+ var _anchor = require("../constants/anchor");
47
+
46
48
  var _mediaQuery = _interopRequireDefault(require("@twreporter/core/lib/utils/media-query"));
47
49
 
48
- var _get = _interopRequireDefault(require("lodash/get"));
50
+ var _propTypes2 = _interopRequireDefault(require("@twreporter/core/lib/constants/prop-types"));
49
51
 
50
- var _map = _interopRequireDefault(require("lodash/map"));
52
+ var _releaseBranch = _interopRequireDefault(require("@twreporter/core/lib/constants/release-branch"));
51
53
 
52
- var _merge = _interopRequireDefault(require("lodash/merge"));
54
+ var _get = _interopRequireDefault(require("lodash/get"));
53
55
 
54
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19, _templateObject20, _templateObject21;
56
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19, _templateObject20, _templateObject21, _templateObject22;
55
57
 
56
58
  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); }
57
59
 
@@ -84,9 +86,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
84
86
  function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
85
87
 
86
88
  var _ = {
87
- get: _get["default"],
88
- map: _map["default"],
89
- merge: _merge["default"]
89
+ get: _get["default"]
90
90
  };
91
91
  var fontFamilyCss = /*#__PURE__*/(0, _styledComponents.css)(["font-family:", ";"], _typography["default"].font.family["default"]);
92
92
  var shiftLeftCss = /*#__PURE__*/(0, _styledComponents.css)(["position:relative;width:calc(100% + 20px);left:-10px;"]);
@@ -133,24 +133,29 @@ var ToolsBlock = /*#__PURE__*/_styledComponents["default"].div.withConfig({
133
133
  componentId: "sc-1wuywdb-7"
134
134
  })(["", " ", " ", ""], _mediaQuery["default"].tabletAndBelow(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral(["\n ", "\n "])), shiftLeftCss), _mediaQuery["default"].mobileOnly(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral(["\n margin-top: 20px;\n "]))), _mediaQuery["default"].tabletOnly(_templateObject15 || (_templateObject15 = _taggedTemplateLiteral(["\n margin-top: 30px;\n "]))));
135
135
 
136
+ var MobileToolBar = /*#__PURE__*/(0, _styledComponents["default"])(_mobileToolBar["default"]).withConfig({
137
+ displayName: "article-page__MobileToolBar",
138
+ componentId: "sc-1wuywdb-8"
139
+ })(["", ""], _mediaQuery["default"].desktopAndAbove(_templateObject16 || (_templateObject16 = _taggedTemplateLiteral(["\n display: none;\n "]))));
140
+
136
141
  var ContentBlock = /*#__PURE__*/_styledComponents["default"].div.withConfig({
137
142
  displayName: "article-page__ContentBlock",
138
- componentId: "sc-1wuywdb-8"
139
- })(["margin:0 auto;", " ", " ", ""], _mediaQuery["default"].tabletAndBelow(_templateObject16 || (_templateObject16 = _taggedTemplateLiteral(["\n ", "\n "])), shiftLeftCss), _mediaQuery["default"].desktopOnly(_templateObject17 || (_templateObject17 = _taggedTemplateLiteral(["\n width: 550px;\n "]))), _mediaQuery["default"].hdOnly(_templateObject18 || (_templateObject18 = _taggedTemplateLiteral(["\n width: 730px;\n "]))));
143
+ componentId: "sc-1wuywdb-9"
144
+ })(["margin:0 auto;", " ", " ", ""], _mediaQuery["default"].tabletAndBelow(_templateObject17 || (_templateObject17 = _taggedTemplateLiteral(["\n ", "\n "])), shiftLeftCss), _mediaQuery["default"].desktopOnly(_templateObject18 || (_templateObject18 = _taggedTemplateLiteral(["\n width: 550px;\n "]))), _mediaQuery["default"].hdOnly(_templateObject19 || (_templateObject19 = _taggedTemplateLiteral(["\n width: 730px;\n "]))));
140
145
 
141
146
  var StyledSeparationCurve = /*#__PURE__*/(0, _styledComponents["default"])(_separationCurve["default"]).withConfig({
142
147
  displayName: "article-page__StyledSeparationCurve",
143
- componentId: "sc-1wuywdb-9"
144
- })(["", ""], _mediaQuery["default"].desktopAndAbove(_templateObject19 || (_templateObject19 = _taggedTemplateLiteral(["\n display: none;\n "]))));
148
+ componentId: "sc-1wuywdb-10"
149
+ })(["", ""], _mediaQuery["default"].desktopAndAbove(_templateObject20 || (_templateObject20 = _taggedTemplateLiteral(["\n display: none;\n "]))));
145
150
 
146
151
  var RelatedBlock = /*#__PURE__*/_styledComponents["default"].div.withConfig({
147
152
  displayName: "article-page__RelatedBlock",
148
- componentId: "sc-1wuywdb-10"
149
- })(["margin-left:auto;margin-right:auto;margin-bottom:0;width:100%;", " ", ""], _mediaQuery["default"].desktopOnly(_templateObject20 || (_templateObject20 = _taggedTemplateLiteral(["\n max-width: 1024px;\n margin-top: 60px;\n "]))), _mediaQuery["default"].hdOnly(_templateObject21 || (_templateObject21 = _taggedTemplateLiteral(["\n max-width: 1440px;\n margin-top: 90px;\n "]))));
153
+ componentId: "sc-1wuywdb-11"
154
+ })(["margin-left:auto;margin-right:auto;margin-bottom:0;width:100%;", " ", ""], _mediaQuery["default"].desktopOnly(_templateObject21 || (_templateObject21 = _taggedTemplateLiteral(["\n max-width: 1024px;\n margin-top: 60px;\n "]))), _mediaQuery["default"].hdOnly(_templateObject22 || (_templateObject22 = _taggedTemplateLiteral(["\n max-width: 1440px;\n margin-top: 90px;\n "]))));
150
155
 
151
156
  var BackgroundBlock = /*#__PURE__*/(0, _styledComponents["default"])(BorderBox).withConfig({
152
157
  displayName: "article-page__BackgroundBlock",
153
- componentId: "sc-1wuywdb-11"
158
+ componentId: "sc-1wuywdb-12"
154
159
  })(["", " ", " @media print{-webkit-print-color-adjust:exact;color-adjust:exact;.hidden-print{display:none;}.avoid-break{break-inside:avoid;}}padding-left:10px;padding-right:10px;"], fontFamilyCss, function (props) {
155
160
  return getBackgroundBlockStyles(props.theme.name);
156
161
  });
@@ -235,12 +240,16 @@ var Article = /*#__PURE__*/function (_PureComponent) {
235
240
 
236
241
  var _super = _createSuper(Article);
237
242
 
238
- function Article(props) {
243
+ function Article() {
239
244
  var _this;
240
245
 
241
246
  _classCallCheck(this, Article);
242
247
 
243
- _this = _super.call(this, props);
248
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
249
+ args[_key] = arguments[_key];
250
+ }
251
+
252
+ _this = _super.call.apply(_super, [this].concat(args));
244
253
 
245
254
  _defineProperty(_assertThisInitialized(_this), "changeFontLevel", function () {
246
255
  var _this$props = _this.props,
@@ -274,33 +283,10 @@ var Article = /*#__PURE__*/function (_PureComponent) {
274
283
  }
275
284
  });
276
285
 
277
- _this.mobileAsideRef = /*#__PURE__*/_react["default"].createRef();
278
- _this.lastKnownScrollPosition = 0;
279
- _this.ticking = false;
280
- _this.scrollPosition = {
281
- y: 0
282
- };
283
- _this.onScroll = _this._onScroll.bind(_assertThisInitialized(_this));
284
- _this.toggleMobileAside = _this._toggleMobileAside.bind(_assertThisInitialized(_this));
285
286
  return _this;
286
287
  }
287
288
 
288
289
  _createClass(Article, [{
289
- key: "componentDidMount",
290
- value: function componentDidMount() {
291
- window.addEventListener('scroll', this.onScroll);
292
- }
293
- }, {
294
- key: "componentWillUnmount",
295
- value: function componentWillUnmount() {
296
- window.removeEventListener('scroll', this.onScroll);
297
- this.lastKnownScrollPosition = null;
298
- this.ticking = null;
299
- this.scrollPosition = {
300
- y: 0
301
- };
302
- }
303
- }, {
304
290
  key: "getFontSizeOffset",
305
291
  value: function getFontSizeOffset(fontLevel) {
306
292
  switch (fontLevel) {
@@ -321,52 +307,6 @@ var Article = /*#__PURE__*/function (_PureComponent) {
321
307
  }
322
308
  }
323
309
  }
324
- /**
325
- * Wrap toggleMobileAside() with requestAnimationFrame() to avoid triggering browser reflow due to reading window.scrollY.
326
- * ref: https://developer.mozilla.org/en-US/docs/web/api/document/scroll_event#Example
327
- */
328
-
329
- }, {
330
- key: "_onScroll",
331
- value: function _onScroll() {
332
- var _this2 = this;
333
-
334
- this.lastKnownScrollPosition = window.scrollY;
335
-
336
- if (!this.ticking) {
337
- window.requestAnimationFrame(function () {
338
- _this2.toggleMobileAside(_this2.lastKnownScrollPosition);
339
-
340
- _this2.ticking = false;
341
- });
342
- this.ticking = true;
343
- }
344
- }
345
- /**
346
- * If users scroll up, and the scrolling distance is more than a certain distance as well, show mobile aside.
347
- * Otherwise, if users scroll down, hide the mobile aside.
348
- */
349
-
350
- }, {
351
- key: "_toggleMobileAside",
352
- value: function _toggleMobileAside(currentTopY) {
353
- if (this.mobileAsideRef) {
354
- var mAside = this.mobileAsideRef; // Calculate scrolling distance to determine whether to display aside
355
-
356
- var lastY = this.scrollPosition.y;
357
- var distance = currentTopY - lastY;
358
-
359
- if (distance > 30) {
360
- this.scrollPosition.y = currentTopY;
361
- mAside.current.toShow = false;
362
- } else {
363
- if (Math.abs(distance) > 150) {
364
- this.scrollPosition.y = currentTopY;
365
- mAside.current.toShow = true;
366
- }
367
- }
368
- }
369
- }
370
310
  }, {
371
311
  key: "render",
372
312
  value: function render() {
@@ -377,7 +317,8 @@ var Article = /*#__PURE__*/function (_PureComponent) {
377
317
  relatedPosts = _this$props2.relatedPosts,
378
318
  relatedTopic = _this$props2.relatedTopic,
379
319
  hasMoreRelateds = _this$props2.hasMoreRelateds,
380
- loadMoreRelateds = _this$props2.loadMoreRelateds;
320
+ loadMoreRelateds = _this$props2.loadMoreRelateds,
321
+ releaseBranch = _this$props2.releaseBranch;
381
322
  var articleMetaForBookmark = {
382
323
  slug: _.get(post, 'slug', ''),
383
324
  title: _.get(post, 'title', ''),
@@ -402,7 +343,7 @@ var Article = /*#__PURE__*/function (_PureComponent) {
402
343
  writers: post.writers,
403
344
  engineers: post.engineers,
404
345
  rawAutherText: post.extend_byline
405
- }), /*#__PURE__*/_react["default"].createElement(ToolsBlock, null, /*#__PURE__*/_react["default"].createElement(_tools["default"], {
346
+ }), /*#__PURE__*/_react["default"].createElement(ToolsBlock, null, /*#__PURE__*/_react["default"].createElement(_desktopTools["default"], {
406
347
  articleMetaForBookmark: articleMetaForBookmark,
407
348
  backToTopic: backToTopic,
408
349
  onFontLevelChange: this.changeFontLevel
@@ -412,7 +353,8 @@ var Article = /*#__PURE__*/function (_PureComponent) {
412
353
  theme: {
413
354
  name: _.get(post, 'style', _theme["default"].article.v2["default"]),
414
355
  colors: uiManager.getThemeColors(),
415
- fontSizeOffset: this.getFontSizeOffset(fontLevel)
356
+ fontSizeOffset: this.getFontSizeOffset(fontLevel),
357
+ releaseBranch: releaseBranch
416
358
  }
417
359
  }, /*#__PURE__*/_react["default"].createElement(_dynamicComponentsContext["default"].Provider, {
418
360
  value: {
@@ -420,10 +362,10 @@ var Article = /*#__PURE__*/function (_PureComponent) {
420
362
  }
421
363
  }, /*#__PURE__*/_react["default"].createElement(BackgroundBlock, null, /*#__PURE__*/_react["default"].createElement(LeadingBlock, null, /*#__PURE__*/_react["default"].createElement(LeadingComponent, leadingProps), /*#__PURE__*/_react["default"].createElement(SeprationLine, {
422
364
  visible: uiManager.toRenderSeparationLineBetweenLeadingAndBody()
423
- })), /*#__PURE__*/_react["default"].createElement(BodyBackground, null, /*#__PURE__*/_react["default"].createElement(BodyBlock, null, /*#__PURE__*/_react["default"].createElement(_mobileAside["default"], {
365
+ })), /*#__PURE__*/_react["default"].createElement(BodyBackground, null, /*#__PURE__*/_react["default"].createElement(BodyBlock, null, /*#__PURE__*/_react["default"].createElement(MobileToolBar, {
424
366
  backToTopic: backToTopic,
425
367
  articleMetaForBookmark: articleMetaForBookmark,
426
- ref: this.mobileAsideRef
368
+ onFontLevelChange: this.changeFontLevel
427
369
  }), /*#__PURE__*/_react["default"].createElement(DesktopAsideBlock, null, /*#__PURE__*/_react["default"].createElement(_desktopAside["default"], {
428
370
  backToTopic: backToTopic,
429
371
  categories: post.categories,
@@ -442,7 +384,9 @@ var Article = /*#__PURE__*/function (_PureComponent) {
442
384
  content: _.get(post, 'content.api_data')
443
385
  })), metadataAndToolsJSX), /*#__PURE__*/_react["default"].createElement(_donationBox["default"], null), /*#__PURE__*/_react["default"].createElement(_license["default"], {
444
386
  license: post.copyright,
445
- publishedDate: post.published_date
387
+ publishedDate: post.published_date,
388
+ id: _anchor.relatedPostAnchor // current scroll to releated post anchor
389
+
446
390
  }), /*#__PURE__*/_react["default"].createElement(StyledSeparationCurve, null), /*#__PURE__*/_react["default"].createElement(RelatedBlock, null, /*#__PURE__*/_react["default"].createElement(_related["default"], {
447
391
  id: post.id,
448
392
  data: relatedPosts,
@@ -465,7 +409,8 @@ _defineProperty(Article, "propTypes", {
465
409
  LinkComponent: _propTypes["default"].elementType,
466
410
  onFontLevelChange: _propTypes["default"].func,
467
411
  hasMoreRelateds: _propTypes["default"].bool,
468
- loadMoreRelateds: _propTypes["default"].func
412
+ loadMoreRelateds: _propTypes["default"].func,
413
+ releaseBranch: _propTypes2["default"].releaseBranch
469
414
  });
470
415
 
471
416
  _defineProperty(Article, "defaultProps", {
@@ -474,5 +419,6 @@ _defineProperty(Article, "defaultProps", {
474
419
  relatedPosts: [],
475
420
  relatedTopic: {},
476
421
  hasMoreRelateds: false,
477
- loadMoreRelateds: noop
422
+ loadMoreRelateds: noop,
423
+ releaseBranch: _releaseBranch["default"].master
478
424
  });
@@ -11,7 +11,7 @@ var _metadata = _interopRequireDefault(require("./metadata"));
11
11
 
12
12
  var _react = _interopRequireDefault(require("react"));
13
13
 
14
- var _tools = _interopRequireDefault(require("./tools"));
14
+ var _desktopTools = _interopRequireDefault(require("./desktop-tools"));
15
15
 
16
16
  var _aside = _interopRequireDefault(require("../../constants/prop-types/aside"));
17
17
 
@@ -148,7 +148,7 @@ var Aside = /*#__PURE__*/function (_React$PureComponent) {
148
148
  }, {
149
149
  key: "render",
150
150
  value: function render() {
151
- var toolsHeight = 304; // px
151
+ var toolsHeight = 258; // px
152
152
 
153
153
  var _this$props = this.props,
154
154
  articleMetaForBookmark = _this$props.articleMetaForBookmark,
@@ -183,7 +183,7 @@ var Aside = /*#__PURE__*/function (_React$PureComponent) {
183
183
  height: toolsHeight / 2
184
184
  })), /*#__PURE__*/_react["default"].createElement(ToolsPositioningBlock, {
185
185
  toolPosition: this.state.toolPosition
186
- }, /*#__PURE__*/_react["default"].createElement(_tools["default"], {
186
+ }, /*#__PURE__*/_react["default"].createElement(_desktopTools["default"], {
187
187
  backToTopic: backToTopic,
188
188
  height: "".concat(toolsHeight, "px"),
189
189
  title: title,
@@ -0,0 +1,198 @@
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 _dynamicComponentsContext = _interopRequireDefault(require("../../contexts/dynamic-components-context"));
11
+
12
+ var _propTypes = _interopRequireDefault(require("prop-types"));
13
+
14
+ var _react = _interopRequireDefault(require("react"));
15
+
16
+ var _styledComponents = _interopRequireWildcard(require("styled-components"));
17
+
18
+ var _theme = _interopRequireDefault(require("../../constants/theme"));
19
+
20
+ var _aside = _interopRequireDefault(require("../../constants/prop-types/aside"));
21
+
22
+ var _icon = require("@twreporter/react-components/lib/icon");
23
+
24
+ var _bookmarkWidget = _interopRequireDefault(require("@twreporter/react-components/lib/bookmark-widget"));
25
+
26
+ var _mediaQuery = _interopRequireDefault(require("@twreporter/core/lib/utils/media-query"));
27
+
28
+ var _color = require("@twreporter/core/lib/constants/color");
29
+
30
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
31
+
32
+ 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); }
33
+
34
+ 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; }
35
+
36
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
37
+
38
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
39
+
40
+ function changeFontSizeOffsetToPct(fontSizeOffset) {
41
+ switch (fontSizeOffset) {
42
+ case 2:
43
+ {
44
+ return '110%';
45
+ }
46
+
47
+ case 4:
48
+ {
49
+ return '120%';
50
+ }
51
+
52
+ case 0:
53
+ default:
54
+ {
55
+ return '100%';
56
+ }
57
+ }
58
+ }
59
+
60
+ var iconBlockCSS = /*#__PURE__*/(0, _styledComponents.css)(["position:relative;cursor:pointer;line-height:1;padding:6px;svg{width:18px;height:18px;background-color:", ";}&::after{position:absolute;top:10px;left:34px;color:", ";font-size:10px;visibility:hidden;width:100px;}&:hover{svg{background-color:", ";}&::after{visibility:visible;}}", ""], _color.colorGrayscale.gray600, _color.colorGrayscale.gray800, _color.colorGrayscale.gray800, _mediaQuery["default"].tabletAndBelow(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n &::after {\n top: 100%;\n left: 50%;\n transform: translateX(-50%);\n text-align: center;\n }\n "]))));
61
+
62
+ var TextIconBlock = /*#__PURE__*/_styledComponents["default"].div.withConfig({
63
+ displayName: "desktop-tools__TextIconBlock",
64
+ componentId: "eihdd4-0"
65
+ })(["", " &::after{content:'\u5B57\u7D1A\u5927\u5C0F", "';}"], iconBlockCSS, function (props) {
66
+ return changeFontSizeOffsetToPct(props.theme.fontSizeOffset);
67
+ });
68
+
69
+ var BackToTopicBlock = /*#__PURE__*/_styledComponents["default"].div.withConfig({
70
+ displayName: "desktop-tools__BackToTopicBlock",
71
+ componentId: "eihdd4-1"
72
+ })(["", " &::after{content:'\u56DE\u5230\u5C08\u984C';}"], iconBlockCSS);
73
+
74
+ var PrintIconBlock = /*#__PURE__*/_styledComponents["default"].div.withConfig({
75
+ displayName: "desktop-tools__PrintIconBlock",
76
+ componentId: "eihdd4-2"
77
+ })(["", " &::after{content:'\u5217\u5370';}"], iconBlockCSS);
78
+
79
+ var BookmarkIconBlock = /*#__PURE__*/_styledComponents["default"].div.withConfig({
80
+ displayName: "desktop-tools__BookmarkIconBlock",
81
+ componentId: "eihdd4-3"
82
+ })(["", " &::after{content:'", "';}"], iconBlockCSS, function (props) {
83
+ return props.isBookmarked ? '取消書籤' : '加入書籤';
84
+ });
85
+
86
+ var ShareIconBlock = /*#__PURE__*/_styledComponents["default"].div.withConfig({
87
+ displayName: "desktop-tools__ShareIconBlock",
88
+ componentId: "eihdd4-4"
89
+ })(["svg{width:18px;height:18px;background-color:", ";}background-color:", ";border-radius:50%;padding:6px;cursor:pointer;display:flex;"], _color.colorGrayscale.gray800, _color.colorGrayscale.white);
90
+
91
+ var ToolsBlock = /*#__PURE__*/_styledComponents["default"].div.withConfig({
92
+ displayName: "desktop-tools__ToolsBlock",
93
+ componentId: "eihdd4-5"
94
+ })(["display:flex;", " ", " ", " ", " ", ""], _mediaQuery["default"].mobileOnly(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n width: calc(300/375*100%);\n margin-left: auto;\n margin-right: auto;\n "]))), _mediaQuery["default"].tabletOnly(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n width: calc(453/768*100%);\n max-width: 453px;\n margin-left: auto;\n margin-right: auto;\n > svg, > div, > a {\n margin-right: 30px;\n }\n "]))), _mediaQuery["default"].tabletAndBelow(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n justify-content: space-between;\n "]))), _mediaQuery["default"].desktopAndAbove(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n width: 36px;\n height: ", ";\n flex-direction: column;\n justify-content: space-between;\n align-items: center;\n "])), function (props) {
95
+ return props.height || 'auto';
96
+ }), function (props) {
97
+ switch (props.theme.name) {
98
+ case _theme["default"].article.v2.photo:
99
+ return (0, _styledComponents.css)(["", "{background-color:", ";svg{background-color:", ";}}", ",", ",", ",", "{svg{background-color:", ";}&::after{color:", ";}&:hover svg{background-color:", ";}}"], ShareIconBlock, _color.colorPhoto.heavy, _color.colorGrayscale.gray100, TextIconBlock, BackToTopicBlock, PrintIconBlock, BookmarkIconBlock, _color.colorGrayscale.gray100, _color.colorSupportive.main, _color.colorSupportive.main);
100
+
101
+ default:
102
+ return '';
103
+ }
104
+ });
105
+
106
+ function FBShareBT(props) {
107
+ var handleClick = function handleClick() {
108
+ var currentURL = window.location.href;
109
+ var location = 'https://www.facebook.com/dialog/feed?' + 'display=page' + "&app_id=".concat(props.appID) + "&link=".concat(encodeURIComponent(currentURL)) + "&redirect_uri=".concat(encodeURIComponent('https://www.facebook.com/'));
110
+ window.open(location, '_blank');
111
+ };
112
+
113
+ return /*#__PURE__*/_react["default"].createElement(ShareIconBlock, {
114
+ id: "fb-share"
115
+ }, /*#__PURE__*/_react["default"].createElement(_icon.Facebook, {
116
+ onClick: handleClick
117
+ }));
118
+ }
119
+
120
+ FBShareBT.propTypes = {
121
+ appID: _propTypes["default"].string.isRequired
122
+ };
123
+
124
+ function TwitterShareBT(props) {
125
+ var handleClick = function handleClick() {
126
+ var currentURL = window.location.href;
127
+ var location = 'https://twitter.com/intent/tweet?' + "url=".concat(encodeURIComponent(currentURL), "&text=").concat(encodeURIComponent(document.title + ' #報導者'));
128
+ window.open(location, '_blank');
129
+ };
130
+
131
+ return /*#__PURE__*/_react["default"].createElement(ShareIconBlock, {
132
+ id: "twitter-share"
133
+ }, /*#__PURE__*/_react["default"].createElement(_icon.Twitter, {
134
+ onClick: handleClick
135
+ }));
136
+ }
137
+
138
+ function LineShareBT(props) {
139
+ var handleClick = function handleClick() {
140
+ var currentURL = window.location.href;
141
+ var location = "https://social-plugins.line.me/lineit/share?url=".concat(encodeURIComponent(currentURL));
142
+ window.open(location, '_blank');
143
+ };
144
+
145
+ return /*#__PURE__*/_react["default"].createElement(ShareIconBlock, {
146
+ id: "line-share"
147
+ }, /*#__PURE__*/_react["default"].createElement(_icon.Line, {
148
+ onClick: handleClick
149
+ }));
150
+ }
151
+
152
+ function BookmarkIcon(isBookmarked, addAction, removeAction) {
153
+ var iconType = isBookmarked ? 'saved' : 'add';
154
+ return /*#__PURE__*/_react["default"].createElement(BookmarkIconBlock, {
155
+ onClick: isBookmarked ? removeAction : addAction,
156
+ isBookmarked: isBookmarked
157
+ }, /*#__PURE__*/_react["default"].createElement(_icon.Bookmark, {
158
+ type: iconType
159
+ }));
160
+ }
161
+
162
+ var defaultFbAppID = '962589903815787';
163
+
164
+ var Tools = function Tools(_ref) {
165
+ var backToTopic = _ref.backToTopic,
166
+ fbAppID = _ref.fbAppID,
167
+ height = _ref.height,
168
+ onFontLevelChange = _ref.onFontLevelChange,
169
+ articleMetaForBookmark = _ref.articleMetaForBookmark;
170
+ var backToTopicJSX = backToTopic ? /*#__PURE__*/_react["default"].createElement(_dynamicComponentsContext["default"].Consumer, null, function (components) {
171
+ return /*#__PURE__*/_react["default"].createElement(components.Link, {
172
+ to: backToTopic,
173
+ target: "_self"
174
+ }, /*#__PURE__*/_react["default"].createElement(BackToTopicBlock, null, /*#__PURE__*/_react["default"].createElement(_icon.Topic, null)));
175
+ }) : null;
176
+
177
+ var onPrinterClick = function onPrinterClick() {
178
+ return window.print();
179
+ };
180
+
181
+ return /*#__PURE__*/_react["default"].createElement(ToolsBlock, {
182
+ height: height
183
+ }, backToTopicJSX, /*#__PURE__*/_react["default"].createElement(_bookmarkWidget["default"], {
184
+ toAutoCheck: false,
185
+ articleMeta: articleMetaForBookmark,
186
+ renderIcon: BookmarkIcon
187
+ }), /*#__PURE__*/_react["default"].createElement(TextIconBlock, null, /*#__PURE__*/_react["default"].createElement(_icon.Text, {
188
+ onClick: onFontLevelChange
189
+ })), /*#__PURE__*/_react["default"].createElement(PrintIconBlock, null, /*#__PURE__*/_react["default"].createElement(_icon.Printer, {
190
+ onClick: onPrinterClick
191
+ })), /*#__PURE__*/_react["default"].createElement(FBShareBT, {
192
+ appID: fbAppID || defaultFbAppID
193
+ }), /*#__PURE__*/_react["default"].createElement(TwitterShareBT, null), /*#__PURE__*/_react["default"].createElement(LineShareBT, null));
194
+ };
195
+
196
+ Tools.propTypes = _aside["default"].tools;
197
+ var _default = Tools;
198
+ exports["default"] = _default;