@modusoperandi/licit 1.0.4 → 1.0.7

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 (360) hide show
  1. package/BlockquoteInsertNewLineCommand.js +16 -18
  2. package/BlockquoteInsertNewLineCommand.js.flow +76 -77
  3. package/BlockquoteNodeSpec.js +3 -4
  4. package/BlockquoteNodeSpec.js.flow +29 -30
  5. package/BlockquoteToggleCommand.js +16 -17
  6. package/BlockquoteToggleCommand.js.flow +56 -56
  7. package/BookmarkNodeSpec.js +2 -2
  8. package/BookmarkNodeSpec.js.flow +39 -39
  9. package/BulletListNodeSpec.js.flow +61 -61
  10. package/CZIProseMirror.js.flow +90 -90
  11. package/CodeBlockCommand.js +17 -18
  12. package/CodeBlockCommand.js.flow +65 -65
  13. package/CodeBlockNodeSpec.js.flow +24 -24
  14. package/CodeMarkSpec.js.flow +14 -14
  15. package/ContentPlaceholderPlugin.js +20 -21
  16. package/ContentPlaceholderPlugin.js.flow +185 -187
  17. package/CursorPlaceholderPlugin.js +11 -11
  18. package/CursorPlaceholderPlugin.js.flow +115 -115
  19. package/DocLayoutCommand.js +18 -21
  20. package/DocLayoutCommand.js.flow +97 -99
  21. package/DocNodeSpec.js.flow +64 -64
  22. package/EMMarkSpec.js.flow +14 -14
  23. package/EditorCommands.js.flow +126 -126
  24. package/EditorKeyMap.js +0 -1
  25. package/EditorKeyMap.js.flow +185 -187
  26. package/EditorMarks.js +2 -2
  27. package/EditorMarks.js.flow +71 -71
  28. package/EditorNodes.js +2 -3
  29. package/EditorNodes.js.flow +58 -59
  30. package/EditorPageLayoutPlugin.js +10 -10
  31. package/EditorPageLayoutPlugin.js.flow +67 -67
  32. package/EditorPlugins.js.flow +8 -8
  33. package/EditorSchema.js.flow +12 -12
  34. package/EditorState.js.flow +7 -7
  35. package/FontSizeMarkSpec.js.flow +49 -49
  36. package/FontTypeMarkSpec.js +1 -1
  37. package/FontTypeMarkSpec.js.flow +80 -80
  38. package/HTMLMutator.js +6 -7
  39. package/HTMLMutator.js.flow +59 -59
  40. package/HardBreakNodeSpec.js.flow +15 -15
  41. package/HeadingNodeSpec.js +3 -13
  42. package/HeadingNodeSpec.js.flow +42 -52
  43. package/HistoryRedoCommand.js +15 -16
  44. package/HistoryRedoCommand.js.flow +41 -41
  45. package/HistoryUndoCommand.js +15 -16
  46. package/HistoryUndoCommand.js.flow +41 -41
  47. package/HorizontalRuleCommand.js +15 -16
  48. package/HorizontalRuleCommand.js.flow +71 -71
  49. package/HorizontalRuleNodeSpec.js.flow +39 -39
  50. package/ImageUploadPlaceholderPlugin.js +15 -17
  51. package/ImageUploadPlaceholderPlugin.js.flow +190 -192
  52. package/LinkMarkSpec.js +6 -1
  53. package/LinkMarkSpec.js.flow +37 -32
  54. package/LinkSetURLCommand.js +130 -60
  55. package/LinkSetURLCommand.js.flow +141 -117
  56. package/LinkTooltipPlugin.js +122 -34
  57. package/LinkTooltipPlugin.js.flow +261 -190
  58. package/ListItemInsertNewLineCommand.js +16 -18
  59. package/ListItemInsertNewLineCommand.js.flow +76 -77
  60. package/ListItemMergeCommand.js +24 -24
  61. package/ListItemMergeCommand.js.flow +198 -199
  62. package/ListItemNodeSpec.js.flow +52 -52
  63. package/ListSplitCommand.js +15 -16
  64. package/ListSplitCommand.js.flow +54 -54
  65. package/ListToggleCommand.js +19 -20
  66. package/ListToggleCommand.js.flow +99 -99
  67. package/MarkNames.js.flow +18 -18
  68. package/MarksClearCommand.js +17 -18
  69. package/MarksClearCommand.js.flow +65 -65
  70. package/MathEditCommand.js +17 -19
  71. package/MathEditCommand.js.flow +119 -120
  72. package/MathNodeSpec.js.flow +46 -46
  73. package/NodeNames.js.flow +23 -23
  74. package/OrderedListNodeSpec.js +2 -2
  75. package/OrderedListNodeSpec.js.flow +132 -132
  76. package/ParagraphNodeSpec.js +11 -2
  77. package/ParagraphNodeSpec.js.flow +163 -156
  78. package/ParagraphSpacingCommand.js +21 -23
  79. package/ParagraphSpacingCommand.js.flow +139 -144
  80. package/PrintCommand.js +17 -18
  81. package/PrintCommand.js.flow +53 -53
  82. package/SelectionPlaceholderPlugin.js +11 -11
  83. package/SelectionPlaceholderPlugin.js.flow +131 -131
  84. package/SpacerMarkSpec.js +2 -2
  85. package/SpacerMarkSpec.js.flow +47 -47
  86. package/StrikeMarkSpec.js.flow +21 -21
  87. package/StrongMarkSpec.js.flow +25 -25
  88. package/StyleView.js +5 -7
  89. package/StyleView.js.flow +18 -19
  90. package/TableBackgroundColorCommand.js +34 -23
  91. package/TableBackgroundColorCommand.js.flow +80 -75
  92. package/TableBorderColorCommand.js +34 -23
  93. package/TableBorderColorCommand.js.flow +81 -75
  94. package/TableCellColorCommand.js +20 -21
  95. package/TableCellColorCommand.js.flow +74 -75
  96. package/TableCellMenuPlugin.js +19 -19
  97. package/TableCellMenuPlugin.js.flow +130 -132
  98. package/TableInsertCommand.js +19 -22
  99. package/TableInsertCommand.js.flow +118 -120
  100. package/TableMergeCellsCommand.js +19 -19
  101. package/TableMergeCellsCommand.js.flow +113 -112
  102. package/TableNodesSpecs.js +4 -2
  103. package/TableNodesSpecs.js.flow +80 -78
  104. package/TablePlugins.js.flow +14 -14
  105. package/TableResizePlugin.js +20 -20
  106. package/TableResizePlugin.js.flow +631 -631
  107. package/TextColorMarkSpec.js.flow +35 -35
  108. package/TextHighlightMarkSpec.js.flow +38 -38
  109. package/TextInsertTabSpaceCommand.js +15 -16
  110. package/TextInsertTabSpaceCommand.js.flow +106 -106
  111. package/TextNoWrapMarkSpec.js.flow +14 -14
  112. package/TextNodeSpec.js.flow +7 -7
  113. package/TextSelectionMarkSpec.js.flow +24 -24
  114. package/TextSubMarkSpec.js.flow +20 -20
  115. package/TextSuperMarkSpec.js.flow +20 -20
  116. package/TextUnderlineMarkSpec.js.flow +27 -27
  117. package/Types.js +6 -0
  118. package/Types.js.flow +77 -75
  119. package/WebFontLoader.js +6 -7
  120. package/WebFontLoader.js.flow +22 -22
  121. package/blockQuoteInputRule.js.flow +36 -36
  122. package/bom.xml +17223 -25722
  123. package/browser.js.flow +7 -7
  124. package/buildEditorPlugins.js +6 -7
  125. package/buildEditorPlugins.js.flow +49 -49
  126. package/buildInputRules.js +8 -4
  127. package/buildInputRules.js.flow +85 -81
  128. package/client/CollabConnector.js +20 -20
  129. package/client/CollabConnector.js.flow +90 -90
  130. package/client/EditorConnection.js +10 -9
  131. package/client/EditorConnection.js.flow +324 -323
  132. package/client/Licit.js +78 -115
  133. package/client/Licit.js.flow +611 -643
  134. package/client/Licit.test.js +49 -39
  135. package/client/Licit.test.js.flow +104 -98
  136. package/client/Reporter.js +5 -6
  137. package/client/Reporter.js.flow +37 -37
  138. package/client/SimpleConnector.js +5 -5
  139. package/client/SimpleConnector.js.flow +61 -61
  140. package/client/http.js +0 -6
  141. package/client/http.js.flow +62 -70
  142. package/client/licit.css +12 -12
  143. package/client/throttle.js +8 -2
  144. package/client/throttle.js.flow +27 -27
  145. package/convertFromDOMElement.js +2 -4
  146. package/convertFromDOMElement.js.flow +33 -36
  147. package/convertFromHTML.js +2 -3
  148. package/convertFromHTML.js.flow +15 -17
  149. package/convertFromJSON.js +1 -2
  150. package/convertFromJSON.js.flow +55 -56
  151. package/convertToCSSPTValue.js +6 -10
  152. package/convertToCSSPTValue.js.flow +19 -22
  153. package/convertToJSON.js.flow +7 -7
  154. package/createCommand.js +16 -17
  155. package/createCommand.js.flow +62 -62
  156. package/createEditorKeyMap.js +2 -2
  157. package/createEditorKeyMap.js.flow +94 -94
  158. package/createEmptyEditorState.js +2 -3
  159. package/createEmptyEditorState.js.flow +29 -31
  160. package/createTableResizingPlugin.js +6 -6
  161. package/createTableResizingPlugin.js.flow +86 -86
  162. package/findActionableCell.js.flow +74 -74
  163. package/findActiveMark.js +1 -1
  164. package/findActiveMark.js.flow +32 -32
  165. package/hyphenize.js.flow +17 -17
  166. package/index.d.ts +165 -165
  167. package/index.js.flow +10 -10
  168. package/insertTable.js +0 -3
  169. package/insertTable.js.flow +54 -56
  170. package/isEditorStateEmpty.js.flow +32 -32
  171. package/isTableNode.js.flow +15 -15
  172. package/joinDown.js +1 -3
  173. package/joinDown.js.flow +25 -27
  174. package/joinListNode.js.flow +55 -55
  175. package/joinUp.js +1 -3
  176. package/joinUp.js.flow +37 -39
  177. package/keymaps.js.flow +185 -185
  178. package/lookUpElement.js +2 -1
  179. package/lookUpElement.js.flow +14 -14
  180. package/nodeAt.js.flow +12 -12
  181. package/normalizeHTML.js +3 -1
  182. package/normalizeHTML.js.flow +80 -78
  183. package/package.json +162 -156
  184. package/patchAnchorElements.js +1 -1
  185. package/patchAnchorElements.js.flow +38 -38
  186. package/patchBreakElements.js +3 -2
  187. package/patchBreakElements.js.flow +22 -22
  188. package/patchElementInlineStyles.js +1 -1
  189. package/patchElementInlineStyles.js.flow +92 -92
  190. package/patchListElements.js +4 -4
  191. package/patchListElements.js.flow +276 -276
  192. package/patchMathElements.js +5 -7
  193. package/patchMathElements.js.flow +58 -60
  194. package/patchParagraphElements.js.flow +20 -20
  195. package/patchStyleElements.js +1 -1
  196. package/patchStyleElements.js.flow +197 -196
  197. package/patchTableElements.js +2 -3
  198. package/patchTableElements.js.flow +88 -89
  199. package/rebaseDocWithSteps.js.flow +42 -42
  200. package/sanitizeURL.js +1 -1
  201. package/sanitizeURL.js.flow +13 -13
  202. package/splitListItem.js +3 -3
  203. package/splitListItem.js.flow +191 -191
  204. package/styles.css +19 -19
  205. package/styles0.css +29 -29
  206. package/toClosestFontPtSize.js.flow +22 -22
  207. package/toSafeHTMLDocument.js.flow +9 -9
  208. package/toggleBlockquote.js +4 -5
  209. package/toggleBlockquote.js.flow +101 -108
  210. package/toggleCodeBlock.js +6 -6
  211. package/toggleCodeBlock.js.flow +102 -102
  212. package/ui/AlertInfo.js +15 -16
  213. package/ui/AlertInfo.js.flow +64 -64
  214. package/ui/BookmarkNodeView.js +20 -21
  215. package/ui/BookmarkNodeView.js.flow +66 -66
  216. package/ui/CommandButton.js +15 -16
  217. package/ui/CommandButton.js.flow +68 -68
  218. package/ui/CommandMenu.js +19 -20
  219. package/ui/CommandMenu.js.flow +75 -75
  220. package/ui/CommandMenuButton.js +23 -25
  221. package/ui/CommandMenuButton.js.flow +130 -131
  222. package/ui/CustomEditorView.js +20 -20
  223. package/ui/CustomEditorView.js.flow +29 -28
  224. package/ui/CustomMenu.js +11 -12
  225. package/ui/CustomMenu.js.flow +17 -17
  226. package/ui/CustomMenuItem.js +16 -18
  227. package/ui/CustomMenuItem.js.flow +36 -36
  228. package/ui/CustomNodeView.js +29 -19
  229. package/ui/CustomNodeView.js.flow +207 -200
  230. package/ui/CustomRadioButton.js +18 -21
  231. package/ui/CustomRadioButton.js.flow +64 -65
  232. package/ui/DocLayoutEditor.js +18 -20
  233. package/ui/DocLayoutEditor.js.flow +145 -146
  234. package/ui/Editor.js +30 -28
  235. package/ui/Editor.js.flow +287 -288
  236. package/ui/EditorFrameset.js +13 -14
  237. package/ui/EditorFrameset.js.flow +81 -81
  238. package/ui/EditorToolbar.js +36 -42
  239. package/ui/EditorToolbar.js.flow +199 -218
  240. package/ui/EditorToolbarConfig.js +5 -5
  241. package/ui/EditorToolbarConfig.js.flow +164 -164
  242. package/ui/FontSizeCommandMenuButton.js +14 -15
  243. package/ui/FontSizeCommandMenuButton.js.flow +66 -66
  244. package/ui/FontTypeCommandMenuButton.js +15 -17
  245. package/ui/FontTypeCommandMenuButton.js.flow +60 -61
  246. package/ui/Frag.js +11 -12
  247. package/ui/Frag.js.flow +13 -13
  248. package/ui/Icon.js +21 -24
  249. package/ui/Icon.js.flow +89 -89
  250. package/ui/ImageInlineEditor.js +14 -15
  251. package/ui/ImageInlineEditor.js.flow +67 -67
  252. package/ui/KeyCodes.js.flow +12 -12
  253. package/ui/LinkTooltip.js +68 -34
  254. package/ui/LinkTooltip.js.flow +118 -85
  255. package/ui/LinkURLEditor.js +160 -43
  256. package/ui/LinkURLEditor.js.flow +243 -117
  257. package/ui/ListItemNodeView.js +6 -7
  258. package/ui/ListItemNodeView.js.flow +98 -98
  259. package/ui/ListTypeButton.js +23 -27
  260. package/ui/ListTypeButton.js.flow +128 -131
  261. package/ui/ListTypeCommandButton.js +14 -15
  262. package/ui/ListTypeCommandButton.js.flow +85 -85
  263. package/ui/ListTypeMenu.js +21 -22
  264. package/ui/ListTypeMenu.js.flow +70 -70
  265. package/ui/LoadingIndicator.js +11 -12
  266. package/ui/LoadingIndicator.js.flow +20 -20
  267. package/ui/MathEditor.js +17 -22
  268. package/ui/MathEditor.js.flow +72 -78
  269. package/ui/MathInlineEditor.js +20 -21
  270. package/ui/MathInlineEditor.js.flow +101 -102
  271. package/ui/MathNodeView.js +29 -30
  272. package/ui/MathNodeView.js.flow +176 -186
  273. package/ui/PasteMenu.js +19 -23
  274. package/ui/PasteMenu.js.flow +53 -57
  275. package/ui/ResizeObserver.js +1 -1
  276. package/ui/ResizeObserver.js.flow +106 -106
  277. package/ui/RichTextEditor.js +17 -18
  278. package/ui/RichTextEditor.js.flow +133 -133
  279. package/ui/SelectionObserver.js +8 -9
  280. package/ui/SelectionObserver.js.flow +134 -134
  281. package/ui/TableCellMenu.js +14 -15
  282. package/ui/TableCellMenu.js.flow +51 -51
  283. package/ui/TableGridSizeEditor.js +30 -33
  284. package/ui/TableGridSizeEditor.js.flow +187 -184
  285. package/ui/TableNodeView.js +18 -17
  286. package/ui/TableNodeView.js.flow +25 -25
  287. package/ui/bindScrollHandler.js +2 -1
  288. package/ui/bindScrollHandler.js.flow +46 -46
  289. package/ui/canUseCSSFont.js +5 -4
  290. package/ui/canUseCSSFont.js.flow +42 -43
  291. package/ui/czi-body-layout-editor.css +16 -16
  292. package/ui/czi-bookmark-view.css +10 -10
  293. package/ui/czi-cursor-placeholder.css +36 -36
  294. package/ui/czi-custom-menu-button.css +18 -18
  295. package/ui/czi-custom-menu-item.css +30 -30
  296. package/ui/czi-custom-menu.css +8 -8
  297. package/ui/czi-custom-radio-button.css +80 -80
  298. package/ui/czi-custom-scrollbar.css +21 -21
  299. package/ui/czi-editor-frameset.css +81 -81
  300. package/ui/czi-editor-toolbar.css +122 -122
  301. package/ui/czi-editor.css +217 -220
  302. package/ui/czi-form.css +201 -107
  303. package/ui/czi-frag.css +3 -3
  304. package/ui/czi-heading.css +40 -40
  305. package/ui/czi-icon.css +72 -72
  306. package/ui/czi-image-resize-box.css +165 -165
  307. package/ui/czi-image-upload-editor.css +57 -57
  308. package/ui/czi-image-upload-placeholder.css +50 -50
  309. package/ui/czi-image-url-editor.css +38 -38
  310. package/ui/czi-image-view.css +121 -125
  311. package/ui/czi-indent.css +137 -137
  312. package/ui/czi-inline-editor.css +20 -20
  313. package/ui/czi-link-tooltip.css +112 -71
  314. package/ui/czi-list.css +406 -410
  315. package/ui/czi-loading-indicator.css +66 -111
  316. package/ui/czi-math-view.css +62 -62
  317. package/ui/czi-selection-placeholder.css +24 -24
  318. package/ui/czi-table-cell-menu.css +16 -14
  319. package/ui/czi-table-grid-size-editor.css +37 -37
  320. package/ui/czi-table.css +87 -87
  321. package/ui/czi-vars.css +2 -2
  322. package/ui/findActiveFontSize.js +2 -1
  323. package/ui/findActiveFontSize.js.flow +55 -58
  324. package/ui/findActiveFontType.js +4 -3
  325. package/ui/findActiveFontType.js.flow +35 -38
  326. package/ui/fonts.css +460 -460
  327. package/ui/handleEditorDrop.js +1 -1
  328. package/ui/handleEditorDrop.js.flow +28 -28
  329. package/ui/handleEditorKeyDown.js +1 -1
  330. package/ui/handleEditorKeyDown.js.flow +39 -39
  331. package/ui/handleEditorPaste.js +1 -1
  332. package/ui/handleEditorPaste.js.flow +33 -33
  333. package/ui/htmlElementToRect.js.flow +18 -18
  334. package/ui/icon-font.css +9 -9
  335. package/ui/injectStyleSheet.js +2 -2
  336. package/ui/injectStyleSheet.js.flow +40 -42
  337. package/ui/isElementFullyVisible.js +1 -10
  338. package/ui/isElementFullyVisible.js.flow +14 -26
  339. package/ui/isOffline.js.flow +8 -8
  340. package/ui/isReactClass.js.flow +12 -12
  341. package/ui/listType.css +21 -21
  342. package/ui/mathquill-editor/MathQuillEditor.js +27 -30
  343. package/ui/mathquill-editor/MathQuillEditor.js.flow +158 -159
  344. package/ui/mathquill-editor/MathQuillEditorSymbols.js.flow +483 -483
  345. package/ui/mathquill-editor/MathQuillEditorSymbolsPanel.js +14 -15
  346. package/ui/mathquill-editor/MathQuillEditorSymbolsPanel.js.flow +50 -50
  347. package/ui/mathquill-editor/czi-mathquill-editor-symbols-panel.css +39 -39
  348. package/ui/mathquill-editor/czi-mathquill-editor.css +50 -50
  349. package/ui/mathquill-editor/mathquill-import-kludge.js +1 -8
  350. package/ui/mathquill-editor/mathquill-import-kludge.js.flow +17 -24
  351. package/ui/renderLaTeXAsHTML.js +4 -4
  352. package/ui/renderLaTeXAsHTML.js.flow +46 -46
  353. package/ui/resolveImage.js +5 -6
  354. package/ui/resolveImage.js.flow +121 -123
  355. package/ui/toCSSColor.js.flow +51 -51
  356. package/ui/toCSSLineSpacing.js +2 -3
  357. package/ui/toCSSLineSpacing.js.flow +53 -55
  358. package/ui/toHexColor.js.flow +26 -26
  359. package/ui/uuid.js.flow +9 -9
  360. package/uuid.js.flow +9 -9
