@manuscripts/article-editor 3.2.19-LEAN-3958.2 → 3.2.19-LEAN-3894.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.
Files changed (75) hide show
  1. package/dist/cjs/components/comments/CommentActions.js +11 -7
  2. package/dist/cjs/components/comments/CommentActions.js.map +1 -1
  3. package/dist/cjs/components/comments/CommentCard.js +162 -0
  4. package/dist/cjs/components/comments/CommentCard.js.map +1 -0
  5. package/dist/cjs/components/comments/CommentResolveButton.js +1 -1
  6. package/dist/cjs/components/comments/CommentThread.js +77 -89
  7. package/dist/cjs/components/comments/CommentThread.js.map +1 -1
  8. package/dist/cjs/components/comments/CommentsPanel.js +33 -10
  9. package/dist/cjs/components/comments/CommentsPanel.js.map +1 -1
  10. package/dist/cjs/components/comments/DeleteCommentConfirmation.js +69 -0
  11. package/dist/cjs/components/comments/DeleteCommentConfirmation.js.map +1 -0
  12. package/dist/cjs/components/comments/ReplyBox.js +118 -0
  13. package/dist/cjs/components/comments/ReplyBox.js.map +1 -0
  14. package/dist/cjs/components/track-changes/suggestion-list/Suggestion.js +3 -3
  15. package/dist/cjs/components/track-changes/suggestion-list/Suggestion.js.map +1 -1
  16. package/dist/cjs/components/track-changes/suggestion-list/SuggestionSnippet.js +118 -26
  17. package/dist/cjs/components/track-changes/suggestion-list/SuggestionSnippet.js.map +1 -1
  18. package/dist/cjs/lib/comments.js +26 -5
  19. package/dist/cjs/lib/comments.js.map +1 -1
  20. package/dist/cjs/lib/fonts.js +0 -3
  21. package/dist/cjs/lib/fonts.js.map +1 -1
  22. package/dist/cjs/lib/footnotes.js +49 -0
  23. package/dist/cjs/lib/footnotes.js.map +1 -0
  24. package/dist/cjs/lib/tracking.js +0 -3
  25. package/dist/cjs/lib/tracking.js.map +1 -1
  26. package/dist/cjs/lib/utils.js +28 -11
  27. package/dist/cjs/lib/utils.js.map +1 -1
  28. package/dist/es/components/comments/CommentActions.js +11 -7
  29. package/dist/es/components/comments/CommentActions.js.map +1 -1
  30. package/dist/es/components/comments/CommentCard.js +132 -0
  31. package/dist/es/components/comments/CommentCard.js.map +1 -0
  32. package/dist/es/components/comments/CommentResolveButton.js +1 -1
  33. package/dist/es/components/comments/CommentThread.js +80 -92
  34. package/dist/es/components/comments/CommentThread.js.map +1 -1
  35. package/dist/es/components/comments/CommentsPanel.js +35 -12
  36. package/dist/es/components/comments/CommentsPanel.js.map +1 -1
  37. package/dist/es/components/comments/DeleteCommentConfirmation.js +62 -0
  38. package/dist/es/components/comments/DeleteCommentConfirmation.js.map +1 -0
  39. package/dist/es/components/comments/ReplyBox.js +88 -0
  40. package/dist/es/components/comments/ReplyBox.js.map +1 -0
  41. package/dist/es/components/track-changes/suggestion-list/Suggestion.js +3 -3
  42. package/dist/es/components/track-changes/suggestion-list/Suggestion.js.map +1 -1
  43. package/dist/es/components/track-changes/suggestion-list/SuggestionSnippet.js +119 -27
  44. package/dist/es/components/track-changes/suggestion-list/SuggestionSnippet.js.map +1 -1
  45. package/dist/es/lib/comments.js +23 -3
  46. package/dist/es/lib/comments.js.map +1 -1
  47. package/dist/es/lib/fonts.js +0 -3
  48. package/dist/es/lib/fonts.js.map +1 -1
  49. package/dist/es/lib/footnotes.js +43 -0
  50. package/dist/es/lib/footnotes.js.map +1 -0
  51. package/dist/es/lib/tracking.js +0 -3
  52. package/dist/es/lib/tracking.js.map +1 -1
  53. package/dist/es/lib/utils.js +25 -10
  54. package/dist/es/lib/utils.js.map +1 -1
  55. package/dist/types/{lib/change-handlers.d.ts → components/comments/CommentCard.d.ts} +12 -9
  56. package/dist/types/components/comments/CommentThread.d.ts +3 -2
  57. package/dist/{es/components/track-changes/suggestion-list/SnippetContent.js → types/components/comments/DeleteCommentConfirmation.d.ts} +7 -33
  58. package/dist/types/components/{track-changes/suggestion-list/SnippetContent.d.ts → comments/ReplyBox.d.ts} +5 -5
  59. package/dist/types/lib/comments.d.ts +4 -3
  60. package/dist/types/lib/fonts.d.ts +0 -3
  61. package/dist/types/lib/footnotes.d.ts +15 -0
  62. package/dist/types/lib/utils.d.ts +8 -1
  63. package/package.json +3 -3
  64. package/dist/cjs/components/track-changes/suggestion-list/SnippetContent.js +0 -72
  65. package/dist/cjs/components/track-changes/suggestion-list/SnippetContent.js.map +0 -1
  66. package/dist/cjs/lib/change-handlers.js +0 -123
  67. package/dist/cjs/lib/change-handlers.js.map +0 -1
  68. package/dist/cjs/lib/node-content-retriever.js +0 -130
  69. package/dist/cjs/lib/node-content-retriever.js.map +0 -1
  70. package/dist/es/components/track-changes/suggestion-list/SnippetContent.js.map +0 -1
  71. package/dist/es/lib/change-handlers.js +0 -117
  72. package/dist/es/lib/change-handlers.js.map +0 -1
  73. package/dist/es/lib/node-content-retriever.js +0 -123
  74. package/dist/es/lib/node-content-retriever.js.map +0 -1
  75. package/dist/types/lib/node-content-retriever.d.ts +0 -37
