@seafile/sdoc-editor 3.0.143 → 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
29
  return true;
29
30
  }
30
- if (type === _constants.UNDO) {
31
+ if (type === _constants2.UNDO) {
31
32
  editor.undo();
32
33
  return true;
33
34
  }
34
- if (type === _constants.REDO) {
35
+ if (type === _constants2.REDO) {
35
36
  editor.redo();
36
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
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
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
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,
@@ -149,7 +173,6 @@ var InsertElementDialog = function InsertElementDialog(_ref) {
149
173
  linkTitle = _ref4.linkTitle,
150
174
  handleSubmit = _ref4.handleSubmit,
151
175
  data = _ref4.data;
152
- console.log('android test: xiaoqiang test');
153
176
  setInsertPosition(insertPosition);
154
177
  setSlateNode(slateNode);
155
178
  setElement(element);
@@ -170,16 +193,10 @@ var InsertElementDialog = function InsertElementDialog(_ref) {
170
193
  // Apply for comment editor, as it has a different editor instance
171
194
  setValidEditor(paramEditor || editor);
172
195
  setData(data);
173
- if (type === _constants2.LOCAL_IMAGE) {
174
- setTimeout(function () {
175
- console.log('android test: xiaoqiang test 2');
176
- uploadLocalImageInputRef.current && uploadLocalImageInputRef.current.click();
177
- }, 0);
178
- }
179
- if (type === _constants2.LOCAL_VIDEO) {
180
- setTimeout(function () {
181
- uploadLocalVideoInputRef.current && uploadLocalVideoInputRef.current.click();
182
- }, 0);
196
+ if (type === _constants2.LOCAL_IMAGE || type === _constants2.LOCAL_VIDEO) {
197
+ setLocalInputTriggerToken(function (token) {
198
+ return token + 1;
199
+ });
183
200
  }
184
201
  }, [editor]);
185
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.143",
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": "3fc6a2d8bb580c05385814d3d96bd7bcd1136f40"
75
+ "gitHead": "8a8efe068fcc74e2bebe435568e142faeacd48a5"
76
76
  }