@seafile/sdoc-editor 3.0.212 → 3.0.214
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/android/outline-module.js +3 -1
- package/dist/assets/css/sdoc-editor-plugins.css +4 -0
- package/dist/editor/wiki-editor.js +4 -2
- package/dist/extension/plugins/header/helpers.js +41 -17
- package/dist/extension/plugins/list/render-elem.js +1 -1
- package/dist/extension/render/custom-element.js +2 -1
- package/dist/layout/editor-content.js +2 -1
- package/dist/outline/index.js +15 -4
- package/dist/outline/outline-item.js +27 -9
- package/dist/outline/wiki-outline.js +25 -9
- package/dist/views/sdoc-wiki-ssr-viewer.js +2 -1
- package/dist/wiki-outline/index.js +12 -4
- package/dist/wiki-outline/outline-item.js +20 -3
- package/package.json +2 -2
|
@@ -19,7 +19,9 @@ var updateOutlineValue = exports.updateOutlineValue = function updateOutlineValu
|
|
|
19
19
|
};
|
|
20
20
|
var scrollToOutline = exports.scrollToOutline = function scrollToOutline(item) {
|
|
21
21
|
var id = item.id;
|
|
22
|
-
document.getElementById(id)
|
|
22
|
+
var target = document.getElementById(id);
|
|
23
|
+
if (!target) return false;
|
|
24
|
+
target.scrollIntoView();
|
|
23
25
|
return true;
|
|
24
26
|
};
|
|
25
27
|
var registerOutlineEventHandler = exports.registerOutlineEventHandler = function registerOutlineEventHandler() {
|
|
@@ -178,7 +178,8 @@ var WikiEditor = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
|
178
178
|
slateValue: slateValue,
|
|
179
179
|
showComment: false
|
|
180
180
|
})), !_commonUtils.isMobile && isWikiReadOnly && /*#__PURE__*/_react["default"].createElement(_wikiOutline["default"], {
|
|
181
|
-
doc: slateValue
|
|
181
|
+
doc: slateValue,
|
|
182
|
+
editor: validEditor
|
|
182
183
|
})))));
|
|
183
184
|
}
|
|
184
185
|
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_layout.EditorContainer, {
|
|
@@ -199,7 +200,8 @@ var WikiEditor = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
|
199
200
|
updateSlateValue: onValueChange,
|
|
200
201
|
showComment: showComment
|
|
201
202
|
})), /*#__PURE__*/_react["default"].createElement(_wikiOutline["default"], {
|
|
202
|
-
doc: slateValue
|
|
203
|
+
doc: slateValue,
|
|
204
|
+
editor: validEditor
|
|
203
205
|
}), /*#__PURE__*/_react["default"].createElement(_menu["default"], {
|
|
204
206
|
editor: validEditor,
|
|
205
207
|
className: "wiki-search-and-replace",
|
|
@@ -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.toggleHeaderCollapsed = exports.setHeaderType = exports.setHeaderCollapsed = exports.isSelectionInHeader = exports.isMenuDisabled = exports.isHeaderCollapsed = exports.isHasImage = exports.isElementHiddenByCollapsedHeader = exports.getSkippedHiddenHeaderMovePoint = exports.getHeaderType = exports.getHeaderLevel = exports.getCollapsedHeaderSectionEndIndex = exports.getCollapsedHeaderInsertPath = exports.clearHeaderCollapsedState = void 0;
|
|
7
|
+
exports.toggleHeaderCollapsed = exports.setHeaderType = exports.setHeaderCollapsed = exports.isSelectionInHeader = exports.isMenuDisabled = exports.isHeaderCollapsed = exports.isHasImage = exports.isElementHiddenByCollapsedHeader = exports.getSkippedHiddenHeaderMovePoint = exports.getHeaderType = exports.getHeaderLevel = exports.getCollapsedHeaderSectionEndIndex = exports.getCollapsedHeaderInsertPath = exports.expandCollapsedHeaderAncestors = exports.clearHeaderCollapsedState = void 0;
|
|
8
8
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
|
|
9
9
|
var _slate = require("@seafile/slate");
|
|
10
10
|
var _context = _interopRequireDefault(require("../../../context"));
|
|
@@ -155,6 +155,25 @@ var getSectionEndIndex = function getSectionEndIndex(siblings, startIndex, level
|
|
|
155
155
|
}
|
|
156
156
|
return endIndex;
|
|
157
157
|
};
|
|
158
|
+
var getCollapsedHeaderAncestorEntries = function getCollapsedHeaderAncestorEntries(editor, element, defaultPath) {
|
|
159
|
+
var path = (0, _core.findPath)(editor, element, defaultPath);
|
|
160
|
+
if (!path || path.length !== 1) return [];
|
|
161
|
+
var currentIndex = path[path.length - 1];
|
|
162
|
+
var parentPath = _slate.Path.parent(path);
|
|
163
|
+
var siblings = parentPath.length === 0 ? editor.children : _slate.Node.get(editor, parentPath).children;
|
|
164
|
+
var ancestorEntries = [];
|
|
165
|
+
for (var index = currentIndex - 1; index >= 0; index--) {
|
|
166
|
+
var sibling = siblings[index];
|
|
167
|
+
if (!_slate.Element.isElement(sibling) || !isHeaderCollapsed(editor, sibling, [index])) continue;
|
|
168
|
+
var siblingLevel = getHeaderLevel(sibling.type);
|
|
169
|
+
if (siblingLevel === null) continue;
|
|
170
|
+
var endIndex = getSectionEndIndex(siblings, index, siblingLevel);
|
|
171
|
+
if (currentIndex < endIndex) {
|
|
172
|
+
ancestorEntries.unshift([sibling, [index]]);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
return ancestorEntries;
|
|
176
|
+
};
|
|
158
177
|
var getCollapsedHeaderSectionEndIndex = exports.getCollapsedHeaderSectionEndIndex = function getCollapsedHeaderSectionEndIndex(editor, element, defaultPath) {
|
|
159
178
|
var path = (0, _core.findPath)(editor, element, defaultPath);
|
|
160
179
|
if (!path || path.length !== 1) return null;
|
|
@@ -174,22 +193,27 @@ var getCollapsedHeaderInsertPath = exports.getCollapsedHeaderInsertPath = functi
|
|
|
174
193
|
return [endIndex];
|
|
175
194
|
};
|
|
176
195
|
var isElementHiddenByCollapsedHeader = exports.isElementHiddenByCollapsedHeader = function isElementHiddenByCollapsedHeader(editor, element, defaultPath) {
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
var
|
|
181
|
-
var
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
196
|
+
return getCollapsedHeaderAncestorEntries(editor, element, defaultPath).length > 0;
|
|
197
|
+
};
|
|
198
|
+
var expandCollapsedHeaderAncestors = exports.expandCollapsedHeaderAncestors = function expandCollapsedHeaderAncestors(editor, element, defaultPath) {
|
|
199
|
+
var _editor$onHeaderColla3;
|
|
200
|
+
var ancestorEntries = getCollapsedHeaderAncestorEntries(editor, element, defaultPath);
|
|
201
|
+
if (ancestorEntries.length === 0) return false;
|
|
202
|
+
var collapsedHeaderState = getCollapsedHeaderState();
|
|
203
|
+
var isUpdated = false;
|
|
204
|
+
ancestorEntries.forEach(function (_ref) {
|
|
205
|
+
var _ref2 = (0, _slicedToArray2["default"])(_ref, 2),
|
|
206
|
+
header = _ref2[0],
|
|
207
|
+
path = _ref2[1];
|
|
208
|
+
var headerId = getHeaderId(editor, header, path);
|
|
209
|
+
if (!headerId || !collapsedHeaderState[headerId]) return;
|
|
210
|
+
collapsedHeaderState[headerId] = false;
|
|
211
|
+
isUpdated = true;
|
|
212
|
+
});
|
|
213
|
+
if (!isUpdated) return false;
|
|
214
|
+
persistCollapsedHeaderState(collapsedHeaderState);
|
|
215
|
+
(_editor$onHeaderColla3 = editor.onHeaderCollapseStateChange) === null || _editor$onHeaderColla3 === void 0 ? void 0 : _editor$onHeaderColla3.call(editor);
|
|
216
|
+
return true;
|
|
193
217
|
};
|
|
194
218
|
var getSkippedHiddenHeaderMovePoint = exports.getSkippedHiddenHeaderMovePoint = function getSkippedHiddenHeaderMovePoint(editor, point) {
|
|
195
219
|
var reverse = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
@@ -66,7 +66,7 @@ var renderListItem = exports.renderListItem = function renderListItem(props, edi
|
|
|
66
66
|
onMouseDown: togglePrefix
|
|
67
67
|
}), /*#__PURE__*/_react["default"].createElement("span", {
|
|
68
68
|
className: "sdoc-li-divider"
|
|
69
|
-
})), /*#__PURE__*/_react["default"].createElement("
|
|
69
|
+
})), /*#__PURE__*/_react["default"].createElement("div", {
|
|
70
70
|
className: "sdoc-li-content"
|
|
71
71
|
}, newChildren));
|
|
72
72
|
};
|
|
@@ -33,7 +33,8 @@ var CustomRenderElement = function CustomRenderElement(props) {
|
|
|
33
33
|
(0, _helper.setDataRoot)(element, attributes);
|
|
34
34
|
if ((0, _helpers.isElementHiddenByCollapsedHeader)(editor, element)) {
|
|
35
35
|
return /*#__PURE__*/_react["default"].createElement("div", Object.assign({
|
|
36
|
-
"data-id": element.id
|
|
36
|
+
"data-id": element.id,
|
|
37
|
+
id: element.id
|
|
37
38
|
}, attributes, {
|
|
38
39
|
style: {
|
|
39
40
|
display: 'none'
|
|
@@ -74,7 +74,8 @@ var EditorContent = function EditorContent(_ref) {
|
|
|
74
74
|
style: (0, _fullWidthMode.getContentStyleByFullModeStyle)()
|
|
75
75
|
}, showOutline && /*#__PURE__*/_react["default"].createElement(_outline["default"], {
|
|
76
76
|
scrollLeft: scrollLeft,
|
|
77
|
-
doc: docValue
|
|
77
|
+
doc: docValue,
|
|
78
|
+
editor: editor
|
|
78
79
|
}), children))), /*#__PURE__*/_react["default"].createElement(_rightPanel["default"], {
|
|
79
80
|
editor: editor
|
|
80
81
|
})));
|
package/dist/outline/index.js
CHANGED
|
@@ -32,6 +32,7 @@ var setOutlineSetting = exports.setOutlineSetting = function setOutlineSetting(i
|
|
|
32
32
|
var SDocOutline = function SDocOutline(_ref) {
|
|
33
33
|
var scrollLeft = _ref.scrollLeft,
|
|
34
34
|
doc = _ref.doc,
|
|
35
|
+
editor = _ref.editor,
|
|
35
36
|
t = _ref.t;
|
|
36
37
|
var _useState = (0, _react.useState)(false),
|
|
37
38
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
@@ -52,9 +53,15 @@ var SDocOutline = function SDocOutline(_ref) {
|
|
|
52
53
|
updateOutlineState(!isShown);
|
|
53
54
|
}, [isShown, updateOutlineState]);
|
|
54
55
|
var list = (0, _react.useMemo)(function () {
|
|
55
|
-
return doc === null || doc === void 0 ? void 0 : doc.
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
return doc === null || doc === void 0 ? void 0 : doc.reduce(function (headerList, item, index) {
|
|
57
|
+
if (['header1', 'header2', 'header3'].includes(item.type)) {
|
|
58
|
+
headerList.push({
|
|
59
|
+
item: item,
|
|
60
|
+
path: [index]
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
return headerList;
|
|
64
|
+
}, []);
|
|
58
65
|
}, [doc]);
|
|
59
66
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
60
67
|
className: (0, _classnames["default"])('sdoc-outline-wrapper', {
|
|
@@ -79,10 +86,14 @@ var SDocOutline = function SDocOutline(_ref) {
|
|
|
79
86
|
className: "mt-4 text-secondary"
|
|
80
87
|
}, t('Headings_you_add_to_the_document_will_appear_here')), list.length > 0 && /*#__PURE__*/_react["default"].createElement("div", {
|
|
81
88
|
className: "sdoc-outline-list-container"
|
|
82
|
-
}, list.map(function (
|
|
89
|
+
}, list.map(function (_ref2, index) {
|
|
90
|
+
var item = _ref2.item,
|
|
91
|
+
path = _ref2.path;
|
|
83
92
|
return /*#__PURE__*/_react["default"].createElement(_outlineItem["default"], {
|
|
84
93
|
key: index,
|
|
85
94
|
item: item,
|
|
95
|
+
itemPath: path,
|
|
96
|
+
editor: editor,
|
|
86
97
|
isSdocRevision: isSdocRevision
|
|
87
98
|
});
|
|
88
99
|
})))), !isShown && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("span", {
|
|
@@ -15,15 +15,33 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
15
15
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
16
16
|
var _constants = require("../constants");
|
|
17
17
|
var _constants2 = require("../extension/constants");
|
|
18
|
+
var _helpers = require("../extension/plugins/header/helpers");
|
|
18
19
|
var OutlineItem = /*#__PURE__*/function (_React$PureComponent) {
|
|
19
20
|
function OutlineItem(props) {
|
|
20
21
|
var _this;
|
|
21
22
|
(0, _classCallCheck2["default"])(this, OutlineItem);
|
|
22
23
|
_this = (0, _callSuper2["default"])(this, OutlineItem, [props]);
|
|
23
24
|
(0, _defineProperty2["default"])(_this, "onItemClick", function () {
|
|
24
|
-
var
|
|
25
|
+
var _this$props = _this.props,
|
|
26
|
+
item = _this$props.item,
|
|
27
|
+
editor = _this$props.editor,
|
|
28
|
+
itemPath = _this$props.itemPath;
|
|
25
29
|
var id = item.id;
|
|
26
|
-
|
|
30
|
+
var scrollToTarget = function scrollToTarget() {
|
|
31
|
+
var target = document.getElementById(id);
|
|
32
|
+
if (!target) return;
|
|
33
|
+
target.scrollIntoView();
|
|
34
|
+
};
|
|
35
|
+
var isExpanded = editor ? (0, _helpers.expandCollapsedHeaderAncestors)(editor, item, itemPath) : false;
|
|
36
|
+
if (!isExpanded) {
|
|
37
|
+
scrollToTarget();
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
if (typeof window !== 'undefined' && typeof window.requestAnimationFrame === 'function') {
|
|
41
|
+
window.requestAnimationFrame(scrollToTarget);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
setTimeout(scrollToTarget, 0);
|
|
27
45
|
});
|
|
28
46
|
(0, _defineProperty2["default"])(_this, "onMouseOver", function () {
|
|
29
47
|
_this.setState({
|
|
@@ -37,9 +55,9 @@ var OutlineItem = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
37
55
|
});
|
|
38
56
|
(0, _defineProperty2["default"])(_this, "getOutlineItemClass", function () {
|
|
39
57
|
var isHighlighted = _this.state.isHighlighted;
|
|
40
|
-
var _this$
|
|
41
|
-
item = _this$
|
|
42
|
-
isDisplayHorizontalBar = _this$
|
|
58
|
+
var _this$props2 = _this.props,
|
|
59
|
+
item = _this$props2.item,
|
|
60
|
+
isDisplayHorizontalBar = _this$props2.isDisplayHorizontalBar;
|
|
43
61
|
var type = item.type,
|
|
44
62
|
isActive = item.isActive;
|
|
45
63
|
var outlineItemClass = null;
|
|
@@ -67,10 +85,10 @@ var OutlineItem = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
67
85
|
return (0, _createClass2["default"])(OutlineItem, [{
|
|
68
86
|
key: "render",
|
|
69
87
|
value: function render() {
|
|
70
|
-
var _this$
|
|
71
|
-
item = _this$
|
|
72
|
-
isDisplayHorizontalBar = _this$
|
|
73
|
-
isSdocRevision = _this$
|
|
88
|
+
var _this$props3 = this.props,
|
|
89
|
+
item = _this$props3.item,
|
|
90
|
+
isDisplayHorizontalBar = _this$props3.isDisplayHorizontalBar,
|
|
91
|
+
isSdocRevision = _this$props3.isSdocRevision;
|
|
74
92
|
var type = item.type,
|
|
75
93
|
children = item.children,
|
|
76
94
|
isActive = item.isActive;
|
|
@@ -16,7 +16,8 @@ var _outlineItem = _interopRequireDefault(require("./outline-item"));
|
|
|
16
16
|
require("./style.css");
|
|
17
17
|
var WikiOutline = function WikiOutline(_ref) {
|
|
18
18
|
var _ref$doc = _ref.doc,
|
|
19
|
-
doc = _ref$doc === void 0 ? [] : _ref$doc
|
|
19
|
+
doc = _ref$doc === void 0 ? [] : _ref$doc,
|
|
20
|
+
editor = _ref.editor;
|
|
20
21
|
var scrollRef = (0, _useScrollContext.useScrollContext)();
|
|
21
22
|
var wikiOutlineRef = (0, _react.useRef)(null);
|
|
22
23
|
var _useState = (0, _react.useState)([]),
|
|
@@ -33,9 +34,15 @@ var WikiOutline = function WikiOutline(_ref) {
|
|
|
33
34
|
}
|
|
34
35
|
}, [isShowOutlinePopover]);
|
|
35
36
|
var updateWikiOutlineList = (0, _react.useCallback)(function () {
|
|
36
|
-
var list = doc.
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
var list = doc.reduce(function (headerList, item, index) {
|
|
38
|
+
if (['header1', 'header2', 'header3'].includes(item.type)) {
|
|
39
|
+
headerList.push({
|
|
40
|
+
item: item,
|
|
41
|
+
path: [index]
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
return headerList;
|
|
45
|
+
}, []);
|
|
39
46
|
if (list.length === 0) {
|
|
40
47
|
setWikiOutlineList([]);
|
|
41
48
|
return;
|
|
@@ -43,7 +50,8 @@ var WikiOutline = function WikiOutline(_ref) {
|
|
|
43
50
|
|
|
44
51
|
// The slateValue value in the document cannot be operated, so copy it for operation
|
|
45
52
|
var newList = JSON.parse(JSON.stringify(list));
|
|
46
|
-
var index = list.findIndex(function (
|
|
53
|
+
var index = list.findIndex(function (_ref2) {
|
|
54
|
+
var item = _ref2.item;
|
|
47
55
|
var id = item.id;
|
|
48
56
|
var el = document.getElementById(id);
|
|
49
57
|
if (el) {
|
|
@@ -63,7 +71,7 @@ var WikiOutline = function WikiOutline(_ref) {
|
|
|
63
71
|
}
|
|
64
72
|
// There is no title in the visible area
|
|
65
73
|
if (index === -1) {
|
|
66
|
-
var lastItemId = list[list.length - 1].id;
|
|
74
|
+
var lastItemId = list[list.length - 1].item.id;
|
|
67
75
|
var lastItemEl = document.getElementById(lastItemId);
|
|
68
76
|
if (lastItemEl) {
|
|
69
77
|
var _lastItemEl$getBoundi = lastItemEl.getBoundingClientRect(),
|
|
@@ -98,10 +106,14 @@ var WikiOutline = function WikiOutline(_ref) {
|
|
|
98
106
|
}, wikiOutlineList.length > 0 && /*#__PURE__*/_react["default"].createElement("div", {
|
|
99
107
|
className: "sdoc-outline-list-container",
|
|
100
108
|
onMouseOver: onMouseOver
|
|
101
|
-
}, wikiOutlineList.map(function (
|
|
109
|
+
}, wikiOutlineList.map(function (_ref3, index) {
|
|
110
|
+
var item = _ref3.item,
|
|
111
|
+
path = _ref3.path;
|
|
102
112
|
return /*#__PURE__*/_react["default"].createElement(_outlineItem["default"], {
|
|
103
113
|
key: index,
|
|
104
114
|
item: item,
|
|
115
|
+
itemPath: path,
|
|
116
|
+
editor: editor,
|
|
105
117
|
isDisplayHorizontalBar: true
|
|
106
118
|
});
|
|
107
119
|
}))), isShowOutlinePopover && /*#__PURE__*/_react["default"].createElement("div", {
|
|
@@ -109,10 +121,14 @@ var WikiOutline = function WikiOutline(_ref) {
|
|
|
109
121
|
ref: wikiOutlineRef
|
|
110
122
|
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
111
123
|
className: "sdoc-outline-list-container"
|
|
112
|
-
}, wikiOutlineList.map(function (
|
|
124
|
+
}, wikiOutlineList.map(function (_ref4, index) {
|
|
125
|
+
var item = _ref4.item,
|
|
126
|
+
path = _ref4.path;
|
|
113
127
|
return /*#__PURE__*/_react["default"].createElement(_outlineItem["default"], {
|
|
114
128
|
key: index,
|
|
115
|
-
item: item
|
|
129
|
+
item: item,
|
|
130
|
+
itemPath: path,
|
|
131
|
+
editor: editor
|
|
116
132
|
});
|
|
117
133
|
}))));
|
|
118
134
|
};
|
|
@@ -55,7 +55,8 @@ var SDocWikiSSRViewer = function SDocWikiSSRViewer(_ref) {
|
|
|
55
55
|
slateValue: slateValue,
|
|
56
56
|
showComment: false
|
|
57
57
|
})), /*#__PURE__*/_react["default"].createElement(_wikiOutline["default"], {
|
|
58
|
-
doc: slateValue
|
|
58
|
+
doc: slateValue,
|
|
59
|
+
editor: validEditor
|
|
59
60
|
})))));
|
|
60
61
|
};
|
|
61
62
|
var _default = exports["default"] = SDocWikiSSRViewer;
|
|
@@ -14,9 +14,12 @@ var _outlineItem = _interopRequireDefault(require("./outline-item"));
|
|
|
14
14
|
require("./style.css");
|
|
15
15
|
var getHeaderList = function getHeaderList(children) {
|
|
16
16
|
var headerList = [];
|
|
17
|
-
children.forEach(function (node) {
|
|
17
|
+
children.forEach(function (node, index) {
|
|
18
18
|
if (node.type === 'header2' || node.type === 'header3') {
|
|
19
|
-
headerList.push(
|
|
19
|
+
headerList.push({
|
|
20
|
+
node: node,
|
|
21
|
+
path: [index]
|
|
22
|
+
});
|
|
20
23
|
}
|
|
21
24
|
});
|
|
22
25
|
return headerList;
|
|
@@ -43,8 +46,9 @@ var Outline = function Outline(_ref) {
|
|
|
43
46
|
var styles = getComputedStyle(scrollRef === null || scrollRef === void 0 ? void 0 : scrollRef.current);
|
|
44
47
|
var paddingTop = parseInt(styles.paddingTop);
|
|
45
48
|
for (var i = 0; i < headerList.length; i++) {
|
|
46
|
-
var headerItem = headerList[i];
|
|
49
|
+
var headerItem = headerList[i].node;
|
|
47
50
|
var dom = document.getElementById(headerItem.id);
|
|
51
|
+
if (!dom) continue;
|
|
48
52
|
var offsetTop = dom.offsetTop,
|
|
49
53
|
offsetHeight = dom.offsetHeight;
|
|
50
54
|
var _styles = getComputedStyle(dom);
|
|
@@ -69,10 +73,14 @@ var Outline = function Outline(_ref) {
|
|
|
69
73
|
className: "sdoc-wiki-viewer-outline"
|
|
70
74
|
}, headerList.length === 0 && /*#__PURE__*/_react["default"].createElement("div", {
|
|
71
75
|
className: "empty-container"
|
|
72
|
-
}, t('No_out_line')), headerList.length > 0 && headerList.map(function (
|
|
76
|
+
}, t('No_out_line')), headerList.length > 0 && headerList.map(function (_ref2, index) {
|
|
77
|
+
var node = _ref2.node,
|
|
78
|
+
path = _ref2.path;
|
|
73
79
|
return /*#__PURE__*/_react["default"].createElement(_outlineItem["default"], {
|
|
74
80
|
key: index,
|
|
75
81
|
node: node,
|
|
82
|
+
itemPath: path,
|
|
83
|
+
editor: editor,
|
|
76
84
|
activeId: activeId
|
|
77
85
|
});
|
|
78
86
|
}));
|
|
@@ -8,13 +8,30 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
8
8
|
exports["default"] = void 0;
|
|
9
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
10
10
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
11
|
+
var _helpers = require("../extension/plugins/header/helpers");
|
|
11
12
|
var OutlineItem = function OutlineItem(_ref) {
|
|
12
13
|
var node = _ref.node,
|
|
13
|
-
activeId = _ref.activeId
|
|
14
|
+
activeId = _ref.activeId,
|
|
15
|
+
itemPath = _ref.itemPath,
|
|
16
|
+
editor = _ref.editor;
|
|
14
17
|
var onItemClick = (0, _react.useCallback)(function () {
|
|
15
18
|
var id = node.id;
|
|
16
|
-
|
|
17
|
-
|
|
19
|
+
var scrollToTarget = function scrollToTarget() {
|
|
20
|
+
var target = document.getElementById(id);
|
|
21
|
+
if (!target) return;
|
|
22
|
+
target.scrollIntoView();
|
|
23
|
+
};
|
|
24
|
+
var isExpanded = editor ? (0, _helpers.expandCollapsedHeaderAncestors)(editor, node, itemPath) : false;
|
|
25
|
+
if (!isExpanded) {
|
|
26
|
+
scrollToTarget();
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
if (typeof window !== 'undefined' && typeof window.requestAnimationFrame === 'function') {
|
|
30
|
+
window.requestAnimationFrame(scrollToTarget);
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
setTimeout(scrollToTarget, 0);
|
|
34
|
+
}, [editor, itemPath, node]);
|
|
18
35
|
var className = (0, _classnames["default"])({
|
|
19
36
|
'outline-h2': node.type === 'header2',
|
|
20
37
|
'outline-h3': node.type === 'header3',
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seafile/sdoc-editor",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.214",
|
|
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": "e81b1d456d92201965be81ba4b16575fd578cf92"
|
|
76
76
|
}
|