@seafile/sdoc-editor 3.0.38 → 3.0.39
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/assets/css/sdoc-editor-plugins.css +30 -0
- package/dist/extension/plugins/list/render-elem.js +25 -1
- package/dist/extension/plugins/video/helpers.js +13 -2
- package/dist/extension/plugins/video/index.css +13 -7
- package/dist/extension/plugins/video/render-elem.js +109 -16
- package/package.json +2 -2
|
@@ -32,6 +32,36 @@
|
|
|
32
32
|
font-weight: bold;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
+
.sdoc-editor__article .list-container li {
|
|
36
|
+
position: relative;
|
|
37
|
+
padding-left: 8px !important;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.sdoc-editor__article .list-container .sdoc-li-control {
|
|
41
|
+
user-select: none;
|
|
42
|
+
cursor: pointer;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.sdoc-editor__article .list-container .sdoc-li-prefix {
|
|
46
|
+
font-size: 12px;
|
|
47
|
+
color: #666;
|
|
48
|
+
position: absolute;
|
|
49
|
+
left: -32px;
|
|
50
|
+
top: 7px;
|
|
51
|
+
cursor: pointer;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.sdoc-editor__article .list-container .sdoc-li-divider {
|
|
55
|
+
width: 1px;
|
|
56
|
+
height: calc(100% - 38px);
|
|
57
|
+
background-color: #ccc;
|
|
58
|
+
position: absolute;
|
|
59
|
+
left: -12px;
|
|
60
|
+
top: 28px;
|
|
61
|
+
user-select: none;
|
|
62
|
+
pointer-events: none;
|
|
63
|
+
}
|
|
64
|
+
|
|
35
65
|
/* check list */
|
|
36
66
|
.sdoc-editor__article .sdoc-checkbox-container {
|
|
37
67
|
padding: 0px 2px;
|
|
@@ -6,6 +6,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.renderListLic = exports.renderListItem = exports.renderList = void 0;
|
|
8
8
|
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
var _slate = require("@seafile/slate");
|
|
10
|
+
var _slateReact = require("@seafile/slate-react");
|
|
9
11
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
10
12
|
var _constants = require("../../constants");
|
|
11
13
|
var renderList = exports.renderList = function renderList(props, editor) {
|
|
@@ -22,6 +24,7 @@ var renderListItem = exports.renderListItem = function renderListItem(props, edi
|
|
|
22
24
|
var attributes = props.attributes,
|
|
23
25
|
children = props.children,
|
|
24
26
|
element = props.element;
|
|
27
|
+
var collapsed = !!element.collapsed;
|
|
25
28
|
var align = element.children[0].align;
|
|
26
29
|
var className = '';
|
|
27
30
|
switch (align) {
|
|
@@ -37,13 +40,34 @@ var renderListItem = exports.renderListItem = function renderListItem(props, edi
|
|
|
37
40
|
var isBold = element.children[0].children.every(function (item) {
|
|
38
41
|
return item.bold === true;
|
|
39
42
|
});
|
|
43
|
+
var togglePrefix = function togglePrefix(e) {
|
|
44
|
+
e.preventDefault();
|
|
45
|
+
e.stopPropagation();
|
|
46
|
+
var path = _slateReact.ReactEditor.findPath(editor, element);
|
|
47
|
+
_slate.Transforms.setNodes(editor, {
|
|
48
|
+
collapsed: !collapsed
|
|
49
|
+
}, {
|
|
50
|
+
at: path
|
|
51
|
+
});
|
|
52
|
+
};
|
|
53
|
+
var newChildren = !collapsed ? children : children[0];
|
|
40
54
|
return /*#__PURE__*/_react["default"].createElement("li", Object.assign({
|
|
41
55
|
"data-id": element.id
|
|
42
56
|
}, attributes, {
|
|
43
57
|
className: (0, _classnames["default"])(className, {
|
|
44
58
|
'sdoc-li-bold': isBold
|
|
45
59
|
})
|
|
46
|
-
}), children
|
|
60
|
+
}), element.children.length > 1 && /*#__PURE__*/_react["default"].createElement("span", {
|
|
61
|
+
className: "sdoc-li-control",
|
|
62
|
+
contentEditable: "false"
|
|
63
|
+
}, /*#__PURE__*/_react["default"].createElement("span", {
|
|
64
|
+
className: (0, _classnames["default"])('sdoc-li-prefix', 'sdocfont', !collapsed ? 'sdoc-arrow-down' : 'sdoc-next-page'),
|
|
65
|
+
onMouseDown: togglePrefix
|
|
66
|
+
}), /*#__PURE__*/_react["default"].createElement("span", {
|
|
67
|
+
className: "sdoc-li-divider"
|
|
68
|
+
})), /*#__PURE__*/_react["default"].createElement("span", {
|
|
69
|
+
className: "sdoc-li-content"
|
|
70
|
+
}, newChildren));
|
|
47
71
|
};
|
|
48
72
|
var renderListLic = exports.renderListLic = function renderListLic(props, editor) {
|
|
49
73
|
var attributes = props.attributes,
|
|
@@ -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.videoFileIcon = exports.parseVideoLink = exports.onCopyVideoNode = exports.isInsertVideoMenuDisabled = exports.insertVideo = exports.getVideoURL = exports.generateVideoNode = exports.formatFileSize = void 0;
|
|
7
|
+
exports.videoFileIcon = exports.updateVideo = exports.parseVideoLink = exports.onCopyVideoNode = exports.isInsertVideoMenuDisabled = exports.insertVideo = exports.getVideoURL = exports.generateVideoNode = exports.formatFileSize = void 0;
|
|
8
8
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
|
|
9
9
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
|
|
10
10
|
var _slate = require("@seafile/slate");
|
|
@@ -81,7 +81,7 @@ var parseVideoLink = exports.parseVideoLink = function parseVideoLink(url) {
|
|
|
81
81
|
// Bilibili url conversion
|
|
82
82
|
if (url.includes('bilibili.com')) {
|
|
83
83
|
var _vidMatch = url.match(/\/video\/(BV[0-9A-Za-z]+)/);
|
|
84
|
-
var _videoUrl2 = _vidMatch !== null && _vidMatch !== void 0 && _vidMatch[1] ? "https://player.bilibili.com/player.html?bvid=".concat(_vidMatch[1]) : false;
|
|
84
|
+
var _videoUrl2 = _vidMatch !== null && _vidMatch !== void 0 && _vidMatch[1] ? "https://player.bilibili.com/player.html?bvid=".concat(_vidMatch[1], "&autoplay=0") : false;
|
|
85
85
|
return _videoUrl2;
|
|
86
86
|
}
|
|
87
87
|
|
|
@@ -219,4 +219,15 @@ var onCopyVideoNode = exports.onCopyVideoNode = function onCopyVideoNode(editor,
|
|
|
219
219
|
});
|
|
220
220
|
}
|
|
221
221
|
});
|
|
222
|
+
};
|
|
223
|
+
var updateVideo = exports.updateVideo = function updateVideo(editor, data, id) {
|
|
224
|
+
_slate.Transforms.setNodes(editor, {
|
|
225
|
+
data: data
|
|
226
|
+
}, {
|
|
227
|
+
match: function match(n) {
|
|
228
|
+
return (0, _core.getNodeType)(n) === _constants.VIDEO && n.id === id;
|
|
229
|
+
},
|
|
230
|
+
at: editor.selection,
|
|
231
|
+
voids: true
|
|
232
|
+
});
|
|
222
233
|
};
|
|
@@ -35,16 +35,19 @@
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
@keyframes spin {
|
|
38
|
-
0% {
|
|
39
|
-
|
|
40
|
-
}
|
|
38
|
+
0% {
|
|
39
|
+
transform: rotate(0deg);
|
|
40
|
+
}
|
|
41
41
|
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
100% {
|
|
43
|
+
transform: rotate(360deg);
|
|
44
|
+
}
|
|
44
45
|
}
|
|
46
|
+
|
|
45
47
|
.sdoc-video-wrapper {
|
|
46
48
|
position: relative;
|
|
47
49
|
display: flex;
|
|
50
|
+
justify-content: center;
|
|
48
51
|
}
|
|
49
52
|
|
|
50
53
|
.sdoc-video-wrapper .sdoc-video-inner {
|
|
@@ -54,9 +57,10 @@
|
|
|
54
57
|
display: flex;
|
|
55
58
|
margin-top: 5px;
|
|
56
59
|
margin-bottom: 10px;
|
|
60
|
+
max-width: 100%;
|
|
57
61
|
}
|
|
58
62
|
|
|
59
|
-
.sdoc-video-inner .sdoc-video-element{
|
|
63
|
+
.sdoc-video-inner .sdoc-video-element {
|
|
60
64
|
width: 100%;
|
|
61
65
|
}
|
|
62
66
|
|
|
@@ -66,8 +70,10 @@
|
|
|
66
70
|
|
|
67
71
|
.sdoc-video-inner .sdoc-video-play {
|
|
68
72
|
position: absolute;
|
|
69
|
-
top:
|
|
73
|
+
top: 50%;
|
|
74
|
+
transform: translateY(-50%);
|
|
70
75
|
left: 46.3%;
|
|
71
76
|
font-size: 48px;
|
|
72
77
|
pointer-events: none;
|
|
78
|
+
color: #666666;
|
|
73
79
|
}
|
|
@@ -19,11 +19,15 @@ var _helpers = require("./helpers");
|
|
|
19
19
|
var _hoverMenu = _interopRequireDefault(require("./hover-menu"));
|
|
20
20
|
require("./index.css");
|
|
21
21
|
var Video = function Video(_ref) {
|
|
22
|
-
var _videoStates$element
|
|
22
|
+
var _videoStates$element$, _videoRef$current;
|
|
23
23
|
var element = _ref.element,
|
|
24
24
|
editor = _ref.editor;
|
|
25
25
|
var data = element.data;
|
|
26
26
|
var videoRef = (0, _react.useRef)(null);
|
|
27
|
+
var wrapperRef = (0, _react.useRef)(null);
|
|
28
|
+
var resizerRef = (0, _react.useRef)(null);
|
|
29
|
+
var resizeStartXRef = (0, _react.useRef)(0);
|
|
30
|
+
var resizeStartWidthRef = (0, _react.useRef)(0);
|
|
27
31
|
var _useState = (0, _react.useState)(false),
|
|
28
32
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
29
33
|
isLoaded = _useState2[0],
|
|
@@ -40,11 +44,21 @@ var Video = function Video(_ref) {
|
|
|
40
44
|
_useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
|
|
41
45
|
menuPosition = _useState8[0],
|
|
42
46
|
setMenuPosition = _useState8[1];
|
|
47
|
+
var _useState9 = (0, _react.useState)(false),
|
|
48
|
+
_useState0 = (0, _slicedToArray2["default"])(_useState9, 2),
|
|
49
|
+
isResizing = _useState0[0],
|
|
50
|
+
setIsResizing = _useState0[1];
|
|
51
|
+
var _useState1 = (0, _react.useState)(null),
|
|
52
|
+
_useState10 = (0, _slicedToArray2["default"])(_useState1, 2),
|
|
53
|
+
movingWidth = _useState10[0],
|
|
54
|
+
setMovingWidth = _useState10[1];
|
|
43
55
|
var scrollRef = (0, _useScrollContext.useScrollContext)();
|
|
44
56
|
var videoName = (data === null || data === void 0 ? void 0 : data.name) || (data === null || data === void 0 ? void 0 : data.src);
|
|
45
57
|
var videoSize = data === null || data === void 0 ? void 0 : data.size;
|
|
46
58
|
var isEmbeddableLink = data === null || data === void 0 ? void 0 : data.is_embeddable_link;
|
|
47
59
|
var readOnly = (0, _slateReact.useReadOnly)();
|
|
60
|
+
var _useTranslation = (0, _reactI18next.useTranslation)('sdoc-editor'),
|
|
61
|
+
t = _useTranslation.t;
|
|
48
62
|
var handlePlay = function handlePlay() {
|
|
49
63
|
setVideoStates(function (prev) {
|
|
50
64
|
return (0, _objectSpread4["default"])((0, _objectSpread4["default"])({}, prev), {}, (0, _defineProperty2["default"])({}, element.id, false));
|
|
@@ -65,12 +79,6 @@ var Video = function Video(_ref) {
|
|
|
65
79
|
_slate.Transforms.select(editor, path);
|
|
66
80
|
setIsSelected(true);
|
|
67
81
|
}, [editor, element]);
|
|
68
|
-
var onClickOutside = (0, _react.useCallback)(function (e) {
|
|
69
|
-
e.stopPropagation();
|
|
70
|
-
if (videoRef.current && !videoRef.current.contains(e.target)) {
|
|
71
|
-
setIsSelected(false);
|
|
72
|
-
}
|
|
73
|
-
}, []);
|
|
74
82
|
var setPosition = (0, _react.useCallback)(function (elem) {
|
|
75
83
|
if (elem) {
|
|
76
84
|
var _elem$getBoundingClie = elem.getBoundingClientRect(),
|
|
@@ -90,6 +98,81 @@ var Video = function Video(_ref) {
|
|
|
90
98
|
setPosition(videoRef.current);
|
|
91
99
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
92
100
|
}, []);
|
|
101
|
+
var getIframePointerEvents = (0, _react.useCallback)(function () {
|
|
102
|
+
if (readOnly) return 'auto';
|
|
103
|
+
if (isResizing) return 'none';
|
|
104
|
+
return isSelected ? 'auto' : 'none';
|
|
105
|
+
}, [isResizing, isSelected, readOnly]);
|
|
106
|
+
var getVideoWidthStyle = (0, _react.useCallback)(function () {
|
|
107
|
+
var videoWidth = movingWidth || element.data.width || '100%';
|
|
108
|
+
return {
|
|
109
|
+
width: videoWidth
|
|
110
|
+
};
|
|
111
|
+
}, [element.data.width, movingWidth]);
|
|
112
|
+
var registerEvent = (0, _react.useCallback)(function (eventList) {
|
|
113
|
+
eventList.forEach(function (element) {
|
|
114
|
+
document.addEventListener(element.eventName, element.event);
|
|
115
|
+
});
|
|
116
|
+
}, []);
|
|
117
|
+
var unregisterEvent = (0, _react.useCallback)(function (eventList) {
|
|
118
|
+
eventList.forEach(function (element) {
|
|
119
|
+
document.removeEventListener(element.eventName, element.event);
|
|
120
|
+
});
|
|
121
|
+
}, []);
|
|
122
|
+
var onMouseMove = (0, _react.useCallback)(function (event) {
|
|
123
|
+
var deltaX = event.clientX - resizeStartXRef.current;
|
|
124
|
+
var nextWidth = resizeStartWidthRef.current + deltaX;
|
|
125
|
+
if (nextWidth < 150) return;
|
|
126
|
+
if (wrapperRef.current) {
|
|
127
|
+
wrapperRef.current.style.width = "".concat(nextWidth, "px");
|
|
128
|
+
}
|
|
129
|
+
setMovingWidth(nextWidth);
|
|
130
|
+
}, []);
|
|
131
|
+
var onResizeEnd = (0, _react.useCallback)(function (event) {
|
|
132
|
+
var _wrapperRef$current;
|
|
133
|
+
event === null || event === void 0 ? void 0 : event.preventDefault();
|
|
134
|
+
event === null || event === void 0 ? void 0 : event.stopPropagation();
|
|
135
|
+
unregisterEvent([{
|
|
136
|
+
eventName: 'mousemove',
|
|
137
|
+
event: onMouseMove
|
|
138
|
+
}, {
|
|
139
|
+
eventName: 'mouseup',
|
|
140
|
+
event: onResizeEnd
|
|
141
|
+
}]);
|
|
142
|
+
var finalWidth = movingWidth || ((_wrapperRef$current = wrapperRef.current) === null || _wrapperRef$current === void 0 ? void 0 : _wrapperRef$current.getBoundingClientRect().width);
|
|
143
|
+
var newData = (0, _objectSpread4["default"])((0, _objectSpread4["default"])({}, element.data), {}, {
|
|
144
|
+
width: finalWidth
|
|
145
|
+
});
|
|
146
|
+
(0, _helpers.updateVideo)(editor, newData, element.id);
|
|
147
|
+
setIsResizing(false);
|
|
148
|
+
setTimeout(function () {
|
|
149
|
+
return setPosition(wrapperRef.current);
|
|
150
|
+
}, 0);
|
|
151
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
152
|
+
}, [editor, element.id, movingWidth, onMouseMove, registerEvent]);
|
|
153
|
+
var onResizeStart = (0, _react.useCallback)(function (event) {
|
|
154
|
+
var _wrapperRef$current2;
|
|
155
|
+
event.preventDefault();
|
|
156
|
+
event.stopPropagation();
|
|
157
|
+
setMenuPosition(null);
|
|
158
|
+
setIsResizing(true);
|
|
159
|
+
resizeStartXRef.current = event.clientX;
|
|
160
|
+
resizeStartWidthRef.current = ((_wrapperRef$current2 = wrapperRef.current) === null || _wrapperRef$current2 === void 0 ? void 0 : _wrapperRef$current2.getBoundingClientRect().width) || element.data.width || 0;
|
|
161
|
+
registerEvent([{
|
|
162
|
+
eventName: 'mousemove',
|
|
163
|
+
event: onMouseMove
|
|
164
|
+
}, {
|
|
165
|
+
eventName: 'mouseup',
|
|
166
|
+
event: onResizeEnd
|
|
167
|
+
}]);
|
|
168
|
+
}, [element.data.width, onMouseMove, onResizeEnd, registerEvent]);
|
|
169
|
+
var onClickOutside = (0, _react.useCallback)(function (e) {
|
|
170
|
+
e.stopPropagation();
|
|
171
|
+
if (wrapperRef.current && !wrapperRef.current.contains(e.target)) {
|
|
172
|
+
onResizeEnd();
|
|
173
|
+
setIsSelected(false);
|
|
174
|
+
}
|
|
175
|
+
}, [onResizeEnd]);
|
|
93
176
|
(0, _react.useEffect)(function () {
|
|
94
177
|
var videoElement = videoRef.current;
|
|
95
178
|
if (videoElement) {
|
|
@@ -157,26 +240,28 @@ var Video = function Video(_ref) {
|
|
|
157
240
|
"data-id": element.id,
|
|
158
241
|
className: "sdoc-video-wrapper",
|
|
159
242
|
style: {
|
|
160
|
-
display: isLoaded ? '
|
|
243
|
+
display: isLoaded ? 'flex' : 'none'
|
|
161
244
|
}
|
|
162
245
|
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
163
246
|
className: "sdoc-video-inner",
|
|
164
|
-
|
|
247
|
+
ref: wrapperRef,
|
|
248
|
+
style: (0, _objectSpread4["default"])({
|
|
165
249
|
visibility: isLoaded ? 'visible' : 'hidden'
|
|
166
|
-
}
|
|
250
|
+
}, getVideoWidthStyle()),
|
|
251
|
+
onClick: onClickVideo
|
|
167
252
|
}, !isEmbeddableLink && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("video", {
|
|
168
253
|
className: "sdoc-video-element",
|
|
169
254
|
ref: videoRef,
|
|
170
255
|
src: (0, _helpers.getVideoURL)(data, editor),
|
|
171
256
|
controls: true,
|
|
172
257
|
controlsList: readOnly ? 'nofullscreen' : undefined,
|
|
173
|
-
onClick: onClickVideo,
|
|
174
258
|
draggable: false,
|
|
175
259
|
onPlay: handlePlay,
|
|
176
260
|
onPause: handlePause,
|
|
177
261
|
onCanPlay: handleVideoLoad,
|
|
178
262
|
style: {
|
|
179
|
-
boxShadow: isSelected ? '0 0 0 2px #007bff' : 'none'
|
|
263
|
+
boxShadow: isSelected ? '0 0 0 2px #007bff' : 'none',
|
|
264
|
+
pointerEvents: getIframePointerEvents()
|
|
180
265
|
}
|
|
181
266
|
}), /*#__PURE__*/_react["default"].createElement("div", {
|
|
182
267
|
className: "sdoc-video-play sdocfont sdoc-play",
|
|
@@ -186,17 +271,25 @@ var Video = function Video(_ref) {
|
|
|
186
271
|
contentEditable: "false"
|
|
187
272
|
})), isEmbeddableLink && /*#__PURE__*/_react["default"].createElement("iframe", {
|
|
188
273
|
className: "sdoc-video-element",
|
|
274
|
+
ref: videoRef,
|
|
189
275
|
title: data.src,
|
|
190
276
|
allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",
|
|
191
277
|
allowFullScreen: true,
|
|
192
278
|
src: (0, _helpers.getVideoURL)(data, editor),
|
|
193
279
|
onLoad: handleVideoLoad,
|
|
194
280
|
style: {
|
|
195
|
-
width: '100%',
|
|
196
281
|
height: '100%',
|
|
197
|
-
border: 'none'
|
|
282
|
+
border: 'none',
|
|
283
|
+
boxShadow: isSelected ? '0 0 0 2px #007bff' : 'none',
|
|
284
|
+
pointerEvents: getIframePointerEvents()
|
|
198
285
|
}
|
|
199
|
-
})
|
|
286
|
+
}), !readOnly && isSelected && /*#__PURE__*/_react["default"].createElement("span", {
|
|
287
|
+
className: "image-resizer",
|
|
288
|
+
ref: resizerRef,
|
|
289
|
+
onMouseDown: onResizeStart
|
|
290
|
+
}), isResizing && /*#__PURE__*/_react["default"].createElement("span", {
|
|
291
|
+
className: "image-size"
|
|
292
|
+
}, /*#__PURE__*/_react["default"].createElement("span", null, t('Width'), ':', parseInt(movingWidth || ((_videoRef$current = videoRef.current) === null || _videoRef$current === void 0 ? void 0 : _videoRef$current.clientWidth))), /*#__PURE__*/_react["default"].createElement("span", null, "\xA0\xA0"), /*#__PURE__*/_react["default"].createElement("span", null, t('Height'), ':', videoRef.current.clientHeight)))), isSelected && !isEmbeddableLink && !readOnly && editor.selection && _slate.Range.isCollapsed(editor.selection) && /*#__PURE__*/_react["default"].createElement(_hoverMenu["default"], {
|
|
200
293
|
editor: editor,
|
|
201
294
|
menuPosition: menuPosition,
|
|
202
295
|
element: element,
|
|
@@ -210,7 +303,7 @@ function renderVideo(props, editor) {
|
|
|
210
303
|
children = props.children,
|
|
211
304
|
attributes = props.attributes;
|
|
212
305
|
return /*#__PURE__*/_react["default"].createElement("div", Object.assign({
|
|
213
|
-
className: "sdoc-video-wrapper"
|
|
306
|
+
className: "sdoc-video-outer-wrapper"
|
|
214
307
|
}, attributes, {
|
|
215
308
|
contentEditable: "true",
|
|
216
309
|
suppressContentEditableWarning: true
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seafile/sdoc-editor",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.39",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"test": "jest",
|
|
@@ -72,5 +72,5 @@
|
|
|
72
72
|
"publishConfig": {
|
|
73
73
|
"access": "public"
|
|
74
74
|
},
|
|
75
|
-
"gitHead": "
|
|
75
|
+
"gitHead": "8d184c224586d5b7a253f40d2fa2c680f8c46d53"
|
|
76
76
|
}
|