@@ -0,0 +1,88 @@
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 { ButtonGroup, PrimaryButton, SecondaryButton, } from '@manuscripts/style-guide';
13
+ import React, { useMemo, useRef, useState } from 'react';
14
+ import styled from 'styled-components';
15
+ export const ReplyBox = ({ insertCommentReply, commentID, }) => {
16
+ const [isTextBoxFocused, setIsTextBoxFocused] = useState(false);
17
+ const [value, setValue] = useState('');
18
+ const replyRef = useRef(null);
19
+ const handleFocus = () => setIsTextBoxFocused(true);
20
+ const handleBlur = (event) => {
21
+ if (!event.target.value.length) {
22
+ setIsTextBoxFocused(false);
23
+ }
24
+ };
25
+ const reply = () => {
26
+ if (replyRef.current) {
27
+ insertCommentReply(commentID, replyRef.current.value);
28
+ setValue('');
29
+ replyRef.current.value = '';
30
+ replyRef.current.style.height = '30px'; // Reset the height
31
+ }
32
+ };
33
+ const disableSaveButton = useMemo(() => !value.length, [value]);
34
+ const onTextChange = (e) => {
35
+ setValue(e.target.value);
36
+ if (replyRef.current) {
37
+ replyRef.current.style.height = '30px'; // Reset the height
38
+ replyRef.current.style.height = `${Math.min(replyRef.current.scrollHeight, 55)}px`; // Set the height based on content
39
+ }
40
+ };
41
+ return (React.createElement(React.Fragment, null,
42
+ React.createElement(TextBox, { "data-cy": "reply", placeholder: "Reply...", ref: replyRef, onChange: onTextChange, onFocus: handleFocus, onBlur: handleBlur }),
43
+ isTextBoxFocused && (React.createElement(Actions, { "data-cy": "reply-actions" },
44
+ React.createElement(SecondaryButton, { onClick: () => {
45
+ setIsTextBoxFocused(false);
46
+ setValue('');
47
+ if (replyRef.current) {
48
+ replyRef.current.value = '';
49
+ replyRef.current.style.height = '30px'; // Reset the height
50
+ }
51
+ } }, "Cancel"),
52
+ React.createElement(PrimaryButton, { onClick: reply, disabled: disableSaveButton }, "Reply")))));
53
+ };
54
+ const TextBox = styled.textarea `
55
+ cursor: text;
56
+ font-family: ${(props) => props.theme.font.family.sans};
57
+ color: ${(props) => props.theme.colors.text.primary};
58
+ margin: ${(props) => props.theme.grid.unit * 2}px 0;
59
+ resize: none;
60
+
61
+ width: 100%;
62
+
63
+ height: 30px;
64
+ max-height: 55px;
65
+
66
+ outline: 0;
67
+ border: 1px solid #e2e2e2;
68
+ border-radius: 6px;
69
+
70
+ &:focus {
71
+ background: #f2fbfc;
72
+ border: 1px solid #bce7f6;
73
+ border-radius: 6px;
74
+ }
75
+
76
+ box-sizing: border-box;
77
+ padding: 3px 16px 3px 16px;
78
+ font-style: normal;
79
+ font-weight: 400;
80
+ font-size: 14px;
81
+ line-height: 24px;
82
+ `;
83
+ const Actions = styled(ButtonGroup) `
84
+ & button:not(:last-of-type) {
85
+ margin-right: 4px;
86
+ }
87
+ `;
88
+ //# sourceMappingURL=ReplyBox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReplyBox.js","sourceRoot":"","sources":["../../../../src/components/comments/ReplyBox.tsx"],"names":[],"mappings":"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"}
@@ -51,7 +51,8 @@ const Wrapper = styled.li `
51
51
  justify-content: space-between;
52
52
  align-items: center;
53
53
  gap: ${(props) => props.theme.grid.unit * 4}px;
54
- padding: 6px 8px;
54
+ padding: ${(props) => props.theme.grid.unit * 1.5}px
55
+ ${(props) => props.theme.grid.unit * 2}px !important;
55
56
  min-height: 28px;
56
57
  margin-bottom: 6px;
57
58
  border: ${(props) => props.isFocused
@@ -62,8 +63,7 @@ const Wrapper = styled.li `
62
63
  : `none`};
