@modusoperandi/licit 1.4.2 → 1.4.6

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 (228) hide show
  1. package/BlockquoteInsertNewLineCommand.js.flow +70 -70
  2. package/BlockquoteNodeSpec.js.flow +29 -29
  3. package/BlockquoteToggleCommand.js.flow +56 -56
  4. package/BookmarkNodeSpec.js.flow +39 -39
  5. package/BulletListNodeSpec.js.flow +61 -61
  6. package/CZIProseMirror.js.flow +90 -90
  7. package/CodeBlockCommand.js.flow +65 -65
  8. package/CodeBlockNodeSpec.js.flow +24 -24
  9. package/CodeMarkSpec.js.flow +14 -14
  10. package/ContentPlaceholderPlugin.js.flow +183 -183
  11. package/CursorPlaceholderPlugin.js.flow +113 -113
  12. package/DocLayoutCommand.js.flow +97 -97
  13. package/DocNodeSpec.js.flow +62 -62
  14. package/EMMarkSpec.js.flow +39 -39
  15. package/EditorCommands.js.flow +124 -124
  16. package/EditorKeyMap.js.flow +173 -173
  17. package/EditorMarks.js +4 -2
  18. package/EditorMarks.js.flow +77 -74
  19. package/EditorNodes.js.flow +55 -55
  20. package/EditorPageLayoutPlugin.js.flow +67 -67
  21. package/EditorPlugins.js.flow +8 -8
  22. package/EditorSchema.js.flow +12 -12
  23. package/EditorState.js.flow +7 -7
  24. package/FontSizeMarkSpec.js.flow +54 -54
  25. package/FontTypeMarkSpec.js.flow +89 -89
  26. package/HTMLMutator.js.flow +58 -58
  27. package/HangingIndentMarkSpec.js +34 -0
  28. package/HangingIndentMarkSpec.js.flow +30 -0
  29. package/HardBreakNodeSpec.js.flow +15 -15
  30. package/HeadingNodeSpec.js.flow +42 -42
  31. package/HistoryRedoCommand.js.flow +41 -41
  32. package/HistoryUndoCommand.js.flow +41 -41
  33. package/HorizontalRuleCommand.js.flow +71 -71
  34. package/HorizontalRuleNodeSpec.js.flow +39 -39
  35. package/ImageUploadPlaceholderPlugin.js.flow +187 -187
  36. package/LICENSE +22 -22
  37. package/LinkMarkSpec.js +4 -2
  38. package/LinkMarkSpec.js.flow +38 -37
  39. package/LinkSetURLCommand.js +1 -1
  40. package/LinkSetURLCommand.js.flow +129 -129
  41. package/LinkTooltipPlugin.js +32 -38
  42. package/LinkTooltipPlugin.js.flow +204 -217
  43. package/ListItemInsertNewLineCommand.js.flow +76 -76
  44. package/ListItemMergeCommand.js.flow +197 -197
  45. package/ListItemNodeSpec.js.flow +52 -52
  46. package/ListSplitCommand.js.flow +54 -54
  47. package/ListToggleCommand.js.flow +99 -99
  48. package/MarkNames.js +2 -1
  49. package/MarkNames.js.flow +20 -19
  50. package/MarksClearCommand.js.flow +66 -66
  51. package/NodeNames.js.flow +23 -23
  52. package/OrderedListNodeSpec.js.flow +131 -131
  53. package/OverrideMarkSpec.js.flow +49 -49
  54. package/ParagraphNodeSpec.js +21 -2
  55. package/ParagraphNodeSpec.js.flow +233 -215
  56. package/ParagraphSpacingCommand.js.flow +139 -139
  57. package/PrintCommand.js.flow +53 -53
  58. package/SelectionPlaceholderPlugin.js.flow +129 -129
  59. package/SpacerMarkSpec.js.flow +47 -47
  60. package/StrikeMarkSpec.js.flow +24 -24
  61. package/StrongMarkSpec.js.flow +39 -39
  62. package/StyleView.js.flow +18 -18
  63. package/TableBackgroundColorCommand.js.flow +79 -79
  64. package/TableBorderColorCommand.js +5 -3
  65. package/TableBorderColorCommand.js.flow +108 -106
  66. package/TableCellColorCommand.js.flow +73 -73
  67. package/TableCellMenuPlugin.js.flow +129 -129
  68. package/TableInsertCommand.js.flow +117 -117
  69. package/TableMergeCellsCommand.js.flow +113 -113
  70. package/TableNodesSpecs.js.flow +144 -144
  71. package/TablePlugins.js.flow +14 -14
  72. package/TableResizePlugin.js.flow +636 -636
  73. package/TextColorMarkSpec.js.flow +40 -40
  74. package/TextHighlightMarkSpec.js.flow +47 -47
  75. package/TextInsertTabSpaceCommand.js +0 -3
  76. package/TextInsertTabSpaceCommand.js.flow +103 -106
  77. package/TextNoWrapMarkSpec.js.flow +14 -14
  78. package/TextNodeSpec.js.flow +7 -7
  79. package/TextSelectionMarkSpec.js.flow +24 -24
  80. package/TextSubMarkSpec.js.flow +28 -28
  81. package/TextSuperMarkSpec.js.flow +28 -28
  82. package/TextUnderlineMarkSpec.js.flow +24 -24
  83. package/Types.js.flow +77 -77
  84. package/WebFontLoader.js.flow +22 -22
  85. package/blockQuoteInputRule.js.flow +36 -36
  86. package/bom.xml +8645 -8637
  87. package/browser.js.flow +7 -7
  88. package/buildEditorPlugins.js.flow +48 -48
  89. package/buildInputRules.js.flow +85 -85
  90. package/client/CollabConnector.js.flow +90 -90
  91. package/client/EditorConnection.js.flow +324 -324
  92. package/client/Licit.js +40 -40
  93. package/client/Licit.js.flow +649 -648
  94. package/client/Licit.test.js.flow +104 -104
  95. package/client/Reporter.js.flow +35 -35
  96. package/client/SimpleConnector.js.flow +61 -61
  97. package/client/http.js.flow +60 -60
  98. package/client/licit.css +12 -12
  99. package/client/throttle.js.flow +27 -27
  100. package/convertFromDOMElement.js.flow +33 -33
  101. package/convertFromHTML.js.flow +15 -15
  102. package/convertFromJSON.js.flow +53 -53
  103. package/convertToCSSPTValue.js.flow +19 -19
  104. package/convertToJSON.js.flow +7 -7
  105. package/createCommand.js.flow +62 -62
  106. package/createEditorKeyMap.js.flow +87 -87
  107. package/createEmptyEditorState.js.flow +29 -29
  108. package/createTableResizingPlugin.js.flow +86 -86
  109. package/findActionableCell.js.flow +74 -74
  110. package/findActiveMark.js.flow +32 -32
  111. package/hyphenize.js.flow +17 -17
  112. package/index.d.ts +167 -167
  113. package/index.js.flow +10 -10
  114. package/insertTable.js.flow +54 -54
  115. package/isEditorStateEmpty.js.flow +32 -32
  116. package/isTableNode.js.flow +15 -15
  117. package/joinDown.js.flow +25 -25
  118. package/joinListNode.js.flow +55 -55
  119. package/joinUp.js.flow +37 -37
  120. package/keymaps.js.flow +175 -175
  121. package/lookUpElement.js.flow +14 -14
  122. package/nodeAt.js.flow +12 -12
  123. package/normalizeHTML.js.flow +80 -80
  124. package/package.json +152 -152
  125. package/patchAnchorElements.js.flow +38 -38
  126. package/patchBreakElements.js.flow +22 -22
  127. package/patchElementInlineStyles.js.flow +92 -92
  128. package/patchListElements.js.flow +275 -275
  129. package/patchMathElements.js.flow +58 -58
  130. package/patchParagraphElements.js.flow +20 -20
  131. package/patchStyleElements.js.flow +197 -197
  132. package/patchTableElements.js.flow +88 -88
  133. package/rebaseDocWithSteps.js.flow +42 -42
  134. package/sanitizeURL.js.flow +13 -13
  135. package/splitListItem.js.flow +191 -191
  136. package/styles.css +46 -46
  137. package/toClosestFontPtSize.js.flow +22 -22
  138. package/toSafeHTMLDocument.js.flow +9 -9
  139. package/toggleBlockquote.js.flow +101 -101
  140. package/toggleCodeBlock.js.flow +102 -102
  141. package/ui/AlertInfo.js.flow +63 -63
  142. package/ui/BookmarkNodeView.js.flow +64 -64
  143. package/ui/CommandButton.js.flow +68 -68
  144. package/ui/CommandMenu.js.flow +74 -74
  145. package/ui/CommandMenuButton.js.flow +128 -128
  146. package/ui/CustomEditorView.js.flow +29 -29
  147. package/ui/CustomMenu.js.flow +14 -14
  148. package/ui/CustomMenuItem.js.flow +35 -35
  149. package/ui/CustomNodeView.js.flow +207 -207
  150. package/ui/CustomRadioButton.js.flow +63 -63
  151. package/ui/DocLayoutEditor.js.flow +130 -130
  152. package/ui/Editor.js.flow +281 -281
  153. package/ui/EditorFrameset.js.flow +79 -79
  154. package/ui/EditorToolbar.js.flow +197 -197
  155. package/ui/EditorToolbarConfig.js.flow +162 -162
  156. package/ui/FontSizeCommandMenuButton.js.flow +66 -66
  157. package/ui/FontTypeCommandMenuButton.js.flow +60 -60
  158. package/ui/Frag.js.flow +11 -11
  159. package/ui/Icon.js +1 -1
  160. package/ui/Icon.js.flow +82 -82
  161. package/ui/ImageInlineEditor.js.flow +66 -66
  162. package/ui/KeyCodes.js.flow +12 -12
  163. package/ui/LinkTooltip.js.flow +51 -51
  164. package/ui/LinkURLEditor.js.flow +227 -227
  165. package/ui/ListItemNodeView.js.flow +101 -101
  166. package/ui/ListTypeButton.js.flow +121 -121
  167. package/ui/ListTypeCommandButton.js.flow +85 -85
  168. package/ui/ListTypeMenu.js.flow +78 -78
  169. package/ui/LoadingIndicator.js.flow +19 -19
  170. package/ui/PasteMenu.js.flow +52 -52
  171. package/ui/ResizeObserver.js.flow +105 -105
  172. package/ui/RichTextEditor.js.flow +133 -133
  173. package/ui/SelectionObserver.js.flow +134 -134
  174. package/ui/TableCellMenu.js.flow +49 -49
  175. package/ui/TableGridSizeEditor.js.flow +185 -185
  176. package/ui/TableNodeView.js.flow +36 -36
  177. package/ui/bindScrollHandler.js.flow +46 -46
  178. package/ui/canUseCSSFont.js.flow +42 -42
  179. package/ui/czi-body-layout-editor.css +16 -16
  180. package/ui/czi-bookmark-view.css +10 -10
  181. package/ui/czi-cursor-placeholder.css +36 -36
  182. package/ui/czi-custom-menu-button.css +18 -18
  183. package/ui/czi-custom-menu-item.css +30 -30
  184. package/ui/czi-custom-menu.css +8 -8
  185. package/ui/czi-custom-radio-button.css +80 -80
  186. package/ui/czi-custom-scrollbar.css +21 -21
  187. package/ui/czi-editor-frameset.css +81 -81
  188. package/ui/czi-editor-toolbar.css +122 -122
  189. package/ui/czi-editor.css +239 -216
  190. package/ui/czi-form.css +201 -201
  191. package/ui/czi-frag.css +3 -3
  192. package/ui/czi-heading.css +40 -40
  193. package/ui/czi-icon.css +72 -72
  194. package/ui/czi-image-resize-box.css +165 -165
  195. package/ui/czi-image-upload-editor.css +57 -57
  196. package/ui/czi-image-upload-placeholder.css +50 -50
  197. package/ui/czi-image-url-editor.css +38 -38
  198. package/ui/czi-image-view.css +121 -121
  199. package/ui/czi-indent.css +137 -137
  200. package/ui/czi-inline-editor.css +20 -20
  201. package/ui/czi-link-tooltip.css +112 -112
  202. package/ui/czi-list.css +406 -406
  203. package/ui/czi-loading-indicator.css +66 -66
  204. package/ui/czi-math-view.css +62 -62
  205. package/ui/czi-selection-placeholder.css +24 -24
  206. package/ui/czi-table-cell-menu.css +16 -16
  207. package/ui/czi-table-grid-size-editor.css +37 -37
  208. package/ui/czi-table.css +89 -89
  209. package/ui/czi-vars.css +47 -45
  210. package/ui/findActiveFontSize.js.flow +55 -55
  211. package/ui/findActiveFontType.js.flow +35 -35
  212. package/ui/fonts.css +460 -460
  213. package/ui/handleEditorDrop.js.flow +28 -28
  214. package/ui/handleEditorKeyDown.js.flow +39 -39
  215. package/ui/handleEditorPaste.js.flow +33 -33
  216. package/ui/htmlElementToRect.js.flow +18 -18
  217. package/ui/icon-font.css +9 -9
  218. package/ui/injectStyleSheet.js.flow +40 -40
  219. package/ui/isElementFullyVisible.js.flow +14 -14
  220. package/ui/isOffline.js.flow +8 -8
  221. package/ui/isReactClass.js.flow +12 -12
  222. package/ui/listType.css +21 -21
  223. package/ui/resolveImage.js.flow +121 -121
  224. package/ui/toCSSColor.js.flow +51 -51
  225. package/ui/toCSSLineSpacing.js.flow +53 -53
  226. package/ui/toHexColor.js.flow +26 -26
  227. package/ui/uuid.js.flow +9 -9
  228. package/uuid.js.flow +9 -9
