@manuscripts/article-editor 1.15.3-LEAN-3604.1 → 1.15.3
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/EditorApp.js +11 -3
- package/dist/cjs/EditorApp.js.map +1 -1
- package/dist/cjs/Main.js +2 -4
- package/dist/cjs/Main.js.map +1 -1
- package/dist/cjs/components/comments/CommentActions.js +59 -0
- package/dist/cjs/components/comments/CommentActions.js.map +1 -0
- package/dist/cjs/components/comments/CommentBody.js +97 -0
- package/dist/cjs/components/comments/CommentBody.js.map +1 -0
- package/dist/cjs/components/comments/CommentResolveButton.js +56 -0
- package/dist/cjs/components/comments/CommentResolveButton.js.map +1 -0
- package/dist/cjs/components/comments/CommentThread.js +122 -0
- package/dist/cjs/components/comments/CommentThread.js.map +1 -0
- package/dist/cjs/components/comments/CommentsPanel.js +134 -0
- package/dist/cjs/components/comments/CommentsPanel.js.map +1 -0
- package/dist/cjs/components/comments/CommentsPlaceholder.js +44 -0
- package/dist/cjs/components/comments/CommentsPlaceholder.js.map +1 -0
- package/dist/cjs/index.js +2 -6
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/lib/comments.js +29 -0
- package/dist/cjs/lib/comments.js.map +1 -0
- package/dist/cjs/postgres-data/PsSource.js +5 -3
- package/dist/cjs/postgres-data/PsSource.js.map +1 -1
- package/dist/cjs/postgres-data/buildUtilities.js +30 -13
- package/dist/cjs/postgres-data/buildUtilities.js.map +1 -1
- package/dist/cjs/store/StoreContext.js +4 -10
- package/dist/cjs/store/StoreContext.js.map +1 -1
- package/dist/es/EditorApp.js +11 -3
- package/dist/es/EditorApp.js.map +1 -1
- package/dist/es/Main.js +2 -4
- package/dist/es/Main.js.map +1 -1
- package/dist/es/components/comments/CommentActions.js +52 -0
- package/dist/es/components/comments/CommentActions.js.map +1 -0
- package/dist/es/components/comments/CommentBody.js +67 -0
- package/dist/es/components/comments/CommentBody.js.map +1 -0
- package/dist/es/components/comments/CommentResolveButton.js +49 -0
- package/dist/es/components/comments/CommentResolveButton.js.map +1 -0
- package/dist/es/components/comments/CommentThread.js +93 -0
- package/dist/es/components/comments/CommentThread.js.map +1 -0
- package/dist/es/components/comments/CommentsPanel.js +104 -0
- package/dist/es/components/comments/CommentsPanel.js.map +1 -0
- package/dist/es/components/comments/CommentsPlaceholder.js +37 -0
- package/dist/es/components/comments/CommentsPlaceholder.js.map +1 -0
- package/dist/es/index.js +2 -3
- package/dist/es/index.js.map +1 -1
- package/dist/es/lib/comments.js +23 -0
- package/dist/es/lib/comments.js.map +1 -0
- package/dist/es/postgres-data/PsSource.js +5 -3
- package/dist/es/postgres-data/PsSource.js.map +1 -1
- package/dist/es/postgres-data/buildUtilities.js +30 -13
- package/dist/es/postgres-data/buildUtilities.js.map +1 -1
- package/dist/es/store/StoreContext.js +4 -10
- package/dist/es/store/StoreContext.js.map +1 -1
- package/dist/types/EditorApp.d.ts +14 -5
- package/dist/types/Main.d.ts +2 -12
- package/dist/types/components/comments/CommentActions.d.ts +24 -0
- package/dist/types/components/comments/CommentBody.d.ts +21 -0
- package/dist/types/components/comments/CommentResolveButton.d.ts +18 -0
- package/dist/types/components/comments/CommentThread.d.ts +22 -0
- package/dist/types/components/comments/CommentsPanel.d.ts +2 -0
- package/dist/types/components/comments/CommentsPlaceholder.d.ts +14 -0
- package/dist/types/index.d.ts +3 -13
- package/dist/types/lib/comments.d.ts +21 -0
- package/dist/types/postgres-data/buildUtilities.d.ts +1 -1
- package/dist/types/store/StoreContext.d.ts +3 -3
- package/package.json +3 -3
|
@@ -0,0 +1,44 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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/index.js
CHANGED
|
@@ -33,9 +33,6 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
33
33
|
__setModuleDefault(result, mod);
|
|
34
34
|
return result;
|
|
35
35
|
};
|
|
36
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
37
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
38
|
-
};
|
|
39
36
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
40
37
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
41
38
|
};
|
|
@@ -52,10 +49,9 @@ const Main_1 = __importDefault(require("./Main"));
|
|
|
52
49
|
const ThemeProvider_1 = require("./theme/ThemeProvider");
|
|
53
50
|
var roles_1 = require("./lib/roles");
|
|
54
51
|
Object.defineProperty(exports, "ProjectRole", { enumerable: true, get: function () { return roles_1.ProjectRole; } });
|
|
55
|
-
__exportStar(require("./store/ParentObserver"), exports);
|
|
56
52
|
var roles_2 = require("./lib/roles");
|
|
57
53
|
Object.defineProperty(exports, "getUserRole", { enumerable: true, get: function () { return roles_2.getUserRole; } });
|
|
58
|
-
const ManuscriptEditor = ({ fileManagement, files,
|
|
54
|
+
const ManuscriptEditor = ({ fileManagement, files, manuscriptID, projectID, permittedActions, authToken, observer, }) => {
|
|
59
55
|
(0, react_1.useMemo)(() => {
|
|
60
56
|
if (authToken) {
|
|
61
57
|
token_1.default.remove();
|
|
@@ -74,7 +70,7 @@ const ManuscriptEditor = ({ fileManagement, files, parentObserver, manuscriptID,
|
|
|
74
70
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
75
71
|
react_1.default.createElement(ThemeProvider_1.ThemeProvider, null,
|
|
76
72
|
react_1.default.createElement(react_1.Suspense, { fallback: react_1.default.createElement(Loading_1.LoadingPage, { className: 'loader' }, "Loading...") },
|
|
77
|
-
react_1.default.createElement(Main_1.default, { fileManagement: fileManagement, files: files, authToken: authToken || '',
|
|
73
|
+
react_1.default.createElement(Main_1.default, { fileManagement: fileManagement, files: files, authToken: authToken || '', manuscriptID: manuscriptID, projectID: projectID, permittedActions: permittedActions, observer: observer }))),
|
|
78
74
|
react_1.default.createElement("div", { id: "menu" }),
|
|
79
75
|
react_1.default.createElement("div", { id: "notifications" }),
|
|
80
76
|
react_1.default.createElement("div", { id: "size" })));
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,2BAAwB;AACxB,uBAAoB;AAEpB,4DAA+B;AAC/B,+CAAgD;AAEhD,kDAAkD;AAElD,wDAAsC;AAEtC,4DAAkC;AAClC,kDAAyB;AACzB,yDAAqD;AAErD,qCAAyC;AAAhC,oGAAA,WAAW,OAAA;AAEpB,qCAAyC;AAAhC,oGAAA,WAAW,OAAA;AAQpB,MAAM,gBAAgB,GAA6B,CAAC,EAClD,cAAc,EACd,KAAK,EACL,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,SAAS,EACT,QAAQ,GACT,EAAE,EAAE;IACH,IAAA,eAAO,EAAC,GAAG,EAAE;QACX,IAAI,SAAS,EAAE;YACb,eAAY,CAAC,MAAM,EAAE,CAAA;YACrB,eAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA,CAAC,+CAA+C;YAC3E,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,oBAAM,EAAe,SAAS,CAAC,CAAA;YAElD,IAAI,CAAC,MAAM,EAAE;gBACX,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAA;aACjC;YAED,iBAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;SACnB;QACD,OAAO,GAAG,EAAE;YACV,eAAY,CAAC,MAAM,EAAE,CAAA;YACrB,iBAAM,CAAC,MAAM,EAAE,CAAA;QACjB,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;IAEf,OAAO,CACL;QACE,8BAAC,6BAAa;YACZ,8BAAC,gBAAQ,IACP,QAAQ,EAAE,8BAAC,qBAAW,IAAC,SAAS,EAAE,QAAQ,iBAA0B;gBAEpE,8BAAC,cAAI,IACH,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS,IAAI,EAAE,EAC1B,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,EACpB,gBAAgB,EAAE,gBAAgB,EAClC,QAAQ,EAAE,QAAQ,GAClB,CACO,CACG;QAChB,uCAAK,EAAE,EAAC,MAAM,GAAO;QACrB,uCAAK,EAAE,EAAC,eAAe,GAAO;QAC9B,uCAAK,EAAE,EAAC,MAAM,GAAO,CACpB,CACJ,CAAA;AACH,CAAC,CAAA;AAEY,QAAA,mBAAmB,GAAG,eAAK,CAAC,IAAI,CAC3C,gBAAgB,EAChB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;IACb,mHAAmH;IACnH,mIAAmI;IACnI,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAA,CAAC,sCAAsC;AACtF,CAAC,CACF,CAAA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -15,9 +15,11 @@ class PsSource {
|
|
|
15
15
|
if (state.userID && state.authToken) {
|
|
16
16
|
this.api.setToken(state.authToken);
|
|
17
17
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
const projectID = state.projectID;
|
|
19
|
+
const manuscriptID = state.manuscriptID;
|
|
20
|
+
if (manuscriptID && projectID) {
|
|
21
|
+
this.data = await (0, buildData_1.buildData)(projectID, manuscriptID, this.api);
|
|
22
|
+
this.utilities = (0, buildUtilities_1.buildUtilities)(projectID, manuscriptID, () => this.data, setState, this.api);
|
|
21
23
|
}
|
|
22
24
|
next({ ...state, ...this.data, ...this.utilities });
|
|
23
25
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PsSource.js","sourceRoot":"","sources":["../../../src/postgres-data/PsSource.ts"],"names":[],"mappings":";;;;;AAeA,gDAAuB;AACvB,2CAAuC;AACvC,qDAAiD;AAEjD,MAAqB,QAAQ;IAM3B,YAAY,KAAuB;QASnC,gBAAW,GAAG,CAAC,KAAqB,EAAE,EAAE;YACtC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,KAAK,CAAC,CAAA;QACzD,CAAC,CAAA;QAED,UAAK,GAAc,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;YACjD,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,SAAS,EAAE;gBACnC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;aACnC;YACD,
|
|
1
|
+
{"version":3,"file":"PsSource.js","sourceRoot":"","sources":["../../../src/postgres-data/PsSource.ts"],"names":[],"mappings":";;;;;AAeA,gDAAuB;AACvB,2CAAuC;AACvC,qDAAiD;AAEjD,MAAqB,QAAQ;IAM3B,YAAY,KAAuB;QASnC,gBAAW,GAAG,CAAC,KAAqB,EAAE,EAAE;YACtC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,KAAK,CAAC,CAAA;QACzD,CAAC,CAAA;QAED,UAAK,GAAc,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;YACjD,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,SAAS,EAAE;gBACnC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;aACnC;YACD,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAA;YACjC,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAA;YACvC,IAAI,YAAY,IAAI,SAAS,EAAE;gBAC7B,IAAI,CAAC,IAAI,GAAG,MAAM,IAAA,qBAAS,EAAC,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;gBAC9D,IAAI,CAAC,SAAS,GAAG,IAAA,+BAAc,EAC7B,SAAS,EACT,YAAY,EACZ,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EACf,QAAQ,EACR,IAAI,CAAC,GAAG,CACT,CAAA;aACF;YACD,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;QACrD,CAAC,CAAA;QACD,gBAAW,GAAG,CAAC,KAAY,EAAE,EAAE;YAC7B,IAAI,CAAC,IAAI,GAAG,KAAK,CAAA,CAAC,uCAAuC;QAC3D,CAAC,CAAA;QACD,gBAAW,GAAG,CAAC,QAAqB,EAAE,EAAE;YACtC,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAA;QAC7B,CAAC,CAAA;QAnCC,IAAI,CAAC,GAAG,GAAG,IAAI,aAAG,EAAE,CAAA;QACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,aAAa;QACb,4BAA4B;QAC5B,oGAAoG;QACpG,yBAAyB;IAC3B,CAAC;CA8BF;AA3CD,2BA2CC"}
|
|
@@ -14,13 +14,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
14
14
|
exports.buildUtilities = void 0;
|
|
15
15
|
const json_schema_1 = require("@manuscripts/json-schema");
|
|
16
16
|
const transform_1 = require("@manuscripts/transform");
|
|
17
|
+
const roles_1 = require("../lib/roles");
|
|
17
18
|
const savingUtilities_1 = require("./savingUtilities");
|
|
18
|
-
const buildUtilities = (getState, updateState, api) => {
|
|
19
|
+
const buildUtilities = (projectID, manuscriptID, getState, updateState, api) => {
|
|
19
20
|
const nonPMModelsTypes = new Set([
|
|
20
21
|
json_schema_1.ObjectTypes.Manuscript,
|
|
21
22
|
json_schema_1.ObjectTypes.Project,
|
|
22
23
|
]);
|
|
23
|
-
const updateContainerIDs = (model
|
|
24
|
+
const updateContainerIDs = (model) => {
|
|
24
25
|
const containerIDs = {
|
|
25
26
|
containerID: projectID,
|
|
26
27
|
};
|
|
@@ -35,7 +36,7 @@ const buildUtilities = (getState, updateState, api) => {
|
|
|
35
36
|
...containerIDs,
|
|
36
37
|
};
|
|
37
38
|
};
|
|
38
|
-
const saveProject = async (models
|
|
39
|
+
const saveProject = async (models) => {
|
|
39
40
|
try {
|
|
40
41
|
const filtered = models.filter((m) => m.objectType !== json_schema_1.ObjectTypes.Project);
|
|
41
42
|
await api.saveProject(projectID, filtered);
|
|
@@ -54,9 +55,7 @@ const buildUtilities = (getState, updateState, api) => {
|
|
|
54
55
|
};
|
|
55
56
|
const saveModels = async (models, excludeIDs) => {
|
|
56
57
|
const state = getState();
|
|
57
|
-
|
|
58
|
-
const manuscriptID = state.manuscriptID;
|
|
59
|
-
if (!state.modelMap || !manuscriptID || !projectID) {
|
|
58
|
+
if (!state.modelMap) {
|
|
60
59
|
throw new Error('Unable to save due to incomplete data');
|
|
61
60
|
}
|
|
62
61
|
const modelMap = new Map();
|
|
@@ -70,7 +69,7 @@ const buildUtilities = (getState, updateState, api) => {
|
|
|
70
69
|
if (!model._id) {
|
|
71
70
|
throw new Error('Model ID required');
|
|
72
71
|
}
|
|
73
|
-
const updated = updateContainerIDs(model
|
|
72
|
+
const updated = updateContainerIDs(model);
|
|
74
73
|
modelMap.set(model._id, updated);
|
|
75
74
|
}
|
|
76
75
|
updateState({
|
|
@@ -81,7 +80,7 @@ const buildUtilities = (getState, updateState, api) => {
|
|
|
81
80
|
updateState({
|
|
82
81
|
savingProcess: 'saving',
|
|
83
82
|
});
|
|
84
|
-
const result = await saveProject([...modelMap.values()]
|
|
83
|
+
const result = await saveProject([...modelMap.values()]);
|
|
85
84
|
updateState({
|
|
86
85
|
savingProcess: result ? 'saved' : 'failed',
|
|
87
86
|
preventUnload: false,
|
|
@@ -99,10 +98,10 @@ const buildUtilities = (getState, updateState, api) => {
|
|
|
99
98
|
};
|
|
100
99
|
const saveManuscript = async (manuscript) => {
|
|
101
100
|
const state = getState();
|
|
102
|
-
if (!state.modelMap
|
|
101
|
+
if (!state.modelMap) {
|
|
103
102
|
throw new Error('Unable to save manuscript due to incomplete data');
|
|
104
103
|
}
|
|
105
|
-
const previous = state.modelMap.get(
|
|
104
|
+
const previous = state.modelMap.get(manuscriptID);
|
|
106
105
|
await saveModel({
|
|
107
106
|
...previous,
|
|
108
107
|
...manuscript,
|
|
@@ -114,11 +113,9 @@ const buildUtilities = (getState, updateState, api) => {
|
|
|
114
113
|
};
|
|
115
114
|
const createSnapshot = async () => {
|
|
116
115
|
const state = getState();
|
|
117
|
-
const projectID = state.projectID;
|
|
118
|
-
const manuscriptID = state.manuscriptID;
|
|
119
116
|
const snapshots = state.snapshots;
|
|
120
117
|
const snapshotsMap = state.snapshotsMap;
|
|
121
|
-
if (!
|
|
118
|
+
if (!snapshots || !snapshotsMap) {
|
|
122
119
|
throw new Error('Unable to create snapshot due to incomplete data');
|
|
123
120
|
}
|
|
124
121
|
const data = await api.createSnapshot(projectID, manuscriptID);
|
|
@@ -128,6 +125,25 @@ const buildUtilities = (getState, updateState, api) => {
|
|
|
128
125
|
snapshotsMap: snapshotsMap.set(label.id, data.snapshot),
|
|
129
126
|
});
|
|
130
127
|
};
|
|
128
|
+
const refreshProject = async () => {
|
|
129
|
+
const state = getState();
|
|
130
|
+
const userID = state.userID;
|
|
131
|
+
if (!userID) {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
const models = await api.getManuscript(projectID, manuscriptID);
|
|
135
|
+
if (!models) {
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
const project = models.filter((m) => m.objectType === json_schema_1.ObjectTypes.Project)[0];
|
|
139
|
+
if (!project) {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
updateState({
|
|
143
|
+
project,
|
|
144
|
+
userRole: (0, roles_1.getUserRole)(project, userID),
|
|
145
|
+
});
|
|
146
|
+
};
|
|
131
147
|
return {
|
|
132
148
|
saveModel,
|
|
133
149
|
deleteModel,
|
|
@@ -136,6 +152,7 @@ const buildUtilities = (getState, updateState, api) => {
|
|
|
136
152
|
saveModels,
|
|
137
153
|
saveDoc,
|
|
138
154
|
createSnapshot,
|
|
155
|
+
refreshProject,
|
|
139
156
|
};
|
|
140
157
|
};
|
|
141
158
|
exports.buildUtilities = buildUtilities;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildUtilities.js","sourceRoot":"","sources":["../../../src/postgres-data/buildUtilities.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;AAEH,
|
|
1
|
+
{"version":3,"file":"buildUtilities.js","sourceRoot":"","sources":["../../../src/postgres-data/buildUtilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,20 +38,14 @@ exports.useGenericStore = exports.GenericStoreProvider = exports.createStore = v
|
|
|
38
38
|
const react_1 = __importStar(require("react"));
|
|
39
39
|
const _1 = require(".");
|
|
40
40
|
const GenericStoreContext = (0, react_1.createContext)(new _1.GenericStore());
|
|
41
|
-
const createStore = async (
|
|
42
|
-
const store = new _1.GenericStore(
|
|
43
|
-
await store.init(
|
|
44
|
-
|
|
45
|
-
store.subscribe((state) => {
|
|
46
|
-
parentObserver?.storeObserver(state);
|
|
47
|
-
});
|
|
41
|
+
const createStore = async (sources, observer) => {
|
|
42
|
+
const store = new _1.GenericStore();
|
|
43
|
+
await store.init(sources);
|
|
44
|
+
store.subscribe((state) => observer?.onUpdate(state));
|
|
48
45
|
return store;
|
|
49
46
|
};
|
|
50
47
|
exports.createStore = createStore;
|
|
51
48
|
const GenericStoreProvider = ({ children, store }) => {
|
|
52
|
-
if (!(store instanceof _1.GenericStore)) {
|
|
53
|
-
throw new Error('GenericStoreProvider received incorrect store.');
|
|
54
|
-
}
|
|
55
49
|
(0, react_1.useEffect)(() => {
|
|
56
50
|
return () => store.unmount();
|
|
57
51
|
}, [store]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StoreContext.js","sourceRoot":"","sources":["../../../src/store/StoreContext.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;GAUG;AACH,+CAAmE;
|
|
1
|
+
{"version":3,"file":"StoreContext.js","sourceRoot":"","sources":["../../../src/store/StoreContext.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;GAUG;AACH,+CAAmE;AAGnE,wBAAyD;AAEzD,MAAM,mBAAmB,GAAG,IAAA,qBAAa,EAAe,IAAI,eAAY,EAAE,CAAC,CAAA;AAEpE,MAAM,WAAW,GAAG,KAAK,EAC9B,OAAkC,EAClC,QAA2B,EAC3B,EAAE;IACF,MAAM,KAAK,GAAG,IAAI,eAAY,EAAE,CAAA;IAChC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACzB,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;IACrD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AARY,QAAA,WAAW,eAQvB;AAMM,MAAM,oBAAoB,GAAoB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE;IAC3E,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAA;IAC9B,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;IAEX,IAAI,KAAK,EAAE;QACT,OAAO,CACL,8BAAC,mBAAmB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,IACvC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,iEAA4B,CAClC,CAChC,CAAA;KACF;IACD,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAbY,QAAA,oBAAoB,wBAahC;AAEM,MAAM,eAAe,GAAG,GAAG,EAAE,CAAC,IAAA,kBAAU,EAAC,mBAAmB,CAAC,CAAA;AAAvD,QAAA,eAAe,mBAAwC"}
|
package/dist/es/EditorApp.js
CHANGED
|
@@ -26,7 +26,7 @@ const PlaceholderWrapper = styled.div `
|
|
|
26
26
|
justify-content: center;
|
|
27
27
|
align-items: center;
|
|
28
28
|
`;
|
|
29
|
-
const EditorApp = ({
|
|
29
|
+
const EditorApp = ({ manuscriptID, projectID, permittedActions, fileManagement, files, authToken, observer, }) => {
|
|
30
30
|
const userID = getCurrentUserId();
|
|
31
31
|
const [store, setStore] = useState();
|
|
32
32
|
const loadDoc = useLoadDoc(authToken);
|
|
@@ -35,7 +35,7 @@ const EditorApp = ({ parentObserver, manuscriptID, projectID, permittedActions,
|
|
|
35
35
|
// implement remount for the store if component is retriggered
|
|
36
36
|
const basicSource = new BasicSource(fileManagement, projectID, manuscriptID, files, permittedActions, userID || '', authToken || '');
|
|
37
37
|
const mainSource = new PsSource(files);
|
|
38
|
-
createStore([basicSource, mainSource, quarterBackSource],
|
|
38
|
+
createStore([basicSource, mainSource, quarterBackSource], observer)
|
|
39
39
|
.then((store) => {
|
|
40
40
|
setStore(store);
|
|
41
41
|
})
|
|
@@ -43,11 +43,19 @@ const EditorApp = ({ parentObserver, manuscriptID, projectID, permittedActions,
|
|
|
43
43
|
console.error(e);
|
|
44
44
|
});
|
|
45
45
|
return () => {
|
|
46
|
-
parentObserver?.detach();
|
|
47
46
|
store?.unmount();
|
|
48
47
|
};
|
|
49
48
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
50
49
|
}, [manuscriptID, projectID]);
|
|
50
|
+
useEffect(() => {
|
|
51
|
+
if (!observer) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
observer.state.current = {
|
|
55
|
+
get: () => store?.getState(),
|
|
56
|
+
update: (state) => store?.setState(state),
|
|
57
|
+
};
|
|
58
|
+
}, [observer, store]);
|
|
51
59
|
return store ? (React.createElement(GenericStoreProvider, { store: store },
|
|
52
60
|
React.createElement(Router, null,
|
|
53
61
|
React.createElement(Page, null,
|
package/dist/es/EditorApp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditorApp.js","sourceRoot":"","sources":["../../src/EditorApp.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"EditorApp.js","sourceRoot":"","sources":["../../src/EditorApp.tsx"],"names":[],"mappings":"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"}
|
package/dist/es/Main.js
CHANGED
|
@@ -14,10 +14,8 @@ import { DndProvider } from 'react-dnd';
|
|
|
14
14
|
import { HTML5Backend } from 'react-dnd-html5-backend';
|
|
15
15
|
import EditorApp from './EditorApp';
|
|
16
16
|
import { GlobalStyle } from './theme/theme';
|
|
17
|
-
|
|
18
|
-
// manuscriptID="MPManuscript:5F6D807F-CECF-45D0-B94C-5CF1361BDF05"
|
|
19
|
-
const Main = ({ fileManagement, files, parentObserver, manuscriptID, projectID, authToken, permittedActions, }) => (React.createElement(DndProvider, { backend: HTML5Backend },
|
|
17
|
+
const Main = ({ fileManagement, files, manuscriptID, projectID, authToken, permittedActions, observer, }) => (React.createElement(DndProvider, { backend: HTML5Backend },
|
|
20
18
|
React.createElement(GlobalStyle, null),
|
|
21
|
-
React.createElement(EditorApp, { fileManagement: fileManagement, files: files,
|
|
19
|
+
React.createElement(EditorApp, { fileManagement: fileManagement, files: files, manuscriptID: manuscriptID, projectID: projectID, permittedActions: permittedActions, authToken: authToken, observer: observer })));
|
|
22
20
|
export default Main;
|
|
23
21
|
//# sourceMappingURL=Main.js.map
|
package/dist/es/Main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Main.js","sourceRoot":"","sources":["../../src/Main.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"Main.js","sourceRoot":"","sources":["../../src/Main.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAEtD,OAAO,SAA6B,MAAM,aAAa,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,MAAM,IAAI,GAA6B,CAAC,EACtC,cAAc,EACd,KAAK,EACL,YAAY,EACZ,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,QAAQ,GACT,EAAE,EAAE,CAAC,CACJ,oBAAC,WAAW,IAAC,OAAO,EAAE,YAAY;IAChC,oBAAC,WAAW,OAAG;IACf,oBAAC,SAAS,IACR,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,EACpB,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,GAClB,CACU,CACf,CAAA;AAED,eAAe,IAAI,CAAA"}
|
|
@@ -0,0 +1,52 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|