@@ -1,108 +1,101 @@
1
- // @flow
2
-
3
- import {
4
- Schema
5
- } from 'prosemirror-model';
6
- import {
7
- Transform
8
- } from 'prosemirror-transform';
9
-
10
- import {
11
- BLOCKQUOTE,
12
- HEADING,
13
- LIST_ITEM,
14
- PARAGRAPH
15
- } from './NodeNames.js';
16
- import {
17
- compareNumber
18
- } from '@modusoperandi/licit-ui-commands';
19
- import {
20
- isInsideListItem
21
- } from '@modusoperandi/licit-ui-commands';
22
- import {
23
- isListNode
24
- } from '@modusoperandi/licit-ui-commands';
25
- import {
26
- unwrapNodesFromList
27
- } from '@modusoperandi/licit-ui-commands';
28
-
29
- export default function toggleBlockquote(
30
- tr: Transform,
31
- schema: Schema
32
- ): Transform {
33
- const { nodes } = schema;
34
- const { selection, doc } = tr;
35
- const heading = nodes[HEADING];
36
- const blockquote = nodes[BLOCKQUOTE];
37
- const paragraph = nodes[PARAGRAPH];
38
- const listItem = nodes[LIST_ITEM];
39
-
40
- if (!selection || !doc || !heading || !paragraph || !listItem) {
41
- return tr;
42
- }
43
-
44
- const { from, to } = tr.selection;
45
- let startWithBlockQuote = null;
46
- const poses = [];
47
- doc.nodesBetween(from, to, (node, pos, parentNode) => {
48
- const nodeType = node.type;
49
- const parentNodeType = parentNode.type;
50
-
51
- if (startWithBlockQuote === null) {
52
- startWithBlockQuote = nodeType === blockquote;
53
- }
54
-
55
- if (parentNodeType !== listItem) {
56
- poses.push(pos);
57
- }
58
- return !isListNode(node);
59
- });
60
- // Update from the bottom to avoid disruptive changes in pos.
61
- poses
62
- .sort(compareNumber)
63
- .reverse()
64
- .forEach((pos) => {
65
- tr = setBlockquoteNode(tr, schema, pos);
66
- });
67
- return tr;
68
- }
69
-
70
- function setBlockquoteNode(
71
- tr: Transform,
72
- schema: Schema,
73
- pos: number
74
- ): Transform {
75
- const { nodes } = schema;
76
- const heading = nodes[HEADING];
77
- const paragraph = nodes[PARAGRAPH];
78
- const blockquote = nodes[BLOCKQUOTE];
79
-
80
- if (pos >= tr.doc.content.size) {
81
- // Workaround to handle the edge case that pos was shifted caused by `toggleList`.
82
- return tr;
83
- }
84
- const node = tr.doc.nodeAt(pos);
85
-
86
- if (!node || !heading || !paragraph) {
87
- return tr;
88
- }
89
-
90
- const nodeType = node.type;
91
- if (isInsideListItem(tr.doc, pos)) {
92
- return tr;
93
- } else if (isListNode(node)) {
94
- // Toggle list
95
- if (blockquote) {
96
- tr = unwrapNodesFromList(tr, schema, pos, (paragraphNode) => {
97
- const { content, marks, attrs } = paragraphNode;
98
- return blockquote.create(attrs, content, marks);
99
- });
100
- }
101
- } else if (nodeType === blockquote) {
102
- // Toggle heading
103
- tr = tr.setNodeMarkup(pos, paragraph, node.attrs, node.marks);
104
- } else if (nodeType === paragraph || nodeType === heading) {
105
- tr = tr.setNodeMarkup(pos, blockquote, node.attrs, node.marks);
106
- }
107
- return tr;
108
- }
1
+ // @flow
2
+
3
+ import {
4
+ Schema
5
+ } from 'prosemirror-model';
6
+ import {
7
+ Transform
8
+ } from 'prosemirror-transform';
9
+
10
+ import {
11
+ BLOCKQUOTE,
12
+ HEADING,
13
+ LIST_ITEM,
14
+ PARAGRAPH
15
+ } from './NodeNames.js';
16
+ import {
17
+ compareNumber, isInsideListItem, isListNode, unwrapNodesFromList
18
+ } from '@modusoperandi/licit-ui-commands';
19
+
20
+ export default function toggleBlockquote(
21
+ tr: Transform,
22
+ schema: Schema
23
+ ): Transform {
24
+ const { nodes } = schema;
25
+ const { selection, doc } = tr;
26
+ const heading = nodes[HEADING];
27
+ const blockquote = nodes[BLOCKQUOTE];
28
+ const paragraph = nodes[PARAGRAPH];
29
+ const listItem = nodes[LIST_ITEM];
30
+
31
+ if (!selection || !doc || !heading || !paragraph || !listItem) {
32
+ return tr;
33
+ }
34
+
35
+ const { from, to } = tr.selection;
36
+ let startWithBlockQuote = null;
37
+ const poses = [];
38
+ doc.nodesBetween(from, to, (node, pos, parentNode) => {
39
+ const nodeType = node.type;
40
+ const parentNodeType = parentNode.type;
41
+
42
+ if (startWithBlockQuote === null) {
43
+ startWithBlockQuote = nodeType === blockquote;
44
+ }
45
+
46
+ if (parentNodeType !== listItem) {
47
+ poses.push(pos);
48
+ }
49
+ return !isListNode(node);
50
+ });
51
+ // Update from the bottom to avoid disruptive changes in pos.
52
+ const sortedPoses = [...poses]; // Create a shallow copy of poses
53
+ sortedPoses.sort(compareNumber);
54
+
55
+ sortedPoses.sort(compareNumber)
56
+ .reverse()
57
+ .forEach((pos) => {
58
+ tr = setBlockquoteNode(tr, schema, pos);
59
+ });
60
+ return tr;
61
+ }
62
+
63
+ function setBlockquoteNode(
64
+ tr: Transform,
65
+ schema: Schema,
66
+ pos: number
67
+ ): Transform {
68
+ const { nodes } = schema;
69
+ const heading = nodes[HEADING];
70
+ const paragraph = nodes[PARAGRAPH];
71
+ const blockquote = nodes[BLOCKQUOTE];
72
+
73
+ if (pos >= tr.doc.content.size) {
74
+ // Workaround to handle the edge case that pos was shifted caused by `toggleList`.
75
+ return tr;
76
+ }
77
+ const node = tr.doc.nodeAt(pos);
78
+
79
+ if (!node || !heading || !paragraph) {
80
+ return tr;
81
+ }
82
+
83
+ const nodeType = node.type;
84
+ if (isInsideListItem(tr.doc, pos)) {
85
+ return tr;
86
+ } else if (isListNode(node)) {
87
+ // Toggle list
88
+ if (blockquote) {
89
+ tr = unwrapNodesFromList(tr, schema, pos, (paragraphNode) => {
90
+ const { content, marks, attrs } = paragraphNode;
91
+ return blockquote.create(attrs, content, marks);
92
+ });
93
+ }
94
+ } else if (nodeType === blockquote) {
95
+ // Toggle heading
96
+ tr = tr.setNodeMarkup(pos, paragraph, node.attrs, node.marks);
97
+ } else if (nodeType === paragraph || nodeType === heading) {
98
+ tr = tr.setNodeMarkup(pos, blockquote, node.attrs, node.marks);
99
+ }
100
+ return tr;
101
+ }
@@ -1,11 +1,10 @@
1
+ function _readOnlyError(r) { throw new TypeError('"' + r + '" is read-only'); }
1
2
  import { Schema } from 'prosemirror-model';
