@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.
- package/BlockquoteInsertNewLineCommand.js.flow +70 -70
- package/BlockquoteNodeSpec.js.flow +29 -29
- package/BlockquoteToggleCommand.js.flow +56 -56
- package/BookmarkNodeSpec.js.flow +39 -39
- package/BulletListNodeSpec.js.flow +61 -61
- package/CZIProseMirror.js.flow +90 -90
- package/CodeBlockCommand.js.flow +65 -65
- package/CodeBlockNodeSpec.js.flow +24 -24
- package/CodeMarkSpec.js.flow +14 -14
- package/ContentPlaceholderPlugin.js.flow +183 -183
- package/CursorPlaceholderPlugin.js.flow +113 -113
- package/DocLayoutCommand.js.flow +97 -97
- package/DocNodeSpec.js.flow +62 -62
- package/EMMarkSpec.js.flow +39 -39
- package/EditorCommands.js.flow +124 -124
- package/EditorKeyMap.js.flow +173 -173
- package/EditorMarks.js +4 -2
- package/EditorMarks.js.flow +77 -74
- package/EditorNodes.js.flow +55 -55
- 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 +54 -54
- package/FontTypeMarkSpec.js.flow +89 -89
- package/HTMLMutator.js.flow +58 -58
- package/HangingIndentMarkSpec.js +34 -0
- package/HangingIndentMarkSpec.js.flow +30 -0
- package/HardBreakNodeSpec.js.flow +15 -15
- package/HeadingNodeSpec.js.flow +42 -42
- package/HistoryRedoCommand.js.flow +41 -41
- package/HistoryUndoCommand.js.flow +41 -41
- package/HorizontalRuleCommand.js.flow +71 -71
- package/HorizontalRuleNodeSpec.js.flow +39 -39
- package/ImageUploadPlaceholderPlugin.js.flow +187 -187
- package/LICENSE +22 -22
- package/LinkMarkSpec.js +4 -2
- package/LinkMarkSpec.js.flow +38 -37
- package/LinkSetURLCommand.js +1 -1
- package/LinkSetURLCommand.js.flow +129 -129
- package/LinkTooltipPlugin.js +32 -38
- package/LinkTooltipPlugin.js.flow +204 -217
- package/ListItemInsertNewLineCommand.js.flow +76 -76
- package/ListItemMergeCommand.js.flow +197 -197
- package/ListItemNodeSpec.js.flow +52 -52
- package/ListSplitCommand.js.flow +54 -54
- package/ListToggleCommand.js.flow +99 -99
- package/MarkNames.js +2 -1
- package/MarkNames.js.flow +20 -19
- package/MarksClearCommand.js.flow +66 -66
- package/NodeNames.js.flow +23 -23
- package/OrderedListNodeSpec.js.flow +131 -131
- package/OverrideMarkSpec.js.flow +49 -49
- package/ParagraphNodeSpec.js +21 -2
- package/ParagraphNodeSpec.js.flow +233 -215
- package/ParagraphSpacingCommand.js.flow +139 -139
- package/PrintCommand.js.flow +53 -53
- package/SelectionPlaceholderPlugin.js.flow +129 -129
- package/SpacerMarkSpec.js.flow +47 -47
- package/StrikeMarkSpec.js.flow +24 -24
- package/StrongMarkSpec.js.flow +39 -39
- package/StyleView.js.flow +18 -18
- package/TableBackgroundColorCommand.js.flow +79 -79
- package/TableBorderColorCommand.js +5 -3
- package/TableBorderColorCommand.js.flow +108 -106
- package/TableCellColorCommand.js.flow +73 -73
- package/TableCellMenuPlugin.js.flow +129 -129
- package/TableInsertCommand.js.flow +117 -117
- package/TableMergeCellsCommand.js.flow +113 -113
- package/TableNodesSpecs.js.flow +144 -144
- package/TablePlugins.js.flow +14 -14
- package/TableResizePlugin.js.flow +636 -636
- package/TextColorMarkSpec.js.flow +40 -40
- package/TextHighlightMarkSpec.js.flow +47 -47
- package/TextInsertTabSpaceCommand.js +0 -3
- package/TextInsertTabSpaceCommand.js.flow +103 -106
- package/TextNoWrapMarkSpec.js.flow +14 -14
- package/TextNodeSpec.js.flow +7 -7
- package/TextSelectionMarkSpec.js.flow +24 -24
- package/TextSubMarkSpec.js.flow +28 -28
- package/TextSuperMarkSpec.js.flow +28 -28
- package/TextUnderlineMarkSpec.js.flow +24 -24
- package/Types.js.flow +77 -77
- package/WebFontLoader.js.flow +22 -22
- package/blockQuoteInputRule.js.flow +36 -36
- package/bom.xml +8645 -8637
- package/browser.js.flow +7 -7
- package/buildEditorPlugins.js.flow +48 -48
- package/buildInputRules.js.flow +85 -85
- package/client/CollabConnector.js.flow +90 -90
- package/client/EditorConnection.js.flow +324 -324
- package/client/Licit.js +40 -40
- package/client/Licit.js.flow +649 -648
- package/client/Licit.test.js.flow +104 -104
- package/client/Reporter.js.flow +35 -35
- package/client/SimpleConnector.js.flow +61 -61
- package/client/http.js.flow +60 -60
- package/client/licit.css +12 -12
- package/client/throttle.js.flow +27 -27
- package/convertFromDOMElement.js.flow +33 -33
- package/convertFromHTML.js.flow +15 -15
- package/convertFromJSON.js.flow +53 -53
- package/convertToCSSPTValue.js.flow +19 -19
- package/convertToJSON.js.flow +7 -7
- package/createCommand.js.flow +62 -62
- package/createEditorKeyMap.js.flow +87 -87
- package/createEmptyEditorState.js.flow +29 -29
- package/createTableResizingPlugin.js.flow +86 -86
- package/findActionableCell.js.flow +74 -74
- package/findActiveMark.js.flow +32 -32
- package/hyphenize.js.flow +17 -17
- package/index.d.ts +167 -167
- package/index.js.flow +10 -10
- package/insertTable.js.flow +54 -54
- package/isEditorStateEmpty.js.flow +32 -32
- package/isTableNode.js.flow +15 -15
- package/joinDown.js.flow +25 -25
- package/joinListNode.js.flow +55 -55
- package/joinUp.js.flow +37 -37
- package/keymaps.js.flow +175 -175
- package/lookUpElement.js.flow +14 -14
- package/nodeAt.js.flow +12 -12
- package/normalizeHTML.js.flow +80 -80
- package/package.json +152 -152
- package/patchAnchorElements.js.flow +38 -38
- package/patchBreakElements.js.flow +22 -22
- package/patchElementInlineStyles.js.flow +92 -92
- package/patchListElements.js.flow +275 -275
- package/patchMathElements.js.flow +58 -58
- package/patchParagraphElements.js.flow +20 -20
- package/patchStyleElements.js.flow +197 -197
- package/patchTableElements.js.flow +88 -88
- package/rebaseDocWithSteps.js.flow +42 -42
- package/sanitizeURL.js.flow +13 -13
- package/splitListItem.js.flow +191 -191
- package/styles.css +46 -46
- package/toClosestFontPtSize.js.flow +22 -22
- package/toSafeHTMLDocument.js.flow +9 -9
- package/toggleBlockquote.js.flow +101 -101
- package/toggleCodeBlock.js.flow +102 -102
- package/ui/AlertInfo.js.flow +63 -63
- package/ui/BookmarkNodeView.js.flow +64 -64
- package/ui/CommandButton.js.flow +68 -68
- package/ui/CommandMenu.js.flow +74 -74
- package/ui/CommandMenuButton.js.flow +128 -128
- package/ui/CustomEditorView.js.flow +29 -29
- package/ui/CustomMenu.js.flow +14 -14
- package/ui/CustomMenuItem.js.flow +35 -35
- package/ui/CustomNodeView.js.flow +207 -207
- package/ui/CustomRadioButton.js.flow +63 -63
- package/ui/DocLayoutEditor.js.flow +130 -130
- package/ui/Editor.js.flow +281 -281
- package/ui/EditorFrameset.js.flow +79 -79
- package/ui/EditorToolbar.js.flow +197 -197
- package/ui/EditorToolbarConfig.js.flow +162 -162
- package/ui/FontSizeCommandMenuButton.js.flow +66 -66
- package/ui/FontTypeCommandMenuButton.js.flow +60 -60
- package/ui/Frag.js.flow +11 -11
- package/ui/Icon.js +1 -1
- package/ui/Icon.js.flow +82 -82
- package/ui/ImageInlineEditor.js.flow +66 -66
- package/ui/KeyCodes.js.flow +12 -12
- package/ui/LinkTooltip.js.flow +51 -51
- package/ui/LinkURLEditor.js.flow +227 -227
- package/ui/ListItemNodeView.js.flow +101 -101
- package/ui/ListTypeButton.js.flow +121 -121
- package/ui/ListTypeCommandButton.js.flow +85 -85
- package/ui/ListTypeMenu.js.flow +78 -78
- package/ui/LoadingIndicator.js.flow +19 -19
- package/ui/PasteMenu.js.flow +52 -52
- package/ui/ResizeObserver.js.flow +105 -105
- package/ui/RichTextEditor.js.flow +133 -133
- package/ui/SelectionObserver.js.flow +134 -134
- package/ui/TableCellMenu.js.flow +49 -49
- package/ui/TableGridSizeEditor.js.flow +185 -185
- package/ui/TableNodeView.js.flow +36 -36
- package/ui/bindScrollHandler.js.flow +46 -46
- package/ui/canUseCSSFont.js.flow +42 -42
- 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 +239 -216
- package/ui/czi-form.css +201 -201
- 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 -121
- package/ui/czi-indent.css +137 -137
- package/ui/czi-inline-editor.css +20 -20
- package/ui/czi-link-tooltip.css +112 -112
- package/ui/czi-list.css +406 -406
- package/ui/czi-loading-indicator.css +66 -66
- package/ui/czi-math-view.css +62 -62
- package/ui/czi-selection-placeholder.css +24 -24
- package/ui/czi-table-cell-menu.css +16 -16
- package/ui/czi-table-grid-size-editor.css +37 -37
- package/ui/czi-table.css +89 -89
- package/ui/czi-vars.css +47 -45
- package/ui/findActiveFontSize.js.flow +55 -55
- package/ui/findActiveFontType.js.flow +35 -35
- package/ui/fonts.css +460 -460
- package/ui/handleEditorDrop.js.flow +28 -28
- package/ui/handleEditorKeyDown.js.flow +39 -39
- 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.flow +40 -40
- package/ui/isElementFullyVisible.js.flow +14 -14
- package/ui/isOffline.js.flow +8 -8
- package/ui/isReactClass.js.flow +12 -12
- package/ui/listType.css +21 -21
- package/ui/resolveImage.js.flow +121 -121
- package/ui/toCSSColor.js.flow +51 -51
- package/ui/toCSSLineSpacing.js.flow +53 -53
- package/ui/toHexColor.js.flow +26 -26
- package/ui/uuid.js.flow +9 -9
- package/uuid.js.flow +9 -9
package/convertFromHTML.js.flow
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
// @flow
|
|
2
|
-
|
|
3
|
-
import { Schema } from 'prosemirror-model';
|
|
4
|
-
import { EditorState, Plugin } from 'prosemirror-state';
|
|
5
|
-
import convertFromDOMElement from './convertFromDOMElement.js';
|
|
6
|
-
|
|
7
|
-
export default function convertFromHTML(
|
|
8
|
-
html: string,
|
|
9
|
-
schema: Schema,
|
|
10
|
-
plugins: Array<Plugin>
|
|
11
|
-
): EditorState {
|
|
12
|
-
const root = document.createElement('html');
|
|
13
|
-
root.innerHTML = html || ' ';
|
|
14
|
-
return convertFromDOMElement(root, schema, plugins);
|
|
15
|
-
}
|
|
1
|
+
// @flow
|
|
2
|
+
|
|
3
|
+
import { Schema } from 'prosemirror-model';
|
|
4
|
+
import { EditorState, Plugin } from 'prosemirror-state';
|
|
5
|
+
import convertFromDOMElement from './convertFromDOMElement.js';
|
|
6
|
+
|
|
7
|
+
export default function convertFromHTML(
|
|
8
|
+
html: string,
|
|
9
|
+
schema: Schema,
|
|
10
|
+
plugins: Array<Plugin>
|
|
11
|
+
): EditorState {
|
|
12
|
+
const root = document.createElement('html');
|
|
13
|
+
root.innerHTML = html || ' ';
|
|
14
|
+
return convertFromDOMElement(root, schema, plugins);
|
|
15
|
+
}
|
package/convertFromJSON.js.flow
CHANGED
|
@@ -1,53 +1,53 @@
|
|
|
1
|
-
// @flow
|
|
2
|
-
|
|
3
|
-
import { Schema } from 'prosemirror-model';
|
|
4
|
-
import { EditorState, Plugin } from 'prosemirror-state';
|
|
5
|
-
import createEmptyEditorState from './createEmptyEditorState.js';
|
|
6
|
-
|
|
7
|
-
export default function convertFromJSON(
|
|
8
|
-
json: Object | string,
|
|
9
|
-
schema: ?Schema,
|
|
10
|
-
defaultSchema: Schema,
|
|
11
|
-
effectivePlugins: Array<Plugin>
|
|
12
|
-
): EditorState {
|
|
13
|
-
const editorSchema = schema || defaultSchema;
|
|
14
|
-
let error = false;
|
|
15
|
-
|
|
16
|
-
if (typeof json === 'string') {
|
|
17
|
-
try {
|
|
18
|
-
json = JSON.parse(json);
|
|
19
|
-
} catch (ex) {
|
|
20
|
-
console.error('convertFromJSON:', ex);
|
|
21
|
-
error = true;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
if (!json || typeof json !== 'object') {
|
|
26
|
-
console.error('convertFromJSON: invalid object', json);
|
|
27
|
-
error = true;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
if (error) {
|
|
31
|
-
// Use the effectivePlugins, editor hangs, b'coz of missing default core plugins
|
|
32
|
-
return createEmptyEditorState(schema, defaultSchema, effectivePlugins);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
// Handle gracefully when error thrown on invalid json
|
|
36
|
-
let doc = null;
|
|
37
|
-
|
|
38
|
-
try {
|
|
39
|
-
if (undefined === json.content) {
|
|
40
|
-
json.content = [{ type: 'paragraph' }];
|
|
41
|
-
}
|
|
42
|
-
doc = editorSchema.nodeFromJSON(json);
|
|
43
|
-
} catch (error) {
|
|
44
|
-
console.error('Failed to convert JSON to valid ProseMirror: ', error);
|
|
45
|
-
return null;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
return EditorState.create({
|
|
49
|
-
doc: doc,
|
|
50
|
-
schema: editorSchema,
|
|
51
|
-
plugins: effectivePlugins,
|
|
52
|
-
});
|
|
53
|
-
}
|
|
1
|
+
// @flow
|
|
2
|
+
|
|
3
|
+
import { Schema } from 'prosemirror-model';
|
|
4
|
+
import { EditorState, Plugin } from 'prosemirror-state';
|
|
5
|
+
import createEmptyEditorState from './createEmptyEditorState.js';
|
|
6
|
+
|
|
7
|
+
export default function convertFromJSON(
|
|
8
|
+
json: Object | string,
|
|
9
|
+
schema: ?Schema,
|
|
10
|
+
defaultSchema: Schema,
|
|
11
|
+
effectivePlugins: Array<Plugin>
|
|
12
|
+
): EditorState {
|
|
13
|
+
const editorSchema = schema || defaultSchema;
|
|
14
|
+
let error = false;
|
|
15
|
+
|
|
16
|
+
if (typeof json === 'string') {
|
|
17
|
+
try {
|
|
18
|
+
json = JSON.parse(json);
|
|
19
|
+
} catch (ex) {
|
|
20
|
+
console.error('convertFromJSON:', ex);
|
|
21
|
+
error = true;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
if (!json || typeof json !== 'object') {
|
|
26
|
+
console.error('convertFromJSON: invalid object', json);
|
|
27
|
+
error = true;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
if (error) {
|
|
31
|
+
// Use the effectivePlugins, editor hangs, b'coz of missing default core plugins
|
|
32
|
+
return createEmptyEditorState(schema, defaultSchema, effectivePlugins);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// Handle gracefully when error thrown on invalid json
|
|
36
|
+
let doc = null;
|
|
37
|
+
|
|
38
|
+
try {
|
|
39
|
+
if (undefined === json.content) {
|
|
40
|
+
json.content = [{ type: 'paragraph' }];
|
|
41
|
+
}
|
|
42
|
+
doc = editorSchema.nodeFromJSON(json);
|
|
43
|
+
} catch (error) {
|
|
44
|
+
console.error('Failed to convert JSON to valid ProseMirror: ', error);
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return EditorState.create({
|
|
49
|
+
doc: doc,
|
|
50
|
+
schema: editorSchema,
|
|
51
|
+
plugins: effectivePlugins,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
// @flow
|
|
2
|
-
|
|
3
|
-
export const PX_TO_PT_RATIO = 0.75292857;
|
|
4
|
-
export const PT_TO_PX_RATIO = 1 / PX_TO_PT_RATIO;
|
|
5
|
-
|
|
6
|
-
export default function convertToCSSPTValue(styleValue: string): number {
|
|
7
|
-
const unit = styleValue.slice(-2).toLowerCase(); // Extract the last two characters for the unit
|
|
8
|
-
const value = Number(styleValue.slice(0, -2)); // Extract and convert the number part
|
|
9
|
-
|
|
10
|
-
if (!value || (unit !== 'px' && unit !== 'pt')) {
|
|
11
|
-
return 0;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
if (unit === 'px') {
|
|
15
|
-
return PX_TO_PT_RATIO * value;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
return value; // If 'pt', return the value unchanged
|
|
19
|
-
}
|
|
1
|
+
// @flow
|
|
2
|
+
|
|
3
|
+
export const PX_TO_PT_RATIO = 0.75292857;
|
|
4
|
+
export const PT_TO_PX_RATIO = 1 / PX_TO_PT_RATIO;
|
|
5
|
+
|
|
6
|
+
export default function convertToCSSPTValue(styleValue: string): number {
|
|
7
|
+
const unit = styleValue.slice(-2).toLowerCase(); // Extract the last two characters for the unit
|
|
8
|
+
const value = Number(styleValue.slice(0, -2)); // Extract and convert the number part
|
|
9
|
+
|
|
10
|
+
if (!value || (unit !== 'px' && unit !== 'pt')) {
|
|
11
|
+
return 0;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
if (unit === 'px') {
|
|
15
|
+
return PX_TO_PT_RATIO * value;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
return value; // If 'pt', return the value unchanged
|
|
19
|
+
}
|
package/convertToJSON.js.flow
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
// @flow
|
|
2
|
-
|
|
3
|
-
import { EditorState } from 'prosemirror-state';
|
|
4
|
-
|
|
5
|
-
export default function convertToJSON(editorState: EditorState): Object {
|
|
6
|
-
return editorState.doc.toJSON();
|
|
7
|
-
}
|
|
1
|
+
// @flow
|
|
2
|
+
|
|
3
|
+
import { EditorState } from 'prosemirror-state';
|
|
4
|
+
|
|
5
|
+
export default function convertToJSON(editorState: EditorState): Object {
|
|
6
|
+
return editorState.doc.toJSON();
|
|
7
|
+
}
|
package/createCommand.js.flow
CHANGED
|
@@ -1,62 +1,62 @@
|
|
|
1
|
-
// @flow
|
|
2
|
-
|
|
3
|
-
import { EditorState } from 'prosemirror-state';
|
|
4
|
-
import { Transform } from 'prosemirror-transform';
|
|
5
|
-
import { EditorView } from 'prosemirror-view';
|
|
6
|
-
import * as React from 'react';
|
|
7
|
-
import { UICommand } from '@modusoperandi/licit-doc-attrs-step';
|
|
8
|
-
|
|
9
|
-
type ExecuteCall = (
|
|
10
|
-
state: EditorState,
|
|
11
|
-
dispatch?: ?(tr: Transform) => void,
|
|
12
|
-
view?: ?EditorView
|
|
13
|
-
) => boolean;
|
|
14
|
-
|
|
15
|
-
export default function createCommand(execute: ExecuteCall): UICommand {
|
|
16
|
-
class CustomCommand extends UICommand {
|
|
17
|
-
isEnabled = (state: EditorState): boolean => {
|
|
18
|
-
return this.execute(state);
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
execute = (
|
|
22
|
-
state: EditorState,
|
|
23
|
-
dispatch: ?(tr: Transform) => void,
|
|
24
|
-
view: ?EditorView
|
|
25
|
-
): boolean => {
|
|
26
|
-
const tr = state.tr;
|
|
27
|
-
let endTr = tr;
|
|
28
|
-
execute(
|
|
29
|
-
state,
|
|
30
|
-
(nextTr) => {
|
|
31
|
-
endTr = nextTr;
|
|
32
|
-
dispatch && dispatch(endTr);
|
|
33
|
-
},
|
|
34
|
-
view
|
|
35
|
-
);
|
|
36
|
-
return endTr.docChanged || tr !== endTr;
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
waitForUserInput = (
|
|
40
|
-
_state: EditorState,
|
|
41
|
-
_dispatch: ?(tr: Transform) => void,
|
|
42
|
-
_view: ?EditorView,
|
|
43
|
-
_event: ?React.SyntheticEvent
|
|
44
|
-
): Promise<undefined> => {
|
|
45
|
-
return Promise.resolve(undefined);
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
executeWithUserInput = (
|
|
49
|
-
_state: EditorState,
|
|
50
|
-
_dispatch: ?(tr: Transform) => void,
|
|
51
|
-
_view: ?EditorView,
|
|
52
|
-
_inputs: ?string
|
|
53
|
-
): boolean => {
|
|
54
|
-
return false;
|
|
55
|
-
};
|
|
56
|
-
|
|
57
|
-
cancel(): void {
|
|
58
|
-
return null;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
return new CustomCommand();
|
|
62
|
-
}
|
|
1
|
+
// @flow
|
|
2
|
+
|
|
3
|
+
import { EditorState } from 'prosemirror-state';
|
|
4
|
+
import { Transform } from 'prosemirror-transform';
|
|
5
|
+
import { EditorView } from 'prosemirror-view';
|
|
6
|
+
import * as React from 'react';
|
|
7
|
+
import { UICommand } from '@modusoperandi/licit-doc-attrs-step';
|
|
8
|
+
|
|
9
|
+
type ExecuteCall = (
|
|
10
|
+
state: EditorState,
|
|
11
|
+
dispatch?: ?(tr: Transform) => void,
|
|
12
|
+
view?: ?EditorView
|
|
13
|
+
) => boolean;
|
|
14
|
+
|
|
15
|
+
export default function createCommand(execute: ExecuteCall): UICommand {
|
|
16
|
+
class CustomCommand extends UICommand {
|
|
17
|
+
isEnabled = (state: EditorState): boolean => {
|
|
18
|
+
return this.execute(state);
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
execute = (
|
|
22
|
+
state: EditorState,
|
|
23
|
+
dispatch: ?(tr: Transform) => void,
|
|
24
|
+
view: ?EditorView
|
|
25
|
+
): boolean => {
|
|
26
|
+
const tr = state.tr;
|
|
27
|
+
let endTr = tr;
|
|
28
|
+
execute(
|
|
29
|
+
state,
|
|
30
|
+
(nextTr) => {
|
|
31
|
+
endTr = nextTr;
|
|
32
|
+
dispatch && dispatch(endTr);
|
|
33
|
+
},
|
|
34
|
+
view
|
|
35
|
+
);
|
|
36
|
+
return endTr.docChanged || tr !== endTr;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
waitForUserInput = (
|
|
40
|
+
_state: EditorState,
|
|
41
|
+
_dispatch: ?(tr: Transform) => void,
|
|
42
|
+
_view: ?EditorView,
|
|
43
|
+
_event: ?React.SyntheticEvent
|
|
44
|
+
): Promise<undefined> => {
|
|
45
|
+
return Promise.resolve(undefined);
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
executeWithUserInput = (
|
|
49
|
+
_state: EditorState,
|
|
50
|
+
_dispatch: ?(tr: Transform) => void,
|
|
51
|
+
_view: ?EditorView,
|
|
52
|
+
_inputs: ?string
|
|
53
|
+
): boolean => {
|
|
54
|
+
return false;
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
cancel(): void {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return new CustomCommand();
|
|
62
|
+
}
|
|
@@ -1,87 +1,87 @@
|
|
|
1
|
-
// @flow
|
|
2
|
-
|
|
3
|
-
import { EditorState } from 'prosemirror-state';
|
|
4
|
-
import { Transform } from 'prosemirror-transform';
|
|
5
|
-
import { EditorView } from 'prosemirror-view';
|
|
6
|
-
|
|
7
|
-
import * as EditorCommands from './EditorCommands.js';
|
|
8
|
-
import * as EditorKeyMap from './EditorKeyMap.js';
|
|
9
|
-
import { UICommand } from '@modusoperandi/licit-doc-attrs-step';
|
|
10
|
-
import type {
|
|
11
|
-
UserKeyCommand,
|
|
12
|
-
UserKeyMap,
|
|
13
|
-
} from '@modusoperandi/licit-doc-attrs-step';
|
|
14
|
-
|
|
15
|
-
const {
|
|
16
|
-
KEY_BACK_DELETE,
|
|
17
|
-
KEY_FORWARD_DELETE,
|
|
18
|
-
KEY_INSERT_NEW_LINE_IN_BLOCKQUOTE,
|
|
19
|
-
KEY_REDO,
|
|
20
|
-
KEY_SPLIT_LIST_ITEM,
|
|
21
|
-
KEY_TAB_SHIFT,
|
|
22
|
-
KEY_TAB,
|
|
23
|
-
KEY_TOGGLE_BOLD,
|
|
24
|
-
KEY_TOGGLE_ITALIC,
|
|
25
|
-
KEY_TOGGLE_UNDERLINE,
|
|
26
|
-
KEY_UNDO,
|
|
27
|
-
} = EditorKeyMap;
|
|
28
|
-
|
|
29
|
-
const {
|
|
30
|
-
BLOCKQUOTE_INSERT_NEW_LINE,
|
|
31
|
-
EM,
|
|
32
|
-
HISTORY_REDO,
|
|
33
|
-
HISTORY_UNDO,
|
|
34
|
-
INDENT_LESS,
|
|
35
|
-
INDENT_MORE,
|
|
36
|
-
LIST_ITEM_MERGE_DOWN,
|
|
37
|
-
LIST_ITEM_MERGE_UP,
|
|
38
|
-
LIST_SPLIT,
|
|
39
|
-
TABLE_MOVE_TO_NEXT_CELL,
|
|
40
|
-
TABLE_MOVE_TO_PREV_CELL,
|
|
41
|
-
TEXT_INSERT_TAB_SPACE,
|
|
42
|
-
STRONG,
|
|
43
|
-
UNDERLINE,
|
|
44
|
-
} = EditorCommands;
|
|
45
|
-
|
|
46
|
-
function bindCommands(...commands: Array<UICommand>): UserKeyCommand {
|
|
47
|
-
return function (
|
|
48
|
-
state: EditorState,
|
|
49
|
-
dispatch: ?(tr: Transform) => void,
|
|
50
|
-
view: ?EditorView
|
|
51
|
-
): boolean {
|
|
52
|
-
return commands.some((cmd) => {
|
|
53
|
-
if (cmd.isEnabled(state, view, '')) {
|
|
54
|
-
cmd.execute(state, dispatch, view);
|
|
55
|
-
return true;
|
|
56
|
-
}
|
|
57
|
-
return false;
|
|
58
|
-
});
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
export default function createEditorKeyMap(): UserKeyMap {
|
|
63
|
-
const result = {
|
|
64
|
-
[KEY_BACK_DELETE.common]: LIST_ITEM_MERGE_UP.execute,
|
|
65
|
-
[KEY_FORWARD_DELETE.common]: LIST_ITEM_MERGE_DOWN.execute,
|
|
66
|
-
[KEY_REDO.common]: HISTORY_REDO.execute,
|
|
67
|
-
[KEY_SPLIT_LIST_ITEM.common]: LIST_SPLIT.execute,
|
|
68
|
-
[KEY_TAB.common]: bindCommands(
|
|
69
|
-
TABLE_MOVE_TO_NEXT_CELL,
|
|
70
|
-
TEXT_INSERT_TAB_SPACE,
|
|
71
|
-
INDENT_MORE
|
|
72
|
-
),
|
|
73
|
-
[KEY_TAB_SHIFT.common]: bindCommands(
|
|
74
|
-
TABLE_MOVE_TO_PREV_CELL,
|
|
75
|
-
TEXT_INSERT_TAB_SPACE,
|
|
76
|
-
INDENT_LESS
|
|
77
|
-
),
|
|
78
|
-
[KEY_TOGGLE_BOLD.common]: STRONG.execute,
|
|
79
|
-
[KEY_TOGGLE_ITALIC.common]: EM.execute,
|
|
80
|
-
[KEY_TOGGLE_UNDERLINE.common]: UNDERLINE.execute,
|
|
81
|
-
[KEY_UNDO.common]: HISTORY_UNDO.execute,
|
|
82
|
-
[KEY_INSERT_NEW_LINE_IN_BLOCKQUOTE.common]:
|
|
83
|
-
BLOCKQUOTE_INSERT_NEW_LINE.execute,
|
|
84
|
-
};
|
|
85
|
-
|
|
86
|
-
return result;
|
|
87
|
-
}
|
|
1
|
+
// @flow
|
|
2
|
+
|
|
3
|
+
import { EditorState } from 'prosemirror-state';
|
|
4
|
+
import { Transform } from 'prosemirror-transform';
|
|
5
|
+
import { EditorView } from 'prosemirror-view';
|
|
6
|
+
|
|
7
|
+
import * as EditorCommands from './EditorCommands.js';
|
|
8
|
+
import * as EditorKeyMap from './EditorKeyMap.js';
|
|
9
|
+
import { UICommand } from '@modusoperandi/licit-doc-attrs-step';
|
|
10
|
+
import type {
|
|
11
|
+
UserKeyCommand,
|
|
12
|
+
UserKeyMap,
|
|
13
|
+
} from '@modusoperandi/licit-doc-attrs-step';
|
|
14
|
+
|
|
15
|
+
const {
|
|
16
|
+
KEY_BACK_DELETE,
|
|
17
|
+
KEY_FORWARD_DELETE,
|
|
18
|
+
KEY_INSERT_NEW_LINE_IN_BLOCKQUOTE,
|
|
19
|
+
KEY_REDO,
|
|
20
|
+
KEY_SPLIT_LIST_ITEM,
|
|
21
|
+
KEY_TAB_SHIFT,
|
|
22
|
+
KEY_TAB,
|
|
23
|
+
KEY_TOGGLE_BOLD,
|
|
24
|
+
KEY_TOGGLE_ITALIC,
|
|
25
|
+
KEY_TOGGLE_UNDERLINE,
|
|
26
|
+
KEY_UNDO,
|
|
27
|
+
} = EditorKeyMap;
|
|
28
|
+
|
|
29
|
+
const {
|
|
30
|
+
BLOCKQUOTE_INSERT_NEW_LINE,
|
|
31
|
+
EM,
|
|
32
|
+
HISTORY_REDO,
|
|
33
|
+
HISTORY_UNDO,
|
|
34
|
+
INDENT_LESS,
|
|
35
|
+
INDENT_MORE,
|
|
36
|
+
LIST_ITEM_MERGE_DOWN,
|
|
37
|
+
LIST_ITEM_MERGE_UP,
|
|
38
|
+
LIST_SPLIT,
|
|
39
|
+
TABLE_MOVE_TO_NEXT_CELL,
|
|
40
|
+
TABLE_MOVE_TO_PREV_CELL,
|
|
41
|
+
TEXT_INSERT_TAB_SPACE,
|
|
42
|
+
STRONG,
|
|
43
|
+
UNDERLINE,
|
|
44
|
+
} = EditorCommands;
|
|
45
|
+
|
|
46
|
+
function bindCommands(...commands: Array<UICommand>): UserKeyCommand {
|
|
47
|
+
return function (
|
|
48
|
+
state: EditorState,
|
|
49
|
+
dispatch: ?(tr: Transform) => void,
|
|
50
|
+
view: ?EditorView
|
|
51
|
+
): boolean {
|
|
52
|
+
return commands.some((cmd) => {
|
|
53
|
+
if (cmd.isEnabled(state, view, '')) {
|
|
54
|
+
cmd.execute(state, dispatch, view);
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
return false;
|
|
58
|
+
});
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export default function createEditorKeyMap(): UserKeyMap {
|
|
63
|
+
const result = {
|
|
64
|
+
[KEY_BACK_DELETE.common]: LIST_ITEM_MERGE_UP.execute,
|
|
65
|
+
[KEY_FORWARD_DELETE.common]: LIST_ITEM_MERGE_DOWN.execute,
|
|
66
|
+
[KEY_REDO.common]: HISTORY_REDO.execute,
|
|
67
|
+
[KEY_SPLIT_LIST_ITEM.common]: LIST_SPLIT.execute,
|
|
68
|
+
[KEY_TAB.common]: bindCommands(
|
|
69
|
+
TABLE_MOVE_TO_NEXT_CELL,
|
|
70
|
+
TEXT_INSERT_TAB_SPACE,
|
|
71
|
+
INDENT_MORE
|
|
72
|
+
),
|
|
73
|
+
[KEY_TAB_SHIFT.common]: bindCommands(
|
|
74
|
+
TABLE_MOVE_TO_PREV_CELL,
|
|
75
|
+
TEXT_INSERT_TAB_SPACE,
|
|
76
|
+
INDENT_LESS
|
|
77
|
+
),
|
|
78
|
+
[KEY_TOGGLE_BOLD.common]: STRONG.execute,
|
|
79
|
+
[KEY_TOGGLE_ITALIC.common]: EM.execute,
|
|
80
|
+
[KEY_TOGGLE_UNDERLINE.common]: UNDERLINE.execute,
|
|
81
|
+
[KEY_UNDO.common]: HISTORY_UNDO.execute,
|
|
82
|
+
[KEY_INSERT_NEW_LINE_IN_BLOCKQUOTE.common]:
|
|
83
|
+
BLOCKQUOTE_INSERT_NEW_LINE.execute,
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
return result;
|
|
87
|
+
}
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
// @flow
|
|
2
|
-
|
|
3
|
-
import { Schema } from 'prosemirror-model';
|
|
4
|
-
import { EditorState, Plugin } from 'prosemirror-state';
|
|
5
|
-
import convertFromJSON from './convertFromJSON.js';
|
|
6
|
-
import EditorSchema from './EditorSchema.js';
|
|
7
|
-
|
|
8
|
-
export const EMPTY_DOC_JSON = {
|
|
9
|
-
type: 'doc',
|
|
10
|
-
content: [
|
|
11
|
-
{
|
|
12
|
-
type: 'paragraph',
|
|
13
|
-
}, // [FS] IRAD-1710 2022-03-04 - No text content needed
|
|
14
|
-
],
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
export default function createEmptyEditorState(
|
|
18
|
-
schema: ?Schema,
|
|
19
|
-
defaultSchema: ?Schema,
|
|
20
|
-
plugins: Array<Plugin>
|
|
21
|
-
): EditorState {
|
|
22
|
-
// TODO: Check if schema support doc and paragraph nodes.
|
|
23
|
-
return convertFromJSON(
|
|
24
|
-
EMPTY_DOC_JSON,
|
|
25
|
-
schema,
|
|
26
|
-
defaultSchema || EditorSchema,
|
|
27
|
-
plugins
|
|
28
|
-
);
|
|
29
|
-
}
|
|
1
|
+
// @flow
|
|
2
|
+
|
|
3
|
+
import { Schema } from 'prosemirror-model';
|
|
4
|
+
import { EditorState, Plugin } from 'prosemirror-state';
|
|
5
|
+
import convertFromJSON from './convertFromJSON.js';
|
|
6
|
+
import EditorSchema from './EditorSchema.js';
|
|
7
|
+
|
|
8
|
+
export const EMPTY_DOC_JSON = {
|
|
9
|
+
type: 'doc',
|
|
10
|
+
content: [
|
|
11
|
+
{
|
|
12
|
+
type: 'paragraph',
|
|
13
|
+
}, // [FS] IRAD-1710 2022-03-04 - No text content needed
|
|
14
|
+
],
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export default function createEmptyEditorState(
|
|
18
|
+
schema: ?Schema,
|
|
19
|
+
defaultSchema: ?Schema,
|
|
20
|
+
plugins: Array<Plugin>
|
|
21
|
+
): EditorState {
|
|
22
|
+
// TODO: Check if schema support doc and paragraph nodes.
|
|
23
|
+
return convertFromJSON(
|
|
24
|
+
EMPTY_DOC_JSON,
|
|
25
|
+
schema,
|
|
26
|
+
defaultSchema || EditorSchema,
|
|
27
|
+
plugins
|
|
28
|
+
);
|
|
29
|
+
}
|