@seafile/seafile-editor 1.0.114 → 1.0.115

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,64 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ var _react = _interopRequireWildcard(require("react"));
10
+ var _slate = require("slate");
11
+ var _eventBus = _interopRequireDefault(require("../../../utils/event-bus"));
12
+ var _eventTypes = require("../../../constants/event-types");
13
+ var _constants = require("../../constants");
14
+ var _linkModal = _interopRequireDefault(require("../../plugins/link/menu/link-modal"));
15
+ const InsertElementDialog = _ref => {
16
+ let {
17
+ editor
18
+ } = _ref;
19
+ const [dialogType, setDialogType] = (0, _react.useState)('');
20
+ const [isOpenLinkModal, setIsOpenLinkModal] = (0, _react.useState)(false);
21
+ const [linkInfo, setLinkInfo] = (0, _react.useState)({
22
+ linkTitle: '',
23
+ linkUrl: ''
24
+ });
25
+ (0, _react.useEffect)(() => {
26
+ const eventBus = _eventBus.default.getInstance();
27
+ const toggleDialogSubscribe = eventBus.subscribe(_eventTypes.INTERNAL_EVENTS.INSERT_ELEMENT, toggleDialog);
28
+ return () => {
29
+ toggleDialogSubscribe();
30
+ };
31
+ }, []);
32
+ const toggleDialog = (0, _react.useCallback)(_ref2 => {
33
+ let {
34
+ type
35
+ } = _ref2;
36
+ setDialogType(type);
37
+ setIsOpenLinkModal(true);
38
+ if (editor.selection) {
39
+ const selectedText = _slate.Editor.string(editor, editor.selection);
40
+ setLinkInfo({
41
+ ...linkInfo,
42
+ linkTitle: selectedText
43
+ });
44
+ }
45
+ }, [editor, setIsOpenLinkModal, setLinkInfo, setDialogType]);
46
+ const onCloseModal = (0, _react.useCallback)(() => {
47
+ setIsOpenLinkModal(false);
48
+ setLinkInfo({
49
+ linkTitle: '',
50
+ linkUrl: ''
51
+ });
52
+ }, []);
53
+ if (_constants.ELementTypes.LINK === dialogType) {
54
+ return isOpenLinkModal && /*#__PURE__*/_react.default.createElement(_linkModal.default, {
55
+ onCloseModal: onCloseModal,
56
+ editor: editor,
57
+ linkTitle: linkInfo.linkTitle,
58
+ linkUrl: linkInfo.linkUrl
59
+ });
60
+ } else {
61
+ return null;
62
+ }
63
+ };
64
+ var _default = exports.default = InsertElementDialog;
@@ -10,9 +10,13 @@ var _slugid = _interopRequireDefault(require("slugid"));
10
10
  var _queries = require("../../core/queries");
11
11
  var _helper = require("./helper");
12
12
  var _elementTypes = require("../../constants/element-types");
13
+ var _constants = require("../../constants");
14
+ var _eventTypes = require("../../../constants/event-types");
13
15
  var _common = require("../../../utils/common");
14
16
  var _focusEditor = require("../../core/transforms/focus-editor");
15
17
  var _helper2 = require("../image/helper");
