@seafile/sdoc-editor 3.0.39 → 3.0.41

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.
@@ -331,6 +331,16 @@ var SeafileAPI = /*#__PURE__*/function () {
331
331
  form.append('view_id', viewId);
332
332
  return this.req.post(url, form);
333
333
  }
334
+ }, {
335
+ key: "modifyView",
336
+ value: function modifyView(wikiId, viewId, viewData) {
337
+ var url = '/api/v2.1/wiki2/' + wikiId + '/views/';
338
+ var data = {
339
+ view_id: viewId,
340
+ view_data: viewData
341
+ };
342
+ return this.req.put(url, data);
343
+ }
334
344
  }]);
335
345
  }();
336
346
  var _default = exports["default"] = SeafileAPI;
@@ -8,13 +8,11 @@ exports["default"] = void 0;
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
  var _reactI18next = require("react-i18next");
10
10
  var _reactImageLightbox = _interopRequireDefault(require("@seafile/react-image-lightbox"));
11
- var _commonUtils = require("../../utils/common-utils");
12
11
  require("@seafile/react-image-lightbox/style.css");
13
12
  function CommentImagePreviewer(props) {
14
13
  var _useTranslation = (0, _reactI18next.useTranslation)('sdoc-editor'),
15
14
  t = _useTranslation.t;
16
15
  var mainSrc = props.imageUrl;
17
- var shortcutMain = (0, _commonUtils.isMac)() ? '⌘' : 'Ctrl';
18
16
  var imageTitle = '';
19
17
  try {
20
18
  imageTitle = mainSrc ? decodeURI(mainSrc.slice(mainSrc.lastIndexOf('/') + 1)) : '';
@@ -39,8 +37,8 @@ function CommentImagePreviewer(props) {
39
37
  reactModalProps: {
40
38
  shouldReturnFocusAfterClose: false
41
39
  },
42
- zoomInTip: t('Enlarge: {Ctrl} + Wheel').replace('{Ctrl}', shortcutMain),
43
- zoomOutTip: t('Shrink: {Ctrl} + Wheel').replace('{Ctrl}', shortcutMain)
40
+ zoomInTip: t('Zoom_in'),
41
+ zoomOutTip: t('Zoom_out')
44
42
  });
45
43
  }
46
44
  var _default = exports["default"] = CommentImagePreviewer;
package/dist/context.js CHANGED
@@ -432,6 +432,12 @@ var Context = /*#__PURE__*/function () {
432
432
  var docUuid = this.getSetting('docUuid');
433
433
  return this.api.duplicateWikiView(wikiId, docUuid, viewId);
434
434
  }
435
+ }, {
436
+ key: "modifyView",
437
+ value: function modifyView(viewId, viewData) {
438
+ var wikiId = this.getSetting('wikiId');
439
+ return this.api.modifyView(wikiId, viewId, viewData);
440
+ }
435
441
  }]);
436
442
  }();
437
443
  var context = new Context();
@@ -64,7 +64,7 @@
64
64
  height: 1.5rem;
65
65
  width: 1.5rem;
66
66
  line-height: 1.5rem !important;
67
- font-size: 12px !important;
67
+ font-size: 14px !important;
68
68
  text-align: center;
69
69
  position: absolute;
70
70
  left: 0;
@@ -6,11 +6,10 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports["default"] = void 0;
7
7
  var _slate = require("@seafile/slate");
8
8
  var _constants = require("../../constants");
9
- var _helpers = require("./helpers");
10
9
  var withFileLink = function withFileLink(editor) {
11
10
  var isInline = editor.isInline,
12
- deleteBackward = editor.deleteBackward,
13
- onHotKeyDown = editor.onHotKeyDown;
11
+ isVoid = editor.isVoid,
12
+ deleteBackward = editor.deleteBackward;
14
13
  var newEditor = editor;
15
14
 
16
15
  // Rewrite isInline
@@ -21,6 +20,13 @@ var withFileLink = function withFileLink(editor) {
21
20
  }
22
21
  return isInline(elem);
23
22
  };
