@twreporter/react-article-components 1.11.4-rc.0 → 1.12.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 +19 -0
- package/lib/components/article-page.js +14 -6
- package/lib/components/aside/desktop-tools-old.js +245 -0
- package/lib/components/aside/desktop-tools.js +1 -1
- package/lib/components/aside/mobile-tool-bar-old.js +559 -0
- package/lib/components/aside/mobile-tool-bar.js +2 -2
- package/package.json +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,25 @@
|
|
|
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.12.0-rc.0](https://github.com/twreporter/twreporter-npm-packages/compare/@twreporter/react-article-components@1.11.4-rc.1...@twreporter/react-article-components@1.12.0-rc.0) (2024-02-07)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* add `my reading` related entry on universal navigator ([79cadc2](https://github.com/twreporter/twreporter-npm-packages/commit/79cadc293493bc517fcf95139ff208633acd699b))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
## [1.11.4-rc.1](https://github.com/twreporter/twreporter-npm-packages/compare/@twreporter/react-article-components@1.11.4-rc.0...@twreporter/react-article-components@1.11.4-rc.1) (2024-01-25)
|
|
18
|
+
|
|
19
|
+
**Note:** Version bump only for package @twreporter/react-article-components
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
6
25
|
## [1.11.4-rc.0](https://github.com/twreporter/twreporter-npm-packages/compare/@twreporter/react-article-components@1.11.3...@twreporter/react-article-components@1.11.4-rc.0) (2024-01-24)
|
|
7
26
|
|
|
8
27
|
**Note:** Version bump only for package @twreporter/react-article-components
|
|
@@ -27,16 +27,12 @@ var _link = _interopRequireDefault(require("./link"));
|
|
|
27
27
|
|
|
28
28
|
var _metadata = _interopRequireDefault(require("./aside/metadata"));
|
|
29
29
|
|
|
30
|
-
var _mobileToolBar = _interopRequireDefault(require("./aside/mobile-tool-bar"));
|
|
31
|
-
|
|
32
30
|
var _related = _interopRequireDefault(require("./related"));
|
|
33
31
|
|
|
34
32
|
var _separationCurve = _interopRequireDefault(require("./separation-curve"));
|
|
35
33
|
|
|
36
34
|
var _uiManager = _interopRequireDefault(require("../managers/ui-manager"));
|
|
37
35
|
|
|
38
|
-
var _desktopTools = _interopRequireDefault(require("./aside/desktop-tools"));
|
|
39
|
-
|
|
40
36
|
var _theme = _interopRequireDefault(require("../constants/theme"));
|
|
41
37
|
|
|
42
38
|
var _anchor = require("../constants/anchor");
|
|
@@ -49,6 +45,16 @@ var _releaseBranch = _interopRequireDefault(require("@twreporter/core/lib/consta
|
|
|
49
45
|
|
|
50
46
|
var _color = require("@twreporter/core/lib/constants/color");
|
|
51
47
|
|
|
48
|
+
var _featureFlag = require("@twreporter/core/lib/constants/feature-flag");
|
|
49
|
+
|
|
50
|
+
var _desktopTools = _interopRequireDefault(require("./aside/desktop-tools"));
|
|
51
|
+
|
|
52
|
+
var _desktopToolsOld = _interopRequireDefault(require("./aside/desktop-tools-old"));
|
|
53
|
+
|
|
54
|
+
var _mobileToolBar = _interopRequireDefault(require("./aside/mobile-tool-bar"));
|
|
55
|
+
|
|
56
|
+
var _mobileToolBarOld = _interopRequireDefault(require("./aside/mobile-tool-bar-old"));
|
|
57
|
+
|
|
52
58
|
var _get = _interopRequireDefault(require("lodash/get"));
|
|
53
59
|
|
|
54
60
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19, _templateObject20;
|
|
@@ -83,6 +89,8 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
|
|
|
83
89
|
|
|
84
90
|
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
|
|
85
91
|
|
|
92
|
+
var Tools = _featureFlag.MY_READING ? _desktopTools["default"] : _desktopToolsOld["default"];
|
|
93
|
+
var ToolBar = _featureFlag.MY_READING ? _mobileToolBar["default"] : _mobileToolBarOld["default"];
|
|
86
94
|
var _ = {
|
|
87
95
|
get: _get["default"]
|
|
88
96
|
};
|
|
@@ -130,7 +138,7 @@ var DesktopToolsBlock = /*#__PURE__*/_styledComponents["default"].div.withConfig
|
|
|
130
138
|
componentId: "sc-1wuywdb-7"
|
|
131
139
|
})(["", ""], _mediaQuery["default"].tabletAndBelow(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral(["\n display: none;\n "]))));
|
|
132
140
|
|
|
133
|
-
var MobileToolBar = /*#__PURE__*/(0, _styledComponents["default"])(
|
|
141
|
+
var MobileToolBar = /*#__PURE__*/(0, _styledComponents["default"])(ToolBar).withConfig({
|
|
134
142
|
displayName: "article-page__MobileToolBar",
|
|
135
143
|
componentId: "sc-1wuywdb-8"
|
|
136
144
|
})(["", ""], _mediaQuery["default"].desktopAndAbove(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral(["\n display: none;\n "]))));
|
|
@@ -340,7 +348,7 @@ var Article = /*#__PURE__*/function (_PureComponent) {
|
|
|
340
348
|
writers: post.writers,
|
|
341
349
|
engineers: post.engineers,
|
|
342
350
|
rawAutherText: post.extend_byline
|
|
343
|
-
}), /*#__PURE__*/_react["default"].createElement(DesktopToolsBlock, null, /*#__PURE__*/_react["default"].createElement(
|
|
351
|
+
}), /*#__PURE__*/_react["default"].createElement(DesktopToolsBlock, null, /*#__PURE__*/_react["default"].createElement(Tools, {
|
|
344
352
|
articleMetaForBookmark: articleMetaForBookmark,
|
|
345
353
|
backToTopic: backToTopic,
|
|
346
354
|
onFontLevelChange: this.changeFontLevel
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _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 = _interopRequireWildcard(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-old__TextIconBlock",
|
|
64
|
+
componentId: "sc-14dm8uk-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-old__BackToTopicBlock",
|
|
71
|
+
componentId: "sc-14dm8uk-1"
|
|
72
|
+
})(["", " &::after{content:'\u56DE\u5230\u5C08\u984C';}"], iconBlockCSS);
|
|
73
|
+
|
|
74
|
+
var PrintIconBlock = /*#__PURE__*/_styledComponents["default"].div.withConfig({
|
|
75
|
+
displayName: "desktop-tools-old__PrintIconBlock",
|
|
76
|
+
componentId: "sc-14dm8uk-2"
|
|
77
|
+
})(["", " &::after{content:'\u5217\u5370';}"], iconBlockCSS);
|
|
78
|
+
|
|
79
|
+
var BookmarkIconBlock = /*#__PURE__*/_styledComponents["default"].div.withConfig({
|
|
80
|
+
displayName: "desktop-tools-old__BookmarkIconBlock",
|
|
81
|
+
componentId: "sc-14dm8uk-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-old__ShareIconBlock",
|
|
88
|
+
componentId: "sc-14dm8uk-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-old__ToolsBlock",
|
|
93
|
+
componentId: "sc-14dm8uk-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.pastel, _color.colorSupportive.pastel);
|
|
100
|
+
|
|
101
|
+
default:
|
|
102
|
+
return '';
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
function FBShareBT(props) {
|
|
107
|
+
var themeContext = (0, _react.useContext)(_styledComponents.ThemeContext);
|
|
108
|
+
var releaseBranch = themeContext.releaseBranch;
|
|
109
|
+
|
|
110
|
+
var handleClick = function handleClick() {
|
|
111
|
+
var currentURL = window.location.href;
|
|
112
|
+
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/'));
|
|
113
|
+
window.open(location, '_blank');
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
return /*#__PURE__*/_react["default"].createElement(ShareIconBlock, {
|
|
117
|
+
id: "fb-share"
|
|
118
|
+
}, /*#__PURE__*/_react["default"].createElement(_icon.Facebook, {
|
|
119
|
+
onClick: handleClick,
|
|
120
|
+
releaseBranch: releaseBranch
|
|
121
|
+
}));
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
FBShareBT.propTypes = {
|
|
125
|
+
appID: _propTypes["default"].string.isRequired
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
function TwitterShareBT(props) {
|
|
129
|
+
var themeContext = (0, _react.useContext)(_styledComponents.ThemeContext);
|
|
130
|
+
var releaseBranch = themeContext.releaseBranch;
|
|
131
|
+
|
|
132
|
+
var handleClick = function handleClick() {
|
|
133
|
+
var currentURL = window.location.href;
|
|
134
|
+
var location = 'https://twitter.com/intent/tweet?' + "url=".concat(encodeURIComponent(currentURL), "&text=").concat(encodeURIComponent(document.title + ' #報導者'));
|
|
135
|
+
window.open(location, '_blank');
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
return /*#__PURE__*/_react["default"].createElement(ShareIconBlock, {
|
|
139
|
+
id: "twitter-share"
|
|
140
|
+
}, /*#__PURE__*/_react["default"].createElement(_icon.Twitter, {
|
|
141
|
+
onClick: handleClick,
|
|
142
|
+
releaseBranch: releaseBranch
|
|
143
|
+
}));
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
function LineShareBT(props) {
|
|
147
|
+
var themeContext = (0, _react.useContext)(_styledComponents.ThemeContext);
|
|
148
|
+
var releaseBranch = themeContext.releaseBranch;
|
|
149
|
+
|
|
150
|
+
var handleClick = function handleClick() {
|
|
151
|
+
var currentURL = window.location.href;
|
|
152
|
+
var location = "https://social-plugins.line.me/lineit/share?url=".concat(encodeURIComponent(currentURL));
|
|
153
|
+
window.open(location, '_blank');
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
return /*#__PURE__*/_react["default"].createElement(ShareIconBlock, {
|
|
157
|
+
id: "line-share"
|
|
158
|
+
}, /*#__PURE__*/_react["default"].createElement(_icon.Line, {
|
|
159
|
+
onClick: handleClick,
|
|
160
|
+
releaseBranch: releaseBranch
|
|
161
|
+
}));
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
var BookmarkBlock = function BookmarkBlock(_ref) {
|
|
165
|
+
var articleMeta = _ref.articleMeta;
|
|
166
|
+
var themeContext = (0, _react.useContext)(_styledComponents.ThemeContext);
|
|
167
|
+
var releaseBranch = themeContext.releaseBranch;
|
|
168
|
+
|
|
169
|
+
var renderIcon = function renderIcon(isBookmarked, addAction, removeAction) {
|
|
170
|
+
var iconType = isBookmarked ? 'saved' : 'add';
|
|
171
|
+
var id = isBookmarked ? 'remove-bookmark' : 'add-bookmark';
|
|
172
|
+
return /*#__PURE__*/_react["default"].createElement(BookmarkIconBlock, {
|
|
173
|
+
onClick: isBookmarked ? removeAction : addAction,
|
|
174
|
+
isBookmarked: isBookmarked,
|
|
175
|
+
id: id
|
|
176
|
+
}, /*#__PURE__*/_react["default"].createElement(_icon.Bookmark, {
|
|
177
|
+
type: iconType,
|
|
178
|
+
releaseBranch: releaseBranch
|
|
179
|
+
}));
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
return /*#__PURE__*/_react["default"].createElement(_bookmarkWidget["default"], {
|
|
183
|
+
toAutoCheck: true,
|
|
184
|
+
articleMeta: articleMeta,
|
|
185
|
+
renderIcon: renderIcon
|
|
186
|
+
});
|
|
187
|
+
};
|
|
188
|
+
|
|
189
|
+
BookmarkBlock.propTypes = {
|
|
190
|
+
articleMeta: _aside["default"].tools.articleMetaForBookmark
|
|
191
|
+
};
|
|
192
|
+
|
|
193
|
+
var BackToTopic = function BackToTopic(_ref2) {
|
|
194
|
+
var backToTopic = _ref2.backToTopic;
|
|
195
|
+
var themeContext = (0, _react.useContext)(_styledComponents.ThemeContext);
|
|
196
|
+
var releaseBranch = themeContext.releaseBranch;
|
|
197
|
+
return /*#__PURE__*/_react["default"].createElement(_dynamicComponentsContext["default"].Consumer, null, function (components) {
|
|
198
|
+
return /*#__PURE__*/_react["default"].createElement(components.Link, {
|
|
199
|
+
to: backToTopic,
|
|
200
|
+
target: "_self"
|
|
201
|
+
}, /*#__PURE__*/_react["default"].createElement(BackToTopicBlock, null, /*#__PURE__*/_react["default"].createElement(_icon.Topic, {
|
|
202
|
+
releaseBranch: releaseBranch
|
|
203
|
+
})));
|
|
204
|
+
});
|
|
205
|
+
};
|
|
206
|
+
|
|
207
|
+
BackToTopic.propTypes = {
|
|
208
|
+
backToTopic: _aside["default"].tools.backToTopic
|
|
209
|
+
};
|
|
210
|
+
var defaultFbAppID = '962589903815787';
|
|
211
|
+
|
|
212
|
+
var Tools = function Tools(_ref3) {
|
|
213
|
+
var backToTopic = _ref3.backToTopic,
|
|
214
|
+
fbAppID = _ref3.fbAppID,
|
|
215
|
+
height = _ref3.height,
|
|
216
|
+
onFontLevelChange = _ref3.onFontLevelChange,
|
|
217
|
+
articleMetaForBookmark = _ref3.articleMetaForBookmark;
|
|
218
|
+
var themeContext = (0, _react.useContext)(_styledComponents.ThemeContext);
|
|
219
|
+
var releaseBranch = themeContext.releaseBranch;
|
|
220
|
+
var backToTopicJSX = backToTopic ? /*#__PURE__*/_react["default"].createElement(BackToTopic, {
|
|
221
|
+
backToTopic: backToTopic
|
|
222
|
+
}) : null;
|
|
223
|
+
|
|
224
|
+
var onPrinterClick = function onPrinterClick() {
|
|
225
|
+
return window.print();
|
|
226
|
+
};
|
|
227
|
+
|
|
228
|
+
return /*#__PURE__*/_react["default"].createElement(ToolsBlock, {
|
|
229
|
+
height: height
|
|
230
|
+
}, backToTopicJSX, /*#__PURE__*/_react["default"].createElement(BookmarkBlock, {
|
|
231
|
+
articleMeta: articleMetaForBookmark
|
|
232
|
+
}), /*#__PURE__*/_react["default"].createElement(TextIconBlock, null, /*#__PURE__*/_react["default"].createElement(_icon.Text, {
|
|
233
|
+
onClick: onFontLevelChange,
|
|
234
|
+
releaseBranch: releaseBranch
|
|
235
|
+
})), /*#__PURE__*/_react["default"].createElement(PrintIconBlock, null, /*#__PURE__*/_react["default"].createElement(_icon.Printer, {
|
|
236
|
+
onClick: onPrinterClick,
|
|
237
|
+
releaseBranch: releaseBranch
|
|
238
|
+
})), /*#__PURE__*/_react["default"].createElement(FBShareBT, {
|
|
239
|
+
appID: fbAppID || defaultFbAppID
|
|
240
|
+
}), /*#__PURE__*/_react["default"].createElement(TwitterShareBT, null), /*#__PURE__*/_react["default"].createElement(LineShareBT, null));
|
|
241
|
+
};
|
|
242
|
+
|
|
243
|
+
Tools.propTypes = _aside["default"].tools;
|
|
244
|
+
var _default = Tools;
|
|
245
|
+
exports["default"] = _default;
|
|
@@ -80,7 +80,7 @@ var BookmarkIconBlock = /*#__PURE__*/_styledComponents["default"].div.withConfig
|
|
|
80
80
|
displayName: "desktop-tools__BookmarkIconBlock",
|
|
81
81
|
componentId: "eihdd4-3"
|
|
82
82
|
})(["", " &::after{content:'", "';}"], iconBlockCSS, function (props) {
|
|
83
|
-
return props.isBookmarked ? '
|
|
83
|
+
return props.isBookmarked ? '取消收藏' : '收藏';
|
|
84
84
|
});
|
|
85
85
|
|
|
86
86
|
var ShareIconBlock = /*#__PURE__*/_styledComponents["default"].div.withConfig({
|
|
@@ -0,0 +1,559 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports["default"] = void 0;
|
|
9
|
+
|
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
+
|
|
12
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
13
|
+
|
|
14
|
+
var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
|
15
|
+
|
|
16
|
+
var _dynamicComponentsContext = _interopRequireDefault(require("../../contexts/dynamic-components-context"));
|
|
17
|
+
|
|
18
|
+
var _aside = _interopRequireDefault(require("../../constants/prop-types/aside"));
|
|
19
|
+
|
|
20
|
+
var _theme = _interopRequireDefault(require("../../constants/theme"));
|
|
21
|
+
|
|
22
|
+
var _anchor = require("../../constants/anchor");
|
|
23
|
+
|
|
24
|
+
var _theme2 = require("./utils/theme");
|
|
25
|
+
|
|
26
|
+
var _hook = require("@twreporter/react-components/lib/hook");
|
|
27
|
+
|
|
28
|
+
var _bookmarkWidget = _interopRequireDefault(require("@twreporter/react-components/lib/bookmark-widget"));
|
|
29
|
+
|
|
30
|
+
var _icon = require("@twreporter/react-components/lib/icon");
|
|
31
|
+
|
|
32
|
+
var _button = require("@twreporter/react-components/lib/button");
|
|
33
|
+
|
|
34
|
+
var _snackBar = require("@twreporter/react-components/lib/snack-bar");
|
|
35
|
+
|
|
36
|
+
var _zIndex = _interopRequireDefault(require("@twreporter/core/lib/constants/z-index"));
|
|
37
|
+
|
|
38
|
+
var _isNil = _interopRequireDefault(require("lodash/isNil"));
|
|
39
|
+
|
|
40
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
41
|
+
|
|
42
|
+
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
|
+
|
|
44
|
+
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
|
+
|
|
46
|
+
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
|
+
|
|
48
|
+
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; }
|
|
49
|
+
|
|
50
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
51
|
+
|
|
52
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
53
|
+
|
|
54
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
55
|
+
|
|
56
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
57
|
+
|
|
58
|
+
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
59
|
+
|
|
60
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
61
|
+
|
|
62
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
63
|
+
|
|
64
|
+
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
|
+
|
|
66
|
+
var _ = {
|
|
67
|
+
isNil: _isNil["default"]
|
|
68
|
+
}; // global var
|
|
69
|
+
|
|
70
|
+
var ToolBarContext = /*#__PURE__*/(0, _react.createContext)();
|
|
71
|
+
var defaultFbAppID = '962589903815787';
|
|
72
|
+
|
|
73
|
+
var defaultFunc = function defaultFunc() {};
|
|
74
|
+
|
|
75
|
+
var ButtonContainer = /*#__PURE__*/_styledComponents["default"].div.withConfig({
|
|
76
|
+
displayName: "mobile-tool-bar-old__ButtonContainer",
|
|
77
|
+
componentId: "sc-12vlkqc-0"
|
|
78
|
+
})(["display:flex;flex-direction:column;align-items:center;width:50px;margin-right:8px;&:last-child{margin-right:0;}"]);
|
|
79
|
+
|
|
80
|
+
var ShareContainer = /*#__PURE__*/_styledComponents["default"].div.withConfig({
|
|
81
|
+
displayName: "mobile-tool-bar-old__ShareContainer",
|
|
82
|
+
componentId: "sc-12vlkqc-1"
|
|
83
|
+
})(["display:flex;align-items:center;padding:8px;border-radius:50%;margin-right:8px;&:last-child{margin-right:0;}"]);
|
|
84
|
+
|
|
85
|
+
var OptionContainer = /*#__PURE__*/_styledComponents["default"].div.withConfig({
|
|
86
|
+
displayName: "mobile-tool-bar-old__OptionContainer",
|
|
87
|
+
componentId: "sc-12vlkqc-2"
|
|
88
|
+
})(["z-index:6;opacity:", ";transition:opacity 100ms;position:absolute;top:-55px;left:50%;transform:translateX(-50%);display:flex;"], function (props) {
|
|
89
|
+
return props.isShow ? '1' : '0';
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
var SnackBarContainer = /*#__PURE__*/_styledComponents["default"].div.withConfig({
|
|
93
|
+
displayName: "mobile-tool-bar-old__SnackBarContainer",
|
|
94
|
+
componentId: "sc-12vlkqc-3"
|
|
95
|
+
})(["z-index:5;position:absolute;left:50%;transform:translateX(-50%);transition:opacity 100ms;opacity:", ";"], function (props) {
|
|
96
|
+
return props.showSnackBar ? 1 : 0;
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
var ToolBarContainer = /*#__PURE__*/_styledComponents["default"].div.withConfig({
|
|
100
|
+
displayName: "mobile-tool-bar-old__ToolBarContainer",
|
|
101
|
+
componentId: "sc-12vlkqc-4"
|
|
102
|
+
})(["display:flex;align-items:center;width:fit-content;background-color:", ";padding:0 16px;border-radius:60px;position:fixed;left:50%;transform:translate(-50%,0);bottom:calc(env(safe-area-inset-bottom,0) + 8px);z-index:", ";height:", ";transition:height 100ms;box-shadow:", ";", "{background-color:", ";box-shadow:", ";}", "{bottom:", ";}"], function (props) {
|
|
103
|
+
return props.bgColor;
|
|
104
|
+
}, _zIndex["default"].mobileToolBar, function (props) {
|
|
105
|
+
return props.hideText ? '38px' : '56px';
|
|
106
|
+
}, function (props) {
|
|
107
|
+
return props.shadow;
|
|
108
|
+
}, ShareContainer, function (props) {
|
|
109
|
+
return props.bgColor;
|
|
110
|
+
}, function (props) {
|
|
111
|
+
return props.shadow;
|
|
112
|
+
}, SnackBarContainer, function (props) {
|
|
113
|
+
return props.hideText ? '46px' : '64px';
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
var FbShare = function FbShare(_ref) {
|
|
117
|
+
var appID = _ref.appID;
|
|
118
|
+
var themeContext = (0, _react.useContext)(_styledComponents.ThemeContext);
|
|
119
|
+
var theme = themeContext.name === _theme["default"].article.v2.photo ? 'photography' : 'normal';
|
|
120
|
+
var releaseBranch = themeContext.releaseBranch;
|
|
121
|
+
|
|
122
|
+
var shareToFb = function shareToFb() {
|
|
123
|
+
var currentURL = window.location.href;
|
|
124
|
+
var location = 'https://www.facebook.com/dialog/feed?' + 'display=page' + "&app_id=".concat(appID) + "&link=".concat(encodeURIComponent(currentURL)) + "&redirect_uri=".concat(encodeURIComponent('https://www.facebook.com/'));
|
|
125
|
+
window.open(location, '_blank');
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
return /*#__PURE__*/_react["default"].createElement(ShareContainer, {
|
|
129
|
+
id: "fb-share",
|
|
130
|
+
onClick: shareToFb
|
|
131
|
+
}, /*#__PURE__*/_react["default"].createElement(_button.IconButton, {
|
|
132
|
+
iconComponent: /*#__PURE__*/_react["default"].createElement(_icon.Facebook, {
|
|
133
|
+
releaseBranch: releaseBranch
|
|
134
|
+
}),
|
|
135
|
+
theme: theme
|
|
136
|
+
}));
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
FbShare.propTypes = {
|
|
140
|
+
appID: _aside["default"].tools.fbAppID
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
var LineShare = function LineShare() {
|
|
144
|
+
var themeContext = (0, _react.useContext)(_styledComponents.ThemeContext);
|
|
145
|
+
var theme = themeContext.name === _theme["default"].article.v2.photo ? 'photography' : 'normal';
|
|
146
|
+
var releaseBranch = themeContext.releaseBranch;
|
|
147
|
+
|
|
148
|
+
var shareToLine = function shareToLine() {
|
|
149
|
+
var currentURL = window.location.href;
|
|
150
|
+
var location = "https://social-plugins.line.me/lineit/share?url=".concat(encodeURIComponent(currentURL));
|
|
151
|
+
window.open(location, '_blank');
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
return /*#__PURE__*/_react["default"].createElement(ShareContainer, {
|
|
155
|
+
id: "line-share",
|
|
156
|
+
onClick: shareToLine
|
|
157
|
+
}, /*#__PURE__*/_react["default"].createElement(_button.IconButton, {
|
|
158
|
+
iconComponent: /*#__PURE__*/_react["default"].createElement(_icon.Line, {
|
|
159
|
+
releaseBranch: releaseBranch
|
|
160
|
+
}),
|
|
161
|
+
theme: theme
|
|
162
|
+
}));
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
var TwitterShare = function TwitterShare() {
|
|
166
|
+
var themeContext = (0, _react.useContext)(_styledComponents.ThemeContext);
|
|
167
|
+
var theme = themeContext.name === _theme["default"].article.v2.photo ? 'photography' : 'normal';
|
|
168
|
+
var releaseBranch = themeContext.releaseBranch;
|
|
169
|
+
|
|
170
|
+
var shareToTwitter = function shareToTwitter() {
|
|
171
|
+
var currentURL = window.location.href;
|
|
172
|
+
var location = 'https://twitter.com/intent/tweet?' + "url=".concat(encodeURIComponent(currentURL), "&text=").concat(encodeURIComponent(document.title + ' #報導者'));
|
|
173
|
+
window.open(location, '_blank');
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
return /*#__PURE__*/_react["default"].createElement(ShareContainer, {
|
|
177
|
+
id: "twitter-share",
|
|
178
|
+
onClick: shareToTwitter
|
|
179
|
+
}, /*#__PURE__*/_react["default"].createElement(_button.IconButton, {
|
|
180
|
+
iconComponent: /*#__PURE__*/_react["default"].createElement(_icon.Twitter, {
|
|
181
|
+
releaseBranch: releaseBranch
|
|
182
|
+
}),
|
|
183
|
+
theme: theme
|
|
184
|
+
}));
|
|
185
|
+
};
|
|
186
|
+
|
|
187
|
+
var CopyUrl = function CopyUrl(_ref2) {
|
|
188
|
+
var _ref2$onclick = _ref2.onclick,
|
|
189
|
+
onclick = _ref2$onclick === void 0 ? defaultFunc : _ref2$onclick;
|
|
190
|
+
var themeContext = (0, _react.useContext)(_styledComponents.ThemeContext);
|
|
191
|
+
var theme = themeContext.name === _theme["default"].article.v2.photo ? 'photography' : 'normal';
|
|
192
|
+
var releaseBranch = themeContext.releaseBranch;
|
|
193
|
+
|
|
194
|
+
var copyUrl = /*#__PURE__*/function () {
|
|
195
|
+
var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
|
|
196
|
+
var currentURL;
|
|
197
|
+
return regeneratorRuntime.wrap(function _callee$(_context) {
|
|
198
|
+
while (1) {
|
|
199
|
+
switch (_context.prev = _context.next) {
|
|
200
|
+
case 0:
|
|
201
|
+
_context.prev = 0;
|
|
202
|
+
currentURL = window.location.href;
|
|
203
|
+
_context.next = 4;
|
|
204
|
+
return navigator.clipboard.writeText(currentURL);
|
|
205
|
+
|
|
206
|
+
case 4:
|
|
207
|
+
onclick(true);
|
|
208
|
+
_context.next = 10;
|
|
209
|
+
break;
|
|
210
|
+
|
|
211
|
+
case 7:
|
|
212
|
+
_context.prev = 7;
|
|
213
|
+
_context.t0 = _context["catch"](0);
|
|
214
|
+
onclick(false);
|
|
215
|
+
|
|
216
|
+
case 10:
|
|
217
|
+
case "end":
|
|
218
|
+
return _context.stop();
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}, _callee, null, [[0, 7]]);
|
|
222
|
+
}));
|
|
223
|
+
|
|
224
|
+
return function copyUrl() {
|
|
225
|
+
return _ref3.apply(this, arguments);
|
|
226
|
+
};
|
|
227
|
+
}();
|
|
228
|
+
|
|
229
|
+
return /*#__PURE__*/_react["default"].createElement(ShareContainer, {
|
|
230
|
+
onClick: copyUrl
|
|
231
|
+
}, /*#__PURE__*/_react["default"].createElement(_button.IconButton, {
|
|
232
|
+
iconComponent: /*#__PURE__*/_react["default"].createElement(_icon.Copy, {
|
|
233
|
+
releaseBranch: releaseBranch
|
|
234
|
+
}),
|
|
235
|
+
theme: theme
|
|
236
|
+
}));
|
|
237
|
+
};
|
|
238
|
+
|
|
239
|
+
CopyUrl.propTypes = {
|
|
240
|
+
onclick: _propTypes["default"].func
|
|
241
|
+
};
|
|
242
|
+
|
|
243
|
+
var ShareBy = function ShareBy(_ref4) {
|
|
244
|
+
var fbAppID = _ref4.fbAppID;
|
|
245
|
+
|
|
246
|
+
var _useState = (0, _react.useState)(false),
|
|
247
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
248
|
+
showOption = _useState2[0],
|
|
249
|
+
setShowState = _useState2[1];
|
|
250
|
+
|
|
251
|
+
var _useContext = (0, _react.useContext)(ToolBarContext),
|
|
252
|
+
hideText = _useContext.hideText,
|
|
253
|
+
toastr = _useContext.toastr;
|
|
254
|
+
|
|
255
|
+
var themeContext = (0, _react.useContext)(_styledComponents.ThemeContext);
|
|
256
|
+
var theme = themeContext.name === _theme["default"].article.v2.photo ? 'photography' : 'normal';
|
|
257
|
+
var releaseBranch = themeContext.releaseBranch;
|
|
258
|
+
|
|
259
|
+
var onCopyUrl = function onCopyUrl(isCopied) {
|
|
260
|
+
if (!isCopied) {
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
toastr({
|
|
265
|
+
text: '已複製',
|
|
266
|
+
timeout: 3000
|
|
267
|
+
});
|
|
268
|
+
};
|
|
269
|
+
|
|
270
|
+
var onButtonClick = function onButtonClick() {
|
|
271
|
+
return setShowState(function (prevValue) {
|
|
272
|
+
return !prevValue;
|
|
273
|
+
});
|
|
274
|
+
};
|
|
275
|
+
|
|
276
|
+
var onClickOutside = function onClickOutside() {
|
|
277
|
+
return setShowState(false);
|
|
278
|
+
};
|
|
279
|
+
|
|
280
|
+
var ref = (0, _hook.useOutsideClick)(onClickOutside);
|
|
281
|
+
return /*#__PURE__*/_react["default"].createElement(ButtonContainer, {
|
|
282
|
+
ref: ref,
|
|
283
|
+
onClick: onButtonClick
|
|
284
|
+
}, /*#__PURE__*/_react["default"].createElement(_button.IconWithTextButton, {
|
|
285
|
+
text: "\u5206\u4EAB",
|
|
286
|
+
iconComponent: /*#__PURE__*/_react["default"].createElement(_icon.Share, {
|
|
287
|
+
releaseBranch: releaseBranch
|
|
288
|
+
}),
|
|
289
|
+
theme: theme,
|
|
290
|
+
hideText: hideText
|
|
291
|
+
}), /*#__PURE__*/_react["default"].createElement(OptionContainer, {
|
|
292
|
+
isShow: showOption
|
|
293
|
+
}, /*#__PURE__*/_react["default"].createElement(FbShare, {
|
|
294
|
+
appID: fbAppID
|
|
295
|
+
}), /*#__PURE__*/_react["default"].createElement(LineShare, null), /*#__PURE__*/_react["default"].createElement(TwitterShare, null), /*#__PURE__*/_react["default"].createElement(CopyUrl, {
|
|
296
|
+
onclick: onCopyUrl
|
|
297
|
+
})));
|
|
298
|
+
};
|
|
299
|
+
|
|
300
|
+
ShareBy.propTypes = {
|
|
301
|
+
fbAppID: _aside["default"].tools.fbAppID
|
|
302
|
+
};
|
|
303
|
+
|
|
304
|
+
var FontLevel = function FontLevel(_ref5) {
|
|
305
|
+
var changeFontLevel = _ref5.changeFontLevel;
|
|
306
|
+
|
|
307
|
+
var _useContext2 = (0, _react.useContext)(ToolBarContext),
|
|
308
|
+
hideText = _useContext2.hideText;
|
|
309
|
+
|
|
310
|
+
var themeContext = (0, _react.useContext)(_styledComponents.ThemeContext);
|
|
311
|
+
var theme = themeContext.name === _theme["default"].article.v2.photo ? 'photography' : 'normal';
|
|
312
|
+
var releaseBranch = themeContext.releaseBranch;
|
|
313
|
+
return /*#__PURE__*/_react["default"].createElement(ButtonContainer, {
|
|
314
|
+
onClick: changeFontLevel
|
|
315
|
+
}, /*#__PURE__*/_react["default"].createElement(_button.IconWithTextButton, {
|
|
316
|
+
text: "\u6587\u5B57\u5927\u5C0F",
|
|
317
|
+
iconComponent: /*#__PURE__*/_react["default"].createElement(_icon.Text, {
|
|
318
|
+
releaseBranch: releaseBranch
|
|
319
|
+
}),
|
|
320
|
+
theme: theme,
|
|
321
|
+
hideText: hideText
|
|
322
|
+
}));
|
|
323
|
+
};
|
|
324
|
+
|
|
325
|
+
FontLevel.propTypes = {
|
|
326
|
+
changeFontLevel: _aside["default"].tools.onFontLevelChange
|
|
327
|
+
};
|
|
328
|
+
|
|
329
|
+
var BookmarkBlock = function BookmarkBlock(_ref6) {
|
|
330
|
+
var articleMeta = _ref6.articleMeta;
|
|
331
|
+
|
|
332
|
+
var _useContext3 = (0, _react.useContext)(ToolBarContext),
|
|
333
|
+
hideText = _useContext3.hideText,
|
|
334
|
+
toastr = _useContext3.toastr;
|
|
335
|
+
|
|
336
|
+
var themeContext = (0, _react.useContext)(_styledComponents.ThemeContext);
|
|
337
|
+
var theme = themeContext.name === _theme["default"].article.v2.photo ? 'photography' : 'normal';
|
|
338
|
+
var releaseBranch = themeContext.releaseBranch;
|
|
339
|
+
|
|
340
|
+
var renderIcon = function renderIcon(isBookmarked, addAction, removeAction) {
|
|
341
|
+
var iconType = isBookmarked ? 'saved' : 'add';
|
|
342
|
+
var text = isBookmarked ? '已儲存' : '加入書籤';
|
|
343
|
+
var id = isBookmarked ? 'remove-bookmark' : 'add-bookmark';
|
|
344
|
+
|
|
345
|
+
var handleClick = /*#__PURE__*/function () {
|
|
346
|
+
var _ref7 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {
|
|
347
|
+
var action;
|
|
348
|
+
return regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
349
|
+
while (1) {
|
|
350
|
+
switch (_context2.prev = _context2.next) {
|
|
351
|
+
case 0:
|
|
352
|
+
action = isBookmarked ? removeAction : addAction;
|
|
353
|
+
_context2.prev = 1;
|
|
354
|
+
_context2.next = 4;
|
|
355
|
+
return action();
|
|
356
|
+
|
|
357
|
+
case 4:
|
|
358
|
+
_context2.next = 9;
|
|
359
|
+
break;
|
|
360
|
+
|
|
361
|
+
case 6:
|
|
362
|
+
_context2.prev = 6;
|
|
363
|
+
_context2.t0 = _context2["catch"](1);
|
|
364
|
+
console.error('add bookmark fail', _context2.t0);
|
|
365
|
+
|
|
366
|
+
case 9:
|
|
367
|
+
onClickButton(isBookmarked);
|
|
368
|
+
|
|
369
|
+
case 10:
|
|
370
|
+
case "end":
|
|
371
|
+
return _context2.stop();
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
}, _callee2, null, [[1, 6]]);
|
|
375
|
+
}));
|
|
376
|
+
|
|
377
|
+
return function handleClick() {
|
|
378
|
+
return _ref7.apply(this, arguments);
|
|
379
|
+
};
|
|
380
|
+
}();
|
|
381
|
+
|
|
382
|
+
return /*#__PURE__*/_react["default"].createElement(ButtonContainer, {
|
|
383
|
+
onClick: handleClick,
|
|
384
|
+
id: id
|
|
385
|
+
}, /*#__PURE__*/_react["default"].createElement(_button.IconWithTextButton, {
|
|
386
|
+
text: text,
|
|
387
|
+
iconComponent: /*#__PURE__*/_react["default"].createElement(_icon.Bookmark, {
|
|
388
|
+
type: iconType,
|
|
389
|
+
releaseBranch: releaseBranch
|
|
390
|
+
}),
|
|
391
|
+
theme: theme,
|
|
392
|
+
hideText: hideText
|
|
393
|
+
}));
|
|
394
|
+
};
|
|
395
|
+
|
|
396
|
+
var onClickButton = function onClickButton(isBookmarked) {
|
|
397
|
+
var text = isBookmarked ? '已取消書籤' : '已儲存';
|
|
398
|
+
toastr({
|
|
399
|
+
text: text,
|
|
400
|
+
timeout: 3000
|
|
401
|
+
});
|
|
402
|
+
};
|
|
403
|
+
|
|
404
|
+
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_bookmarkWidget["default"], {
|
|
405
|
+
toAutoCheck: true,
|
|
406
|
+
articleMeta: articleMeta,
|
|
407
|
+
renderIcon: renderIcon
|
|
408
|
+
}));
|
|
409
|
+
};
|
|
410
|
+
|
|
411
|
+
BookmarkBlock.propTypes = {
|
|
412
|
+
articleMeta: _aside["default"].tools.articleMetaForBookmark
|
|
413
|
+
};
|
|
414
|
+
|
|
415
|
+
var BackToTopic = function BackToTopic(_ref8) {
|
|
416
|
+
var backToTopic = _ref8.backToTopic;
|
|
417
|
+
|
|
418
|
+
var _useContext4 = (0, _react.useContext)(ToolBarContext),
|
|
419
|
+
hideText = _useContext4.hideText;
|
|
420
|
+
|
|
421
|
+
var themeContext = (0, _react.useContext)(_styledComponents.ThemeContext);
|
|
422
|
+
var theme = themeContext.name === _theme["default"].article.v2.photo ? 'photography' : 'normal';
|
|
423
|
+
var releaseBranch = themeContext.releaseBranch;
|
|
424
|
+
return /*#__PURE__*/_react["default"].createElement(_dynamicComponentsContext["default"].Consumer, null, function (components) {
|
|
425
|
+
return /*#__PURE__*/_react["default"].createElement(components.Link, {
|
|
426
|
+
to: backToTopic,
|
|
427
|
+
target: "_self"
|
|
428
|
+
}, /*#__PURE__*/_react["default"].createElement(ButtonContainer, null, /*#__PURE__*/_react["default"].createElement(_button.IconWithTextButton, {
|
|
429
|
+
text: "\u524D\u5F80\u5C08\u984C",
|
|
430
|
+
iconComponent: /*#__PURE__*/_react["default"].createElement(_icon.Topic, {
|
|
431
|
+
releaseBranch: releaseBranch
|
|
432
|
+
}),
|
|
433
|
+
theme: theme,
|
|
434
|
+
hideText: hideText
|
|
435
|
+
})));
|
|
436
|
+
});
|
|
437
|
+
};
|
|
438
|
+
|
|
439
|
+
BackToTopic.propTypes = {
|
|
440
|
+
backToTopic: _aside["default"].tools.backToTopic
|
|
441
|
+
};
|
|
442
|
+
|
|
443
|
+
var RelatedPost = function RelatedPost() {
|
|
444
|
+
var _useContext5 = (0, _react.useContext)(ToolBarContext),
|
|
445
|
+
hideText = _useContext5.hideText;
|
|
446
|
+
|
|
447
|
+
var themeContext = (0, _react.useContext)(_styledComponents.ThemeContext);
|
|
448
|
+
var theme = themeContext.name === _theme["default"].article.v2.photo ? 'photography' : 'normal';
|
|
449
|
+
var releaseBranch = themeContext.releaseBranch;
|
|
450
|
+
|
|
451
|
+
var anchorScrollAttr = _defineProperty({}, _anchor.ARTICLE_ANCHOR_SCROLL, 'true');
|
|
452
|
+
|
|
453
|
+
return /*#__PURE__*/_react["default"].createElement(ButtonContainer, null, /*#__PURE__*/_react["default"].createElement("a", _extends({
|
|
454
|
+
href: "#".concat(_anchor.RELATED_POST_ANCHOR_ID)
|
|
455
|
+
}, anchorScrollAttr), /*#__PURE__*/_react["default"].createElement(_button.IconWithTextButton, {
|
|
456
|
+
text: "\u76F8\u95DC\u6587\u7AE0",
|
|
457
|
+
iconComponent: /*#__PURE__*/_react["default"].createElement(_icon.Article, {
|
|
458
|
+
releaseBranch: releaseBranch
|
|
459
|
+
}),
|
|
460
|
+
theme: theme,
|
|
461
|
+
hideText: hideText
|
|
462
|
+
})));
|
|
463
|
+
};
|
|
464
|
+
|
|
465
|
+
var ToolBar = function ToolBar(_ref9) {
|
|
466
|
+
var backToTopic = _ref9.backToTopic,
|
|
467
|
+
_ref9$fbAppID = _ref9.fbAppID,
|
|
468
|
+
fbAppID = _ref9$fbAppID === void 0 ? defaultFbAppID : _ref9$fbAppID,
|
|
469
|
+
articleMetaForBookmark = _ref9.articleMetaForBookmark,
|
|
470
|
+
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]);
|
|
516
|
+
var themeContext = (0, _react.useContext)(_styledComponents.ThemeContext);
|
|
517
|
+
var theme = themeContext.name === _theme["default"].article.v2.photo ? 'photography' : 'normal';
|
|
518
|
+
|
|
519
|
+
var _getToolBarTheme = (0, _theme2.getToolBarTheme)(themeContext.name),
|
|
520
|
+
bgColor = _getToolBarTheme.bgColor,
|
|
521
|
+
shadow = _getToolBarTheme.shadow;
|
|
522
|
+
|
|
523
|
+
var _useSnackBar = (0, _snackBar.useSnackBar)(),
|
|
524
|
+
showSnackBar = _useSnackBar.showSnackBar,
|
|
525
|
+
snackBarText = _useSnackBar.snackBarText,
|
|
526
|
+
toastr = _useSnackBar.toastr;
|
|
527
|
+
|
|
528
|
+
var backToTopicJSX = backToTopic ? /*#__PURE__*/_react["default"].createElement(BackToTopic, {
|
|
529
|
+
backToTopic: backToTopic
|
|
530
|
+
}) : null;
|
|
531
|
+
var hideText = scrollDirection === 'down';
|
|
532
|
+
var contextValue = {
|
|
533
|
+
hideText: hideText,
|
|
534
|
+
toastr: toastr
|
|
535
|
+
};
|
|
536
|
+
return /*#__PURE__*/_react["default"].createElement(ToolBarContext.Provider, {
|
|
537
|
+
value: contextValue
|
|
538
|
+
}, /*#__PURE__*/_react["default"].createElement(ToolBarContainer, {
|
|
539
|
+
bgColor: bgColor,
|
|
540
|
+
shadow: shadow,
|
|
541
|
+
hideText: hideText,
|
|
542
|
+
className: className
|
|
543
|
+
}, /*#__PURE__*/_react["default"].createElement(FontLevel, {
|
|
544
|
+
changeFontLevel: onFontLevelChange
|
|
545
|
+
}), /*#__PURE__*/_react["default"].createElement(ShareBy, {
|
|
546
|
+
fbAppID: fbAppID
|
|
547
|
+
}), /*#__PURE__*/_react["default"].createElement(BookmarkBlock, {
|
|
548
|
+
articleMeta: articleMetaForBookmark
|
|
549
|
+
}), /*#__PURE__*/_react["default"].createElement(RelatedPost, null), backToTopicJSX, /*#__PURE__*/_react["default"].createElement(SnackBarContainer, {
|
|
550
|
+
showSnackBar: showSnackBar
|
|
551
|
+
}, /*#__PURE__*/_react["default"].createElement(_snackBar.SnackBar, {
|
|
552
|
+
text: snackBarText,
|
|
553
|
+
theme: theme
|
|
554
|
+
}))));
|
|
555
|
+
};
|
|
556
|
+
|
|
557
|
+
ToolBar.propTypes = _aside["default"].tools;
|
|
558
|
+
var _default = ToolBar;
|
|
559
|
+
exports["default"] = _default;
|
|
@@ -339,7 +339,7 @@ var BookmarkBlock = function BookmarkBlock(_ref6) {
|
|
|
339
339
|
|
|
340
340
|
var renderIcon = function renderIcon(isBookmarked, addAction, removeAction) {
|
|
341
341
|
var iconType = isBookmarked ? 'saved' : 'add';
|
|
342
|
-
var text = isBookmarked ? '
|
|
342
|
+
var text = isBookmarked ? '已收藏' : '收藏';
|
|
343
343
|
var id = isBookmarked ? 'remove-bookmark' : 'add-bookmark';
|
|
344
344
|
|
|
345
345
|
var handleClick = /*#__PURE__*/function () {
|
|
@@ -394,7 +394,7 @@ var BookmarkBlock = function BookmarkBlock(_ref6) {
|
|
|
394
394
|
};
|
|
395
395
|
|
|
396
396
|
var onClickButton = function onClickButton(isBookmarked) {
|
|
397
|
-
var text = isBookmarked ? '
|
|
397
|
+
var text = isBookmarked ? '已取消收藏' : '已收藏';
|
|
398
398
|
toastr({
|
|
399
399
|
text: text,
|
|
400
400
|
timeout: 3000
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@twreporter/react-article-components",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.12.0-rc.0",
|
|
4
4
|
"description": "The Reporter react article components, which are used in article page",
|
|
5
5
|
"main": "lib/components/article-page.js",
|
|
6
6
|
"repository": "https://github.com/twreporter/twreporter-npm-packages.git",
|
|
@@ -24,10 +24,10 @@
|
|
|
24
24
|
"webpack-dev-server": "^3.7.2"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@twreporter/core": "^1.17.0",
|
|
28
|
-
"@twreporter/react-components": "^8.
|
|
29
|
-
"@twreporter/redux": "^7.10.1-rc.
|
|
30
|
-
"@twreporter/universal-header": "^2.
|
|
27
|
+
"@twreporter/core": "^1.17.1-rc.0",
|
|
28
|
+
"@twreporter/react-components": "^8.25.0-rc.0",
|
|
29
|
+
"@twreporter/redux": "^7.10.1-rc.2",
|
|
30
|
+
"@twreporter/universal-header": "^2.11.0-rc.0",
|
|
31
31
|
"howler": "^2.2.3",
|
|
32
32
|
"lodash": "^4.17.11",
|
|
33
33
|
"memoize-one": "^5.0.5",
|
|
@@ -40,5 +40,5 @@
|
|
|
40
40
|
"files": [
|
|
41
41
|
"lib"
|
|
42
42
|
],
|
|
43
|
-
"gitHead": "
|
|
43
|
+
"gitHead": "42b025c9e74ea6697305ccabfa5dada913efc099"
|
|
44
44
|
}
|