18
+ var _isHotkey = _interopRequireDefault(require("is-hotkey"));
19
+ var _eventBus = _interopRequireDefault(require("../../../utils/event-bus"));
16
20
  const withLink = editor => {
17
21
  const {
18
22
  isInline,
@@ -20,7 +24,8 @@ const withLink = editor => {
20
24
  deleteBackward,
21
25
  insertText,
22
26
  normalizeNode,
23
- insertData
27
+ insertData,
28
+ onHotKeyDown
24
29
  } = editor;
25
30
  const newEditor = editor;
26
31
 
@@ -107,6 +112,43 @@ const withLink = editor => {
107
112
  return deleteBackward(unit);
108
113
  };
109
114
 
115
+ // Add 'mod+k' shortcut Key
116
+ newEditor.onHotKeyDown = e => {
117
+ if ((0, _isHotkey.default)('mod+k', e)) {
118
+ e.preventDefault();
119
+ const {
120
+ selection
121
+ } = newEditor;
122
+ const isCollapsed = _slate.Range.isCollapsed(selection);
123
+ const eventBus = _eventBus.default.getInstance();
124
+ if (isCollapsed) {
125
+ eventBus.dispatch(_eventTypes.INTERNAL_EVENTS.INSERT_ELEMENT, {
126
+ type: _constants.ELementTypes.LINK,
127
+ editor
128
+ });
129
+ } else {
130
+ const [firstSelectedNode, ...restNodes] = (0, _queries.getSelectedElems)(newEditor);
131
+ if (!firstSelectedNode) return; // If not select any node, return
132
+ // If firstNode has child nods, recursively check if every child node contains a text node
133
+ const hasTextNode = node => {
134
+ if (_slate.Text.isText(node)) return true;
135
+ if (node.children && node.children.length > 0) {
136
+ return node.children.some(hasTextNode);
137
+ }
138
+ };
139
+ const isSelectTextNodes = hasTextNode(firstSelectedNode);
140
+ if (!isSelectTextNodes) return;
141
+ const linkTitle = window.getSelection().toString();
142
+ eventBus.dispatch(_eventTypes.INTERNAL_EVENTS.INSERT_ELEMENT, {
143
+ type: _constants.ELementTypes.LINK,
144
+ editor: newEditor,
145
+ linkTitle: linkTitle
146
+ });
147
+ }
148
+ }
149
+ return onHotKeyDown && onHotKeyDown(e);
150
+ };
151
+
110
152
  // Rewrite normalizeNode
111
153
  newEditor.normalizeNode = _ref => {
112
154
  let [node, path] = _ref;
@@ -29,6 +29,7 @@ var _menu10 = _interopRequireDefault(require("../../plugins/formula/menu"));
29
29
  var _menu11 = _interopRequireDefault(require("../../plugins/clear-format/menu"));
30
30
  var _shortcutDialog = _interopRequireDefault(require("../user-help/shortcut-dialog"));
31
31
  var _menu12 = _interopRequireDefault(require("../../plugins/column/menu"));
32
+ var _insertElementDialog = _interopRequireDefault(require("../../commons/insert-element-dialog"));
32
33
  require("./style.css");
33
34
  const Toolbar = _ref => {
34
35
  let {
@@ -103,6 +104,8 @@ const Toolbar = _ref => {
103
104
  })), isShowHelpModal && /*#__PURE__*/_react.default.createElement(_shortcutDialog.default, {
104
105
  isRichEditor: isRichEditor,
105
106
  toggleShortcutDialog: onHelpIconToggle
107
+ }), /*#__PURE__*/_react.default.createElement(_insertElementDialog.default, {
108
+ editor: editor
106
109
  }));
107
110
  };
108
111
  Toolbar.defaultProps = {
@@ -13,7 +13,7 @@ var _getPreviewContent = _interopRequireDefault(require("../../utils/get-preview
13
13
  var _getBrowserInfo = _interopRequireDefault(require("../../utils/get-browser-Info"));
14
14
  var _components = require("../../components");
15
15
  var _markdownPreview = _interopRequireDefault(require("../markdown-preview"));
16
- require("../longtext-editor-dialog/style.css");
16
+ require("./style.css");
17
17
  function LongTextEditorDialog(_ref) {
18
18
  let {
19
19
  lang,
@@ -25,7 +25,6 @@ function LongTextEditorDialog(_ref) {
25
25
  isCheckBrowser = false,
26
26
  mathJaxSource,
27
27
  className,
28
- containerClass,
29
28
  editorApi,
30
29
  onSaveEditorValue,
31
30
  onEditorValueChanged,
@@ -156,7 +155,7 @@ function LongTextEditorDialog(_ref) {
156
155
  containerClass: className
157
156
  }, /*#__PURE__*/_react.default.createElement("div", {
158
157
  style: dialogStyle,
159
- className: (0, _classnames.default)('longtext-dialog-container', containerClass)
158
+ className: "longtext-dialog-container"
160
159
  }, /*#__PURE__*/_react.default.createElement("div", {
161
160
  className: headerClass
162
161
  }, /*#__PURE__*/_react.default.createElement("div", {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seafile/seafile-editor",
3
- "version": "1.0.114",
3
+ "version": "1.0.115",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {