@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/ui/PasteMenu.js.flow
CHANGED
|
@@ -1,52 +1,52 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
import uuid from './uuid';
|
|
3
|
-
|
|
4
|
-
// [FS] IRAD-1076 2020-10-15
|
|
5
|
-
// Popup menu UI with paste options.
|
|
6
|
-
|
|
7
|
-
class PasteMenu extends React.PureComponent<any, any> {
|
|
8
|
-
props: {
|
|
9
|
-
close: (?string) => void,
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
_menu = null;
|
|
13
|
-
_id = uuid();
|
|
14
|
-
|
|
15
|
-
state = {
|
|
16
|
-
expanded: false,
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
render() {
|
|
20
|
-
const children = [];
|
|
21
|
-
children.push(
|
|
22
|
-
<button
|
|
23
|
-
className="pastemenu"
|
|
24
|
-
id="paste"
|
|
25
|
-
key="paste"
|
|
26
|
-
onClick={(e) => this._onUIEnter('paste')}
|
|
27
|
-
value="paste"
|
|
28
|
-
>
|
|
29
|
-
Paste
|
|
30
|
-
</button>
|
|
31
|
-
);
|
|
32
|
-
children.push(
|
|
33
|
-
<button
|
|
34
|
-
className="pastemenu"
|
|
35
|
-
id="keepTextOnly"
|
|
36
|
-
key="keepTextOnly"
|
|
37
|
-
onClick={(e) => this._onUIEnter('keepTextOnly')}
|
|
38
|
-
value="keepTextOnly"
|
|
39
|
-
>
|
|
40
|
-
Keep Text Only
|
|
41
|
-
</button>
|
|
42
|
-
);
|
|
43
|
-
|
|
44
|
-
return <div className="container">{children}</div>;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
_onUIEnter = (id: string) => {
|
|
48
|
-
this.props.close(id);
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
export default PasteMenu;
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import uuid from './uuid';
|
|
3
|
+
|
|
4
|
+
// [FS] IRAD-1076 2020-10-15
|
|
5
|
+
// Popup menu UI with paste options.
|
|
6
|
+
|
|
7
|
+
class PasteMenu extends React.PureComponent<any, any> {
|
|
8
|
+
props: {
|
|
9
|
+
close: (?string) => void,
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
_menu = null;
|
|
13
|
+
_id = uuid();
|
|
14
|
+
|
|
15
|
+
state = {
|
|
16
|
+
expanded: false,
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
render() {
|
|
20
|
+
const children = [];
|
|
21
|
+
children.push(
|
|
22
|
+
<button
|
|
23
|
+
className="pastemenu"
|
|
24
|
+
id="paste"
|
|
25
|
+
key="paste"
|
|
26
|
+
onClick={(e) => this._onUIEnter('paste')}
|
|
27
|
+
value="paste"
|
|
28
|
+
>
|
|
29
|
+
Paste
|
|
30
|
+
</button>
|
|
31
|
+
);
|
|
32
|
+
children.push(
|
|
33
|
+
<button
|
|
34
|
+
className="pastemenu"
|
|
35
|
+
id="keepTextOnly"
|
|
36
|
+
key="keepTextOnly"
|
|
37
|
+
onClick={(e) => this._onUIEnter('keepTextOnly')}
|
|
38
|
+
value="keepTextOnly"
|
|
39
|
+
>
|
|
40
|
+
Keep Text Only
|
|
41
|
+
</button>
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
return <div className="container">{children}</div>;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
_onUIEnter = (id: string) => {
|
|
48
|
+
this.props.close(id);
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export default PasteMenu;
|
|
@@ -1,105 +1,105 @@
|
|
|
1
|
-
// @flow
|
|
2
|
-
|
|
3
|
-
import ResizeObserver from 'resize-observer-polyfill';
|
|
4
|
-
|
|
5
|
-
// flow type copied from
|
|
6
|
-
// https://github.com/que-etc/resize-observer-polyfill/blob/master/src/index.js.flow
|
|
7
|
-
|
|
8
|
-
type ClientRectLikeReadOnly = {
|
|
9
|
-
x: number,
|
|
10
|
-
y: number,
|
|
11
|
-
width: number,
|
|
12
|
-
height: number,
|
|
13
|
-
top: number,
|
|
14
|
-
right: number,
|
|
15
|
-
bottom: number,
|
|
16
|
-
left: number,
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
type ResizeCallback = (r: ResizeObserverEntry) => void;
|
|
20
|
-
|
|
21
|
-
type Entries = $ReadOnlyArray<ResizeObserverEntry>;
|
|
22
|
-
|
|
23
|
-
// Lightweight utilities to make observing resize of DOM element easier
|
|
24
|
-
// with `ResizeObserver`.
|
|
25
|
-
// See https://developers.google.com/web/updates/2016/10/resizeobserver
|
|
26
|
-
// Usage:
|
|
27
|
-
// `ResizeObserver.observe(element, (entry) => console.log(entry))`
|
|
28
|
-
// `ResizeObserver.unobserve(element)`
|
|
29
|
-
|
|
30
|
-
export type ResizeObserverEntry = {
|
|
31
|
-
target: Element,
|
|
32
|
-
contentRect: ClientRectLikeReadOnly,
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
let instance: ?ResizeObserver = null;
|
|
36
|
-
|
|
37
|
-
const nodesObserving: Map<Element, Array<ResizeCallback>> = new Map();
|
|
38
|
-
|
|
39
|
-
function onResizeObserve(entries: Entries): void {
|
|
40
|
-
entries.forEach(handleResizeObserverEntry);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
function handleResizeObserverEntry(entry: ResizeObserverEntry): void {
|
|
44
|
-
const node = entry.target;
|
|
45
|
-
const callbacks = nodesObserving.get(node);
|
|
46
|
-
const executeCallback = (cb) => cb(entry);
|
|
47
|
-
callbacks && callbacks.forEach(executeCallback);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
export function observe(
|
|
51
|
-
node: HTMLElement,
|
|
52
|
-
callback: (ResizeObserverEntry) => void
|
|
53
|
-
): void {
|
|
54
|
-
const el: any = node;
|
|
55
|
-
const observer = instance || (instance = new ResizeObserver(onResizeObserve));
|
|
56
|
-
if (nodesObserving.has(el)) {
|
|
57
|
-
// Already observing node.
|
|
58
|
-
const callbacks = nodesObserving?.get(el);
|
|
59
|
-
callbacks.push(callback);
|
|
60
|
-
} else {
|
|
61
|
-
const callbacks = [callback];
|
|
62
|
-
nodesObserving.set(el, callbacks);
|
|
63
|
-
observer.observe(el);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
export function unobserve(node: HTMLElement, callback?: ResizeCallback): void {
|
|
68
|
-
const observer = instance;
|
|
69
|
-
if (!observer) {
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
const el: any = node;
|
|
73
|
-
observer.unobserve(el);
|
|
74
|
-
|
|
75
|
-
if (callback) {
|
|
76
|
-
// Remove the passed in callback from the callbacks of the observed node
|
|
77
|
-
// And, if no more callbacks then stop observing the node
|
|
78
|
-
const callbacks = nodesObserving.has(el)
|
|
79
|
-
? nodesObserving?.get(el)?.filter((cb) => cb !== callback)
|
|
80
|
-
: null;
|
|
81
|
-
if (callbacks?.length) {
|
|
82
|
-
nodesObserving.set(el, callbacks);
|
|
83
|
-
} else {
|
|
84
|
-
nodesObserving.delete(el);
|
|
85
|
-
}
|
|
86
|
-
} else {
|
|
87
|
-
// Delete all callbacks for the node.
|
|
88
|
-
nodesObserving.delete(el);
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
if (!nodesObserving.size) {
|
|
92
|
-
// We have nothing to observe. Stop observing, which stops the
|
|
93
|
-
// ResizeObserver instance from receiving notifications of
|
|
94
|
-
// DOM resizing. Until the observe() method is used again.
|
|
95
|
-
// According to specification a ResizeObserver is deleted by the garbage
|
|
96
|
-
// collector if the target element is deleted.
|
|
97
|
-
observer.disconnect();
|
|
98
|
-
instance = null;
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
export default {
|
|
103
|
-
observe,
|
|
104
|
-
unobserve,
|
|
105
|
-
};
|
|
1
|
+
// @flow
|
|
2
|
+
|
|
3
|
+
import ResizeObserver from 'resize-observer-polyfill';
|
|
4
|
+
|
|
5
|
+
// flow type copied from
|
|
6
|
+
// https://github.com/que-etc/resize-observer-polyfill/blob/master/src/index.js.flow
|
|
7
|
+
|
|
8
|
+
type ClientRectLikeReadOnly = {
|
|
9
|
+
x: number,
|
|
10
|
+
y: number,
|
|
11
|
+
width: number,
|
|
12
|
+
height: number,
|
|
13
|
+
top: number,
|
|
14
|
+
right: number,
|
|
15
|
+
bottom: number,
|
|
16
|
+
left: number,
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
type ResizeCallback = (r: ResizeObserverEntry) => void;
|
|
20
|
+
|
|
21
|
+
type Entries = $ReadOnlyArray<ResizeObserverEntry>;
|
|
22
|
+
|
|
23
|
+
// Lightweight utilities to make observing resize of DOM element easier
|
|
24
|
+
// with `ResizeObserver`.
|
|
25
|
+
// See https://developers.google.com/web/updates/2016/10/resizeobserver
|
|
26
|
+
// Usage:
|
|
27
|
+
// `ResizeObserver.observe(element, (entry) => console.log(entry))`
|
|
28
|
+
// `ResizeObserver.unobserve(element)`
|
|
29
|
+
|
|
30
|
+
export type ResizeObserverEntry = {
|
|
31
|
+
target: Element,
|
|
32
|
+
contentRect: ClientRectLikeReadOnly,
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
let instance: ?ResizeObserver = null;
|
|
36
|
+
|
|
37
|
+
const nodesObserving: Map<Element, Array<ResizeCallback>> = new Map();
|
|
38
|
+
|
|
39
|
+
function onResizeObserve(entries: Entries): void {
|
|
40
|
+
entries.forEach(handleResizeObserverEntry);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function handleResizeObserverEntry(entry: ResizeObserverEntry): void {
|
|
44
|
+
const node = entry.target;
|
|
45
|
+
const callbacks = nodesObserving.get(node);
|
|
46
|
+
const executeCallback = (cb) => cb(entry);
|
|
47
|
+
callbacks && callbacks.forEach(executeCallback);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export function observe(
|
|
51
|
+
node: HTMLElement,
|
|
52
|
+
callback: (ResizeObserverEntry) => void
|
|
53
|
+
): void {
|
|
54
|
+
const el: any = node;
|
|
55
|
+
const observer = instance || (instance = new ResizeObserver(onResizeObserve));
|
|
56
|
+
if (nodesObserving.has(el)) {
|
|
57
|
+
// Already observing node.
|
|
58
|
+
const callbacks = nodesObserving?.get(el);
|
|
59
|
+
callbacks.push(callback);
|
|
60
|
+
} else {
|
|
61
|
+
const callbacks = [callback];
|
|
62
|
+
nodesObserving.set(el, callbacks);
|
|
63
|
+
observer.observe(el);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export function unobserve(node: HTMLElement, callback?: ResizeCallback): void {
|
|
68
|
+
const observer = instance;
|
|
69
|
+
if (!observer) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const el: any = node;
|
|
73
|
+
observer.unobserve(el);
|
|
74
|
+
|
|
75
|
+
if (callback) {
|
|
76
|
+
// Remove the passed in callback from the callbacks of the observed node
|
|
77
|
+
// And, if no more callbacks then stop observing the node
|
|
78
|
+
const callbacks = nodesObserving.has(el)
|
|
79
|
+
? nodesObserving?.get(el)?.filter((cb) => cb !== callback)
|
|
80
|
+
: null;
|
|
81
|
+
if (callbacks?.length) {
|
|
82
|
+
nodesObserving.set(el, callbacks);
|
|
83
|
+
} else {
|
|
84
|
+
nodesObserving.delete(el);
|
|
85
|
+
}
|
|
86
|
+
} else {
|
|
87
|
+
// Delete all callbacks for the node.
|
|
88
|
+
nodesObserving.delete(el);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
if (!nodesObserving.size) {
|
|
92
|
+
// We have nothing to observe. Stop observing, which stops the
|
|
93
|
+
// ResizeObserver instance from receiving notifications of
|
|
94
|
+
// DOM resizing. Until the observe() method is used again.
|
|
95
|
+
// According to specification a ResizeObserver is deleted by the garbage
|
|
96
|
+
// collector if the target element is deleted.
|
|
97
|
+
observer.disconnect();
|
|
98
|
+
instance = null;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export default {
|
|
103
|
+
observe,
|
|
104
|
+
unobserve,
|
|
105
|
+
};
|
|
@@ -1,133 +1,133 @@
|
|
|
1
|
-
// @flow
|
|
2
|
-
|
|
3
|
-
import { Transform } from 'prosemirror-transform';
|
|
4
|
-
import { EditorView } from 'prosemirror-view';
|
|
5
|
-
import * as React from 'react';
|
|
6
|
-
|
|
7
|
-
import createEmptyEditorState from '../createEmptyEditorState.js';
|
|
8
|
-
import Editor from './Editor.js';
|
|
9
|
-
import EditorFrameset from './EditorFrameset.js';
|
|
10
|
-
import EditorToolbar from './EditorToolbar.js';
|
|
11
|
-
import Frag from './Frag.js';
|
|
12
|
-
import uuid from './uuid.js';
|
|
13
|
-
|
|
14
|
-
import type { EditorFramesetProps } from './EditorFrameset.js';
|
|
15
|
-
import type { EditorProps } from './Editor.js';
|
|
16
|
-
|
|
17
|
-
type Props = EditorFramesetProps & EditorProps & { children?: ?any };
|
|
18
|
-
|
|
19
|
-
type State = {
|
|
20
|
-
editorView: ?EditorView,
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
const EMPTY_EDITOR_RUNTIME = {};
|
|
24
|
-
|
|
25
|
-
class RichTextEditor extends React.PureComponent<any, any> {
|
|
26
|
-
props: Props;
|
|
27
|
-
|
|
28
|
-
state: State;
|
|
29
|
-
|
|
30
|
-
_id: string;
|
|
31
|
-
|
|
32
|
-
constructor(props: any, context: any) {
|
|
33
|
-
super(props, context);
|
|
34
|
-
this._id = uuid();
|
|
35
|
-
this.state = {
|
|
36
|
-
contentHeight: NaN,
|
|
37
|
-
contentOverflowHidden: false,
|
|
38
|
-
editorView: null,
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
render(): React.Element<any> {
|
|
43
|
-
const {
|
|
44
|
-
autoFocus,
|
|
45
|
-
children,
|
|
46
|
-
className,
|
|
47
|
-
disabled,
|
|
48
|
-
embedded,
|
|
49
|
-
header,
|
|
50
|
-
height,
|
|
51
|
-
onChange,
|
|
52
|
-
nodeViews,
|
|
53
|
-
placeholder,
|
|
54
|
-
readOnly,
|
|
55
|
-
width,
|
|
56
|
-
} = this.props;
|
|
57
|
-
|
|
58
|
-
let { editorState, runtime } = this.props;
|
|
59
|
-
|
|
60
|
-
editorState = editorState || createEmptyEditorState();
|
|
61
|
-
runtime = runtime || EMPTY_EDITOR_RUNTIME;
|
|
62
|
-
|
|
63
|
-
const { editorView } = this.state;
|
|
64
|
-
|
|
65
|
-
const toolbar =
|
|
66
|
-
!!readOnly === true ? null : (
|
|
67
|
-
<EditorToolbar
|
|
68
|
-
disabled={disabled}
|
|
69
|
-
dispatchTransaction={this._dispatchTransaction}
|
|
70
|
-
editorState={editorState || Editor.EDITOR_EMPTY_STATE}
|
|
71
|
-
editorView={editorView}
|
|
72
|
-
readOnly={readOnly}
|
|
73
|
-
/>
|
|
74
|
-
);
|
|
75
|
-
|
|
76
|
-
const body = (
|
|
77
|
-
<Frag>
|
|
78
|
-
<Editor
|
|
79
|
-
autoFocus={autoFocus}
|
|
80
|
-
disabled={disabled}
|
|
81
|
-
dispatchTransaction={this._dispatchTransaction}
|
|
82
|
-
editorState={editorState}
|
|
83
|
-
embedded={embedded}
|
|
84
|
-
id={this._id}
|
|
85
|
-
nodeViews={nodeViews}
|
|
86
|
-
onChange={onChange}
|
|
87
|
-
onReady={this._onReady}
|
|
88
|
-
placeholder={placeholder}
|
|
89
|
-
readOnly={readOnly}
|
|
90
|
-
runtime={runtime}
|
|
91
|
-
/>
|
|
92
|
-
{children}
|
|
93
|
-
</Frag>
|
|
94
|
-
);
|
|
95
|
-
|
|
96
|
-
return (
|
|
97
|
-
<EditorFrameset
|
|
98
|
-
body={body}
|
|
99
|
-
className={className}
|
|
100
|
-
embedded={embedded}
|
|
101
|
-
header={header}
|
|
102
|
-
height={height}
|
|
103
|
-
toolbar={toolbar}
|
|
104
|
-
width={width}
|
|
105
|
-
/>
|
|
106
|
-
);
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
_dispatchTransaction = (tr: Transform): void => {
|
|
110
|
-
const { onChange, editorState } = this.props;
|
|
111
|
-
// [FS] IRAD-1171 2021-02-04
|
|
112
|
-
// To bring selection on editor in read-only mode.
|
|
113
|
-
// Removed force return when readOnly flag is true
|
|
114
|
-
if (onChange) {
|
|
115
|
-
// [FS-AFQ][20-FEB-2020]
|
|
116
|
-
// Collaboration
|
|
117
|
-
onChange({
|
|
118
|
-
state: editorState || Editor.EDITOR_EMPTY_STATE,
|
|
119
|
-
transaction: tr,
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
};
|
|
123
|
-
|
|
124
|
-
_onReady = (editorView: EditorView): void => {
|
|
125
|
-
if (editorView !== this.state.editorView) {
|
|
126
|
-
this.setState({ editorView });
|
|
127
|
-
const { onReady } = this.props;
|
|
128
|
-
onReady && onReady(editorView);
|
|
129
|
-
}
|
|
130
|
-
};
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
export default RichTextEditor;
|
|
1
|
+
// @flow
|
|
2
|
+
|
|
3
|
+
import { Transform } from 'prosemirror-transform';
|
|
4
|
+
import { EditorView } from 'prosemirror-view';
|
|
5
|
+
import * as React from 'react';
|
|
6
|
+
|
|
7
|
+
import createEmptyEditorState from '../createEmptyEditorState.js';
|
|
8
|
+
import Editor from './Editor.js';
|
|
9
|
+
import EditorFrameset from './EditorFrameset.js';
|
|
10
|
+
import EditorToolbar from './EditorToolbar.js';
|
|
11
|
+
import Frag from './Frag.js';
|
|
12
|
+
import uuid from './uuid.js';
|
|
13
|
+
|
|
14
|
+
import type { EditorFramesetProps } from './EditorFrameset.js';
|
|
15
|
+
import type { EditorProps } from './Editor.js';
|
|
16
|
+
|
|
17
|
+
type Props = EditorFramesetProps & EditorProps & { children?: ?any };
|
|
18
|
+
|
|
19
|
+
type State = {
|
|
20
|
+
editorView: ?EditorView,
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
const EMPTY_EDITOR_RUNTIME = {};
|
|
24
|
+
|
|
25
|
+
class RichTextEditor extends React.PureComponent<any, any> {
|
|
26
|
+
props: Props;
|
|
27
|
+
|
|
28
|
+
state: State;
|
|
29
|
+
|
|
30
|
+
_id: string;
|
|
31
|
+
|
|
32
|
+
constructor(props: any, context: any) {
|
|
33
|
+
super(props, context);
|
|
34
|
+
this._id = uuid();
|
|
35
|
+
this.state = {
|
|
36
|
+
contentHeight: NaN,
|
|
37
|
+
contentOverflowHidden: false,
|
|
38
|
+
editorView: null,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
render(): React.Element<any> {
|
|
43
|
+
const {
|
|
44
|
+
autoFocus,
|
|
45
|
+
children,
|
|
46
|
+
className,
|
|
47
|
+
disabled,
|
|
48
|
+
embedded,
|
|
49
|
+
header,
|
|
50
|
+
height,
|
|
51
|
+
onChange,
|
|
52
|
+
nodeViews,
|
|
53
|
+
placeholder,
|
|
54
|
+
readOnly,
|
|
55
|
+
width,
|
|
56
|
+
} = this.props;
|
|
57
|
+
|
|
58
|
+
let { editorState, runtime } = this.props;
|
|
59
|
+
|
|
60
|
+
editorState = editorState || createEmptyEditorState();
|
|
61
|
+
runtime = runtime || EMPTY_EDITOR_RUNTIME;
|
|
62
|
+
|
|
63
|
+
const { editorView } = this.state;
|
|
64
|
+
|
|
65
|
+
const toolbar =
|
|
66
|
+
!!readOnly === true ? null : (
|
|
67
|
+
<EditorToolbar
|
|
68
|
+
disabled={disabled}
|
|
69
|
+
dispatchTransaction={this._dispatchTransaction}
|
|
70
|
+
editorState={editorState || Editor.EDITOR_EMPTY_STATE}
|
|
71
|
+
editorView={editorView}
|
|
72
|
+
readOnly={readOnly}
|
|
73
|
+
/>
|
|
74
|
+
);
|
|
75
|
+
|
|
76
|
+
const body = (
|
|
77
|
+
<Frag>
|
|
78
|
+
<Editor
|
|
79
|
+
autoFocus={autoFocus}
|
|
80
|
+
disabled={disabled}
|
|
81
|
+
dispatchTransaction={this._dispatchTransaction}
|
|
82
|
+
editorState={editorState}
|
|
83
|
+
embedded={embedded}
|
|
84
|
+
id={this._id}
|
|
85
|
+
nodeViews={nodeViews}
|
|
86
|
+
onChange={onChange}
|
|
87
|
+
onReady={this._onReady}
|
|
88
|
+
placeholder={placeholder}
|
|
89
|
+
readOnly={readOnly}
|
|
90
|
+
runtime={runtime}
|
|
91
|
+
/>
|
|
92
|
+
{children}
|
|
93
|
+
</Frag>
|
|
94
|
+
);
|
|
95
|
+
|
|
96
|
+
return (
|
|
97
|
+
<EditorFrameset
|
|
98
|
+
body={body}
|
|
99
|
+
className={className}
|
|
100
|
+
embedded={embedded}
|
|
101
|
+
header={header}
|
|
102
|
+
height={height}
|
|
103
|
+
toolbar={toolbar}
|
|
104
|
+
width={width}
|
|
105
|
+
/>
|
|
106
|
+
);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
_dispatchTransaction = (tr: Transform): void => {
|
|
110
|
+
const { onChange, editorState } = this.props;
|
|
111
|
+
// [FS] IRAD-1171 2021-02-04
|
|
112
|
+
// To bring selection on editor in read-only mode.
|
|
113
|
+
// Removed force return when readOnly flag is true
|
|
114
|
+
if (onChange) {
|
|
115
|
+
// [FS-AFQ][20-FEB-2020]
|
|
116
|
+
// Collaboration
|
|
117
|
+
onChange({
|
|
118
|
+
state: editorState || Editor.EDITOR_EMPTY_STATE,
|
|
119
|
+
transaction: tr,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
_onReady = (editorView: EditorView): void => {
|
|
125
|
+
if (editorView !== this.state.editorView) {
|
|
126
|
+
this.setState({ editorView });
|
|
127
|
+
const { onReady } = this.props;
|
|
128
|
+
onReady && onReady(editorView);
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
export default RichTextEditor;
|