@@ -1,86 +1,86 @@
1
- // @flow
2
-
3
- import { Plugin } from 'prosemirror-state';
4
- import { columnResizing } from 'prosemirror-tables';
5
- import { EditorView } from 'prosemirror-view';
6
-
7
- const TABLE_HANDLE_WIDTH = 10;
8
- const TABLE_CELL_MINWIDTH = 25;
9
- const TABLE_VIEW = undefined;
10
- const TABLE_LAST_COLUMN_RESIZABLE = false;
11
-
12
- function lookUpTableWrapper(event: Event): ?HTMLElement {
13
- const target: any = event.target;
14
- if (!target?.closest) {
15
- return null;
16
- }
17
- return target.closest('.tableWrapper');
18
- }
19
-
20
- function dispatchMouseEvent(type: string, clientX: number): void {
21
- requestAnimationFrame(() => {
22
- const event = new MouseEvent(type, {
23
- view: window,
24
- bubbles: true,
25
- cancelable: true,
26
- clientX,
27
- });
28
- window.dispatchEvent(event);
29
- });
30
- }
31
-
32
- function calculateMaxClientX(
33
- event: MouseEvent,
34
- targetTable: HTMLElement
35
- ): number {
36
- const { clientX } = event;
37
- const { left, width } = targetTable.getBoundingClientRect();
38
- const offsetX = clientX - left;
39
- const colgroup = targetTable.querySelector('colgroup');
40
- const colsCount = colgroup ? colgroup.querySelectorAll('col').length : 0;
41
- const cx = width - offsetX - colsCount * TABLE_CELL_MINWIDTH;
42
- return Math.round(clientX + Math.max(0, cx));
43
- }
44
-
45
- export default function createTableResizingPlugin(): Plugin {
46
- let maxClientX = 0;
47
-
48
- // https://github.com/ProseMirror/prosemirror-tables/blob/master/src/columnresizing.js
49
- const plugin = columnResizing(
50
- TABLE_HANDLE_WIDTH,
51
- TABLE_CELL_MINWIDTH,
52
- TABLE_VIEW,
53
- TABLE_LAST_COLUMN_RESIZABLE
54
- );
55
-
56
- const captureMouse = (event: any): void => {
57
- if (event.clientX > maxClientX) {
58
- // Current mouse event will make table too wide. Stop it and
59
- // fires a simulated event instead.
60
- event.stopImmediatePropagation();
61
- dispatchMouseEvent(event.type, maxClientX);
62
- } else if (event.type === 'mouseup') {
63
- window.removeEventListener('mousemove', captureMouse, true);
64
- window.removeEventListener('mouseup', captureMouse, true);
65
- }
66
- };
67
-
68
- const { mousedown } = plugin.props.handleDOMEvents;
69
-
70
- // This is a workaround to constraint the mousemove to prevent
71
- // the table become too wide.
72
- Object.assign(plugin.props.handleDOMEvents, {
73
- mousedown(view: EditorView, event: MouseEvent): boolean {
74
- const targetTable = lookUpTableWrapper(event);
75
- maxClientX = targetTable
76
- ? calculateMaxClientX(event, targetTable)
77
- : Number.MAX_VALUE;
78
- window.addEventListener('mousemove', captureMouse, true);
79
- window.addEventListener('mouseup', captureMouse, true);
80
- mousedown(view, event);
81
- return false;
82
- },
83
- });
84
-
85
- return plugin;
86
- }
1
+ // @flow
2
+
3
+ import { Plugin } from 'prosemirror-state';
4
+ import { columnResizing } from 'prosemirror-tables';
5
+ import { EditorView } from 'prosemirror-view';
6
+
7
+ const TABLE_HANDLE_WIDTH = 10;
8
+ const TABLE_CELL_MINWIDTH = 25;
9
+ const TABLE_VIEW = undefined;
10
+ const TABLE_LAST_COLUMN_RESIZABLE = false;
11
+
12
+ function lookUpTableWrapper(event: Event): ?HTMLElement {
13
+ const target: any = event.target;
14
+ if (!target?.closest) {
15
+ return null;
16
+ }
17
+ return target.closest('.tableWrapper');
18
+ }
19
+
20
+ function dispatchMouseEvent(type: string, clientX: number): void {
21
+ requestAnimationFrame(() => {
22
+ const event = new MouseEvent(type, {
23
+ view: window,
24
+ bubbles: true,
25
+ cancelable: true,
26
+ clientX,
27
+ });
28
+ window.dispatchEvent(event);
29
+ });
30
+ }
31
+
32
+ function calculateMaxClientX(
33
+ event: MouseEvent,
34
+ targetTable: HTMLElement
35
+ ): number {
36
+ const { clientX } = event;
37
+ const { left, width } = targetTable.getBoundingClientRect();
38
+ const offsetX = clientX - left;
39
+ const colgroup = targetTable.querySelector('colgroup');
40
+ const colsCount = colgroup ? colgroup.querySelectorAll('col').length : 0;
41
+ const cx = width - offsetX - colsCount * TABLE_CELL_MINWIDTH;
42
+ return Math.round(clientX + Math.max(0, cx));
43
+ }
44
+
45
+ export default function createTableResizingPlugin(): Plugin {
46
+ let maxClientX = 0;
47
+
48
+ // https://github.com/ProseMirror/prosemirror-tables/blob/master/src/columnresizing.js
49
+ const plugin = columnResizing(
50
+ TABLE_HANDLE_WIDTH,
51
+ TABLE_CELL_MINWIDTH,
52
+ TABLE_VIEW,
53
+ TABLE_LAST_COLUMN_RESIZABLE
54
+ );
55
+
56
+ const captureMouse = (event: any): void => {
57
+ if (event.clientX > maxClientX) {
58
+ // Current mouse event will make table too wide. Stop it and
59
+ // fires a simulated event instead.
60
+ event.stopImmediatePropagation();
61
+ dispatchMouseEvent(event.type, maxClientX);
62
+ } else if (event.type === 'mouseup') {
63
+ window.removeEventListener('mousemove', captureMouse, true);
64
+ window.removeEventListener('mouseup', captureMouse, true);
65
+ }
66
+ };
67
+
68
+ const { mousedown } = plugin.props.handleDOMEvents;
69
+
70
+ // This is a workaround to constraint the mousemove to prevent
71
+ // the table become too wide.
72
+ Object.assign(plugin.props.handleDOMEvents, {
73
+ mousedown(view: EditorView, event: MouseEvent): boolean {
74
+ const targetTable = lookUpTableWrapper(event);
75
+ maxClientX = targetTable
76
+ ? calculateMaxClientX(event, targetTable)
77
+ : Number.MAX_VALUE;
78
+ window.addEventListener('mousemove', captureMouse, true);
79
+ window.addEventListener('mouseup', captureMouse, true);
80
+ mousedown(view, event);
81
+ return false;
82
+ },
83
+ });
84
+
85
+ return plugin;
86
+ }
@@ -1,74 +1,74 @@
1
- // @flow
2
-
3
- import { Node } from 'prosemirror-model';
4
- import { EditorState, TextSelection } from 'prosemirror-state';
5
- import { CellSelection, TableMap } from 'prosemirror-tables';
6
- import { findParentNodeOfType } from 'prosemirror-utils';
7
-
8
- import { TABLE_CELL, TABLE_HEADER } from './NodeNames.js';
9
-
10
- type Result = {
11
- node: Node,
12
- pos: number,
13
- };
14
-
15
- function findActionableCellFromSelection(selection: CellSelection): ?Result {
16
- const { $anchorCell } = selection;
17
- const start = $anchorCell.start(-1);
18
- const table = $anchorCell.node(-1);
19
- const tableMap = TableMap.get(table);
20
- let topRightRect;
21
- let posFound = null;
22
- let nodeFound = null;
23
- selection.forEachCell((cell, cellPos) => {
24
- const cellRect = tableMap.findCell(cellPos - start);
25
- if (
26
- !topRightRect ||
27
- (cellRect.top >= topRightRect.top && cellRect.left > topRightRect.left)
28
- ) {
29
- topRightRect = cellRect;
30
- posFound = cellPos;
31
- nodeFound = cell;
32
- }
33
- });
34
-
35
- return posFound === null
36
- ? null
37
- : {
38
- node: nodeFound,
39
- pos: posFound,
40
- };
41
- }
42
-
43
- export default function findActionableCell(state: EditorState): ?Result {
44
- const { doc, selection, schema } = state;
45
- const tdType = schema.nodes[TABLE_CELL];
46
- const thType = schema.nodes[TABLE_HEADER];
47
- if (!tdType && !thType) {
48
- return null;
49
- }
50
-
51
- let userSelection = selection;
52
-
53
- if (userSelection instanceof TextSelection) {
54
- const { from, to } = selection;
55
- if (from !== to) {
56
- return null;
57
- }
58
- const result =
59
- (tdType && findParentNodeOfType(tdType)(selection)) ||
60
- (thType && findParentNodeOfType(thType)(selection));
61
-
62
- if (!result) {
63
- return null;
64
- }
65
-
66
- userSelection = CellSelection.create(doc, result.pos);
67
- }
68
-
69
- if (userSelection instanceof CellSelection) {
70
- return findActionableCellFromSelection(userSelection);
71
- }
72
-
73
- return null;
74
- }
1
+ // @flow
2
+
3
+ import { Node } from 'prosemirror-model';
4
+ import { EditorState, TextSelection } from 'prosemirror-state';
5
+ import { CellSelection, TableMap } from 'prosemirror-tables';
6
+ import { findParentNodeOfType } from 'prosemirror-utils';
7
+
8
+ import { TABLE_CELL, TABLE_HEADER } from './NodeNames.js';
9
+
10
+ type Result = {
11
+ node: Node,
12
+ pos: number,
13
+ };
14
+
15
+ function findActionableCellFromSelection(selection: CellSelection): ?Result {
16
+ const { $anchorCell } = selection;
17
+ const start = $anchorCell.start(-1);
18
+ const table = $anchorCell.node(-1);
19
+ const tableMap = TableMap.get(table);
20
+ let topRightRect;
21
+ let posFound = null;
22
+ let nodeFound = null;
23
+ selection.forEachCell((cell, cellPos) => {
24
+ const cellRect = tableMap.findCell(cellPos - start);
25
+ if (
26
+ !topRightRect ||
27
+ (cellRect.top >= topRightRect.top && cellRect.left > topRightRect.left)
28
+ ) {
29
+ topRightRect = cellRect;
30
+ posFound = cellPos;
31
+ nodeFound = cell;
32
+ }
33
+ });
34
+
35
+ return posFound === null
36
+ ? null
37
+ : {
38
+ node: nodeFound,
39
+ pos: posFound,
40
+ };
41
+ }
42
+
43
+ export default function findActionableCell(state: EditorState): ?Result {
44
+ const { doc, selection, schema } = state;
45
+ const tdType = schema.nodes[TABLE_CELL];
46
+ const thType = schema.nodes[TABLE_HEADER];
47
+ if (!tdType && !thType) {
48
+ return null;
49
+ }
50
+
51
+ let userSelection = selection;
52
+
53
+ if (userSelection instanceof TextSelection) {
54
+ const { from, to } = selection;
55
+ if (from !== to) {
56
+ return null;
57
+ }
58
+ const result =
59
+ (tdType && findParentNodeOfType(tdType)(selection)) ||
60
+ (thType && findParentNodeOfType(thType)(selection));
61
+
62
+ if (!result) {
63
+ return null;
64
+ }
65
+
66
+ userSelection = CellSelection.create(doc, result.pos);
67
+ }
68
+
69
+ if (userSelection instanceof CellSelection) {
70
+ return findActionableCellFromSelection(userSelection);
71
+ }
72
+
73
+ return null;
74
+ }
@@ -1,32 +1,32 @@
1
- // @flow
2
-
3
- import { Mark, MarkType, Node } from 'prosemirror-model';
4
-
5
- export default function findActiveMark(
6
- doc: Node,
7
- from: number,
8
- to: number,
9
- markType: MarkType
10
- ): ?Mark {
11
- let ii = from;
12
- if (doc.nodeSize <= 2) {
13
- return null;
14
- }
15
- const finder = (mark) => mark.type === markType;
16
- from = Math.max(2, from);
17
- to = Math.min(to, doc.nodeSize - 2);
18
-
19
- while (ii <= to) {
20
- const node = doc.nodeAt(ii);
21
- if (!node?.marks) {
22
- ii++;
23
- continue;
24
- }
25
- const mark = node.marks.find(finder);
26
- if (mark) {
27
- return mark;
28
- }
29
- ii++;
30
- }
31
- return null;
32
- }
1
+ // @flow
2
+
3
+ import { Mark, MarkType, Node } from 'prosemirror-model';
4
+
5
+ export default function findActiveMark(
6
+ doc: Node,
7
+ from: number,
8
+ to: number,
9
+ markType: MarkType
10
+ ): ?Mark {
11
+ let ii = from;
12
+ if (doc.nodeSize <= 2) {
13
+ return null;
14
+ }
15
+ const finder = (mark) => mark.type === markType;
16
+ from = Math.max(2, from);
17
+ to = Math.min(to, doc.nodeSize - 2);
18
+
19
+ while (ii <= to) {
20
+ const node = doc.nodeAt(ii);
21
+ if (!node?.marks) {
22
+ ii++;
23
+ continue;
24
+ }
25
+ const mark = node.marks.find(finder);
26
+ if (mark) {
27
+ return mark;
28
+ }
29
+ ii++;
30
+ }
31
+ return null;
32
+ }
package/hyphenize.js.flow CHANGED
@@ -1,17 +1,17 @@
1
- // @flow
2
-
3
- function hadnleMatch(matched: string): string {
4
- return matched[0] + '-' + matched[1].toLowerCase();
5
- }
6
-
7
- const cached = {};
8
-
9
- // converts `fooBar` to `foo-bar`.
10
- export default function hyphenize(str: string): string {
11
- if (cached.hasOwnProperty(str)) {
12
- return cached[str];
13
- }
14
- const result = str.replace(/[a-z][A-Z]/g, hadnleMatch);
15
- cached[str] = result;
16
- return result;
17
- }
1
+ // @flow
2
+
3
+ function hadnleMatch(matched: string): string {
4
+ return matched[0] + '-' + matched[1].toLowerCase();
5
+ }
6
+
7
+ const cached = {};
8
+
9
+ // converts `fooBar` to `foo-bar`.
10
+ export default function hyphenize(str: string): string {
11
+ if (cached.hasOwnProperty(str)) {
12
+ return cached[str];
13
+ }
14
+ const result = str.replace(/[a-z][A-Z]/g, hadnleMatch);
15
+ cached[str] = result;
16
+ return result;
17
+ }