@modusoperandi/licit 0.1.9 → 0.13.2

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 (340) hide show
  1. package/.github/workflows/build.yml +1 -7
  2. package/.github/workflows/lint.yml +1 -1
  3. package/README.md +1 -1
  4. package/babel.config.json +54 -0
  5. package/dist/BlockquoteNodeSpec.js +2 -2
  6. package/dist/CZIProseMirror.js +4 -4
  7. package/dist/CodeBlockCommand.js +2 -2
  8. package/dist/CodeBlockCommand.js.flow +1 -1
  9. package/dist/CursorPlaceholderPlugin.js +2 -2
  10. package/dist/DocLayoutCommand.js +2 -4
  11. package/dist/DocLayoutCommand.js.flow +1 -1
  12. package/dist/DocNodeSpec.js +1 -1
  13. package/dist/EditorCommands.js +23 -35
  14. package/dist/EditorCommands.js.flow +7 -7
  15. package/dist/EditorKeyMap.js +3 -3
  16. package/dist/FontTypeMarkSpec.js +1 -1
  17. package/dist/HeadingNodeSpec.js +2 -2
  18. package/dist/ImageSourceCommand.js +2 -4
  19. package/dist/ImageSourceCommand.js.flow +1 -1
  20. package/dist/ImageUploadPlaceholderPlugin.js +1 -1
  21. package/dist/LinkSetURLCommand.js +4 -8
  22. package/dist/LinkSetURLCommand.js.flow +3 -3
  23. package/dist/LinkTooltipPlugin.js +9 -15
  24. package/dist/LinkTooltipPlugin.js.flow +5 -5
  25. package/dist/ListToggleCommand.js +5 -11
  26. package/dist/ListToggleCommand.js.flow +3 -3
  27. package/dist/MarkNames.js +1 -1
  28. package/dist/MarksClearCommand.js +3 -3
  29. package/dist/MarksClearCommand.js.flow +1 -1
  30. package/dist/MathEditCommand.js +2 -2
  31. package/dist/MathEditCommand.js.flow +1 -1
  32. package/dist/ParagraphNodeSpec.js +3 -4
  33. package/dist/ParagraphNodeSpec.js.flow +2 -6
  34. package/dist/ParagraphSpacingCommand.js +3 -3
  35. package/dist/SelectionPlaceholderPlugin.js +2 -2
  36. package/dist/SpacerMarkSpec.js +1 -1
  37. package/dist/TableBackgroundColorCommand.js +3 -7
  38. package/dist/TableBackgroundColorCommand.js.flow +3 -3
  39. package/dist/TableBorderColorCommand.js +3 -7
  40. package/dist/TableBorderColorCommand.js.flow +3 -3
  41. package/dist/TableCellColorCommand.js +3 -7
  42. package/dist/TableCellColorCommand.js.flow +3 -3
  43. package/dist/TableCellMenuPlugin.js +4 -6
  44. package/dist/TableCellMenuPlugin.js.flow +3 -3
  45. package/dist/TableInsertCommand.js +3 -5
  46. package/dist/TableInsertCommand.js.flow +2 -2
  47. package/dist/TableResizePlugin.js +2 -2
  48. package/dist/TextInsertTabSpaceCommand.js +2 -4
  49. package/dist/TextInsertTabSpaceCommand.js.flow +1 -1
  50. package/dist/Types.js +1 -1
  51. package/dist/bom.xml +4970 -4167
  52. package/dist/client/CollabConnector.js +17 -2
  53. package/dist/client/CollabConnector.js.flow +17 -2
  54. package/dist/client/EditorConnection.js +15 -4
  55. package/dist/client/EditorConnection.js.flow +14 -3
  56. package/dist/client/Licit.js +73 -58
  57. package/dist/client/Licit.js.flow +101 -85
  58. package/dist/client/Licit.test.js +18 -17
  59. package/dist/client/Licit.test.js.flow +13 -11
  60. package/dist/client/SimpleConnector.js +4 -2
  61. package/dist/client/SimpleConnector.js.flow +3 -1
  62. package/dist/client/http.js +3 -3
  63. package/dist/convertToCSSPTValue.js +1 -1
  64. package/dist/createEmptyEditorState.js +1 -1
  65. package/dist/index.js +16 -16
  66. package/dist/joinListNode.js +2 -2
  67. package/dist/joinListNode.js.flow +1 -1
  68. package/dist/keymaps.js +2 -2
  69. package/dist/patchStyleElements.js +3 -3
  70. package/dist/patchStyleElements.js.flow +1 -1
  71. package/dist/splitListItem.js +2 -2
  72. package/dist/styles.css +2 -2
  73. package/dist/styles0.css +3 -3
  74. package/dist/toggleBlockquote.js +6 -14
  75. package/dist/toggleBlockquote.js.flow +4 -4
  76. package/dist/toggleCodeBlock.js +4 -10
  77. package/dist/toggleCodeBlock.js.flow +3 -3
  78. package/dist/ui/AlertInfo.js +2 -2
  79. package/dist/ui/CommandButton.js +2 -4
  80. package/dist/ui/CommandButton.js.flow +1 -1
  81. package/dist/ui/CommandMenuButton.js +5 -7
  82. package/dist/ui/CommandMenuButton.js.flow +2 -2
  83. package/dist/ui/CustomMenuItem.js +3 -5
  84. package/dist/ui/CustomMenuItem.js.flow +1 -1
  85. package/dist/ui/CustomNodeView.js +3 -3
  86. package/dist/ui/CustomRadioButton.js +8 -6
  87. package/dist/ui/CustomRadioButton.js.flow +3 -3
  88. package/dist/ui/DocLayoutEditor.js +5 -7
  89. package/dist/ui/DocLayoutEditor.js.flow +2 -2
  90. package/dist/ui/Editor.js +1 -2
  91. package/dist/ui/Editor.js.flow +1 -2
  92. package/dist/ui/EditorFrameset.js +1 -1
  93. package/dist/ui/EditorToolbar.js +4 -4
  94. package/dist/ui/EditorToolbar.js.flow +1 -1
  95. package/dist/ui/EditorToolbarConfig.js +1 -1
  96. package/dist/ui/FontSizeCommandMenuButton.js +3 -3
  97. package/dist/ui/FontSizeCommandMenuButton.js.flow +1 -1
  98. package/dist/ui/FontTypeCommandMenuButton.js +3 -3
  99. package/dist/ui/FontTypeCommandMenuButton.js.flow +1 -1
  100. package/dist/ui/ImageAlignEditor.js +5 -5
  101. package/dist/ui/ImageAlignEditor.js.flow +1 -1
  102. package/dist/ui/ImageInlineEditor.js +5 -5
  103. package/dist/ui/ImageInlineEditor.js.flow +1 -1
  104. package/dist/ui/ImageNodeView.js +5 -7
  105. package/dist/ui/ImageNodeView.js.flow +2 -2
  106. package/dist/ui/ImageResizeBox.js +4 -4
  107. package/dist/ui/ImageResizeBox.js.flow +1 -1
  108. package/dist/ui/ImageURLEditor.js +6 -8
  109. package/dist/ui/ImageURLEditor.js.flow +2 -2
  110. package/dist/ui/ImageUploadEditor.js +3 -5
  111. package/dist/ui/ImageUploadEditor.js.flow +2 -2
  112. package/dist/ui/LinkTooltip.js +4 -4
  113. package/dist/ui/LinkTooltip.js.flow +1 -1
  114. package/dist/ui/LinkURLEditor.js +4 -6
  115. package/dist/ui/LinkURLEditor.js.flow +2 -2
  116. package/dist/ui/ListTypeButton.js +5 -7
  117. package/dist/ui/ListTypeButton.js.flow +2 -2
  118. package/dist/ui/MathEditor.js +4 -6
  119. package/dist/ui/MathEditor.js.flow +2 -2
  120. package/dist/ui/MathInlineEditor.js +7 -9
  121. package/dist/ui/MathInlineEditor.js.flow +2 -2
  122. package/dist/ui/MathNodeView.js +5 -7
  123. package/dist/ui/MathNodeView.js.flow +2 -2
  124. package/dist/ui/ResizeObserver.js +1 -1
  125. package/dist/ui/TableGridSizeEditor.js +7 -9
  126. package/dist/ui/TableGridSizeEditor.js.flow +2 -2
  127. package/dist/ui/czi-link-tooltip.css +1 -1
  128. package/dist/ui/czi-vars.css +1 -45
  129. package/dist/ui/findActiveFontType.js +1 -1
  130. package/dist/ui/htmlElementToRect.js +1 -1
  131. package/dist/ui/isElementFullyVisible.js +2 -2
  132. package/dist/ui/isElementFullyVisible.js.flow +1 -1
  133. package/dist/ui/mathquill-editor/MathQuillEditorSymbols.js +1 -1
  134. package/dist/ui/mathquill-editor/MathQuillEditorSymbolsPanel.js +2 -2
  135. package/dist/ui/mathquill-editor/MathQuillEditorSymbolsPanel.js.flow +1 -1
  136. package/dist/ui/resolveImage.js +3 -3
  137. package/dist/ui/toCSSColor.js +1 -1
  138. package/dist/ui/toCSSLineSpacing.js +1 -36
  139. package/dist/ui/toCSSLineSpacing.js.flow +0 -27
  140. package/flow-typed/@modusoperandilicit-ui-commands.js +5 -0
  141. package/jest.config.js +207 -0
  142. package/lint.sh +0 -0
  143. package/node_modules/prosemirror-utils/LICENSE +13 -0
  144. package/{dist/ui/PopUpTypes.js.flow → node_modules/prosemirror-utils/README.md} +0 -0
  145. package/node_modules/prosemirror-utils/dist/helpers.js +119 -0
  146. package/node_modules/prosemirror-utils/dist/index.js +17 -0
  147. package/node_modules/prosemirror-utils/dist/index.js.map +1 -0
  148. package/node_modules/prosemirror-utils/dist/node.js +106 -0
  149. package/node_modules/prosemirror-utils/dist/selection.js +168 -0
  150. package/node_modules/prosemirror-utils/dist/transforms.js +257 -0
  151. package/node_modules/prosemirror-utils/package.json +81 -0
  152. package/node_modules/prosemirror-utils/typings.d.ts +79 -0
  153. package/package.json +14 -8
  154. package/scripts/build_bin.py +0 -0
  155. package/scripts/ci_check_dist.sh +0 -0
  156. package/src/CodeBlockCommand.js +1 -1
  157. package/src/DocLayoutCommand.js +1 -1
  158. package/src/EditorCommands.js +7 -7
  159. package/src/ImageSourceCommand.js +1 -1
  160. package/src/LinkSetURLCommand.js +3 -3
  161. package/src/LinkTooltipPlugin.js +5 -5
  162. package/src/ListToggleCommand.js +3 -3
  163. package/src/MarksClearCommand.js +1 -1
  164. package/src/MathEditCommand.js +1 -1
  165. package/src/ParagraphNodeSpec.js +2 -6
  166. package/src/TableBackgroundColorCommand.js +3 -3
  167. package/src/TableBorderColorCommand.js +3 -3
  168. package/src/TableCellColorCommand.js +3 -3
  169. package/src/TableCellMenuPlugin.js +3 -3
  170. package/src/TableInsertCommand.js +2 -2
  171. package/src/TextInsertTabSpaceCommand.js +1 -1
  172. package/src/client/CollabConnector.js +17 -2
  173. package/src/client/EditorConnection.js +14 -3
  174. package/src/client/Licit.js +101 -85
  175. package/src/client/Licit.test.js +13 -11
  176. package/src/client/SimpleConnector.js +3 -1
  177. package/src/joinListNode.js +1 -1
  178. package/src/patchStyleElements.js +1 -1
  179. package/src/styles.css +2 -2
  180. package/src/styles0.css +3 -3
  181. package/src/toggleBlockquote.js +4 -4
  182. package/src/toggleCodeBlock.js +3 -3
  183. package/src/ui/CommandButton.js +1 -1
  184. package/src/ui/CommandMenuButton.js +2 -2
  185. package/src/ui/CustomMenuItem.js +1 -1
  186. package/src/ui/CustomRadioButton.js +3 -3
  187. package/src/ui/DocLayoutEditor.js +2 -2
  188. package/src/ui/Editor.js +1 -2
  189. package/src/ui/EditorToolbar.js +1 -1
  190. package/src/ui/FontSizeCommandMenuButton.js +1 -1
  191. package/src/ui/FontTypeCommandMenuButton.js +1 -1
  192. package/src/ui/ImageAlignEditor.js +1 -1
  193. package/src/ui/ImageInlineEditor.js +1 -1
  194. package/src/ui/ImageNodeView.js +2 -2
  195. package/src/ui/ImageResizeBox.js +1 -1
  196. package/src/ui/ImageURLEditor.js +2 -2
  197. package/src/ui/ImageUploadEditor.js +2 -2
  198. package/src/ui/LinkTooltip.js +1 -1
  199. package/src/ui/LinkURLEditor.js +2 -2
  200. package/src/ui/ListTypeButton.js +2 -2
  201. package/src/ui/MathEditor.js +2 -2
  202. package/src/ui/MathInlineEditor.js +2 -2
  203. package/src/ui/MathNodeView.js +2 -2
  204. package/src/ui/TableGridSizeEditor.js +2 -2
  205. package/src/ui/czi-link-tooltip.css +1 -1
  206. package/src/ui/czi-vars.css +1 -45
  207. package/src/ui/isElementFullyVisible.js +1 -1
  208. package/src/ui/mathquill-editor/MathQuillEditorSymbolsPanel.js +1 -1
  209. package/src/ui/toCSSLineSpacing.js +0 -27
  210. package/build_customstyle_server.py +0 -7
  211. package/dist/FontSizeCommand.js +0 -80
  212. package/dist/FontSizeCommand.js.flow +0 -57
  213. package/dist/FontTypeCommand.js +0 -137
  214. package/dist/FontTypeCommand.js.flow +0 -100
  215. package/dist/HeadingCommand.js +0 -65
  216. package/dist/HeadingCommand.js.flow +0 -51
  217. package/dist/IndentCommand.js +0 -57
  218. package/dist/IndentCommand.js.flow +0 -41
  219. package/dist/MarkToggleCommand.js +0 -90
  220. package/dist/MarkToggleCommand.js.flow +0 -66
  221. package/dist/TextAlignCommand.js +0 -151
  222. package/dist/TextAlignCommand.js.flow +0 -122
  223. package/dist/TextColorCommand.js +0 -114
  224. package/dist/TextColorCommand.js.flow +0 -87
  225. package/dist/TextHighlightCommand.js +0 -118
  226. package/dist/TextHighlightCommand.js.flow +0 -91
  227. package/dist/TextLineSpacingCommand.js +0 -177
  228. package/dist/TextLineSpacingCommand.js.flow +0 -157
  229. package/dist/applyMark.js +0 -84
  230. package/dist/applyMark.js.flow +0 -61
  231. package/dist/clearMarks.js +0 -160
  232. package/dist/clearMarks.js.flow +0 -128
  233. package/dist/compareNumber.js +0 -18
  234. package/dist/compareNumber.js.flow +0 -11
  235. package/dist/consolidateListNodes.js +0 -291
  236. package/dist/consolidateListNodes.js.flow +0 -281
  237. package/dist/coverage/lcov-report/block-navigation.js +0 -77
  238. package/dist/coverage/lcov-report/block-navigation.js.flow +0 -79
  239. package/dist/coverage/lcov-report/prettify.js +0 -994
  240. package/dist/coverage/lcov-report/prettify.js.flow +0 -2
  241. package/dist/coverage/lcov-report/sorter.js +0 -187
  242. package/dist/coverage/lcov-report/sorter.js.flow +0 -170
  243. package/dist/findNodesWithSameMark.js +0 -89
  244. package/dist/findNodesWithSameMark.js.flow +0 -89
  245. package/dist/isBulletListNode.js +0 -14
  246. package/dist/isBulletListNode.js.flow +0 -9
  247. package/dist/isInsideListItem.js +0 -19
  248. package/dist/isInsideListItem.js.flow +0 -13
  249. package/dist/isListNode.js +0 -22
  250. package/dist/isListNode.js.flow +0 -13
  251. package/dist/isNodeSelectionForNodeType.js +0 -19
  252. package/dist/isNodeSelectionForNodeType.js.flow +0 -15
  253. package/dist/isOrderedListNode.js +0 -14
  254. package/dist/isOrderedListNode.js.flow +0 -9
  255. package/dist/isTextStyleMarkCommandEnabled.js +0 -59
  256. package/dist/isTextStyleMarkCommandEnabled.js.flow +0 -49
  257. package/dist/noop.js +0 -11
  258. package/dist/noop.js.flow +0 -5
  259. package/dist/toggleHeading.js +0 -135
  260. package/dist/toggleHeading.js.flow +0 -113
  261. package/dist/toggleList.js +0 -431
  262. package/dist/toggleList.js.flow +0 -450
  263. package/dist/transformAndPreserveTextSelection.js +0 -173
  264. package/dist/transformAndPreserveTextSelection.js.flow +0 -151
  265. package/dist/ui/ColorEditor.js +0 -118
  266. package/dist/ui/ColorEditor.js.flow +0 -101
  267. package/dist/ui/CustomButton.js +0 -62
  268. package/dist/ui/CustomButton.js.flow +0 -33
  269. package/dist/ui/PointerSurface.js +0 -173
  270. package/dist/ui/PointerSurface.js.flow +0 -141
  271. package/dist/ui/PopUp.js +0 -129
  272. package/dist/ui/PopUp.js.flow +0 -77
  273. package/dist/ui/PopUpManager.js +0 -266
  274. package/dist/ui/PopUpManager.js.flow +0 -213
  275. package/dist/ui/PopUpPosition.js +0 -156
  276. package/dist/ui/PopUpPosition.js.flow +0 -104
  277. package/dist/ui/PopUpTypes.js +0 -1
  278. package/dist/ui/TooltipSurface.js +0 -99
  279. package/dist/ui/TooltipSurface.js.flow +0 -76
  280. package/dist/ui/clamp.js +0 -18
  281. package/dist/ui/clamp.js.flow +0 -11
  282. package/dist/ui/createPopUp.js +0 -199
  283. package/dist/ui/createPopUp.js.flow +0 -205
  284. package/dist/ui/czi-animations.css +0 -15
  285. package/dist/ui/czi-color-editor.css +0 -56
  286. package/dist/ui/czi-custom-button.css +0 -93
  287. package/dist/ui/czi-pop-up.css +0 -32
  288. package/dist/ui/czi-tooltip-surface.css +0 -45
  289. package/dist/ui/preventEventDefault.js +0 -10
  290. package/dist/ui/preventEventDefault.js.flow +0 -5
  291. package/dist/ui/rects.js +0 -58
  292. package/dist/ui/rects.js.flow +0 -47
  293. package/dist/updateIndentLevel.js +0 -232
  294. package/dist/updateIndentLevel.js.flow +0 -211
  295. package/flow-typed/@molicit-citation.js +0 -5
  296. package/licit/server/customstyles/start.js +0 -184
  297. package/run_customstyle_server.py +0 -20
  298. package/src/FontSizeCommand.js +0 -57
  299. package/src/FontTypeCommand.js +0 -100
  300. package/src/HeadingCommand.js +0 -51
  301. package/src/IndentCommand.js +0 -41
  302. package/src/MarkToggleCommand.js +0 -66
  303. package/src/TextAlignCommand.js +0 -122
  304. package/src/TextColorCommand.js +0 -87
  305. package/src/TextHighlightCommand.js +0 -91
  306. package/src/TextLineSpacingCommand.js +0 -157
  307. package/src/applyMark.js +0 -61
  308. package/src/clearMarks.js +0 -128
  309. package/src/compareNumber.js +0 -11
  310. package/src/consolidateListNodes.js +0 -281
  311. package/src/findNodesWithSameMark.js +0 -89
  312. package/src/isBulletListNode.js +0 -9
  313. package/src/isInsideListItem.js +0 -13
  314. package/src/isListNode.js +0 -13
  315. package/src/isNodeSelectionForNodeType.js +0 -15
  316. package/src/isOrderedListNode.js +0 -9
  317. package/src/isTextStyleMarkCommandEnabled.js +0 -49
  318. package/src/noop.js +0 -5
  319. package/src/toggleHeading.js +0 -113
  320. package/src/toggleList.js +0 -450
  321. package/src/transformAndPreserveTextSelection.js +0 -151
  322. package/src/ui/ColorEditor.js +0 -101
  323. package/src/ui/CustomButton.js +0 -33
  324. package/src/ui/PointerSurface.js +0 -141
  325. package/src/ui/PopUp.js +0 -77
  326. package/src/ui/PopUpManager.js +0 -213
  327. package/src/ui/PopUpPosition.js +0 -104
  328. package/src/ui/PopUpTypes.js +0 -0
  329. package/src/ui/TooltipSurface.js +0 -76
  330. package/src/ui/clamp.js +0 -11
  331. package/src/ui/createPopUp.js +0 -205
  332. package/src/ui/czi-animations.css +0 -15
  333. package/src/ui/czi-color-editor.css +0 -56
  334. package/src/ui/czi-custom-button.css +0 -93
  335. package/src/ui/czi-pop-up.css +0 -32
  336. package/src/ui/czi-tooltip-surface.css +0 -45
  337. package/src/ui/preventEventDefault.js +0 -5
  338. package/src/ui/rects.js +0 -47
  339. package/src/updateIndentLevel.js +0 -211
  340. package/utils/build_customstyle_server.js +0 -72
