@manuscripts/body-editor 3.12.67 → 3.13.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 (289) hide show
  1. package/dist/cjs/components/toolbar/type-selector/styles.js +2 -1
  2. package/dist/cjs/versions.js +1 -1
  3. package/dist/es/components/toolbar/type-selector/styles.js +2 -1
  4. package/dist/es/versions.js +1 -1
  5. package/dist/types/components/toolbar/type-selector/styles.d.ts +2 -2
  6. package/dist/types/lib/footnotes.d.ts +4 -2
  7. package/dist/types/lib/utils.d.ts +5 -4
  8. package/dist/types/versions.d.ts +1 -1
  9. package/package.json +37 -36
  10. package/{dist/es/lib/statistics.js → src/__mocks__/styleMock.ts} +2 -14
  11. package/src/assets.ts +20 -0
  12. package/src/classes/collabProvider.ts +38 -0
  13. package/src/clipboard.ts +54 -0
  14. package/src/commands.ts +2109 -0
  15. package/src/components/ChangeHandlingForm.tsx +54 -0
  16. package/src/components/LanguageDropdown/index.tsx +343 -0
  17. package/src/components/affiliations/AffiliationForm.tsx +238 -0
  18. package/src/components/affiliations/AffiliationItem.tsx +151 -0
  19. package/src/components/affiliations/AffiliationList.tsx +71 -0
  20. package/src/components/affiliations/AffiliationsModal.tsx +676 -0
  21. package/src/components/affiliations/AffiliationsPanel.tsx +76 -0
  22. package/src/components/affiliations/CreateAffiliationModal.tsx +135 -0
  23. package/src/components/authors/AuthorDetailsForm.tsx +438 -0
  24. package/src/components/authors/AuthorList.tsx +81 -0
  25. package/src/components/authors/AuthorsModal.tsx +642 -0
  26. package/src/components/authors/AuthorsPanel.tsx +69 -0
  27. package/src/components/authors/CreateAuthorModal.tsx +172 -0
  28. package/src/components/authors/CreditDrawer.tsx +71 -0
  29. package/src/components/authors/DraggableAuthor.tsx +228 -0
  30. package/src/components/authors/useManageAffiliations.tsx +77 -0
  31. package/src/components/authors/useManageCredit.tsx +63 -0
  32. package/src/components/authors-affiliations/AuthorsAndAffiliationsModals.tsx +170 -0
  33. package/src/components/authors-affiliations/GenericPanel.tsx +164 -0
  34. package/src/components/authors-affiliations/ModalTabs.tsx +100 -0
  35. package/src/components/awards/AwardForm.tsx +338 -0
  36. package/src/components/awards/AwardModal.tsx +120 -0
  37. package/src/components/awards/DeleteAwardDiaolog.tsx +52 -0
  38. package/src/components/dialog/ConfirmationDialog.tsx +131 -0
  39. package/src/components/form/CreateModalStyles.tsx +37 -0
  40. package/src/components/form/FormFooter.tsx +54 -0
  41. package/src/components/form/FormPlaceholder.tsx +71 -0
  42. package/src/components/form/ModalFormActions.tsx +88 -0
  43. package/src/components/form/UnsavedLabel.tsx +49 -0
  44. package/src/components/hooks/use-debounce.ts +56 -0
  45. package/src/components/hooks/useAffiliationShowsErrorIndicator.ts +51 -0
  46. package/src/components/hooks/useAuthorShowsErrorIndicator.ts +73 -0
  47. package/src/components/keyboard-shortcuts-modal/FormattedShortcut.tsx +56 -0
  48. package/src/components/keyboard-shortcuts-modal/KeyboardShortcutsModal.tsx +283 -0
  49. package/src/components/keyboard-shortcuts-modal/keyboard-shortcuts.ts +304 -0
  50. package/src/components/keywords/AddKeywordInline.tsx +284 -0
  51. package/src/components/keywords/DeleteKeywordDialog.tsx +52 -0
  52. package/src/components/modal-drawer/GenericDrawer.tsx +65 -0
  53. package/src/components/modal-drawer/GenericDrawerGroup.tsx +125 -0
  54. package/src/components/outline/DraggableTree.tsx +438 -0
  55. package/src/components/outline/ManuscriptOutline.tsx +127 -0
  56. package/src/components/outline/Outline.tsx +141 -0
  57. package/src/components/references/BibliographyItemSource.ts +80 -0
  58. package/src/components/references/CitationEditor.tsx +301 -0
  59. package/src/components/references/CitationViewer.tsx +62 -0
  60. package/src/components/references/ImportBibliographyForm.tsx +232 -0
  61. package/src/components/references/ImportBibliographyModal.tsx +159 -0
  62. package/src/components/references/ReferenceForm/PersonDropDown.tsx +93 -0
  63. package/src/components/references/ReferenceForm/ReferenceForm.tsx +701 -0
  64. package/src/components/references/ReferenceForm/config.ts +133 -0
  65. package/src/components/references/ReferenceForm/styled-components.ts +156 -0
  66. package/src/components/references/ReferenceLine.tsx +43 -0
  67. package/src/components/references/ReferenceSearch.tsx +163 -0
  68. package/src/components/references/ReferenceSearchResults.tsx +113 -0
  69. package/src/components/references/ReferenceSearchResultsPlaceholder.tsx +71 -0
  70. package/src/components/references/ReferenceSearchSection.tsx +124 -0
  71. package/src/components/references/ReferencesEditor.tsx +61 -0
  72. package/src/components/references/ReferencesModal.tsx +352 -0
  73. package/src/components/references/SearchInput.tsx +98 -0
  74. package/src/components/toolbar/InsertEmbedDialog.tsx +222 -0
  75. package/src/components/toolbar/InsertTableDialog.tsx +208 -0
  76. package/src/components/toolbar/ListMenuItem.tsx +203 -0
  77. package/src/components/toolbar/helpers.ts +547 -0
  78. package/src/components/toolbar/type-selector/OptionComponent.tsx +89 -0
  79. package/src/components/toolbar/type-selector/TypeSelector.tsx +157 -0
  80. package/src/components/toolbar/type-selector/styles.ts +79 -0
  81. package/src/components/views/CrossReferenceItems.tsx +199 -0
  82. package/src/components/views/DeleteEmbedDialog.tsx +83 -0
  83. package/src/components/views/DeleteFootnoteDialog.tsx +54 -0
  84. package/src/components/views/FigureDropdown.tsx +423 -0
  85. package/src/components/views/FootnotesSelector.tsx +255 -0
  86. package/src/components/views/InsertSpecialCharacter.tsx +245 -0
  87. package/src/components/views/LinkForm.tsx +220 -0
  88. package/src/components/views/TableCellContextMenu.tsx +241 -0
  89. package/src/configs/ManuscriptsEditor.ts +140 -0
  90. package/src/configs/editor-plugins.ts +119 -0
  91. package/src/configs/editor-views.ts +139 -0
  92. package/src/icons.ts +62 -0
  93. package/src/index.ts +65 -0
  94. package/src/keys/highlight.ts +65 -0
  95. package/src/keys/index.ts +33 -0
  96. package/src/keys/keyword.ts +69 -0
  97. package/src/keys/list.ts +156 -0
  98. package/src/keys/misc.ts +112 -0
  99. package/src/keys/title.ts +221 -0
  100. package/src/lib/__tests__/__fixtures__/doc.json +388 -0
  101. package/src/lib/__tests__/__snapshots__/paste.test.ts.snap +24 -0
  102. package/src/lib/__tests__/authors.test.ts +202 -0
  103. package/src/lib/__tests__/helpers.test.ts +46 -0
  104. package/src/lib/__tests__/paste.test.ts +57 -0
  105. package/src/lib/__tests__/plugins.test.ts +176 -0
  106. package/src/lib/__tests__/url.test.ts +31 -0
  107. package/src/lib/array-reducer.ts +68 -0
  108. package/src/lib/authors-and-affiliations.ts +81 -0
  109. package/src/lib/authors.ts +67 -0
  110. package/src/lib/capabilities.ts +55 -0
  111. package/src/lib/codemirror.ts +37 -0
  112. package/src/lib/comments.ts +123 -0
  113. package/src/lib/context-menu.ts +745 -0
  114. package/src/lib/copy.ts +30 -0
  115. package/src/lib/crossref.ts +90 -0
  116. package/src/lib/dnd.ts +29 -0
  117. package/src/lib/doc.ts +167 -0
  118. package/src/lib/dompurify.ts +28 -0
  119. package/src/lib/files.ts +180 -0
  120. package/src/lib/footnotes.ts +83 -0
  121. package/src/lib/get-media-type.ts +105 -0
  122. package/src/lib/helpers.ts +199 -0
  123. package/src/lib/hierarchy.ts +117 -0
  124. package/src/lib/languages.ts +37 -0
  125. package/src/lib/lists.ts +56 -0
  126. package/src/lib/math.ts +111 -0
  127. package/src/lib/media.ts +334 -0
  128. package/src/lib/navigation-utils.ts +235 -0
  129. package/src/lib/normalize.ts +70 -0
  130. package/src/lib/paste.ts +304 -0
  131. package/src/lib/placeholder.ts +32 -0
  132. package/src/lib/platform.ts +18 -0
  133. package/src/lib/plugins.ts +22 -0
  134. package/src/lib/popper.ts +180 -0
  135. package/src/lib/position-menu.ts +184 -0
  136. package/src/lib/references.ts +94 -0
  137. package/src/lib/template.ts +29 -0
  138. package/src/lib/track-changes-utils.ts +34 -0
  139. package/{dist/types/lib/statistics.d.ts → src/lib/url.ts} +11 -8
  140. package/src/lib/use-do-with-debounce.ts +39 -0
  141. package/src/lib/utils.ts +323 -0
  142. package/src/lib/view.ts +100 -0
  143. package/src/menus.tsx +684 -0
  144. package/src/node-type-icons.tsx +83 -0
  145. package/src/plugins/__tests__/__fixtures__/deleted-footnote.json +140 -0
  146. package/src/plugins/__tests__/__fixtures__/inserted-footnote.json +153 -0
  147. package/src/plugins/__tests__/footnotes.test.ts +67 -0
  148. package/src/plugins/accessibility_element.ts +219 -0
  149. package/src/plugins/add-subtitle.ts +102 -0
  150. package/src/plugins/affiliations.ts +136 -0
  151. package/src/plugins/alt-titles.ts +219 -0
  152. package/src/plugins/bibliography.ts +235 -0
  153. package/src/plugins/comments.ts +328 -0
  154. package/src/plugins/cross-references.ts +70 -0
  155. package/src/plugins/detect-inconsistency/detect-inconsistency-utils.ts +102 -0
  156. package/src/plugins/detect-inconsistency/index.ts +55 -0
  157. package/src/plugins/detect-inconsistency/validators.ts +283 -0
  158. package/src/plugins/doi.ts +66 -0
  159. package/src/plugins/editor-props.ts +39 -0
  160. package/src/plugins/elements.ts +60 -0
  161. package/src/plugins/footnotes.ts +298 -0
  162. package/src/plugins/link.ts +53 -0
  163. package/src/plugins/lock-body.ts +136 -0
  164. package/src/plugins/move-node.ts +55 -0
  165. package/src/plugins/objects.ts +125 -0
  166. package/src/plugins/paragraphs.ts +90 -0
  167. package/src/plugins/persist.ts +64 -0
  168. package/src/plugins/persistent-cursor.ts +66 -0
  169. package/src/plugins/placeholder.ts +219 -0
  170. package/src/plugins/prevent-empty.ts +50 -0
  171. package/src/plugins/search-replace/index.ts +157 -0
  172. package/src/plugins/search-replace/lib.ts +95 -0
  173. package/src/plugins/section_category.ts +212 -0
  174. package/src/plugins/section_title/autocompletion.ts +87 -0
  175. package/src/plugins/section_title/index.ts +105 -0
  176. package/src/plugins/selected-suggestion.ts +243 -0
  177. package/src/plugins/tables-cursor-fix.ts +143 -0
  178. package/src/plugins/translations.ts +263 -0
  179. package/src/rules.ts +60 -0
  180. package/src/selection.ts +112 -0
  181. package/src/testing/default-capabilities.ts +48 -0
  182. package/src/testing/default-editor-data.ts +73 -0
  183. package/src/testing/empty-editor-doc.json +62 -0
  184. package/src/testing/polyfill-dom.ts +43 -0
  185. package/src/testing/section-categories.json +161 -0
  186. package/src/testing/setup-editor.ts +55 -0
  187. package/src/tests.ts +42 -0
  188. package/src/toolbar.tsx +259 -0
  189. package/src/types/@citation-js/core.d.ts +16 -0
  190. package/src/types/@citation-js/index.d.ts +16 -0
  191. package/src/types/@citation-js/plugin-bibtex.d.ts +16 -0
  192. package/src/types/@citation-js/plugin-csl.d.ts +16 -0
  193. package/src/types/@citation-js/plugin-doi.d.ts +16 -0
  194. package/src/types/@citation-js/plugin-enw.d.ts +16 -0
  195. package/src/types/@citation-js/plugin-pubmed.d.ts +16 -0
  196. package/src/types/@citation-js/plugin-ris.d.ts +16 -0
  197. package/src/types/citeproc.d.ts +124 -0
  198. package/src/types/css.d.ts +16 -0
  199. package/src/types/json.d.ts +17 -0
  200. package/src/types/prosemirror-dev-tools.d.ts +16 -0
  201. package/src/types/prosemirror-dropcursor.d.ts +16 -0
  202. package/src/types/styled-components.d.ts +23 -0
  203. package/src/types.ts +49 -0
  204. package/src/useEditor.ts +244 -0
  205. package/src/versions.ts +3 -0
  206. package/src/views/ReactSubView.tsx +145 -0
  207. package/src/views/abstracts.ts +46 -0
  208. package/src/views/accessibility_element.ts +86 -0
  209. package/src/views/affiliations.ts +254 -0
  210. package/src/views/alt_title.ts +85 -0
  211. package/src/views/alt_titles_section.ts +97 -0
  212. package/src/views/attachment.ts +160 -0
  213. package/src/views/attachments.ts +72 -0
  214. package/src/views/author_notes.ts +96 -0
  215. package/src/views/award.ts +194 -0
  216. package/src/views/awards.ts +59 -0
  217. package/src/views/base_node_view.ts +85 -0
  218. package/src/views/bibliography_element.ts +313 -0
  219. package/src/views/block_view.ts +100 -0
  220. package/src/views/blockquote_element.ts +26 -0
  221. package/src/views/blockquote_element_editable.ts +24 -0
  222. package/src/views/box_element.ts +33 -0
  223. package/src/views/caption.ts +37 -0
  224. package/src/views/caption_title.ts +33 -0
  225. package/src/views/citation.ts +67 -0
  226. package/src/views/citation_editable.ts +312 -0
  227. package/src/views/contributors.ts +341 -0
  228. package/src/views/creators.ts +82 -0
  229. package/src/views/cross_reference.ts +74 -0
  230. package/src/views/cross_reference_editable.ts +113 -0
  231. package/src/views/editable_block.ts +141 -0
  232. package/src/views/embed.ts +345 -0
  233. package/src/views/empty.ts +26 -0
  234. package/src/views/equation.ts +47 -0
  235. package/src/views/equation_editable.ts +84 -0
  236. package/src/views/equation_element.ts +29 -0
  237. package/src/views/equation_element_editable.ts +21 -0
  238. package/src/views/figure.ts +84 -0
  239. package/src/views/figure_editable.ts +361 -0
  240. package/src/views/figure_element.ts +197 -0
  241. package/src/views/figure_element_editable.ts +21 -0
  242. package/src/views/footnote.ts +236 -0
  243. package/src/views/footnotes_element.ts +54 -0
  244. package/src/views/general_table_footnote.ts +140 -0
  245. package/src/views/hero_image.ts +76 -0
  246. package/src/views/hero_image_editable.ts +21 -0
  247. package/src/views/image_element.ts +373 -0
  248. package/src/views/image_element_editable.ts +21 -0
  249. package/src/views/inline_equation.ts +47 -0
  250. package/src/views/inline_equation_editable.ts +70 -0
  251. package/src/views/inline_footnote.ts +264 -0
  252. package/src/views/inline_footnote_editable.ts +20 -0
  253. package/src/views/keyword.ts +127 -0
  254. package/src/views/keyword_group.ts +109 -0
  255. package/src/views/link.ts +27 -0
  256. package/src/views/link_editable.ts +169 -0
  257. package/src/views/list.ts +46 -0
  258. package/src/views/list_item.ts +26 -0
  259. package/src/views/paragraph.ts +26 -0
  260. package/src/views/paragraph_editable.ts +21 -0
  261. package/src/views/placeholder.ts +35 -0
  262. package/src/views/placeholder_element.ts +38 -0
  263. package/src/views/placeholder_element_editable.ts +21 -0
  264. package/src/views/pullquote_element.ts +106 -0
  265. package/src/views/pullquote_element_editable.ts +24 -0
  266. package/src/views/quote_image_editable.ts +84 -0
  267. package/src/views/section.ts +64 -0
  268. package/src/views/section_label.ts +20 -0
  269. package/src/views/section_title.ts +87 -0
  270. package/src/views/section_title_editable.ts +21 -0
  271. package/src/views/subtitle.ts +42 -0
  272. package/src/views/subtitle_editable.ts +20 -0
  273. package/src/views/subtitles.ts +34 -0
  274. package/src/views/subtitles_editable.ts +21 -0
  275. package/src/views/supplement.ts +236 -0
  276. package/src/views/supplement_editable.ts +20 -0
  277. package/src/views/supplements.ts +65 -0
  278. package/src/views/supplements_editable.ts +21 -0
  279. package/src/views/table_cell.ts +150 -0
  280. package/src/views/table_element.ts +33 -0
  281. package/src/views/table_element_editable.ts +21 -0
  282. package/src/views/table_element_footer.ts +41 -0
  283. package/src/views/title.ts +46 -0
  284. package/src/views/title_editable.ts +20 -0
  285. package/src/views/trans_graphical_abstract.ts +55 -0
  286. package/src/views/trans_graphical_abstract_editable.ts +21 -0
  287. package/src/views/translated_abstract.ts +53 -0
  288. package/src/views/translated_abstract_editable.ts +21 -0
  289. package/dist/cjs/lib/statistics.js +0 -38