2
3
  import { TextSelection } from 'prosemirror-state';
3
4
  import { Transform } from 'prosemirror-transform';
4
5
  import { MARK_LINK } from './MarkNames';
5
6
  import { BLOCKQUOTE, CODE_BLOCK, HEADING, PARAGRAPH } from './NodeNames';
6
- import { clearMarks } from '@modusoperandi/licit-ui-commands';
7
- import { compareNumber } from '@modusoperandi/licit-ui-commands';
8
- import { isListNode } from '@modusoperandi/licit-ui-commands';
7
+ import { clearMarks, compareNumber, isListNode } from '@modusoperandi/licit-ui-commands';
9
8
  export default function toggleCodeBlock(tr, schema) {
10
9
  var nodes = schema.nodes;
11
10
  var _tr = tr,
@@ -37,10 +36,11 @@ export default function toggleCodeBlock(tr, schema) {
37
36
  }
38
37
  return isBlock;
39
38
  });
40
-
39
+ var sortedPoses = [].concat(poses); // Create a shallow copy of poses
41
40
  // Update from the bottom to avoid disruptive changes in pos.
42
- allowed && poses.sort(compareNumber).reverse().forEach(function (pos) {
43
- tr = setCodeBlockNodeEnabled(tr, schema, pos, startWithCodeBlock ? false : true);
41
+ allowed ? poses.toSorted(compareNumber) : poses, _readOnlyError("sortedPoses");
42
+ allowed && sortedPoses.sort(compareNumber).reverse().forEach(function (pos) {
43
+ tr = setCodeBlockNodeEnabled(tr, schema, pos, !startWithCodeBlock);
44
44
  });
45
45
  return tr;
46
46
  }
@@ -1,102 +1,102 @@
1
- // @flow
2
-
3
- import { Schema } from 'prosemirror-model';
4
- import { TextSelection } from 'prosemirror-state';
5
- import { Transform } from 'prosemirror-transform';
6
-
7
- import { MARK_LINK } from './MarkNames';
8
- import { BLOCKQUOTE, CODE_BLOCK, HEADING, PARAGRAPH } from './NodeNames';
9
- import { clearMarks } from '@modusoperandi/licit-ui-commands';
10
- import { compareNumber } from '@modusoperandi/licit-ui-commands';
11
- import { isListNode } from '@modusoperandi/licit-ui-commands';
12
-
13
- export default function toggleCodeBlock(
14
- tr: Transform,
15
- schema: Schema
16
- ): Transform {
17
- const { nodes } = schema;
18
- const { selection, doc } = tr;
19
- const codeBlock = nodes[CODE_BLOCK];
20
- const paragraph = nodes[PARAGRAPH];
21
- const heading = nodes[HEADING];
22
- const blockquote = nodes[BLOCKQUOTE];
23
- if (!selection || !doc || !codeBlock || !paragraph) {
24
- return tr;
25
- }
26
-
27
- const poses = [];
28
- const { from, to } = tr.selection;
29
- let allowed = true;
30
- let startWithCodeBlock = null;
31
- doc.nodesBetween(from, to, (node, pos) => {
32
- const nodeType = node.type;
33
- if (startWithCodeBlock === null) {
34
- startWithCodeBlock = nodeType === codeBlock;
35
- }
36
- const { type, isBlock } = node;
37
- if (isBlock) {
38
- allowed =
39
- allowed &&
40
- (type === paragraph ||
41
- type === codeBlock ||
42
- type === heading ||
43
- type === blockquote);
44
- allowed && poses.push(pos);
45
- }
46
-
47
- return isBlock;
48
- });
49
-
50
- // Update from the bottom to avoid disruptive changes in pos.
51
- allowed &&
52
- poses
53
- .sort(compareNumber)
54
- .reverse()
55
- .forEach((pos) => {
56
- tr = setCodeBlockNodeEnabled(
57
- tr,
58
- schema,
59
- pos,
60
- startWithCodeBlock ? false : true
61
- );
62
- });
63
- return tr;
64
- }
65
-
66
- function setCodeBlockNodeEnabled(
67
- tr: Transform,
68
- schema: Schema,
69
- pos: number,
70
- enabled: boolean
71
- ): Transform {
72
- const { doc } = tr;
73
- if (!doc) {
74
- return tr;
75
- }
76
-
77
- const node = doc.nodeAt(pos);
78
- if (!node) {
79
- return tr;
80
- }
81
- if (isListNode(node)) {
82
- return tr;
83
- }
84
-
85
- const { nodes } = schema;
86
- const codeBlock = nodes[CODE_BLOCK];
87
- const paragraph = nodes[PARAGRAPH];
88
-
89
- if (codeBlock && !enabled && node.type === codeBlock) {
90
- tr = tr.setNodeMarkup(pos, paragraph, node.attrs, node.marks);
91
- } else if (enabled && node.type !== codeBlock) {
92
- const { selection } = tr;
93
- tr = tr.setSelection(
94
- TextSelection.create(tr.doc, pos, pos + node.nodeSize)
95
- );
96
- tr = clearMarks(tr, schema);
97
- tr = tr.removeMark(pos, pos + node.nodeSize, schema.marks[MARK_LINK]);
98
- tr = tr.setSelection(selection);
99
- tr = tr.setNodeMarkup(pos, codeBlock, node.attrs, node.marks);
100
- }
101
- return tr;
102
- }
1
+ // @flow
2
+
3
+ import { Schema } from 'prosemirror-model';
4
+ import { TextSelection } from 'prosemirror-state';
5
+ import { Transform } from 'prosemirror-transform';
6
+
7
+ import { MARK_LINK } from './MarkNames';
8
+ import { BLOCKQUOTE, CODE_BLOCK, HEADING, PARAGRAPH } from './NodeNames';
9
+ import {
10
+ clearMarks,
11
+ compareNumber,
12
+ isListNode,
13
+ } from '@modusoperandi/licit-ui-commands';
14
+
15
+ export default function toggleCodeBlock(
16
+ tr: Transform,
17
+ schema: Schema
18
+ ): Transform {
19
+ const { nodes } = schema;
20
+ const { selection, doc } = tr;
21
+ const codeBlock = nodes[CODE_BLOCK];
22
+ const paragraph = nodes[PARAGRAPH];
23
+ const heading = nodes[HEADING];
24
+ const blockquote = nodes[BLOCKQUOTE];
25
+ if (!selection || !doc || !codeBlock || !paragraph) {
26
+ return tr;
27
+ }
28
+
29
+ const poses = [];
30
+ const { from, to } = tr.selection;
31
+ let allowed = true;
32
+ let startWithCodeBlock = null;
33
+ doc.nodesBetween(from, to, (node, pos) => {
34
+ const nodeType = node.type;
35
+ if (startWithCodeBlock === null) {
36
+ startWithCodeBlock = nodeType === codeBlock;
37
+ }
38
+ const { type, isBlock } = node;
39
+ if (isBlock) {
40
+ allowed =
41
+ allowed &&
42
+ (type === paragraph ||
43
+ type === codeBlock ||
44
+ type === heading ||
45
+ type === blockquote);
46
+ allowed && poses.push(pos);
47
+ }
48
+
49
+ return isBlock;
50
+ });
51
+
52
+ const sortedPoses = [...poses]; // Create a shallow copy of poses
53
+ // Update from the bottom to avoid disruptive changes in pos.
54
+ sortedPoses = allowed ? poses.toSorted(compareNumber) : poses;
55
+
56
+ allowed &&
57
+ sortedPoses
58
+ .sort(compareNumber)
59
+ .reverse()
60
+ .forEach((pos) => {
61
+ tr = setCodeBlockNodeEnabled(tr, schema, pos, !startWithCodeBlock);
62
+ });
63
+ return tr;
64
+ }
65
+
66
+ function setCodeBlockNodeEnabled(
67
+ tr: Transform,
68
+ schema: Schema,
69
+ pos: number,
70
+ enabled: boolean
71
+ ): Transform {
72
+ const { doc } = tr;
73
+ if (!doc) {
74
+ return tr;
75
+ }
76
+
77
+ const node = doc.nodeAt(pos);
78
+ if (!node) {
79
+ return tr;
80
+ }
81
+ if (isListNode(node)) {
82
+ return tr;
83
+ }
84
+
85
+ const { nodes } = schema;
86
+ const codeBlock = nodes[CODE_BLOCK];
87
+ const paragraph = nodes[PARAGRAPH];
88
+
89
+ if (codeBlock && !enabled && node.type === codeBlock) {
90
+ tr = tr.setNodeMarkup(pos, paragraph, node.attrs, node.marks);
91
+ } else if (enabled && node.type !== codeBlock) {
92
+ const { selection } = tr;
93
+ tr = tr.setSelection(
94
+ TextSelection.create(tr.doc, pos, pos + node.nodeSize)
95
+ );
96
+ tr = clearMarks(tr, schema);
97
+ tr = tr.removeMark(pos, pos + node.nodeSize, schema.marks[MARK_LINK]);
98
+ tr = tr.setSelection(selection);
99
+ tr = tr.setNodeMarkup(pos, codeBlock, node.attrs, node.marks);
100
+ }
101
+ return tr;
102
+ }
package/ui/AlertInfo.js CHANGED
@@ -1,33 +1,32 @@
1
1
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
2
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
3
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
5
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
6
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
4
+ function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
5
+ function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
6
+ function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
7
7
  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
8
- function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
8
+ function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); }
9
+ function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
9
10
  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