63
64
  list-style-type: none;
64
65
  font-size: ${(props) => props.theme.font.size.small};
65
- border-radius: 4px;
66
- max-height: 40px;
66
+
67
67
  /* FocusHandle should cover entire card: */
68
68
  position: relative;
69
69
  color: ${(props) => props.theme.colors.text.primary};
@@ -1 +1 @@
1
- {"version":3,"file":"Suggestion.js","sourceRoot":"","sources":["../../../../../src/components/track-changes/suggestion-list/Suggestion.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Suggestion.js","sourceRoot":"","sources":["../../../../../src/components/track-changes/suggestion-list/Suggestion.tsx"],"names":[],"mappings":"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"}
@@ -9,41 +9,129 @@
9
9
  *
10
10
  * All portions of the code written by Atypon Systems LLC are Copyright (c) 2024 Atypon Systems LLC. All Rights Reserved.
11
11
  */
12
- import { CHANGE_STATUS, ChangeSet, } from '@manuscripts/track-changes-plugin';
12
+ import { CHANGE_OPERATION, CHANGE_STATUS, ChangeSet, } from '@manuscripts/track-changes-plugin';
13
+ import { schema } from '@manuscripts/transform';
14
+ import parse from 'html-react-parser';
13
15
  import React, { useEffect, useState } from 'react';
14
16
  import styled from 'styled-components';
15
- import { handleNodeChange, handleTextChange, handleUnknownChange, } from '../../../lib/change-handlers';
17
+ import { getFootnoteText, getInlineFootnoteContent, } from '../../../lib/footnotes';
18
+ import { changeOperationAlias } from '../../../lib/tracking';
19
+ import { getParentNode } from '../../../lib/utils';
16
20
  import { useStore } from '../../../store';
17
- import SnippetContent from './SnippetContent';
18
21
  export const SuggestionSnippet = ({ suggestion, }) => {
19
22
  const [{ doc, view }] = useStore((store) => ({
20
23
  view: store.view,
21
24
  doc: store.doc,
22
25
  }));
23
26
  const [snippet, setSnippet] = useState(null);
27
+ const [message, setMessage] = useState('');
24
28
  const { dataTracked } = suggestion;
25
29
  useEffect(() => {
26
- let newSnippet = null;
27
- if (ChangeSet.isTextChange(suggestion)) {
28
- newSnippet = handleTextChange(suggestion, view, dataTracked);
29
- }
30
- else if (ChangeSet.isNodeChange(suggestion) ||
31
- ChangeSet.isNodeAttrChange(suggestion)) {
32
- newSnippet = handleNodeChange(suggestion, view, doc, dataTracked);
33
- }
34
- else {
35
- newSnippet = handleUnknownChange();
36
- }
30
+ const getSnippetData = () => {
31
+ if (ChangeSet.isTextChange(suggestion) && view) {
32
+ const parentNode = getParentNode(view.state, suggestion.from);
33
+ if (parentNode?.type === schema.nodes.footnote) {
34
+ return {
35
+ snippet: {
36
+ operation: changeOperationAlias(dataTracked.operation),
37
+ nodeName: parentNode.type.name || suggestion.nodeType.name,
38
+ content: suggestion.text,
39
+ },
40
+ message: '',
41
+ };
42
+ }
43
+ else {
44
+ return { snippet: null, message: suggestion.text };
45
+ }
46
+ }
47
+ if (ChangeSet.isNodeChange(suggestion) && view) {
48
+ if (suggestion.node.type === schema.nodes.inline_footnote) {
49
+ return {
50
+ snippet: {
51
+ operation: changeOperationAlias(dataTracked.operation),
52
+ nodeName: suggestion.node.type.spec.name,
53
+ content: getInlineFootnoteContent(doc, suggestion.attrs),
54
+ },
55
+ message: '',
56
+ };
57
+ }
58
+ else if (suggestion.node.type === schema.nodes.footnote) {
59
+ return {
60
+ snippet: {
61
+ operation: changeOperationAlias(dataTracked.operation),
62
+ nodeName: suggestion.node.type.name,
63
+ content: getFootnoteText(view.state, suggestion.node),
64
+ },
65
+ message: '',
66
+ };
67
+ }
68
+ else if (suggestion.dataTracked.operation === CHANGE_OPERATION.node_split) {
69
+ return {
70
+ snippet: null,
71
+ message: `Split ${suggestion.node.type.name}`,
72
+ };
73
+ }
74
+ else if (suggestion.dataTracked.operation === CHANGE_OPERATION.wrap_with_node) {
75
+ return {
76
+ snippet: null,
77
+ message: `${suggestion.node.type.name
78
+ .charAt(0)
79
+ .toUpperCase()}${suggestion.node.type.name.slice(1)} insert`,
80
+ };
81
+ }
82
+ else {
83
+ return {
84
+ snippet: null,
85
+ message: `${suggestion.node.type.name
86
+ .charAt(0)
87
+ .toUpperCase()}${suggestion.node.type.name.slice(1)} ${dataTracked.operation}`,
88
+ };
89
+ }
90
+ }
91
+ if (ChangeSet.isNodeAttrChange(suggestion) && view) {
92
+ if (suggestion.node.type === schema.nodes.inline_footnote) {
93
+ return {
94
+ snippet: {
95
+ operation: changeOperationAlias(dataTracked.operation),
96
+ nodeName: suggestion.node.type.spec.name,
97
+ content: getInlineFootnoteContent(doc, suggestion.newAttrs),
98
+ },
99
+ message: '',
100
+ };
101
+ }
102
+ else if (suggestion.node.type === schema.nodes.footnote) {
103
+ return {
104
+ snippet: {
105
+ operation: changeOperationAlias(dataTracked.operation),
106
+ nodeName: suggestion.node.type.name,
107
+ content: getFootnoteText(view.state, suggestion.node),
108
+ },
109
+ message: '',
110
+ };
111
+ }
112
+ else {
113
+ return {
114
+ snippet: null,
115
+ message: `${suggestion.node.type.name
116
+ .charAt(0)
117
+ .toUpperCase()}${suggestion.node.type.name.slice(1)} ${dataTracked.operation}`,
118
+ };
119
+ }
120
+ }
121
+ return { snippet: null, message: 'Unknown change!' };
122
+ };
123
+ const { snippet: newSnippet, message: newMessage } = getSnippetData();
37
124
  setSnippet(newSnippet);
38
- // eslint-disable-next-line react-hooks/exhaustive-deps
39
- }, [suggestion, doc]);
40
- return (React.createElement(SnippetText, { isRejected: dataTracked.status === CHANGE_STATUS.rejected, "data-mathjax": snippet?.isEquation },
41
- React.createElement(React.Fragment, null,
42
- React.createElement(Operation, { color: dataTracked.operation },
43
- snippet?.operation,
44
- ":"),
45
- React.createElement(NodeName, null, snippet?.nodeName),
46
- React.createElement(SnippetContent, { content: snippet?.content || '', isEquation: snippet?.isEquation }))));
125
+ setMessage(newMessage);
126
+ }, [suggestion, doc, view, view?.state, dataTracked.operation]);
127
+ return (React.createElement(SnippetText, { isRejected: dataTracked.status === CHANGE_STATUS.rejected }, snippet ? (React.createElement(React.Fragment, null,
128
+ React.createElement(Operation, { color: dataTracked.operation },
129
+ snippet.operation,
130
+ ":"),
131
+ React.createElement(NodeName, null,
132
+ snippet.nodeName,
133
+ ":"),
134
+ React.createElement(Content, null, parse(snippet.content)))) : dataTracked.operation === CHANGE_OPERATION.delete ? (React.createElement("del", null, message)) : (message)));
47
135
  };
