@seafile/seafile-editor 3.0.39 → 3.0.40-beta

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.
@@ -14,6 +14,7 @@ var _useScrollContext = require("../../hooks/use-scroll-context");
14
14
  var _constants = require("../../constants");
15
15
  var _eventBus = _interopRequireDefault(require("../../utils/event-bus"));
16
16
  var _eventTypes = require("../../constants/event-types");
17
+ var _tooltip = _interopRequireDefault(require("../../extension/commons/tooltip"));
17
18
  require("./style.css");
18
19
  const getOutlineSetting = () => {
19
20
  const currentValue = localStorage.getItem('sf-editor');
@@ -95,9 +96,12 @@ const Outline = _ref => {
95
96
  }, /*#__PURE__*/_react.default.createElement("h2", {
96
97
  className: "sf-editor-outline-header_title"
97
98
  }, t('Outline')), /*#__PURE__*/_react.default.createElement("span", {
99
+ id: "sf-editor-outline-header-close",
98
100
  className: "sf-editor-outline-header_close mdfont md-sm-close",
99
101
  onClick: toggleShow
100
- })), headerList.length === 0 ? /*#__PURE__*/_react.default.createElement("div", {
102
+ }), /*#__PURE__*/_react.default.createElement(_tooltip.default, {
103
+ target: "sf-editor-outline-header-close"
104
+ }, t('Close'))), headerList.length === 0 ? /*#__PURE__*/_react.default.createElement("div", {
101
105
  className: "empty-container"
102
106
  }, t('No_outline')) : /*#__PURE__*/_react.default.createElement("div", {
103
107
  className: "sf-editor-outline-list-container"
@@ -41,10 +41,16 @@
41
41
  .sf-editor-outline-header_close {
42
42
  cursor: pointer;
43
43
  font-size: 14px;
44
+ width: 24px;
45
+ height: 24px;
46
+ line-height: 24px;
47
+ text-align: center;
48
+ color: #666;
44
49
  }
45
50
 
46
51
  .sf-editor-outline-header_close:hover {
47
- color: #666;
52
+ background-color: #EFEFEF;
53
+ border-radius: 2px;
48
54
  }
49
55
 
50
56
  .sf-editor-outline-list-container {
@@ -24,7 +24,8 @@ function SlateViewer(_ref) {
24
24
  isShowOutline,
25
25
  scrollRef: externalScrollRef,
26
26
  onLinkClick,
27
- options
27
+ options,
28
+ server
28
29
  } = _ref;
29
30
  const scrollRef = (0, _react.useRef)(null);
30
31
  const {
@@ -76,6 +77,7 @@ function SlateViewer(_ref) {
76
77
  readOnly: true,
77
78
  decorate: decorate,
78
79
  renderElement: props => (0, _extension.renderElement)((0, _objectSpread2.default)({
80
+ server,
79
81
  options
80
82
  }, props)),
81
83
  renderLeaf: _extension.renderLeaf
@@ -14,7 +14,8 @@
14
14
  padding: 4px 8px;
15
15
  line-height: 20px;
16
16
  font-weight: normal;
17
- background-color: #303133;
17
+ background-color: #212529;
18
+ color: #fff;
18
19
  }
19
20
 
20
21
  .sf-tooltip.bs-tooltip-auto[data-popper-placement^="top"] {
@@ -26,6 +26,7 @@ const HeaderMenu = _ref => {
26
26
  } = _ref;
27
27
  const [isShowHeaderPopover, setIsShowHeaderPopover] = (0, _react.useState)(false);
28
28
  const headerPopoverRef = (0, _react.useRef)();
29
+ const headerToggleRef = (0, _react.useRef)();
29
30
  const {
30
31
  t
31
32
  } = (0, _reactI18next.useTranslation)(_constants2.TRANSLATE_NAMESPACE);
@@ -43,6 +44,9 @@ const HeaderMenu = _ref => {
43
44
  const menu = headerPopoverRef.current;
44
45
  const clickIsInMenu = menu && menu.contains(e.target) && menu !== e.target;
45
46
  if (clickIsInMenu) return;
47
+
48
+ // in header toggle
49
+ if (headerToggleRef && headerPopoverRef.contains(e.target)) return;
46
50
  setIsShowHeaderPopover(false);
47
51
  unregisterEventHandler();
48
52
  // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -78,6 +82,7 @@ const HeaderMenu = _ref => {
78
82
  'header-toggle-disabled': isDisabled
79
83
  })
80
84
  }, /*#__PURE__*/_react.default.createElement("div", {
85
+ ref: headerToggleRef,
81
86
  className: (0, _classnames.default)('sf-header-toggle', {
82
87
  'header-toggle-disabled': isDisabled,
83
88
  'header-popover-showed': isShowHeaderPopover
@@ -18,11 +18,12 @@ require("./style.css");
18
18
  /* eslint-disable react-hooks/rules-of-hooks */
19
19
 
20
20
  const renderImage = (_ref, editor) => {
21
- var _element$data, _element$data2, _element$data3, _element$data4;
21
+ var _element$data, _element$data3;
22
22
  let {
23
23
  attributes,
24
24
  children,
25
- element
25
+ element,
26
+ server
26
27
  } = _ref;
27
28
  const [isLoadingImage, setIsLoadingImage] = (0, _react.useState)(element === null || element === void 0 ? void 0 : (_element$data = element.data) === null || _element$data === void 0 ? void 0 : _element$data.init);
28
29
  const [isError, setIsError] = (0, _react.useState)(false);
@@ -38,6 +39,14 @@ const renderImage = (_ref, editor) => {
38
39
  const imgRef = (0, _react.useRef)(null);
39
40
  const resizerRef = (0, _react.useRef)();
40
41
  const isSelected = (0, _slateReact.useSelected)();
42
+ const imageSrc = (0, _react.useMemo)(() => {
43
+ var _element$data2;
44
+ let src = element === null || element === void 0 ? void 0 : (_element$data2 = element.data) === null || _element$data2 === void 0 ? void 0 : _element$data2.src;
45
+ if (server && src.startsWith('/')) {
46
+ src = (server.endsWith('/') ? server.slice(0, -1) : server) + src;
47
+ }
48
+ return src;
49
+ }, [server, element]);
41
50
  (0, _react.useEffect)(() => {
42
51
  const {
43
52
  data = {}
@@ -112,8 +121,8 @@ const renderImage = (_ref, editor) => {
112
121
  'selected': isSelected,
113
122
  'error': isError
114
123
  }),
115
- alt: (element === null || element === void 0 ? void 0 : (_element$data2 = element.data) === null || _element$data2 === void 0 ? void 0 : _element$data2.alt) || ' ' + t('Image_loading_failed'),
116
- src: element === null || element === void 0 ? void 0 : (_element$data3 = element.data) === null || _element$data3 === void 0 ? void 0 : _element$data3.src,
124
+ alt: (element === null || element === void 0 ? void 0 : (_element$data3 = element.data) === null || _element$data3 === void 0 ? void 0 : _element$data3.alt) || ' ' + t('Image_loading_failed'),
125
+ src: imageSrc,
117
126
  width: element === null || element === void 0 ? void 0 : element.data.width,
118
127
  height: element === null || element === void 0 ? void 0 : element.data.height
119
128
  }), isSelected && !isLoadingImage && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("span", {
@@ -130,7 +139,7 @@ const renderImage = (_ref, editor) => {
130
139
  }))), isResizing && /*#__PURE__*/_react.default.createElement("span", {
131
140
  className: "image-size-info-tooltip"
132
141
  }, "".concat(t('Width'), ":").concat(imgSizeInfo.width, " ").concat(t('Height'), ":").concat(imgSizeInfo.height)), isFullScreening && /*#__PURE__*/_react.default.createElement(_imagePreviewer.default, {
133
- imgUrl: element === null || element === void 0 ? void 0 : (_element$data4 = element.data) === null || _element$data4 === void 0 ? void 0 : _element$data4.src,
142
+ imgUrl: imageSrc,
134
143
  toggleImagePreviewer: toggleImagePreviewer
135
144
  }), children);
136
145
  };
@@ -82,7 +82,7 @@ const InsertToolbar = _ref => {
82
82
  className: "sf-menu-with-dropdown-triangle"
83
83
  }, /*#__PURE__*/_react.default.createElement("span", {
84
84
  className: caretIconClass
85
- }))), /*#__PURE__*/_react.default.createElement(_tooltip.default, {
85
+ }))), !isShowMenu && /*#__PURE__*/_react.default.createElement(_tooltip.default, {
86
86
  target: insertToolbarId
87
87
  }, t('Insert')), !disabled && /*#__PURE__*/_react.default.createElement(_reactstrap.UncontrolledPopover, {
88
88
  target: insertToolbarId,
@@ -32,6 +32,7 @@ function MarkdownViewer(_ref) {
32
32
  let {
33
33
  isFetching,
34
34
  isShowLoading = true,
35
+ server,
35
36
  value,
36
37
  mathJaxSource,
37
38
  isShowOutline,
@@ -62,6 +63,7 @@ function MarkdownViewer(_ref) {
62
63
  // eslint-disable-next-line react-hooks/exhaustive-deps
63
64
  }, [isFetching, value, isShowLoading]);
64
65
  const props = {
66
+ server,
65
67
  options,
66
68
  isSupportFormula: !!mathJaxSource,
67
69
  value: richValue,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seafile/seafile-editor",
3
- "version": "3.0.39",
3
+ "version": "3.0.40-beta",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -241,5 +241,6 @@
241
241
  "Copy_link": "Copy link",
242
242
  "Zoom_in": "Zoom in",
243
243
  "Zoom_out": "Zoom out",
244
+ "Divider": "Divider",
244
245
  "Close": "Close"
245
246
  }
@@ -236,7 +236,11 @@
236
236
  "Underline": "下划线",
237
237
  "Row_number": "行数",
238
238
  "Column_number": "列数",
239
+ "This_link_is_not_verified": "此链接未经验证",
240
+ "This_link_is_not_verified_tip": "在继续之前,请确保你信任此链接。如果你不信任该URL,请不要打开链接以访问该网站。",
241
+ "Copy_link": "复制链接",
239
242
  "Zoom_in": "放大",
240
243
  "Zoom_out": "缩小",
244
+ "Divider": "分隔线",
241
245
  "Close": "关闭"
242
246
  }
@@ -241,5 +241,6 @@
241
241
  "Copy_link": "复制链接",
242
242
  "Zoom_in": "放大",
243
243
  "Zoom_out": "缩小",
244
+ "Divider": "分隔线",
244
245
  "Close": "关闭"
245
246
  }