10
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
11
- function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
12
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
13
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
14
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
15
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
11
+ function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }
12
+ function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); }
13
+ function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
14
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
15
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
16
16
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
17
17
  import * as React from 'react';
18
18
  import PropTypes from 'prop-types';
19
19
  import './czi-form.css';
20
20
  var AlertInfo = /*#__PURE__*/function (_React$PureComponent) {
21
- _inherits(AlertInfo, _React$PureComponent);
22
21
  function AlertInfo(props) {
23
22
  var _this;
24
23
  _classCallCheck(this, AlertInfo);
25
24
  _this = _callSuper(this, AlertInfo, [props]);
26
- _defineProperty(_assertThisInitialized(_this), "_unmounted", false);
27
- _defineProperty(_assertThisInitialized(_this), "state", _objectSpread(_objectSpread({}, _this.props.initialValue || {}), {}, {
25
+ _defineProperty(_this, "_unmounted", false);
26
+ _defineProperty(_this, "state", _objectSpread(_objectSpread({}, _this.props.initialValue || {}), {}, {
28
27
  validValue: null
29
28
  }));
30
- _defineProperty(_assertThisInitialized(_this), "_cancel", function () {
29
+ _defineProperty(_this, "_cancel", function () {
31
30
  _this.props.close();
32
31
  });
33
32
  return _this;
@@ -36,7 +35,8 @@ var AlertInfo = /*#__PURE__*/function (_React$PureComponent) {
36
35
  // [FS] IRAD-1005 2020-07-07
37
36
  // Upgrade outdated packages.
38
37
  // To take care of the property type declaration.
39
- _createClass(AlertInfo, [{
38
+ _inherits(AlertInfo, _React$PureComponent);
39
+ return _createClass(AlertInfo, [{
40
40
  key: "componentWillUnmount",
41
41
  value: function componentWillUnmount() {
42
42
  this._unmounted = true;
@@ -54,7 +54,6 @@ var AlertInfo = /*#__PURE__*/function (_React$PureComponent) {
54
54
  }, "\xD7"), /*#__PURE__*/React.createElement("strong", null, title), /*#__PURE__*/React.createElement("span", null, content));
55
55
  }
56
56
  }]);
57
- return AlertInfo;
58
57
  }(React.PureComponent);
59
58
  _defineProperty(AlertInfo, "propsTypes", {
60
59
  initialValue: PropTypes.object,
@@ -1,64 +1,64 @@
1
- // @flow
2
-
3
- import * as React from 'react';
4
- import PropTypes from 'prop-types';
5
- import './czi-form.css';
6
-
7
- class AlertInfo extends React.PureComponent<any, any> {
8
- _unmounted = false;
9
-
10
- constructor(props: any) {
11
- super(props);
12
- }
13
-
14
- // [FS] IRAD-1005 2020-07-07
15
- // Upgrade outdated packages.
16
- // To take care of the property type declaration.
17
- static propsTypes = {
18
- initialValue: PropTypes.object,
19
- close: function (props: any, propName: string) {
20
- const fn = props[propName];
21
- if (
22
- !fn.prototype ||
23
- (typeof fn.prototype.constructor !== 'function' &&
24
- fn.prototype.constructor.length !== 1)
25
- ) {
26
- return new Error(
27
- propName + ' must be a function with 1 arg of type ImageLike'
28
- );
29
- }
30
- return null;
31
- },
32
- };
33
-
34
- state = {
35
- ...(this.props.initialValue || {}),
36
- validValue: null,
37
- };
38
-
39
- componentWillUnmount(): void {
40
- this._unmounted = true;
41
- }
42
-
43
- render(): React.Element<any> {
44
- const title = this.props.title || 'Document Error!';
45
- const content =
46
- this.props.content ||
47
- 'Unable to load the document. Have issues in Json format, please verify...';
48
- return (
49
- <div className="licit-alert">
50
- <span className="closebtn" onClick={this._cancel}>
51
- &times;
52
- </span>
53
- <strong>{title}</strong>
54
- <span>{content}</span>
55
- </div>
56
- );
57
- }
58
-
59
- _cancel = (): void => {
60
- this.props.close();
61
- };
62
- }
63
-
64
- export default AlertInfo;
1
+ // @flow
2
+
3
+ import * as React from 'react';
4
+ import PropTypes from 'prop-types';
5
+ import './czi-form.css';
6
+
7
+ class AlertInfo extends React.PureComponent<any, any> {
8
+ _unmounted = false;
9
+
10
+ constructor(props: any) {
11
+ super(props);
12
+ }
13
+
14
+ // [FS] IRAD-1005 2020-07-07
15
+ // Upgrade outdated packages.
16
+ // To take care of the property type declaration.
17
+ static propsTypes = {
18
+ initialValue: PropTypes.object,
19
+ close: function (props: any, propName: string) {
20
+ const fn = props[propName];
21
+ if (
22
+ !fn.prototype ||
23
+ (typeof fn.prototype.constructor !== 'function' &&
24
+ fn.prototype.constructor.length !== 1)
25
+ ) {
26
+ return new Error(
27
+ propName + ' must be a function with 1 arg of type ImageLike'
28
+ );
29
+ }
30
+ return null;
31
+ },
32
+ };
33
+
34
+ state = {
35
+ ...(this.props.initialValue || {}),
36
+ validValue: null,
37
+ };
38
+
39
+ componentWillUnmount(): void {
40
+ this._unmounted = true;
41
+ }
42
+
43
+ render(): React.Element<any> {
44
+ const title = this.props.title || 'Document Error!';
45
+ const content =
46
+ this.props.content ||
47
+ 'Unable to load the document. Have issues in Json format, please verify...';
48
+ return (
49
+ <div className="licit-alert">
50
+ <span className="closebtn" onClick={this._cancel}>
51
+ &times;
52
+ </span>
53
+ <strong>{title}</strong>
54
+ <span>{content}</span>
55
+ </div>
56
+ );
57
+ }
58
+
59
+ _cancel = (): void => {
60
+ this.props.close();
61
+ };
62
+ }
63
+
64
+ export default AlertInfo;