@seafile/sdoc-editor 2.0.89 → 2.0.92

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.
@@ -158,3 +158,24 @@
158
158
  border-right: none;
159
159
  padding-left: 0 !important;
160
160
  }
161
+
162
+ .sdoc-editor-container.mobile .sdoc-editor-toolbar {
163
+ justify-content: space-evenly;
164
+ }
165
+
166
+ .sdoc-editor-container.mobile .sdoc-editor-toolbar .sdoc-editor-toolbar-right-menu {
167
+ bottom: 1px;
168
+ }
169
+
170
+ .sdoc-editor-container.mobile .sdoc-editor-content {
171
+ min-width: 100%;
172
+ }
173
+
174
+ .mobile .sdoc-article-container {
175
+ width: 100% !important;
176
+ }
177
+
178
+ .sdoc-editor-container.mobile .sdoc-article-container {
179
+ padding-top: 0;
180
+ padding-bottom: 0;
181
+ }
@@ -8,6 +8,11 @@
8
8
  font-size: 11pt;
9
9
  }
10
10
 
11
+ .mobile .sdoc-editor__article {
12
+ padding: 1rem;
13
+ border: 0px solid #e5e6e8;
14
+ }
15
+
11
16
  .sdoc-editor__article>div {
12
17
  caret-color: blue;
13
18
  }
@@ -23,6 +23,7 @@ var _highlight = require("../highlight");
23
23
  var _useForceUpdate = _interopRequireDefault(require("../hooks/use-force-update"));
24
24
  var _useScrollContext = require("../hooks/use-scroll-context");
25
25
  var _layout = require("../layout");
26
+ var _commonUtils = require("../utils/common-utils");
26
27
  var _domUtils = require("../utils/dom-utils");
27
28
  var _eventBus = _interopRequireDefault(require("../utils/event-bus"));
28
29
  var _eventHandler = _interopRequireDefault(require("../utils/event-handler"));
@@ -195,6 +196,11 @@ var EditableArticle = function EditableArticle(_ref) {
195
196
 
196
197
  // eslint-disable-next-line react-hooks/exhaustive-deps
197
198
  }, [scrollRef]);
