@twreporter/react-article-components 1.4.12-rc.7 → 1.5.0-rc.1
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 +33 -0
- package/lib/components/article-page.js +41 -95
- package/lib/components/aside/desktop-aside.js +3 -3
- package/lib/components/aside/desktop-tools.js +198 -0
- package/lib/components/aside/mobile-tool-bar.js +464 -0
- package/lib/components/aside/utils/theme.js +37 -0
- package/lib/components/license.js +9 -4
- package/lib/constants/anchor.js +8 -0
- package/package.json +5 -5
- package/lib/components/aside/mobile-aside.js +0 -212
- package/lib/components/aside/tools.js +0 -383
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.1](https://github.com/twreporter/twreporter-npm-packages/compare/@twreporter/react-article-components@1.5.0-rc.0...@twreporter/react-article-components@1.5.0-rc.1) (2022-06-14)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @twreporter/react-article-components
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
# [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)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Bug Fixes
|
|
18
|
+
|
|
19
|
+
* adjustment style & animation ([1694069](https://github.com/twreporter/twreporter-npm-packages/commit/1694069e769e685b6ec892e0d736111023c1319a))
|
|
20
|
+
* fix defect ([a1cdd55](https://github.com/twreporter/twreporter-npm-packages/commit/a1cdd5504676563ad8816a4b8aebc79dbe774821))
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
### Features
|
|
24
|
+
|
|
25
|
+
* add article tool bar & snackbar component ([942328d](https://github.com/twreporter/twreporter-npm-packages/commit/942328d7f9175a39bf74f3650f148e29e5d12274))
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
## [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)
|
|
32
|
+
|
|
33
|
+
**Note:** Version bump only for package @twreporter/react-article-components
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
6
39
|
## [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)
|
|
7
40
|
|
|
8
41
|
**Note:** Version bump only for package @twreporter/react-article-components
|
|
@@ -27,7 +27,7 @@ var _link = _interopRequireDefault(require("./link"));
|
|
|
27
27
|
|
|
28
28
|
var _metadata = _interopRequireDefault(require("./aside/metadata"));
|
|
29
29
|
|
|
30
|
-
var
|
|
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
|
|
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
|
|
50
|
+
var _propTypes2 = _interopRequireDefault(require("@twreporter/core/lib/constants/prop-types"));
|
|
49
51
|
|
|
50
|
-
var
|
|
52
|
+
var _releaseBranch = _interopRequireDefault(require("@twreporter/core/lib/constants/release-branch"));
|
|
51
53
|
|
|
52
|
-
var
|
|
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-
|
|
139
|
-
})(["margin:0 auto;", " ", " ", ""], _mediaQuery["default"].tabletAndBelow(
|
|
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-
|
|
144
|
-
})(["", ""], _mediaQuery["default"].desktopAndAbove(
|
|
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-
|
|
149
|
-
})(["margin-left:auto;margin-right:auto;margin-bottom:0;width:100%;", " ", ""], _mediaQuery["default"].desktopOnly(
|
|
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-
|
|
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(
|
|
243
|
+
function Article() {
|
|
239
244
|
var _this;
|
|
240
245
|
|
|
241
246
|
_classCallCheck(this, Article);
|
|
242
247
|
|
|
243
|
-
|
|
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(
|
|
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(
|
|
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
|
-
|
|
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
|
|
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 =
|
|
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(
|
|
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;
|