@seafile/seafile-editor 1.0.59 → 1.0.60
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/dist/extension/plugins/image/helper.js +17 -2
- package/dist/extension/plugins/image/menu/image-menu-dialog.js +5 -0
- package/dist/extension/plugins/image/menu/image-menu-popover.js +1 -1
- package/dist/extension/plugins/image/render-element/index.js +19 -3
- package/dist/slate-convert/md-to-slate/transform.js +2 -0
- package/package.json +1 -1
- package/public/locales/cs/seafile-editor.json +2 -1
- package/public/locales/de/seafile-editor.json +2 -1
- package/public/locales/en/seafile-editor.json +2 -1
- package/public/locales/es/seafile-editor.json +2 -1
- package/public/locales/fr/seafile-editor.json +2 -1
- package/public/locales/it/seafile-editor.json +2 -1
- package/public/locales/ru/seafile-editor.json +2 -1
- package/public/locales/zh_CN/seafile-editor.json +2 -1
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.updateImage = exports.isMenuDisabled = exports.insertSeafileImage = exports.insertImage = exports.handleUpdateImage = exports.getImagesUrlList = void 0;
|
|
7
|
+
exports.updateImage = exports.lazyLoadImage = exports.isMenuDisabled = exports.insertSeafileImage = exports.insertImage = exports.handleUpdateImage = exports.getImagesUrlList = void 0;
|
|
8
8
|
var _slate = require("slate");
|
|
9
9
|
var _slugid = _interopRequireDefault(require("slugid"));
|
|
10
10
|
var _helper = require("../header/helper");
|
|
@@ -99,4 +99,19 @@ const handleUpdateImage = async (editor, file) => {
|
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
101
|
};
|
|
102
|
-
exports.handleUpdateImage = handleUpdateImage;
|
|
102
|
+
exports.handleUpdateImage = handleUpdateImage;
|
|
103
|
+
const lazyLoadImage = (url, resolve, reject) => {
|
|
104
|
+
if (!url) {
|
|
105
|
+
reject('img path is require');
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
const image = new Image();
|
|
109
|
+
image.onload = () => {
|
|
110
|
+
resolve(image);
|
|
111
|
+
};
|
|
112
|
+
image.onerror = e => {
|
|
113
|
+
reject(e);
|
|
114
|
+
};
|
|
115
|
+
image.src = url;
|
|
116
|
+
};
|
|
117
|
+
exports.lazyLoadImage = lazyLoadImage;
|
|
@@ -43,7 +43,12 @@ const ImageMenuInsertInternetDialog = _ref => {
|
|
|
43
43
|
handleSubmit(e);
|
|
44
44
|
}
|
|
45
45
|
};
|
|
46
|
+
const onModalContainerMouseDown = e => {
|
|
47
|
+
e.stopPropagation();
|
|
48
|
+
e.nativeEvent.stopImmediatePropagation();
|
|
49
|
+
};
|
|
46
50
|
return /*#__PURE__*/_react.default.createElement(_reactstrap.Modal, {
|
|
51
|
+
onMouseDown: onModalContainerMouseDown,
|
|
47
52
|
isOpen: true,
|
|
48
53
|
toggle: onToggleImageDialog,
|
|
49
54
|
className: className,
|
|
@@ -26,8 +26,8 @@ const ImageMenuPopover = /*#__PURE__*/_react.default.forwardRef((_ref, ref) => {
|
|
|
26
26
|
t
|
|
27
27
|
} = (0, _reactI18next.useTranslation)(_constants.TRANSLATE_NAMESPACE);
|
|
28
28
|
const handleInsertNetworkImage = e => {
|
|
29
|
-
e.nativeEvent.stopImmediatePropagation();
|
|
30
29
|
e.stopPropagation();
|
|
30
|
+
e.nativeEvent.stopImmediatePropagation();
|
|
31
31
|
setIsShowInternetImageModal(true);
|
|
32
32
|
};
|
|
33
33
|
const handleClickFileInput = (0, _react.useCallback)(e => {
|
|
@@ -23,6 +23,8 @@ const renderImage = (_ref, editor) => {
|
|
|
23
23
|
children,
|
|
24
24
|
element
|
|
25
25
|
} = _ref;
|
|
26
|
+
const [isLoadingImage, setIsLoadingImage] = (0, _react.useState)(true);
|
|
27
|
+
const [isError, setIsError] = (0, _react.useState)(true);
|
|
26
28
|
const [isResizing, setIsResizing] = (0, _react.useState)(false);
|
|
27
29
|
const [isFullScreening, setIsFullScreening] = (0, _react.useState)(false);
|
|
28
30
|
const [imgSizeInfo, setImgSizeInfo] = (0, _react.useState)({
|
|
@@ -35,6 +37,20 @@ const renderImage = (_ref, editor) => {
|
|
|
35
37
|
const imgRef = (0, _react.useRef)(null);
|
|
36
38
|
const resizerRef = (0, _react.useRef)();
|
|
37
39
|
const isSelected = (0, _slateReact.useSelected)();
|
|
40
|
+
(0, _react.useEffect)(() => {
|
|
41
|
+
const {
|
|
42
|
+
data = {}
|
|
43
|
+
} = element;
|
|
44
|
+
const url = data.src;
|
|
45
|
+
(0, _helper.lazyLoadImage)(url, image => {
|
|
46
|
+
setIsLoadingImage(false);
|
|
47
|
+
setIsError(false);
|
|
48
|
+
}, () => {
|
|
49
|
+
setIsLoadingImage(false);
|
|
50
|
+
setIsError(true);
|
|
51
|
+
});
|
|
52
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
53
|
+
}, []);
|
|
38
54
|
const handleStartResize = (0, _react.useCallback)(event => {
|
|
39
55
|
event.stopPropagation();
|
|
40
56
|
const {
|
|
@@ -88,16 +104,16 @@ const renderImage = (_ref, editor) => {
|
|
|
88
104
|
return /*#__PURE__*/_react.default.createElement("span", Object.assign({}, attributes, {
|
|
89
105
|
contentEditable: false,
|
|
90
106
|
className: "sf-image-wrapper"
|
|
91
|
-
}), /*#__PURE__*/_react.default.createElement("img", {
|
|
107
|
+
}), isLoadingImage && /*#__PURE__*/_react.default.createElement("span", null, t('Image_is_uploading'), "..."), !isLoadingImage && /*#__PURE__*/_react.default.createElement("img", {
|
|
92
108
|
ref: imgRef,
|
|
93
109
|
className: (0, _classnames.default)('sf-image', {
|
|
94
110
|
'selected': isSelected
|
|
95
111
|
}),
|
|
96
|
-
alt: element === null || element === void 0 ? void 0 : (_element$data = element.data) === null || _element$data === void 0 ? void 0 : _element$data.alt,
|
|
112
|
+
alt: (element === null || element === void 0 ? void 0 : (_element$data = element.data) === null || _element$data === void 0 ? void 0 : _element$data.alt) || '',
|
|
97
113
|
src: element === null || element === void 0 ? void 0 : (_element$data2 = element.data) === null || _element$data2 === void 0 ? void 0 : _element$data2.src,
|
|
98
114
|
width: element === null || element === void 0 ? void 0 : element.data.width,
|
|
99
115
|
height: element === null || element === void 0 ? void 0 : element.data.height
|
|
100
|
-
}), isSelected && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("span", {
|
|
116
|
+
}), isSelected && !isError && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("span", {
|
|
101
117
|
ref: resizerRef,
|
|
102
118
|
className: "resizer",
|
|
103
119
|
onMouseDown: handleStartResize
|
|
@@ -178,6 +178,8 @@ const transformListItem = node => {
|
|
|
178
178
|
} else if (child.type === 'list') {
|
|
179
179
|
const hasParent = true;
|
|
180
180
|
return transformList(child, hasParent);
|
|
181
|
+
} else if (child.type === 'heading') {
|
|
182
|
+
return transformParagraph(child);
|
|
181
183
|
} else if (child.type === 'html') {
|
|
182
184
|
// patch
|
|
183
185
|
return transformBlockHtml(child);
|
package/package.json
CHANGED