@flozy/editor 1.1.9 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
@@ -91,7 +91,7 @@ const CollaborativeEditor = props => {
|
|
91
91
|
});
|
92
92
|
provider.on("authenticationFailed", () => {
|
93
93
|
setAuthenticated({
|
94
|
-
status:
|
94
|
+
status: 'error',
|
95
95
|
scope: null
|
96
96
|
});
|
97
97
|
});
|
@@ -107,7 +107,12 @@ const CollaborativeEditor = props => {
|
|
107
107
|
setConnected(false);
|
108
108
|
setMessage("Seems your connection is lost... Reload the page to edit the document...");
|
109
109
|
});
|
110
|
-
if (authenticated.status ===
|
110
|
+
if (authenticated.status === 'error') {
|
111
|
+
return /*#__PURE__*/_jsx("h1", {
|
112
|
+
"data-status": connected,
|
113
|
+
children: "Authentication Error"
|
114
|
+
});
|
115
|
+
} else if (authenticated.status === null || !connected === null || !editor) {
|
111
116
|
return /*#__PURE__*/_jsx("h1", {
|
112
117
|
"data-status": connected,
|
113
118
|
children: message || "Loading..."
|
@@ -1,6 +1,7 @@
|
|
1
|
-
import React, { useCallback, useEffect, useMemo, useState } from "react";
|
1
|
+
import React, { useRef, useCallback, useEffect, useMemo, useState } from "react";
|
2
2
|
import { createEditor } from "slate";
|
3
3
|
import { Slate, Editable } from "slate-react";
|
4
|
+
import html2canvas from "html2canvas";
|
4
5
|
import Toolbar from "./Toolbar/Toolbar";
|
5
6
|
import { getMarked, getBlock } from "./utils/SlateUtilityFunctions";
|
6
7
|
import CodeToText from "./Elements/CodeToText/CodeToText";
|
@@ -40,11 +41,12 @@ const CommonEditor = props => {
|
|
40
41
|
otherProps,
|
41
42
|
timeoutInMS = 1000
|
42
43
|
} = props;
|
44
|
+
const editorWrapper = useRef();
|
43
45
|
const convertedContent = draftToSlate({
|
44
46
|
data: content
|
45
47
|
});
|
46
48
|
const [value, setValue] = useState(convertedContent);
|
47
|
-
const [lastUpdated, setLastUpdated] = useState(
|
49
|
+
const [lastUpdated, setLastUpdated] = useState(JSON.stringify(convertedContent));
|
48
50
|
const [count] = useTimeout({
|
49
51
|
timeoutInMS: timeoutInMS
|
50
52
|
});
|
@@ -103,11 +105,18 @@ const CommonEditor = props => {
|
|
103
105
|
const updateChanges = newValue => {
|
104
106
|
const stringify = JSON.stringify(newValue);
|
105
107
|
const text = serialize(newValue);
|
106
|
-
if (stringify !== lastUpdated && count > 0 && text?.trim().length > 3) {
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
108
|
+
if (stringify !== lastUpdated && count > 0 && text?.trim().length > 3 && onSave) {
|
109
|
+
if (editorWrapper && editorWrapper?.current) {
|
110
|
+
html2canvas(editorWrapper?.current, {
|
111
|
+
height: 350
|
112
|
+
}).then(c => {
|
113
|
+
onSave(stringify, {
|
114
|
+
text: text,
|
115
|
+
thumbnail: c.toDataURL()
|
116
|
+
});
|
117
|
+
setLastUpdated(stringify);
|
118
|
+
});
|
119
|
+
}
|
111
120
|
}
|
112
121
|
};
|
113
122
|
const customProps = {
|
@@ -169,6 +178,7 @@ const CommonEditor = props => {
|
|
169
178
|
handleCodeToText: handleCodeToText,
|
170
179
|
customProps: customProps
|
171
180
|
}) : null, /*#__PURE__*/_jsxs("div", {
|
181
|
+
ref: editorWrapper,
|
172
182
|
className: "editor-wrapper",
|
173
183
|
style: {
|
174
184
|
border: "1px solid #f3f3f3",
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@flozy/editor",
|
3
|
-
"version": "1.
|
3
|
+
"version": "1.2.0",
|
4
4
|
"description": "An Editor for flozy app brain",
|
5
5
|
"files": [
|
6
6
|
"dist"
|
@@ -18,6 +18,7 @@
|
|
18
18
|
"@testing-library/jest-dom": "^5.16.5",
|
19
19
|
"@testing-library/react": "^13.4.0",
|
20
20
|
"@testing-library/user-event": "^13.5.0",
|
21
|
+
"html2canvas": "^1.4.1",
|
21
22
|
"husky": "^8.0.3",
|
22
23
|
"interweave": "^13.1.0",
|
23
24
|
"lint-staged": "^13.2.3",
|