@seafile/sdoc-editor 3.0.219 → 3.0.221
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/assets/css/sdoc-editor-plugins.css +70 -0
- package/dist/extension/plugins/html/rules/link.js +40 -0
- package/dist/extension/plugins/image/helpers.js +33 -1
- package/dist/extension/plugins/image/hover-menu/index.js +122 -30
- package/dist/extension/plugins/image/link-helpers.js +58 -0
- package/dist/extension/plugins/image/plugin.js +3 -2
- package/dist/extension/plugins/image/popover/image-link-popover/helpers.js +80 -0
- package/dist/extension/plugins/image/popover/image-link-popover/index.css +135 -0
- package/dist/extension/plugins/image/popover/image-link-popover/index.js +143 -0
- package/dist/extension/plugins/image/render-elem.js +124 -47
- package/dist/extension/plugins/table/plugin.js +31 -7
- package/dist/slate-convert/html-to-slate/rules/link.js +40 -0
- package/dist/slate-convert/md-to-slate/transform.js +22 -2
- package/dist/slate-convert/slate-to-md/transform.js +17 -1
- package/package.json +2 -2
|
@@ -5,12 +5,52 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports["default"] = void 0;
|
|
8
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
|
|
8
9
|
var _slugid = _interopRequireDefault(require("slugid"));
|
|
10
|
+
var _linkHelpers = require("../../../extension/plugins/image/link-helpers");
|
|
9
11
|
var _constants = require("../constants");
|
|
10
12
|
var linkRule = function linkRule(element, parseChild) {
|
|
11
13
|
var nodeName = element.nodeName;
|
|
12
14
|
var content = element.textContent || element.getAttribute('title') || element.getAttribute('href');
|
|
13
15
|
if (nodeName === 'A') {
|
|
16
|
+
var image = (0, _linkHelpers.getOnlyImageChild)(element);
|
|
17
|
+
if (image) {
|
|
18
|
+
var href = (0, _linkHelpers.normalizeWebUrl)(element.getAttribute('href'));
|
|
19
|
+
return {
|
|
20
|
+
id: _slugid["default"].nice(),
|
|
21
|
+
type: _constants.IMAGE,
|
|
22
|
+
data: (0, _objectSpread2["default"])({
|
|
23
|
+
src: image.getAttribute('src')
|
|
24
|
+
}, href && {
|
|
25
|
+
href: href
|
|
26
|
+
}),
|
|
27
|
+
children: [{
|
|
28
|
+
text: '',
|
|
29
|
+
id: _slugid["default"].nice()
|
|
30
|
+
}]
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
if (element.querySelector('img')) {
|
|
34
|
+
var _href = (0, _linkHelpers.normalizeWebUrl)(element.getAttribute('href'));
|
|
35
|
+
return parseChild(element.childNodes).map(function (child) {
|
|
36
|
+
if (!_href) return child;
|
|
37
|
+
if (child.type === _constants.IMAGE) return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, child), {}, {
|
|
38
|
+
data: (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, child.data), {}, {
|
|
39
|
+
href: _href
|
|
40
|
+
})
|
|
41
|
+
});
|
|
42
|
+
if (typeof child.text === 'string') {
|
|
43
|
+
return {
|
|
44
|
+
id: _slugid["default"].nice(),
|
|
45
|
+
type: _constants.LINK,
|
|
46
|
+
href: _href,
|
|
47
|
+
title: element.getAttribute('title'),
|
|
48
|
+
children: [child]
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
return child;
|
|
52
|
+
});
|
|
53
|
+
}
|
|
14
54
|
return {
|
|
15
55
|
id: _slugid["default"].nice(),
|
|
16
56
|
type: _constants.LINK,
|
|
@@ -9,6 +9,7 @@ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/
|
|
|
9
9
|
var _slugid = _interopRequireDefault(require("slugid"));
|
|
10
10
|
var _elementType = require("../../extension/constants/element-type");
|
|
11
11
|
var _core = require("../../extension/core");
|
|
12
|
+
var _linkHelpers = require("../../extension/plugins/image/link-helpers");
|
|
12
13
|
var _htmlToSlate = _interopRequireDefault(require("../html-to-slate"));
|
|
13
14
|
var INLINE_KEY_MAP = {
|
|
14
15
|
strong: 'bold',
|
|
@@ -27,6 +28,25 @@ var _applyMarkForInlineItem = function applyMarkForInlineItem(result, item) {
|
|
|
27
28
|
type: 'text',
|
|
28
29
|
value: ''
|
|
29
30
|
} : children[0];
|
|
31
|
+
if (child.type === _elementType.IMAGE) {
|
|
32
|
+
var href = (0, _linkHelpers.normalizeWebUrl)(item.url);
|
|
33
|
+
var image = {
|
|
34
|
+
id: _slugid["default"].nice(),
|
|
35
|
+
type: _elementType.IMAGE,
|
|
36
|
+
data: (0, _objectSpread2["default"])((0, _objectSpread2["default"])((0, _objectSpread2["default"])({
|
|
37
|
+
src: child.url
|
|
38
|
+
}, child.title && {
|
|
39
|
+
title: child.title
|
|
40
|
+
}), child.alt && {
|
|
41
|
+
alt: child.alt
|
|
42
|
+
}), href && {
|
|
43
|
+
href: href
|
|
44
|
+
}),
|
|
45
|
+
children: [(0, _core.generateDefaultText)()]
|
|
46
|
+
};
|
|
47
|
+
result.push([(0, _core.generateDefaultText)(), image, (0, _core.generateDefaultText)()]);
|
|
48
|
+
return result;
|
|
49
|
+
}
|
|
30
50
|
|
|
31
51
|
// Mention node
|
|
32
52
|
if ((_item$title = item.title) !== null && _item$title !== void 0 && (_item$title$startsWit = _item$title.startsWith) !== null && _item$title$startsWit !== void 0 && _item$title$startsWit.call(_item$title, '__sdoc_mention__username')) {
|
|
@@ -69,13 +89,13 @@ var _applyMarkForInlineItem = function applyMarkForInlineItem(result, item) {
|
|
|
69
89
|
}), item.height && {
|
|
70
90
|
height: item.height
|
|
71
91
|
});
|
|
72
|
-
var
|
|
92
|
+
var _image = {
|
|
73
93
|
id: _slugid["default"].nice(),
|
|
74
94
|
data: data,
|
|
75
95
|
type: _elementType.IMAGE,
|
|
76
96
|
children: [(0, _core.generateDefaultText)()]
|
|
77
97
|
};
|
|
78
|
-
result.push([(0, _core.generateDefaultText)(),
|
|
98
|
+
result.push([(0, _core.generateDefaultText)(), _image, (0, _core.generateDefaultText)()]);
|
|
79
99
|
return result;
|
|
80
100
|
}
|
|
81
101
|
|
|
@@ -8,7 +8,11 @@ exports.formatSlateToMd = void 0;
|
|
|
8
8
|
var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/createForOfIteratorHelper"));
|
|
9
9
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
|
|
10
10
|
var _slate = require("@seafile/slate");
|
|
11
|
+
var _linkHelpers = require("../../extension/plugins/image/link-helpers");
|
|
11
12
|
var _isPunctuationMark = _interopRequireDefault(require("../../utils/is-punctuation-mark"));
|
|
13
|
+
var escapeHtmlAttribute = function escapeHtmlAttribute(value) {
|
|
14
|
+
return String(value).replace(/&/g, '&').replace(/"/g, '"').replace(/</g, '<').replace(/>/g, '>');
|
|
15
|
+
};
|
|
12
16
|
var generateDefaultText = function generateDefaultText(value) {
|
|
13
17
|
return {
|
|
14
18
|
type: 'text',
|
|
@@ -73,7 +77,19 @@ var transformInlineChildren = function transformInlineChildren(result, item) {
|
|
|
73
77
|
if (data.height || data.width) {
|
|
74
78
|
image = {
|
|
75
79
|
type: 'html',
|
|
76
|
-
value: "<img src=\"".concat(data.src, "\" alt=\"").concat(data.alt, "\" title=\"").concat(data.title, "\" width=\"").concat(data.width, "\" height=\"").concat(data.height, "\" />")
|
|
80
|
+
value: "<img src=\"".concat(escapeHtmlAttribute(data.src), "\" alt=\"").concat(escapeHtmlAttribute(data.alt), "\" title=\"").concat(escapeHtmlAttribute(data.title), "\" width=\"").concat(escapeHtmlAttribute(data.width), "\" height=\"").concat(escapeHtmlAttribute(data.height), "\" />")
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
var imageLinkUrl = (0, _linkHelpers.normalizeWebUrl)(data.href);
|
|
84
|
+
if (imageLinkUrl) {
|
|
85
|
+
image = image.type === 'html' ? {
|
|
86
|
+
type: 'html',
|
|
87
|
+
value: "<a href=\"".concat(escapeHtmlAttribute(imageLinkUrl), "\">").concat(image.value, "</a>")
|
|
88
|
+
} : {
|
|
89
|
+
type: 'link',
|
|
90
|
+
url: imageLinkUrl,
|
|
91
|
+
title: null,
|
|
92
|
+
children: [image]
|
|
77
93
|
};
|
|
78
94
|
}
|
|
79
95
|
result.push(image);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seafile/sdoc-editor",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.221",
|
|
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": "
|
|
75
|
+
"gitHead": "30ff08d00b06b38e8d9f4e005ac5b2f8bfcccae6"
|
|
76
76
|
}
|