@seafile/sdoc-editor 3.0.142 → 3.0.144

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.
@@ -50,6 +50,13 @@ var JSBridge = /*#__PURE__*/(0, _createClass2["default"])(function JSBridge() {
50
50
  action = _parsedData.action,
51
51
  data = _parsedData.data;
52
52
  var eventHandler = _this.eventHandlerMap[action];
53
+ if (typeof eventHandler !== 'function') {
54
+ console.error("No event handler registered for action: ".concat(action));
55
+ responseCallback(JSON.stringify({
56
+ success: false
57
+ }));
58
+ return;
59
+ }
53
60
  var params = null;
54
61
  try {
55
62
  params = JSON.parse(data);
@@ -59,8 +66,16 @@ var JSBridge = /*#__PURE__*/(0, _createClass2["default"])(function JSBridge() {
59
66
  responseCallback(JSON.stringify({
60
67
  success: false
61
68
  }));
69
+ return;
70
+ }
71
+ var execActionSucceed = false;
72
+ try {
73
+ execActionSucceed = eventHandler(params, _this.editor);
74
+ } catch (err) {
75
+ console.error("Failed to execute action handler: ".concat(action));
76
+ console.error(err);
77
+ execActionSucceed = false;
62
78
  }
63
- var execActionSucceed = eventHandler(params, _this.editor);
64
79
  if (execActionSucceed) {
65
80
  responseCallback(JSON.stringify({
66
81
  success: true
@@ -5,58 +5,60 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.updateEditorHistory = exports.registerToolbarMenuTrigger = void 0;
8
- var _basicSdk = require("@seafile/comment-editor/dist/basic-sdk");
9
- var _constants = require("../extension/constants");
8
+ var _constants = require("../constants");
9
+ var _constants2 = require("../extension/constants");
10
10
  var _core = require("../extension/core");
11
11
  var _helpers = require("../extension/plugins/check-list/helpers");
12
12
  var _helpers2 = require("../extension/plugins/header/helpers");
13
13
  var _helpers3 = require("../extension/plugins/list/helpers");
14
14
  var _eventBus = _interopRequireDefault(require("../utils/event-bus"));
15
- var _constants2 = require("./constants");
15
+ var _constants3 = require("./constants");
16
16
  var _jsBridge = _interopRequireDefault(require("./js-bridge"));
17
- var headerTypes = [_constants.ELEMENT_TYPE.TITLE, _constants.ELEMENT_TYPE.SUBTITLE, _constants.ELEMENT_TYPE.HEADER1, _constants.ELEMENT_TYPE.HEADER2, _constants.ELEMENT_TYPE.HEADER3, _constants.ELEMENT_TYPE.HEADER4, _constants.ELEMENT_TYPE.HEADER5, _constants.ELEMENT_TYPE.HEADER6, _constants.ELEMENT_TYPE.PARAGRAPH];
17
+ var headerTypes = [_constants2.ELEMENT_TYPE.TITLE, _constants2.ELEMENT_TYPE.SUBTITLE, _constants2.ELEMENT_TYPE.HEADER1, _constants2.ELEMENT_TYPE.HEADER2, _constants2.ELEMENT_TYPE.HEADER3, _constants2.ELEMENT_TYPE.HEADER4, _constants2.ELEMENT_TYPE.HEADER5, _constants2.ELEMENT_TYPE.HEADER6, _constants2.ELEMENT_TYPE.PARAGRAPH];
18
18
  var onToolbarTrigger = function onToolbarTrigger(data, editor) {
19
- var type = data.type;
19
+ var _ref = data || {},
20
+ type = _ref.type;
20
21
  if (headerTypes.includes(type)) {
21
22
  var nodeEntry = (0, _core.getNearestBlockNode)(editor);
22
23
  if (!nodeEntry) return;
23
24
  var newType = type;
24
25
  if (nodeEntry[0].type === type) {
25
- newType = _constants.PARAGRAPH;
26
+ newType = _constants2.PARAGRAPH;
26
27
  }
27
28
  (0, _helpers2.setHeaderType)(editor, newType);
28
- return;
29
+ return true;
29
30
  }
30
- if (type === _constants.UNDO) {
31
+ if (type === _constants2.UNDO) {
31
32
  editor.undo();
32
- return;
33
+ return true;
33
34
  }
34
- if (type === _constants.REDO) {
35
+ if (type === _constants2.REDO) {
35
36
  editor.redo();
36
- return;
37
+ return true;
37
38
  }
38
- if (type === _constants.UNORDERED_LIST || type === _constants.ORDERED_LIST) {
39
+ if (type === _constants2.UNORDERED_LIST || type === _constants2.ORDERED_LIST) {
39
40
  (0, _helpers3.setListType)(editor, type);
40
- return;
41
+ return true;
41
42
  }
42
- if (type === _constants.CHECK_LIST_ITEM) {
43
+ if (type === _constants2.CHECK_LIST_ITEM) {
43
44
  var _nodeEntry = (0, _core.getNearestBlockNode)(editor);
44
45
  if (!_nodeEntry) return;
45
46
  var _newType = type;
46
47
  if (_nodeEntry[0].type === type) {
47
- _newType = _constants.PARAGRAPH;
48
+ _newType = _constants2.PARAGRAPH;
48
49
  }
49
50
  (0, _helpers.setCheckListItemType)(editor, _newType);
50
- return;
51
+ return true;
51
52
  }
52
- if (type === _constants.LOCAL_IMAGE) {
53
+ if (type === _constants2.LOCAL_IMAGE) {
53
54
  var eventBus = _eventBus["default"].getInstance();
54
- eventBus.dispatch(_basicSdk.INTERNAL_EVENT.INSERT_ELEMENT, {
55
- type: _constants.LOCAL_IMAGE,
55
+ eventBus.dispatch(_constants.INTERNAL_EVENT.INSERT_ELEMENT, {
56
+ type: type,
56
57
  editor: editor
57
58
  });
58
- return;
59
+ return true;
59
60
  }
61
+ return false;
60
62
  };
61
63
  var updateEditorHistory = exports.updateEditorHistory = function updateEditorHistory(editor) {
62
64
  if (!window.seadroid) {
@@ -65,5 +67,5 @@ var updateEditorHistory = exports.updateEditorHistory = function updateEditorHis
65
67
  window.seadroid['history'] = editor.history;
66
68
  };
67
69
  var registerToolbarMenuTrigger = exports.registerToolbarMenuTrigger = function registerToolbarMenuTrigger() {
68
- _jsBridge["default"].registerEventHandler(_constants2.ACTION_TYPES.TOOLBAR_MENU_TRIGGER, onToolbarTrigger);
70
+ _jsBridge["default"].registerEventHandler(_constants3.ACTION_TYPES.TOOLBAR_MENU_TRIGGER, onToolbarTrigger);
69
71
  };
@@ -78,6 +78,10 @@ var InsertElementDialog = function InsertElementDialog(_ref) {
78
78
  _useState22 = (0, _slicedToArray2["default"])(_useState21, 2),
79
79
  formula = _useState22[0],
80
80
  setFormula = _useState22[1];
81
+ var _useState23 = (0, _react.useState)(0),
82
+ _useState24 = (0, _slicedToArray2["default"])(_useState23, 2),
83
+ localInputTriggerToken = _useState24[0],
84
+ setLocalInputTriggerToken = _useState24[1];
81
85
  var _useTranslation = (0, _reactI18next.useTranslation)('sdoc-editor'),
82
86
  t = _useTranslation.t;
83
87
  var uploadLocalImageInputRef = (0, _react.useRef)();
@@ -135,6 +139,26 @@ var InsertElementDialog = function InsertElementDialog(_ref) {
135
139
  };
136
140
  // eslint-disable-next-line react-hooks/exhaustive-deps
137
141
  }, []);
142
+ (0, _react.useEffect)(function () {
143
+ var triggerLocalInput = function triggerLocalInput(inputRef, type) {
144
+ var inputNode = inputRef.current;
145
+ if (!inputNode) {
146
+ console.error("[InsertElementDialog] ".concat(type, " input ref is empty."));
147
+ return;
148
+ }
149
+ inputNode.click();
150
+ };
151
+ if (dialogType === _constants2.LOCAL_IMAGE) {
152
+ requestAnimationFrame(function () {
153
+ return triggerLocalInput(uploadLocalImageInputRef, _constants2.LOCAL_IMAGE);
154
+ });
155
+ }
156
+ if (dialogType === _constants2.LOCAL_VIDEO) {
157
+ requestAnimationFrame(function () {
158
+ return triggerLocalInput(uploadLocalVideoInputRef, _constants2.LOCAL_VIDEO);
159
+ });
160
+ }
161
+ }, [dialogType, localInputTriggerToken]);
138
162
  var toggleDialog = (0, _react.useCallback)(function (_ref4) {
139
163
  var type = _ref4.type,
140
164
  element = _ref4.element,
@@ -169,15 +193,10 @@ var InsertElementDialog = function InsertElementDialog(_ref) {
169
193
  // Apply for comment editor, as it has a different editor instance
170
194
  setValidEditor(paramEditor || editor);
171
195
  setData(data);
172
- if (type === _constants2.LOCAL_IMAGE) {
173
- setTimeout(function () {
174
- uploadLocalImageInputRef.current && uploadLocalImageInputRef.current.click();
175
- }, 0);
176
- }
177
- if (type === _constants2.LOCAL_VIDEO) {
178
- setTimeout(function () {
179
- uploadLocalVideoInputRef.current && uploadLocalVideoInputRef.current.click();
180
- }, 0);
196
+ if (type === _constants2.LOCAL_IMAGE || type === _constants2.LOCAL_VIDEO) {
197
+ setLocalInputTriggerToken(function (token) {
198
+ return token + 1;
199
+ });
181
200
  }
182
201
  }, [editor]);
183
202
  var closeDialog = (0, _react.useCallback)(function () {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seafile/sdoc-editor",
3
- "version": "3.0.142",
3
+ "version": "3.0.144",
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": "1d5047f6ffa08124a467858ef4d3a02ea461f713"
75
+ "gitHead": "8a8efe068fcc74e2bebe435568e142faeacd48a5"
76
76
  }