@seafile/sdoc-editor 3.0.206 → 3.0.208

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.
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"];
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ var _reactI18next = require("react-i18next");
12
+ var _reactstrap = require("reactstrap");
13
+ var _helpers = require("./helpers");
14
+ var CreatePageDialog = function CreatePageDialog(_ref) {
15
+ var isOpen = _ref.isOpen,
16
+ initialTitle = _ref.initialTitle,
17
+ editor = _ref.editor,
18
+ element = _ref.element,
19
+ onClose = _ref.onClose;
20
+ var _useTranslation = (0, _reactI18next.useTranslation)('sdoc-editor'),
21
+ t = _useTranslation.t;
22
+ var _useState = (0, _react.useState)(''),
23
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
24
+ title = _useState2[0],
25
+ setTitle = _useState2[1];
26
+ var _useState3 = (0, _react.useState)(''),
27
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
28
+ error = _useState4[0],
29
+ setError = _useState4[1];
30
+ (0, _react.useEffect)(function () {
31
+ if (!isOpen) return;
32
+ setTitle(initialTitle || '');
33
+ setError('');
34
+ }, [initialTitle, isOpen]);
35
+ var onChange = (0, _react.useCallback)(function (event) {
36
+ setTitle(event.target.value);
37
+ if (error) {
38
+ setError('');
39
+ }
40
+ }, [error]);
41
+ var onCreate = (0, _react.useCallback)(function () {
42
+ var errorMessage = (0, _helpers.validateWikiPageTitle)(title);
43
+ if (errorMessage) {
44
+ setError(errorMessage);
45
+ return;
46
+ }
47
+ onClose();
48
+ (0, _helpers.createWikiPageAndInsertLink)({
49
+ editor: editor,
50
+ element: element,
51
+ title: title
52
+ });
53
+ }, [editor, element, onClose, title]);
54
+ var onKeyDown = (0, _react.useCallback)(function (event) {
55
+ if (event.key === 'Enter') {
56
+ event.preventDefault();
57
+ onCreate();
58
+ }
59
+ }, [onCreate]);
60
+ return /*#__PURE__*/_react["default"].createElement(_reactstrap.Modal, {
61
+ isOpen: isOpen,
62
+ toggle: onClose,
63
+ zIndex: 1071,
64
+ returnFocusAfterClose: false
65
+ }, /*#__PURE__*/_react["default"].createElement(_reactstrap.ModalHeader, {
66
+ toggle: onClose
67
+ }, t('New_page')), /*#__PURE__*/_react["default"].createElement(_reactstrap.ModalBody, null, /*#__PURE__*/_react["default"].createElement("div", {
68
+ className: "form-group mb-0"
69
+ }, /*#__PURE__*/_react["default"].createElement(_reactstrap.Label, {
70
+ "for": "createWikiPageTitle"
71
+ }, t('Page_name')), /*#__PURE__*/_react["default"].createElement(_reactstrap.Input, {
72
+ id: "createWikiPageTitle",
73
+ type: "text",
74
+ value: title,
75
+ autoFocus: true,
76
+ onChange: onChange,
77
+ onKeyDown: onKeyDown
78
+ }), error && /*#__PURE__*/_react["default"].createElement(_reactstrap.Alert, {
79
+ color: "danger",
80
+ className: "mt-2 mb-0"
81
+ }, t(error)))), /*#__PURE__*/_react["default"].createElement(_reactstrap.ModalFooter, null, /*#__PURE__*/_react["default"].createElement(_reactstrap.Button, {
82
+ color: "secondary",
83
+ onClick: onClose
84
+ }, t('Cancel')), /*#__PURE__*/_react["default"].createElement(_reactstrap.Button, {
85
+ color: "primary",
86
+ onClick: onCreate
87
+ }, t('Create'))));
88
+ };
89
+ var _default = exports["default"] = CreatePageDialog;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.validateWikiPageTitle = exports.invalidTitlePattern = exports.createWikiPageAndInsertLink = void 0;
8
+ var _constants = require("../../../constants");
9
+ var _eventBus = _interopRequireDefault(require("../../../utils/event-bus"));
10
+ var _helpers = require("../../plugins/sdoc-link/helpers");
11
+ var _helpers2 = require("../../plugins/wiki-link/helpers");
12
+ var invalidTitlePattern = exports.invalidTitlePattern = /[\\/:*?"<>|]/;
13
+ var validateWikiPageTitle = exports.validateWikiPageTitle = function validateWikiPageTitle(title) {
14
+ var trimmedTitle = title.trim();
15
+ if (!trimmedTitle) {
16
+ return 'Please_enter_title';
17
+ }
18
+ if (invalidTitlePattern.test(trimmedTitle)) {
19
+ return 'Page_title_contains_invalid_characters';
20
+ }
21
+ return '';
22
+ };
23
+ var createWikiPageAndInsertLink = exports.createWikiPageAndInsertLink = function createWikiPageAndInsertLink(_ref) {
24
+ var editor = _ref.editor,
25
+ element = _ref.element,
26
+ title = _ref.title;
27
+ var createName = title.trim();
28
+ var eventBus = _eventBus["default"].getInstance();
29
+ var unsubscribe = eventBus.subscribe(_constants.INTERNAL_EVENT.WIKI_PAGE_ID_CREATED, function (_ref2) {
30
+ var pageId = _ref2.pageId,
31
+ pageName = _ref2.pageName,
32
+ wikiRepoId = _ref2.wikiRepoId;
33
+ (0, _helpers2.insertWikiPageLink)(editor, pageName, wikiRepoId, pageId);
34
+ unsubscribe();
35
+ });
36
+ (0, _helpers.removeTempInput)(editor, element);
37
+ eventBus.dispatch(_constants.INTERNAL_EVENT.CREATE_WIKI_PAGE, {
38
+ newFileName: createName,
39
+ insertWikiPageLink: _helpers2.insertWikiPageLink,
40
+ editor: editor,
41
+ noShowDialog: true,
42
+ noRedirect: true
43
+ });
44
+ };
@@ -21,6 +21,7 @@ var _eventBus = _interopRequireDefault(require("../../../utils/event-bus"));
21
21
  var _localStorageUtils = _interopRequireDefault(require("../../../utils/local-storage-utils"));
22
22
  var _helpers = require("../../plugins/sdoc-link/helpers");
23
23
  var _helpers2 = require("../../plugins/wiki-link/helpers");
24
+ var _createPageDialog = _interopRequireDefault(require("./create-page-dialog"));
24
25
  require("./style.css");
25
26
  var WikiFileLinkInsertDialog = function WikiFileLinkInsertDialog(_ref) {
26
27
  var editor = _ref.editor,
@@ -51,6 +52,10 @@ var WikiFileLinkInsertDialog = function WikiFileLinkInsertDialog(_ref) {
51
52
  _useState0 = (0, _slicedToArray2["default"])(_useState9, 2),
52
53
  hiddenMoreMenu = _useState0[0],
53
54
  setHiddenMoreMenu = _useState0[1];
55
+ var _useState1 = (0, _react.useState)(false),
56
+ _useState10 = (0, _slicedToArray2["default"])(_useState1, 2),
57
+ isCreateDialogOpen = _useState10[0],
58
+ setIsCreateDialogOpen = _useState10[1];
54
59
  var deleteInputAndInsertText = (0, _react.useCallback)(function () {
55
60
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
56
61
  args[_key] = arguments[_key];
@@ -93,6 +98,7 @@ var WikiFileLinkInsertDialog = function WikiFileLinkInsertDialog(_ref) {
93
98
  }, [editor]);
94
99
  var onClick = (0, _react.useCallback)(function (e) {
95
100
  var _historyFileWrapperRe, _historyFileWrapperRe2;
101
+ if (isCreateDialogOpen) return;
96
102
  var isClickInside = (_historyFileWrapperRe = historyFileWrapperRef.current) === null || _historyFileWrapperRe === void 0 ? void 0 : (_historyFileWrapperRe2 = _historyFileWrapperRe.contains) === null || _historyFileWrapperRe2 === void 0 ? void 0 : _historyFileWrapperRe2.call(_historyFileWrapperRe, e.target);
97
103
  if (isClickInside) return;
98
104
 
@@ -101,7 +107,7 @@ var WikiFileLinkInsertDialog = function WikiFileLinkInsertDialog(_ref) {
101
107
  if (insertCollectorEl && insertCollectorEl.className === e.target.className) return;
102
108
  deleteInputAndInsertText();
103
109
  closeDialog();
104
- }, [closeDialog, deleteInputAndInsertText]);
110
+ }, [closeDialog, deleteInputAndInsertText, isCreateDialogOpen]);
105
111
  var onScroll = (0, _lodash["default"])(function () {
106
112
  getPosition();
107
113
  }, 100);
@@ -124,6 +130,7 @@ var WikiFileLinkInsertDialog = function WikiFileLinkInsertDialog(_ref) {
124
130
  // eslint-disable-next-line react-hooks/exhaustive-deps
125
131
  }, []);
126
132
  var onKeydown = (0, _react.useCallback)(function (e) {
133
+ if (isCreateDialogOpen) return;
127
134
  var key = e.key;
128
135
  switch (key) {
129
136
  case 'Escape':
@@ -143,7 +150,7 @@ var WikiFileLinkInsertDialog = function WikiFileLinkInsertDialog(_ref) {
143
150
  default:
144
151
  break;
145
152
  }
146
- }, [closeDialog, deleteInputAndInsertText]);
153
+ }, [closeDialog, deleteInputAndInsertText, isCreateDialogOpen]);
147
154
  (0, _react.useEffect)(function () {
148
155
  var sdocScrollContainer = document.getElementById('sdoc-scroll-container');
149
156
  document.addEventListener('click', onClick);
@@ -213,26 +220,13 @@ var WikiFileLinkInsertDialog = function WikiFileLinkInsertDialog(_ref) {
213
220
  setFiles(recentFiles);
214
221
  setHiddenMoreMenu(true);
215
222
  }, []);
216
- var createWikiLink = function createWikiLink(_ref2) {
217
- var pageId = _ref2.pageId,
218
- pageName = _ref2.pageName,
219
- wikiRepoId = _ref2.wikiRepoId;
220
- (0, _helpers2.insertWikiPageLink)(editor, pageName, wikiRepoId, pageId);
221
- };
222
- var onCreateFile = (0, _react.useCallback)(function (e) {
223
+ var closeCreateDialog = (0, _react.useCallback)(function () {
224
+ setIsCreateDialogOpen(false);
225
+ }, []);
226
+ var onOpenCreateDialog = (0, _react.useCallback)(function (e) {
223
227
  e.stopPropagation();
224
- (0, _helpers.removeTempInput)(editor, element);
225
- var eventBus = _eventBus["default"].getInstance();
226
- var unsubscribe = eventBus.subscribe(_constants.INTERNAL_EVENT.WIKI_PAGE_ID_CREATED, function (payload) {
227
- createWikiLink(payload);
228
- unsubscribe();
229
- });
230
- var createName = newFileName.trim() || t('New_page');
231
- eventBus.dispatch(_constants.INTERNAL_EVENT.CREATE_WIKI_PAGE, {
232
- newFileName: createName
233
- });
234
- // eslint-disable-next-line react-hooks/exhaustive-deps
235
- }, [editor, element, newFileName, t]);
228
+ setIsCreateDialogOpen(true);
229
+ }, []);
236
230
  var createFileTipDefault = (0, _react.useMemo)(function () {
237
231
  return 'New_page';
238
232
  }, []);
@@ -279,13 +273,19 @@ var WikiFileLinkInsertDialog = function WikiFileLinkInsertDialog(_ref) {
279
273
  onClick: onShowMoreWiki
280
274
  }, "...", t('More'))), /*#__PURE__*/_react["default"].createElement("div", {
281
275
  className: "sdoc-history-files-add",
282
- onClick: onCreateFile
276
+ onClick: onOpenCreateDialog
283
277
  }, /*#__PURE__*/_react["default"].createElement("i", {
284
278
  className: "sdocfont sdoc-append"
285
279
  }), /*#__PURE__*/_react["default"].createElement("span", {
286
280
  className: "new-file-name"
287
281
  }, newFileName ? t('Create_file_name_sdoc', {
288
282
  file_name_sdoc: createFileName
289
- }) : t(createFileTipDefault))));
283
+ }) : t(createFileTipDefault))), /*#__PURE__*/_react["default"].createElement(_createPageDialog["default"], {
284
+ isOpen: isCreateDialogOpen,
285
+ initialTitle: newFileName.trim(),
286
+ editor: editor,
287
+ element: element,
288
+ onClose: closeCreateDialog
289
+ }));
290
290
  };
