@manuscripts/article-editor 1.15.3 → 1.15.5
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/dist/cjs/quarterback/QuarterBackDataSource.js +9 -11
- package/dist/cjs/quarterback/QuarterBackDataSource.js.map +1 -1
- package/dist/cjs/quarterback/useLoadDoc.js +7 -7
- package/dist/cjs/quarterback/useLoadDoc.js.map +1 -1
- package/dist/es/quarterback/QuarterBackDataSource.js +9 -11
- package/dist/es/quarterback/QuarterBackDataSource.js.map +1 -1
- package/dist/es/quarterback/useLoadDoc.js +7 -4
- package/dist/es/quarterback/useLoadDoc.js.map +1 -1
- package/package.json +2 -2
- package/dist/cjs/components/comments/CommentActions.js +0 -59
- package/dist/cjs/components/comments/CommentActions.js.map +0 -1
- package/dist/cjs/components/comments/CommentBody.js +0 -97
- package/dist/cjs/components/comments/CommentBody.js.map +0 -1
- package/dist/cjs/components/comments/CommentResolveButton.js +0 -56
- package/dist/cjs/components/comments/CommentResolveButton.js.map +0 -1
- package/dist/cjs/components/comments/CommentThread.js +0 -122
- package/dist/cjs/components/comments/CommentThread.js.map +0 -1
- package/dist/cjs/components/comments/CommentsPanel.js +0 -134
- package/dist/cjs/components/comments/CommentsPanel.js.map +0 -1
- package/dist/cjs/components/comments/CommentsPlaceholder.js +0 -44
- package/dist/cjs/components/comments/CommentsPlaceholder.js.map +0 -1
- package/dist/cjs/lib/comments.js +0 -29
- package/dist/cjs/lib/comments.js.map +0 -1
- package/dist/cjs/store/ParentObserver.js +0 -40
- package/dist/cjs/store/ParentObserver.js.map +0 -1
- package/dist/es/components/comments/CommentActions.js +0 -52
- package/dist/es/components/comments/CommentActions.js.map +0 -1
- package/dist/es/components/comments/CommentBody.js +0 -67
- package/dist/es/components/comments/CommentBody.js.map +0 -1
- package/dist/es/components/comments/CommentResolveButton.js +0 -49
- package/dist/es/components/comments/CommentResolveButton.js.map +0 -1
- package/dist/es/components/comments/CommentThread.js +0 -93
- package/dist/es/components/comments/CommentThread.js.map +0 -1
- package/dist/es/components/comments/CommentsPanel.js +0 -104
- package/dist/es/components/comments/CommentsPanel.js.map +0 -1
- package/dist/es/components/comments/CommentsPlaceholder.js +0 -37
- package/dist/es/components/comments/CommentsPlaceholder.js.map +0 -1
- package/dist/es/lib/comments.js +0 -23
- package/dist/es/lib/comments.js.map +0 -1
- package/dist/es/store/ParentObserver.js +0 -36
- package/dist/es/store/ParentObserver.js.map +0 -1
- package/dist/types/components/comments/CommentActions.d.ts +0 -24
- package/dist/types/components/comments/CommentBody.d.ts +0 -21
- package/dist/types/components/comments/CommentResolveButton.d.ts +0 -18
- package/dist/types/components/comments/CommentThread.d.ts +0 -22
- package/dist/types/components/comments/CommentsPanel.d.ts +0 -2
- package/dist/types/components/comments/CommentsPlaceholder.d.ts +0 -14
- package/dist/types/lib/comments.d.ts +0 -21
- package/dist/types/store/ParentObserver.d.ts +0 -33
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
-
};
|
|
28
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.CommentsPanel = void 0;
|
|
30
|
-
/*!
|
|
31
|
-
* The contents of this file are subject to the Common Public Attribution License Version 1.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at https://mpapp-public.gitlab.io/manuscripts-frontend/LICENSE. The License is based on the Mozilla Public License Version 1.1 but Sections 14 and 15 have been added to cover use of software over a computer network and provide for limited attribution for the Original Developer. In addition, Exhibit A has been modified to be consistent with Exhibit B.
|
|
32
|
-
*
|
|
33
|
-
* Software distributed under the License is distributed on an “AS IS” basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License.
|
|
34
|
-
*
|
|
35
|
-
* The Original Code is manuscripts-frontend.
|
|
36
|
-
*
|
|
37
|
-
* The Original Developer is the Initial Developer. The Initial Developer of the Original Code is Atypon Systems LLC.
|
|
38
|
-
*
|
|
39
|
-
* All portions of the code written by Atypon Systems LLC are Copyright (c) 2019 Atypon Systems LLC. All Rights Reserved.
|
|
40
|
-
*/
|
|
41
|
-
const body_editor_1 = require("@manuscripts/body-editor");
|
|
42
|
-
const style_guide_1 = require("@manuscripts/style-guide");
|
|
43
|
-
const prosemirror_state_1 = require("prosemirror-state");
|
|
44
|
-
const react_1 = __importStar(require("react"));
|
|
45
|
-
const styled_components_1 = __importDefault(require("styled-components"));
|
|
46
|
-
const comments_1 = require("../../lib/comments");
|
|
47
|
-
const store_1 = require("../../store");
|
|
48
|
-
const CommentThread_1 = require("./CommentThread");
|
|
49
|
-
const track_changes_plugin_1 = require("@manuscripts/track-changes-plugin");
|
|
50
|
-
const CommentsPlaceholder_1 = require("./CommentsPlaceholder");
|
|
51
|
-
const Header = styled_components_1.default.div `
|
|
52
|
-
display: flex;
|
|
53
|
-
justify-content: flex-end;
|
|
54
|
-
padding: 12px;
|
|
55
|
-
`;
|
|
56
|
-
const CheckboxLabelText = styled_components_1.default.div `
|
|
57
|
-
color: ${(props) => props.theme.colors.text.primary} !important;
|
|
58
|
-
`;
|
|
59
|
-
const scrollIntoView = (element) => {
|
|
60
|
-
const rect = element.getBoundingClientRect();
|
|
61
|
-
if (rect.bottom > window.innerHeight || rect.top < 150) {
|
|
62
|
-
element.scrollIntoView();
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
|
-
const CommentsPanel = () => {
|
|
66
|
-
const [{ view, newCommentID, selectedCommentKey }] = (0, store_1.useStore)((state) => ({
|
|
67
|
-
view: state.view,
|
|
68
|
-
newCommentID: state.newCommentID,
|
|
69
|
-
selectedCommentKey: state.selectedCommentKey,
|
|
70
|
-
}));
|
|
71
|
-
const [showResolved, setShowResolved] = (0, react_1.useState)(true);
|
|
72
|
-
const comments = (0, react_1.useMemo)(() => view?.state ? body_editor_1.commentsKey.getState(view.state)?.comments : undefined, [view?.state]);
|
|
73
|
-
const trees = (0, react_1.useMemo)(() => comments ? (0, comments_1.buildCommentTrees)([...comments.values()], newCommentID) : [], [comments, newCommentID]);
|
|
74
|
-
const selectedRef = (0, react_1.useCallback)((e) => {
|
|
75
|
-
if (e) {
|
|
76
|
-
scrollIntoView(e);
|
|
77
|
-
}
|
|
78
|
-
}, []);
|
|
79
|
-
const setSelectedComment = (comment) => {
|
|
80
|
-
if (!view) {
|
|
81
|
-
return;
|
|
82
|
-
}
|
|
83
|
-
const tr = view.state.tr;
|
|
84
|
-
(0, body_editor_1.setCommentSelection)(tr, comment.key, comment.node.attrs.id, false);
|
|
85
|
-
if ((0, body_editor_1.isNodeComment)(comment)) {
|
|
86
|
-
tr.setSelection(prosemirror_state_1.NodeSelection.create(view.state.doc, comment.target.pos));
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
const range = comment.range;
|
|
90
|
-
const from = range.pos;
|
|
91
|
-
const to = from + range.size;
|
|
92
|
-
tr.setSelection(prosemirror_state_1.TextSelection.create(view.state.doc, from, to));
|
|
93
|
-
}
|
|
94
|
-
tr.scrollIntoView();
|
|
95
|
-
view.focus();
|
|
96
|
-
view.dispatch(tr);
|
|
97
|
-
};
|
|
98
|
-
const handleSave = (attrs) => {
|
|
99
|
-
const comment = comments?.get(attrs.id);
|
|
100
|
-
if (!comment) {
|
|
101
|
-
return;
|
|
102
|
-
}
|
|
103
|
-
const tr = view.state.tr;
|
|
104
|
-
tr.setNodeMarkup(comment.pos, undefined, attrs);
|
|
105
|
-
(0, body_editor_1.clearCommentSelection)(tr);
|
|
106
|
-
view.dispatch((0, track_changes_plugin_1.skipTracking)(tr));
|
|
107
|
-
};
|
|
108
|
-
const handleDelete = (id) => {
|
|
109
|
-
const comment = comments?.get(id);
|
|
110
|
-
if (!comment) {
|
|
111
|
-
return;
|
|
112
|
-
}
|
|
113
|
-
const tr = view.state.tr;
|
|
114
|
-
tr.delete(comment.pos, comment.pos + comment.node.nodeSize);
|
|
115
|
-
(0, body_editor_1.clearCommentSelection)(tr);
|
|
116
|
-
view.dispatch((0, track_changes_plugin_1.skipTracking)(tr));
|
|
117
|
-
};
|
|
118
|
-
if (!view) {
|
|
119
|
-
return null;
|
|
120
|
-
}
|
|
121
|
-
if (!trees.length) {
|
|
122
|
-
return react_1.default.createElement(CommentsPlaceholder_1.CommentsPlaceholder, null);
|
|
123
|
-
}
|
|
124
|
-
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
125
|
-
react_1.default.createElement(Header, null,
|
|
126
|
-
react_1.default.createElement(style_guide_1.CheckboxLabel, null,
|
|
127
|
-
react_1.default.createElement(style_guide_1.CheckboxField, { name: 'show-resolved', checked: showResolved, onChange: (e) => setShowResolved(e.target.checked) }),
|
|
128
|
-
react_1.default.createElement(CheckboxLabelText, null, "See resolved"))),
|
|
129
|
-
trees
|
|
130
|
-
.filter((c) => showResolved || !c.comment.node.attrs.resolved)
|
|
131
|
-
.map((c) => (react_1.default.createElement(CommentThread_1.CommentThread, { key: c.comment.node.attrs.id, ref: selectedCommentKey === c.comment.key ? selectedRef : null, tree: c, isSelected: selectedCommentKey === c.comment.key, onSelect: () => setSelectedComment(c.comment), onSave: handleSave, onDelete: handleDelete })))));
|
|
132
|
-
};
|
|
133
|
-
exports.CommentsPanel = CommentsPanel;
|
|
134
|
-
//# sourceMappingURL=CommentsPanel.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CommentsPanel.js","sourceRoot":"","sources":["../../../../src/components/comments/CommentsPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.CommentsPlaceholder = exports.Message = void 0;
|
|
7
|
-
/*!
|
|
8
|
-
* The contents of this file are subject to the Common Public Attribution License Version 1.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at https://mpapp-public.gitlab.io/manuscripts-frontend/LICENSE. The License is based on the Mozilla Public License Version 1.1 but Sections 14 and 15 have been added to cover use of software over a computer network and provide for limited attribution for the Original Developer. In addition, Exhibit A has been modified to be consistent with Exhibit B.
|
|
9
|
-
*
|
|
10
|
-
* Software distributed under the License is distributed on an “AS IS” basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License.
|
|
11
|
-
*
|
|
12
|
-
* The Original Code is manuscripts-frontend.
|
|
13
|
-
*
|
|
14
|
-
* The Original Developer is the Initial Developer. The Initial Developer of the Original Code is Atypon Systems LLC.
|
|
15
|
-
*
|
|
16
|
-
* All portions of the code written by Atypon Systems LLC are Copyright (c) 2024 Atypon Systems LLC. All Rights Reserved.
|
|
17
|
-
*/
|
|
18
|
-
const react_1 = __importDefault(require("react"));
|
|
19
|
-
const styled_components_1 = __importDefault(require("styled-components"));
|
|
20
|
-
const Container = styled_components_1.default.div `
|
|
21
|
-
display: flex;
|
|
22
|
-
flex-direction: column;
|
|
23
|
-
align-items: center;
|
|
24
|
-
justify-content: center;
|
|
25
|
-
margin-top: 50px;
|
|
26
|
-
`;
|
|
27
|
-
exports.Message = styled_components_1.default.div `
|
|
28
|
-
font-size: ${(props) => props.theme.font.size.medium};
|
|
29
|
-
font-weight: ${(props) => props.theme.font.weight.light};
|
|
30
|
-
color: ${(props) => props.theme.colors.text.secondary};
|
|
31
|
-
text-align: center;
|
|
32
|
-
margin: ${(props) => props.theme.grid.unit * 5}px;
|
|
33
|
-
`;
|
|
34
|
-
const PlaceholderGraphic = () => (react_1.default.createElement("svg", { width: "300", height: "300", viewBox: "0 0 300 300", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
|
|
35
|
-
react_1.default.createElement("rect", { width: "300", height: "300", fill: "url(#pattern0_6815_691)" }),
|
|
36
|
-
react_1.default.createElement("defs", null,
|
|
37
|
-
react_1.default.createElement("pattern", { id: "pattern0_6815_691", patternContentUnits: "objectBoundingBox", width: "1", height: "1" },
|
|
38
|
-
react_1.default.createElement("use", { xlinkHref: "#image0_6815_691", transform: "scale(0.00333333)" })),
|
|
39
|
-
react_1.default.createElement("image", { id: "image0_6815_691", width: "300", height: "300", xlinkHref: "data:image/png;base64,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" }))));
|
|
40
|
-
const CommentsPlaceholder = () => (react_1.default.createElement(Container, null,
|
|
41
|
-
react_1.default.createElement(PlaceholderGraphic, null),
|
|
42
|
-
react_1.default.createElement(exports.Message, null, "Discuss this manuscript with your collaborators by creating a comment.")));
|
|
43
|
-
exports.CommentsPlaceholder = CommentsPlaceholder;
|
|
44
|
-
//# sourceMappingURL=CommentsPlaceholder.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CommentsPlaceholder.js","sourceRoot":"","sources":["../../../../src/components/comments/CommentsPlaceholder.tsx"],"names":[],"mappings":";;;;;;AAAA;;;;;;;;;;GAUG;AACH,kDAAyB;AACzB,0EAAsC;AAEtC,MAAM,SAAS,GAAG,2BAAM,CAAC,GAAG,CAAA;;;;;;CAM3B,CAAA;AAEY,QAAA,OAAO,GAAG,2BAAM,CAAC,GAAG,CAAA;eAClB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;iBACrC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;WAC9C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS;;YAE3C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;CAC/C,CAAA;AAED,MAAM,kBAAkB,GAAa,GAAG,EAAE,CAAC,CACzC,uCACE,KAAK,EAAC,KAAK,EACX,MAAM,EAAC,KAAK,EACZ,OAAO,EAAC,aAAa,EACrB,IAAI,EAAC,MAAM,EACX,KAAK,EAAC,4BAA4B;IAElC,wCAAM,KAAK,EAAC,KAAK,EAAC,MAAM,EAAC,KAAK,EAAC,IAAI,EAAC,yBAAyB,GAAG;IAChE;QACE,2CACE,EAAE,EAAC,mBAAmB,EACtB,mBAAmB,EAAC,mBAAmB,EACvC,KAAK,EAAC,GAAG,EACT,MAAM,EAAC,GAAG;YAEV,uCAAK,SAAS,EAAC,kBAAkB,EAAC,SAAS,EAAC,mBAAmB,GAAG,CAC1D;QACV,yCACE,EAAE,EAAC,iBAAiB,EACpB,KAAK,EAAC,KAAK,EACX,MAAM,EAAC,KAAK,EACZ,SAAS,EAAC,w8hCAAw8hC,GACl9hC,CACG,CACH,CACP,CAAA;AAEM,MAAM,mBAAmB,GAAa,GAAG,EAAE,CAAC,CACjD,8BAAC,SAAS;IACR,8BAAC,kBAAkB,OAAG;IACtB,8BAAC,eAAO,iFAEE,CACA,CACb,CAAA;AAPY,QAAA,mBAAmB,uBAO/B"}
|
package/dist/cjs/lib/comments.js
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.buildAuthorName = exports.buildCommentTrees = exports.getAuthorID = void 0;
|
|
4
|
-
const getAuthorID = (comment) => {
|
|
5
|
-
const contributions = comment.node.attrs.contributions;
|
|
6
|
-
if (!contributions?.length) {
|
|
7
|
-
return undefined;
|
|
8
|
-
}
|
|
9
|
-
return contributions[0].profileID;
|
|
10
|
-
};
|
|
11
|
-
exports.getAuthorID = getAuthorID;
|
|
12
|
-
const buildCommentTrees = (comments, newCommentID) => {
|
|
13
|
-
return comments.map((c) => ({
|
|
14
|
-
comment: c,
|
|
15
|
-
isNew: newCommentID === c.node.attrs.id,
|
|
16
|
-
children: [],
|
|
17
|
-
}));
|
|
18
|
-
};
|
|
19
|
-
exports.buildCommentTrees = buildCommentTrees;
|
|
20
|
-
const buildAuthorName = (user) => {
|
|
21
|
-
if (!user) {
|
|
22
|
-
return '';
|
|
23
|
-
}
|
|
24
|
-
return [user.bibliographicName.given, user.bibliographicName.family]
|
|
25
|
-
.filter(Boolean)
|
|
26
|
-
.join(' ');
|
|
27
|
-
};
|
|
28
|
-
exports.buildAuthorName = buildAuthorName;
|
|
29
|
-
//# sourceMappingURL=comments.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"comments.js","sourceRoot":"","sources":["../../../src/lib/comments.ts"],"names":[],"mappings":";;;AAoBO,MAAM,WAAW,GAAG,CAAC,OAAgB,EAAE,EAAE;IAC9C,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAA;IACtD,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE;QAC1B,OAAO,SAAS,CAAA;KACjB;IACD,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AACnC,CAAC,CAAA;AANY,QAAA,WAAW,eAMvB;AAEM,MAAM,iBAAiB,GAAG,CAC/B,QAAmB,EACnB,YAAqB,EACN,EAAE;IACjB,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1B,OAAO,EAAE,CAAC;QACV,KAAK,EAAE,YAAY,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;QACvC,QAAQ,EAAE,EAAE;KACb,CAAC,CAAC,CAAA;AACL,CAAC,CAAA;AATY,QAAA,iBAAiB,qBAS7B;AAEM,MAAM,eAAe,GAAG,CAAC,IAA6B,EAAE,EAAE;IAC/D,IAAI,CAAC,IAAI,EAAE;QACT,OAAO,EAAE,CAAA;KACV;IACD,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;SACjE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAA;AACd,CAAC,CAAA;AAPY,QAAA,eAAe,mBAO3B"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*!
|
|
3
|
-
* The contents of this file are subject to the Common Public Attribution License Version 1.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at https://mpapp-public.gitlab.io/manuscripts-frontend/LICENSE. The License is based on the Mozilla Public License Version 1.1 but Sections 14 and 15 have been added to cover use of software over a computer network and provide for limited attribution for the Original Developer. In addition, Exhibit A has been modified to be consistent with Exhibit B.
|
|
4
|
-
*
|
|
5
|
-
* Software distributed under the License is distributed on an “AS IS” basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License.
|
|
6
|
-
*
|
|
7
|
-
* The Original Code is manuscripts-frontend.
|
|
8
|
-
*
|
|
9
|
-
* The Original Developer is the Initial Developer. The Initial Developer of the Original Code is Atypon Systems LLC.
|
|
10
|
-
*
|
|
11
|
-
* All portions of the code written by Atypon Systems LLC are Copyright (c) 2022 Atypon Systems LLC. All Rights Reserved.
|
|
12
|
-
*/
|
|
13
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
-
exports.ParentObserver = void 0;
|
|
15
|
-
class ParentObserver {
|
|
16
|
-
constructor() {
|
|
17
|
-
this.observer = undefined;
|
|
18
|
-
this.onUpdate = (observer) => {
|
|
19
|
-
this.observer = observer;
|
|
20
|
-
};
|
|
21
|
-
this.update = (partialState) => {
|
|
22
|
-
if (this.observer) {
|
|
23
|
-
this.observer(partialState);
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
this.storeObserver = (state) => {
|
|
27
|
-
this.storeListener && this.storeListener(state); // storeListener shoudldn't be directly assigned to storeObserver to avoid potential order of execution problems
|
|
28
|
-
};
|
|
29
|
-
this.onStoreInternalUpdate = (fn) => {
|
|
30
|
-
// it's supposed to be listened by the parent so there is only a single listener
|
|
31
|
-
this.storeListener = fn;
|
|
32
|
-
};
|
|
33
|
-
this.detach = () => {
|
|
34
|
-
this.storeListener = undefined;
|
|
35
|
-
this.observer = undefined;
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
exports.ParentObserver = ParentObserver;
|
|
40
|
-
//# sourceMappingURL=ParentObserver.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ParentObserver.js","sourceRoot":"","sources":["../../../src/store/ParentObserver.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;AAcH,MAAa,cAAc;IAA3B;QACU,aAAQ,GAA0B,SAAS,CAAA;QAGnD,aAAQ,GAAG,CAAC,QAAmB,EAAE,EAAE;YACjC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QAC1B,CAAC,CAAA;QAED,WAAM,GAAG,CAAC,YAAwC,EAAE,EAAE;YACpD,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA;aAC5B;QACH,CAAC,CAAA;QAED,kBAAa,GAAG,CAAC,KAAY,EAAE,EAAE;YAC/B,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA,CAAC,gHAAgH;QAClK,CAAC,CAAA;QAED,0BAAqB,GAAG,CAAC,EAA0B,EAAE,EAAE;YACrD,gFAAgF;YAChF,IAAI,CAAC,aAAa,GAAG,EAAE,CAAA;QACzB,CAAC,CAAA;QAED,WAAM,GAAG,GAAG,EAAE;YACZ,IAAI,CAAC,aAAa,GAAG,SAAS,CAAA;YAC9B,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAA;QAC3B,CAAC,CAAA;IACH,CAAC;CAAA;AA3BD,wCA2BC"}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* The contents of this file are subject to the Common Public Attribution License Version 1.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at https://mpapp-public.gitlab.io/manuscripts-frontend/LICENSE. The License is based on the Mozilla Public License Version 1.1 but Sections 14 and 15 have been added to cover use of software over a computer network and provide for limited attribution for the Original Developer. In addition, Exhibit A has been modified to be consistent with Exhibit B.
|
|
3
|
-
*
|
|
4
|
-
* Software distributed under the License is distributed on an “AS IS” basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License.
|
|
5
|
-
*
|
|
6
|
-
* The Original Code is manuscripts-frontend.
|
|
7
|
-
*
|
|
8
|
-
* The Original Developer is the Initial Developer. The Initial Developer of the Original Code is Atypon Systems LLC.
|
|
9
|
-
*
|
|
10
|
-
* All portions of the code written by Atypon Systems LLC are Copyright (c) 2024 Atypon Systems LLC. All Rights Reserved.
|
|
11
|
-
*/
|
|
12
|
-
import { DotsIcon, DropdownContainer, DropdownList, useDropdown, } from '@manuscripts/style-guide';
|
|
13
|
-
import React from 'react';
|
|
14
|
-
import styled from 'styled-components';
|
|
15
|
-
import { CommentResolveButton } from './CommentResolveButton';
|
|
16
|
-
export const ActionsIcon = styled.button `
|
|
17
|
-
border: none;
|
|
18
|
-
background: transparent;
|
|
19
|
-
cursor: pointer;
|
|
20
|
-
padding: 0 8px;
|
|
21
|
-
margin-top: -8px;
|
|
22
|
-
&:focus {
|
|
23
|
-
outline: none;
|
|
24
|
-
}
|
|
25
|
-
&:hover svg circle {
|
|
26
|
-
fill: #1a9bc7;
|
|
27
|
-
}
|
|
28
|
-
`;
|
|
29
|
-
export const CommentAction = styled.div `
|
|
30
|
-
font-family: ${(props) => props.theme.font.family.Lato};
|
|
31
|
-
cursor: pointer;
|
|
32
|
-
font-size: 16px;
|
|
33
|
-
line-height: 24px;
|
|
34
|
-
color: ${(props) => props.theme.colors.text.primary};
|
|
35
|
-
padding: 16px;
|
|
36
|
-
&:hover,
|
|
37
|
-
&:focus {
|
|
38
|
-
background: #f2fbfc;
|
|
39
|
-
}
|
|
40
|
-
`;
|
|
41
|
-
export const CommentActions = ({ comment, isResolveEnabled, isActionsEnabled, onEdit, onDelete, toggleResolve, }) => {
|
|
42
|
-
const { isOpen, toggleOpen, wrapperRef } = useDropdown();
|
|
43
|
-
return (React.createElement(React.Fragment, null,
|
|
44
|
-
isResolveEnabled && (React.createElement(CommentResolveButton, { comment: comment, onClick: toggleResolve })),
|
|
45
|
-
isActionsEnabled && (React.createElement(DropdownContainer, { ref: wrapperRef },
|
|
46
|
-
React.createElement(ActionsIcon, { onClick: toggleOpen },
|
|
47
|
-
React.createElement(DotsIcon, null)),
|
|
48
|
-
isOpen && (React.createElement(DropdownList, { direction: 'right', width: 125, onClick: toggleOpen },
|
|
49
|
-
React.createElement(CommentAction, { onClick: onEdit }, "Edit"),
|
|
50
|
-
React.createElement(CommentAction, { onClick: onDelete }, "Delete")))))));
|
|
51
|
-
};
|
|
52
|
-
//# sourceMappingURL=CommentActions.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CommentActions.js","sourceRoot":"","sources":["../../../../src/components/comments/CommentActions.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EACL,QAAQ,EACR,iBAAiB,EACjB,YAAY,EACZ,WAAW,GACZ,MAAM,0BAA0B,CAAA;AACjC,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,MAAM,MAAM,mBAAmB,CAAA;AAEtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAE7D,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAA;;;;;;;;;;;;CAYvC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAA;iBACtB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI;;;;WAI7C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO;;;;;;CAMpD,CAAA;AAWD,MAAM,CAAC,MAAM,cAAc,GAAkC,CAAC,EAC5D,OAAO,EACP,gBAAgB,EAChB,gBAAgB,EAChB,MAAM,EACN,QAAQ,EACR,aAAa,GACd,EAAE,EAAE;IACH,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAA;IAExD,OAAO,CACL;QACG,gBAAgB,IAAI,CACnB,oBAAC,oBAAoB,IAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,GAAI,CACnE;QACA,gBAAgB,IAAI,CACnB,oBAAC,iBAAiB,IAAC,GAAG,EAAE,UAAU;YAChC,oBAAC,WAAW,IAAC,OAAO,EAAE,UAAU;gBAC9B,oBAAC,QAAQ,OAAG,CACA;YACb,MAAM,IAAI,CACT,oBAAC,YAAY,IAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU;gBAC/D,oBAAC,aAAa,IAAC,OAAO,EAAE,MAAM,WAAsB;gBACpD,oBAAC,aAAa,IAAC,OAAO,EAAE,QAAQ,aAAwB,CAC3C,CAChB,CACiB,CACrB,CACA,CACJ,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { ButtonGroup, PrimaryButton, SecondaryButton, } from '@manuscripts/style-guide';
|
|
2
|
-
import React, { useCallback, useRef } from 'react';
|
|
3
|
-
import styled from 'styled-components';
|
|
4
|
-
const CommentContent = styled.div `
|
|
5
|
-
cursor: pointer;
|
|
6
|
-
`;
|
|
7
|
-
const CommentEditor = styled.textarea `
|
|
8
|
-
cursor: text;
|
|
9
|
-
font-family: ${(props) => props.theme.font.family.sans};
|
|
10
|
-
color: ${(props) => props.theme.colors.text.primary};
|
|
11
|
-
margin: ${(props) => props.theme.grid.unit * 2}px 0;
|
|
12
|
-
resize: none;
|
|
13
|
-
|
|
14
|
-
width: 100%;
|
|
15
|
-
outline: 0;
|
|
16
|
-
border: 1px solid #e2e2e2;
|
|
17
|
-
border-radius: 6px;
|
|
18
|
-
|
|
19
|
-
&:focus {
|
|
20
|
-
background: #f2fbfc;
|
|
21
|
-
border: 1px solid #bce7f6;
|
|
22
|
-
border-radius: 6px;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
box-sizing: border-box;
|
|
26
|
-
padding: 3px 16px 3px 16px;
|
|
27
|
-
font-style: normal;
|
|
28
|
-
font-weight: normal;
|
|
29
|
-
font-size: 14px;
|
|
30
|
-
line-height: 24px;
|
|
31
|
-
`;
|
|
32
|
-
const CommentViewer = styled.div `
|
|
33
|
-
flex: 1;
|
|
34
|
-
|
|
35
|
-
font-family: ${(props) => props.theme.font.family.sans};
|
|
36
|
-
line-height: 1.06;
|
|
37
|
-
letter-spacing: -0.2px;
|
|
38
|
-
color: ${(props) => props.theme.colors.text.primary};
|
|
39
|
-
margin: ${(props) => props.theme.grid.unit * 2}px 0;
|
|
40
|
-
`;
|
|
41
|
-
const EditorActions = styled(ButtonGroup) `
|
|
42
|
-
& button:not(:last-of-type) {
|
|
43
|
-
margin-right: 4px;
|
|
44
|
-
}
|
|
45
|
-
`;
|
|
46
|
-
export const CommentBody = ({ comment, isEditing, onSave, onCancel, onSelect, }) => {
|
|
47
|
-
const editor = useRef(null);
|
|
48
|
-
const handleSave = () => {
|
|
49
|
-
if (editor.current) {
|
|
50
|
-
onSave(editor.current.value);
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
|
-
const ref = useCallback((e) => {
|
|
54
|
-
if (e && editor.current !== e) {
|
|
55
|
-
e.focus();
|
|
56
|
-
}
|
|
57
|
-
editor.current = e;
|
|
58
|
-
}, []);
|
|
59
|
-
return (React.createElement(React.Fragment, null, isEditing ? (React.createElement(React.Fragment, null,
|
|
60
|
-
React.createElement(CommentEditor, { ref: ref, defaultValue: comment.node.attrs.contents }),
|
|
61
|
-
React.createElement(EditorActions, null,
|
|
62
|
-
React.createElement(SecondaryButton, { onClick: onCancel }, "Cancel"),
|
|
63
|
-
React.createElement(PrimaryButton, { onClick: handleSave }, "Save")))) : (React.createElement(React.Fragment, null,
|
|
64
|
-
React.createElement(CommentContent, { onClick: onSelect },
|
|
65
|
-
React.createElement(CommentViewer, null, comment.node.attrs.contents))))));
|
|
66
|
-
};
|
|
67
|
-
//# sourceMappingURL=CommentBody.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CommentBody.js","sourceRoot":"","sources":["../../../../src/components/comments/CommentBody.tsx"],"names":[],"mappings":"AAYA,OAAO,EACL,WAAW,EACX,aAAa,EACb,eAAe,GAChB,MAAM,0BAA0B,CAAA;AACjC,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAClD,OAAO,MAAM,MAAM,mBAAmB,CAAA;AAEtC,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAA;;CAEhC,CAAA;AAED,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAA;;iBAEpB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI;WAC7C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO;YACzC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;CAoB/C,CAAA;AAED,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAA;;;iBAGf,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI;;;WAG7C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO;YACzC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;CAC/C,CAAA;AAED,MAAM,aAAa,GAAG,MAAM,CAAC,WAAW,CAAC,CAAA;;;;CAIxC,CAAA;AAUD,MAAM,CAAC,MAAM,WAAW,GAA+B,CAAC,EACtD,OAAO,EACP,SAAS,EACT,MAAM,EACN,QAAQ,EACR,QAAQ,GACT,EAAE,EAAE;IACH,MAAM,MAAM,GAAG,MAAM,CAA6B,IAAI,CAAC,CAAA;IAEvD,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,IAAI,MAAM,CAAC,OAAO,EAAE;YAClB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;SAC7B;IACH,CAAC,CAAA;IAED,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE;QAC5B,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC,EAAE;YAC7B,CAAC,CAAC,KAAK,EAAE,CAAA;SACV;QACD,MAAM,CAAC,OAAO,GAAG,CAAC,CAAA;IACpB,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,CACL,0CACG,SAAS,CAAC,CAAC,CAAC,CACX;QACE,oBAAC,aAAa,IACZ,GAAG,EAAE,GAAG,EACR,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAC1B;QACjB,oBAAC,aAAa;YACZ,oBAAC,eAAe,IAAC,OAAO,EAAE,QAAQ,aAA0B;YAC5D,oBAAC,aAAa,IAAC,OAAO,EAAE,UAAU,WAAsB,CAC1C,CACf,CACJ,CAAC,CAAC,CAAC,CACF;QACE,oBAAC,cAAc,IAAC,OAAO,EAAE,QAAQ;YAC/B,oBAAC,aAAa,QAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAiB,CAC7C,CAChB,CACJ,CACA,CACJ,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* The contents of this file are subject to the Common Public Attribution License Version 1.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at https://mpapp-public.gitlab.io/manuscripts-frontend/LICENSE. The License is based on the Mozilla Public License Version 1.1 but Sections 14 and 15 have been added to cover use of software over a computer network and provide for limited attribution for the Original Developer. In addition, Exhibit A has been modified to be consistent with Exhibit B.
|
|
3
|
-
*
|
|
4
|
-
* Software distributed under the License is distributed on an “AS IS” basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License.
|
|
5
|
-
*
|
|
6
|
-
* The Original Code is manuscripts-frontend.
|
|
7
|
-
*
|
|
8
|
-
* The Original Developer is the Initial Developer. The Initial Developer of the Original Code is Atypon Systems LLC.
|
|
9
|
-
*
|
|
10
|
-
* All portions of the code written by Atypon Systems LLC are Copyright (c) 2024 Atypon Systems LLC. All Rights Reserved.
|
|
11
|
-
*/
|
|
12
|
-
import { CommentResolveIcon, Tooltip } from '@manuscripts/style-guide';
|
|
13
|
-
import React from 'react';
|
|
14
|
-
import styled from 'styled-components';
|
|
15
|
-
const Button = styled.button `
|
|
16
|
-
display: flex;
|
|
17
|
-
align-items: center;
|
|
18
|
-
width: 24px;
|
|
19
|
-
height: 24px;
|
|
20
|
-
border-radius: 12px;
|
|
21
|
-
border: none;
|
|
22
|
-
background: #ffffff;
|
|
23
|
-
padding: 0;
|
|
24
|
-
cursor: pointer;
|
|
25
|
-
|
|
26
|
-
&.resolved {
|
|
27
|
-
background: #f2fbfc;
|
|
28
|
-
border: 1px solid #bce7f6;
|
|
29
|
-
path {
|
|
30
|
-
fill: #1a9bc7;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
&:not([disabled]):hover,
|
|
35
|
-
&:not([disabled]):active {
|
|
36
|
-
path {
|
|
37
|
-
fill: #1a9bc7;
|
|
38
|
-
}
|
|
39
|
-
background: #f2fbfc;
|
|
40
|
-
border: 1px solid #c9c9c9;
|
|
41
|
-
}
|
|
42
|
-
`;
|
|
43
|
-
export const CommentResolveButton = ({ comment, onClick, }) => {
|
|
44
|
-
return (React.createElement(React.Fragment, null,
|
|
45
|
-
React.createElement(Button, { className: comment.node.attrs.resolved ? 'resolved' : '', "data-tooltip-id": comment.node.attrs.id, onClick: onClick },
|
|
46
|
-
React.createElement(CommentResolveIcon, null)),
|
|
47
|
-
React.createElement(Tooltip, { id: comment.node.attrs.id, place: "bottom" }, (comment.node.attrs.resolved && 'Unresolve') || 'Resolve')));
|
|
48
|
-
};
|
|
49
|
-
//# sourceMappingURL=CommentResolveButton.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CommentResolveButton.js","sourceRoot":"","sources":["../../../../src/components/comments/CommentResolveButton.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AACtE,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,MAAM,MAAM,mBAAmB,CAAA;AAEtC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2B3B,CAAA;AAOD,MAAM,CAAC,MAAM,oBAAoB,GAAwC,CAAC,EACxE,OAAO,EACP,OAAO,GACR,EAAE,EAAE;IACH,OAAO,CACL;QACE,oBAAC,MAAM,IACL,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,qBACvC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EACtC,OAAO,EAAE,OAAO;YAEhB,oBAAC,kBAAkB,OAAG,CACf;QACT,oBAAC,OAAO,IAAC,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,EAAC,QAAQ,IAC/C,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,WAAW,CAAC,IAAI,SAAS,CAClD,CACT,CACJ,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { AvatarIcon, RelativeDate, usePermissions, } from '@manuscripts/style-guide';
|
|
2
|
-
import React, { forwardRef, useState } from 'react';
|
|
3
|
-
import styled from 'styled-components';
|
|
4
|
-
import { buildAuthorName, getAuthorID } from '../../lib/comments';
|
|
5
|
-
import { useStore } from '../../store';
|
|
6
|
-
import { CommentActions } from './CommentActions';
|
|
7
|
-
import { CommentBody } from './CommentBody';
|
|
8
|
-
const Container = styled.div `
|
|
9
|
-
padding: 16px;
|
|
10
|
-
background-color: ${(props) => (props.isSelected ? '#f2fbfc' : '#ffffff')};
|
|
11
|
-
border: 1px solid ${(props) => (props.isSelected ? '#bce7f6' : '#e2e2e2')};
|
|
12
|
-
border-left-width: 4px;
|
|
13
|
-
margin-bottom: 16px;
|
|
14
|
-
`;
|
|
15
|
-
const CommentHeader = styled.div `
|
|
16
|
-
display: flex;
|
|
17
|
-
margin-bottom: 16px;
|
|
18
|
-
`;
|
|
19
|
-
const CommentMetadata = styled.div `
|
|
20
|
-
flex: 1;
|
|
21
|
-
padding-left: 8px;
|
|
22
|
-
padding-right: 8px;
|
|
23
|
-
`;
|
|
24
|
-
const CommentAuthor = styled.div `
|
|
25
|
-
color: #353535;
|
|
26
|
-
font-weight: 400;
|
|
27
|
-
max-width: 200px;
|
|
28
|
-
white-space: nowrap;
|
|
29
|
-
overflow: hidden;
|
|
30
|
-
text-overflow: ellipsis;
|
|
31
|
-
`;
|
|
32
|
-
const CommentTarget = styled.div `
|
|
33
|
-
font-size: 14px;
|
|
34
|
-
color: #353535;
|
|
35
|
-
background-color: #ffeebf;
|
|
36
|
-
padding: 4px 8px;
|
|
37
|
-
margin-top: 16px;
|
|
38
|
-
margin-bottom: 16px;
|
|
39
|
-
`;
|
|
40
|
-
const Timestamp = styled(RelativeDate) `
|
|
41
|
-
font-size: 12px;
|
|
42
|
-
line-height: 16px;
|
|
43
|
-
font-weight: 400;
|
|
44
|
-
color: #6e6e6e;
|
|
45
|
-
`;
|
|
46
|
-
export const CommentThread = forwardRef((props, ref) => {
|
|
47
|
-
const { tree, isSelected, onSelect, onSave, onDelete } = props;
|
|
48
|
-
const can = usePermissions();
|
|
49
|
-
const [{ user, collaboratorsById }] = useStore((state) => ({
|
|
50
|
-
user: state.user,
|
|
51
|
-
collaboratorsById: state.collaboratorsById,
|
|
52
|
-
}));
|
|
53
|
-
const authorID = getAuthorID(tree.comment);
|
|
54
|
-
const authorName = authorID
|
|
55
|
-
? buildAuthorName(collaboratorsById.get(authorID))
|
|
56
|
-
: '';
|
|
57
|
-
const timestamp = tree.comment.node.attrs.contributions?.[0].timestamp;
|
|
58
|
-
const isOwn = authorID === user._id;
|
|
59
|
-
const isResolveEnabled = isOwn
|
|
60
|
-
? can.resolveOwnComment
|
|
61
|
-
: can.resolveOthersComment;
|
|
62
|
-
const isActionsEnabled = isOwn
|
|
63
|
-
? can.handleOwnComments
|
|
64
|
-
: can.handleOthersComments;
|
|
65
|
-
const [isEditing, setEditing] = useState(false);
|
|
66
|
-
const handleEdit = () => setEditing(true);
|
|
67
|
-
const handleSave = (contents) => {
|
|
68
|
-
onSave({
|
|
69
|
-
...tree.comment.node.attrs,
|
|
70
|
-
contents,
|
|
71
|
-
});
|
|
72
|
-
setEditing(false);
|
|
73
|
-
};
|
|
74
|
-
const handleCancel = () => {
|
|
75
|
-
setEditing(false);
|
|
76
|
-
};
|
|
77
|
-
const handleToggleResolve = () => {
|
|
78
|
-
onSave({
|
|
79
|
-
...tree.comment.node.attrs,
|
|
80
|
-
resolved: !tree.comment.node.attrs.resolved,
|
|
81
|
-
});
|
|
82
|
-
};
|
|
83
|
-
return (React.createElement(Container, { "data-cy": "comment", isSelected: isSelected, ref: ref },
|
|
84
|
-
React.createElement(CommentHeader, { "data-cy": "comment-header" },
|
|
85
|
-
authorName && React.createElement(AvatarIcon, { width: 20, height: 20 }),
|
|
86
|
-
React.createElement(CommentMetadata, null,
|
|
87
|
-
React.createElement(CommentAuthor, null, authorName),
|
|
88
|
-
timestamp && React.createElement(Timestamp, { date: timestamp * 1000 })),
|
|
89
|
-
React.createElement(CommentActions, { comment: tree.comment, isResolveEnabled: isResolveEnabled, isActionsEnabled: isActionsEnabled, onDelete: () => onDelete(tree.comment.node.attrs.id), onEdit: handleEdit, toggleResolve: handleToggleResolve })),
|
|
90
|
-
tree.comment.node.attrs.originalText && (React.createElement(CommentTarget, null, tree.comment.node.attrs.originalText)),
|
|
91
|
-
React.createElement(CommentBody, { comment: tree.comment, isEditing: tree.isNew || isEditing, onSave: handleSave, onCancel: handleCancel, onSelect: onSelect })));
|
|
92
|
-
});
|
|
93
|
-
//# sourceMappingURL=CommentThread.js.map
|