@seafile/sdoc-editor 1.0.206-test0.4.1 → 1.0.206-test0.4.2
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/basic-sdk/extension/commons/insert-element-dialog/index.js +5 -0
- package/dist/basic-sdk/extension/constants/element-type.js +2 -1
- package/dist/basic-sdk/extension/plugins/video/dialog/add-video-link-dialog/index.js +101 -0
- package/dist/basic-sdk/extension/plugins/video/helpers.js +1 -3
- package/dist/basic-sdk/extension/plugins/video/menu/index.js +5 -7
- package/package.json +1 -1
|
@@ -23,6 +23,7 @@ var _index4 = _interopRequireDefault(require("../../../../components/toast/index
|
|
|
23
23
|
var _index5 = require("../../plugins/video/constants/index.js");
|
|
24
24
|
var _constants3 = require("../../../../basic-sdk/constants");
|
|
25
25
|
var _index6 = _interopRequireDefault(require("../../plugins/ai/ai-module/index.js"));
|
|
26
|
+
var _index7 = _interopRequireDefault(require("../../plugins/video/dialog/add-video-link-dialog/index.js"));
|
|
26
27
|
const InsertElementDialog = _ref => {
|
|
27
28
|
let {
|
|
28
29
|
editor
|
|
@@ -185,6 +186,10 @@ const InsertElementDialog = _ref => {
|
|
|
185
186
|
};
|
|
186
187
|
return /*#__PURE__*/_react.default.createElement(_index.default, videoProps);
|
|
187
188
|
}
|
|
189
|
+
case _constants2.ELEMENT_TYPE.VIDEO_LINK:
|
|
190
|
+
{
|
|
191
|
+
return /*#__PURE__*/_react.default.createElement(_index7.default, props);
|
|
192
|
+
}
|
|
188
193
|
case _constants2.LOCAL_IMAGE:
|
|
189
194
|
{
|
|
190
195
|
return /*#__PURE__*/_react.default.createElement("input", {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.WIKI_LINK = exports.VIDEO = exports.UNORDERED_LIST = exports.TWO_COLUMN = exports.TOP_LEVEL_TYPES = exports.TITLE = exports.THREE_COLUMN = exports.TABLE_ROW = exports.TABLE_CELL = exports.TABLE = exports.SUBTITLE = exports.SEATABLE_TABLE = exports.SEATABLE_COLUMN = exports.SDOC_LINK = exports.QUICK_INSERT = exports.PARAGRAPH = exports.ORDERED_LIST = exports.MULTI_COLUMN = exports.MENTION_TEMP = exports.MENTION = exports.LIST_ITEM = exports.LINK = exports.INLINE_LEVEL_TYPES = exports.IMAGE_BLOCK = exports.IMAGE = exports.HEADER6 = exports.HEADER5 = exports.HEADER4 = exports.HEADER3 = exports.HEADER2 = exports.HEADER1 = exports.HEADER = exports.FOUR_COLUMN = exports.FONT_SIZE_REDUCE = exports.FONT_SIZE_INCREASE = exports.FONT_SIZE = exports.FIVE_COLUMN = exports.FILE_LINK_INSET_INPUT_TEMP = exports.FILE_LINK = exports.COLUMN = exports.CODE_LINE = exports.CODE_BLOCK = exports.CHECK_LIST_ITEM = exports.CALL_OUT = exports.BLOCKQUOTE = exports.ASK_AI = void 0;
|
|
6
|
+
exports.WIKI_LINK = exports.VIDEO_LINK = exports.VIDEO = exports.UNORDERED_LIST = exports.TWO_COLUMN = exports.TOP_LEVEL_TYPES = exports.TITLE = exports.THREE_COLUMN = exports.TABLE_ROW = exports.TABLE_CELL = exports.TABLE = exports.SUBTITLE = exports.SEATABLE_TABLE = exports.SEATABLE_COLUMN = exports.SDOC_LINK = exports.QUICK_INSERT = exports.PARAGRAPH = exports.ORDERED_LIST = exports.MULTI_COLUMN = exports.MENTION_TEMP = exports.MENTION = exports.LIST_ITEM = exports.LINK = exports.INLINE_LEVEL_TYPES = exports.IMAGE_BLOCK = exports.IMAGE = exports.HEADER6 = exports.HEADER5 = exports.HEADER4 = exports.HEADER3 = exports.HEADER2 = exports.HEADER1 = exports.HEADER = exports.FOUR_COLUMN = exports.FONT_SIZE_REDUCE = exports.FONT_SIZE_INCREASE = exports.FONT_SIZE = exports.FIVE_COLUMN = exports.FILE_LINK_INSET_INPUT_TEMP = exports.FILE_LINK = exports.COLUMN = exports.CODE_LINE = exports.CODE_BLOCK = exports.CHECK_LIST_ITEM = exports.CALL_OUT = exports.BLOCKQUOTE = exports.ASK_AI = void 0;
|
|
7
7
|
const BLOCKQUOTE = exports.BLOCKQUOTE = 'blockquote';
|
|
8
8
|
const TITLE = exports.TITLE = 'title';
|
|
9
9
|
const SUBTITLE = exports.SUBTITLE = 'subtitle';
|
|
@@ -42,6 +42,7 @@ const MENTION = exports.MENTION = 'mention';
|
|
|
42
42
|
const MENTION_TEMP = exports.MENTION_TEMP = 'mention_temp';
|
|
43
43
|
const FILE_LINK_INSET_INPUT_TEMP = exports.FILE_LINK_INSET_INPUT_TEMP = 'file_link_insert_input_temp';
|
|
44
44
|
const QUICK_INSERT = exports.QUICK_INSERT = 'quick_insert';
|
|
45
|
+
const VIDEO_LINK = exports.VIDEO_LINK = 'video_link';
|
|
45
46
|
const SEATABLE_COLUMN = exports.SEATABLE_COLUMN = 'seatable_column';
|
|
46
47
|
const SEATABLE_TABLE = exports.SEATABLE_TABLE = 'seatable_table';
|
|
47
48
|
const ASK_AI = exports.ASK_AI = 'ask_ai';
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _reactI18next = require("react-i18next");
|
|
10
|
+
var _reactstrap = require("reactstrap");
|
|
11
|
+
var _helpers = require("../../helpers");
|
|
12
|
+
const AddVideoLinkDialog = _ref => {
|
|
13
|
+
let {
|
|
14
|
+
editor,
|
|
15
|
+
className,
|
|
16
|
+
closeDialog,
|
|
17
|
+
handleSubmit
|
|
18
|
+
} = _ref;
|
|
19
|
+
const {
|
|
20
|
+
t
|
|
21
|
+
} = (0, _reactI18next.useTranslation)('sdoc-editor');
|
|
22
|
+
const [linkErrorMessage, setLinkErrorMessage] = (0, _react.useState)('');
|
|
23
|
+
const [url, setURL] = (0, _react.useState)('');
|
|
24
|
+
const isValidVideoLink = link => {
|
|
25
|
+
const videoRegex = /v\.qq\.com|youtube\.com|v\.youku\.com|bilibili\.com/i;
|
|
26
|
+
return videoRegex.test(link);
|
|
27
|
+
};
|
|
28
|
+
const submit = (0, _react.useCallback)(() => {
|
|
29
|
+
setLinkErrorMessage('');
|
|
30
|
+
if (!url) {
|
|
31
|
+
setLinkErrorMessage(t('The_link_address_is_required'));
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
if (!isValidVideoLink(url)) {
|
|
35
|
+
setLinkErrorMessage(t('The_link_address_is_invalid'));
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
console.log(url);
|
|
39
|
+
(0, _helpers.insertVideo)(editor, [{
|
|
40
|
+
name: url,
|
|
41
|
+
isEmbeddableLink: true
|
|
42
|
+
}], [url]);
|
|
43
|
+
handleSubmit && handleSubmit();
|
|
44
|
+
closeDialog();
|
|
45
|
+
|
|
46
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
47
|
+
}, [editor, url]);
|
|
48
|
+
const onKeyDown = (0, _react.useCallback)(event => {
|
|
49
|
+
if (event.keyCode === 13) {
|
|
50
|
+
event.preventDefault();
|
|
51
|
+
submit();
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
55
|
+
}, [editor, url]);
|
|
56
|
+
const handleUrlChange = (0, _react.useCallback)(event => {
|
|
57
|
+
const videoUrl = event.target.videoUrl.trim();
|
|
58
|
+
if (videoUrl === url) return;
|
|
59
|
+
console.log(videoUrl);
|
|
60
|
+
setURL(videoUrl);
|
|
61
|
+
}, [url]);
|
|
62
|
+
return /*#__PURE__*/_react.default.createElement(_reactstrap.Modal, {
|
|
63
|
+
isOpen: true,
|
|
64
|
+
autoFocus: false,
|
|
65
|
+
toggle: closeDialog,
|
|
66
|
+
className: className,
|
|
67
|
+
zIndex: 1071,
|
|
68
|
+
returnFocusAfterClose: false
|
|
69
|
+
}, /*#__PURE__*/_react.default.createElement(_reactstrap.ModalHeader, {
|
|
70
|
+
toggle: closeDialog
|
|
71
|
+
}, t('Insert_link')), /*#__PURE__*/_react.default.createElement(_reactstrap.ModalBody, null, /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
72
|
+
className: "form-group"
|
|
73
|
+
}, /*#__PURE__*/_react.default.createElement(_reactstrap.Label, {
|
|
74
|
+
for: "addLink"
|
|
75
|
+
}, t('Link_address')), /*#__PURE__*/_react.default.createElement("input", {
|
|
76
|
+
onKeyDown: onKeyDown,
|
|
77
|
+
autoFocus: true,
|
|
78
|
+
type: "url",
|
|
79
|
+
className: "form-control",
|
|
80
|
+
id: "addVideoLink",
|
|
81
|
+
value: url || '',
|
|
82
|
+
onChange: handleUrlChange
|
|
83
|
+
}), linkErrorMessage && /*#__PURE__*/_react.default.createElement(_reactstrap.Alert, {
|
|
84
|
+
color: "danger",
|
|
85
|
+
className: "mt-2"
|
|
86
|
+
}, t(linkErrorMessage))), /*#__PURE__*/_react.default.createElement("div", {
|
|
87
|
+
style: {
|
|
88
|
+
textAlign: 'center',
|
|
89
|
+
fontSize: '12px',
|
|
90
|
+
color: '#787774'
|
|
91
|
+
}
|
|
92
|
+
}, t('Support Youtube, Tencent, Bilibili and more')))), /*#__PURE__*/_react.default.createElement(_reactstrap.ModalFooter, null, /*#__PURE__*/_react.default.createElement(_reactstrap.Button, {
|
|
93
|
+
color: "secondary",
|
|
94
|
+
onClick: closeDialog
|
|
95
|
+
}, t('Cancel')), /*#__PURE__*/_react.default.createElement(_reactstrap.Button, {
|
|
96
|
+
color: "primary",
|
|
97
|
+
disabled: false,
|
|
98
|
+
onClick: submit
|
|
99
|
+
}, t('Add_link'))));
|
|
100
|
+
};
|
|
101
|
+
var _default = exports.default = AddVideoLinkDialog;
|
|
@@ -95,15 +95,13 @@ const insertVideo = function (editor, videoFiles, srcList, selection) {
|
|
|
95
95
|
if (position !== _constants.INSERT_POSITION.AFTER) {
|
|
96
96
|
if (isInsertVideoMenuDisabled(editor)) return;
|
|
97
97
|
}
|
|
98
|
-
console.log(videoFiles[0]);
|
|
99
98
|
const videoInfo = {
|
|
100
99
|
name: videoFiles[0].name || null,
|
|
101
100
|
size: videoFiles[0].size || null,
|
|
102
101
|
isEmbeddableLink: videoFiles[0].isEmbeddableLink || false
|
|
103
102
|
};
|
|
104
|
-
console.log(videoInfo);
|
|
105
103
|
let videoNodes;
|
|
106
|
-
// Return when embedding invalid youtube, tencent or bilibili video url
|
|
104
|
+
// Return when embedding an invalid youtube, tencent or bilibili video url
|
|
107
105
|
if (videoInfo.isEmbeddableLink) {
|
|
108
106
|
const parsedSrc = parseVideoLink(srcList[0]);
|
|
109
107
|
if (!parsedSrc) return;
|
|
@@ -13,7 +13,6 @@ var _helpers = require("../helpers");
|
|
|
13
13
|
var _constants = require("../../../constants");
|
|
14
14
|
var _constants2 = require("../../../../constants");
|
|
15
15
|
var _dropdownMenuItem = _interopRequireDefault(require("../../../commons/dropdown-menu-item"));
|
|
16
|
-
var _constants3 = require("../../../../../constants");
|
|
17
16
|
const VideoMenu = _ref => {
|
|
18
17
|
let {
|
|
19
18
|
editor,
|
|
@@ -32,14 +31,13 @@ const VideoMenu = _ref => {
|
|
|
32
31
|
editor
|
|
33
32
|
});
|
|
34
33
|
}, [editor, eventBus]);
|
|
35
|
-
const addVideoLink = (0, _react.useCallback)(
|
|
36
|
-
|
|
37
|
-
|
|
34
|
+
const addVideoLink = (0, _react.useCallback)(() => {
|
|
35
|
+
eventBus.dispatch(_constants2.INTERNAL_EVENT.INSERT_ELEMENT, {
|
|
36
|
+
type: _constants.ELEMENT_TYPE.VIDEO_LINK,
|
|
38
37
|
editor
|
|
39
|
-
};
|
|
40
|
-
eventBus.dispatch(_constants3.EXTERNAL_EVENT.ADD_VIDEO_LINK, {
|
|
41
|
-
...external_props
|
|
42
38
|
});
|
|
39
|
+
toggle && toggle();
|
|
40
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
43
41
|
}, [editor, eventBus]);
|
|
44
42
|
const openSelectVideoFileDialog = (0, _react.useCallback)(() => {
|
|
45
43
|
eventBus.dispatch(_constants2.INTERNAL_EVENT.INSERT_ELEMENT, {
|