291
291
  var _default = exports["default"] = WikiFileLinkInsertDialog;
@@ -145,7 +145,7 @@ var TableContextMenu = /*#__PURE__*/function (_React$Component) {
145
145
  var isMergedCell = this.isMergedCell();
146
146
  var tableCellNode = (0, _core.getSelectedNodeByType)(editor, _constants2.ELEMENT_TYPE.TABLE_CELL);
147
147
  var horizontalAlign = tableCellNode === null || tableCellNode === void 0 ? void 0 : (_tableCellNode$style = tableCellNode.style) === null || _tableCellNode$style === void 0 ? void 0 : _tableCellNode$style[_constants3.TABLE_CELL_STYLE.TEXT_ALIGN];
148
- var verticalAlign = tableCellNode === null || tableCellNode === void 0 ? void 0 : (_tableCellNode$style2 = tableCellNode.style) === null || _tableCellNode$style2 === void 0 ? void 0 : _tableCellNode$style2[(0, _KebabToCamel["default"])(_constants3.TABLE_CELL_STYLE.ALIGN_ITEMS)];
148
+ var verticalAlign = tableCellNode === null || tableCellNode === void 0 ? void 0 : (_tableCellNode$style2 = tableCellNode.style) === null || _tableCellNode$style2 === void 0 ? void 0 : _tableCellNode$style2[_constants3.TABLE_CELL_STYLE.ALIGN_ITEMS];
149
149
  // Check if the table width is fit to screen
150
150
  // Use queueMicrotask to resolve the issue that the table cell combined or split, the table width is not updated immediately
151
151
  queueMicrotask(function () {
@@ -11,7 +11,6 @@ var _react = _interopRequireWildcard(require("react"));
11
11
  var _reactI18next = require("react-i18next");
12
12
  var _reactstrap = require("reactstrap");
13
13
  var _classnames = _interopRequireDefault(require("classnames"));
14
- var _KebabToCamel = _interopRequireDefault(require("../../../../../utils/Kebab-to-camel"));
15
14
  var _core = require("../../../../core");
16
15
  var _constants = require("../../constants");
17
16
  var _helpers = require("../../helpers");
@@ -25,8 +24,7 @@ var VerticalAlignPopover = function VerticalAlignPopover(_ref) {
25
24
  t = _useTranslation.t;
26
25
  var setVerticalAlignStyle = (0, _react.useCallback)(function (position) {
27
26
  if (readonly) return;
28
- var alignItems = (0, _KebabToCamel["default"])(_constants.TABLE_CELL_STYLE.ALIGN_ITEMS);
29
- (0, _helpers.setCellStyle)(editor, (0, _defineProperty2["default"])({}, alignItems, position));
27
+ (0, _helpers.setCellStyle)(editor, (0, _defineProperty2["default"])({}, _constants.TABLE_CELL_STYLE.ALIGN_ITEMS, position));
30
28
  var focusPoint = editor.selection.focus;
31
29
  // prevent select all text in the editor
32
30
  (0, _core.focusEditor)(editor, focusPoint);
@@ -26,7 +26,7 @@ var Table = /*#__PURE__*/(0, _createClass2["default"])(function Table(options) {
26
26
  }],
27
27
  style: {
28
28
  text_align: 'left',
29
- alignItems: 'center',
29
+ align_items: 'center',
30
30
  background_color: ''
31
31
  },
32
32
  // inherit from table,when insert new cell
@@ -83,6 +83,10 @@ var TableCell = function TableCell(_ref) {
83
83
  if (element.style) {
84
84
  style = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, element.style), style);
85
85
  }
86
+ if (_objectUtils["default"].hasProperty(style, _constants3.TABLE_CELL_STYLE.ALIGN_ITEMS)) {
87
+ style.alignItems = style[_constants3.TABLE_CELL_STYLE.ALIGN_ITEMS];
88
+ delete style[_constants3.TABLE_CELL_STYLE.ALIGN_ITEMS];
89
+ }
86
90
  var onMouseMove = function onMouseMove(mouseDownEvent) {
87
91
  eventBus.dispatch(_constants.INTERNAL_EVENT.TABLE_CELL_MOUSE_ENTER, {
88
92
  mouseDownEvent: mouseDownEvent,
@@ -162,7 +166,7 @@ var TableCell = function TableCell(_ref) {
162
166
  }
163
167
  }, [cellIndex, editor, eventBus, rowIndex, tableEntry, tableId]);
164
168
  return /*#__PURE__*/_react["default"].createElement("div", Object.assign({}, attributes, {
165
- style: (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, element.style), style),
169
+ style: (0, _objectSpread2["default"])({}, style),
166
170
  className: (0, _classnames2["default"])('table-cell', attributes.className, highlightClass, (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, _constants3.CELL_SELECTED, isSelected), 'cell-light-height-left-border', isSelectedFirstCell), 'cell-light-height-right-border', isSelectedLastCell), 'cell-light-height-top-border', isSelectedFirstRow), 'cell-light-height-bottom-border', isSelectedLastRow)),
167
171
  "data-id": element.id,
168
172
  "row-index": rowIndex,
@@ -204,6 +208,9 @@ function renderTableCell(props) {
204
208
  if (_objectUtils["default"].hasProperty(element.style, _constants3.TABLE_CELL_STYLE.BACKGROUND_COLOR) && element.style[_constants3.TABLE_CELL_STYLE.BACKGROUND_COLOR]) {
205
209
  style['backgroundColor'] = element.style[_constants3.TABLE_CELL_STYLE.BACKGROUND_COLOR];
206
210
  }
211
+ if (_objectUtils["default"].hasProperty(element.style, _constants3.TABLE_CELL_STYLE.ALIGN_ITEMS)) {
212
+ style.alignItems = element.style[_constants3.TABLE_CELL_STYLE.ALIGN_ITEMS];
213
+ }
207
214
  if (element.is_combined) {
208
215
  style.display = 'none';
209
216
  }
@@ -219,7 +226,7 @@ function renderTableCell(props) {
219
226
  colspan = _element$colspan2 === void 0 ? 1 : _element$colspan2;
220
227
  style.gridArea = "".concat(rowIndex + 1, " / ").concat(cellIndex + 1, " / span ").concat(rowspan, " / span ").concat(colspan);
221
228
  return /*#__PURE__*/_react["default"].createElement("div", Object.assign({}, attributes, {
222
- style: (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, element.style), style),
229
+ style: (0, _objectSpread2["default"])({}, style),
223
230
  className: (0, _classnames2["default"])('table-cell', highlightClass, attributes.className),
224
231
  "data-id": element.id
225
232
  }), /*#__PURE__*/_react["default"].createElement("div", {
@@ -1,9 +1,11 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
7
  exports.isMobile = exports.isMac = exports.isEnglish = exports.getMaximumCapacity = exports.getLocalStorageFiles = exports.getErrorMsg = void 0;
8
+ var _context = _interopRequireDefault(require("../context"));
7
9
  var isEnglish = exports.isEnglish = function isEnglish(str) {
8
10
  var pattern = new RegExp('[A-Za-z]+');
9
11
  if (pattern.test(str)) {
@@ -29,7 +31,7 @@ var getMaximumCapacity = exports.getMaximumCapacity = function getMaximumCapacit
29
31
  return newFiles;
30
32
  };
31
33
  var getLocalStorageFiles = exports.getLocalStorageFiles = function getLocalStorageFiles(files) {
32
- var wikiRepoId = window.wiki.config.wikiId;
34
+ var wikiRepoId = _context["default"].getSetting('wikiId');
33
35
  var newFiles = [];
34
36
  files.forEach(function (item) {
35
37
  if ((item === null || item === void 0 ? void 0 : item.wikiRepoId) === wikiRepoId) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seafile/sdoc-editor",
3
- "version": "3.0.206",
3
+ "version": "3.0.208",
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": "bd92627a4853b84c0f9fa9efe4ebe1cc73272ba6"
75
+ "gitHead": "d8dfa2dbd360ce3d37de0f2f57e46e3c5d1d820c"
76
76
  }