@@ -0,0 +1,388 @@
1
+ {
2
+ "type": "manuscript",
3
+ "attrs": {
4
+ "id": "manuscript",
5
+ "doi": "",
6
+ "prototype": "",
7
+ "primaryLanguageCode": "",
8
+ "articleType": "research-article"
9
+ },
10
+ "content": [
11
+ {
12
+ "type": "title",
13
+ "attrs": {
14
+ "id": "titles",
15
+ "placeholder": "Insert title here..."
16
+ }
17
+ },
18
+ {
19
+ "type": "abstracts"
20
+ },
21
+ {
22
+ "type": "body",
23
+ "content": [
24
+ {
25
+ "type": "section",
26
+ "attrs": {
27
+ "id": "empty-section-1",
28
+ "category": "",
29
+ "titleSuppressed": false
30
+ },
31
+ "content": [
32
+ {
33
+ "type": "section_title",
34
+ "content": [
35
+ {
36
+ "type": "text",
37
+ "text": "An empty section"
38
+ }
39
+ ]
40
+ }
41
+ ]
42
+ },
43
+ {
44
+ "type": "section",
45
+ "attrs": {
46
+ "id": "empty-section-2",
47
+ "category": "",
48
+ "titleSuppressed": false
49
+ },
50
+ "content": [
51
+ {
52
+ "type": "section_title",
53
+ "content": [
54
+ {
55
+ "type": "text",
56
+ "text": "An empty section"
57
+ }
58
+ ]
59
+ }
60
+ ]
61
+ },
62
+ {
63
+ "type": "section",
64
+ "attrs": {
65
+ "id": "empty-section-3",
66
+ "category": "",
67
+ "titleSuppressed": false
68
+ },
69
+ "content": [
70
+ {
71
+ "type": "section_title",
72
+ "content": [
73
+ {
74
+ "type": "text",
75
+ "text": "An empty section"
76
+ }
77
+ ]
78
+ }
79
+ ]
80
+ },
81
+ {
82
+ "type": "section",
83
+ "attrs": {
84
+ "id": "section-with-empty-paragraphs-1",
85
+ "category": "",
86
+ "titleSuppressed": false
87
+ },
88
+ "content": [
89
+ {
90
+ "type": "section_title",
91
+ "content": [
92
+ {
93
+ "type": "text",
94
+ "text": "A section containing empty paragraphs"
95
+ }
96
+ ]
97
+ },
98
+ {
99
+ "type": "paragraph",
100
+ "attrs": {
101
+ "id": "empty-paragraph-1",
102
+ "placeholder": ""
103
+ }
104
+ },
105
+ {
106
+ "type": "paragraph",
107
+ "attrs": {
108
+ "id": "empty-paragraph-2",
109
+ "placeholder": ""
110
+ }
111
+ }
112
+ ]
113
+ },
114
+ {
115
+ "type": "section",
116
+ "attrs": {
117
+ "id": "section-with-empty-paragraphs-2",
118
+ "category": "",
119
+ "titleSuppressed": false
120
+ },
121
+ "content": [
122
+ {
123
+ "type": "section_title",
124
+ "content": [
125
+ {
126
+ "type": "text",
127
+ "text": "A section containing empty paragraphs"
128
+ }
129
+ ]
130
+ },
131
+ {
132
+ "type": "paragraph",
133
+ "attrs": {
134
+ "id": "empty-paragraph-3",
135
+ "placeholder": ""
136
+ }
137
+ },
138
+ {
139
+ "type": "paragraph",
140
+ "attrs": {
141
+ "id": "empty-paragraph-4",
142
+ "placeholder": ""
143
+ }
144
+ }
145
+ ]
146
+ },
147
+ {
148
+ "type": "section",
149
+ "attrs": {
150
+ "id": "section-with-empty-paragraphs-3",
151
+ "category": "",
152
+ "titleSuppressed": false
153
+ },
154
+ "content": [
155
+ {
156
+ "type": "section_title",
157
+ "content": [
158
+ {
159
+ "type": "text",
160
+ "text": "A section containing empty paragraphs"
161
+ }
162
+ ]
163
+ },
164
+ {
165
+ "type": "paragraph",
166
+ "attrs": {
167
+ "id": "empty-paragraph-5",
168
+ "placeholder": ""
169
+ }
170
+ },
171
+ {
172
+ "type": "paragraph",
173
+ "attrs": {
174
+ "id": "empty-paragraph-6",
175
+ "paragraphStyle": "",
176
+ "placeholder": ""
177
+ }
178
+ }
179
+ ]
180
+ },
181
+ {
182
+ "type": "section",
183
+ "attrs": {
184
+ "id": "section-with-list",
185
+ "category": "",
186
+ "titleSuppressed": false
187
+ },
188
+ "content": [
189
+ {
190
+ "type": "section_title",
191
+ "content": [
192
+ {
193
+ "type": "text",
194
+ "text": "A section containing a list"
195
+ }
196
+ ]
197
+ },
198
+ {
199
+ "type": "list",
200
+ "attrs": {
201
+ "id": "list",
202
+ "listStyleType": "order"
203
+ },
204
+ "content": [
205
+ {
206
+ "type": "list_item",
207
+ "attrs": {
208
+ "placeholder": "List item"
209
+ },
210
+ "content": [
211
+ {
212
+ "type": "paragraph",
213
+ "attrs": {
214
+ "placeholder": ""
215
+ },
216
+ "content": [
217
+ {
218
+ "type": "text",
219
+ "text": "Test "
220
+ },
221
+ {
222
+ "type": "inline_equation",
223
+ "attrs": {
224
+ "contents": "",
225
+ "format": null
226
+ }
227
+ }
228
+ ]
229
+ }
230
+ ]
231
+ }
232
+ ]
233
+ }
234
+ ]
235
+ },
236
+ {
237
+ "type": "section",
238
+ "attrs": {
239
+ "id": "section-with-figure",
240
+ "category": ""
241
+ },
242
+ "content": [
243
+ {
244
+ "type": "section_title",
245
+ "content": [
246
+ {
247
+ "type": "text",
248
+ "text": "A section containing a figure"
249
+ }
250
+ ]
251
+ },
252
+ {
253
+ "type": "figure_element",
254
+ "attrs": {
255
+ "id": "figure-element",
256
+ "label": ""
257
+ },
258
+ "content": [
259
+ {
260
+ "type": "figure",
261
+ "attrs": {
262
+ "id": "figure",
263
+ "src": "",
264
+ "contentType": ""
265
+ }
266
+ },
267
+ {
268
+ "type": "caption",
269
+ "attrs": {
270
+ "placeholder": "Caption..."
271
+ },
272
+ "content": [{ "type": "text_block" }]
273
+ },
274
+ {
275
+ "type": "alt_text"
276
+ },
277
+ {
278
+ "type": "long_desc"
279
+ },
280
+ {
281
+ "type": "listing",
282
+ "attrs": {
283
+ "contents": "",
284
+ "language": "",
285
+ "languageKey": "null",
286
+ "isExpanded": false,
287
+ "isExecuting": false
288
+ }
289
+ }
290
+ ]
291
+ }
292
+ ]
293
+ },
294
+ {
295
+ "type": "section",
296
+ "attrs": {
297
+ "id": "section-with-table",
298
+ "category": "",
299
+ "dataTracked": null
300
+ },
301
+ "content": [
302
+ {
303
+ "type": "section_title",
304
+ "content": [
305
+ {
306
+ "type": "text",
307
+ "text": "A section containing a table"
308
+ }
309
+ ]
310
+ },
311
+ {
312
+ "type": "table_element",
313
+ "attrs": {
314
+ "id": "table-element",
315
+ "label": "",
316
+ "dataTracked": null
317
+ },
318
+ "content": [
319
+ {
320
+ "type": "caption_title",
321
+ "attrs": {
322
+ "placeholder": "Title..."
323
+ }
324
+ },
325
+ {
326
+ "type": "table",
327
+ "attrs": {
328
+ "id": "table",
329
+ "dataTracked": null
330
+ },
331
+ "content": [
332
+ {
333
+ "type": "table_row",
334
+ "attrs": {
335
+ "dataTracked": null
336
+ },
337
+ "content": [
338
+ {
339
+ "type": "table_cell",
340
+ "content": [
341
+ {
342
+ "type": "text_block",
343
+ "content": [
344
+ {
345
+ "type": "text",
346
+ "text": "Text"
347
+ }
348
+ ]
349
+ }
350
+ ]
351
+ }
352
+ ]
353
+ }
354
+ ]
355
+ },
356
+ {
357
+ "type": "alt_text"
358
+ },
359
+ {
360
+ "type": "long_desc"
361
+ },
362
+ {
363
+ "type": "listing",
364
+ "attrs": {
365
+ "contents": "",
366
+ "language": "",
367
+ "languageKey": "null",
368
+ "isExpanded": false,
369
+ "isExecuting": false
370
+ }
371
+ }
372
+ ]
373
+ }
374
+ ]
375
+ }
376
+ ]
377
+ },
378
+ {
379
+ "type": "backmatter",
380
+ "attrs": {
381
+ "placeholder": " "
382
+ }
383
+ },
384
+ {
385
+ "type": "comments"
386
+ }
387
+ ]
388
+ }
@@ -0,0 +1,24 @@
1
+ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
+
3
+ exports[`transformPasted handler > transform-pasted 1`] = `
4
+ Object {
5
+ "content": Array [
6
+ Object {
7
+ "attrs": Object {
8
+ "dataTracked": null,
9
+ "id": null,
10
+ "placeholder": "",
11
+ },
12
+ "content": Array [
13
+ Object {
14
+ "text": "These rhythmic patterns then sum together to create the signals that muscles need to carry out the movements.",
15
+ "type": "text",
16
+ },
17
+ ],
18
+ "type": "paragraph",
19
+ },
20
+ ],
21
+ "openEnd": 1,
22
+ "openStart": 1,
23
+ }
24
+ `;
@@ -0,0 +1,202 @@
1
+ /*!
2
+ * © 2019 Atypon Systems LLC
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import {
18
+ AffiliationAttrs,
19
+ affiliationLabel,
20
+ authorComparator,
21
+ ContributorAttrs,
22
+ initials,
23
+ } from '../authors'
24
+
25
+ describe('authorComparator', () => {
26
+ it('should sort authors based on priority', () => {
27
+ const contribs: ContributorAttrs[] = [
28
+ {
29
+ id: 'MPContributor:x',
30
+ priority: 1,
31
+ role: 'author',
32
+ affiliationIDs: [],
33
+ degrees: [],
34
+ isCorresponding: false,
35
+ isJointContributor: false,
36
+ ORCID: '',
37
+ email: '',
38
+ correspIDs: [],
39
+ footnoteIDs: [],
40
+ prefix: '',
41
+ },
42
+ {
43
+ id: 'MPContributor:y',
44
+ priority: 0,
45
+ role: 'author',
46
+ affiliationIDs: [],
47
+ degrees: [],
48
+ isCorresponding: false,
49
+ isJointContributor: false,
50
+ ORCID: '',
51
+ email: '',
52
+ correspIDs: [],
53
+ footnoteIDs: [],
54
+ prefix: '',
55
+ },
56
+ {
57
+ id: 'MPContributor:z',
58
+ priority: 2,
59
+ role: 'author',
60
+ affiliationIDs: [],
61
+ degrees: [],
62
+ isCorresponding: false,
63
+ isJointContributor: false,
64
+ ORCID: '',
65
+ email: '',
66
+ correspIDs: [],
67
+ footnoteIDs: [],
68
+ prefix: '',
69
+ },
70
+ ]
71
+ contribs.sort(authorComparator)
72
+ expect(contribs.map((c) => c.id)).toEqual([
73
+ 'MPContributor:y',
74
+ 'MPContributor:x',
75
+ 'MPContributor:z',
76
+ ])
77
+ })
78
+ })
79
+
80
+ describe('initials', () => {
81
+ it('initials exist when "given" is present with more than one given name', () => {
82
+ const contributor = {
83
+ given: 'Derek Gilbert',
84
+ family: 'Dilbert',
85
+ } as ContributorAttrs
86
+ expect(initials(contributor)).toEqual('D.G.')
87
+ })
88
+
89
+ it('initials empty when no given name is present', () => {
90
+ const contributor = {
91
+ family: 'Dilbert',
92
+ } as ContributorAttrs
93
+ expect(initials(contributor)).toEqual('')
94
+ })
95
+
96
+ it('initials empty when given name is empty string', () => {
97
+ const contributor = {
98
+ family: 'Dilbert',
99
+ given: '',
100
+ } as ContributorAttrs
101
+ expect(initials(contributor)).toEqual('')
102
+ })
103
+
104
+ it('ignore extra white space', () => {
105
+ const contributor = {
106
+ given: 'Derek ',
107
+ family: 'Dilbert',
108
+ } as ContributorAttrs
109
+ expect(initials(contributor)).toEqual('D.')
110
+ })
111
+ })
112
+
113
+ describe('affiliationLabel', () => {
114
+ const affiliation: AffiliationAttrs = {
115
+ id: 'MPAffiliation:aff-1',
116
+ addressLine1: '',
117
+ addressLine2: '',
118
+ addressLine3: '',
119
+ city: '',
120
+ country: 'United Kingdom',
121
+ county: '',
122
+ department: 'Dept of Examples',
123
+ email: {
124
+ href: '',
125
+ text: '',
126
+ },
127
+ institution: 'University of Examples',
128
+ postCode: '',
129
+ priority: 0,
130
+ }
131
+
132
+ it('should return the institution name and department', () => {
133
+ const result = affiliationLabel(affiliation)
134
+ expect(result).toEqual('University of Examples (Dept of Examples)')
135
+ })
136
+
137
+ it('should exclude the department if it is not present', () => {
138
+ const affiliation: AffiliationAttrs = {
139
+ id: 'MPAffiliation:aff-1',
140
+ addressLine1: '',
141
+ addressLine2: '',
142
+ addressLine3: '',
143
+ city: '',
144
+ country: 'United Kingdom',
145
+ county: '',
146
+ department: '',
147
+ email: {
148
+ href: '',
149
+ text: '',
150
+ },
151
+ institution: 'University of Examples',
152
+ postCode: '',
153
+ priority: 0,
154
+ }
155
+ const result = affiliationLabel(affiliation)
156
+ expect(result).toEqual('University of Examples')
157
+ })
158
+
159
+ it('should handle a missing institution', () => {
160
+ const affiliation: AffiliationAttrs = {
161
+ id: 'MPAffiliation:aff-1',
162
+ addressLine1: '',
163
+ addressLine2: '',
164
+ addressLine3: '',
165
+ city: '',
166
+ country: 'United Kingdom',
167
+ county: '',
168
+ department: 'Dept of Examples',
169
+ email: {
170
+ href: '',
171
+ text: '',
172
+ },
173
+ institution: '',
174
+ postCode: '',
175
+ priority: 0,
176
+ }
177
+ const result = affiliationLabel(affiliation)
178
+ expect(result).toEqual('(unknown institution)')
179
+ })
180
+
181
+ it('should have a generic label if both institution and department are missing', () => {
182
+ const affiliation: AffiliationAttrs = {
183
+ id: 'MPAffiliation:aff-1',
184
+ addressLine1: '',
185
+ addressLine2: '',
186
+ addressLine3: '',
187
+ city: '',
188
+ country: 'United Kingdom',
189
+ county: '',
190
+ department: '',
191
+ email: {
192
+ href: '',
193
+ text: '',
194
+ },
195
+ institution: '',
196
+ postCode: '',
197
+ priority: 0,
198
+ }
199
+ const result = affiliationLabel(affiliation)
200
+ expect(result).toEqual('(unknown institution)')
201
+ })
202
+ })
@@ -0,0 +1,46 @@
1
+ /*!
2
+ * © 2019 Atypon Systems LLC
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import * as lib from '../helpers'
18
+
19
+ describe('mergeSimilarItems', () => {
20
+ it('should not change the array if no items are similar', () => {
21
+ const merger = lib.mergeSimilarItems<string>(
22
+ (a, b) => a === b,
23
+ (a, b) => `${a}-${b}`
24
+ )
25
+ const init = ['one', 'two']
26
+ expect(merger(init)).toEqual(init)
27
+ })
28
+
29
+ it('should collapse any items that are similar', () => {
30
+ const merger = lib.mergeSimilarItems<string>(
31
+ () => true,
32
+ (a, b) => `${a}-${b}`
33
+ )
34
+ const init = ['one', 'two']
35
+ expect(merger(init)).toEqual(['one-two'])
36
+ })
37
+
38
+ it('should be able to collapse multiple items', () => {
39
+ const merger = lib.mergeSimilarItems<number>(
40
+ (a, b) => !!(a % 2) && !!(b % 2),
41
+ (a) => a
42
+ )
43
+ const init = [1, 2, 3, 4, 5, 6, 7, 8, 9]
44
+ expect(merger(init)).toEqual([1, 2, 4, 6, 8])
45
+ })
46
+ })