48
136
  const SnippetText = styled.div `
49
137
  font-size: ${(props) => props.theme.font.size.small};
@@ -54,9 +142,6 @@ const SnippetText = styled.div `
54
142
  color: ${(props) => props.theme.colors.text.primary};
55
143
  display: block;
56
144
  text-overflow: ellipsis;
57
- &[data-mathjax='true'] {
58
- text-overflow: unset;
59
- }
60
145
  `;
61
146
  const Operation = styled.span `
62
147
  font-family: Lato, sans-serif;
@@ -68,7 +153,6 @@ const Operation = styled.span `
68
153
  color: ${(props) => {
69
154
  switch (props.color) {
70
155
  case 'insert':
71
- case 'wrap_with_node':
72
156
  return '#01872E';
73
157
  case 'delete':
74
158
  return '#F35143';
@@ -86,5 +170,13 @@ const NodeName = styled.span `
86
170
  font-size: 12px;
87
171
  font-weight: bold;
88
172
  line-height: 16px;
173
+ margin-right: 3.2px;
174
+ `;
175
+ const Content = styled.span `
176
+ color: #353535;
177
+ font-family: Lato, sans-serif;
178
+ font-size: 12px;
179
+ font-weight: 400;
180
+ line-height: 16px;
89
181
  `;
90
182
  //# sourceMappingURL=SuggestionSnippet.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SuggestionSnippet.js","sourceRoot":"","sources":["../../../../../src/components/track-changes/suggestion-list/SuggestionSnippet.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SuggestionSnippet.js","sourceRoot":"","sources":["../../../../../src/components/track-changes/suggestion-list/SuggestionSnippet.tsx"],"names":[],"mappings":"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"}
@@ -1,3 +1,15 @@
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 { isReply } from '@manuscripts/body-editor';
1
13
  export const getAuthorID = (comment) => {
2
14
  const contributions = comment.node.attrs.contributions;
3
15
  if (!contributions?.length) {
@@ -5,11 +17,14 @@ export const getAuthorID = (comment) => {
5
17
  }
6
18
  return contributions[0].profileID;
7
19
  };
8
- export const buildCommentTrees = (comments, newCommentID) => {
9
- return comments.map((c) => ({
20
+ export const buildThreads = (comments, newCommentID) => {
21
+ return comments
22
+ .filter((c) => !isReply(c)) // Filter out replies
23
+ .map((c) => ({
10
24
  comment: c,
11
25
  isNew: newCommentID === c.node.attrs.id,
12
- children: [],
26
+ replies: comments.filter((reply) => reply.node.attrs.target === c.node.attrs.id // Find replies for each comment
27
+ ),
13
28
  }));
14
29
  };
15
30
  export const buildAuthorName = (user) => {
@@ -20,4 +35,9 @@ export const buildAuthorName = (user) => {
20
35
  .filter(Boolean)
21
36
  .join(' ');
22
37
  };
38
+ export const commentsByTime = (a, b) => {
39
+ const aTimestamp = a.node.attrs.contributions?.[0].timestamp || 0;
40
+ const bTimestamp = b.node.attrs.contributions?.[0].timestamp || 0;
41
+ return aTimestamp - bTimestamp;
42
+ };
23
43
  //# sourceMappingURL=comments.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"comments.js","sourceRoot":"","sources":["../../../src/lib/comments.ts"],"names":[],"mappings":"AAoBA,MAAM,CAAC,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;AAED,MAAM,CAAC,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;AAED,MAAM,CAAC,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"}
1
+ {"version":3,"file":"comments.js","sourceRoot":"","sources":["../../../src/lib/comments.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAW,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAS3D,MAAM,CAAC,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;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,QAAmB,EACnB,YAAqB,EACX,EAAE;IACZ,OAAO,QAAQ;SACZ,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB;SAChD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,OAAO,EAAE,CAAC;QACV,KAAK,EAAE,YAAY,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;QACvC,OAAO,EAAE,QAAQ,CAAC,MAAM,CACtB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,gCAAgC;SACxF;KACF,CAAC,CAAC,CAAA;AACP,CAAC,CAAA;AAED,MAAM,CAAC,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;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAU,EAAE,CAAU,EAAE,EAAE;IACvD,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAA;IACjE,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAA;IACjE,OAAO,UAAU,GAAG,UAAU,CAAA;AAChC,CAAC,CAAA"}
@@ -12,7 +12,4 @@
12
12
  import '@fontsource/lato';
13
13
  import '@fontsource/pt-sans';
14
14
  import '@fontsource/pt-serif';
15
- import '@fontsource/lato/300.css';
16
- import '@fontsource/lato/400.css';
17
- import '@fontsource/lato/700.css';
18
15
  //# sourceMappingURL=fonts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fonts.js","sourceRoot":"","sources":["../../../src/lib/fonts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,kBAAkB,CAAA;AACzB,OAAO,qBAAqB,CAAA;AAC5B,OAAO,sBAAsB,CAAA;AAC7B,OAAO,0BAA0B,CAAA;AACjC,OAAO,0BAA0B,CAAA;AACjC,OAAO,0BAA0B,CAAA"}
1
+ {"version":3,"file":"fonts.js","sourceRoot":"","sources":["../../../src/lib/fonts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,kBAAkB,CAAA;AACzB,OAAO,qBAAqB,CAAA;AAC5B,OAAO,sBAAsB,CAAA"}
@@ -0,0 +1,43 @@
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) 2019 Atypon Systems LLC. All Rights Reserved.
11
+ */
12
+ import { findPluginByKey, getNodeTextContent } from './utils';
13
+ export const findFootnoteById = (doc, id) => {
14
+ let footnoteNode = null;
15
+ doc.descendants((node) => {
16
+ if (node.type.name === 'footnote' && node.attrs.id === id) {
17
+ footnoteNode = node;
18
+ return false; // stop traversal
19
+ }
20
+ if (footnoteNode) {
21
+ return false;
22
+ }
23
+ return true; // continue traversal
24
+ });
25
+ return footnoteNode;
26
+ };
27
+ export const getInlineFootnoteContent = (doc, attrs) => {
28
+ let footnote = null;
29
+ if (attrs.rids && attrs.rids.length > 0) {
30
+ footnote = findFootnoteById(doc, attrs.rids[0]);
31
+ }
32
+ return `<sup class="footnote-decoration">${attrs.contents ? attrs.contents : ''}</sup>${footnote ? footnote.textContent : ''}`;
33
+ };
34
+ export const getFootnoteText = (state, node) => {
35
+ const footnotesPlugin = findPluginByKey(state, 'footnotes');
36
+ const pluginState = footnotesPlugin?.getState(state);
37
+ let decorationText = '';
38
+ if (pluginState) {
39
+ decorationText = pluginState.labels.get(node.attrs.id);
40
+ }
41
+ return `<sup class="footnote-decoration">${decorationText ? decorationText : ''}</sup>${getNodeTextContent(node)}`;
42
+ };
43
+ //# sourceMappingURL=footnotes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"footnotes.js","sourceRoot":"","sources":["../../../src/lib/footnotes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAE7D,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,GAAmB,EACnB,EAAU,EACa,EAAE;IACzB,IAAI,YAAY,GAA0B,IAAI,CAAA;IAE9C,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE;QACvB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE;YACzD,YAAY,GAAG,IAAI,CAAA;YACnB,OAAO,KAAK,CAAA,CAAC,iBAAiB;SAC/B;QACD,IAAI,YAAY,EAAE;YAChB,OAAO,KAAK,CAAA;SACb;QACD,OAAO,IAAI,CAAA,CAAC,qBAAqB;IACnC,CAAC,CAAC,CAAA;IACF,OAAO,YAAY,CAAA;AACrB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,GAAmB,EACnB,KAAuB,EACf,EAAE;IACV,IAAI,QAAQ,GAAG,IAAI,CAAA;IACnB,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;QACvC,QAAQ,GAAG,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;KAChD;IACD,OAAO,oCACL,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EACpC,SAAS,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;AACjD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,KAA4B,EAC5B,IAAoB,EACpB,EAAE;IACF,MAAM,eAAe,GAAG,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;IAC3D,MAAM,WAAW,GAAG,eAAe,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAA;IACpD,IAAI,cAAc,GAAG,EAAE,CAAA;IACvB,IAAI,WAAW,EAAE;QACf,cAAc,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;KACvD;IACD,OAAO,oCACL,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EACpC,SAAS,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAA;AACrC,CAAC,CAAA"}
@@ -31,9 +31,6 @@ export const changeOperationAlias = (operation) => {
31
31
  case 'set_attrs': {
32
32
  return 'Updated';
33
33
  }
34
- case 'wrap_with_node': {
35
- return 'Inserted';
36
- }
37
34
  default: {
38
35
  return 'null';
39
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tracking.js","sourceRoot":"","sources":["../../../src/lib/tracking.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAqBH,MAAM,CAAC,MAAM,UAAU,GAAe,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;IAC3E,IAAI,MAAM,CAAC,EAAE,EAAE;QACb,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE;YAChB,OAAO,EAAE,OAAO;YAChB,aAAa,EAAE,QAAQ;YACvB,WAAW,EAAE,MAAM;YACnB,UAAU,EAAE,KAAK;YACjB,UAAU,EAAE,KAAK;SAClB,CAAC,CAAA;KACH;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,SAAiB,EAAU,EAAE;IAChE,QAAQ,SAAS,EAAE;QACjB,KAAK,QAAQ,CAAC,CAAC;YACb,OAAO,SAAS,CAAA;SACjB;QACD,KAAK,QAAQ,CAAC,CAAC;YACb,OAAO,UAAU,CAAA;SAClB;QACD,KAAK,WAAW,CAAC,CAAC;YAChB,OAAO,SAAS,CAAA;SACjB;QACD,KAAK,gBAAgB,CAAC,CAAC;YACrB,OAAO,UAAU,CAAA;SAClB;QACD,OAAO,CAAC,CAAC;YACP,OAAO,MAAM,CAAA;SACd;KACF;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"tracking.js","sourceRoot":"","sources":["../../../src/lib/tracking.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAqBH,MAAM,CAAC,MAAM,UAAU,GAAe,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;IAC3E,IAAI,MAAM,CAAC,EAAE,EAAE;QACb,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE;YAChB,OAAO,EAAE,OAAO;YAChB,aAAa,EAAE,QAAQ;YACvB,WAAW,EAAE,MAAM;YACnB,UAAU,EAAE,KAAK;YACjB,UAAU,EAAE,KAAK;SAClB,CAAC,CAAA;KACH;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,SAAiB,EAAU,EAAE;IAChE,QAAQ,SAAS,EAAE;QACjB,KAAK,QAAQ,CAAC,CAAC;YACb,OAAO,SAAS,CAAA;SACjB;QACD,KAAK,QAAQ,CAAC,CAAC;YACb,OAAO,UAAU,CAAA;SAClB;QACD,KAAK,WAAW,CAAC,CAAC;YAChB,OAAO,SAAS,CAAA;SACjB;QACD,OAAO,CAAC,CAAC;YACP,OAAO,MAAM,CAAA;SACd;KACF;AACH,CAAC,CAAA"}
@@ -1,17 +1,32 @@
1
+ export const getNodeTextContent = (node) => {
2
+ let textContent = '';
3
+ // Traverse the node and its descendants
4
+ node.forEach((child) => {
5
+ if (child.isText) {
6
+ // If the child is a text node, add its text content
7
+ textContent += child.text;
8
+ }
9
+ else {
10
+ // If the child is not a text node, recursively collect text content
11
+ textContent += getNodeTextContent(child);
12
+ }
13
+ });
14
+ return textContent;
15
+ };
16
+ export const findPluginByKey = (state, keyName) => {
17
+ for (let i = 0; i < state.plugins.length; i++) {
18
+ const plugin = state.plugins[i];
19
+ if (plugin.key === keyName + '$') {
20
+ return plugin;
21
+ }
22
+ }
23
+ return null;
24
+ };
1
25
  export const getParentNode = (state, pos) => {
2
26
  const resolvedPos = state.doc.resolve(pos);
3
27
  for (let depth = resolvedPos.depth; depth > 0; depth--) {
4
28
  const parent = resolvedPos.node(depth);
5
- if (parent.isText === false) {
6
- if (parent.type == state.schema.nodes.paragraph) {
7
- const grandParent = resolvedPos.node(depth - 1);
8
- if (grandParent.type == state.schema.nodes.footnote) {
9
- return grandParent;
10
- }
11
- else {
12
- return parent;
13
- }
14
- }
29
+ if (parent.isTextblock === false) {
15
30
  return parent;
16
31
  }
17
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AAaA,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAkB,EAAE,GAAW,EAAE,EAAE;IAC/D,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAE1C,KAAK,IAAI,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE;QACtD,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACtC,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,EAAE;YAC3B,IAAI,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE;gBAC/C,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;gBAC/C,IAAI,WAAW,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE;oBACnD,OAAO,WAAW,CAAA;iBACnB;qBAAM;oBACL,OAAO,MAAM,CAAA;iBACd;aACF;YACD,OAAO,MAAM,CAAA;SACd;KACF;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAA"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AAkBA,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAAoB,EAAE,EAAE;IACzD,IAAI,WAAW,GAAG,EAAE,CAAA;IAEpB,wCAAwC;IACxC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACrB,IAAI,KAAK,CAAC,MAAM,EAAE;YAChB,oDAAoD;YACpD,WAAW,IAAI,KAAK,CAAC,IAAI,CAAA;SAC1B;aAAM;YACL,oEAAoE;YACpE,WAAW,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAA;SACzC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,KAA4B,EAC5B,OAAe,EACQ,EAAE;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC7C,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAmB,CAAA;QAEjD,IAAI,MAAM,CAAC,GAAG,KAAK,OAAO,GAAG,GAAG,EAAE;YAChC,OAAO,MAAM,CAAA;SACd;KACF;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAkB,EAAE,GAAW,EAAE,EAAE;IAC/D,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAE1C,KAAK,IAAI,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE;QACtD,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACtC,IAAI,MAAM,CAAC,WAAW,KAAK,KAAK,EAAE;YAChC,OAAO,MAAM,CAAA;SACd;KACF;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAA"}
@@ -9,14 +9,17 @@
9
9
  *
10
10
  * All portions of the code written by Atypon Systems LLC are Copyright (c) 2024 Atypon Systems LLC. All Rights Reserved.
11
11
  */
12
- import { NodeAttrChange, NodeChange, TextChange } from '@manuscripts/track-changes-plugin';
13
- interface SnippetData {
14
- operation: string;
15
- nodeName: string;
16
- content: string | null;
17
- isEquation?: boolean;
12
+ import { Comment, CommentAttrs } from '@manuscripts/body-editor';
13
+ import React from 'react';
14
+ interface CommentCardProps {
15
+ comment: Comment;
16
+ isReply: boolean;
17
+ numOfReplies: number;
18
+ isNew: boolean;
19
+ isEndOfThread: boolean;
20
+ onSave: (comment: CommentAttrs) => void;
21
+ onDelete: (id: string) => void;
22
+ onSelect: () => void;
18
23
  }
19
- export declare const handleTextChange: (suggestion: TextChange, view: any, dataTracked: any) => SnippetData | null;
20
- export declare const handleNodeChange: (suggestion: NodeChange | NodeAttrChange, view: any, doc: any, dataTracked: any) => SnippetData | null;
21
- export declare const handleUnknownChange: () => SnippetData;
24
+ export declare const CommentCard: React.FC<CommentCardProps>;
22
25
  export {};
@@ -11,12 +11,13 @@
11
11
  */
12
12
  import { CommentAttrs } from '@manuscripts/body-editor';
13
13
  import React from 'react';
14
- import { CommentTree } from '../../lib/comments';
14
+ import { Thread } from '../../lib/comments';
15
15
  export interface CommentThreadProps {
16
- tree: CommentTree;
16
+ thread: Thread;
17
17
  isSelected: boolean;
18
18
  onSelect: () => void;
19
19
  onSave: (comment: CommentAttrs) => void;
20
20
  onDelete: (id: string) => void;
21
+ insertCommentReply: (target: string, contents: string) => void;
21
22
  }
22
23
  export declare const CommentThread: React.ForwardRefExoticComponent<CommentThreadProps & React.RefAttributes<HTMLDivElement>>;
@@ -9,36 +9,10 @@
9
9
  *
10
10
  * All portions of the code written by Atypon Systems LLC are Copyright (c) 2024 Atypon Systems LLC. All Rights Reserved.
11
11
  */
12
- import { renderMath } from '@manuscripts/body-editor';
13
- import purify from 'dompurify';
14
- import React, { useEffect, useRef } from 'react';
15
- import styled from 'styled-components';
16
- const SnippetContent = ({ content, isEquation }) => {
17
- const contentRef = useRef(null);
18
- useEffect(() => {
19
- if (contentRef.current && content) {
20
- contentRef.current.innerHTML = purify.sanitize(': ' + content) || '';
21
- if (isEquation) {
22
- renderMath(contentRef.current);
23
- }
24
- }
25
- }, [content, isEquation]);
26
- return React.createElement(StyledContent, { ref: contentRef, "data-mathjax": isEquation });
27
- };
28
- export default SnippetContent;
29
- const StyledContent = styled.span `
30
- color: #353535;
31
- font-family: Lato, sans-serif;
32
- font-size: 12px;
33
- font-weight: 400;
34
- line-height: 16px;
35
-
36
- &[data-mathjax='true'] {
37
- text-overflow: unset;
38
- }
39
-
40
- .inspector-list-item::after {
41
- content: '...';
42
- }
43
- `;
44
- //# sourceMappingURL=SnippetContent.js.map
12
+ import React from 'react';
13
+ interface DeleteCommentConfirmationProps {
14
+ onCancel: () => void;
15
+ onConfirm: () => void;
16
+ }
17
+ export declare const DeleteCommentConfirmation: React.FC<DeleteCommentConfirmationProps>;
18
+ export {};
@@ -10,9 +10,9 @@
10
10
  * All portions of the code written by Atypon Systems LLC are Copyright (c) 2024 Atypon Systems LLC. All Rights Reserved.
11
11
  */
12
12
  import React from 'react';
13
- interface ContentProps {
14
- content: string;
15
- isEquation?: boolean;
13
+ interface ReplyBoxProps {
14
+ insertCommentReply: (target: string, contents: string) => void;
15
+ commentID: string;
16
16
  }
17
- declare const SnippetContent: React.FC<ContentProps>;
18
- export default SnippetContent;
17
+ export declare const ReplyBox: React.FC<ReplyBoxProps>;
18
+ export {};