@modusoperandi/licit 1.0.4 → 1.0.5

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 (317) hide show
  1. package/BlockquoteInsertNewLineCommand.js +7 -8
  2. package/BlockquoteInsertNewLineCommand.js.flow +77 -77
  3. package/BlockquoteNodeSpec.js +1 -1
  4. package/BlockquoteNodeSpec.js.flow +30 -30
  5. package/BlockquoteToggleCommand.js +8 -9
  6. package/BlockquoteToggleCommand.js.flow +56 -56
  7. package/BookmarkNodeSpec.js +1 -1
  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 +8 -9
  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 +3 -4
  16. package/ContentPlaceholderPlugin.js.flow +187 -187
  17. package/CursorPlaceholderPlugin.js +4 -4
  18. package/CursorPlaceholderPlugin.js.flow +115 -115
  19. package/DocLayoutCommand.js +9 -10
  20. package/DocLayoutCommand.js.flow +99 -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.flow +187 -187
  25. package/EditorMarks.js +1 -1
  26. package/EditorMarks.js.flow +71 -71
  27. package/EditorNodes.js +1 -1
  28. package/EditorNodes.js.flow +59 -59
  29. package/EditorPageLayoutPlugin.js +2 -2
  30. package/EditorPageLayoutPlugin.js.flow +67 -67
  31. package/EditorPlugins.js.flow +8 -8
  32. package/EditorSchema.js.flow +12 -12
  33. package/EditorState.js.flow +7 -7
  34. package/FontSizeMarkSpec.js.flow +49 -49
  35. package/FontTypeMarkSpec.js.flow +80 -80
  36. package/HTMLMutator.js +2 -3
  37. package/HTMLMutator.js.flow +59 -59
  38. package/HardBreakNodeSpec.js.flow +15 -15
  39. package/HeadingNodeSpec.js +1 -1
  40. package/HeadingNodeSpec.js.flow +52 -52
  41. package/HistoryRedoCommand.js +7 -8
  42. package/HistoryRedoCommand.js.flow +41 -41
  43. package/HistoryUndoCommand.js +7 -8
  44. package/HistoryUndoCommand.js.flow +41 -41
  45. package/HorizontalRuleCommand.js +7 -8
  46. package/HorizontalRuleCommand.js.flow +71 -71
  47. package/HorizontalRuleNodeSpec.js.flow +39 -39
  48. package/ImageUploadPlaceholderPlugin.js +2 -2
  49. package/ImageUploadPlaceholderPlugin.js.flow +192 -192
  50. package/LinkMarkSpec.js.flow +32 -32
  51. package/LinkSetURLCommand.js +8 -9
  52. package/LinkSetURLCommand.js.flow +117 -117
  53. package/LinkTooltipPlugin.js +3 -4
  54. package/LinkTooltipPlugin.js.flow +190 -190
  55. package/ListItemInsertNewLineCommand.js +7 -8
  56. package/ListItemInsertNewLineCommand.js.flow +77 -77
  57. package/ListItemMergeCommand.js +9 -10
  58. package/ListItemMergeCommand.js.flow +199 -199
  59. package/ListItemNodeSpec.js.flow +52 -52
  60. package/ListSplitCommand.js +7 -8
  61. package/ListSplitCommand.js.flow +54 -54
  62. package/ListToggleCommand.js +11 -12
  63. package/ListToggleCommand.js.flow +99 -99
  64. package/MarkNames.js.flow +18 -18
  65. package/MarksClearCommand.js +9 -10
  66. package/MarksClearCommand.js.flow +65 -65
  67. package/MathEditCommand.js +8 -9
  68. package/MathEditCommand.js.flow +120 -120
  69. package/MathNodeSpec.js.flow +46 -46
  70. package/NodeNames.js.flow +23 -23
  71. package/OrderedListNodeSpec.js +1 -1
  72. package/OrderedListNodeSpec.js.flow +132 -132
  73. package/ParagraphNodeSpec.js.flow +156 -156
  74. package/ParagraphSpacingCommand.js +9 -10
  75. package/ParagraphSpacingCommand.js.flow +144 -144
  76. package/PrintCommand.js +9 -10
  77. package/PrintCommand.js.flow +53 -53
  78. package/SelectionPlaceholderPlugin.js +4 -4
  79. package/SelectionPlaceholderPlugin.js.flow +131 -131
  80. package/SpacerMarkSpec.js +1 -1
  81. package/SpacerMarkSpec.js.flow +47 -47
  82. package/StrikeMarkSpec.js.flow +21 -21
  83. package/StrongMarkSpec.js.flow +25 -25
  84. package/StyleView.js +2 -3
  85. package/StyleView.js.flow +19 -19
  86. package/TableBackgroundColorCommand.js +25 -12
  87. package/TableBackgroundColorCommand.js.flow +83 -75
  88. package/TableBorderColorCommand.js +25 -12
  89. package/TableBorderColorCommand.js.flow +86 -75
  90. package/TableCellColorCommand.js +11 -11
  91. package/TableCellColorCommand.js.flow +75 -75
  92. package/TableCellMenuPlugin.js +3 -4
  93. package/TableCellMenuPlugin.js.flow +132 -132
  94. package/TableInsertCommand.js +9 -10
  95. package/TableInsertCommand.js.flow +120 -120
  96. package/TableMergeCellsCommand.js +7 -8
  97. package/TableMergeCellsCommand.js.flow +112 -112
  98. package/TableNodesSpecs.js.flow +78 -78
  99. package/TablePlugins.js.flow +14 -14
  100. package/TableResizePlugin.js +3 -4
  101. package/TableResizePlugin.js.flow +631 -631
  102. package/TextColorMarkSpec.js.flow +35 -35
  103. package/TextHighlightMarkSpec.js.flow +38 -38
  104. package/TextInsertTabSpaceCommand.js +7 -8
  105. package/TextInsertTabSpaceCommand.js.flow +106 -106
  106. package/TextNoWrapMarkSpec.js.flow +14 -14
  107. package/TextNodeSpec.js.flow +7 -7
  108. package/TextSelectionMarkSpec.js.flow +24 -24
  109. package/TextSubMarkSpec.js.flow +20 -20
  110. package/TextSuperMarkSpec.js.flow +20 -20
  111. package/TextUnderlineMarkSpec.js.flow +27 -27
  112. package/Types.js +5 -0
  113. package/Types.js.flow +80 -75
  114. package/WebFontLoader.js +2 -3
  115. package/WebFontLoader.js.flow +22 -22
  116. package/blockQuoteInputRule.js.flow +36 -36
  117. package/bom.xml +21569 -23179
  118. package/browser.js.flow +7 -7
  119. package/buildEditorPlugins.js +2 -3
  120. package/buildEditorPlugins.js.flow +49 -49
  121. package/buildInputRules.js.flow +81 -81
  122. package/client/CollabConnector.js +12 -12
  123. package/client/CollabConnector.js.flow +90 -90
  124. package/client/EditorConnection.js +2 -3
  125. package/client/EditorConnection.js.flow +323 -323
  126. package/client/Licit.js +59 -60
  127. package/client/Licit.js.flow +643 -643
  128. package/client/Licit.test.js +2 -2
  129. package/client/Licit.test.js.flow +98 -98
  130. package/client/Reporter.js +2 -3
  131. package/client/Reporter.js.flow +37 -37
  132. package/client/SimpleConnector.js +1 -1
  133. package/client/SimpleConnector.js.flow +61 -61
  134. package/client/http.js.flow +70 -70
  135. package/client/licit.css +12 -12
  136. package/client/throttle.js.flow +27 -27
  137. package/convertFromDOMElement.js.flow +36 -36
  138. package/convertFromHTML.js.flow +17 -17
  139. package/convertFromJSON.js.flow +56 -56
  140. package/convertToCSSPTValue.js.flow +22 -22
  141. package/convertToJSON.js.flow +7 -7
  142. package/createCommand.js +8 -9
  143. package/createCommand.js.flow +62 -62
  144. package/createEditorKeyMap.js +1 -1
  145. package/createEditorKeyMap.js.flow +94 -94
  146. package/createEmptyEditorState.js.flow +31 -31
  147. package/createTableResizingPlugin.js.flow +86 -86
  148. package/findActionableCell.js.flow +74 -74
  149. package/findActiveMark.js.flow +32 -32
  150. package/hyphenize.js.flow +17 -17
  151. package/index.d.ts +165 -165
  152. package/index.js.flow +10 -10
  153. package/insertTable.js.flow +56 -56
  154. package/isEditorStateEmpty.js.flow +32 -32
  155. package/isTableNode.js.flow +15 -15
  156. package/joinDown.js.flow +27 -27
  157. package/joinListNode.js.flow +55 -55
  158. package/joinUp.js.flow +39 -39
  159. package/keymaps.js.flow +185 -185
  160. package/lookUpElement.js.flow +14 -14
  161. package/nodeAt.js.flow +12 -12
  162. package/normalizeHTML.js.flow +78 -78
  163. package/package.json +156 -155
  164. package/patchAnchorElements.js.flow +38 -38
  165. package/patchBreakElements.js.flow +22 -22
  166. package/patchElementInlineStyles.js.flow +92 -92
  167. package/patchListElements.js.flow +276 -276
  168. package/patchMathElements.js.flow +60 -60
  169. package/patchParagraphElements.js.flow +20 -20
  170. package/patchStyleElements.js.flow +196 -196
  171. package/patchTableElements.js.flow +89 -89
  172. package/rebaseDocWithSteps.js.flow +42 -42
  173. package/sanitizeURL.js.flow +13 -13
  174. package/splitListItem.js +1 -1
  175. package/splitListItem.js.flow +191 -191
  176. package/styles.css +19 -19
  177. package/styles0.css +29 -29
  178. package/toClosestFontPtSize.js.flow +22 -22
  179. package/toSafeHTMLDocument.js.flow +9 -9
  180. package/toggleBlockquote.js.flow +108 -108
  181. package/toggleCodeBlock.js.flow +102 -102
  182. package/ui/AlertInfo.js +7 -8
  183. package/ui/AlertInfo.js.flow +64 -64
  184. package/ui/BookmarkNodeView.js +8 -10
  185. package/ui/BookmarkNodeView.js.flow +66 -66
  186. package/ui/CommandButton.js +7 -8
  187. package/ui/CommandButton.js.flow +68 -68
  188. package/ui/CommandMenu.js +8 -9
  189. package/ui/CommandMenu.js.flow +75 -75
  190. package/ui/CommandMenuButton.js +13 -14
  191. package/ui/CommandMenuButton.js.flow +131 -131
  192. package/ui/CustomEditorView.js +8 -9
  193. package/ui/CustomEditorView.js.flow +28 -28
  194. package/ui/CustomMenu.js +3 -4
  195. package/ui/CustomMenu.js.flow +17 -17
  196. package/ui/CustomMenuItem.js +6 -8
  197. package/ui/CustomMenuItem.js.flow +36 -36
  198. package/ui/CustomNodeView.js +2 -3
  199. package/ui/CustomNodeView.js.flow +200 -200
  200. package/ui/CustomRadioButton.js +6 -7
  201. package/ui/CustomRadioButton.js.flow +65 -65
  202. package/ui/DocLayoutEditor.js +9 -10
  203. package/ui/DocLayoutEditor.js.flow +146 -146
  204. package/ui/Editor.js +15 -16
  205. package/ui/Editor.js.flow +288 -288
  206. package/ui/EditorFrameset.js +5 -6
  207. package/ui/EditorFrameset.js.flow +81 -81
  208. package/ui/EditorToolbar.js +13 -14
  209. package/ui/EditorToolbar.js.flow +218 -218
  210. package/ui/EditorToolbarConfig.js.flow +164 -164
  211. package/ui/FontSizeCommandMenuButton.js +5 -6
  212. package/ui/FontSizeCommandMenuButton.js.flow +66 -66
  213. package/ui/FontTypeCommandMenuButton.js +5 -6
  214. package/ui/FontTypeCommandMenuButton.js.flow +61 -61
  215. package/ui/Frag.js +3 -4
  216. package/ui/Frag.js.flow +13 -13
  217. package/ui/Icon.js +9 -12
  218. package/ui/Icon.js.flow +89 -89
  219. package/ui/ImageInlineEditor.js +6 -7
  220. package/ui/ImageInlineEditor.js.flow +67 -67
  221. package/ui/KeyCodes.js.flow +12 -12
  222. package/ui/LinkTooltip.js +9 -10
  223. package/ui/LinkTooltip.js.flow +85 -85
  224. package/ui/LinkURLEditor.js +9 -10
  225. package/ui/LinkURLEditor.js.flow +117 -117
  226. package/ui/ListItemNodeView.js +2 -3
  227. package/ui/ListItemNodeView.js.flow +98 -98
  228. package/ui/ListTypeButton.js +13 -14
  229. package/ui/ListTypeButton.js.flow +131 -131
  230. package/ui/ListTypeCommandButton.js +5 -6
  231. package/ui/ListTypeCommandButton.js.flow +85 -85
  232. package/ui/ListTypeMenu.js +11 -12
  233. package/ui/ListTypeMenu.js.flow +70 -70
  234. package/ui/LoadingIndicator.js +3 -4
  235. package/ui/LoadingIndicator.js.flow +20 -20
  236. package/ui/MathEditor.js +10 -11
  237. package/ui/MathEditor.js.flow +78 -78
  238. package/ui/MathInlineEditor.js +8 -9
  239. package/ui/MathInlineEditor.js.flow +102 -102
  240. package/ui/MathNodeView.js +14 -16
  241. package/ui/MathNodeView.js.flow +186 -186
  242. package/ui/PasteMenu.js +10 -11
  243. package/ui/PasteMenu.js.flow +57 -57
  244. package/ui/ResizeObserver.js.flow +106 -106
  245. package/ui/RichTextEditor.js +9 -10
  246. package/ui/RichTextEditor.js.flow +133 -133
  247. package/ui/SelectionObserver.js +2 -3
  248. package/ui/SelectionObserver.js.flow +134 -134
  249. package/ui/TableCellMenu.js +6 -7
  250. package/ui/TableCellMenu.js.flow +51 -51
  251. package/ui/TableGridSizeEditor.js +19 -21
  252. package/ui/TableGridSizeEditor.js.flow +184 -184
  253. package/ui/TableNodeView.js +3 -4
  254. package/ui/TableNodeView.js.flow +25 -25
  255. package/ui/bindScrollHandler.js.flow +46 -46
  256. package/ui/canUseCSSFont.js.flow +43 -43
  257. package/ui/czi-body-layout-editor.css +16 -16
  258. package/ui/czi-bookmark-view.css +10 -10
  259. package/ui/czi-cursor-placeholder.css +36 -36
  260. package/ui/czi-custom-menu-button.css +18 -18
  261. package/ui/czi-custom-menu-item.css +30 -30
  262. package/ui/czi-custom-menu.css +8 -8
  263. package/ui/czi-custom-radio-button.css +80 -80
  264. package/ui/czi-custom-scrollbar.css +21 -21
  265. package/ui/czi-editor-frameset.css +81 -81
  266. package/ui/czi-editor-toolbar.css +122 -122
  267. package/ui/czi-editor.css +220 -220
  268. package/ui/czi-form.css +107 -107
  269. package/ui/czi-frag.css +3 -3
  270. package/ui/czi-heading.css +40 -40
  271. package/ui/czi-icon.css +72 -72
  272. package/ui/czi-image-resize-box.css +165 -165
  273. package/ui/czi-image-upload-editor.css +57 -57
  274. package/ui/czi-image-upload-placeholder.css +50 -50
  275. package/ui/czi-image-url-editor.css +38 -38
  276. package/ui/czi-image-view.css +125 -125
  277. package/ui/czi-indent.css +137 -137
  278. package/ui/czi-inline-editor.css +20 -20
  279. package/ui/czi-link-tooltip.css +71 -71
  280. package/ui/czi-list.css +410 -410
  281. package/ui/czi-loading-indicator.css +111 -111
  282. package/ui/czi-math-view.css +62 -62
  283. package/ui/czi-selection-placeholder.css +24 -24
  284. package/ui/czi-table-cell-menu.css +14 -14
  285. package/ui/czi-table-grid-size-editor.css +37 -37
  286. package/ui/czi-table.css +87 -87
  287. package/ui/czi-vars.css +2 -2
  288. package/ui/findActiveFontSize.js.flow +58 -58
  289. package/ui/findActiveFontType.js.flow +38 -38
  290. package/ui/fonts.css +460 -460
  291. package/ui/handleEditorDrop.js.flow +28 -28
  292. package/ui/handleEditorKeyDown.js.flow +39 -39
  293. package/ui/handleEditorPaste.js.flow +33 -33
  294. package/ui/htmlElementToRect.js.flow +18 -18
  295. package/ui/icon-font.css +9 -9
  296. package/ui/injectStyleSheet.js.flow +42 -42
  297. package/ui/isElementFullyVisible.js.flow +26 -26
  298. package/ui/isOffline.js.flow +8 -8
  299. package/ui/isReactClass.js.flow +12 -12
  300. package/ui/listType.css +21 -21
  301. package/ui/mathquill-editor/MathQuillEditor.js +15 -17
  302. package/ui/mathquill-editor/MathQuillEditor.js.flow +159 -159
  303. package/ui/mathquill-editor/MathQuillEditorSymbols.js.flow +483 -483
  304. package/ui/mathquill-editor/MathQuillEditorSymbolsPanel.js +6 -7
  305. package/ui/mathquill-editor/MathQuillEditorSymbolsPanel.js.flow +50 -50
  306. package/ui/mathquill-editor/czi-mathquill-editor-symbols-panel.css +39 -39
  307. package/ui/mathquill-editor/czi-mathquill-editor.css +50 -50
  308. package/ui/mathquill-editor/mathquill-import-kludge.js.flow +24 -24
  309. package/ui/renderLaTeXAsHTML.js +1 -1
  310. package/ui/renderLaTeXAsHTML.js.flow +46 -46
  311. package/ui/resolveImage.js +1 -1
  312. package/ui/resolveImage.js.flow +123 -123
  313. package/ui/toCSSColor.js.flow +51 -51
  314. package/ui/toCSSLineSpacing.js.flow +55 -55
  315. package/ui/toHexColor.js.flow +26 -26
  316. package/ui/uuid.js.flow +9 -9
  317. package/uuid.js.flow +9 -9
