@seafile/sdoc-editor 3.0.0 → 3.0.1
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/commons/file-link-preview/index.css +1 -1
- package/dist/extension/commons/select-file-dialog/index.css +1 -0
- package/dist/extension/commons/select-file-dialog/list-view/index.css +6 -0
- package/dist/extension/commons/select-file-dialog/tree-view/index.css +7 -0
- package/dist/extension/constants/index.js +9 -1
- package/dist/extension/plugins/blockquote/plugin.js +2 -7
- package/dist/extension/plugins/link/dialog/add-link-dialog/index.css +46 -1
- package/dist/extension/plugins/link/dialog/add-link-dialog/index.js +45 -26
- package/dist/extension/plugins/link/helpers.js +2 -1
- package/package.json +2 -2
|
@@ -76,6 +76,13 @@
|
|
|
76
76
|
|
|
77
77
|
.sdoc-files-tree .sdoc-file-info .sdoc-file-name {
|
|
78
78
|
font-size: 14px;
|
|
79
|
+
white-space: nowrap;
|
|
80
|
+
overflow: hidden;
|
|
81
|
+
text-overflow: ellipsis;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.sdoc-files-tree .sdoc-file-info:has(.sdoc-file-checked) .sdoc-file-name {
|
|
85
|
+
padding-right: 32px;
|
|
79
86
|
}
|
|
80
87
|
|
|
81
88
|
.sdoc-files-tree .sdoc-folder-children {
|
|
@@ -201,7 +201,7 @@ Object.defineProperty(exports, "HEADER6", {
|
|
|
201
201
|
return _elementType.HEADER6;
|
|
202
202
|
}
|
|
203
203
|
});
|
|
204
|
-
exports.HEADER_TITLE_MAP = exports.HEADERS = void 0;
|
|
204
|
+
exports.HEADER_TITLE_MAP = exports.HEADER_TAG = exports.HEADERS = void 0;
|
|
205
205
|
Object.defineProperty(exports, "IMAGE", {
|
|
206
206
|
enumerable: true,
|
|
207
207
|
get: function get() {
|
|
@@ -498,6 +498,14 @@ var _menusConfig = require("./menus-config");
|
|
|
498
498
|
var _MOUSE_ENTER_EVENT_DI; // extension plugin
|
|
499
499
|
// eslint-disable-next-line no-duplicate-imports
|
|
500
500
|
var HEADERS = exports.HEADERS = [_elementType.HEADER1, _elementType.HEADER2, _elementType.HEADER3, _elementType.HEADER4, _elementType.HEADER5, _elementType.HEADER6];
|
|
501
|
+
var HEADER_TAG = exports.HEADER_TAG = {
|
|
502
|
+
header1: 'H1',
|
|
503
|
+
header2: 'H2',
|
|
504
|
+
header3: 'H3',
|
|
505
|
+
header4: 'H4',
|
|
506
|
+
header5: 'H5',
|
|
507
|
+
header6: 'H6'
|
|
508
|
+
};
|
|
501
509
|
var HEADER_TITLE_MAP = exports.HEADER_TITLE_MAP = (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, _elementType.TITLE, 'Title'), _elementType.SUBTITLE, 'Subtitle'), _elementType.HEADER1, 'Header_one'), _elementType.HEADER2, 'Header_two'), _elementType.HEADER3, 'Header_three'), _elementType.HEADER4, 'Header_four'), _elementType.HEADER5, 'Header_five'), _elementType.HEADER6, 'Header_six'), _elementType.PARAGRAPH, 'Paragraph');
|
|
502
510
|
var TRANSPARENT = exports.TRANSPARENT = 'transparent';
|
|
503
511
|
var CLIPBOARD_FORMAT_KEY = exports.CLIPBOARD_FORMAT_KEY = 'x-slate-fragment';
|
|
@@ -110,7 +110,6 @@ var withBlockquote = function withBlockquote(editor) {
|
|
|
110
110
|
var elements = (0, _helpers.getFormattedElements)(data.slice(0, lastIndex + 1));
|
|
111
111
|
var restElements = (0, _helpers.getFormattedRestElements)(data.slice(lastIndex + 1));
|
|
112
112
|
var path = _slate.Editor.path(newEditor, newEditor.selection);
|
|
113
|
-
|
|
114
113
|
// Insert elements of quote block
|
|
115
114
|
if (restElements.length !== 0) {
|
|
116
115
|
if (_slate.Range.isCollapsed(editor.selection)) {
|
|
@@ -119,17 +118,13 @@ var withBlockquote = function withBlockquote(editor) {
|
|
|
119
118
|
var parentNodeEntry = _slate.Editor.parent(editor, paragraphEntry[1]);
|
|
120
119
|
if (parentNodeEntry && parentNodeEntry[0].type === _constants.BLOCKQUOTE) {
|
|
121
120
|
if (!_slate.Node.string(paragraphEntry[0]).length) {
|
|
122
|
-
|
|
123
|
-
if (node.type === _constants.BLOCKQUOTE) {
|
|
124
|
-
node.type = _constants.PARAGRAPH;
|
|
125
|
-
}
|
|
126
|
-
});
|
|
127
|
-
insertFragment(data);
|
|
121
|
+
insertFragment(restElements);
|
|
128
122
|
return;
|
|
129
123
|
}
|
|
130
124
|
}
|
|
131
125
|
}
|
|
132
126
|
}
|
|
127
|
+
|
|
133
128
|
// Insert text when inserting a single line paragraph
|
|
134
129
|
if (restElements.length === 1 && restElements[0].type === _constants.PARAGRAPH) {
|
|
135
130
|
var string = _slate.Node.string(restElements[0]);
|
|
@@ -107,7 +107,33 @@
|
|
|
107
107
|
|
|
108
108
|
.link-block-wrapper .link-block-container {
|
|
109
109
|
width: 100%;
|
|
110
|
-
|
|
110
|
+
padding: 5px 0;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.link-block-wrapper .link-header-block-container {
|
|
114
|
+
width: 100%;
|
|
115
|
+
padding: 5px 0;
|
|
116
|
+
display: flex;
|
|
117
|
+
color: #495057;
|
|
118
|
+
cursor: pointer;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.link-block-wrapper .link-header-block-container:hover {
|
|
122
|
+
background-color: rgb(245, 245, 245);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.link-block-wrapper .link-header-block-container .heading-prefix {
|
|
126
|
+
margin-right: 6px;
|
|
127
|
+
padding-left: 0.75rem;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
.link-block-wrapper .link-header-block-container .linked-header-block-item {
|
|
131
|
+
display: block;
|
|
132
|
+
font-size: 15px;
|
|
133
|
+
margin-right: 5px;
|
|
134
|
+
overflow: hidden;
|
|
135
|
+
white-space: nowrap;
|
|
136
|
+
text-overflow: ellipsis;
|
|
111
137
|
}
|
|
112
138
|
|
|
113
139
|
.link-block-wrapper .link-block-container .linked-block-item {
|
|
@@ -117,6 +143,25 @@
|
|
|
117
143
|
padding-left: 0.75rem;
|
|
118
144
|
}
|
|
119
145
|
|
|
146
|
+
.selected-linked-block-wrapper .selected-linked-block .linked-header-block-item,
|
|
147
|
+
.selected-linked-block .sdoc-header-1,
|
|
148
|
+
.selected-linked-block .sdoc-header-2,
|
|
149
|
+
.selected-linked-block .sdoc-header-3,
|
|
150
|
+
.selected-linked-block .sdoc-header-4,
|
|
151
|
+
.selected-linked-block .sdoc-header-5,
|
|
152
|
+
.selected-linked-block .sdoc-header-6 {
|
|
153
|
+
color: #495057;
|
|
154
|
+
font-size: 15px !important;
|
|
155
|
+
font-weight: normal;
|
|
156
|
+
overflow: hidden;
|
|
157
|
+
white-space: nowrap;
|
|
158
|
+
text-overflow: ellipsis;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.selected-linked-block-wrapper .selected-linked-block .heading-prefix {
|
|
162
|
+
display: none;
|
|
163
|
+
}
|
|
164
|
+
|
|
120
165
|
.link-block-wrapper .select-block-wrapper blockquote,
|
|
121
166
|
.link-block-wrapper .link-block-container blockquote {
|
|
122
167
|
border-left: 4px solid #ddd;
|
|
@@ -64,30 +64,34 @@ var AddLinkDialog = function AddLinkDialog(_ref) {
|
|
|
64
64
|
_useState10 = (0, _slicedToArray2["default"])(_useState1, 2),
|
|
65
65
|
selectedBlockId = _useState10[0],
|
|
66
66
|
setSelectedBlockId = _useState10[1];
|
|
67
|
-
var _useState11 = (0, _react.useState)(
|
|
67
|
+
var _useState11 = (0, _react.useState)([]),
|
|
68
68
|
_useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
|
|
69
|
-
|
|
70
|
-
|
|
69
|
+
headerList = _useState12[0],
|
|
70
|
+
setheaderList = _useState12[1];
|
|
71
71
|
var _useState13 = (0, _react.useState)(false),
|
|
72
72
|
_useState14 = (0, _slicedToArray2["default"])(_useState13, 2),
|
|
73
|
-
|
|
74
|
-
|
|
73
|
+
isOpenSelect = _useState14[0],
|
|
74
|
+
setIsOpenSelect = _useState14[1];
|
|
75
75
|
var _useState15 = (0, _react.useState)(false),
|
|
76
76
|
_useState16 = (0, _slicedToArray2["default"])(_useState15, 2),
|
|
77
|
-
|
|
78
|
-
|
|
77
|
+
isOpenSelectHeader = _useState16[0],
|
|
78
|
+
setIsOpenSelectHeader = _useState16[1];
|
|
79
79
|
var _useState17 = (0, _react.useState)(false),
|
|
80
80
|
_useState18 = (0, _slicedToArray2["default"])(_useState17, 2),
|
|
81
|
-
|
|
82
|
-
|
|
81
|
+
isOpenSelectImageBlock = _useState18[0],
|
|
82
|
+
setIsOpenSelectImageBlock = _useState18[1];
|
|
83
83
|
var _useState19 = (0, _react.useState)(false),
|
|
84
84
|
_useState20 = (0, _slicedToArray2["default"])(_useState19, 2),
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
var _useState21 = (0, _react.useState)(
|
|
85
|
+
isOpenSelectCodeBlock = _useState20[0],
|
|
86
|
+
setIsOpenSelectCodeBlock = _useState20[1];
|
|
87
|
+
var _useState21 = (0, _react.useState)(false),
|
|
88
88
|
_useState22 = (0, _slicedToArray2["default"])(_useState21, 2),
|
|
89
|
-
|
|
90
|
-
|
|
89
|
+
isOpenSelectBlockquote = _useState22[0],
|
|
90
|
+
setIsOpenSelectBlockquote = _useState22[1];
|
|
91
|
+
var _useState23 = (0, _react.useState)(''),
|
|
92
|
+
_useState24 = (0, _slicedToArray2["default"])(_useState23, 2),
|
|
93
|
+
htmlString = _useState24[0],
|
|
94
|
+
setHtmlString = _useState24[1];
|
|
91
95
|
var submit = (0, _react.useCallback)(function () {
|
|
92
96
|
setLinkErrorMessage('');
|
|
93
97
|
setTitleErrorMessage('');
|
|
@@ -144,7 +148,7 @@ var AddLinkDialog = function AddLinkDialog(_ref) {
|
|
|
144
148
|
}));
|
|
145
149
|
}, [closeDialog]);
|
|
146
150
|
var handleOnChangeBlock = function handleOnChangeBlock(e) {
|
|
147
|
-
var block = e.target.closest('.linked-block-item');
|
|
151
|
+
var block = e.target.closest('.linked-block-item') || e.currentTarget.querySelector('.linked-header-block-item');
|
|
148
152
|
if (block) {
|
|
149
153
|
var clone = block.cloneNode(true);
|
|
150
154
|
var displayContainer = document.getElementById('selected-block-display');
|
|
@@ -173,8 +177,9 @@ var AddLinkDialog = function AddLinkDialog(_ref) {
|
|
|
173
177
|
return function () {
|
|
174
178
|
return clearTimeout(timer);
|
|
175
179
|
};
|
|
176
|
-
}, []);
|
|
180
|
+
}, [linked_id]);
|
|
177
181
|
(0, _react.useEffect)(function () {
|
|
182
|
+
// Get codeblock,blockquote,image html
|
|
178
183
|
var genHtml = /*#__PURE__*/function () {
|
|
179
184
|
var _ref3 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/(0, _regenerator2["default"])().m(function _callee() {
|
|
180
185
|
var list, mdValue, ids, processor, file;
|
|
@@ -207,7 +212,15 @@ var AddLinkDialog = function AddLinkDialog(_ref) {
|
|
|
207
212
|
}();
|
|
208
213
|
genHtml();
|
|
209
214
|
}, [editor.children]);
|
|
210
|
-
|
|
215
|
+
(0, _react.useEffect)(function () {
|
|
216
|
+
// Get header node list
|
|
217
|
+
var headerList = editor.children.filter(function (node) {
|
|
218
|
+
return _slate.Element.isElement(node) && !(0, _helpers.isEmptyNode)(node) && _constants.HEADERS.includes(node.type);
|
|
219
|
+
});
|
|
220
|
+
if (headerList.length > 0) {
|
|
221
|
+
setheaderList(headerList);
|
|
222
|
+
}
|
|
223
|
+
}, [editor.children]);
|
|
211
224
|
var imagesHTML = (0, _helpers.parseHtmlString)(htmlString, 'img');
|
|
212
225
|
var codeBlockHTML = (0, _helpers.parseHtmlString)(htmlString, 'pre');
|
|
213
226
|
var blockquoteHTML = (0, _helpers.parseHtmlString)(htmlString, 'blockquote');
|
|
@@ -279,7 +292,7 @@ var AddLinkDialog = function AddLinkDialog(_ref) {
|
|
|
279
292
|
className: "sdoc-file-icon sdoc-file-icon-toggle sdocfont sdoc-right-slide"
|
|
280
293
|
})), isOpenSelect && /*#__PURE__*/_react["default"].createElement("div", {
|
|
281
294
|
className: "link-block-wrapper"
|
|
282
|
-
},
|
|
295
|
+
}, headerList.length > 0 && /*#__PURE__*/_react["default"].createElement("div", {
|
|
283
296
|
className: (0, _classnames["default"])('select-block-wrapper', {
|
|
284
297
|
'expanded': isOpenSelectHeader
|
|
285
298
|
}),
|
|
@@ -290,14 +303,20 @@ var AddLinkDialog = function AddLinkDialog(_ref) {
|
|
|
290
303
|
className: "sdoc-file-icon sdoc-file-icon-toggle sdocfont sdoc-right-slide"
|
|
291
304
|
}), /*#__PURE__*/_react["default"].createElement("div", {
|
|
292
305
|
className: "title"
|
|
293
|
-
}, t('Header'))), isOpenSelectHeader &&
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
306
|
+
}, t('Header'))), isOpenSelectHeader && headerList.map(function (header, key) {
|
|
307
|
+
var headerContext = _slate.Node.string(header);
|
|
308
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
309
|
+
className: "link-header-block-container",
|
|
310
|
+
key: key,
|
|
311
|
+
onClick: function onClick(e) {
|
|
312
|
+
return handleOnChangeBlock(e);
|
|
313
|
+
}
|
|
314
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
315
|
+
className: "heading-prefix"
|
|
316
|
+
}, _constants.HEADER_TAG[header.type]), /*#__PURE__*/_react["default"].createElement("div", {
|
|
317
|
+
"data-id": header.id,
|
|
318
|
+
className: "linked-header-block-item"
|
|
319
|
+
}, headerContext));
|
|
301
320
|
}), imagesHTML && /*#__PURE__*/_react["default"].createElement("div", {
|
|
302
321
|
className: (0, _classnames["default"])('select-block-wrapper', {
|
|
303
322
|
'expanded': isOpenSelectImageBlock
|
|
@@ -252,7 +252,7 @@ var parseHtmlString = exports.parseHtmlString = function parseHtmlString(htmlStr
|
|
|
252
252
|
var parser = new DOMParser();
|
|
253
253
|
var doc = parser.parseFromString(htmlString, 'text/html');
|
|
254
254
|
var resultHtml;
|
|
255
|
-
if (targetType
|
|
255
|
+
if (targetType === 'img') {
|
|
256
256
|
resultHtml = (0, _toConsumableArray2["default"])(doc.querySelectorAll('p:has(img)')).map(function (p) {
|
|
257
257
|
return p.outerHTML;
|
|
258
258
|
}).join('');
|
|
@@ -264,6 +264,7 @@ var parseHtmlString = exports.parseHtmlString = function parseHtmlString(htmlStr
|
|
|
264
264
|
return resultHtml;
|
|
265
265
|
};
|
|
266
266
|
var isEmptyNode = exports.isEmptyNode = function isEmptyNode(node) {
|
|
267
|
+
if (node.type === _constants.IMAGE_BLOCK) return false;
|
|
267
268
|
var text = _slate.Node.string(node);
|
|
268
269
|
return text.trim() === '';
|
|
269
270
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seafile/sdoc-editor",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.1",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"test": "jest",
|
|
@@ -71,5 +71,5 @@
|
|
|
71
71
|
"publishConfig": {
|
|
72
72
|
"access": "public"
|
|
73
73
|
},
|
|
74
|
-
"gitHead": "
|
|
74
|
+
"gitHead": "f4690d913506d3dd6108d97248323e1b9b06ee32"
|
|
75
75
|
}
|