@@ -1,281 +0,0 @@
1
- // @flow
2
-
3
- import isOrderedListNode from './isOrderedListNode';
4
- import isListNode from './isListNode';
5
- import { Fragment } from 'prosemirror-model';
6
- import { Node } from 'prosemirror-model';
7
- import { Transform } from 'prosemirror-transform';
8
-
9
- type JointInfo = {
10
- content: Fragment,
11
- deleteFrom: number,
12
- deleteTo: number,
13
- firstListNodePos: number,
14
- insertAt: number,
15
- };
16
-
17
- // This function consolidates list nodes among the same "Lists Island".
18
- //
19
- // ## Definition of a "Lists Island"
20
- // Separate list that are adjacent to each other are grouped as
21
- // a "Lists Island".
22
- // For example, the following HTML snippets contains two "Lists Island":
23
- //
24
- // <h1>text</h1>
25
- // <!-- Lists Island Starts -->
26
- // <ul><li>text</li><li>text</li></ul>
27
- // <ol><li>text</li><li>text</li></ul>
28
- // <!-- Lists Island Ends -->
29
- // <p>text</p>
30
- // <!-- Lists Island Starts -->
31
- // <ul><li>text</li><li>text</li></ul>
32
- // <ol><li>text</li><li>text</li></ul>
33
- // <!-- Lists Island Ends -->
34
- // <p>text</p>
35
- //
36
- // List nodes with the same list type and indent level among the same Lists
37
- // Island will be joined into one list node.
38
- // Note that this transform may change the current user selection.
39
- export default function consolidateListNodes(tr: Transform): Transform {
40
- if (tr.getMeta('dryrun')) {
41
- // This transform is potentially expensive to perform, so skip it if
42
- // the transform is performed as "dryrun".
43
- return tr;
44
- }
45
-
46
- let prevJointInfo;
47
-
48
- // Keep the loop running until there's no more list nodes that can be joined.
49
- while (true) {
50
- const jointInfo = traverseDocAndFindJointInfo(tr.doc, prevJointInfo);
51
- if (jointInfo) {
52
- const { deleteFrom, deleteTo, insertAt, content } = jointInfo;
53
- tr = tr.delete(deleteFrom, deleteTo);
54
- tr = tr.insert(insertAt, content);
55
- prevJointInfo = jointInfo;
56
- } else {
57
- tr = linkOrderedListCounters(tr);
58
- break;
59
- }
60
- }
61
- return tr;
62
- }
63
-
64
- /**
65
- * This ensures that ordered lists with the same indent level among the same
66
- * Lists Island share the same counter.
67
- *
68
- * For example, the following three lists:
69
- * --------
70
- * 1. AAA
71
- * 2. BBB
72
- * --------
73
- * a. CCC
74
- * d. DDD
75
- * --------
76
- * 1. EEE
77
- * 2. FFF
78
- * --------
79
- * Will transform into
80
- * --------
81
- * 1. AAA
82
- * 2. BBB
83
- * --------
84
- * a. CCC
85
- * d. DDD
86
- * --------
87
- * 3. EEE
88
- * 4. FFF
89
- * --------
90
- * This means that the 1st and the 3rd lists are linked.
91
- */
92
- function linkOrderedListCounters(tr: Transform): Transform {
93
- const from = 1;
94
- const to = tr.doc.nodeSize - 2;
95
- if (from >= to) {
96
- return tr;
97
- }
98
-
99
- const namedLists = new Set();
100
-
101
- let listsBefore = null;
102
- tr.doc.nodesBetween(from, to, (node, pos, parentNode) => {
103
- let willTraverseNodeChildren = true;
104
- if (isListNode(node)) {
105
- // List Node can't be nested, no need to traverse its children.
106
- willTraverseNodeChildren = false;
107
- const indent = node.attrs.indent || 0;
108
- const start = node.attrs.start || 1;
109
- const { name, following } = node.attrs;
110
- if (name) {
111
- namedLists.add(name);
112
- }
113
-
114
- if (listsBefore) {
115
- if (start === 1 && isOrderedListNode(node)) {
116
- // Look backward until we could find another ordered list node to
117
- // link with.
118
- let counterIsLinked;
119
- listsBefore.some((list, index) => {
120
- if (list.node.type !== node.type && list.indent === indent) {
121
- // This encounters different type of list node (e.g a bullet
122
- // list node), we need to restart the counter.
123
- // ------
124
- // 1. AAA
125
- // 2. BBB
126
- // ------
127
- // -. CCC
128
- // -. DDD
129
- // ------
130
- // 1. DDD <- Counter restarts here.
131
- // 2. EEE
132
- // ------
133
- counterIsLinked = false;
134
- return true;
135
- } else if (list.indent < indent) {
136
- // This encounters an ordered list node that has less indent.
137
- // we need to restart the counter.
138
- // ------
139
- // 1. AAA
140
- // 2. BBB
141
- // ------
142
- // 1. DDD <- Counter restarts here.
143
- // 2. EEE
144
- // ------
145
- counterIsLinked = false;
146
- return true;
147
- } else if (list.indent === indent) {
148
- // This encounters an ordered list node that has same indent.
149
- // Do not Restart the counter.
150
- // ------
151
- // 1. AAA
152
- // 2. BBB
153
- // ------
154
- // 3. DDD <- Counter continues here.
155
- // 4. EEE
156
- // ------
157
- counterIsLinked = true;
158
- return true;
159
- }
160
- return false;
161
- });
162
-
163
- if (counterIsLinked !== undefined) {
164
- tr = setCounterLinked(tr, pos, counterIsLinked);
165
- }
166
- }
167
- } else {
168
- // Found the first list among a new Lists Island.
169
- // ------
170
- // 1. AAA <- Counter restarts here.
171
- // 2. BBB
172
- listsBefore = [];
173
- if (isOrderedListNode(node)) {
174
- // The list may follow a previous list that is among another Lists
175
- // Island. If so, do not reset the list counter.
176
- const counterIsLinked = namedLists.has(following);
177
- tr = setCounterLinked(tr, pos, counterIsLinked);
178
- }
179
- }
180
- listsBefore.unshift({ parentNode, indent, node });
181
- } else {
182
- // Not traversing within any list node. No lists need to be updated.
183
- listsBefore = null;
184
- }
185
- return willTraverseNodeChildren;
186
- });
187
- return tr;
188
- }
189
-
190
- function setCounterLinked(
191
- tr: Transform,
192
- pos: number,
193
- linked: boolean
194
- ): Transform {
195
- const node = tr.doc.nodeAt(pos);
196
- const currentValue = node.attrs.counterReset || null;
197
- const nextValue = linked ? 'none' : null;
198
- if (nextValue !== currentValue) {
199
- const nodeAttrs = { ...node.attrs, counterReset: nextValue };
200
- tr = tr.setNodeMarkup(pos, node.type, nodeAttrs, node.marks);
201
- }
202
- return tr;
203
- }
204
-
205
- function traverseDocAndFindJointInfo(
206
- doc: Node,
207
- prevJointInfo: ?JointInfo
208
- ): ?JointInfo {
209
- const minFrom = 1;
210
-
211
- const from = prevJointInfo
212
- ? Math.max(minFrom, prevJointInfo.firstListNodePos)
213
- : minFrom;
214
-
215
- const to = doc.nodeSize - 2;
216
-
217
- if (to <= from) {
218
- return null;
219
- }
220
-
221
- let prevNode = null;
222
- let jointInfo = null;
223
- let firstListNodePos = 0;
224
-
225
- // Perform the breadth-first traversal.
226
- doc.nodesBetween(from, to, (node, pos) => {
227
- if (jointInfo) {
228
- // We've found the list to merge. Stop traversing deeper.
229
- return false;
230
- } else if (isListNode(node)) {
231
- firstListNodePos = firstListNodePos === 0 ? pos : firstListNodePos;
232
- jointInfo = resolveJointInfo(node, pos, prevNode, firstListNodePos);
233
- prevNode = node;
234
- // Stop the traversing recursively inside the this list node because
235
- // its content only contains inline nodes.
236
- return false;
237
- } else {
238
- prevNode = node;
239
- // This is not a list node, will keep traversing deeper until we've found
240
- // a list node or reach the leaf node.
241
- return true;
242
- }
243
- });
244
-
245
- if (jointInfo) {
246
- // Reduce the range of the next traversal so it could run faster.
247
- jointInfo.firstListNodePos = firstListNodePos;
248
- }
249
-
250
- return jointInfo;
251
- }
252
-
253
- // If two siblings nodes that can be joined as single list, returns
254
- // the information of how to join them.
255
- function resolveJointInfo(
256
- node: Node,
257
- pos: number,
258
- prevNode: ?Node,
259
- firstListNodePos: number
260
- ): ?JointInfo {
261
- if (!prevNode || !canJoinListNodes(node, prevNode)) {
262
- return null;
263
- }
264
-
265
- return {
266
- deleteFrom: pos,
267
- deleteTo: pos + node.nodeSize,
268
- insertAt: pos - 1,
269
- content: node.content,
270
- firstListNodePos,
271
- };
272
- }
273
-
274
- function canJoinListNodes(one: Node, two: Node): boolean {
275
- return !!(
276
- one.type === two.type &&
277
- one.attrs.indent === two.attrs.indent &&
278
- isListNode(one) &&
279
- isListNode(two)
280
- );
281
- }
@@ -1,77 +0,0 @@
1
- "use strict";
2
-
3
- /* eslint-disable */
4
- var jumpToCode = function init() {
5
- // Classes of code we would like to highlight in the file view
6
- var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no']; // Elements to highlight in the file listing view
7
-
8
- var fileListingElements = ['td.pct.low']; // We don't want to select elements that are direct descendants of another match
9
-
10
- var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > `
11
- // Selecter that finds elements on the page to which we can jump
12
-
13
- var selector = fileListingElements.join(', ') + ', ' + notSelector + missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b`
14
- // The NodeList of matching elements
15
-
16
- var missingCoverageElements = document.querySelectorAll(selector);
17
- var currentIndex;
18
-
19
- function toggleClass(index) {
20
- missingCoverageElements.item(currentIndex).classList.remove('highlighted');
21
- missingCoverageElements.item(index).classList.add('highlighted');
22
- }
23
-
24
- function makeCurrent(index) {
25
- toggleClass(index);
26
- currentIndex = index;
27
- missingCoverageElements.item(index).scrollIntoView({
28
- behavior: 'smooth',
29
- block: 'center',
30
- inline: 'center'
31
- });
32
- }
33
-
34
- function goToPrevious() {
35
- var nextIndex = 0;
36
-
37
- if (typeof currentIndex !== 'number' || currentIndex === 0) {
38
- nextIndex = missingCoverageElements.length - 1;
39
- } else if (missingCoverageElements.length > 1) {
40
- nextIndex = currentIndex - 1;
41
- }
42
-
43
- makeCurrent(nextIndex);
44
- }
45
-
46
- function goToNext() {
47
- var nextIndex = 0;
48
-
49
- if (typeof currentIndex === 'number' && currentIndex < missingCoverageElements.length - 1) {
50
- nextIndex = currentIndex + 1;
51
- }
52
-
53
- makeCurrent(nextIndex);
54
- }
55
-
56
- return function jump(event) {
57
- switch (event.which) {
58
- case 78: // n
59
-
60
- case 74:
61
- // j
62
- goToNext();
63
- break;
64
-
65
- case 66: // b
66
-
67
- case 75: // k
68
-
69
- case 80:
70
- // p
71
- goToPrevious();
72
- break;
73
- }
74
- };
75
- }();
76
-
77
- window.addEventListener('keydown', jumpToCode);
@@ -1,79 +0,0 @@
1
- /* eslint-disable */
2
- var jumpToCode = (function init() {
3
- // Classes of code we would like to highlight in the file view
4
- var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no'];
5
-
6
- // Elements to highlight in the file listing view
7
- var fileListingElements = ['td.pct.low'];
8
-
9
- // We don't want to select elements that are direct descendants of another match
10
- var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > `
11
-
12
- // Selecter that finds elements on the page to which we can jump
13
- var selector =
14
- fileListingElements.join(', ') +
15
- ', ' +
16
- notSelector +
17
- missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b`
18
-
19
- // The NodeList of matching elements
20
- var missingCoverageElements = document.querySelectorAll(selector);
21
-
22
- var currentIndex;
23
-
24
- function toggleClass(index) {
25
- missingCoverageElements
26
- .item(currentIndex)
27
- .classList.remove('highlighted');
28
- missingCoverageElements.item(index).classList.add('highlighted');
29
- }
30
-
31
- function makeCurrent(index) {
32
- toggleClass(index);
33
- currentIndex = index;
34
- missingCoverageElements.item(index).scrollIntoView({
35
- behavior: 'smooth',
36
- block: 'center',
37
- inline: 'center'
38
- });
39
- }
40
-
41
- function goToPrevious() {
42
- var nextIndex = 0;
43
- if (typeof currentIndex !== 'number' || currentIndex === 0) {
44
- nextIndex = missingCoverageElements.length - 1;
45
- } else if (missingCoverageElements.length > 1) {
46
- nextIndex = currentIndex - 1;
47
- }
48
-
49
- makeCurrent(nextIndex);
50
- }
51
-
52
- function goToNext() {
53
- var nextIndex = 0;
54
-
55
- if (
56
- typeof currentIndex === 'number' &&
57
- currentIndex < missingCoverageElements.length - 1
58
- ) {
59
- nextIndex = currentIndex + 1;
60
- }
61
-
62
- makeCurrent(nextIndex);
63
- }
64
-
65
- return function jump(event) {
66
- switch (event.which) {
67
- case 78: // n
68
- case 74: // j
69
- goToNext();
70
- break;
71
- case 66: // b
72
- case 75: // k
73
- case 80: // p
74
- goToPrevious();
75
- break;
76
- }
77
- };
78
- })();
79
- window.addEventListener('keydown', jumpToCode);