@seafile/seafile-editor 2.0.49 → 2.0.51-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.
- package/dist/extension/plugins/check-list/render-elem.js +3 -1
- package/dist/extension/plugins/link/helper.js +7 -2
- package/dist/extension/plugins/link/render-elem/index.js +8 -4
- package/dist/slate-convert/html-to-slate/rules/list.js +39 -12
- package/dist/slate-convert/slate-to-md/transform.js +2 -1
- package/package.json +1 -1
|
@@ -17,6 +17,7 @@ const renderCheckListItem = (_ref, editor) => {
|
|
|
17
17
|
children,
|
|
18
18
|
element
|
|
19
19
|
} = _ref;
|
|
20
|
+
const isReadonly = (0, _slateReact.useReadOnly)();
|
|
20
21
|
const {
|
|
21
22
|
id,
|
|
22
23
|
checked = false
|
|
@@ -43,7 +44,8 @@ const renderCheckListItem = (_ref, editor) => {
|
|
|
43
44
|
}, /*#__PURE__*/_react.default.createElement("input", {
|
|
44
45
|
type: "checkbox",
|
|
45
46
|
onChange: onChange,
|
|
46
|
-
checked: checked
|
|
47
|
+
checked: checked,
|
|
48
|
+
disabled: isReadonly
|
|
47
49
|
})), children);
|
|
48
50
|
};
|
|
49
51
|
var _default = exports.default = renderCheckListItem;
|
|
@@ -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.upsertLinkText = exports.updateLink = exports.unWrapLinkNode = exports.isMenuDisabled = exports.isLinkType = exports.insertSeafileLink = exports.insertLink = exports.getLinkInfo = exports.generateLinkNode = void 0;
|
|
7
|
+
exports.upsertLinkText = exports.updateLink = exports.unWrapLinkNode = exports.isMenuDisabled = exports.isLinkType = exports.insertSeafileLink = exports.insertLink = exports.getLinkInfo = exports.getElementHref = exports.generateLinkNode = void 0;
|
|
8
8
|
var _slate = require("slate");
|
|
9
9
|
var _slugid = _interopRequireDefault(require("slugid"));
|
|
10
10
|
var _queries = require("../../core/queries");
|
|
@@ -171,6 +171,11 @@ const insertSeafileLink = _ref => {
|
|
|
171
171
|
}
|
|
172
172
|
};
|
|
173
173
|
exports.insertSeafileLink = insertSeafileLink;
|
|
174
|
+
const getElementHref = element => {
|
|
175
|
+
if (!element) return '';
|
|
176
|
+
return element.href || element.url;
|
|
177
|
+
};
|
|
178
|
+
exports.getElementHref = getElementHref;
|
|
174
179
|
const getLinkInfo = editor => {
|
|
175
180
|
const isLinkNode = isLinkType(editor);
|
|
176
181
|
if (!isLinkNode) return null;
|
|
@@ -182,7 +187,7 @@ const getLinkInfo = editor => {
|
|
|
182
187
|
const [node, path] = match;
|
|
183
188
|
const showedText = (0, _queries.getEditorString)(editor, path);
|
|
184
189
|
return {
|
|
185
|
-
linkUrl: node
|
|
190
|
+
linkUrl: getElementHref(node),
|
|
186
191
|
linkTitle: showedText || node.title,
|
|
187
192
|
path: path
|
|
188
193
|
};
|
|
@@ -75,8 +75,12 @@ const renderLink = (_ref, editor) => {
|
|
|
75
75
|
const onHrefClick = (0, _react.useCallback)(e => {
|
|
76
76
|
e.preventDefault();
|
|
77
77
|
}, []);
|
|
78
|
+
const url = (0, _helper.getElementHref)(element);
|
|
78
79
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/(0, _react.isValidElement)(render) ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/(0, _react.cloneElement)(render, {
|
|
79
|
-
element
|
|
80
|
+
element: {
|
|
81
|
+
...element,
|
|
82
|
+
url
|
|
83
|
+
},
|
|
80
84
|
isShowPopover,
|
|
81
85
|
onLinkClick,
|
|
82
86
|
onHrefClick,
|
|
@@ -85,16 +89,16 @@ const renderLink = (_ref, editor) => {
|
|
|
85
89
|
editor
|
|
86
90
|
})) : /*#__PURE__*/_react.default.createElement("span", Object.assign({
|
|
87
91
|
onClick: onLinkClick,
|
|
88
|
-
"data-url":
|
|
92
|
+
"data-url": url,
|
|
89
93
|
className: (0, _classnames.default)('sf-virtual-link', {
|
|
90
94
|
selected: isShowPopover
|
|
91
95
|
})
|
|
92
96
|
}, attributes), /*#__PURE__*/_react.default.createElement("a", {
|
|
93
|
-
href:
|
|
97
|
+
href: url,
|
|
94
98
|
onClick: onHrefClick
|
|
95
99
|
}, children)), isLinkActive && isShowPopover && /*#__PURE__*/_react.default.createElement(_linkPopover.default, {
|
|
96
100
|
popoverPosition: popoverPosition,
|
|
97
|
-
linkUrl:
|
|
101
|
+
linkUrl: url,
|
|
98
102
|
editor: editor,
|
|
99
103
|
onClosePopover: onClosePopover
|
|
100
104
|
}));
|
|
@@ -30,22 +30,49 @@ const listRule = (element, parseChild) => {
|
|
|
30
30
|
children: parseChild(childNodes)
|
|
31
31
|
};
|
|
32
32
|
}
|
|
33
|
-
if (nodeName === 'LI'
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
33
|
+
if (nodeName === 'LI') {
|
|
34
|
+
const parsedChildren = parseChild(childNodes);
|
|
35
|
+
const normalizedChildren = Array.isArray(parsedChildren) ? parsedChildren : parsedChildren ? [parsedChildren] : [];
|
|
36
|
+
const listItemChildren = [];
|
|
37
|
+
let inlineChildren = [];
|
|
38
|
+
const appendInlineParagraph = () => {
|
|
39
|
+
if (inlineChildren.length === 0) return;
|
|
40
|
+
listItemChildren.push({
|
|
41
|
+
id: _slugid.default.nice(),
|
|
42
|
+
type: _constants.PARAGRAPH,
|
|
43
|
+
children: inlineChildren
|
|
44
|
+
});
|
|
45
|
+
inlineChildren = [];
|
|
38
46
|
};
|
|
39
|
-
|
|
40
|
-
|
|
47
|
+
normalizedChildren.forEach(child => {
|
|
48
|
+
if (!child) return;
|
|
49
|
+
const isInlineNode = !child.type || _constants.INLINE_LEVEL_TYPES.includes(child.type);
|
|
50
|
+
if (isInlineNode) {
|
|
51
|
+
inlineChildren.push(child);
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
appendInlineParagraph();
|
|
55
|
+
listItemChildren.push(child);
|
|
56
|
+
});
|
|
57
|
+
appendInlineParagraph();
|
|
58
|
+
if (listItemChildren.length === 0) {
|
|
59
|
+
listItemChildren.push({
|
|
60
|
+
id: _slugid.default.nice(),
|
|
61
|
+
type: _constants.PARAGRAPH,
|
|
62
|
+
children: [(0, _core.generateDefaultText)()]
|
|
63
|
+
});
|
|
64
|
+
} else if ([_constants.UNORDERED_LIST, _constants.ORDERED_LIST].includes(listItemChildren[0].type)) {
|
|
65
|
+
// Ensure nested list item content starts with a paragraph.
|
|
66
|
+
listItemChildren.unshift({
|
|
67
|
+
id: _slugid.default.nice(),
|
|
68
|
+
type: _constants.PARAGRAPH,
|
|
69
|
+
children: [(0, _core.generateDefaultText)()]
|
|
70
|
+
});
|
|
71
|
+
}
|
|
41
72
|
return {
|
|
42
73
|
id: _slugid.default.nice(),
|
|
43
74
|
type: _constants.LIST_ITEM,
|
|
44
|
-
children:
|
|
45
|
-
id: _slugid.default.nice(),
|
|
46
|
-
type: _constants.PARAGRAPH,
|
|
47
|
-
children: parseChild(childNodes)
|
|
48
|
-
}]
|
|
75
|
+
children: listItemChildren
|
|
49
76
|
};
|
|
50
77
|
}
|
|
51
78
|
if (PARAGRAPH_TAGS.includes(nodeName) && parentElement && parentElement.nodeName === 'LI') {
|
|
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.formatSlateToMd = void 0;
|
|
8
8
|
var _slate = require("slate");
|
|
9
9
|
var _isPunctuationMark = _interopRequireDefault(require("../../utils/is-punctuation-mark"));
|
|
10
|
+
var _helper = require("../../extension/plugins/link/helper");
|
|
10
11
|
const formatInlineChildren = children => {
|
|
11
12
|
return children.reduce((ret, item, index) => {
|
|
12
13
|
if (index === 0) return [item];
|
|
@@ -123,7 +124,7 @@ const transformInlineChildren = (result, item) => {
|
|
|
123
124
|
if (item.type && item.type === 'link') {
|
|
124
125
|
const link = {
|
|
125
126
|
type: 'link',
|
|
126
|
-
url: item
|
|
127
|
+
url: (0, _helper.getElementHref)(item),
|
|
127
128
|
title: item.title || null,
|
|
128
129
|
children: [transformTextNode(item.children[0])]
|
|
129
130
|
};
|