23
+ newEditor.isVoid = function (elem) {
24
+ var type = elem.type;
25
+ if (type === _constants.FILE_LINK) {
26
+ return true;
27
+ }
28
+ return isVoid(elem);
29
+ };
24
30
  newEditor.deleteBackward = function (unit) {
25
31
  var selection = newEditor.selection;
26
32
  if (selection === null) {
@@ -43,24 +49,6 @@ var withFileLink = function withFileLink(editor) {
43
49
  }
44
50
  return deleteBackward(unit);
45
51
  };
46
- newEditor.onHotKeyDown = function (e) {
47
- var fileLinkEntry = (0, _helpers.getFileLinkEntry)(editor);
48
- if (fileLinkEntry) {
49
- if (e.key === 'ArrowLeft') {
50
- var beforePointFileLink = _slate.Editor.before(newEditor, fileLinkEntry[1]);
51
- _slate.Transforms.select(newEditor, beforePointFileLink);
52
- e.preventDefault();
53
- return;
54
- }
55
- if (e.key === 'ArrowRight') {
56
- var afterPointFileLink = _slate.Editor.after(newEditor, fileLinkEntry[1]);
57
- _slate.Transforms.select(newEditor, afterPointFileLink);
58
- e.preventDefault();
59
- return;
60
- }
61
- }
62
- return onHotKeyDown && onHotKeyDown(e);
63
- };
64
52
  return newEditor;
65
53
  };
66
54
  var _default = exports["default"] = withFileLink;
@@ -44,6 +44,8 @@
44
44
  height: 50px;
45
45
  width: 420px;
46
46
  margin-bottom: -3px;
47
+ margin-left: 1px;
48
+ margin-right: 1px;
47
49
  }
48
50
 
