@seafile/sdoc-editor 1.0.206-test0.4.1 → 1.0.206-test0.4.3

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.
@@ -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.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)(e => {
36
- const external_props = {
37
- insertVideo: _helpers.insertVideo,
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, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seafile/sdoc-editor",
3
- "version": "1.0.206-test0.4.1",
3
+ "version": "1.0.206-test0.4.3",
4
4
  "private": false,
5
5
  "description": "This is a sdoc editor",
6
6
  "main": "dist/index.js",