@twreporter/react-article-components 1.12.2-rc.3 → 1.13.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 +38 -509
- package/lib/components/article-page.js +58 -11
- package/lib/components/aside/mobile-tool-bar-old.js +33 -66
- package/lib/components/aside/mobile-tool-bar.js +33 -66
- package/lib/components/aside/utils/theme.js +3 -3
- package/lib/components/body/index.js +8 -4
- package/lib/components/table-of-contents/index.js +106 -145
- package/lib/components/table-of-contents/styled.js +14 -5
- package/package.json +3 -3
|
@@ -57,6 +57,8 @@ var _mobileToolBarOld = _interopRequireDefault(require("./aside/mobile-tool-bar-
|
|
|
57
57
|
|
|
58
58
|
var _get = _interopRequireDefault(require("lodash/get"));
|
|
59
59
|
|
|
60
|
+
var _throttle = _interopRequireDefault(require("lodash/throttle"));
|
|
61
|
+
|
|
60
62
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19, _templateObject20;
|
|
61
63
|
|
|
62
64
|
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); }
|
|
@@ -89,11 +91,12 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
|
|
|
89
91
|
|
|
90
92
|
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
|
|
91
93
|
|
|
92
|
-
var Tools = _featureFlag.MY_READING ? _desktopTools["default"] : _desktopToolsOld["default"];
|
|
93
|
-
var ToolBar = _featureFlag.MY_READING ? _mobileToolBar["default"] : _mobileToolBarOld["default"];
|
|
94
94
|
var _ = {
|
|
95
|
-
get: _get["default"]
|
|
95
|
+
get: _get["default"],
|
|
96
|
+
throttle: _throttle["default"]
|
|
96
97
|
};
|
|
98
|
+
var Tools = _featureFlag.MY_READING ? _desktopTools["default"] : _desktopToolsOld["default"];
|
|
99
|
+
var ToolBar = _featureFlag.MY_READING ? _mobileToolBar["default"] : _mobileToolBarOld["default"];
|
|
97
100
|
var shiftLeftCss = /*#__PURE__*/(0, _styledComponents.css)(["position:relative;width:calc(100% + 20px);left:-10px;"]);
|
|
98
101
|
|
|
99
102
|
var BorderBox = /*#__PURE__*/_styledComponents["default"].div.withConfig({
|
|
@@ -245,16 +248,12 @@ var Article = /*#__PURE__*/function (_PureComponent) {
|
|
|
245
248
|
|
|
246
249
|
var _super = _createSuper(Article);
|
|
247
250
|
|
|
248
|
-
function Article() {
|
|
251
|
+
function Article(props) {
|
|
249
252
|
var _this;
|
|
250
253
|
|
|
251
254
|
_classCallCheck(this, Article);
|
|
252
255
|
|
|
253
|
-
|
|
254
|
-
args[_key] = arguments[_key];
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
_this = _super.call.apply(_super, [this].concat(args));
|
|
256
|
+
_this = _super.call(this, props);
|
|
258
257
|
|
|
259
258
|
_defineProperty(_assertThisInitialized(_this), "changeFontLevel", function () {
|
|
260
259
|
var _this$props = _this.props,
|
|
@@ -288,6 +287,12 @@ var Article = /*#__PURE__*/function (_PureComponent) {
|
|
|
288
287
|
}
|
|
289
288
|
});
|
|
290
289
|
|
|
290
|
+
_this.state = {
|
|
291
|
+
scrollStage: 1
|
|
292
|
+
};
|
|
293
|
+
_this.lastY = 0;
|
|
294
|
+
_this.currentY = 0;
|
|
295
|
+
_this.handleScroll = _.throttle(_this._handleScroll.bind(_assertThisInitialized(_this)), 50);
|
|
291
296
|
return _this;
|
|
292
297
|
}
|
|
293
298
|
|
|
@@ -312,6 +317,46 @@ var Article = /*#__PURE__*/function (_PureComponent) {
|
|
|
312
317
|
}
|
|
313
318
|
}
|
|
314
319
|
}
|
|
320
|
+
}, {
|
|
321
|
+
key: "_handleScroll",
|
|
322
|
+
value: function _handleScroll() {
|
|
323
|
+
var scrollThreshold = 16;
|
|
324
|
+
this.lastY = window.pageYOffset;
|
|
325
|
+
var scrollDistance = Math.abs(this.currentY - this.lastY);
|
|
326
|
+
|
|
327
|
+
if (scrollDistance < scrollThreshold) {
|
|
328
|
+
return;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
var scrollDirection = this.lastY > this.currentY ? 'down' : 'up';
|
|
332
|
+
this.currentY = this.lastY;
|
|
333
|
+
|
|
334
|
+
if (scrollDirection === 'up') {
|
|
335
|
+
this.setState(function (prevState) {
|
|
336
|
+
return {
|
|
337
|
+
scrollStage: prevState.scrollStage - 1 < 1 ? 1 : prevState.scrollStage - 1
|
|
338
|
+
};
|
|
339
|
+
});
|
|
340
|
+
} else {
|
|
341
|
+
this.setState(function (prevState) {
|
|
342
|
+
return {
|
|
343
|
+
scrollStage: prevState.scrollStage + 1 > 3 ? 3 : prevState.scrollStage + 1
|
|
344
|
+
};
|
|
345
|
+
});
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
}, {
|
|
349
|
+
key: "componentDidMount",
|
|
350
|
+
value: function componentDidMount() {
|
|
351
|
+
window.addEventListener('scroll', this.handleScroll, {
|
|
352
|
+
passive: true
|
|
353
|
+
});
|
|
354
|
+
}
|
|
355
|
+
}, {
|
|
356
|
+
key: "componentWillUnmount",
|
|
357
|
+
value: function componentWillUnmount() {
|
|
358
|
+
window.removeEventListener('scroll', this.handleScroll);
|
|
359
|
+
}
|
|
315
360
|
}, {
|
|
316
361
|
key: "render",
|
|
317
362
|
value: function render() {
|
|
@@ -372,7 +417,8 @@ var Article = /*#__PURE__*/function (_PureComponent) {
|
|
|
372
417
|
className: 'hidden-print',
|
|
373
418
|
backToTopic: backToTopic,
|
|
374
419
|
articleMetaForBookmark: articleMetaForBookmark,
|
|
375
|
-
onFontLevelChange: this.changeFontLevel
|
|
420
|
+
onFontLevelChange: this.changeFontLevel,
|
|
421
|
+
scrollStage: this.state.scrollStage
|
|
376
422
|
}), /*#__PURE__*/_react["default"].createElement(DesktopAsideBlock, null, /*#__PURE__*/_react["default"].createElement(_desktopAside["default"], {
|
|
377
423
|
backToTopic: backToTopic,
|
|
378
424
|
categorySet: post.category_set,
|
|
@@ -389,7 +435,8 @@ var Article = /*#__PURE__*/function (_PureComponent) {
|
|
|
389
435
|
key: _.get(post, 'slug', 'article-page-body-key'),
|
|
390
436
|
brief: _.get(post, 'brief.api_data'),
|
|
391
437
|
content: _.get(post, 'content.api_data'),
|
|
392
|
-
onToggleTabExpanded: onToggleTabExpanded
|
|
438
|
+
onToggleTabExpanded: onToggleTabExpanded,
|
|
439
|
+
scrollStage: this.state.scrollStage
|
|
393
440
|
})), metadataAndToolsJSX), /*#__PURE__*/_react["default"].createElement(_donationBox["default"], null), /*#__PURE__*/_react["default"].createElement(_license["default"], {
|
|
394
441
|
license: post.copyright,
|
|
395
442
|
publishedDate: post.published_date,
|
|
@@ -35,14 +35,16 @@ var _snackBar = require("@twreporter/react-components/lib/snack-bar");
|
|
|
35
35
|
|
|
36
36
|
var _zIndex = _interopRequireDefault(require("@twreporter/core/lib/constants/z-index"));
|
|
37
37
|
|
|
38
|
-
var _isNil = _interopRequireDefault(require("lodash/isNil"));
|
|
39
|
-
|
|
40
38
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
41
39
|
|
|
42
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); }
|
|
43
41
|
|
|
44
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; }
|
|
45
43
|
|
|
44
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
45
|
+
|
|
46
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
47
|
+
|
|
46
48
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
47
49
|
|
|
48
50
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
@@ -63,10 +65,7 @@ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try
|
|
|
63
65
|
|
|
64
66
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
65
67
|
|
|
66
|
-
|
|
67
|
-
isNil: _isNil["default"]
|
|
68
|
-
}; // global var
|
|
69
|
-
|
|
68
|
+
// global var
|
|
70
69
|
var ToolBarContext = /*#__PURE__*/(0, _react.createContext)();
|
|
71
70
|
var defaultFbAppID = '962589903815787';
|
|
72
71
|
|
|
@@ -96,23 +95,30 @@ var SnackBarContainer = /*#__PURE__*/_styledComponents["default"].div.withConfig
|
|
|
96
95
|
return props.showSnackBar ? 1 : 0;
|
|
97
96
|
});
|
|
98
97
|
|
|
99
|
-
var
|
|
100
|
-
displayName: "mobile-tool-bar-
|
|
98
|
+
var ToolBarWrapper = /*#__PURE__*/_styledComponents["default"].div.withConfig({
|
|
99
|
+
displayName: "mobile-tool-bar-old__ToolBarWrapper",
|
|
101
100
|
componentId: "sc-12vlkqc-4"
|
|
102
|
-
})(["display:flex;
|
|
101
|
+
})(["display:flex;width:100%;justify-content:center;padding:8px;position:fixed;left:0px;bottom:env(safe-area-inset-bottom,0);height:", ";transform:", ";transition:height 200ms,transform 200ms ease-in-out;background-color:", ";border-top:1px solid ", ";z-index:", ";", "{background-color:", ";box-shadow:", ";}", "{bottom:", ";}"], function (props) {
|
|
102
|
+
return props.hideText ? '40px' : '55px';
|
|
103
|
+
}, function (props) {
|
|
104
|
+
return props.isHidden ? 'translateY(100%)' : 'tanslateY(0%)';
|
|
105
|
+
}, function (props) {
|
|
103
106
|
return props.bgColor;
|
|
104
|
-
}, _zIndex["default"].mobileToolBar, function (props) {
|
|
105
|
-
return props.hideText ? '38px' : '56px';
|
|
106
107
|
}, function (props) {
|
|
107
|
-
return props.
|
|
108
|
-
}, ShareContainer, function (props) {
|
|
108
|
+
return props.borderColor;
|
|
109
|
+
}, _zIndex["default"].mobileToolBar, ShareContainer, function (props) {
|
|
109
110
|
return props.bgColor;
|
|
110
111
|
}, function (props) {
|
|
111
112
|
return props.shadow;
|
|
112
113
|
}, SnackBarContainer, function (props) {
|
|
113
|
-
return props.hideText ? '
|
|
114
|
+
return props.hideText ? '48px' : '62px';
|
|
114
115
|
});
|
|
115
116
|
|
|
117
|
+
var ToolBarContainer = /*#__PURE__*/_styledComponents["default"].div.withConfig({
|
|
118
|
+
displayName: "mobile-tool-bar-old__ToolBarContainer",
|
|
119
|
+
componentId: "sc-12vlkqc-5"
|
|
120
|
+
})(["display:flex;width:100%;max-width:560px;justify-content:space-evenly;align-items:center;"]);
|
|
121
|
+
|
|
116
122
|
var FbShare = function FbShare(_ref) {
|
|
117
123
|
var appID = _ref.appID;
|
|
118
124
|
var themeContext = (0, _react.useContext)(_styledComponents.ThemeContext);
|
|
@@ -468,57 +474,14 @@ var ToolBar = function ToolBar(_ref9) {
|
|
|
468
474
|
fbAppID = _ref9$fbAppID === void 0 ? defaultFbAppID : _ref9$fbAppID,
|
|
469
475
|
articleMetaForBookmark = _ref9.articleMetaForBookmark,
|
|
470
476
|
onFontLevelChange = _ref9.onFontLevelChange,
|
|
471
|
-
className = _ref9.className
|
|
472
|
-
|
|
473
|
-
var _useState3 = (0, _react.useState)('init'),
|
|
474
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
|
475
|
-
scrollDirection = _useState4[0],
|
|
476
|
-
setScrollDirection = _useState4[1];
|
|
477
|
-
|
|
478
|
-
(0, _react.useEffect)(function () {
|
|
479
|
-
var threshold = 8;
|
|
480
|
-
var lastScrollY = window.pageYOffset;
|
|
481
|
-
var ticking = false;
|
|
482
|
-
|
|
483
|
-
var updateScrollDirection = function updateScrollDirection() {
|
|
484
|
-
var scrollY = window.pageYOffset;
|
|
485
|
-
|
|
486
|
-
if (_.isNil(lastScrollY)) {
|
|
487
|
-
ticking = false;
|
|
488
|
-
return;
|
|
489
|
-
}
|
|
490
|
-
|
|
491
|
-
if (Math.abs(scrollY - lastScrollY) < threshold) {
|
|
492
|
-
ticking = false;
|
|
493
|
-
return;
|
|
494
|
-
}
|
|
495
|
-
|
|
496
|
-
var scrollDirection = scrollY > lastScrollY ? 'down' : 'up';
|
|
497
|
-
setScrollDirection(scrollDirection);
|
|
498
|
-
lastScrollY = scrollY > 0 ? scrollY : 0;
|
|
499
|
-
ticking = false;
|
|
500
|
-
};
|
|
501
|
-
|
|
502
|
-
var onScroll = function onScroll() {
|
|
503
|
-
if (!ticking) {
|
|
504
|
-
window.requestAnimationFrame(updateScrollDirection);
|
|
505
|
-
ticking = true;
|
|
506
|
-
}
|
|
507
|
-
};
|
|
508
|
-
|
|
509
|
-
window.addEventListener('scroll', onScroll);
|
|
510
|
-
return function () {
|
|
511
|
-
window.removeEventListener('scroll', onScroll);
|
|
512
|
-
lastScrollY = null;
|
|
513
|
-
ticking = null;
|
|
514
|
-
};
|
|
515
|
-
}, [scrollDirection]);
|
|
477
|
+
className = _ref9.className,
|
|
478
|
+
scrollStage = _ref9.scrollStage;
|
|
516
479
|
var themeContext = (0, _react.useContext)(_styledComponents.ThemeContext);
|
|
517
480
|
var theme = themeContext.name === _theme["default"].article.v2.photo ? 'photography' : 'normal';
|
|
518
481
|
|
|
519
482
|
var _getToolBarTheme = (0, _theme2.getToolBarTheme)(themeContext.name),
|
|
520
483
|
bgColor = _getToolBarTheme.bgColor,
|
|
521
|
-
|
|
484
|
+
borderColor = _getToolBarTheme.borderColor;
|
|
522
485
|
|
|
523
486
|
var _useSnackBar = (0, _snackBar.useSnackBar)(),
|
|
524
487
|
showSnackBar = _useSnackBar.showSnackBar,
|
|
@@ -528,26 +491,28 @@ var ToolBar = function ToolBar(_ref9) {
|
|
|
528
491
|
var backToTopicJSX = backToTopic ? /*#__PURE__*/_react["default"].createElement(BackToTopic, {
|
|
529
492
|
backToTopic: backToTopic
|
|
530
493
|
}) : null;
|
|
531
|
-
var hideText =
|
|
494
|
+
var hideText = scrollStage >= 2;
|
|
495
|
+
var hideToolBar = scrollStage >= 3;
|
|
532
496
|
var contextValue = {
|
|
533
497
|
hideText: hideText,
|
|
534
498
|
toastr: toastr
|
|
535
499
|
};
|
|
536
500
|
return /*#__PURE__*/_react["default"].createElement(ToolBarContext.Provider, {
|
|
537
501
|
value: contextValue
|
|
538
|
-
}, /*#__PURE__*/_react["default"].createElement(
|
|
502
|
+
}, /*#__PURE__*/_react["default"].createElement(ToolBarWrapper, {
|
|
539
503
|
bgColor: bgColor,
|
|
540
|
-
|
|
504
|
+
borderColor: borderColor,
|
|
541
505
|
hideText: hideText,
|
|
542
506
|
className: className,
|
|
507
|
+
isHidden: hideToolBar,
|
|
543
508
|
id: "mobile-tool-bar"
|
|
544
|
-
}, /*#__PURE__*/_react["default"].createElement(FontLevel, {
|
|
509
|
+
}, /*#__PURE__*/_react["default"].createElement(ToolBarContainer, null, /*#__PURE__*/_react["default"].createElement(FontLevel, {
|
|
545
510
|
changeFontLevel: onFontLevelChange
|
|
546
511
|
}), /*#__PURE__*/_react["default"].createElement(ShareBy, {
|
|
547
512
|
fbAppID: fbAppID
|
|
548
513
|
}), /*#__PURE__*/_react["default"].createElement(BookmarkBlock, {
|
|
549
514
|
articleMeta: articleMetaForBookmark
|
|
550
|
-
}), /*#__PURE__*/_react["default"].createElement(RelatedPost, null), backToTopicJSX, /*#__PURE__*/_react["default"].createElement(SnackBarContainer, {
|
|
515
|
+
}), /*#__PURE__*/_react["default"].createElement(RelatedPost, null), backToTopicJSX), /*#__PURE__*/_react["default"].createElement(SnackBarContainer, {
|
|
551
516
|
showSnackBar: showSnackBar
|
|
552
517
|
}, /*#__PURE__*/_react["default"].createElement(_snackBar.SnackBar, {
|
|
553
518
|
text: snackBarText,
|
|
@@ -555,6 +520,8 @@ var ToolBar = function ToolBar(_ref9) {
|
|
|
555
520
|
}))));
|
|
556
521
|
};
|
|
557
522
|
|
|
558
|
-
ToolBar.propTypes = _aside["default"].tools
|
|
523
|
+
ToolBar.propTypes = _objectSpread(_objectSpread({}, _aside["default"].tools), {}, {
|
|
524
|
+
scrollStage: _propTypes["default"].number
|
|
525
|
+
});
|
|
559
526
|
var _default = ToolBar;
|
|
560
527
|
exports["default"] = _default;
|
|
@@ -35,14 +35,16 @@ var _snackBar = require("@twreporter/react-components/lib/snack-bar");
|
|
|
35
35
|
|
|
36
36
|
var _zIndex = _interopRequireDefault(require("@twreporter/core/lib/constants/z-index"));
|
|
37
37
|
|
|
38
|
-
var _isNil = _interopRequireDefault(require("lodash/isNil"));
|
|
39
|
-
|
|
40
38
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
41
39
|
|
|
42
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); }
|
|
43
41
|
|
|
44
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; }
|
|
45
43
|
|
|
44
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
45
|
+
|
|
46
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
47
|
+
|
|
46
48
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
47
49
|
|
|
48
50
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
@@ -63,10 +65,7 @@ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try
|
|
|
63
65
|
|
|
64
66
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
65
67
|
|
|
66
|
-
|
|
67
|
-
isNil: _isNil["default"]
|
|
68
|
-
}; // global var
|
|
69
|
-
|
|
68
|
+
// global var
|
|
70
69
|
var ToolBarContext = /*#__PURE__*/(0, _react.createContext)();
|
|
71
70
|
var defaultFbAppID = '962589903815787';
|
|
72
71
|
|
|
@@ -96,23 +95,30 @@ var SnackBarContainer = /*#__PURE__*/_styledComponents["default"].div.withConfig
|
|
|
96
95
|
return props.showSnackBar ? 1 : 0;
|
|
97
96
|
});
|
|
98
97
|
|
|
99
|
-
var
|
|
100
|
-
displayName: "mobile-tool-
|
|
98
|
+
var ToolBarWrapper = /*#__PURE__*/_styledComponents["default"].div.withConfig({
|
|
99
|
+
displayName: "mobile-tool-bar__ToolBarWrapper",
|
|
101
100
|
componentId: "do65sv-4"
|
|
102
|
-
})(["display:flex;
|
|
101
|
+
})(["display:flex;width:100%;justify-content:center;padding:8px;position:fixed;left:0px;bottom:env(safe-area-inset-bottom,0);height:", ";transform:", ";transition:height 200ms,transform 200ms ease-in-out;background-color:", ";border-top:1px solid ", ";z-index:", ";", "{background-color:", ";box-shadow:", ";}", "{bottom:", ";}"], function (props) {
|
|
102
|
+
return props.hideText ? '40px' : '55px';
|
|
103
|
+
}, function (props) {
|
|
104
|
+
return props.isHidden ? 'translateY(100%)' : 'tanslateY(0%)';
|
|
105
|
+
}, function (props) {
|
|
103
106
|
return props.bgColor;
|
|
104
|
-
}, _zIndex["default"].mobileToolBar, function (props) {
|
|
105
|
-
return props.hideText ? '38px' : '56px';
|
|
106
107
|
}, function (props) {
|
|
107
|
-
return props.
|
|
108
|
-
}, ShareContainer, function (props) {
|
|
108
|
+
return props.borderColor;
|
|
109
|
+
}, _zIndex["default"].mobileToolBar, ShareContainer, function (props) {
|
|
109
110
|
return props.bgColor;
|
|
110
111
|
}, function (props) {
|
|
111
112
|
return props.shadow;
|
|
112
113
|
}, SnackBarContainer, function (props) {
|
|
113
|
-
return props.hideText ? '
|
|
114
|
+
return props.hideText ? '48px' : '62px';
|
|
114
115
|
});
|
|
115
116
|
|
|
117
|
+
var ToolBarContainer = /*#__PURE__*/_styledComponents["default"].div.withConfig({
|
|
118
|
+
displayName: "mobile-tool-bar__ToolBarContainer",
|
|
119
|
+
componentId: "do65sv-5"
|
|
120
|
+
})(["display:flex;width:100%;max-width:560px;justify-content:space-evenly;align-items:center;"]);
|
|
121
|
+
|
|
116
122
|
var FbShare = function FbShare(_ref) {
|
|
117
123
|
var appID = _ref.appID;
|
|
118
124
|
var themeContext = (0, _react.useContext)(_styledComponents.ThemeContext);
|
|
@@ -468,57 +474,14 @@ var ToolBar = function ToolBar(_ref9) {
|
|
|
468
474
|
fbAppID = _ref9$fbAppID === void 0 ? defaultFbAppID : _ref9$fbAppID,
|
|
469
475
|
articleMetaForBookmark = _ref9.articleMetaForBookmark,
|
|
470
476
|
onFontLevelChange = _ref9.onFontLevelChange,
|
|
471
|
-
className = _ref9.className
|
|
472
|
-
|
|
473
|
-
var _useState3 = (0, _react.useState)('init'),
|
|
474
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
|
475
|
-
scrollDirection = _useState4[0],
|
|
476
|
-
setScrollDirection = _useState4[1];
|
|
477
|
-
|
|
478
|
-
(0, _react.useEffect)(function () {
|
|
479
|
-
var threshold = 8;
|
|
480
|
-
var lastScrollY = window.pageYOffset;
|
|
481
|
-
var ticking = false;
|
|
482
|
-
|
|
483
|
-
var updateScrollDirection = function updateScrollDirection() {
|
|
484
|
-
var scrollY = window.pageYOffset;
|
|
485
|
-
|
|
486
|
-
if (_.isNil(lastScrollY)) {
|
|
487
|
-
ticking = false;
|
|
488
|
-
return;
|
|
489
|
-
}
|
|
490
|
-
|
|
491
|
-
if (Math.abs(scrollY - lastScrollY) < threshold) {
|
|
492
|
-
ticking = false;
|
|
493
|
-
return;
|
|
494
|
-
}
|
|
495
|
-
|
|
496
|
-
var scrollDirection = scrollY > lastScrollY ? 'down' : 'up';
|
|
497
|
-
setScrollDirection(scrollDirection);
|
|
498
|
-
lastScrollY = scrollY > 0 ? scrollY : 0;
|
|
499
|
-
ticking = false;
|
|
500
|
-
};
|
|
501
|
-
|
|
502
|
-
var onScroll = function onScroll() {
|
|
503
|
-
if (!ticking) {
|
|
504
|
-
window.requestAnimationFrame(updateScrollDirection);
|
|
505
|
-
ticking = true;
|
|
506
|
-
}
|
|
507
|
-
};
|
|
508
|
-
|
|
509
|
-
window.addEventListener('scroll', onScroll);
|
|
510
|
-
return function () {
|
|
511
|
-
window.removeEventListener('scroll', onScroll);
|
|
512
|
-
lastScrollY = null;
|
|
513
|
-
ticking = null;
|
|
514
|
-
};
|
|
515
|
-
}, [scrollDirection]);
|
|
477
|
+
className = _ref9.className,
|
|
478
|
+
scrollStage = _ref9.scrollStage;
|
|
516
479
|
var themeContext = (0, _react.useContext)(_styledComponents.ThemeContext);
|
|
517
480
|
var theme = themeContext.name === _theme["default"].article.v2.photo ? 'photography' : 'normal';
|
|
518
481
|
|
|
519
482
|
var _getToolBarTheme = (0, _theme2.getToolBarTheme)(themeContext.name),
|
|
520
483
|
bgColor = _getToolBarTheme.bgColor,
|
|
521
|
-
|
|
484
|
+
borderColor = _getToolBarTheme.borderColor;
|
|
522
485
|
|
|
523
486
|
var _useSnackBar = (0, _snackBar.useSnackBar)(),
|
|
524
487
|
showSnackBar = _useSnackBar.showSnackBar,
|
|
@@ -528,26 +491,28 @@ var ToolBar = function ToolBar(_ref9) {
|
|
|
528
491
|
var backToTopicJSX = backToTopic ? /*#__PURE__*/_react["default"].createElement(BackToTopic, {
|
|
529
492
|
backToTopic: backToTopic
|
|
530
493
|
}) : null;
|
|
531
|
-
var hideText =
|
|
494
|
+
var hideText = scrollStage >= 2;
|
|
495
|
+
var hideToolBar = scrollStage >= 3;
|
|
532
496
|
var contextValue = {
|
|
533
497
|
hideText: hideText,
|
|
534
498
|
toastr: toastr
|
|
535
499
|
};
|
|
536
500
|
return /*#__PURE__*/_react["default"].createElement(ToolBarContext.Provider, {
|
|
537
501
|
value: contextValue
|
|
538
|
-
}, /*#__PURE__*/_react["default"].createElement(
|
|
502
|
+
}, /*#__PURE__*/_react["default"].createElement(ToolBarWrapper, {
|
|
539
503
|
bgColor: bgColor,
|
|
540
|
-
|
|
504
|
+
borderColor: borderColor,
|
|
541
505
|
hideText: hideText,
|
|
542
506
|
className: className,
|
|
507
|
+
isHidden: hideToolBar,
|
|
543
508
|
id: "mobile-tool-bar"
|
|
544
|
-
}, /*#__PURE__*/_react["default"].createElement(FontLevel, {
|
|
509
|
+
}, /*#__PURE__*/_react["default"].createElement(ToolBarContainer, null, /*#__PURE__*/_react["default"].createElement(FontLevel, {
|
|
545
510
|
changeFontLevel: onFontLevelChange
|
|
546
511
|
}), /*#__PURE__*/_react["default"].createElement(ShareBy, {
|
|
547
512
|
fbAppID: fbAppID
|
|
548
513
|
}), /*#__PURE__*/_react["default"].createElement(BookmarkBlock, {
|
|
549
514
|
articleMeta: articleMetaForBookmark
|
|
550
|
-
}), /*#__PURE__*/_react["default"].createElement(RelatedPost, null), backToTopicJSX, /*#__PURE__*/_react["default"].createElement(SnackBarContainer, {
|
|
515
|
+
}), /*#__PURE__*/_react["default"].createElement(RelatedPost, null), backToTopicJSX), /*#__PURE__*/_react["default"].createElement(SnackBarContainer, {
|
|
551
516
|
showSnackBar: showSnackBar
|
|
552
517
|
}, /*#__PURE__*/_react["default"].createElement(_snackBar.SnackBar, {
|
|
553
518
|
text: snackBarText,
|
|
@@ -555,6 +520,8 @@ var ToolBar = function ToolBar(_ref9) {
|
|
|
555
520
|
}))));
|
|
556
521
|
};
|
|
557
522
|
|
|
558
|
-
ToolBar.propTypes = _aside["default"].tools
|
|
523
|
+
ToolBar.propTypes = _objectSpread(_objectSpread({}, _aside["default"].tools), {}, {
|
|
524
|
+
scrollStage: _propTypes["default"].number
|
|
525
|
+
});
|
|
559
526
|
var _default = ToolBar;
|
|
560
527
|
exports["default"] = _default;
|
|
@@ -18,14 +18,14 @@ var getToolBarTheme = function getToolBarTheme(theme) {
|
|
|
18
18
|
case _theme["default"].article.v2.photo:
|
|
19
19
|
return {
|
|
20
20
|
bgColor: _color.colorPhoto.dark,
|
|
21
|
-
|
|
21
|
+
borderColor: _color.colorPhoto.heavy
|
|
22
22
|
};
|
|
23
23
|
|
|
24
24
|
case _theme["default"].article.v2["default"]:
|
|
25
25
|
default:
|
|
26
26
|
return {
|
|
27
|
-
bgColor: _color.colorGrayscale.
|
|
28
|
-
|
|
27
|
+
bgColor: _color.colorGrayscale.gray100,
|
|
28
|
+
borderColor: _color.colorGrayscale.gray300
|
|
29
29
|
};
|
|
30
30
|
}
|
|
31
31
|
};
|
|
@@ -469,7 +469,8 @@ var Body = /*#__PURE__*/function (_Component) {
|
|
|
469
469
|
var _this$props = this.props,
|
|
470
470
|
brief = _this$props.brief,
|
|
471
471
|
content = _this$props.content,
|
|
472
|
-
onToggleTabExpanded = _this$props.onToggleTabExpanded
|
|
472
|
+
onToggleTabExpanded = _this$props.onToggleTabExpanded,
|
|
473
|
+
scrollStage = _this$props.scrollStage;
|
|
473
474
|
var enableTOC = false;
|
|
474
475
|
var contentJsx = Array.isArray(content) ? _.map(content, function (data, index) {
|
|
475
476
|
var elementJSX = _this2._buildContentElement(data, index);
|
|
@@ -492,7 +493,8 @@ var Body = /*#__PURE__*/function (_Component) {
|
|
|
492
493
|
}), contentJsx, /*#__PURE__*/_react["default"].createElement(ClearFloat, null), enableTOC ? /*#__PURE__*/_react["default"].createElement(_tableOfContents["default"].React.TableOfContents, {
|
|
493
494
|
manager: this.tocManager,
|
|
494
495
|
onStartScrollingToAnchor: this._onStartScrollingToAnchor,
|
|
495
|
-
onToggleTabExpanded: onToggleTabExpanded
|
|
496
|
+
onToggleTabExpanded: onToggleTabExpanded,
|
|
497
|
+
scrollStage: scrollStage
|
|
496
498
|
}) : null);
|
|
497
499
|
}
|
|
498
500
|
}]);
|
|
@@ -505,11 +507,13 @@ exports["default"] = Body;
|
|
|
505
507
|
_defineProperty(Body, "propTypes", {
|
|
506
508
|
brief: _propTypes["default"].arrayOf(_body["default"].elementData),
|
|
507
509
|
content: _propTypes["default"].arrayOf(_body["default"].elementData),
|
|
508
|
-
onToggleTabExpanded: _propTypes["default"].func
|
|
510
|
+
onToggleTabExpanded: _propTypes["default"].func,
|
|
511
|
+
scrollStage: _propTypes["default"].number
|
|
509
512
|
});
|
|
510
513
|
|
|
511
514
|
_defineProperty(Body, "defaultProps", {
|
|
512
515
|
brief: [],
|
|
513
516
|
content: [],
|
|
514
|
-
onToggleTabExpanded: function onToggleTabExpanded() {}
|
|
517
|
+
onToggleTabExpanded: function onToggleTabExpanded() {},
|
|
518
|
+
scollStage: 1
|
|
515
519
|
});
|