@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,259 @@
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
+ AddCommentIcon,
19
+ FileImageIcon,
20
+ LinkIcon,
21
+ OutlineBlockQuoteIcon,
22
+ OutlineEmbedIcon,
23
+ OutlinePullQuoteIcon,
24
+ ToolbarBoldIcon,
25
+ ToolbarBoxedTextIcon,
26
+ ToolbarCitationIcon,
27
+ ToolbarEquationIcon,
28
+ ToolbarFigureIcon,
29
+ ToolbarIndentIcon,
30
+ ToolbarItalicIcon,
31
+ ToolbarOrderedListIcon,
32
+ ToolbarSpecialCharactersIcon,
33
+ ToolbarSubscriptIcon,
34
+ ToolbarSuperscriptIcon,
35
+ ToolbarTableIcon,
36
+ ToolbarUnderlineIcon,
37
+ ToolbarUnindentIcon,
38
+ ToolbarUnorderedListIcon,
39
+ } from '@manuscripts/style-guide'
40
+ import { schema } from '@manuscripts/transform'
41
+ import { toggleMark } from 'prosemirror-commands'
42
+ import { EditorState } from 'prosemirror-state'
43
+ import { EditorView } from 'prosemirror-view'
44
+ import React, { ReactNode } from 'react'
45
+
46
+ import {
47
+ addInlineComment,
48
+ blockActive,
49
+ canInsert,
50
+ Dispatch,
51
+ insertBlock,
52
+ insertBoxElement,
53
+ insertEmbed,
54
+ insertInlineCitation,
55
+ insertLink,
56
+ insertList,
57
+ markActive,
58
+ } from './commands'
59
+ import {
60
+ changeIndentation,
61
+ isIndentationAllowed,
62
+ } from './components/toolbar/helpers'
63
+ import { openInsertTableDialog } from './components/toolbar/InsertTableDialog'
64
+ import { openInsertSpecialCharacterDialog } from './components/views/InsertSpecialCharacter'
65
+ import { isEditAllowed } from './lib/utils'
66
+
67
+ export interface ToolbarButtonConfig {
68
+ title: string
69
+ content: ReactNode
70
+ isActive?: (state: EditorState) => boolean
71
+ run: (state: EditorState, dispatch: Dispatch, view?: EditorView) => void
72
+ isEnabled: (state: EditorState) => boolean
73
+ options?: {
74
+ [key: string]: (
75
+ state: EditorState,
76
+ dispatch: Dispatch,
77
+ view?: EditorView
78
+ ) => void
79
+ }
80
+ }
81
+
82
+ const isEnabled =
83
+ (isCommandEnabled: (state: EditorState) => boolean) =>
84
+ (state: EditorState) => {
85
+ return isEditAllowed(state) && isCommandEnabled(state)
86
+ }
87
+
88
+ export interface ToolbarConfig {
89
+ [key: string]: {
90
+ [key: string]: ToolbarButtonConfig
91
+ }
92
+ }
93
+
94
+ export const toolbar: ToolbarConfig = {
95
+ indentation: {
96
+ indent: {
97
+ title: 'Indent',
98
+ content: <ToolbarIndentIcon />,
99
+ isEnabled: isEnabled(isIndentationAllowed('indent')),
100
+ run: changeIndentation('indent'),
101
+ },
102
+ unindent: {
103
+ title: 'Unindent',
104
+ content: <ToolbarUnindentIcon />,
105
+ isEnabled: isEnabled(isIndentationAllowed('unindent')),
106
+ run: changeIndentation('unindent'),
107
+ },
108
+ },
109
+ style: {
110
+ bold: {
111
+ title: 'Toggle bold',
112
+ content: <ToolbarBoldIcon />,
113
+ isActive: markActive(schema.marks.bold),
114
+ isEnabled: isEnabled(toggleMark(schema.marks.bold)),
115
+ run: toggleMark(schema.marks.bold),
116
+ },
117
+ italic: {
118
+ title: 'Toggle italic',
119
+ content: <ToolbarItalicIcon />,
120
+ isActive: markActive(schema.marks.italic),
121
+ isEnabled: isEnabled(toggleMark(schema.marks.italic)),
122
+ run: toggleMark(schema.marks.italic),
123
+ },
124
+ underline: {
125
+ title: 'Toggle underline',
126
+ content: <ToolbarUnderlineIcon />,
127
+ isActive: markActive(schema.marks.underline),
128
+ isEnabled: isEnabled(toggleMark(schema.marks.underline)),
129
+ run: toggleMark(schema.marks.underline),
130
+ },
131
+ },
132
+ vertical: {
133
+ subscript: {
134
+ title: 'Toggle subscript',
135
+ content: <ToolbarSubscriptIcon />,
136
+ isActive: markActive(schema.marks.subscript),
137
+ isEnabled: isEnabled(toggleMark(schema.marks.subscript)),
138
+ run: toggleMark(schema.marks.subscript),
139
+ },
140
+ superscript: {
141
+ title: 'Toggle superscript',
142
+ content: <ToolbarSuperscriptIcon />,
143
+ isActive: markActive(schema.marks.superscript),
144
+ isEnabled: isEnabled(toggleMark(schema.marks.superscript)),
145
+ run: toggleMark(schema.marks.superscript),
146
+ },
147
+ },
148
+ list: {
149
+ bullet_list: {
150
+ title: 'Bulleted list',
151
+ content: <ToolbarUnorderedListIcon />,
152
+ isActive: blockActive(schema.nodes.list),
153
+ isEnabled: isEnabled(insertList(schema.nodes.list, 'bullet')),
154
+ run: insertList(schema.nodes.list, 'bullet'),
155
+ options: {
156
+ bullet: insertList(schema.nodes.list, 'bullet'),
157
+ simple: insertList(schema.nodes.list, 'simple'),
158
+ },
159
+ },
160
+ ordered_list: {
161
+ title: 'Ordered list',
162
+ content: <ToolbarOrderedListIcon />,
163
+ isActive: blockActive(schema.nodes.list),
164
+ isEnabled: isEnabled(insertList(schema.nodes.list, 'order')),
165
+ run: insertList(schema.nodes.list, 'order'),
166
+ options: {
167
+ order: insertList(schema.nodes.list, 'order'),
168
+ 'alpha-upper': insertList(schema.nodes.list, 'alpha-upper'),
169
+ 'alpha-lower': insertList(schema.nodes.list, 'alpha-lower'),
170
+ 'roman-upper': insertList(schema.nodes.list, 'roman-upper'),
171
+ 'roman-lower': insertList(schema.nodes.list, 'roman-lower'),
172
+ },
173
+ },
174
+ },
175
+ inline: {
176
+ comment: {
177
+ title: 'Insert comment',
178
+ content: <AddCommentIcon />,
179
+ isEnabled: isEnabled(canInsert(schema.nodes.highlight_marker)), // TODO: check both ends of selection
180
+ run: addInlineComment,
181
+ },
182
+ citation: {
183
+ title: 'Insert citation',
184
+ content: <ToolbarCitationIcon />,
185
+ isEnabled: isEnabled(canInsert(schema.nodes.citation)),
186
+ run: insertInlineCitation,
187
+ },
188
+ },
189
+ quote: {
190
+ blockquote_element: {
191
+ title: 'Insert blockquote',
192
+ content: <OutlineBlockQuoteIcon />,
193
+ isEnabled: isEnabled(canInsert(schema.nodes.blockquote_element)),
194
+ run: insertBlock(schema.nodes.blockquote_element),
195
+ },
196
+ pullquote_element: {
197
+ title: 'Insert pullquote',
198
+ content: <OutlinePullQuoteIcon />,
199
+ isEnabled: isEnabled(canInsert(schema.nodes.pullquote_element)),
200
+ run: insertBlock(schema.nodes.pullquote_element),
201
+ },
202
+ },
203
+ element: {
204
+ figure_element: {
205
+ title: 'Insert figure',
206
+ content: <ToolbarFigureIcon />,
207
+ isEnabled: isEnabled(canInsert(schema.nodes.figure_element)),
208
+ run: insertBlock(schema.nodes.figure_element),
209
+ },
210
+ image_element: {
211
+ title: 'Insert image',
212
+ content: <FileImageIcon width="19" height="16" />,
213
+ isEnabled: isEnabled(canInsert(schema.nodes.image_element)),
214
+ run: insertBlock(schema.nodes.image_element),
215
+ },
216
+ table_element: {
217
+ title: 'Insert table',
218
+ content: <ToolbarTableIcon />,
219
+ isEnabled: isEnabled(canInsert(schema.nodes.table_element)),
220
+ run: openInsertTableDialog,
221
+ },
222
+ box_element: {
223
+ title: 'Insert boxed text',
224
+ content: <ToolbarBoxedTextIcon />,
225
+ isEnabled: isEnabled(canInsert(schema.nodes.box_element)),
226
+ run: insertBoxElement,
227
+ },
228
+ equation_element: {
229
+ title: 'Insert equation',
230
+ content: <ToolbarEquationIcon />,
231
+ isEnabled: isEnabled(canInsert(schema.nodes.equation_element)),
232
+ run: insertBlock(schema.nodes.equation_element),
233
+ },
234
+ },
235
+ media: {
236
+ embed: {
237
+ title: 'Insert media',
238
+ content: <OutlineEmbedIcon />,
239
+ isEnabled: isEnabled(canInsert(schema.nodes.embed)),
240
+ run: insertEmbed,
241
+ },
242
+ link: {
243
+ title: 'Insert link',
244
+ content: <LinkIcon />,
245
+ isEnabled: isEnabled(canInsert(schema.nodes.link)),
246
+ run: insertLink,
247
+ },
248
+ },
249
+ special: {
250
+ special_characters: {
251
+ title: 'Insert special characters',
252
+ content: <ToolbarSpecialCharactersIcon />,
253
+ isEnabled: isEnabled(canInsert(schema.nodes.text)),
254
+ run: (state: EditorState, dispatch: Dispatch, view?: EditorView) => {
255
+ openInsertSpecialCharacterDialog(view)
256
+ },
257
+ },
258
+ },
259
+ }
@@ -0,0 +1,16 @@
1
+ /*!
2
+ * © 2025 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
+ declare module '@citation-js/core'
@@ -0,0 +1,16 @@
1
+ /*!
2
+ * © 2025 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
+ declare module '@citation-js'
@@ -0,0 +1,16 @@
1
+ /*!
2
+ * © 2025 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
+ declare module '@citation-js/plugin-bibtex'
@@ -0,0 +1,16 @@
1
+ /*!
2
+ * © 2025 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
+ declare module '@citation-js/plugin-csl'
@@ -0,0 +1,16 @@
1
+ /*!
2
+ * © 2025 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
+ declare module '@citation-js/plugin-doi'
@@ -0,0 +1,16 @@
1
+ /*!
2
+ * © 2025 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
+ declare module '@citation-js/plugin-enw'
@@ -0,0 +1,16 @@
1
+ /*!
2
+ * © 2025 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
+ declare module '@citation-js/plugin-pubmed'
@@ -0,0 +1,16 @@
1
+ /*!
2
+ * © 2025 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
+ declare module '@citation-js/plugin-ris'
@@ -0,0 +1,124 @@
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
+ // https://citeproc-js.readthedocs.io/en/latest/running.html#introduction
18
+ // https://github.com/citation-style-language/schema
19
+ // https://github.com/Zettlr/Zettlr/blob/dd2cbda72d9499edae6a1d95fb977794bde1ed4e/source/citeproc.d.ts
20
+
21
+ declare module 'citeproc' {
22
+ interface Citation {
23
+ citationItems: Array<{ id: string; prefix?: string; suffix?: string }>
24
+ properties?: {
25
+ mode?: string
26
+ noteIndex?: number
27
+ infix?: string
28
+ }
29
+ }
30
+
31
+ interface SystemOptions {
32
+ retrieveLocale: (id: string) => string | Document | Locale
33
+ retrieveItem: (id: string) => CSL.Data
34
+ }
35
+
36
+ interface BibliographyMetadata {
37
+ maxoffset: number
38
+ entryspacing: number
39
+ linespacing: number
40
+ hangingindent: boolean
41
+ ['second-field-align']: boolean
42
+ bibstart: string
43
+ bibend: string
44
+ bibliography_errors: string[]
45
+ entry_ids: string[]
46
+ }
47
+
48
+ type Bibliography = string[]
49
+
50
+ export class Engine {
51
+ constructor(
52
+ sys: SystemOptions,
53
+ style: string | Style,
54
+ lang?: string,
55
+ forceLang?: boolean
56
+ )
57
+
58
+ public updateItems(idList: Array<string | number>): void
59
+
60
+ public updateUncitedItems(idList: Array<string | number>): void
61
+
62
+ /**
63
+ * Rebuilds the processor from scratch, based on a cached list of
64
+ * citation objects. In a dynamic application, once the internal state of
65
+ * processor is established, citations should edited with individual
66
+ * invocations of ``processCitationCluster()``.
67
+ *
68
+ * Returns an array of ``[citationID,noteIndex,string]`` triples in
69
+ * document order, where ``string`` is the fully disambiguated citation
70
+ * cluster for the given document position.
71
+ *
72
+ * @param citations An array of citation input objects in document order. Each
73
+ * citation object must be in the following form, with correct
74
+ * values for ``citationID``, for each ``id``, and for ``noteIndex``.
75
+ * Set ``noteIndex`` to ``0`` for in-text citations.
76
+ * Default is to return an empty document update array.
77
+ * ```json
78
+ * {
79
+ * "citationID": "CITATION-1",
80
+ * "citationItems": [
81
+ * {
82
+ * "id": "ITEM-1"
83
+ * }
84
+ * ],
85
+ * "properties": {
86
+ * "noteIndex": 1
87
+ * }
88
+ * }
89
+ * ```
90
+ * @param mode One of ``text``, ``html`` or ``rtf``. The default is ``html``.
91
+ After invocation, the processor is returned to its previous output mode setting.
92
+ * @param uncitedItemIDs An array of item IDs for uncited items to be included in
93
+ the document bibliography, if any.
94
+ */
95
+ public rebuildProcessorState(
96
+ citations: Citation[],
97
+ mode?: 'text' | 'html' | 'rtf',
98
+ uncitedItemIDs?: string[]
99
+ ): Array<[string, number, string]> // id, noteIndex, output
100
+
101
+ public makeBibliography(): [BibliographyMetadata, Bibliography]
102
+ }
103
+
104
+ export function getLocaleNames(
105
+ style: string | Record<string, unknown>,
106
+ preferredLocale: string
107
+ ): string[]
108
+
109
+ type Locale = Record<string, unknown>
110
+
111
+ type Node = {
112
+ name: string
113
+ attrs: Record<string, unknown>
114
+ children: Node[]
115
+ }
116
+
117
+ export class XmlJSON {
118
+ constructor(dataObj: string | Record<string, unknown>)
119
+ dataObj: Record<string, unknown>
120
+ getNodesByName: (data: unknown, name: string) => Node[]
121
+ }
122
+
123
+ export function setupXml(style: string | Record<string, unknown>): XmlJSON
124
+ }
@@ -0,0 +1,16 @@
1
+ /*!
2
+ * © 2020 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
+ declare module '*.css'
@@ -0,0 +1,17 @@
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
+ declare module '*.json'
@@ -0,0 +1,16 @@
1
+ /*!
2
+ * © 2020 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
+ declare module 'prosemirror-dev-tools'
@@ -0,0 +1,16 @@
1
+ /*!
2
+ * © 2020 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
+ declare module 'prosemirror-dropcursor'
@@ -0,0 +1,23 @@
1
+ /*!
2
+ * © 2020 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 'styled-components'
18
+
19
+ import { Theme } from '@manuscripts/style-guide'
20
+
21
+ declare module 'styled-components' {
22
+ export type DefaultTheme = Theme
23
+ }
package/src/types.ts ADDED
@@ -0,0 +1,49 @@
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 { TrackedAttrs } from '@manuscripts/track-changes-plugin'
18
+ import {
19
+ ManuscriptEditorState,
20
+ ManuscriptEditorView,
21
+ ManuscriptNode,
22
+ ManuscriptNodeView,
23
+ ManuscriptTransaction,
24
+ } from '@manuscripts/transform'
25
+ import { Decoration } from 'prosemirror-view'
26
+
27
+ export type EditorAction = (
28
+ state: ManuscriptEditorState,
29
+ dispatch?: (tr: ManuscriptTransaction) => void,
30
+ view?: ManuscriptEditorView
31
+ ) => boolean
32
+
33
+ export type NodeViewCreator<T extends ManuscriptNodeView> = (
34
+ node: ManuscriptNode,
35
+ view: ManuscriptEditorView,
36
+ getPos: () => number | undefined,
37
+ decorations: readonly Decoration[]
38
+ ) => T
39
+
40
+ export type TrackableAttributes<T extends ManuscriptNode> = T['attrs'] & {
41
+ dataTracked?: TrackedAttrs[]
42
+ }
43
+
44
+ export type Trackable<T extends ManuscriptNode> = Omit<T, 'attrs'> & {
45
+ attrs: TrackableAttributes<T>
46
+ }
47
+
48
+ export type PartialExcept<T, K extends keyof T> = Partial<Omit<T, K>> &
49
+ Pick<T, K>