@seafile/sdoc-editor 3.0.207 → 3.0.209

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,99 @@
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
+ var inputRef = (0, _react.useRef)(null);
31
+ (0, _react.useEffect)(function () {
32
+ if (!isOpen) return;
33
+ setTitle(initialTitle || '');
34
+ setError('');
35
+ }, [initialTitle, isOpen]);
36
+ (0, _react.useEffect)(function () {
37
+ if (!isOpen) return;
38
+ queueMicrotask(function () {
39
+ var _inputRef$current, _inputRef$current2;
40
+ (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.focus();
41
+ (_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 ? void 0 : _inputRef$current2.select();
42
+ });
43
+ }, [isOpen]);
44
+ var onChange = (0, _react.useCallback)(function (event) {
45
+ setTitle(event.target.value);
46
+ if (error) {
47
+ setError('');
48
+ }
49
+ }, [error]);
50
+ var onCreate = (0, _react.useCallback)(function () {
51
+ var errorMessage = (0, _helpers.validateWikiPageTitle)(title);
52
+ if (errorMessage) {
53
+ setError(errorMessage);
54
+ return;
55
+ }
56
+ onClose();
57
+ (0, _helpers.createWikiPageAndInsertLink)({
58
+ editor: editor,
59
+ element: element,
60
+ title: title
61
+ });
62
+ }, [editor, element, onClose, title]);
63
+ var onKeyDown = (0, _react.useCallback)(function (event) {
64
+ if (event.key === 'Enter') {
65
+ event.preventDefault();
66
+ onCreate();
67
+ }
68
+ }, [onCreate]);
69
+ return /*#__PURE__*/_react["default"].createElement(_reactstrap.Modal, {
70
+ isOpen: isOpen,
71
+ toggle: onClose,
72
+ zIndex: 1071,
73
+ returnFocusAfterClose: false
74
+ }, /*#__PURE__*/_react["default"].createElement(_reactstrap.ModalHeader, {
75
+ toggle: onClose
76
+ }, t('New_page')), /*#__PURE__*/_react["default"].createElement(_reactstrap.ModalBody, null, /*#__PURE__*/_react["default"].createElement("div", {
77
+ className: "form-group mb-0"
78
+ }, /*#__PURE__*/_react["default"].createElement(_reactstrap.Label, {
79
+ "for": "createWikiPageTitle"
80
+ }, t('Page_name')), /*#__PURE__*/_react["default"].createElement(_reactstrap.Input, {
81
+ innerRef: inputRef,
82
+ id: "createWikiPageTitle",
83
+ type: "text",
84
+ value: title,
85
+ autoFocus: true,
86
+ onChange: onChange,
87
+ onKeyDown: onKeyDown
88
+ }), error && /*#__PURE__*/_react["default"].createElement(_reactstrap.Alert, {
89
+ color: "danger",
90
+ className: "mt-2 mb-0"
91
+ }, t(error)))), /*#__PURE__*/_react["default"].createElement(_reactstrap.ModalFooter, null, /*#__PURE__*/_react["default"].createElement(_reactstrap.Button, {
92
+ color: "secondary",
93
+ onClick: onClose
94
+ }, t('Cancel')), /*#__PURE__*/_react["default"].createElement(_reactstrap.Button, {
95
+ color: "primary",
96
+ onClick: onCreate
97
+ }, t('Create'))));
98
+ };
99
+ 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;
@@ -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.207",
3
+ "version": "3.0.209",
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": "c2c5944cdb82467a12a580a51652a54a4d3616b1"
75
+ "gitHead": "f53a15ee65593784968157b6f56de508f9df82de"
76
76
  }