@seafile/seafile-editor 2.0.33 → 2.0.34-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.
@@ -24,6 +24,7 @@ const isMacOS = (0, _common.isMac)();
24
24
  const InlineEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
25
25
  let {
26
26
  enableEdit,
27
+ autoFocus,
27
28
  value,
28
29
  editorApi,
29
30
  onSave,
@@ -101,6 +102,7 @@ const InlineEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
101
102
  const timer = setTimeout(() => {
102
103
  editor.forceNormalize = false;
103
104
  if (!enableEdit) return;
105
+ if (!autoFocus) return;
104
106
  focusNode(editor);
105
107
  }, 300);
106
108
  return () => {
@@ -114,6 +116,7 @@ const InlineEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
114
116
  editor.hasMovedSelection = false;
115
117
  return;
116
118
  }
119
+ if (!autoFocus) return;
117
120
  focusNode(editor, focusRangeRef.current);
118
121
  // eslint-disable-next-line react-hooks/exhaustive-deps
119
122
  }, [enableEdit]);
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.UNORDERED_LIST = exports.TABLE_ROW = exports.TABLE_CELL = exports.TABLE = exports.PARAGRAPH = exports.ORDERED_LIST = exports.LIST_ITEM = exports.LINK = exports.IMAGE = exports.HEADER6 = exports.HEADER5 = exports.HEADER4 = exports.HEADER3 = exports.HEADER2 = exports.HEADER1 = exports.HEADER = exports.FORMULA = exports.COLUMN = exports.CODE_LINE = exports.CODE_BLOCK = exports.CHECK_LIST_ITEM = exports.BLOCKQUOTE = void 0;
6
+ exports.UNORDERED_LIST = exports.TABLE_ROW = exports.TABLE_CELL = exports.TABLE = exports.PARAGRAPH = exports.ORDERED_LIST = exports.LIST_ITEM = exports.LINK_REFERENCE = exports.LINK = exports.IMAGE = exports.HEADER6 = exports.HEADER5 = exports.HEADER4 = exports.HEADER3 = exports.HEADER2 = exports.HEADER1 = exports.HEADER = exports.FORMULA = exports.DEFINITION = exports.COLUMN = exports.CODE_LINE = exports.CODE_BLOCK = exports.CHECK_LIST_ITEM = exports.BLOCKQUOTE = void 0;
7
7
  const BLOCKQUOTE = exports.BLOCKQUOTE = 'blockquote';
8
8
  const HEADER = exports.HEADER = 'header';
9
9
  // each header type should be start with HEADER, all of justices should based on HEADER
@@ -26,4 +26,6 @@ const TABLE_CELL = exports.TABLE_CELL = 'table_cell';
26
26
  const IMAGE = exports.IMAGE = 'image';
27
27
  const LINK = exports.LINK = 'link';
28
28
  const FORMULA = exports.FORMULA = 'formula';
29
- const COLUMN = exports.COLUMN = 'column';
29
+ const COLUMN = exports.COLUMN = 'column';
30
+ const LINK_REFERENCE = exports.LINK_REFERENCE = 'link-reference';
31
+ const DEFINITION = exports.DEFINITION = 'definition';
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.isTextNode = exports.isStartPoint = exports.isSelectionAtBlockStart = exports.isSelectionAtBlockEnd = exports.isRangeAcrossBlocks = exports.isLastNode = exports.isLastChild = exports.isFirstNode = exports.isFirstChild = exports.isEndPoint = exports.isBlockTextEmptyAfterSelection = exports.isBlockAboveEmpty = exports.isAncestorEmpty = exports.getSelectedNodeEntryByTypes = exports.getSelectedNodeEntryByType = exports.getSelectedNodeByTypes = exports.getSelectedNodeByType = exports.getSelectedElems = exports.getQueryOptions = exports.getPreviousPath = exports.getPrevNode = exports.getParentNode = exports.getNodes = exports.getNodeType = exports.getNodePathById = exports.getNodeEntries = exports.getNode = exports.getNextSiblingNodes = exports.getNextNode = exports.getLastChildPath = exports.getLastChild = exports.getInlineNodes = exports.getEditorString = exports.getDeepInlineChildren = exports.getCommonNode = exports.getChildren = exports.getAboveNode = exports.getAboveBlockNode = exports.findPath = exports.findNode = exports.findDescendant = void 0;
7
+ exports.isTextNode = exports.isStartPoint = exports.isSelectionAtBlockStart = exports.isSelectionAtBlockEnd = exports.isRangeAcrossBlocks = exports.isLastNode = exports.isLastChild = exports.isFirstNode = exports.isFirstChild = exports.isEndPoint = exports.isBlockTextEmptyAfterSelection = exports.isBlockAboveEmpty = exports.isAncestorEmpty = exports.getSelectedNodeEntryByTypes = exports.getSelectedNodeEntryByType = exports.getSelectedNodeByTypes = exports.getSelectedNodeByType = exports.getSelectedElems = exports.getQueryOptions = exports.getPreviousPath = exports.getPrevNode = exports.getParentNode = exports.getNodesByType = exports.getNodes = exports.getNodeType = exports.getNodePathById = exports.getNodeEntries = exports.getNode = exports.getNextSiblingNodes = exports.getNextNode = exports.getLastChildPath = exports.getLastChild = exports.getInlineNodes = exports.getEditorString = exports.getDeepInlineChildren = exports.getCommonNode = exports.getChildren = exports.getAboveNode = exports.getAboveBlockNode = exports.findPath = exports.findNode = exports.findDescendant = void 0;
8
8
  var _slate = require("slate");
