@seafile/seafile-editor 2.0.33-alpha.1 → 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,7 +24,7 @@ const isMacOS = (0, _common.isMac)();
24
24
  const InlineEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
25
25
  let {
26
26
  enableEdit,
27
- defaultAutoFocus,
27
+ autoFocus,
28
28
  value,
29
29
  editorApi,
30
30
  onSave,
@@ -36,7 +36,6 @@ const InlineEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
36
36
  onExpandEditorToggle,
37
37
  handelEnableEdit
38
38
  } = _ref;
39
- console.log('defaultAutoFocus', defaultAutoFocus);
40
39
  const [slateValue, setSlateValue] = (0, _react.useState)(value);
41
40
  const focusRangeRef = (0, _react.useRef)(null);
42
41
  const editor = (0, _react.useMemo)(() => {
@@ -103,7 +102,7 @@ const InlineEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
103
102
  const timer = setTimeout(() => {
104
103
  editor.forceNormalize = false;
105
104
  if (!enableEdit) return;
106
- if (!defaultAutoFocus) return;
105
+ if (!autoFocus) return;
107
106
  focusNode(editor);
108
107
  }, 300);
109
108
  return () => {
@@ -117,7 +116,7 @@ const InlineEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
117
116
  editor.hasMovedSelection = false;
118
117
  return;
119
118
  }
120
- if (!defaultAutoFocus) return;
119
+ if (!autoFocus) return;
121
120
  focusNode(editor, focusRangeRef.current);
122
121
  // eslint-disable-next-line react-hooks/exhaustive-deps
123
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,7 +17,7 @@ require("./index.css");
17
17
  const LongTextInlineEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
18
18
  let {
19
19
  isAlwaysEnableEdit = false,
20
- defaultAutoFocus = true,
20
+ autoFocus = true,
21
21
  autoSave,
22
22
  isCheckBrowser,
23
23
  saveDelay,
@@ -107,7 +107,7 @@ const LongTextInlineEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) =>
107
107
  isCheckBrowser: isCheckBrowser,
108
108
  isImageUploadOnly: isImageUploadOnly,
109
109
  isSupportMultipleFiles: isSupportMultipleFiles,
110
- defaultAutoFocus: defaultAutoFocus,
110
+ autoFocus: autoFocus,
111
111
  editorApi: editorApi,
112
112
  onSaveEditorValue: onSaveEditorValue,
113
113
  onEditorValueChanged: onEditorValueChanged
@@ -25,7 +25,7 @@ const NormalEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
25
25
  isCheckBrowser = false,
26
26
  isImageUploadOnly = true,
27
27
  isSupportMultipleFiles = false,
28
- defaultAutoFocus,
28
+ autoFocus,
29
29
  editorApi,
30
30
  onSaveEditorValue,
31
31
  onEditorValueChanged
@@ -122,7 +122,7 @@ const NormalEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
122
122
  ref: editorRef,
123
123
  enableEdit: enableEdit,
124
124
  isInline: true,
125
- defaultAutoFocus: defaultAutoFocus,
125
+ autoFocus: autoFocus,
126
126
  isImageUploadOnly: isImageUploadOnly,
127
127
  isSupportMultipleFiles: isSupportMultipleFiles,
128
128
  value: valueRef.current.text,
@@ -16,7 +16,7 @@ const SimpleEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
16
16
  let {
17
17
  isInline,
18
18
  isFetching,
19
- defaultAutoFocus,
19
+ autoFocus,
20
20
  value,
21
21
  focusEnd = false,
22
22
  editorApi,
@@ -60,7 +60,7 @@ const SimpleEditor = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
60
60
  isSupportFormula: !!mathJaxSource,
61
61
  value: richValue,
62
62
  focusEnd,
63
- defaultAutoFocus,
63
+ autoFocus,
64
64
  editorApi: editorApi,
65
65
  onSave: propsOnSave,
66
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-alpha.1",
3
+ "version": "2.0.34beta",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {