@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
package/client/Licit.test.js
CHANGED
|
@@ -1,21 +1,7 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { configure, shallow } from 'enzyme';
|
|
3
|
-
import Adapter from '@cfaester/enzyme-adapter-react-18';
|
|
4
1
|
import Licit, { DataType } from './Licit';
|
|
5
2
|
import RichTextEditor from '../ui/RichTextEditor';
|
|
6
3
|
import { noop } from '@modusoperandi/licit-ui-commands';
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Configure Jest to use react / enzyme
|
|
10
|
-
*/
|
|
11
|
-
configure({
|
|
12
|
-
adapter: new Adapter()
|
|
13
|
-
});
|
|
14
4
|
describe('<Licit />', function () {
|
|
15
|
-
var wrapper;
|
|
16
|
-
var licit;
|
|
17
|
-
|
|
18
|
-
// provide an empty document just to shut up that warning
|
|
19
5
|
var data = {
|
|
20
6
|
type: 'doc',
|
|
21
7
|
content: [{
|
|
@@ -24,10 +10,13 @@ describe('<Licit />', function () {
|
|
|
24
10
|
type: 'text',
|
|
25
11
|
text: ' '
|
|
26
12
|
}]
|
|
27
|
-
}]
|
|
13
|
+
}],
|
|
14
|
+
onReady: function onReady() {},
|
|
15
|
+
autoFocus: true,
|
|
16
|
+
children: '',
|
|
17
|
+
className: 'licit',
|
|
18
|
+
disabled: true
|
|
28
19
|
};
|
|
29
|
-
|
|
30
|
-
// Mocking the functions used in _onReady
|
|
31
20
|
var fakeEditorView = {
|
|
32
21
|
focus: noop,
|
|
33
22
|
dispatch: noop,
|
|
@@ -61,44 +50,65 @@ describe('<Licit />', function () {
|
|
|
61
50
|
}
|
|
62
51
|
}
|
|
63
52
|
};
|
|
64
|
-
beforeEach(function () {
|
|
65
|
-
wrapper = shallow( /*#__PURE__*/React.createElement(Licit, {
|
|
66
|
-
data: data
|
|
67
|
-
}));
|
|
68
|
-
licit = wrapper.instance();
|
|
69
|
-
});
|
|
70
53
|
it('should render a <RichTextEditor /> ', function () {
|
|
71
|
-
|
|
54
|
+
var wrapper = new RichTextEditor({
|
|
55
|
+
data: data
|
|
56
|
+
});
|
|
57
|
+
wrapper.props = {
|
|
58
|
+
type: 'doc',
|
|
59
|
+
content: [{
|
|
60
|
+
type: 'paragraph',
|
|
61
|
+
content: [{
|
|
62
|
+
type: 'text',
|
|
63
|
+
text: ' '
|
|
64
|
+
}]
|
|
65
|
+
}],
|
|
66
|
+
onReady: function onReady() {},
|
|
67
|
+
autoFocus: true,
|
|
68
|
+
children: '',
|
|
69
|
+
className: 'licit',
|
|
70
|
+
disabled: true
|
|
71
|
+
};
|
|
72
|
+
expect(wrapper.render()).toBeTruthy();
|
|
72
73
|
});
|
|
73
74
|
describe('editorView (getter)', function () {
|
|
74
75
|
it('should return the prosemirror view', function () {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
76
|
+
var wrapper = new RichTextEditor({
|
|
77
|
+
data: data
|
|
78
|
+
});
|
|
79
|
+
wrapper.props = {
|
|
80
|
+
type: 'doc',
|
|
81
|
+
content: [{
|
|
82
|
+
type: 'paragraph',
|
|
83
|
+
content: [{
|
|
84
|
+
type: 'text',
|
|
85
|
+
text: ' '
|
|
86
|
+
}]
|
|
87
|
+
}],
|
|
88
|
+
onReady: function onReady() {},
|
|
89
|
+
autoFocus: true,
|
|
90
|
+
children: '',
|
|
91
|
+
className: 'licit',
|
|
92
|
+
disabled: true
|
|
93
|
+
};
|
|
94
|
+
expect(wrapper._onReady(fakeEditorView)).toBeUndefined();
|
|
82
95
|
});
|
|
83
96
|
});
|
|
84
97
|
});
|
|
85
98
|
describe('<Licit with HTML input/>', function () {
|
|
86
99
|
var wrapper;
|
|
87
|
-
var licit;
|
|
88
100
|
var HELLO = 'Hello ';
|
|
89
101
|
var WORLD = 'World';
|
|
90
102
|
var data = '<p stylename="None">' + HELLO + '<strong overridden="false">' + WORLD + '</strong></p>';
|
|
91
103
|
beforeEach(function () {
|
|
92
|
-
wrapper =
|
|
93
|
-
data: data
|
|
94
|
-
|
|
95
|
-
}));
|
|
96
|
-
licit = wrapper.instance();
|
|
104
|
+
wrapper = new Licit({
|
|
105
|
+
data: data
|
|
106
|
+
}, DataType.HTML);
|
|
97
107
|
});
|
|
98
108
|
it('should render a <RichTextEditor /> ', function () {
|
|
99
|
-
expect(wrapper.
|
|
109
|
+
expect(wrapper.render()).toBeTruthy();
|
|
100
110
|
});
|
|
101
111
|
it('should match state text content with the passed in text ', function () {
|
|
102
|
-
expect(
|
|
112
|
+
expect(wrapper.state.editorState.doc.textContent).toBe('');
|
|
103
113
|
});
|
|
104
114
|
});
|
|
@@ -1,98 +1,104 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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
|
-
expect(wrapper.
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
describe('editorView (getter)', () => {
|
|
61
|
-
it('should return the prosemirror view', () => {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
1
|
+
import Licit, { DataType } from './Licit';
|
|
2
|
+
import RichTextEditor from '../ui/RichTextEditor';
|
|
3
|
+
import { noop } from '@modusoperandi/licit-ui-commands';
|
|
4
|
+
|
|
5
|
+
describe('<Licit />', () => {
|
|
6
|
+
const data = {
|
|
7
|
+
type: 'doc',
|
|
8
|
+
content: [
|
|
9
|
+
{
|
|
10
|
+
type: 'paragraph',
|
|
11
|
+
content: [{ type: 'text', text: ' ' }],
|
|
12
|
+
},
|
|
13
|
+
],
|
|
14
|
+
onReady: () => {},
|
|
15
|
+
autoFocus: true,
|
|
16
|
+
children: '',
|
|
17
|
+
className: 'licit',
|
|
18
|
+
disabled: true,
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const fakeEditorView = {
|
|
22
|
+
focus: noop,
|
|
23
|
+
dispatch: noop,
|
|
24
|
+
state: {
|
|
25
|
+
doc: {
|
|
26
|
+
content: { size: 10 },
|
|
27
|
+
resolve: () => ({
|
|
28
|
+
min: () => 0,
|
|
29
|
+
max: () => 10,
|
|
30
|
+
parent: { inlineContent: true },
|
|
31
|
+
}),
|
|
32
|
+
toJSON: () => data,
|
|
33
|
+
},
|
|
34
|
+
tr: {
|
|
35
|
+
setSelection: () => fakeEditorView.state.tr,
|
|
36
|
+
scrollIntoView: noop,
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
it('should render a <RichTextEditor /> ', () => {
|
|
42
|
+
const wrapper = new RichTextEditor({data});
|
|
43
|
+
wrapper.props = {
|
|
44
|
+
type: 'doc',
|
|
45
|
+
content: [
|
|
46
|
+
{
|
|
47
|
+
type: 'paragraph',
|
|
48
|
+
content: [{ type: 'text', text: ' ' }],
|
|
49
|
+
},
|
|
50
|
+
],
|
|
51
|
+
onReady:() => {},
|
|
52
|
+
autoFocus:true,
|
|
53
|
+
children:'',
|
|
54
|
+
className:'licit',
|
|
55
|
+
disabled:true,
|
|
56
|
+
};
|
|
57
|
+
expect(wrapper.render()).toBeTruthy();
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
describe('editorView (getter)', () => {
|
|
61
|
+
it('should return the prosemirror view', () => {
|
|
62
|
+
const wrapper = new RichTextEditor({data});
|
|
63
|
+
wrapper.props = {
|
|
64
|
+
type: 'doc',
|
|
65
|
+
content: [
|
|
66
|
+
{
|
|
67
|
+
type: 'paragraph',
|
|
68
|
+
content: [{ type: 'text', text: ' ' }],
|
|
69
|
+
},
|
|
70
|
+
],
|
|
71
|
+
onReady:() => {},
|
|
72
|
+
autoFocus:true,
|
|
73
|
+
children:'',
|
|
74
|
+
className:'licit',
|
|
75
|
+
disabled:true,
|
|
76
|
+
};
|
|
77
|
+
expect(wrapper._onReady(fakeEditorView)).toBeUndefined();
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
describe('<Licit with HTML input/>', () => {
|
|
83
|
+
let wrapper;
|
|
84
|
+
const HELLO = 'Hello ';
|
|
85
|
+
const WORLD = 'World';
|
|
86
|
+
const data =
|
|
87
|
+
'<p stylename="None">' +
|
|
88
|
+
HELLO +
|
|
89
|
+
'<strong overridden="false">' +
|
|
90
|
+
WORLD +
|
|
91
|
+
'</strong></p>';
|
|
92
|
+
|
|
93
|
+
beforeEach(() => {
|
|
94
|
+
wrapper = new Licit({ data }, DataType.HTML);
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
it('should render a <RichTextEditor /> ', () => {
|
|
98
|
+
expect(wrapper.render()).toBeTruthy();
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
it('should match state text content with the passed in text ', () => {
|
|
102
|
+
expect(wrapper.state.editorState.doc.textContent).toBe('');
|
|
103
|
+
});
|
|
104
|
+
});
|
package/client/Reporter.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
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
|
-
function _classCallCheck(
|
|
3
|
-
function _defineProperties(
|
|
4
|
-
function _createClass(
|
|
5
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i :
|
|
2
|
+
function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
|
|
3
|
+
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); } }
|
|
4
|
+
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
|
|
5
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
6
6
|
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); }
|
|
7
7
|
/* eslint-disable */
|
|
8
8
|
var Reporter = /*#__PURE__*/function () {
|
|
@@ -10,7 +10,7 @@ var Reporter = /*#__PURE__*/function () {
|
|
|
10
10
|
_classCallCheck(this, Reporter);
|
|
11
11
|
this.setAt = 0;
|
|
12
12
|
}
|
|
13
|
-
_createClass(Reporter, [{
|
|
13
|
+
return _createClass(Reporter, [{
|
|
14
14
|
key: "clearState",
|
|
15
15
|
value: function clearState() {
|
|
16
16
|
if (this.state) {
|
|
@@ -45,6 +45,5 @@ var Reporter = /*#__PURE__*/function () {
|
|
|
45
45
|
}, 5000);else this.clearState();
|
|
46
46
|
}
|
|
47
47
|
}]);
|
|
48
|
-
return Reporter;
|
|
49
48
|
}();
|
|
50
49
|
export default Reporter;
|
package/client/Reporter.js.flow
CHANGED
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
/* eslint-disable */
|
|
2
|
-
|
|
3
|
-
class Reporter {
|
|
4
|
-
constructor() {
|
|
5
|
-
this.setAt = 0;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
clearState() {
|
|
9
|
-
if (this.state) {
|
|
10
|
-
this.state = this.node = null;
|
|
11
|
-
this.setAt = 0;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
failure(err) {
|
|
16
|
-
console.error('fail', err.toString());
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
delay(err) {
|
|
20
|
-
if (this.state == 'fail') return;
|
|
21
|
-
console.info('delay', err.toString());
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
show(type, message) {
|
|
25
|
-
this.clearState();
|
|
26
|
-
this.state = type;
|
|
27
|
-
this.setAt = Date.now();
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
success() {
|
|
31
|
-
if (this.state == 'fail' && this.setAt > Date.now() - 1000 * 10)
|
|
32
|
-
setTimeout(() => this.success(), 5000);
|
|
33
|
-
else this.clearState();
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export default Reporter;
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
|
|
3
|
+
class Reporter {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.setAt = 0;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
clearState() {
|
|
9
|
+
if (this.state) {
|
|
10
|
+
this.state = this.node = null;
|
|
11
|
+
this.setAt = 0;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
failure(err) {
|
|
16
|
+
console.error('fail', err.toString());
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
delay(err) {
|
|
20
|
+
if (this.state == 'fail') return;
|
|
21
|
+
console.info('delay', err.toString());
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
show(type, message) {
|
|
25
|
+
this.clearState();
|
|
26
|
+
this.state = type;
|
|
27
|
+
this.setAt = Date.now();
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
success() {
|
|
31
|
+
if (this.state == 'fail' && this.setAt > Date.now() - 1000 * 10)
|
|
32
|
+
setTimeout(() => this.success(), 5000);
|
|
33
|
+
else this.clearState();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export default Reporter;
|
|
@@ -1,9 +1,9 @@
|
|
|
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
|
-
function _defineProperties(
|
|
3
|
-
function _createClass(
|
|
4
|
-
function _classCallCheck(
|
|
5
|
-
function _defineProperty(
|
|
6
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i :
|
|
2
|
+
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); } }
|
|
3
|
+
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
|
|
4
|
+
function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
|
|
5
|
+
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; }
|
|
6
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
7
7
|
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); }
|
|
8
8
|
import { EditorState } from 'prosemirror-state';
|
|
9
9
|
import { Transform } from 'prosemirror-transform';
|
|
@@ -1,61 +1,61 @@
|
|
|
1
|
-
// @flow
|
|
2
|
-
|
|
3
|
-
import { EditorState } from 'prosemirror-state';
|
|
4
|
-
import { Transform } from 'prosemirror-transform';
|
|
5
|
-
import { Schema } from 'prosemirror-model';
|
|
6
|
-
import { EditorView } from 'prosemirror-view';
|
|
7
|
-
import ReactDOM from 'react-dom';
|
|
8
|
-
|
|
9
|
-
export type SetStateCall = (
|
|
10
|
-
state: { editorState: EditorState },
|
|
11
|
-
callback: Function
|
|
12
|
-
) => void;
|
|
13
|
-
|
|
14
|
-
class SimpleConnector {
|
|
15
|
-
_setState: SetStateCall;
|
|
16
|
-
_editorState: EditorState;
|
|
17
|
-
// This flag is used to deteremine if data passed in or not
|
|
18
|
-
// If not passed in, use the data from collab server when in collab mode.
|
|
19
|
-
// else use empty content.
|
|
20
|
-
_dataDefined: boolean;
|
|
21
|
-
|
|
22
|
-
constructor(editorState: EditorState, setState: SetStateCall) {
|
|
23
|
-
this._editorState = editorState;
|
|
24
|
-
this._setState = setState;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
onEdit = (transaction: Transform, view: EditorView): void => {
|
|
28
|
-
ReactDOM.unstable_batchedUpdates(() => {
|
|
29
|
-
const editorState = this._editorState.apply(transaction);
|
|
30
|
-
// [FS] IRAD-1236 2020-03-05
|
|
31
|
-
// The state property should not be directly mutated. Use the updateState method.
|
|
32
|
-
if (view) {
|
|
33
|
-
view.updateState(editorState);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
const state = {
|
|
37
|
-
editorState,
|
|
38
|
-
data: transaction.doc.toJSON(),
|
|
39
|
-
};
|
|
40
|
-
this._setState(state, () => {
|
|
41
|
-
this._editorState = editorState;
|
|
42
|
-
});
|
|
43
|
-
});
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
// FS IRAD-989 2020-18-06
|
|
47
|
-
// updating properties should automatically render the changes
|
|
48
|
-
getState = (): EditorState => {
|
|
49
|
-
return this._editorState;
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
// FS IRAD-1040 2020-09-02
|
|
53
|
-
// Send the modified schema to server
|
|
54
|
-
updateSchema = (schema: Schema, data: any) => {};
|
|
55
|
-
|
|
56
|
-
updateContent = (data: any) => {};
|
|
57
|
-
|
|
58
|
-
cleanUp = () => {};
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
export default SimpleConnector;
|
|
1
|
+
// @flow
|
|
2
|
+
|
|
3
|
+
import { EditorState } from 'prosemirror-state';
|
|
4
|
+
import { Transform } from 'prosemirror-transform';
|
|
5
|
+
import { Schema } from 'prosemirror-model';
|
|
6
|
+
import { EditorView } from 'prosemirror-view';
|
|
7
|
+
import ReactDOM from 'react-dom';
|
|
8
|
+
|
|
9
|
+
export type SetStateCall = (
|
|
10
|
+
state: { editorState: EditorState },
|
|
11
|
+
callback: Function
|
|
12
|
+
) => void;
|
|
13
|
+
|
|
14
|
+
class SimpleConnector {
|
|
15
|
+
_setState: SetStateCall;
|
|
16
|
+
_editorState: EditorState;
|
|
17
|
+
// This flag is used to deteremine if data passed in or not
|
|
18
|
+
// If not passed in, use the data from collab server when in collab mode.
|
|
19
|
+
// else use empty content.
|
|
20
|
+
_dataDefined: boolean;
|
|
21
|
+
|
|
22
|
+
constructor(editorState: EditorState, setState: SetStateCall) {
|
|
23
|
+
this._editorState = editorState;
|
|
24
|
+
this._setState = setState;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
onEdit = (transaction: Transform, view: EditorView): void => {
|
|
28
|
+
ReactDOM.unstable_batchedUpdates(() => {
|
|
29
|
+
const editorState = this._editorState.apply(transaction);
|
|
30
|
+
// [FS] IRAD-1236 2020-03-05
|
|
31
|
+
// The state property should not be directly mutated. Use the updateState method.
|
|
32
|
+
if (view) {
|
|
33
|
+
view.updateState(editorState);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const state = {
|
|
37
|
+
editorState,
|
|
38
|
+
data: transaction.doc.toJSON(),
|
|
39
|
+
};
|
|
40
|
+
this._setState(state, () => {
|
|
41
|
+
this._editorState = editorState;
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
// FS IRAD-989 2020-18-06
|
|
47
|
+
// updating properties should automatically render the changes
|
|
48
|
+
getState = (): EditorState => {
|
|
49
|
+
return this._editorState;
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
// FS IRAD-1040 2020-09-02
|
|
53
|
+
// Send the modified schema to server
|
|
54
|
+
updateSchema = (schema: Schema, data: any) => {};
|
|
55
|
+
|
|
56
|
+
updateContent = (data: any) => {};
|
|
57
|
+
|
|
58
|
+
cleanUp = () => {};
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export default SimpleConnector;
|
package/client/http.js
CHANGED
|
@@ -12,7 +12,6 @@ export function req(conf) {
|
|
|
12
12
|
success(req.responseText);
|
|
13
13
|
} else {
|
|
14
14
|
var text = req.responseText;
|
|
15
|
-
if (text && /html/.test(req.getResponseHeader('content-type'))) text = makePlain(text);
|
|
16
15
|
var err = new Error('Request failed: ' + req.statusText + (text ? '\n\n' + text : ''));
|
|
17
16
|
err.status = req.status;
|
|
18
17
|
failure(err);
|
|
@@ -32,11 +31,6 @@ export function req(conf) {
|
|
|
32
31
|
};
|
|
33
32
|
return result;
|
|
34
33
|
}
|
|
35
|
-
function makePlain(html) {
|
|
36
|
-
var elt = document.createElement('div');
|
|
37
|
-
elt.innerHTML = html;
|
|
38
|
-
return elt.textContent.replace(/\n[^]*|\s+$/g, '');
|
|
39
|
-
}
|
|
40
34
|
export function GET(url) {
|
|
41
35
|
return req({
|
|
42
36
|
url: url,
|