9
9
  var _slateReact = require("slate-react");
10
10
  var _slugid = _interopRequireDefault(require("slugid"));
@@ -46,6 +46,22 @@ const getNode = (editor, path) => {
46
46
  return node;
47
47
  };
48
48
  exports.getNode = getNode;
49
+ const getNodesByType = function () {
50
+ let target = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
51
+ let type = arguments.length > 1 ? arguments[1] : undefined;
52
+ let nodes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
53
+ Array.isArray(target) && target.forEach(n => {
54
+ if (n.type === type) {
55
+ nodes.push(n);
56
+ } else {
57
+ if (Array.isArray(n.children) && n.children.length > 0) {
58
+ getNodesByType(n, type, nodes);
59
+ }
60
+ }
61
+ });
62
+ return nodes;
63
+ };
64
+ exports.getNodesByType = getNodesByType;
49
65
  const getNodeType = node => {
50
66
  return _slate.Element.isElement(node) ? node.type : '';
51
67
  };
@@ -0,0 +1,17 @@
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 _elementTypes = require("../../constants/element-types");
9
+ var _renderElem = _interopRequireDefault(require("./render-elem"));
10
+ const DefinitionPlugin = {
11
+ type: _elementTypes.DEFINITION,
12
+ nodeType: 'element',
13
+ // editorMenus: [],
14
+ // editorPlugin: withLink,
15
+ renderElements: [_renderElem.default]
16
+ };
17
+ var _default = exports.default = DefinitionPlugin;
@@ -0,0 +1,36 @@
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 _classnames = _interopRequireDefault(require("classnames"));
11
+ var _slateReact = require("slate-react");
12
+ require("./index.css");
13
+ /* eslint-disable react-hooks/rules-of-hooks */
14
+
15
+ const renderDefinition = (_ref, editor) => {
16
+ let {
17
+ attributes,
18
+ children,
19
+ element
20
+ } = _ref;
21
+ const [isShowPopover, setShowPopover] = (0, _react.useState)(false);
22
+ const onHrefClick = (0, _react.useCallback)(event => {
23
+ event.preventDefault();
24
+ setShowPopover(true);
25
+ }, []);
26
+ console.log(element);
27
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("span", Object.assign({
28
+ "data-url": element.url,
29
+ "data-id": element.id,
30
+ className: "sf-virtual-definition"
31
+ }, attributes), /*#__PURE__*/_react.default.createElement("span", null, element.identifier + '. '), /*#__PURE__*/_react.default.createElement("a", {
32
+ href: element.url,
33
+ onClick: onHrefClick
34
+ }, children)));
35
+ };
36
+ var _default = exports.default = renderDefinition;
@@ -28,6 +28,12 @@ Object.defineProperty(exports, "ColumnPlugin", {
28
28
  return _column.default;
29
29
  }
30
30
  });