49
51
  .sdoc-file-link-render .sdoc-file-link-icon {
@@ -175,7 +175,7 @@ var FileLink = function FileLink(_ref) {
175
175
  return e.preventDefault();
176
176
  },
177
177
  title: element.title
178
- }, children))), isShowInsertHoverMenu && /*#__PURE__*/_react["default"].createElement(_hoverMenu["default"], {
178
+ }, element.title))), children, isShowInsertHoverMenu && /*#__PURE__*/_react["default"].createElement(_hoverMenu["default"], {
179
179
  editor: editor,
180
180
  menuPosition: menuPosition,
181
181
  element: element,
@@ -0,0 +1,25 @@
1
+ .sdoc-file-view-rename {
2
+ max-width: 100%;
3
+ width: 100%;
4
+ white-space: nowrap;
5
+ word-break: break-word;
6
+ caret-color: var(--c-texPri);
7
+ min-width: 0px;
8
+ flex: 1 1 0%;
9
+ overflow: auto;
10
+ font-weight: 700;
11
+ font-size: 22px;
12
+ margin-inline-end: 4px;
13
+ scrollbar-width: none;
14
+ height: 48px;
15
+ line-height: 48px;
16
+ }
17
+
18
+ .sdoc-file-view-rename input {
19
+ border-width: 0;
20
+ padding: 0;
21
+ }
22
+
23
+ .sdoc-file-view-rename input:focus-visible {
24
+ outline: none;
25
+ }
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/classCallCheck"));
9
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/createClass"));
10
+ var _callSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/callSuper"));
11
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/inherits"));
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/defineProperty"));
13
+ var _react = _interopRequireDefault(require("react"));
14
+ var _reactI18next = require("react-i18next");
15
+ var _toast = _interopRequireDefault(require("../../../../components/toast"));
16
+ var _keyCodes = _interopRequireDefault(require("../../../../constants/key-codes"));
17
+ require("./index.css");
18
+ var Rename = /*#__PURE__*/function (_React$Component) {
19
+ function Rename(props) {
20
+ var _this;
21
+ (0, _classCallCheck2["default"])(this, Rename);
22
+ _this = (0, _callSuper2["default"])(this, Rename, [props]);
23
+ (0, _defineProperty2["default"])(_this, "registerEventHandle", function () {
24
+ document.addEventListener('click', _this.onOutClick);
25
+ });
26
+ (0, _defineProperty2["default"])(_this, "onOutClick", function (event) {
27
+ if (!_this.inputRef.current.contains(event.target)) {
28
+ _this.onRenameConfirm();
29
+ document.removeEventListener('click', _this.onOutClick);
30
+ }
31
+ });
32
+ (0, _defineProperty2["default"])(_this, "onClick", function (e) {
33
+ e.stopPropagation();
34
+ e.nativeEvent.stopImmediatePropagation();
35
+ _this.registerEventHandle();
36
+ });
37
+ (0, _defineProperty2["default"])(_this, "onChange", function (e) {
38
+ _this.setState({
39
+ name: e.target.value
40
+ });
41
+ });
42
+ (0, _defineProperty2["default"])(_this, "onKeyDown", function (e) {
43
+ if (e.keyCode === _keyCodes["default"].Enter) {
44
+ _this.onRenameConfirm(e);
45
+ } else if (e.keyCode === _keyCodes["default"].Esc) {
46
+ _this.onRenameCancel(e);
47
+ }
48
+ e.nativeEvent.stopImmediatePropagation();
49
+ });
50
+ (0, _defineProperty2["default"])(_this, "onRenameConfirm", function (e) {
51
+ e && e.nativeEvent.stopImmediatePropagation();
52
+ var newName = _this.state.name.trim();
53
+ if (newName === _this.props.name) {
54
+ _this.props.onRenameCancel();
55
+ return;
56
+ }
57
+ var _this$validateInput = _this.validateInput(),
58
+ isValid = _this$validateInput.isValid,
59
+ errMessage = _this$validateInput.errMessage;
60
+ if (!isValid) {
61
+ _toast["default"].danger(errMessage);
62
+ _this.props.onRenameCancel();
63
+ } else {
64
+ _this.props.onRenameConfirm(newName);
65
+ }
66
+ });
67
+ (0, _defineProperty2["default"])(_this, "onRenameCancel", function (e) {
68
+ document.removeEventListener('click', _this.onOutClick);
69
+ e.nativeEvent.stopImmediatePropagation();
70
+ _this.props.onRenameCancel();
71
+ });
72
+ (0, _defineProperty2["default"])(_this, "validateInput", function () {
73
+ var t = _this.props.t;
74
+ var newName = _this.state.name.trim();
75
+ var isValid = true;
76
+ var errMessage = '';
77
+ if (newName.indexOf('/') > -1) {
78
+ isValid = false;
79
+ // eslint-disable-next-line no-useless-concat
80
+ errMessage = t('Name should not include ' + '\'/\'' + '.');
81
+ return {
82
+ isValid: isValid,
83
+ errMessage: errMessage
84
+ };
85
+ }
86
+ return {
87
+ isValid: isValid,
88
+ errMessage: errMessage
89
+ };
90
+ });
91
+ _this.state = {
92
+ name: props.name
93
+ };
94
+ _this.inputRef = /*#__PURE__*/_react["default"].createRef();
95
+ return _this;
96
+ }
97
+ (0, _inherits2["default"])(Rename, _React$Component);
98
+ return (0, _createClass2["default"])(Rename, [{
99
+ key: "render",
100
+ value: function render() {
101
+ return /*#__PURE__*/_react["default"].createElement("div", {
102
+ className: "sdoc-file-view-rename"
103
+ }, /*#__PURE__*/_react["default"].createElement("input", {
104
+ ref: this.inputRef,
105
+ value: this.state.name,
106
+ onChange: this.onChange,
107
+ onKeyDown: this.onKeyDown,
108
+ onClick: this.onClick
109
+ }));
110
+ }
111
+ }]);
112
+ }(_react["default"].Component);
113
+ var _default = exports["default"] = (0, _reactI18next.withTranslation)('sdoc-editor')(Rename);
@@ -6,15 +6,12 @@
6
6
 
7
7
  .sdoc-file-view-container .sdoc-file-view-title {
8
8
  position: absolute;
9
- height: 44px;
10
- line-height: 44px;
11
- top: 0px;
9
+ height: 48px;
10
+ line-height: 48px;
11
+ top: 2px;
12
12
  left: 0px;
13
13
  z-index: 10;
14
- height: 44px;
15
- line-height: 44px;
16
14
  margin-left: 16px;
17
- cursor: pointer;
18
15
  }
19
16
 
20
17
  .sdoc-file-view-container .sdoc-file-view-content {
@@ -19,6 +19,7 @@ var _commonUtils = require("../../../../utils/common-utils");
19
19
  var _localStorageUtils = _interopRequireDefault(require("../../../../utils/local-storage-utils"));
20
20
  var _constants = require("../../../constants");
21
21
  var _helpers = require("../helpers");
22
+ var _rename = _interopRequireDefault(require("../rename"));
22
23
  require("./index.css");
23
24
  var FileView = function FileView(_ref) {
24
25
  var element = _ref.element,
@@ -154,6 +155,16 @@ var FileView = function FileView(_ref) {
154
155
  }
155
156
  return null;
156
157
  }, [data]);
158
+ var onNameCancel = (0, _react.useCallback)(function () {}, []);
159
+ var onRename = (0, _react.useCallback)(function (newName) {
160
+ var newData = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, element.data), {}, {
161
+ view_name: newName
162
+ });
163
+ (0, _helpers.updateFileView)(newData, editor, element);
164
+
165
+ // TODO:
166
+ // context.modifyView(data.view_id, { view_name: newName });
167
+ }, [editor, element]);
157
168
  return /*#__PURE__*/_react["default"].createElement("div", Object.assign({
158
169
  "data-id": element.id
159
170
  }, attributes, {
@@ -162,7 +173,11 @@ var FileView = function FileView(_ref) {
162
173
  suppressContentEditableWarning: true
163
174
  }), /*#__PURE__*/_react["default"].createElement("div", {
164
175
  className: "sdoc-file-view-title"
165
- }, data.view_name), /*#__PURE__*/_react["default"].createElement("div", {
176
+ }, /*#__PURE__*/_react["default"].createElement(_rename["default"], {
177
+ name: data.view_name,
178
+ onRenameConfirm: onRename,
179
+ onRenameCancel: onNameCancel
180
+ })), /*#__PURE__*/_react["default"].createElement("div", {
166
181
  className: (0, _classnames["default"])('sdoc-file-view-content', {
167
182
  'is-selected': isSelected
168
183
  }),
@@ -13,7 +13,6 @@ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/inhe
13
13
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/defineProperty"));
14
14
  var _react = _interopRequireDefault(require("react"));
15
15
  var _reactImageLightbox = _interopRequireDefault(require("@seafile/react-image-lightbox"));
16
- var _commonUtils = require("../../../../utils/common-utils");
17
16
  var _helpers = require("../helpers");
18
17
  require("@seafile/react-image-lightbox/style.css");
19
18
  var ImagePreviewer = /*#__PURE__*/function (_React$Component) {
@@ -74,7 +73,6 @@ var ImagePreviewer = /*#__PURE__*/function (_React$Component) {
74
73
  var imageIndex = this.state.imageIndex;
75
74
  var imageItemsLength = this.images.length;
76
75
  var mainSrc = this.images[imageIndex] || '';
77
- var shortcutMain = (0, _commonUtils.isMac)() ? '⌘' : 'Ctrl';
78
76
  var imageTitle = '';
79
77
  try {
80
78
  imageTitle = mainSrc ? decodeURI(mainSrc.slice(mainSrc.lastIndexOf('/') + 1)) : '';
@@ -107,8 +105,8 @@ var ImagePreviewer = /*#__PURE__*/function (_React$Component) {
107
105
  reactModalProps: {
108
106
  shouldReturnFocusAfterClose: false
109
107
  },
110
- zoomInTip: this.props.t('Enlarge: {Ctrl} + Wheel').replace('{Ctrl}', shortcutMain),
111
- zoomOutTip: this.props.t('Shrink: {Ctrl} + Wheel').replace('{Ctrl}', shortcutMain)
108
+ zoomInTip: this.props.t('Zoom_in'),
109
+ zoomOutTip: this.props.t('Zoom_out')
112
110
  });
113
111
  }
114
112
  }]);
@@ -12,10 +12,10 @@ var _core = require("../../core");
12
12
  var _helpers = require("./helpers");
13
13
  var withSdocLink = function withSdocLink(editor) {
14
14
  var isInline = editor.isInline,
15
+ isVoid = editor.isVoid,
15
16
  deleteBackward = editor.deleteBackward,
16
17
  insertText = editor.insertText,
17
- onCompositionStart = editor.onCompositionStart,
18
- onHotKeyDown = editor.onHotKeyDown;
18
+ onCompositionStart = editor.onCompositionStart;
19
19
  var newEditor = editor;
20
20
 
21
21
  // Rewrite isInline
@@ -25,6 +25,13 @@ var withSdocLink = function withSdocLink(editor) {
25
25
  if (isInlineElem) return true;
26
26
  return isInline(elem);
27
27
  };
28
+ newEditor.isVoid = function (elem) {
29
+ var type = elem.type;
30
+ if (type === _constants.SDOC_LINK) {
31
+ return true;
32
+ }
33
+ return isVoid(elem);
34
+ };
28
35
  newEditor.deleteBackward = function (unit) {
29
36
  var selection = newEditor.selection;
30
37
  if (selection === null) {
@@ -75,24 +82,6 @@ var withSdocLink = function withSdocLink(editor) {
75
82
  }
76
83
  return onCompositionStart && onCompositionStart(event);
77
84
  };
78
- newEditor.onHotKeyDown = function (e) {
79
- var sdocLinkEntry = (0, _helpers.getSdocLinkEntry)(editor);
80
- if (sdocLinkEntry) {
81
- if (e.key === 'ArrowLeft') {
82
- var beforePointSdocLink = _slate.Editor.before(newEditor, sdocLinkEntry[1]);
83
- _slate.Transforms.select(newEditor, beforePointSdocLink);
84
- e.preventDefault();
85
- return;
86
- }
87
- if (e.key === 'ArrowRight') {
88
- var afterPointSdocLink = _slate.Editor.after(newEditor, sdocLinkEntry[1]);
89
- _slate.Transforms.select(newEditor, afterPointSdocLink);
90
- e.preventDefault();
91
- return;
92
- }
93
- }
94
- return onHotKeyDown && onHotKeyDown(e);
95
- };
96
85
  return newEditor;
97
86
  };
98
87
  var _default = exports["default"] = withSdocLink;
@@ -27,6 +27,8 @@
27
27
  height: 50px;
28
28
  width: 420px;
29
29
  margin-bottom: -3px;
30
+ margin-left: 1px;
31
+ margin-right: 1px;
30
32
  }
31
33
 
32
34
  .sdoc-file-render .sdoc-file-link-icon {
@@ -210,7 +210,7 @@ var SdocFileLink = function SdocFileLink(_ref) {
210
210
  return e.preventDefault();
211
211
  },
212
212
  title: element.title
213
- }, children))), isShowInsertHoverMenu && !readOnly && editor.selection && _slate.Range.isCollapsed(editor.selection) && /*#__PURE__*/_react["default"].createElement(_hoverMenu["default"], {
213
+ }, element.title))), children, isShowInsertHoverMenu && !readOnly && editor.selection && _slate.Range.isCollapsed(editor.selection) && /*#__PURE__*/_react["default"].createElement(_hoverMenu["default"], {
214
214
  url: url,
215
215
  editor: editor,
216
216
  menuPosition: menuPosition,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seafile/sdoc-editor",
3
- "version": "3.0.39",
3
+ "version": "3.0.41",
4
4
  "main": "dist/index.js",
5
5
  "scripts": {
6
6
  "test": "jest",
@@ -17,7 +17,7 @@
17
17
  "license": "ISC",
18
18
  "description": "",
19
19
  "dependencies": {
20
- "@seafile/comment-editor": "1.0.3",
20
+ "@seafile/comment-editor": "1.0.4",
21
21
  "@seafile/print-js": "1.6.6",
22
22
  "@seafile/react-image-lightbox": "^5.0.2",
23
23
  "@seafile/seafile-database": "0.0.15",
@@ -72,5 +72,5 @@
72
72
  "publishConfig": {
73
73
  "access": "public"
74
74
  },
75
- "gitHead": "8d184c224586d5b7a253f40d2fa2c680f8c46d53"
75
+ "gitHead": "e47bfe980bb14bcaa00618ba2f4155b2492992c4"
76
76
  }