@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.
@@ -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 image = {
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)(), image, (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, '&amp;').replace(/"/g, '&quot;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
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.219",
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": "49d50732b9174eda87f4cdb3647927beda0e6669"
75
+ "gitHead": "30ff08d00b06b38e8d9f4e005ac5b2f8bfcccae6"
76
76
  }