31
+ Object.defineProperty(exports, "DefinitionPlugin", {
32
+ enumerable: true,
33
+ get: function () {
34
+ return _definition.default;
35
+ }
36
+ });
31
37
  Object.defineProperty(exports, "FormulaPlugin", {
32
38
  enumerable: true,
33
39
  get: function () {
@@ -58,6 +64,12 @@ Object.defineProperty(exports, "LinkPlugin", {
58
64
  return _link.default;
59
65
  }
60
66
  });
67
+ Object.defineProperty(exports, "LinkReferencePlugin", {
68
+ enumerable: true,
69
+ get: function () {
70
+ return _linkReference.default;
71
+ }
72
+ });
61
73
  Object.defineProperty(exports, "ListPlugin", {
62
74
  enumerable: true,
63
75
  get: function () {
@@ -110,7 +122,9 @@ var _formula = _interopRequireDefault(require("./formula"));
110
122
  var _column = _interopRequireDefault(require("./column"));
111
123
  var _markdown = _interopRequireDefault(require("./markdown"));
112
124
  var _html = _interopRequireDefault(require("./html"));
125
+ var _linkReference = _interopRequireDefault(require("./link-reference"));
126
+ var _definition = _interopRequireDefault(require("./definition"));
113
127
  const Plugins = [_paragraph.default, _textStyle.default, _header.default, _image.default, _checkList.default, _list.default, _codeBlock.default, _table.default, _blockquote.default, _link.default, _formula.default, _markdown.default, _html.default, _column.default,
114
128
  // put at the end
115
- _nodeId.default];
129
+ _nodeId.default, _linkReference.default, _definition.default];
116
130
  var _default = exports.default = Plugins;
@@ -0,0 +1,17 @@
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 _elementTypes = require("../../constants/element-types");
9
+ var _renderElem = _interopRequireDefault(require("./render-elem"));
10
+ const LinkReferencePlugin = {
11
+ type: _elementTypes.LINK_REFERENCE,
12
+ nodeType: 'element',
13
+ // editorMenus: [],
14
+ // editorPlugin: withLink,
15
+ renderElements: [_renderElem.default]
16
+ };
17
+ var _default = exports.default = LinkReferencePlugin;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _core = require("../../../core");
10
+ var _elementTypes = require("../../../constants/element-types");
11
+ require("./index.css");
12
+ /* eslint-disable react-hooks/rules-of-hooks */
13
+
14
+ const renderLinkReference = (_ref, editor) => {
15
+ let {
16
+ attributes,
17
+ children,
18
+ element
19
+ } = _ref;
20
+ const onClick = (0, _react.useCallback)(() => {
21
+ const doms = (0, _core.getNodesByType)(editor.children, _elementTypes.DEFINITION);
22
+ const dom = doms.find(d => d.identifier === element.identifier);
23
+ if (!dom) return;
24
+ console.log(dom);
25
+ }, [element, editor]);
26
+ return /*#__PURE__*/_react.default.createElement("sup", Object.assign({
27
+ onClick: onClick,
28
+ className: "sf-virtual-link-reference",
29
+ "data-id": element.id
30
+ }, attributes, {
31
+ title: element.label
32
+ }), `[${element.identifier}]`);
33
+ };
34
+ var _default = exports.default = renderLinkReference;
@@ -17,6 +17,7 @@ const renderText = (props, editor) => {
17
17
  text,
18
18
  ...rest
19
19
  } = leaf;
20
+ console.log(leaf);
20
21
  let markedChildren = /*#__PURE__*/_react.default.cloneElement(children);
21
22
  if (leaf[_constants.TEXT_STYLE_MAP.BOLD]) {
22
23
  markedChildren = /*#__PURE__*/_react.default.createElement("strong", null, markedChildren);
@@ -41,6 +41,16 @@ const SlateElement = props => {
41
41
  const [renderLink] = _plugins.LinkPlugin.renderElements;
42
42
  return renderLink(props, editor);
43
43
  }
44
+ case ElementType.LINK_REFERENCE:
45
+ {
46
+ const [renderLinkReferencePlugin] = _plugins.LinkReferencePlugin.renderElements;
47
+ return renderLinkReferencePlugin(props, editor);
48
+ }
49
+ case ElementType.DEFINITION:
50
+ {
51
+ const [renderDefinition] = _plugins.DefinitionPlugin.renderElements;
52
+ return renderDefinition(props, editor);
53
+ }
44
54
  case ElementType.CODE_BLOCK:
45
55
  {
46
56
  const [renderCodeBlock] = _plugins.CodeBlockPlugin.renderElements;
@@ -17,6 +17,7 @@ require("./index.css");
17
17
  const LongTextInlineEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
18
18
  let {
19
19
  isAlwaysEnableEdit = false,
20
+ autoFocus = true,
20
21
  autoSave,
21
22
  isCheckBrowser,
22
23
  saveDelay,
@@ -106,6 +107,7 @@ const LongTextInlineEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) =>
106
107
  isCheckBrowser: isCheckBrowser,
107
108
  isImageUploadOnly: isImageUploadOnly,
108
109
  isSupportMultipleFiles: isSupportMultipleFiles,
110
+ autoFocus: autoFocus,
109
111
  editorApi: editorApi,
110
112
  onSaveEditorValue: onSaveEditorValue,
111
113
  onEditorValueChanged: onEditorValueChanged
@@ -25,6 +25,7 @@ const NormalEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
25
25
  isCheckBrowser = false,
26
26
  isImageUploadOnly = true,
27
27
  isSupportMultipleFiles = false,
28
+ autoFocus,
28
29
  editorApi,
29
30
  onSaveEditorValue,
30
31
  onEditorValueChanged
@@ -121,6 +122,7 @@ const NormalEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
121
122
  ref: editorRef,
122
123
  enableEdit: enableEdit,
123
124
  isInline: true,
125
+ autoFocus: autoFocus,
124
126
  isImageUploadOnly: isImageUploadOnly,
125
127
  isSupportMultipleFiles: isSupportMultipleFiles,
126
128
  value: valueRef.current.text,
@@ -16,6 +16,7 @@ const SimpleEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
16
16
  let {
17
17
  isInline,
18
18
  isFetching,
19
+ autoFocus,
19
20
  value,
20
21
  focusEnd = false,
21
22
  editorApi,
@@ -59,6 +60,7 @@ const SimpleEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
59
60
  isSupportFormula: !!mathJaxSource,
60
61
  value: richValue,
61
62
  focusEnd,
63
+ autoFocus,
62
64
  editorApi: editorApi,
63
65
  onSave: propsOnSave,
64
66
  onContentChanged: onContentChanged,
@@ -42,6 +42,7 @@ const mdStringToSlate = mdString => {
42
42
 
43
43
  // md ast --> slate ast
44
44
  const slateNodes = (0, _transform.formatMdToSlate)(root.children);
45
+ console.log('slateNodes: ', slateNodes);
45
46
 
46
47
  // Format the document
47
48
  return reconciledSlateNodes(slateNodes);
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.transformUnorderedList = exports.transformTableRow = exports.transformTableCell = exports.transformTable = exports.transformParagraph = exports.transformOrderedList = exports.transformMath = exports.transformListItem = exports.transformListContent = exports.transformList = exports.transformHtml = exports.transformHr = exports.transformHeader = exports.transformCodeLine = exports.transformCodeBlock = exports.transformCheckListItem = exports.transformCheckList = exports.transformBlockquote = exports.transformBlockHtml = exports.formatMdToSlate = void 0;
7
+ exports.transformUnorderedList = exports.transformTableRow = exports.transformTableCell = exports.transformTable = exports.transformParagraph = exports.transformOrderedList = exports.transformMath = exports.transformListItem = exports.transformListContent = exports.transformList = exports.transformHtml = exports.transformHr = exports.transformHeader = exports.transformDefinition = exports.transformCodeLine = exports.transformCodeBlock = exports.transformCheckListItem = exports.transformCheckList = exports.transformBlockquote = exports.transformBlockHtml = exports.formatMdToSlate = void 0;
8
8
  var _slugid = _interopRequireDefault(require("slugid"));
9
9
  var _core = require("../../extension/core");
10
10
  var _elementTypes = require("../../extension/constants/element-types");
@@ -99,6 +99,22 @@ const applyMarkForInlineItem = function (result, item) {
99
99
  textNode = {};
100
100
  return;
101
101
  }
102
+ if (type === 'linkReference') {
103
+ var _item$children$;
104
+ console.log('linkReference: ', item);
105
+ textNode['type'] = _elementTypes.LINK_REFERENCE;
106
+ textNode['identifier'] = item.identifier;
107
+ textNode['referenceType'] = item.referenceType;
108
+ textNode['label'] = (_item$children$ = item.children[0]) === null || _item$children$ === void 0 ? void 0 : _item$children$.value;
109
+ textNode['children'] = [{
110
+ id: textNode.id,
111
+ text: ''
112
+ }];
113
+ result.push({
114
+ ...textNode
115
+ });
116
+ return;
117
+ }
102
118
  const attr_key = INLINE_KEY_MAP[type];
103
119
  if (!Array.isArray(children) || children.length === 0 || !attr_key) {
104
120
  textNode['text'] = value || '';
@@ -351,6 +367,20 @@ const transformCodeBlock = node => {
351
367
  };
352
368
  };
353
369
  exports.transformCodeBlock = transformCodeBlock;
370
+ const transformDefinition = node => {
371
+ return {
372
+ id: _slugid.default.nice(),
373
+ type: _elementTypes.DEFINITION,
374
+ identifier: node.identifier,
375
+ url: node === null || node === void 0 ? void 0 : node.url,
376
+ title: node === null || node === void 0 ? void 0 : node.title,
377
+ children: [{
378
+ id: _slugid.default.nice(),
379
+ text: node === null || node === void 0 ? void 0 : node.title
380
+ }]
381
+ };
382
+ };
383
+ exports.transformDefinition = transformDefinition;
354
384
  const transformHr = node => {
355
385
  return {
356
386
  id: _slugid.default.nice(),
@@ -430,7 +460,8 @@ const elementHandlers = {
430
460
  'code': transformCodeBlock,
431
461
  'thematicBreak': transformHr,
432
462
  'math': transformMath,
433
- 'html': transformBlockHtml
463
+ 'html': transformBlockHtml,
464
+ 'definition': transformDefinition
434
465
  };
435
466
  const formatMdToSlate = children => {
436
467
  const validChildren = children.filter(child => elementHandlers[child.type]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seafile/seafile-editor",
3
- "version": "2.0.33",
3
+ "version": "2.0.34beta",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {