@seafile/sdoc-editor 3.0.143 → 3.0.145

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,18 +5,19 @@ 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
8
  var _constants = require("../extension/constants");
10
9
  var _core = require("../extension/core");
11
10
  var _helpers = require("../extension/plugins/check-list/helpers");
12
11
  var _helpers2 = require("../extension/plugins/header/helpers");
13
- var _helpers3 = require("../extension/plugins/list/helpers");
14
- var _eventBus = _interopRequireDefault(require("../utils/event-bus"));
12
+ var _helpers3 = require("../extension/plugins/image/helpers");
13
+ var _helpers4 = require("../extension/plugins/list/helpers");
15
14
  var _constants2 = require("./constants");
16
15
  var _jsBridge = _interopRequireDefault(require("./js-bridge"));
17
16
  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];
18
17
  var onToolbarTrigger = function onToolbarTrigger(data, editor) {
19
- var type = data.type;
18
+ var _ref = data || {},
19
+ type = _ref.type,
20
+ images = _ref.images;
20
21
  if (headerTypes.includes(type)) {
21
22
  var nodeEntry = (0, _core.getNearestBlockNode)(editor);
22
23
  if (!nodeEntry) return;
@@ -36,7 +37,7 @@ var onToolbarTrigger = function onToolbarTrigger(data, editor) {
36
37
  return true;
37
38
  }
38
39
  if (type === _constants.UNORDERED_LIST || type === _constants.ORDERED_LIST) {
39
- (0, _helpers3.setListType)(editor, type);
40
+ (0, _helpers4.setListType)(editor, type);
40
41
  return true;
41
42
  }
42
43
  if (type === _constants.CHECK_LIST_ITEM) {
@@ -50,13 +51,13 @@ var onToolbarTrigger = function onToolbarTrigger(data, editor) {
50
51
  return true;
51
52
  }
52
53
  if (type === _constants.LOCAL_IMAGE) {
53
- var eventBus = _eventBus["default"].getInstance();
54
- eventBus.dispatch(_basicSdk.INTERNAL_EVENT.INSERT_ELEMENT, {
55
- type: _constants.LOCAL_IMAGE,
56
- editor: editor
57
- });
54
+ if (!images || !Array.isArray(images) || images.length === 0) {
55
+ return true;
56
+ }
57
+ (0, _helpers3.insertImage)(editor, images, editor.selection);
58
58
  return true;
59
59
  }
60
+ return false;
60
61
  };
61
62
  var updateEditorHistory = exports.updateEditorHistory = function updateEditorHistory(editor) {
62
63
  if (!window.seadroid) {
@@ -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.145",
4
4
  "main": "dist/index.js",
5
5
  "scripts": {
6
6
  "test": "jest",
@@ -20,7 +20,7 @@
20
20
  "@seafile/comment-editor": "1.0.24",
21
21
  "@seafile/print-js": "1.6.6",
22
22
  "@seafile/react-image-lightbox": "5.0.4",
23
- "@seafile/seafile-database": "0.0.51",
23
+ "@seafile/seafile-database": "0.0.52",
24
24
  "@seafile/slate": "0.91.8",
25
25
  "@seafile/slate-history": "0.86.2",
26
26
  "@seafile/slate-hyperscript": "0.81.7",
@@ -72,5 +72,5 @@
72
72
  "publishConfig": {
73
73
  "access": "public"
74
74
  },
75
- "gitHead": "3fc6a2d8bb580c05385814d3d96bd7bcd1136f40"
75
+ "gitHead": "37c339298a9de9edcdbbd757b376f12caa6df0a3"
76
76
  }