199
+ var onCompositionEnd = (0, _react.useCallback)(function (event) {
200
+ if (event.data && _commonUtils.isMobile) {
201
+ editor.insertText(event.data);
202
+ }
203
+ }, []);
198
204
  var handleScrollIntoView = (0, _react.useCallback)(function (editor, domRange) {
199
205
  try {
200
206
  var selection = editor.selection;
@@ -224,7 +230,7 @@ var EditableArticle = function EditableArticle(_ref) {
224
230
  onChange: updateSlateValue
225
231
  }, /*#__PURE__*/_react["default"].createElement(_layout.ArticleContainer, {
226
232
  editor: editor
227
- }, /*#__PURE__*/_react["default"].createElement(_react.Fragment, null, /*#__PURE__*/_react["default"].createElement(_extension.ContextToolbar, null), /*#__PURE__*/_react["default"].createElement(_highlight.SetNodeToDecorations, null), /*#__PURE__*/_react["default"].createElement(_slateReact.Editable, {
233
+ }, /*#__PURE__*/_react["default"].createElement(_react.Fragment, null, !_commonUtils.isMobile && /*#__PURE__*/_react["default"].createElement(_extension.ContextToolbar, null), /*#__PURE__*/_react["default"].createElement(_highlight.SetNodeToDecorations, null), /*#__PURE__*/_react["default"].createElement(_slateReact.Editable, {
228
234
  scrollSelectionIntoView: handleScrollIntoView,
229
235
  cursors: cursors,
230
236
  renderElement: _extension.renderElement,
@@ -235,6 +241,7 @@ var EditableArticle = function EditableArticle(_ref) {
235
241
  onCut: eventProxy.onCut,
236
242
  onCopy: eventProxy.onCopy,
237
243
  onCompositionStart: eventProxy.onCompositionStart,
244
+ onCompositionEnd: onCompositionEnd,
238
245
  id: "sdoc-editor",
239
246
  "aria-label": "textbox"
240
247
  })), /*#__PURE__*/_react["default"].createElement(_extension.SideToolbar, null), showComment && /*#__PURE__*/_react["default"].createElement(_comment["default"], {
@@ -62,6 +62,10 @@ var SdocEditor = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
62
62
  _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
63
63
  slateValue = _useState4[0],
64
64
  _setSlateValue = _useState4[1];
65
+ var _useState5 = (0, _react.useState)(false),
66
+ _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
67
+ isEdit = _useState6[0],
68
+ setIsEdit = _useState6[1];
65
69
 
66
70
  // Fix: The editor's children are not updated when the document is updated in revision
67
71
  // In revision mode, the document is updated, but the editor's children are not updated,as onValueChange override the new document.elements. This unexpected action cause the editor to display the old content
@@ -159,6 +163,17 @@ var SdocEditor = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
159
163
  unsubscribePresentationFullScreen();
160
164
  };
161
165
  }, [handleFullScreenPresentation]);
166
+ var handleEditToggle = (0, _react.useCallback)(function (_ref3) {
167
+ var isEdit = _ref3.isEdit;
168
+ setIsEdit(isEdit);
169
+ }, []);
170
+ (0, _react.useEffect)(function () {
171
+ var eventBus = _eventBus["default"].getInstance();
172
+ var unsubscribeViewOrEdit = eventBus.subscribe('ViewOrEdit', handleEditToggle);
173
+ return function () {
174
+ unsubscribeViewOrEdit();
175
+ };
176
+ }, [handleEditToggle]);
162
177
  (0, _react.useEffect)(function () {
163
178
  var handleExit = function handleExit(e) {
164
179
  if ((0, _isHotkey["default"])('esc', e)) {
@@ -220,7 +235,7 @@ var SdocEditor = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
220
235
  className: "h-100 w-100 d-flex align-items-center justify-content-center"
221
236
  }, /*#__PURE__*/_react["default"].createElement(_fileLoading["default"], null));
222
237
  }
223
- if (_commonUtils.isMobile || showFullScreen) {
238
+ if (_commonUtils.isMobile && !isEdit || showFullScreen) {
224
239
  return /*#__PURE__*/_react["default"].createElement(_layout.EditorContainer, {
225
240
  editor: validEditor,
226
241
  readonly: true,
@@ -257,6 +272,25 @@ var SdocEditor = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
257
272
  }))));
258
273
  }
259
274
  var isShowComment = typeof showComment === 'boolean' ? showComment : true;
275
+ if (_commonUtils.isMobile && isEdit) {
276
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_layout.EditorContainer, {
277
+ editor: validEditor
278
+ }, /*#__PURE__*/_react["default"].createElement(_useColorContext.ColorProvider, null, /*#__PURE__*/_react["default"].createElement(_layout.EditorContent, {
279
+ docValue: slateValue,
280
+ showOutline: false,
281
+ editor: validEditor,
282
+ showComment: false
283
+ }, /*#__PURE__*/_react["default"].createElement(_editableArticle["default"], {
284
+ editor: validEditor,
285
+ slateValue: slateValue,
286
+ updateSlateValue: onValueChange,
287
+ showComment: false
288
+ })), isShowHeaderToolbar && /*#__PURE__*/_react["default"].createElement(_extension.HeaderToolbar, {
289
+ editor: validEditor
290
+ }))), /*#__PURE__*/_react["default"].createElement(_insertElementDialog["default"], {
291
+ editor: validEditor
292
+ }));
293
+ }
260
294
  return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_layout.EditorContainer, {
261
295
  editor: validEditor
262
296
  }, /*#__PURE__*/_react["default"].createElement(_useColorContext.ColorProvider, null, isShowHeaderToolbar && /*#__PURE__*/_react["default"].createElement(_extension.HeaderToolbar, {
@@ -80,3 +80,7 @@
80
80
  font-size: 12px;
81
81
  color: #999;
82
82
  }
83
+
84
+ .menu-group:last-child {
85
+ border-right: none;
86
+ }
@@ -122,7 +122,9 @@ var HeaderMenu = /*#__PURE__*/function (_React$Component) {
122
122
  className: headerIconClass
123
123
  })), isShowHeaderPopover && /*#__PURE__*/_react["default"].createElement("div", {
124
124
  ref: this.setMenuRef,
125
- className: "header-popover sdoc-dropdown-menu"
125
+ className: (0, _classnames["default"])('header-popover sdoc-dropdown-menu', {
126
+ 'sdoc-dropdown-menu-mobile': _commonUtils.isMobile
127
+ })
126
128
  }, itemList.map(function (item, index) {
127
129
  if (item === 'divider') {
128
130
  return /*#__PURE__*/_react["default"].createElement("div", {
@@ -65,6 +65,11 @@
65
65
  z-index: 101;
66
66
  }
67
67
 
68
+ .header-menu .sdoc-dropdown-menu-mobile {
69
+ top: auto;
70
+ bottom: 100%;
71
+ }
72
+
68
73
  .header-menu .header-popover .sdoc-dropdown-menu-item {
69
74
  font-size: 14px;
70
75
  height: auto;
@@ -77,7 +77,7 @@ var withTable = function withTable(editor) {
77
77
  newEditor.insertBreak = function () {
78
78
  var selectedNode = (0, _core.getSelectedNodeByType)(newEditor, _constants2.ELEMENT_TYPE.TABLE);
79
79
  if (selectedNode != null) {
80
- newEditor.insertText('\n'); // If table is selected, wrap in cell
80
+ newEditor.insertText("\n\uFEFF"); // If table is selected, wrap in cell
81
81
  return;
82
82
  }
83
83
  insertBreak();
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports["default"] = void 0;
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
  var _useSelectionUpdate = _interopRequireDefault(require("../../../hooks/use-selection-update"));
10
+ var _commonUtils = require("../../../utils/common-utils");
10
11
  var _commons = require("../../commons");
11
12
  var _constants = require("../../constants");
12
13
  var _core = require("../../core");
@@ -28,6 +29,30 @@ var HeaderToolbar = function HeaderToolbar(_ref) {
28
29
  readonly = _ref$readonly === void 0 ? false : _ref$readonly;
29
30
  (0, _useSelectionUpdate["default"])();
30
31
  var isSelectTableCell = (0, _core.getSelectedNodeByType)(editor, _constants.TABLE_CELL);
32
+ if (_commonUtils.isMobile) {
33
+ return /*#__PURE__*/_react["default"].createElement("div", {
34
+ className: "sdoc-editor-toolbar"
35
+ }, /*#__PURE__*/_react["default"].createElement(_commons.MenuGroup, null, /*#__PURE__*/_react["default"].createElement(_historyMenu["default"], {
36
+ editor: editor,
37
+ readonly: readonly
38
+ })), /*#__PURE__*/_react["default"].createElement(_menu6["default"], {
39
+ editor: editor,
40
+ readonly: readonly
41
+ }), !isSelectTableCell && /*#__PURE__*/_react["default"].createElement(_commons.MenuGroup, null, /*#__PURE__*/_react["default"].createElement(_menu7["default"], {
42
+ editor: editor,
43
+ type: _constants.UNORDERED_LIST,
44
+ readonly: readonly,
45
+ ariaLabel: "unordered list"
46
+ }), /*#__PURE__*/_react["default"].createElement(_menu7["default"], {
47
+ editor: editor,
48
+ type: _constants.ORDERED_LIST,
49
+ readonly: readonly,
50
+ ariaLabel: "ordered list"
51
+ }), /*#__PURE__*/_react["default"].createElement(_menu3["default"], {
52
+ editor: editor,
53
+ readonly: readonly
54
+ })));
55
+ }
31
56
  return /*#__PURE__*/_react["default"].createElement("div", {
32
57
  className: "sdoc-editor-toolbar"
33
58
  }, /*#__PURE__*/_react["default"].createElement(_commons.MenuGroup, null, /*#__PURE__*/_react["default"].createElement(_historyMenu["default"], {
@@ -15,6 +15,7 @@ var _reactstrap = require("reactstrap");
15
15
  var _slate = require("@seafile/slate");
16
16
  var _slateReact = require("@seafile/slate-react");
17
17
  var _constants = require("../../../constants");
18
+ var _commonUtils = require("../../../utils/common-utils");
18
19
  var _eventBus = _interopRequireDefault(require("../../../utils/event-bus"));
19
20
  var _dropdownMenuItem = _interopRequireDefault(require("../../commons/dropdown-menu-item"));
20
21
  var _constants2 = require("../../constants");
@@ -263,6 +264,36 @@ var QuickInsertBlockMenu = function QuickInsertBlockMenu(_ref) {
263
264
  return onInsert(_constants2.ELEMENT_TYPE.PARAGRAPH);
264
265
  }
265
266
  }));
267
+ if (_commonUtils.isMobile) {
268
+ items = (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, _constants2.UNORDERED_LIST, /*#__PURE__*/_react["default"].createElement(_dropdownMenuItem["default"], {
269
+ isHidden: !quickInsertMenuSearchMap[_constants2.UNORDERED_LIST],
270
+ key: "sdoc-insert-menu-unorder-list",
271
+ menuConfig: (0, _objectSpread2["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.UNORDERED_LIST]),
272
+ onClick: function onClick() {
273
+ onInsertList(_constants2.ELEMENT_TYPE.UNORDERED_LIST);
274
+ }
275
+ })), _constants2.ORDERED_LIST, /*#__PURE__*/_react["default"].createElement(_dropdownMenuItem["default"], {
276
+ isHidden: !quickInsertMenuSearchMap[_constants2.ORDERED_LIST],
277
+ key: "sdoc-insert-menu-order-list",
278
+ menuConfig: (0, _objectSpread2["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.ORDERED_LIST]),
279
+ onClick: function onClick() {
280
+ onInsertList(_constants2.ELEMENT_TYPE.ORDERED_LIST);
281
+ }
282
+ })), _constants2.CHECK_LIST_ITEM, /*#__PURE__*/_react["default"].createElement(_dropdownMenuItem["default"], {
283
+ isHidden: !quickInsertMenuSearchMap[_constants2.CHECK_LIST_ITEM],
284
+ key: "sdoc-insert-menu-check-list",
285
+ menuConfig: (0, _objectSpread2["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.CHECK_LIST_ITEM]),
286
+ onClick: onInsertCheckList
287
+ })), _constants2.PARAGRAPH, /*#__PURE__*/_react["default"].createElement(_dropdownMenuItem["default"], {
288
+ isHidden: !quickInsertMenuSearchMap[_constants2.PARAGRAPH],
289
+ disabled: isEmptyNode,
290
+ key: "sdoc-insert-menu-paragraph",
291
+ menuConfig: (0, _objectSpread2["default"])({}, _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.PARAGRAPH]),
292
+ onClick: function onClick() {
293
+ return onInsert(_constants2.ELEMENT_TYPE.PARAGRAPH);
294
+ }
295
+ }));
296
+ }
266
297
  _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.HEADER].forEach(function (item) {
267
298
  items[item.id.toLowerCase()] = /*#__PURE__*/_react["default"].createElement(_dropdownMenuItem["default"], {
268
299
  isHidden: !quickInsertMenuSearchMap[item.type],
@@ -273,7 +304,7 @@ var QuickInsertBlockMenu = function QuickInsertBlockMenu(_ref) {
273
304
  }
274
305
  });
275
306
  });
276
- _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.MULTI_COLUMN].forEach(function (item) {
307
+ !_commonUtils.isMobile && _constants2.SIDE_INSERT_MENUS_CONFIG[_constants2.ELEMENT_TYPE.MULTI_COLUMN].forEach(function (item) {
277
308
  items[item.id.toLowerCase()] = /*#__PURE__*/_react["default"].createElement(_dropdownMenuItem["default"], {
278
309
  isHidden: !quickInsertMenuSearchMap[item.type],
279
310
  disabled: isDisableMultiColumn,
@@ -15,6 +15,7 @@ var _slateReact = require("@seafile/slate-react");
15
15
  var _classnames = _interopRequireDefault(require("classnames"));
16
16
  var _constants = require("../../../constants");
17
17
  var _useScrollContext = require("../../../hooks/use-scroll-context");
18
+ var _commonUtils = require("../../../utils/common-utils");
18
19
  var _eventBus = _interopRequireDefault(require("../../../utils/event-bus"));
19
20
  var _constants2 = require("../../constants");
20
21
  var _core = require("../../core");
@@ -578,7 +579,7 @@ var SideToolbar = function SideToolbar() {
578
579
  var onMouseLeave = (0, _react.useCallback)(function () {
579
580
  setIsEnterMoreVertical(false);
580
581
  }, []);
581
- return /*#__PURE__*/_react["default"].createElement("div", {
582
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, !_commonUtils.isMobile && /*#__PURE__*/_react["default"].createElement("div", {
582
583
  onAnimationEnd: function onAnimationEnd() {
583
584
  return setIsMoving(false);
584
585
  },
@@ -607,6 +608,6 @@ var SideToolbar = function SideToolbar() {
607
608
  menuPosition: menuPosition,
608
609
  onReset: onReset,
609
610
  ref: sideMenuRef
610
- }));
611
+ })));
611
612
  };
612
613
  var _default = exports["default"] = SideToolbar;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seafile/sdoc-editor",
3
- "version": "2.0.89",
3
+ "version": "2.0.92",
4
4
  "main": "dist/index.js",
5
5
  "scripts": {
6
6
  "test": "jest",
@@ -70,5 +70,5 @@
70
70
  "publishConfig": {
71
71
  "access": "public"
72
72
  },
73
- "gitHead": "e9eb8bd2f2c9b1ba5219ae8f7a1af64907040f73"
73
+ "gitHead": "e0c4a3fff287103bb06ee2917670277fdcaee406"
74
74
  }