@@ -1,55 +1,55 @@
1
- // @flow
2
-
3
- import { Schema } from 'prosemirror-model';
4
- import { TextSelection } from 'prosemirror-state';
5
- import { Transform } from 'prosemirror-transform';
6
-
7
- import { isListNode } from '@modusoperandi/licit-ui-commands';
8
- import joinDown from './joinDown';
9
- import joinUp from './joinUp';
10
-
11
- export default function joinListNode(
12
- tr: Transform,
13
- schema: Schema,
14
- listNodePos: number
15
- ): Transform {
16
- if (!tr.doc || !tr.selection) {
17
- return tr;
18
- }
19
- const node = tr.doc.nodeAt(listNodePos);
20
- if (!isListNode(node)) {
21
- return tr;
22
- }
23
- const initialSelection = tr.selection;
24
- const listFromPos = listNodePos;
25
- const listToPos = listFromPos + node.nodeSize;
26
- const $fromPos = tr.doc.resolve(listFromPos);
27
- const $toPos = tr.doc.resolve(listToPos);
28
-
29
- let selectionOffset = 0;
30
- if (
31
- $toPos.nodeAfter &&
32
- $toPos.nodeAfter.type === node.type &&
33
- $toPos.nodeAfter.attrs.level === node.attrs.level
34
- ) {
35
- tr = joinDown(tr);
36
- }
37
-
38
- if (
39
- $fromPos.nodeBefore &&
40
- $fromPos.nodeBefore.type === node.type &&
41
- $fromPos.nodeBefore.attrs.level === node.attrs.level
42
- ) {
43
- selectionOffset -= 2;
44
- tr = joinUp(tr);
45
- }
46
-
47
- const selection = TextSelection.create(
48
- tr.doc,
49
- initialSelection.from + selectionOffset,
50
- initialSelection.to + selectionOffset
51
- );
52
-
53
- tr = tr.setSelection(selection);
54
- return tr;
55
- }
1
+ // @flow
2
+
3
+ import { Schema } from 'prosemirror-model';
4
+ import { TextSelection } from 'prosemirror-state';
5
+ import { Transform } from 'prosemirror-transform';
6
+
7
+ import { isListNode } from '@modusoperandi/licit-ui-commands';
8
+ import joinDown from './joinDown';
9
+ import joinUp from './joinUp';
10
+
11
+ export default function joinListNode(
12
+ tr: Transform,
13
+ schema: Schema,
14
+ listNodePos: number
15
+ ): Transform {
16
+ if (!tr.doc || !tr.selection) {
17
+ return tr;
18
+ }
19
+ const node = tr.doc.nodeAt(listNodePos);
20
+ if (!isListNode(node)) {
21
+ return tr;
22
+ }
23
+ const initialSelection = tr.selection;
24
+ const listFromPos = listNodePos;
25
+ const listToPos = listFromPos + node.nodeSize;
26
+ const $fromPos = tr.doc.resolve(listFromPos);
27
+ const $toPos = tr.doc.resolve(listToPos);
28
+
29
+ let selectionOffset = 0;
30
+ if (
31
+ $toPos.nodeAfter &&
32
+ $toPos.nodeAfter.type === node.type &&
33
+ $toPos.nodeAfter.attrs.level === node.attrs.level
34
+ ) {
35
+ tr = joinDown(tr);
36
+ }
37
+
38
+ if (
39
+ $fromPos.nodeBefore &&
40
+ $fromPos.nodeBefore.type === node.type &&
41
+ $fromPos.nodeBefore.attrs.level === node.attrs.level
42
+ ) {
43
+ selectionOffset -= 2;
44
+ tr = joinUp(tr);
45
+ }
46
+
47
+ const selection = TextSelection.create(
48
+ tr.doc,
49
+ initialSelection.from + selectionOffset,
50
+ initialSelection.to + selectionOffset
51
+ );
52
+
53
+ tr = tr.setSelection(selection);
54
+ return tr;
55
+ }
package/joinUp.js.flow CHANGED
@@ -1,39 +1,39 @@
1
- // @flow
2
- // https://github.com/ProseMirror/prosemirror-commands/blob/master/src/commands.js
3
-
4
- import { NodeSelection } from 'prosemirror-state';
5
- import { Transform } from 'prosemirror-transform';
6
- import { canJoin } from 'prosemirror-transform';
7
- import { joinPoint } from 'prosemirror-transform';
8
-
9
- // Join the selected block or, if there is a text selection, the
10
- // closest ancestor block of the selection that can be joined, with
11
- // the sibling above it.
12
- export default function joinUp(tr: Transform): Transform {
13
- const sel = tr.selection;
14
- const nodeSel = sel instanceof NodeSelection;
15
- let point;
16
- if (nodeSel) {
17
- if (sel.node.isTextblock || !canJoin(tr.doc, sel.from)) {
18
- return tr;
19
- }
20
- point = sel.from;
21
- } else {
22
- point = joinPoint(tr.doc, sel.from, -1);
23
- if (point === null || point === undefined) {
24
- return tr;
25
- }
26
- }
27
-
28
- tr = tr.join(point);
29
- if (nodeSel) {
30
- tr = tr.setSelection(
31
- NodeSelection.create(
32
- tr.doc,
33
- point - tr.doc.resolve(point).nodeBefore.nodeSize
34
- )
35
- );
36
- }
37
-
38
- return tr;
39
- }
1
+ // @flow
2
+ // https://github.com/ProseMirror/prosemirror-commands/blob/master/src/commands.js
3
+
4
+ import { NodeSelection } from 'prosemirror-state';
5
+ import { Transform } from 'prosemirror-transform';
6
+ import { canJoin } from 'prosemirror-transform';
7
+ import { joinPoint } from 'prosemirror-transform';
8
+
9
+ // Join the selected block or, if there is a text selection, the
10
+ // closest ancestor block of the selection that can be joined, with
11
+ // the sibling above it.
12
+ export default function joinUp(tr: Transform): Transform {
13
+ const sel = tr.selection;
14
+ const nodeSel = sel instanceof NodeSelection;
15
+ let point;
16
+ if (nodeSel) {
17
+ if (sel.node.isTextblock || !canJoin(tr.doc, sel.from)) {
18
+ return tr;
19
+ }
20
+ point = sel.from;
21
+ } else {
22
+ point = joinPoint(tr.doc, sel.from, -1);
23
+ if (point === null || point === undefined) {
24
+ return tr;
25
+ }
26
+ }
27
+
28
+ tr = tr.join(point);
29
+ if (nodeSel) {
30
+ tr = tr.setSelection(
31
+ NodeSelection.create(
32
+ tr.doc,
33
+ point - tr.doc.resolve(point).nodeBefore.nodeSize
34
+ )
35
+ );
36
+ }
37
+
38
+ return tr;
39
+ }
package/keymaps.js.flow CHANGED
@@ -1,185 +1,185 @@
1
- // @flow
2
-
3
- import Keymap from 'browserkeymap';
4
-
5
- import browser from './browser';
6
-
7
- import {
8
- makeKeyMap,
9
- makeKeyMapWithCommon,
10
- } from '@modusoperandi/licit-doc-attrs-step';
11
-
12
- // https://tinyurl.com/ybwf3wex
13
-
14
- export function tooltip(keymap: ?Keymap): ?string {
15
- if (keymap) {
16
- let shortcut;
17
- if (browser.isMac()) {
18
- shortcut = keymap.mac
19
- .replace(/Cmd/i, '⌘')
20
- .replace(/Shift/i, '⇧')
21
- .replace(/Ctrl/i, '^')
22
- .replace(/Alt/i, '⌥');
23
- } else {
24
- shortcut = keymap.windows;
25
- }
26
- return `${keymap.description} (${shortcut})`;
27
- }
28
- return null;
29
- }
30
-
31
- export const KEY_BACK_DELETE = makeKeyMapWithCommon('', 'Backspace');
32
- export const KEY_FORWARD_DELETE = makeKeyMapWithCommon('', 'Delete');
33
- export const KEY_INSERT_HORIZONTAL_RULE = makeKeyMapWithCommon(
34
- 'Insert horizontal rule',
35
- 'Mod-Shift--'
36
- );
37
- export const KEY_INSERT_NEW_LINE = makeKeyMapWithCommon(
38
- 'Insert new line',
39
- 'Shift-Enter'
40
- );
41
- export const KEY_INSERT_NEW_LINE_IN_BLOCKQUOTE = makeKeyMapWithCommon(
42
- 'Insert new line in blockquote',
43
- 'Shift-Enter'
44
- );
45
- export const KEY_INSERT_NEW_LINE_IN_LIST_ITEM = makeKeyMapWithCommon(
46
- 'Insert new line in list item',
47
- 'Shift-Enter'
48
- );
49
- export const KEY_REDO = makeKeyMapWithCommon('Redo', 'Mod-Shift-z');
50
- export const KEY_SET_NORMAL_TEXT = makeKeyMap(
51
- 'Normal text',
52
- 'Ctrl-0',
53
- 'Cmd-Alt-0'
54
- );
55
- export const KEY_SHIFT_BACKSPACE = makeKeyMapWithCommon(
56
- 'Shift Backspace',
57
- 'Shift-Backspace'
58
- );
59
- export const KEY_SPLIT_CODEBLOCK = makeKeyMapWithCommon(
60
- 'Split code block',
61
- 'Enter'
62
- );
63
- export const KEY_SPLIT_LIST_ITEM = makeKeyMapWithCommon(
64
- 'Split list item',
65
- 'Enter'
66
- );
67
- export const KEY_TAB = makeKeyMapWithCommon('', 'Tab');
68
- export const KEY_TAB_SHIFT = makeKeyMapWithCommon('', 'Shift-Tab');
69
- export const KEY_TOGGLE_BLOCK_QUOTE = makeKeyMap(
70
- 'Block quote',
71
- 'Ctrl-7',
72
- 'Cmd-Alt-7'
73
- );
74
- export const KEY_TOGGLE_BOLD = makeKeyMapWithCommon('Toggle bold', 'Mod-b');
75
- export const KEY_TOGGLE_BULLET_LIST = makeKeyMapWithCommon(
76
- 'Toggle bullet list',
77
- 'Mod-Shift-b'
78
- );
79
- export const KEY_TOGGLE_CODE_BLOCK = makeKeyMap(
80
- 'Code block',
81
- 'Ctrl-8',
82
- 'Cmd-Alt-8'
83
- );
84
- export const KEY_TOGGLE_HEADING_1 = makeKeyMap(
85
- 'Heading 1',
86
- 'Ctrl-1',
87
- 'Cmd-Alt-1'
88
- );
89
- export const KEY_TOGGLE_HEADING_2 = makeKeyMap(
90
- 'Heading 2',
91
- 'Ctrl-2',
92
- 'Cmd-Alt-2'
93
- );
94
- export const KEY_TOGGLE_HEADING_3 = makeKeyMap(
95
- 'Heading 3',
96
- 'Ctrl-3',
97
- 'Cmd-Alt-3'
98
- );
99
- export const KEY_TOGGLE_HEADING_4 = makeKeyMap(
100
- 'Heading 4',
101
- 'Ctrl-4',
102
- 'Cmd-Alt-4'
103
- );
104
- export const KEY_TOGGLE_HEADING_5 = makeKeyMap(
105
- 'Heading 5',
106
- 'Ctrl-5',
107
- 'Cmd-Alt-5'
108
- );
109
- export const KEY_TOGGLE_HEADING_6 = makeKeyMap(
110
- 'Heading 5',
111
- 'Ctrl-6',
112
- 'Cmd-Alt-6'
113
- );
114
- export const KEY_TOGGLE_ITALIC = makeKeyMapWithCommon('Toggle italic', 'Mod-i');
115
- export const KEY_TOGGLE_MONOSPACE = makeKeyMapWithCommon(
116
- 'Toggle monospace',
117
- 'Mod-Shift-m'
118
- );
119
- export const KEY_TOGGLE_ORDERED_LIST = makeKeyMapWithCommon(
120
- 'Toggle ordered list',
121
- 'Mod-Shift-l'
122
- );
123
- export const KEY_TOGGLE_STRIKETHROUGH = makeKeyMapWithCommon(
124
- 'Toggle strikethrough',
125
- 'Mod-Shift-s'
126
- );
127
- export const KEY_TOGGLE_UNDERLINE = makeKeyMapWithCommon(
128
- 'Toggle underline',
129
- 'Mod-u'
130
- );
131
- export const KEY_UNDO = makeKeyMapWithCommon('Undo', 'Mod-z');
132
-
133
- export const ALL_KEYS = [
134
- KEY_BACK_DELETE,
135
- KEY_FORWARD_DELETE,
136
- KEY_INSERT_HORIZONTAL_RULE,
137
- KEY_INSERT_NEW_LINE,
138
- KEY_INSERT_NEW_LINE_IN_BLOCKQUOTE,
139
- KEY_INSERT_NEW_LINE_IN_LIST_ITEM,
140
- KEY_SET_NORMAL_TEXT,
141
- KEY_SHIFT_BACKSPACE,
142
- KEY_SPLIT_LIST_ITEM,
143
- KEY_TAB_SHIFT,
144
- KEY_TAB,
145
- KEY_TOGGLE_BLOCK_QUOTE,
146
- KEY_TOGGLE_BOLD,
147
- KEY_TOGGLE_BULLET_LIST,
148
- KEY_TOGGLE_BULLET_LIST,
149
- KEY_TOGGLE_CODE_BLOCK,
150
- KEY_TOGGLE_HEADING_1,
151
- KEY_TOGGLE_HEADING_2,
152
- KEY_TOGGLE_HEADING_3,
153
- KEY_TOGGLE_HEADING_4,
154
- KEY_TOGGLE_HEADING_5,
155
- KEY_TOGGLE_HEADING_6,
156
- KEY_TOGGLE_ITALIC,
157
- KEY_TOGGLE_MONOSPACE,
158
- KEY_TOGGLE_ORDERED_LIST,
159
- KEY_TOGGLE_STRIKETHROUGH,
160
- KEY_TOGGLE_UNDERLINE,
161
- KEY_UNDO,
162
- ];
163
-
164
- export function findKeymapByDescription(description: string): ?Keymap {
165
- const matches = ALL_KEYS.filter((keymap) => {
166
- return keymap.description.toUpperCase() === description.toUpperCase();
167
- });
168
- return matches[0];
169
- }
170
-
171
- export function findShortcutByDescription(description: string): ?string {
172
- const keymap = findKeymapByDescription(description);
173
- if (keymap) {
174
- return findShortcutByKeymap(keymap);
175
- }
176
- return null;
177
- }
178
-
179
- export function findShortcutByKeymap(keymap: Keymap): ?string {
180
- if (browser.isMac()) {
181
- return keymap.mac;
182
- }
183
-
184
- return keymap.windows;
185
- }
1
+ // @flow
2
+
3
+ import Keymap from 'browserkeymap';
4
+
5
+ import browser from './browser';
6
+
7
+ import {
8
+ makeKeyMap,
9
+ makeKeyMapWithCommon,
10
+ } from '@modusoperandi/licit-doc-attrs-step';
11
+
12
+ // https://tinyurl.com/ybwf3wex
13
+
14
+ export function tooltip(keymap: ?Keymap): ?string {
15
+ if (keymap) {
16
+ let shortcut;
17
+ if (browser.isMac()) {
18
+ shortcut = keymap.mac
19
+ .replace(/Cmd/i, '⌘')
20
+ .replace(/Shift/i, '⇧')
21
+ .replace(/Ctrl/i, '^')
22
+ .replace(/Alt/i, '⌥');
23
+ } else {
24
+ shortcut = keymap.windows;
25
+ }
26
+ return `${keymap.description} (${shortcut})`;
27
+ }
28
+ return null;
29
+ }
30
+
31
+ export const KEY_BACK_DELETE = makeKeyMapWithCommon('', 'Backspace');
32
+ export const KEY_FORWARD_DELETE = makeKeyMapWithCommon('', 'Delete');
33
+ export const KEY_INSERT_HORIZONTAL_RULE = makeKeyMapWithCommon(
34
+ 'Insert horizontal rule',
35
+ 'Mod-Shift--'
36
+ );
37
+ export const KEY_INSERT_NEW_LINE = makeKeyMapWithCommon(
38
+ 'Insert new line',
39
+ 'Shift-Enter'
40
+ );
41
+ export const KEY_INSERT_NEW_LINE_IN_BLOCKQUOTE = makeKeyMapWithCommon(
42
+ 'Insert new line in blockquote',
43
+ 'Shift-Enter'
44
+ );
45
+ export const KEY_INSERT_NEW_LINE_IN_LIST_ITEM = makeKeyMapWithCommon(
46
+ 'Insert new line in list item',
47
+ 'Shift-Enter'
48
+ );
49
+ export const KEY_REDO = makeKeyMapWithCommon('Redo', 'Mod-Shift-z');
50
+ export const KEY_SET_NORMAL_TEXT = makeKeyMap(
51
+ 'Normal text',
52
+ 'Ctrl-0',
53
+ 'Cmd-Alt-0'
54
+ );
55
+ export const KEY_SHIFT_BACKSPACE = makeKeyMapWithCommon(
56
+ 'Shift Backspace',
57
+ 'Shift-Backspace'
58
+ );
59
+ export const KEY_SPLIT_CODEBLOCK = makeKeyMapWithCommon(
60
+ 'Split code block',
61
+ 'Enter'
62
+ );
63
+ export const KEY_SPLIT_LIST_ITEM = makeKeyMapWithCommon(
64
+ 'Split list item',
65
+ 'Enter'
66
+ );
67
+ export const KEY_TAB = makeKeyMapWithCommon('', 'Tab');
68
+ export const KEY_TAB_SHIFT = makeKeyMapWithCommon('', 'Shift-Tab');
69
+ export const KEY_TOGGLE_BLOCK_QUOTE = makeKeyMap(
70
+ 'Block quote',
71
+ 'Ctrl-7',
72
+ 'Cmd-Alt-7'
73
+ );
74
+ export const KEY_TOGGLE_BOLD = makeKeyMapWithCommon('Toggle bold', 'Mod-b');
75
+ export const KEY_TOGGLE_BULLET_LIST = makeKeyMapWithCommon(
76
+ 'Toggle bullet list',
77
+ 'Mod-Shift-b'
78
+ );
79
+ export const KEY_TOGGLE_CODE_BLOCK = makeKeyMap(
80
+ 'Code block',
81
+ 'Ctrl-8',
82
+ 'Cmd-Alt-8'
83
+ );
84
+ export const KEY_TOGGLE_HEADING_1 = makeKeyMap(
85
+ 'Heading 1',
86
+ 'Ctrl-1',
87
+ 'Cmd-Alt-1'
88
+ );
89
+ export const KEY_TOGGLE_HEADING_2 = makeKeyMap(
90
+ 'Heading 2',
91
+ 'Ctrl-2',
92
+ 'Cmd-Alt-2'
93
+ );
94
+ export const KEY_TOGGLE_HEADING_3 = makeKeyMap(
95
+ 'Heading 3',
96
+ 'Ctrl-3',
97
+ 'Cmd-Alt-3'
98
+ );
99
+ export const KEY_TOGGLE_HEADING_4 = makeKeyMap(
100
+ 'Heading 4',
101
+ 'Ctrl-4',
102
+ 'Cmd-Alt-4'
103
+ );
104
+ export const KEY_TOGGLE_HEADING_5 = makeKeyMap(
105
+ 'Heading 5',
106
+ 'Ctrl-5',
107
+ 'Cmd-Alt-5'
108
+ );
109
+ export const KEY_TOGGLE_HEADING_6 = makeKeyMap(
110
+ 'Heading 5',
111
+ 'Ctrl-6',
112
+ 'Cmd-Alt-6'
113
+ );
114
+ export const KEY_TOGGLE_ITALIC = makeKeyMapWithCommon('Toggle italic', 'Mod-i');
115
+ export const KEY_TOGGLE_MONOSPACE = makeKeyMapWithCommon(
116
+ 'Toggle monospace',
117
+ 'Mod-Shift-m'
118
+ );
119
+ export const KEY_TOGGLE_ORDERED_LIST = makeKeyMapWithCommon(
120
+ 'Toggle ordered list',
121
+ 'Mod-Shift-l'
122
+ );
123
+ export const KEY_TOGGLE_STRIKETHROUGH = makeKeyMapWithCommon(
124
+ 'Toggle strikethrough',
125
+ 'Mod-Shift-s'
126
+ );
127
+ export const KEY_TOGGLE_UNDERLINE = makeKeyMapWithCommon(
128
+ 'Toggle underline',
129
+ 'Mod-u'
130
+ );
131
+ export const KEY_UNDO = makeKeyMapWithCommon('Undo', 'Mod-z');
132
+
133
+ export const ALL_KEYS = [
134
+ KEY_BACK_DELETE,
135
+ KEY_FORWARD_DELETE,
136
+ KEY_INSERT_HORIZONTAL_RULE,
137
+ KEY_INSERT_NEW_LINE,
138
+ KEY_INSERT_NEW_LINE_IN_BLOCKQUOTE,
139
+ KEY_INSERT_NEW_LINE_IN_LIST_ITEM,
140
+ KEY_SET_NORMAL_TEXT,
141
+ KEY_SHIFT_BACKSPACE,
142
+ KEY_SPLIT_LIST_ITEM,
143
+ KEY_TAB_SHIFT,
144
+ KEY_TAB,
145
+ KEY_TOGGLE_BLOCK_QUOTE,
146
+ KEY_TOGGLE_BOLD,
147
+ KEY_TOGGLE_BULLET_LIST,
148
+ KEY_TOGGLE_BULLET_LIST,
149
+ KEY_TOGGLE_CODE_BLOCK,
150
+ KEY_TOGGLE_HEADING_1,
151
+ KEY_TOGGLE_HEADING_2,
152
+ KEY_TOGGLE_HEADING_3,
153
+ KEY_TOGGLE_HEADING_4,
154
+ KEY_TOGGLE_HEADING_5,
155
+ KEY_TOGGLE_HEADING_6,
156
+ KEY_TOGGLE_ITALIC,
157
+ KEY_TOGGLE_MONOSPACE,
158
+ KEY_TOGGLE_ORDERED_LIST,
159
+ KEY_TOGGLE_STRIKETHROUGH,
160
+ KEY_TOGGLE_UNDERLINE,
161
+ KEY_UNDO,
162
+ ];
163
+
164
+ export function findKeymapByDescription(description: string): ?Keymap {
165
+ const matches = ALL_KEYS.filter((keymap) => {
166
+ return keymap.description.toUpperCase() === description.toUpperCase();
167
+ });
168
+ return matches[0];
169
+ }
170
+
171
+ export function findShortcutByDescription(description: string): ?string {
172
+ const keymap = findKeymapByDescription(description);
173
+ if (keymap) {
174
+ return findShortcutByKeymap(keymap);
175
+ }
176
+ return null;
177
+ }
178
+
179
+ export function findShortcutByKeymap(keymap: Keymap): ?string {
180
+ if (browser.isMac()) {
181
+ return keymap.mac;
182
+ }
183
+
184
+ return keymap.windows;
185
+ }
@@ -1,14 +1,14 @@
1
- // @flow
2
-
3
- export default function lookUpElement(
4
- el: ?Element,
5
- predict: (el: Element) => boolean
6
- ): ?Element {
7
- while (el && el.nodeName) {
8
- if (predict(el)) {
9
- return el;
10
- }
11
- el = el.parentElement;
12
- }
13
- return null;
14
- }
1
+ // @flow
2
+
3
+ export default function lookUpElement(
4
+ el: ?Element,
5
+ predict: (el: Element) => boolean
6
+ ): ?Element {
7
+ while (el && el.nodeName) {
8
+ if (predict(el)) {
9
+ return el;
10
+ }
11
+ el = el.parentElement;
12
+ }
13
+ return null;
14
+ }
package/nodeAt.js.flow CHANGED
@@ -1,12 +1,12 @@
1
- // @flow
2
-
3
- import { Node } from 'prosemirror-model';
4
-
5
- export default function nodeAt(doc: Node, pos: number): ?Node {
6
- if (pos < 0 || pos > doc.content.size) {
7
- // Exit here or error will be thrown:
8
- // e.g. RangeError: Position outside of fragment.
9
- return null;
10
- }
11
- return doc.nodeAt(pos);
12
- }
1
+ // @flow
2
+
3
+ import { Node } from 'prosemirror-model';
4
+
5
+ export default function nodeAt(doc: Node, pos: number): ?Node {
6
+ if (pos < 0 || pos > doc.content.size) {
7
+ // Exit here or error will be thrown:
8
+ // e.g. RangeError: Position outside of fragment.
9
+ return null;
10
+ }
11
+ return doc.nodeAt(pos);
12
+ }