@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.
- package/BlockquoteInsertNewLineCommand.js +16 -18
- package/BlockquoteInsertNewLineCommand.js.flow +76 -77
- package/BlockquoteNodeSpec.js +3 -4
- package/BlockquoteNodeSpec.js.flow +29 -30
- package/BlockquoteToggleCommand.js +16 -17
- package/BlockquoteToggleCommand.js.flow +56 -56
- package/BookmarkNodeSpec.js +2 -2
- package/BookmarkNodeSpec.js.flow +39 -39
- package/BulletListNodeSpec.js.flow +61 -61
- package/CZIProseMirror.js.flow +90 -90
- package/CodeBlockCommand.js +17 -18
- package/CodeBlockCommand.js.flow +65 -65
- package/CodeBlockNodeSpec.js.flow +24 -24
- package/CodeMarkSpec.js.flow +14 -14
- package/ContentPlaceholderPlugin.js +20 -21
- package/ContentPlaceholderPlugin.js.flow +185 -187
- package/CursorPlaceholderPlugin.js +11 -11
- package/CursorPlaceholderPlugin.js.flow +115 -115
- package/DocLayoutCommand.js +18 -21
- package/DocLayoutCommand.js.flow +97 -99
- package/DocNodeSpec.js.flow +64 -64
- package/EMMarkSpec.js.flow +14 -14
- package/EditorCommands.js.flow +126 -126
- package/EditorKeyMap.js +0 -1
- package/EditorKeyMap.js.flow +185 -187
- package/EditorMarks.js +2 -2
- package/EditorMarks.js.flow +71 -71
- package/EditorNodes.js +2 -3
- package/EditorNodes.js.flow +58 -59
- package/EditorPageLayoutPlugin.js +10 -10
- package/EditorPageLayoutPlugin.js.flow +67 -67
- package/EditorPlugins.js.flow +8 -8
- package/EditorSchema.js.flow +12 -12
- package/EditorState.js.flow +7 -7
- package/FontSizeMarkSpec.js.flow +49 -49
- package/FontTypeMarkSpec.js +1 -1
- package/FontTypeMarkSpec.js.flow +80 -80
- package/HTMLMutator.js +6 -7
- package/HTMLMutator.js.flow +59 -59
- package/HardBreakNodeSpec.js.flow +15 -15
- package/HeadingNodeSpec.js +3 -13
- package/HeadingNodeSpec.js.flow +42 -52
- package/HistoryRedoCommand.js +15 -16
- package/HistoryRedoCommand.js.flow +41 -41
- package/HistoryUndoCommand.js +15 -16
- package/HistoryUndoCommand.js.flow +41 -41
- package/HorizontalRuleCommand.js +15 -16
- package/HorizontalRuleCommand.js.flow +71 -71
- package/HorizontalRuleNodeSpec.js.flow +39 -39
- package/ImageUploadPlaceholderPlugin.js +15 -17
- package/ImageUploadPlaceholderPlugin.js.flow +190 -192
- package/LinkMarkSpec.js +6 -1
- package/LinkMarkSpec.js.flow +37 -32
- package/LinkSetURLCommand.js +130 -60
- package/LinkSetURLCommand.js.flow +141 -117
- package/LinkTooltipPlugin.js +122 -34
- package/LinkTooltipPlugin.js.flow +261 -190
- package/ListItemInsertNewLineCommand.js +16 -18
- package/ListItemInsertNewLineCommand.js.flow +76 -77
- package/ListItemMergeCommand.js +24 -24
- package/ListItemMergeCommand.js.flow +198 -199
- package/ListItemNodeSpec.js.flow +52 -52
- package/ListSplitCommand.js +15 -16
- package/ListSplitCommand.js.flow +54 -54
- package/ListToggleCommand.js +19 -20
- package/ListToggleCommand.js.flow +99 -99
- package/MarkNames.js.flow +18 -18
- package/MarksClearCommand.js +17 -18
- package/MarksClearCommand.js.flow +65 -65
- package/MathEditCommand.js +17 -19
- package/MathEditCommand.js.flow +119 -120
- package/MathNodeSpec.js.flow +46 -46
- package/NodeNames.js.flow +23 -23
- package/OrderedListNodeSpec.js +2 -2
- package/OrderedListNodeSpec.js.flow +132 -132
- package/ParagraphNodeSpec.js +11 -2
- package/ParagraphNodeSpec.js.flow +163 -156
- package/ParagraphSpacingCommand.js +21 -23
- package/ParagraphSpacingCommand.js.flow +139 -144
- package/PrintCommand.js +17 -18
- package/PrintCommand.js.flow +53 -53
- package/SelectionPlaceholderPlugin.js +11 -11
- package/SelectionPlaceholderPlugin.js.flow +131 -131
- package/SpacerMarkSpec.js +2 -2
- package/SpacerMarkSpec.js.flow +47 -47
- package/StrikeMarkSpec.js.flow +21 -21
- package/StrongMarkSpec.js.flow +25 -25
- package/StyleView.js +5 -7
- package/StyleView.js.flow +18 -19
- package/TableBackgroundColorCommand.js +34 -23
- package/TableBackgroundColorCommand.js.flow +80 -75
- package/TableBorderColorCommand.js +34 -23
- package/TableBorderColorCommand.js.flow +81 -75
- package/TableCellColorCommand.js +20 -21
- package/TableCellColorCommand.js.flow +74 -75
- package/TableCellMenuPlugin.js +19 -19
- package/TableCellMenuPlugin.js.flow +130 -132
- package/TableInsertCommand.js +19 -22
- package/TableInsertCommand.js.flow +118 -120
- package/TableMergeCellsCommand.js +19 -19
- package/TableMergeCellsCommand.js.flow +113 -112
- package/TableNodesSpecs.js +4 -2
- package/TableNodesSpecs.js.flow +80 -78
- package/TablePlugins.js.flow +14 -14
- package/TableResizePlugin.js +20 -20
- package/TableResizePlugin.js.flow +631 -631
- package/TextColorMarkSpec.js.flow +35 -35
- package/TextHighlightMarkSpec.js.flow +38 -38
- package/TextInsertTabSpaceCommand.js +15 -16
- package/TextInsertTabSpaceCommand.js.flow +106 -106
- package/TextNoWrapMarkSpec.js.flow +14 -14
- package/TextNodeSpec.js.flow +7 -7
- package/TextSelectionMarkSpec.js.flow +24 -24
- package/TextSubMarkSpec.js.flow +20 -20
- package/TextSuperMarkSpec.js.flow +20 -20
- package/TextUnderlineMarkSpec.js.flow +27 -27
- package/Types.js +6 -0
- package/Types.js.flow +77 -75
- package/WebFontLoader.js +6 -7
- package/WebFontLoader.js.flow +22 -22
- package/blockQuoteInputRule.js.flow +36 -36
- package/bom.xml +17223 -25722
- package/browser.js.flow +7 -7
- package/buildEditorPlugins.js +6 -7
- package/buildEditorPlugins.js.flow +49 -49
- package/buildInputRules.js +8 -4
- package/buildInputRules.js.flow +85 -81
- package/client/CollabConnector.js +20 -20
- package/client/CollabConnector.js.flow +90 -90
- package/client/EditorConnection.js +10 -9
- package/client/EditorConnection.js.flow +324 -323
- package/client/Licit.js +78 -115
- package/client/Licit.js.flow +611 -643
- package/client/Licit.test.js +49 -39
- package/client/Licit.test.js.flow +104 -98
- package/client/Reporter.js +5 -6
- package/client/Reporter.js.flow +37 -37
- package/client/SimpleConnector.js +5 -5
- package/client/SimpleConnector.js.flow +61 -61
- package/client/http.js +0 -6
- package/client/http.js.flow +62 -70
- package/client/licit.css +12 -12
- package/client/throttle.js +8 -2
- package/client/throttle.js.flow +27 -27
- package/convertFromDOMElement.js +2 -4
- package/convertFromDOMElement.js.flow +33 -36
- package/convertFromHTML.js +2 -3
- package/convertFromHTML.js.flow +15 -17
- package/convertFromJSON.js +1 -2
- package/convertFromJSON.js.flow +55 -56
- package/convertToCSSPTValue.js +6 -10
- package/convertToCSSPTValue.js.flow +19 -22
- package/convertToJSON.js.flow +7 -7
- package/createCommand.js +16 -17
- package/createCommand.js.flow +62 -62
- package/createEditorKeyMap.js +2 -2
- package/createEditorKeyMap.js.flow +94 -94
- package/createEmptyEditorState.js +2 -3
- package/createEmptyEditorState.js.flow +29 -31
- package/createTableResizingPlugin.js +6 -6
- package/createTableResizingPlugin.js.flow +86 -86
- package/findActionableCell.js.flow +74 -74
- package/findActiveMark.js +1 -1
- package/findActiveMark.js.flow +32 -32
- package/hyphenize.js.flow +17 -17
- package/index.d.ts +165 -165
- package/index.js.flow +10 -10
- package/insertTable.js +0 -3
- package/insertTable.js.flow +54 -56
- package/isEditorStateEmpty.js.flow +32 -32
- package/isTableNode.js.flow +15 -15
- package/joinDown.js +1 -3
- package/joinDown.js.flow +25 -27
- package/joinListNode.js.flow +55 -55
- package/joinUp.js +1 -3
- package/joinUp.js.flow +37 -39
- package/keymaps.js.flow +185 -185
- package/lookUpElement.js +2 -1
- package/lookUpElement.js.flow +14 -14
- package/nodeAt.js.flow +12 -12
- package/normalizeHTML.js +3 -1
- package/normalizeHTML.js.flow +80 -78
- package/package.json +162 -156
- package/patchAnchorElements.js +1 -1
- package/patchAnchorElements.js.flow +38 -38
- package/patchBreakElements.js +3 -2
- package/patchBreakElements.js.flow +22 -22
- package/patchElementInlineStyles.js +1 -1
- package/patchElementInlineStyles.js.flow +92 -92
- package/patchListElements.js +4 -4
- package/patchListElements.js.flow +276 -276
- package/patchMathElements.js +5 -7
- package/patchMathElements.js.flow +58 -60
- package/patchParagraphElements.js.flow +20 -20
- package/patchStyleElements.js +1 -1
- package/patchStyleElements.js.flow +197 -196
- package/patchTableElements.js +2 -3
- package/patchTableElements.js.flow +88 -89
- package/rebaseDocWithSteps.js.flow +42 -42
- package/sanitizeURL.js +1 -1
- package/sanitizeURL.js.flow +13 -13
- package/splitListItem.js +3 -3
- package/splitListItem.js.flow +191 -191
- package/styles.css +19 -19
- package/styles0.css +29 -29
- package/toClosestFontPtSize.js.flow +22 -22
- package/toSafeHTMLDocument.js.flow +9 -9
- package/toggleBlockquote.js +4 -5
- package/toggleBlockquote.js.flow +101 -108
- package/toggleCodeBlock.js +6 -6
- package/toggleCodeBlock.js.flow +102 -102
- package/ui/AlertInfo.js +15 -16
- package/ui/AlertInfo.js.flow +64 -64
- package/ui/BookmarkNodeView.js +20 -21
- package/ui/BookmarkNodeView.js.flow +66 -66
- package/ui/CommandButton.js +15 -16
- package/ui/CommandButton.js.flow +68 -68
- package/ui/CommandMenu.js +19 -20
- package/ui/CommandMenu.js.flow +75 -75
- package/ui/CommandMenuButton.js +23 -25
- package/ui/CommandMenuButton.js.flow +130 -131
- package/ui/CustomEditorView.js +20 -20
- package/ui/CustomEditorView.js.flow +29 -28
- package/ui/CustomMenu.js +11 -12
- package/ui/CustomMenu.js.flow +17 -17
- package/ui/CustomMenuItem.js +16 -18
- package/ui/CustomMenuItem.js.flow +36 -36
- package/ui/CustomNodeView.js +29 -19
- package/ui/CustomNodeView.js.flow +207 -200
- package/ui/CustomRadioButton.js +18 -21
- package/ui/CustomRadioButton.js.flow +64 -65
- package/ui/DocLayoutEditor.js +18 -20
- package/ui/DocLayoutEditor.js.flow +145 -146
- package/ui/Editor.js +30 -28
- package/ui/Editor.js.flow +287 -288
- package/ui/EditorFrameset.js +13 -14
- package/ui/EditorFrameset.js.flow +81 -81
- package/ui/EditorToolbar.js +36 -42
- package/ui/EditorToolbar.js.flow +199 -218
- package/ui/EditorToolbarConfig.js +5 -5
- package/ui/EditorToolbarConfig.js.flow +164 -164
- package/ui/FontSizeCommandMenuButton.js +14 -15
- package/ui/FontSizeCommandMenuButton.js.flow +66 -66
- package/ui/FontTypeCommandMenuButton.js +15 -17
- package/ui/FontTypeCommandMenuButton.js.flow +60 -61
- package/ui/Frag.js +11 -12
- package/ui/Frag.js.flow +13 -13
- package/ui/Icon.js +21 -24
- package/ui/Icon.js.flow +89 -89
- package/ui/ImageInlineEditor.js +14 -15
- package/ui/ImageInlineEditor.js.flow +67 -67
- package/ui/KeyCodes.js.flow +12 -12
- package/ui/LinkTooltip.js +68 -34
- package/ui/LinkTooltip.js.flow +118 -85
- package/ui/LinkURLEditor.js +160 -43
- package/ui/LinkURLEditor.js.flow +243 -117
- package/ui/ListItemNodeView.js +6 -7
- package/ui/ListItemNodeView.js.flow +98 -98
- package/ui/ListTypeButton.js +23 -27
- package/ui/ListTypeButton.js.flow +128 -131
- package/ui/ListTypeCommandButton.js +14 -15
- package/ui/ListTypeCommandButton.js.flow +85 -85
- package/ui/ListTypeMenu.js +21 -22
- package/ui/ListTypeMenu.js.flow +70 -70
- package/ui/LoadingIndicator.js +11 -12
- package/ui/LoadingIndicator.js.flow +20 -20
- package/ui/MathEditor.js +17 -22
- package/ui/MathEditor.js.flow +72 -78
- package/ui/MathInlineEditor.js +20 -21
- package/ui/MathInlineEditor.js.flow +101 -102
- package/ui/MathNodeView.js +29 -30
- package/ui/MathNodeView.js.flow +176 -186
- package/ui/PasteMenu.js +19 -23
- package/ui/PasteMenu.js.flow +53 -57
- package/ui/ResizeObserver.js +1 -1
- package/ui/ResizeObserver.js.flow +106 -106
- package/ui/RichTextEditor.js +17 -18
- package/ui/RichTextEditor.js.flow +133 -133
- package/ui/SelectionObserver.js +8 -9
- package/ui/SelectionObserver.js.flow +134 -134
- package/ui/TableCellMenu.js +14 -15
- package/ui/TableCellMenu.js.flow +51 -51
- package/ui/TableGridSizeEditor.js +30 -33
- package/ui/TableGridSizeEditor.js.flow +187 -184
- package/ui/TableNodeView.js +18 -17
- package/ui/TableNodeView.js.flow +25 -25
- package/ui/bindScrollHandler.js +2 -1
- package/ui/bindScrollHandler.js.flow +46 -46
- package/ui/canUseCSSFont.js +5 -4
- package/ui/canUseCSSFont.js.flow +42 -43
- package/ui/czi-body-layout-editor.css +16 -16
- package/ui/czi-bookmark-view.css +10 -10
- package/ui/czi-cursor-placeholder.css +36 -36
- package/ui/czi-custom-menu-button.css +18 -18
- package/ui/czi-custom-menu-item.css +30 -30
- package/ui/czi-custom-menu.css +8 -8
- package/ui/czi-custom-radio-button.css +80 -80
- package/ui/czi-custom-scrollbar.css +21 -21
- package/ui/czi-editor-frameset.css +81 -81
- package/ui/czi-editor-toolbar.css +122 -122
- package/ui/czi-editor.css +217 -220
- package/ui/czi-form.css +201 -107
- package/ui/czi-frag.css +3 -3
- package/ui/czi-heading.css +40 -40
- package/ui/czi-icon.css +72 -72
- package/ui/czi-image-resize-box.css +165 -165
- package/ui/czi-image-upload-editor.css +57 -57
- package/ui/czi-image-upload-placeholder.css +50 -50
- package/ui/czi-image-url-editor.css +38 -38
- package/ui/czi-image-view.css +121 -125
- package/ui/czi-indent.css +137 -137
- package/ui/czi-inline-editor.css +20 -20
- package/ui/czi-link-tooltip.css +112 -71
- package/ui/czi-list.css +406 -410
- package/ui/czi-loading-indicator.css +66 -111
- package/ui/czi-math-view.css +62 -62
- package/ui/czi-selection-placeholder.css +24 -24
- package/ui/czi-table-cell-menu.css +16 -14
- package/ui/czi-table-grid-size-editor.css +37 -37
- package/ui/czi-table.css +87 -87
- package/ui/czi-vars.css +2 -2
- package/ui/findActiveFontSize.js +2 -1
- package/ui/findActiveFontSize.js.flow +55 -58
- package/ui/findActiveFontType.js +4 -3
- package/ui/findActiveFontType.js.flow +35 -38
- package/ui/fonts.css +460 -460
- package/ui/handleEditorDrop.js +1 -1
- package/ui/handleEditorDrop.js.flow +28 -28
- package/ui/handleEditorKeyDown.js +1 -1
- package/ui/handleEditorKeyDown.js.flow +39 -39
- package/ui/handleEditorPaste.js +1 -1
- package/ui/handleEditorPaste.js.flow +33 -33
- package/ui/htmlElementToRect.js.flow +18 -18
- package/ui/icon-font.css +9 -9
- package/ui/injectStyleSheet.js +2 -2
- package/ui/injectStyleSheet.js.flow +40 -42
- package/ui/isElementFullyVisible.js +1 -10
- package/ui/isElementFullyVisible.js.flow +14 -26
- package/ui/isOffline.js.flow +8 -8
- package/ui/isReactClass.js.flow +12 -12
- package/ui/listType.css +21 -21
- package/ui/mathquill-editor/MathQuillEditor.js +27 -30
- package/ui/mathquill-editor/MathQuillEditor.js.flow +158 -159
- package/ui/mathquill-editor/MathQuillEditorSymbols.js.flow +483 -483
- package/ui/mathquill-editor/MathQuillEditorSymbolsPanel.js +14 -15
- package/ui/mathquill-editor/MathQuillEditorSymbolsPanel.js.flow +50 -50
- package/ui/mathquill-editor/czi-mathquill-editor-symbols-panel.css +39 -39
- package/ui/mathquill-editor/czi-mathquill-editor.css +50 -50
- package/ui/mathquill-editor/mathquill-import-kludge.js +1 -8
- package/ui/mathquill-editor/mathquill-import-kludge.js.flow +17 -24
- package/ui/renderLaTeXAsHTML.js +4 -4
- package/ui/renderLaTeXAsHTML.js.flow +46 -46
- package/ui/resolveImage.js +5 -6
- package/ui/resolveImage.js.flow +121 -123
- package/ui/toCSSColor.js.flow +51 -51
- package/ui/toCSSLineSpacing.js +2 -3
- package/ui/toCSSLineSpacing.js.flow +53 -55
- package/ui/toHexColor.js.flow +26 -26
- package/ui/uuid.js.flow +9 -9
- package/uuid.js.flow +9 -9
|
@@ -1,112 +1,113 @@
|
|
|
1
|
-
// @flow
|
|
2
|
-
|
|
3
|
-
import { Schema } from 'prosemirror-model';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
changed
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
|
|
1
|
+
// @flow
|
|
2
|
+
|
|
3
|
+
import { Schema, Node } from 'prosemirror-model';
|
|
4
|
+
import { EditorState } from 'prosemirror-state';
|
|
5
|
+
import { CellSelection, mergeCells } from 'prosemirror-tables';
|
|
6
|
+
import { Transform } from 'prosemirror-transform';
|
|
7
|
+
import { EditorView } from 'prosemirror-view';
|
|
8
|
+
import * as React from 'react';
|
|
9
|
+
import { PARAGRAPH, TABLE_CELL, TEXT } from './NodeNames.js';
|
|
10
|
+
import { UICommand } from '@modusoperandi/licit-doc-attrs-step';
|
|
11
|
+
|
|
12
|
+
function isBlankParagraphNode(node: ?Node): boolean {
|
|
13
|
+
if (!node) {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
if (node.type.name !== PARAGRAPH) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
const { firstChild, lastChild } = node;
|
|
20
|
+
if (!firstChild) {
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
if (firstChild !== lastChild) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
return firstChild.type.name === TEXT && firstChild.text === ' ';
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function purgeConsecutiveBlankParagraphNodes(
|
|
30
|
+
tr: Transform,
|
|
31
|
+
schema: Schema
|
|
32
|
+
): Transform {
|
|
33
|
+
const paragraph = schema.nodes[PARAGRAPH];
|
|
34
|
+
const cell = schema.nodes[TABLE_CELL];
|
|
35
|
+
if (!paragraph || !cell) {
|
|
36
|
+
return tr;
|
|
37
|
+
}
|
|
38
|
+
const { doc, selection } = tr;
|
|
39
|
+
if (!(selection instanceof CellSelection)) {
|
|
40
|
+
return tr;
|
|
41
|
+
}
|
|
42
|
+
const { from, to } = selection;
|
|
43
|
+
const paragraphPoses = [];
|
|
44
|
+
doc.nodesBetween(from, to, (node, pos, parentNode) => {
|
|
45
|
+
if (node.type === paragraph && parentNode.type === cell) {
|
|
46
|
+
if (isBlankParagraphNode(node)) {
|
|
47
|
+
const $pos = tr.doc.resolve(pos);
|
|
48
|
+
if (isBlankParagraphNode($pos.nodeBefore)) {
|
|
49
|
+
paragraphPoses.push(pos);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return false;
|
|
53
|
+
} else {
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
paragraphPoses.reverse();
|
|
58
|
+
const reversedParagraphPoses = paragraphPoses;
|
|
59
|
+
reversedParagraphPoses.forEach((pos) => {
|
|
60
|
+
const cell = tr.doc.nodeAt(pos);
|
|
61
|
+
tr = tr.delete(pos, pos + cell.nodeSize);
|
|
62
|
+
});
|
|
63
|
+
return tr;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
class TableMergeCellsCommand extends UICommand {
|
|
67
|
+
execute = (
|
|
68
|
+
state: EditorState,
|
|
69
|
+
dispatch: ?(tr: Transform) => void,
|
|
70
|
+
view: ?EditorView
|
|
71
|
+
): boolean => {
|
|
72
|
+
const { tr, schema, selection } = state;
|
|
73
|
+
let endTr = tr;
|
|
74
|
+
if (selection instanceof CellSelection) {
|
|
75
|
+
mergeCells(
|
|
76
|
+
state,
|
|
77
|
+
(nextTr) => {
|
|
78
|
+
endTr = nextTr;
|
|
79
|
+
},
|
|
80
|
+
view
|
|
81
|
+
);
|
|
82
|
+
// Also merge onsecutive blank paragraphs into one.
|
|
83
|
+
endTr = purgeConsecutiveBlankParagraphNodes(endTr, schema);
|
|
84
|
+
}
|
|
85
|
+
const changed = endTr.docChanged || endTr !== tr;
|
|
86
|
+
changed && dispatch && dispatch(endTr);
|
|
87
|
+
return changed;
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
waitForUserInput = (
|
|
91
|
+
_state: EditorState,
|
|
92
|
+
_dispatch: ?(tr: Transform) => void,
|
|
93
|
+
_view: ?EditorView,
|
|
94
|
+
_event: ?React.SyntheticEvent
|
|
95
|
+
): Promise<undefined> => {
|
|
96
|
+
return Promise.resolve(undefined);
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
executeWithUserInput = (
|
|
100
|
+
_state: EditorState,
|
|
101
|
+
_dispatch: ?(tr: Transform) => void,
|
|
102
|
+
_view: ?EditorView,
|
|
103
|
+
_inputs: ?string
|
|
104
|
+
): boolean => {
|
|
105
|
+
return false;
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
cancel(): void {
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
export default TableMergeCellsCommand;
|
package/TableNodesSpecs.js
CHANGED
|
@@ -21,7 +21,8 @@ var TableNodesSpecs = tableNodes({
|
|
|
21
21
|
},
|
|
22
22
|
setDOMAttr: function setDOMAttr(value, attrs) {
|
|
23
23
|
if (value) {
|
|
24
|
-
|
|
24
|
+
var colorValue = String(value);
|
|
25
|
+
attrs.style = (attrs.style || '') + ";border-color: ".concat(colorValue, ";");
|
|
25
26
|
}
|
|
26
27
|
}
|
|
27
28
|
},
|
|
@@ -33,7 +34,8 @@ var TableNodesSpecs = tableNodes({
|
|
|
33
34
|
},
|
|
34
35
|
setDOMAttr: function setDOMAttr(value, attrs) {
|
|
35
36
|
if (value) {
|
|
36
|
-
|
|
37
|
+
var colorValue = String(value);
|
|
38
|
+
attrs.style = (attrs.style || '') + ";background-color: ".concat(colorValue, ";");
|
|
37
39
|
}
|
|
38
40
|
}
|
|
39
41
|
}
|
package/TableNodesSpecs.js.flow
CHANGED
|
@@ -1,78 +1,80 @@
|
|
|
1
|
-
// @flow
|
|
2
|
-
|
|
3
|
-
import toCSSColor from './ui/toCSSColor.js';
|
|
4
|
-
import { Node } from 'prosemirror-model';
|
|
5
|
-
import { tableNodes } from 'prosemirror-tables';
|
|
6
|
-
|
|
7
|
-
const NO_VISIBLE_BORDER_WIDTH = new Set(['0pt', '0px']);
|
|
8
|
-
|
|
9
|
-
// https://github.com/ProseMirror/prosemirror-tables/blob/master/demo.js
|
|
10
|
-
const TableNodesSpecs = tableNodes({
|
|
11
|
-
tableGroup: 'block',
|
|
12
|
-
cellContent: 'block+',
|
|
13
|
-
cellAttributes: {
|
|
14
|
-
borderColor: {
|
|
15
|
-
default: null,
|
|
16
|
-
getFromDOM(dom) {
|
|
17
|
-
const { borderColor, borderWidth } = dom.style;
|
|
18
|
-
|
|
19
|
-
if (NO_VISIBLE_BORDER_WIDTH.has(borderWidth)) {
|
|
20
|
-
return 'transparent';
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
return (borderColor && toCSSColor(borderColor)) || null;
|
|
24
|
-
},
|
|
25
|
-
setDOMAttr(value, attrs) {
|
|
26
|
-
if (value) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
//
|
|
67
|
-
//
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
1
|
+
// @flow
|
|
2
|
+
|
|
3
|
+
import toCSSColor from './ui/toCSSColor.js';
|
|
4
|
+
import { Node } from 'prosemirror-model';
|
|
5
|
+
import { tableNodes } from 'prosemirror-tables';
|
|
6
|
+
|
|
7
|
+
const NO_VISIBLE_BORDER_WIDTH = new Set(['0pt', '0px']);
|
|
8
|
+
|
|
9
|
+
// https://github.com/ProseMirror/prosemirror-tables/blob/master/demo.js
|
|
10
|
+
const TableNodesSpecs = tableNodes({
|
|
11
|
+
tableGroup: 'block',
|
|
12
|
+
cellContent: 'block+',
|
|
13
|
+
cellAttributes: {
|
|
14
|
+
borderColor: {
|
|
15
|
+
default: null,
|
|
16
|
+
getFromDOM(dom) {
|
|
17
|
+
const { borderColor, borderWidth } = dom.style;
|
|
18
|
+
|
|
19
|
+
if (NO_VISIBLE_BORDER_WIDTH.has(borderWidth)) {
|
|
20
|
+
return 'transparent';
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return (borderColor && toCSSColor(borderColor)) || null;
|
|
24
|
+
},
|
|
25
|
+
setDOMAttr(value, attrs) {
|
|
26
|
+
if (value) {
|
|
27
|
+
const colorValue = String(value);
|
|
28
|
+
attrs.style = (attrs.style || '') + `;border-color: ${colorValue};`;
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
background: {
|
|
33
|
+
default: null,
|
|
34
|
+
// TODO: Move these to a table helper.
|
|
35
|
+
getFromDOM(dom) {
|
|
36
|
+
return dom.style.backgroundColor || null;
|
|
37
|
+
},
|
|
38
|
+
setDOMAttr(value, attrs) {
|
|
39
|
+
if (value) {
|
|
40
|
+
const colorValue = String(value);
|
|
41
|
+
attrs.style = (attrs.style || '') + `;background-color: ${colorValue};`;
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
// Override the default table node spec to support custom attributes.
|
|
49
|
+
const TableNodeSpec = Object.assign({}, TableNodesSpecs.table, {
|
|
50
|
+
attrs: {
|
|
51
|
+
marginLeft: { default: null },
|
|
52
|
+
},
|
|
53
|
+
parseDOM: [
|
|
54
|
+
{
|
|
55
|
+
tag: 'table',
|
|
56
|
+
getAttrs(dom: HTMLElement): ?Object {
|
|
57
|
+
const { marginLeft } = dom.style;
|
|
58
|
+
if (marginLeft && /\d+px/.test(marginLeft)) {
|
|
59
|
+
return { marginLeft: parseFloat(marginLeft) };
|
|
60
|
+
}
|
|
61
|
+
return null;
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
],
|
|
65
|
+
toDOM(node: Node): Array<any> {
|
|
66
|
+
// Normally, the DOM structure of the table node is rendered by
|
|
67
|
+
// `TableNodeView`. This method is only called when user selects a
|
|
68
|
+
// table node and copies it, which triggers the "serialize to HTML" flow
|
|
69
|
+
// that calles this method.
|
|
70
|
+
const { marginLeft } = node.attrs;
|
|
71
|
+
const domAttrs = {};
|
|
72
|
+
if (marginLeft) {
|
|
73
|
+
domAttrs.style = `margin-left: ${marginLeft}px`;
|
|
74
|
+
}
|
|
75
|
+
return ['table', domAttrs, 0];
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
Object.assign(TableNodesSpecs, { table: TableNodeSpec });
|
|
79
|
+
|
|
80
|
+
export default TableNodesSpecs;
|
package/TablePlugins.js.flow
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
// @flow
|
|
2
|
-
|
|
3
|
-
import { tableEditing } from 'prosemirror-tables';
|
|
4
|
-
|
|
5
|
-
import TableCellMenuPlugin from './TableCellMenuPlugin.js';
|
|
6
|
-
import TableResizePlugin from './TableResizePlugin.js';
|
|
7
|
-
|
|
8
|
-
// Tables
|
|
9
|
-
// https://github.com/ProseMirror/prosemirror-tables/blob/master/demo.js
|
|
10
|
-
export default [
|
|
11
|
-
new TableCellMenuPlugin(),
|
|
12
|
-
new TableResizePlugin(),
|
|
13
|
-
tableEditing(),
|
|
14
|
-
];
|
|
1
|
+
// @flow
|
|
2
|
+
|
|
3
|
+
import { tableEditing } from 'prosemirror-tables';
|
|
4
|
+
|
|
5
|
+
import TableCellMenuPlugin from './TableCellMenuPlugin.js';
|
|
6
|
+
import TableResizePlugin from './TableResizePlugin.js';
|
|
7
|
+
|
|
8
|
+
// Tables
|
|
9
|
+
// https://github.com/ProseMirror/prosemirror-tables/blob/master/demo.js
|
|
10
|
+
export default [
|
|
11
|
+
new TableCellMenuPlugin(),
|
|
12
|
+
new TableResizePlugin(),
|
|
13
|
+
tableEditing(),
|
|
14
|
+
];
|
package/TableResizePlugin.js
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
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 _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
3
|
-
function _possibleConstructorReturn(
|
|
4
|
-
function _assertThisInitialized(
|
|
3
|
+
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); }
|
|
4
|
+
function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
|
|
5
5
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
6
|
-
function _getPrototypeOf(
|
|
7
|
-
function _inherits(
|
|
8
|
-
function _setPrototypeOf(
|
|
6
|
+
function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }
|
|
7
|
+
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); }
|
|
8
|
+
function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
|
|
9
9
|
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; }
|
|
10
10
|
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; }
|
|
11
|
-
function _classCallCheck(
|
|
12
|
-
function _defineProperties(
|
|
13
|
-
function _createClass(
|
|
14
|
-
function _defineProperty(
|
|
15
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i :
|
|
11
|
+
function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
|
|
12
|
+
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); } }
|
|
13
|
+
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), 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
|
// Copyright (C) 2015-2016 by Marijn Haverbeke <marijnh@gmail.com> and others
|
|
18
18
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
@@ -70,7 +70,7 @@ var ResizeState = /*#__PURE__*/function () {
|
|
|
70
70
|
this.draggingInfo = draggingInfo;
|
|
71
71
|
this.forMarginLeft = forMarginLeft;
|
|
72
72
|
}
|
|
73
|
-
_createClass(ResizeState, [{
|
|
73
|
+
return _createClass(ResizeState, [{
|
|
74
74
|
key: "apply",
|
|
75
75
|
value: function apply(tr) {
|
|
76
76
|
var state = this;
|
|
@@ -91,7 +91,6 @@ var ResizeState = /*#__PURE__*/function () {
|
|
|
91
91
|
return state;
|
|
92
92
|
}
|
|
93
93
|
}]);
|
|
94
|
-
return ResizeState;
|
|
95
94
|
}(); // Function that handles the mousemove event inside table cell.
|
|
96
95
|
function handleMouseMove(view, event) {
|
|
97
96
|
var resizeState = PLUGIN_KEY.getState(view.state);
|
|
@@ -144,19 +143,20 @@ function handleMouseLeave(view) {
|
|
|
144
143
|
|
|
145
144
|
// Function that handles the mousedown event from the table cell.
|
|
146
145
|
function handleMouseDown(view, event) {
|
|
147
|
-
var
|
|
146
|
+
var _cancelDrag,
|
|
147
|
+
_this = this;
|
|
148
148
|
// It's possible that the resize action that happened earlier was inturrupted
|
|
149
149
|
// while its dependent mouse events were stopped or prevented by others.
|
|
150
150
|
// We need to stop the previous resize action if it did not finish.
|
|
151
|
-
cancelDrag
|
|
151
|
+
(_cancelDrag = cancelDrag) === null || _cancelDrag === void 0 || _cancelDrag(event);
|
|
152
152
|
var resizeState = PLUGIN_KEY.getState(view.state);
|
|
153
153
|
if (resizeState.cellPos === -1 || resizeState.draggingInfo) {
|
|
154
154
|
return false;
|
|
155
155
|
}
|
|
156
156
|
var dragStarted = false;
|
|
157
157
|
var dragMoveHandler = null;
|
|
158
|
-
var
|
|
159
|
-
window.removeEventListener('mouseup',
|
|
158
|
+
var _finish = function finish(event) {
|
|
159
|
+
window.removeEventListener('mouseup', _finish, true);
|
|
160
160
|
window.removeEventListener('mousemove', _this.move, true);
|
|
161
161
|
dragStarted && handleDragEnd(view, event);
|
|
162
162
|
cancelDrag = null;
|
|
@@ -172,11 +172,11 @@ function handleMouseDown(view, event) {
|
|
|
172
172
|
dragMoveHandler = dragMoveHandler || batchMouseHandler(handleDragMove);
|
|
173
173
|
dragMoveHandler(view, event);
|
|
174
174
|
} else {
|
|
175
|
-
|
|
175
|
+
_finish(event);
|
|
176
176
|
}
|
|
177
177
|
};
|
|
178
|
-
cancelDrag =
|
|
179
|
-
window.addEventListener('mouseup',
|
|
178
|
+
cancelDrag = _finish;
|
|
179
|
+
window.addEventListener('mouseup', _finish, true);
|
|
180
180
|
window.addEventListener('mousemove', move, true);
|
|
181
181
|
event.preventDefault();
|
|
182
182
|
return true;
|
|
@@ -494,7 +494,6 @@ function compareNumbersList(one, two) {
|
|
|
494
494
|
|
|
495
495
|
// Plugin that supports table columns resizing.
|
|
496
496
|
var TableResizePlugin = /*#__PURE__*/function (_Plugin) {
|
|
497
|
-
_inherits(TableResizePlugin, _Plugin);
|
|
498
497
|
// [FS] IRAD-1005 2020-07-07
|
|
499
498
|
// Upgrade outdated packages.
|
|
500
499
|
//spec: Object;
|
|
@@ -538,6 +537,7 @@ var TableResizePlugin = /*#__PURE__*/function (_Plugin) {
|
|
|
538
537
|
}
|
|
539
538
|
}]);
|
|
540
539
|
}
|
|
540
|
+
_inherits(TableResizePlugin, _Plugin);
|
|
541
541
|
return _createClass(TableResizePlugin);
|
|
542
542
|
}(Plugin);
|
|
543
543
|
export { TableResizePlugin as default };
|