@diplodoc/components 4.25.0 → 4.26.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/build/cjs/components/BookmarkButton/BookmarkButton.css.map +1 -1
- package/build/cjs/components/Breadcrumbs/Breadcrumbs.css.map +1 -1
- package/build/cjs/components/ContributorAvatars/ContributorAvatars.css.map +1 -1
- package/build/cjs/components/Contributors/Contributors.css.map +1 -1
- package/build/cjs/components/Control/Control.css.map +1 -1
- package/build/cjs/components/Controls/Controls.css.map +1 -1
- package/build/cjs/components/Controls/single-controls/DividerControl/DividerControl.css.map +1 -1
- package/build/cjs/components/Controls/single-controls/LangControl/LangControl.css.map +1 -1
- package/build/cjs/components/Controls/single-controls/SettingsControl/SettingsControl.css.map +1 -1
- package/build/cjs/components/DocLayout/DocLayout.css.map +1 -1
- package/build/cjs/components/DocLeadingPage/DocLeadingPage.css.map +1 -1
- package/build/cjs/components/DocPage/DocPage.css.map +1 -1
- package/build/cjs/components/DocPage/DocPage.js.map +2 -2
- package/build/cjs/components/DocPageTitle/DocPageTitle.css.map +1 -1
- package/build/cjs/components/ErrorPage/ErrorPage.css.map +1 -1
- package/build/cjs/components/Feedback/Feedback.css.map +1 -1
- package/build/cjs/components/Mark/Mark.css.map +1 -1
- package/build/cjs/components/MiniToc/MiniToc.css +1 -0
- package/build/cjs/components/MiniToc/MiniToc.css.map +3 -3
- package/build/cjs/components/MiniToc/MiniToc.d.ts +8 -2
- package/build/cjs/components/MiniToc/MiniToc.js +47 -38
- package/build/cjs/components/MiniToc/MiniToc.js.map +3 -3
- package/build/cjs/components/MobileControls/MobileControl/MobileControl.css.map +1 -1
- package/build/cjs/components/MobileControls/MobileControlSheet/MobileControlSheet.css.map +1 -1
- package/build/cjs/components/MobileControls/MobileControls.css.map +1 -1
- package/build/cjs/components/Notification/Notification.css.map +1 -1
- package/build/cjs/components/Paginator/Paginator.css.map +1 -1
- package/build/cjs/components/SearchBar/SearchBar.css.map +1 -1
- package/build/cjs/components/SearchItem/SearchItem.css.map +1 -1
- package/build/cjs/components/SearchPage/SearchPage.css.map +1 -1
- package/build/cjs/components/SearchSuggest/index.css.map +1 -1
- package/build/cjs/components/ShareButton/ShareButton.css.map +1 -1
- package/build/cjs/components/SubNavigation/SubNavigation.css.map +1 -1
- package/build/cjs/components/SubNavigation/SubNavigation.d.ts +1 -1
- package/build/cjs/components/SubNavigation/SubNavigation.js +10 -13
- package/build/cjs/components/SubNavigation/SubNavigation.js.map +2 -2
- package/build/cjs/components/SubNavigation/hooks/useHeadingIntersectionObserver.d.ts +17 -0
- package/build/cjs/components/SubNavigation/hooks/useHeadingIntersectionObserver.js +79 -0
- package/build/cjs/components/SubNavigation/hooks/useHeadingIntersectionObserver.js.map +7 -0
- package/build/cjs/components/SubNavigation/hooks/useMiniTocData.d.ts +1 -3
- package/build/cjs/components/SubNavigation/hooks/useMiniTocData.js +2 -6
- package/build/cjs/components/SubNavigation/hooks/useMiniTocData.js.map +2 -2
- package/build/cjs/components/Subscribe/Subscribe.css.map +1 -1
- package/build/cjs/components/Toc/Toc.css.map +1 -1
- package/build/cjs/components/Toc/Toc.d.ts +0 -3
- package/build/cjs/components/Toc/Toc.js +0 -31
- package/build/cjs/components/Toc/Toc.js.map +2 -2
- package/build/cjs/components/TocItem/TocItem.css.map +1 -1
- package/build/cjs/components/TocLable/TocLabel.css.map +1 -1
- package/build/cjs/components/TocNavPanel/TocNavPanel.css.map +1 -1
- package/build/cjs/components/ToggleArrow/ToggleArrow.css.map +1 -1
- package/build/cjs/components/UpdatedAtDate/UpdatedAtDate.css.map +1 -1
- package/build/cjs/components/navigation/CustomNavigation/CustomNavigation.css.map +1 -1
- package/build/cjs/components/navigation/MobileDropdown/MobileDropdown.css.map +1 -1
- package/build/cjs/components/navigation/Sidebar/Sidebar.css.map +1 -1
- package/build/cjs/components/navigation/SidebarContent/SidebarContent.css.map +1 -1
- package/build/cjs/components/navigation/SidebarNavigation/SidebarNavigation.css.map +1 -1
- package/build/cjs/components/navigation/ToMainMenu/ToMainMenu.css.map +1 -1
- package/build/cjs/hooks/useStableCallback.d.ts +1 -0
- package/build/cjs/{components/Scrollspy/index.js → hooks/useStableCallback.js} +18 -6
- package/build/cjs/hooks/useStableCallback.js.map +7 -0
- package/build/cjs/index.d.ts +0 -1
- package/build/cjs/index.js +0 -1
- package/build/cjs/index.js.map +2 -2
- package/build/esm/components/BookmarkButton/BookmarkButton.css.map +1 -1
- package/build/esm/components/Breadcrumbs/Breadcrumbs.css.map +1 -1
- package/build/esm/components/ContributorAvatars/ContributorAvatars.css.map +1 -1
- package/build/esm/components/Contributors/Contributors.css.map +1 -1
- package/build/esm/components/Control/Control.css.map +1 -1
- package/build/esm/components/Controls/Controls.css.map +1 -1
- package/build/esm/components/Controls/single-controls/DividerControl/DividerControl.css.map +1 -1
- package/build/esm/components/Controls/single-controls/LangControl/LangControl.css.map +1 -1
- package/build/esm/components/Controls/single-controls/SettingsControl/SettingsControl.css.map +1 -1
- package/build/esm/components/DocLayout/DocLayout.css.map +1 -1
- package/build/esm/components/DocLeadingPage/DocLeadingPage.css.map +1 -1
- package/build/esm/components/DocPage/DocPage.css.map +1 -1
- package/build/esm/components/DocPage/DocPage.js.map +2 -2
- package/build/esm/components/DocPageTitle/DocPageTitle.css.map +1 -1
- package/build/esm/components/ErrorPage/ErrorPage.css.map +1 -1
- package/build/esm/components/Feedback/Feedback.css.map +1 -1
- package/build/esm/components/Mark/Mark.css.map +1 -1
- package/build/esm/components/MiniToc/MiniToc.css +1 -0
- package/build/esm/components/MiniToc/MiniToc.css.map +3 -3
- package/build/esm/components/MiniToc/MiniToc.d.ts +8 -2
- package/build/esm/components/MiniToc/MiniToc.js +48 -39
- package/build/esm/components/MiniToc/MiniToc.js.map +2 -2
- package/build/esm/components/MobileControls/MobileControl/MobileControl.css.map +1 -1
- package/build/esm/components/MobileControls/MobileControlSheet/MobileControlSheet.css.map +1 -1
- package/build/esm/components/MobileControls/MobileControls.css.map +1 -1
- package/build/esm/components/Notification/Notification.css.map +1 -1
- package/build/esm/components/Paginator/Paginator.css.map +1 -1
- package/build/esm/components/SearchBar/SearchBar.css.map +1 -1
- package/build/esm/components/SearchItem/SearchItem.css.map +1 -1
- package/build/esm/components/SearchPage/SearchPage.css.map +1 -1
- package/build/esm/components/SearchSuggest/index.css.map +1 -1
- package/build/esm/components/ShareButton/ShareButton.css.map +1 -1
- package/build/esm/components/SubNavigation/SubNavigation.css.map +1 -1
- package/build/esm/components/SubNavigation/SubNavigation.d.ts +1 -1
- package/build/esm/components/SubNavigation/SubNavigation.js +10 -13
- package/build/esm/components/SubNavigation/SubNavigation.js.map +2 -2
- package/build/esm/components/SubNavigation/hooks/useHeadingIntersectionObserver.d.ts +17 -0
- package/build/esm/components/SubNavigation/hooks/useHeadingIntersectionObserver.js +58 -0
- package/build/esm/components/SubNavigation/hooks/useHeadingIntersectionObserver.js.map +7 -0
- package/build/esm/components/SubNavigation/hooks/useMiniTocData.d.ts +1 -3
- package/build/esm/components/SubNavigation/hooks/useMiniTocData.js +2 -6
- package/build/esm/components/SubNavigation/hooks/useMiniTocData.js.map +2 -2
- package/build/esm/components/Subscribe/Subscribe.css.map +1 -1
- package/build/esm/components/Toc/Toc.css.map +1 -1
- package/build/esm/components/Toc/Toc.d.ts +0 -3
- package/build/esm/components/Toc/Toc.js +0 -31
- package/build/esm/components/Toc/Toc.js.map +2 -2
- package/build/esm/components/TocItem/TocItem.css.map +1 -1
- package/build/esm/components/TocLable/TocLabel.css.map +1 -1
- package/build/esm/components/TocNavPanel/TocNavPanel.css.map +1 -1
- package/build/esm/components/ToggleArrow/ToggleArrow.css.map +1 -1
- package/build/esm/components/UpdatedAtDate/UpdatedAtDate.css.map +1 -1
- package/build/esm/components/navigation/CustomNavigation/CustomNavigation.css.map +1 -1
- package/build/esm/components/navigation/MobileDropdown/MobileDropdown.css.map +1 -1
- package/build/esm/components/navigation/Sidebar/Sidebar.css.map +1 -1
- package/build/esm/components/navigation/SidebarContent/SidebarContent.css.map +1 -1
- package/build/esm/components/navigation/SidebarNavigation/SidebarNavigation.css.map +1 -1
- package/build/esm/components/navigation/ToMainMenu/ToMainMenu.css.map +1 -1
- package/build/esm/hooks/useStableCallback.d.ts +1 -0
- package/build/esm/hooks/useStableCallback.js +12 -0
- package/build/esm/hooks/useStableCallback.js.map +7 -0
- package/build/esm/index.d.ts +0 -1
- package/build/esm/index.js +0 -1
- package/build/esm/index.js.map +2 -2
- package/build/index.css.map +1 -1
- package/build/themes/common/index.css.map +1 -1
- package/package.json +2 -1
- package/build/cjs/components/Scrollspy/Scrollspy.d.ts +0 -59
- package/build/cjs/components/Scrollspy/Scrollspy.js +0 -337
- package/build/cjs/components/Scrollspy/Scrollspy.js.map +0 -7
- package/build/cjs/components/Scrollspy/index.d.ts +0 -1
- package/build/cjs/components/Scrollspy/index.js.map +0 -7
- package/build/esm/components/Scrollspy/Scrollspy.d.ts +0 -59
- package/build/esm/components/Scrollspy/Scrollspy.js +0 -309
- package/build/esm/components/Scrollspy/Scrollspy.js.map +0 -7
- package/build/esm/components/Scrollspy/index.d.ts +0 -1
- package/build/esm/components/Scrollspy/index.js +0 -3
- package/build/esm/components/Scrollspy/index.js.map +0 -7
|
@@ -1,309 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
3
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
4
|
-
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
5
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
6
|
-
var __spreadValues = (a, b) => {
|
|
7
|
-
for (var prop in b || (b = {}))
|
|
8
|
-
if (__hasOwnProp.call(b, prop))
|
|
9
|
-
__defNormalProp(a, prop, b[prop]);
|
|
10
|
-
if (__getOwnPropSymbols)
|
|
11
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
12
|
-
if (__propIsEnum.call(b, prop))
|
|
13
|
-
__defNormalProp(a, prop, b[prop]);
|
|
14
|
-
}
|
|
15
|
-
return a;
|
|
16
|
-
};
|
|
17
|
-
var __objRest = (source, exclude) => {
|
|
18
|
-
var target = {};
|
|
19
|
-
for (var prop in source)
|
|
20
|
-
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
21
|
-
target[prop] = source[prop];
|
|
22
|
-
if (source != null && __getOwnPropSymbols)
|
|
23
|
-
for (var prop of __getOwnPropSymbols(source)) {
|
|
24
|
-
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
25
|
-
target[prop] = source[prop];
|
|
26
|
-
}
|
|
27
|
-
return target;
|
|
28
|
-
};
|
|
29
|
-
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
30
|
-
|
|
31
|
-
// src/components/Scrollspy/Scrollspy.tsx
|
|
32
|
-
import React from "react";
|
|
33
|
-
import debounce from "lodash/debounce";
|
|
34
|
-
import isEqual from "lodash/isEqual";
|
|
35
|
-
import scrollIntoView from "scroll-into-view-if-needed";
|
|
36
|
-
var Scrollspy = class extends React.Component {
|
|
37
|
-
constructor(props) {
|
|
38
|
-
super(props);
|
|
39
|
-
__publicField(this, "containerRef", React.createRef());
|
|
40
|
-
__publicField(this, "itemRefs", this.props.items.map(() => React.createRef()));
|
|
41
|
-
__publicField(this, "scrollByClick");
|
|
42
|
-
__publicField(this, "prevOffset");
|
|
43
|
-
__publicField(this, "hasActiveHash");
|
|
44
|
-
__publicField(this, "firstItemIndexInView");
|
|
45
|
-
__publicField(this, "lastItemIndexInView");
|
|
46
|
-
__publicField(this, "overflowChecked");
|
|
47
|
-
__publicField(this, "updateScrollValues", () => {
|
|
48
|
-
const containerEl = this.containerRef.current;
|
|
49
|
-
if (!containerEl) {
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
const { childHeight, maxItemsInView } = this.getContainerValues(containerEl);
|
|
53
|
-
this.lastItemIndexInView = Math.round(containerEl.scrollTop / childHeight) + maxItemsInView - 1;
|
|
54
|
-
this.updateFirstItemIndexInView(maxItemsInView);
|
|
55
|
-
});
|
|
56
|
-
__publicField(this, "scrollToListItem", () => {
|
|
57
|
-
if (!this.props.scrollToListItem) {
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
let itemIndex = this.state.inViewState.findIndex((isActive) => isActive);
|
|
61
|
-
if (itemIndex < 0) {
|
|
62
|
-
itemIndex = 0;
|
|
63
|
-
}
|
|
64
|
-
const ref = this.itemRefs[itemIndex] && this.itemRefs[itemIndex].current;
|
|
65
|
-
if (ref) {
|
|
66
|
-
scrollIntoView(ref, {
|
|
67
|
-
scrollMode: "if-needed",
|
|
68
|
-
block: "nearest",
|
|
69
|
-
inline: "nearest",
|
|
70
|
-
behavior: "smooth"
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
__publicField(this, "initSections", () => {
|
|
75
|
-
this.saveActiveItems();
|
|
76
|
-
});
|
|
77
|
-
__publicField(this, "handleScroll", () => {
|
|
78
|
-
if (this.scrollByClick) {
|
|
79
|
-
window.removeEventListener("scroll", this.handleScrollDebounced);
|
|
80
|
-
window.addEventListener("scroll", this.handleScroll);
|
|
81
|
-
this.scrollByClick = false;
|
|
82
|
-
}
|
|
83
|
-
this.saveActiveItems();
|
|
84
|
-
});
|
|
85
|
-
// eslint-disable-next-line @typescript-eslint/member-ordering, react/sort-comp
|
|
86
|
-
__publicField(this, "handleScrollDebounced", debounce(this.handleScroll, 100));
|
|
87
|
-
__publicField(this, "handleSectionClick", (event) => {
|
|
88
|
-
const { onSectionClick } = this.props;
|
|
89
|
-
const { target } = event;
|
|
90
|
-
if (target && target.tagName === "A") {
|
|
91
|
-
event.stopPropagation();
|
|
92
|
-
this.pauseScrollHandler();
|
|
93
|
-
this.saveActiveItems(target.hash);
|
|
94
|
-
if (onSectionClick) {
|
|
95
|
-
onSectionClick(event);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
});
|
|
99
|
-
__publicField(this, "checkListOverflow", () => {
|
|
100
|
-
var _a, _b, _c;
|
|
101
|
-
const { containerRef, itemRefs } = this;
|
|
102
|
-
const { overflowedClassName } = this.props;
|
|
103
|
-
const containerHeight = (_b = (_a = containerRef.current) == null ? void 0 : _a.offsetHeight) != null ? _b : 0;
|
|
104
|
-
const itemsHeight = itemRefs.reduce(
|
|
105
|
-
(heightSum, item) => {
|
|
106
|
-
var _a2, _b2;
|
|
107
|
-
return heightSum + ((_b2 = (_a2 = item.current) == null ? void 0 : _a2.offsetHeight) != null ? _b2 : 0);
|
|
108
|
-
},
|
|
109
|
-
0
|
|
110
|
-
);
|
|
111
|
-
if (containerHeight < itemsHeight) {
|
|
112
|
-
(_c = containerRef.current) == null ? void 0 : _c.classList.add(overflowedClassName);
|
|
113
|
-
}
|
|
114
|
-
});
|
|
115
|
-
this.state = {
|
|
116
|
-
targetItems: [],
|
|
117
|
-
inViewState: []
|
|
118
|
-
};
|
|
119
|
-
this.overflowChecked = false;
|
|
120
|
-
this.scrollByClick = false;
|
|
121
|
-
this.prevOffset = 0;
|
|
122
|
-
this.hasActiveHash = false;
|
|
123
|
-
this.firstItemIndexInView = -1;
|
|
124
|
-
this.lastItemIndexInView = -1;
|
|
125
|
-
}
|
|
126
|
-
componentDidMount() {
|
|
127
|
-
this.initItems();
|
|
128
|
-
window.addEventListener("scroll", this.handleScroll);
|
|
129
|
-
const containerEl = this.containerRef.current;
|
|
130
|
-
if (containerEl) {
|
|
131
|
-
containerEl.addEventListener("scroll", this.updateScrollValues);
|
|
132
|
-
}
|
|
133
|
-
this.checkListOverflow();
|
|
134
|
-
}
|
|
135
|
-
componentDidUpdate(prevProps, prevState) {
|
|
136
|
-
const { items, router } = this.props;
|
|
137
|
-
const { inViewState } = this.state;
|
|
138
|
-
if (!isEqual(inViewState, prevState.inViewState)) {
|
|
139
|
-
this.scrollToListItem();
|
|
140
|
-
}
|
|
141
|
-
if (!isEqual(items, prevProps.items) || prevProps.router.pathname !== router.pathname) {
|
|
142
|
-
this.initItems();
|
|
143
|
-
}
|
|
144
|
-
if (!this.overflowChecked) {
|
|
145
|
-
this.overflowChecked = true;
|
|
146
|
-
this.checkListOverflow();
|
|
147
|
-
}
|
|
148
|
-
if (router.hash !== prevProps.router.hash) {
|
|
149
|
-
this.pauseScrollHandler();
|
|
150
|
-
this.saveActiveItems(router.hash);
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
componentWillUnmount() {
|
|
154
|
-
window.removeEventListener("scroll", this.handleScroll);
|
|
155
|
-
const containerEl = this.containerRef.current;
|
|
156
|
-
if (containerEl) {
|
|
157
|
-
containerEl.removeEventListener("scroll", this.updateScrollValues);
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
render() {
|
|
161
|
-
const _a = this.props, { children, currentClassName, className } = _a, rest = __objRest(_a, ["children", "currentClassName", "className"]);
|
|
162
|
-
const { inViewState } = this.state;
|
|
163
|
-
const items = children.map((child, index) => {
|
|
164
|
-
if (!child) {
|
|
165
|
-
return null;
|
|
166
|
-
}
|
|
167
|
-
const ChildTag = child.type;
|
|
168
|
-
let childClassNames = child.props.className;
|
|
169
|
-
if (inViewState[index] && currentClassName.length > 0) {
|
|
170
|
-
childClassNames += ` ${currentClassName}`;
|
|
171
|
-
this.syncScroll(index);
|
|
172
|
-
}
|
|
173
|
-
return /* @__PURE__ */ React.createElement(
|
|
174
|
-
ChildTag,
|
|
175
|
-
{
|
|
176
|
-
key: child.key,
|
|
177
|
-
className: childClassNames,
|
|
178
|
-
onClick: this.handleSectionClick,
|
|
179
|
-
ref: this.itemRefs[index],
|
|
180
|
-
"aria-current": inViewState[index] ? "location" : void 0
|
|
181
|
-
},
|
|
182
|
-
child.props.children
|
|
183
|
-
);
|
|
184
|
-
});
|
|
185
|
-
return /* @__PURE__ */ React.createElement("ul", __spreadValues({ className, ref: this.containerRef }, rest), items);
|
|
186
|
-
}
|
|
187
|
-
updateFirstItemIndexInView(maxItemsInView) {
|
|
188
|
-
this.firstItemIndexInView = Math.max(this.lastItemIndexInView - (maxItemsInView - 1), 0);
|
|
189
|
-
}
|
|
190
|
-
getContainerValues(containerEl) {
|
|
191
|
-
const { children } = this.props;
|
|
192
|
-
const childHeight = Math.round(containerEl.scrollHeight / children.length);
|
|
193
|
-
const maxItemsInView = Math.round(containerEl.clientHeight / childHeight);
|
|
194
|
-
return { childHeight, maxItemsInView };
|
|
195
|
-
}
|
|
196
|
-
syncScroll(index) {
|
|
197
|
-
const { children } = this.props;
|
|
198
|
-
const containerEl = this.containerRef.current;
|
|
199
|
-
if (!containerEl) {
|
|
200
|
-
return;
|
|
201
|
-
}
|
|
202
|
-
const { childHeight, maxItemsInView } = this.getContainerValues(containerEl);
|
|
203
|
-
if (this.lastItemIndexInView === -1) {
|
|
204
|
-
this.lastItemIndexInView = maxItemsInView - 1;
|
|
205
|
-
}
|
|
206
|
-
this.updateFirstItemIndexInView(maxItemsInView);
|
|
207
|
-
let itemInView = false;
|
|
208
|
-
if (index >= this.lastItemIndexInView) {
|
|
209
|
-
this.lastItemIndexInView = Math.min(index + 1, children.length - 1);
|
|
210
|
-
} else if (index <= this.firstItemIndexInView) {
|
|
211
|
-
this.lastItemIndexInView = Math.max(index + maxItemsInView - 2, maxItemsInView - 1);
|
|
212
|
-
} else {
|
|
213
|
-
itemInView = true;
|
|
214
|
-
}
|
|
215
|
-
this.updateFirstItemIndexInView(maxItemsInView);
|
|
216
|
-
const endIsNear = index + maxItemsInView / 2 > children.length;
|
|
217
|
-
if (itemInView) {
|
|
218
|
-
return;
|
|
219
|
-
} else if (endIsNear) {
|
|
220
|
-
containerEl.scrollTop = containerEl.scrollHeight;
|
|
221
|
-
} else {
|
|
222
|
-
containerEl.scrollTop = childHeight * this.firstItemIndexInView;
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
initItems() {
|
|
226
|
-
const { items } = this.props;
|
|
227
|
-
const targetItems = items.map((item) => document.getElementById(item.split("#")[1])).filter(Boolean);
|
|
228
|
-
this.setState({ targetItems }, this.initSections);
|
|
229
|
-
this.scrollToListItem();
|
|
230
|
-
}
|
|
231
|
-
saveActiveItems(hash) {
|
|
232
|
-
const { titles, onActiveItemTitleChange } = this.props;
|
|
233
|
-
const visibleItems = this.getViewState(hash);
|
|
234
|
-
const activeItemTitle = this.getActiveItemTitle(titles, visibleItems);
|
|
235
|
-
if (activeItemTitle && onActiveItemTitleChange) {
|
|
236
|
-
onActiveItemTitleChange(activeItemTitle);
|
|
237
|
-
}
|
|
238
|
-
this.setState({ inViewState: visibleItems });
|
|
239
|
-
}
|
|
240
|
-
getViewState(hash) {
|
|
241
|
-
const { targetItems, inViewState } = this.state;
|
|
242
|
-
const { headerHeight } = this.props;
|
|
243
|
-
const currentOffset = window.pageYOffset;
|
|
244
|
-
const isScrollUp = currentOffset < this.prevOffset;
|
|
245
|
-
this.prevOffset = currentOffset;
|
|
246
|
-
const pureHash = (hash == null ? void 0 : hash.startsWith("#")) ? hash.substring(1) : hash;
|
|
247
|
-
let newActiveIndex;
|
|
248
|
-
if (pureHash) {
|
|
249
|
-
newActiveIndex = targetItems.findIndex(
|
|
250
|
-
(item) => item && item.getAttribute("id") === pureHash
|
|
251
|
-
);
|
|
252
|
-
} else {
|
|
253
|
-
newActiveIndex = targetItems.reduce((res, item, index) => {
|
|
254
|
-
if (!item) {
|
|
255
|
-
return res;
|
|
256
|
-
}
|
|
257
|
-
const isScrolledPast = item.getBoundingClientRect().top < headerHeight + 1;
|
|
258
|
-
return isScrolledPast ? index : res;
|
|
259
|
-
}, -1);
|
|
260
|
-
}
|
|
261
|
-
if (targetItems.length && newActiveIndex === -1) {
|
|
262
|
-
newActiveIndex = 0;
|
|
263
|
-
}
|
|
264
|
-
if (newActiveIndex === -1) {
|
|
265
|
-
return inViewState;
|
|
266
|
-
}
|
|
267
|
-
const prevActiveIndex = inViewState.findIndex(Boolean);
|
|
268
|
-
const getNewInViewState = () => {
|
|
269
|
-
if (newActiveIndex === prevActiveIndex) {
|
|
270
|
-
return inViewState;
|
|
271
|
-
}
|
|
272
|
-
const result = new Array(targetItems.length).fill(false);
|
|
273
|
-
result[newActiveIndex] = true;
|
|
274
|
-
return result;
|
|
275
|
-
};
|
|
276
|
-
if (pureHash) {
|
|
277
|
-
this.hasActiveHash = true;
|
|
278
|
-
return getNewInViewState();
|
|
279
|
-
}
|
|
280
|
-
if (this.hasActiveHash) {
|
|
281
|
-
if (isScrollUp || newActiveIndex > prevActiveIndex) {
|
|
282
|
-
this.hasActiveHash = false;
|
|
283
|
-
return getNewInViewState();
|
|
284
|
-
}
|
|
285
|
-
return inViewState;
|
|
286
|
-
}
|
|
287
|
-
return getNewInViewState();
|
|
288
|
-
}
|
|
289
|
-
getActiveItemTitle(titles, inViewState) {
|
|
290
|
-
var _a;
|
|
291
|
-
const activeIndex = inViewState.findIndex(Boolean);
|
|
292
|
-
return (_a = titles == null ? void 0 : titles[activeIndex]) != null ? _a : null;
|
|
293
|
-
}
|
|
294
|
-
pauseScrollHandler() {
|
|
295
|
-
this.scrollByClick = true;
|
|
296
|
-
window.removeEventListener("scroll", this.handleScroll);
|
|
297
|
-
window.addEventListener("scroll", this.handleScrollDebounced);
|
|
298
|
-
}
|
|
299
|
-
};
|
|
300
|
-
__publicField(Scrollspy, "defaultProps", {
|
|
301
|
-
currentClassName: "Scrollspy",
|
|
302
|
-
overflowedClassName: "Overflowed",
|
|
303
|
-
sectionOffset: 20,
|
|
304
|
-
headerHeight: 0
|
|
305
|
-
});
|
|
306
|
-
export {
|
|
307
|
-
Scrollspy
|
|
308
|
-
};
|
|
309
|
-
//# sourceMappingURL=Scrollspy.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/components/Scrollspy/Scrollspy.tsx"],
|
|
4
|
-
"sourcesContent": ["import React, {HTMLProps, ReactElement} from 'react';\nimport debounce from 'lodash/debounce';\nimport isEqual from 'lodash/isEqual';\nimport scrollIntoView from 'scroll-into-view-if-needed';\n\nimport {Router} from '../../models';\nimport {InnerProps} from '../../utils';\n\ninterface ScrollspyDefaultProps {\n currentClassName: string;\n overflowedClassName: string;\n sectionOffset: number;\n headerHeight: number;\n}\n\nexport interface ScrollspyProps\n extends Partial<ScrollspyDefaultProps>,\n Partial<HTMLProps<HTMLUListElement>> {\n items: string[];\n children: ReactElement[];\n router: Router;\n onSectionClick?: (event: MouseEvent) => void;\n className?: string;\n overflowedClassName?: string;\n scrollToListItem?: boolean;\n /** Is used to identify items for {@link onActiveItemTitleChange} */\n titles?: string[];\n /** Is called with active item's corresponding value in {@link titles}, if one exists */\n onActiveItemTitleChange?: (title: string) => void;\n}\n\ninterface ScrollspyState {\n targetItems: HTMLElement[];\n inViewState: boolean[];\n}\n\ntype ScrollspyInnerProps = InnerProps<ScrollspyProps, ScrollspyDefaultProps>;\n\nexport class Scrollspy extends React.Component<ScrollspyInnerProps, ScrollspyState> {\n static defaultProps: ScrollspyDefaultProps = {\n currentClassName: 'Scrollspy',\n overflowedClassName: 'Overflowed',\n sectionOffset: 20,\n headerHeight: 0,\n };\n\n containerRef = React.createRef<HTMLUListElement>();\n itemRefs = this.props.items.map(() => React.createRef<HTMLDivElement>());\n\n scrollByClick: boolean;\n prevOffset: number;\n hasActiveHash: boolean;\n firstItemIndexInView: number;\n lastItemIndexInView: number;\n overflowChecked: boolean;\n\n constructor(props: ScrollspyInnerProps) {\n super(props);\n\n this.state = {\n targetItems: [],\n inViewState: [],\n };\n\n this.overflowChecked = false;\n this.scrollByClick = false;\n this.prevOffset = 0;\n this.hasActiveHash = false;\n this.firstItemIndexInView = -1;\n this.lastItemIndexInView = -1;\n }\n\n componentDidMount() {\n this.initItems();\n window.addEventListener('scroll', this.handleScroll);\n\n const containerEl = this.containerRef.current;\n if (containerEl) {\n containerEl.addEventListener('scroll', this.updateScrollValues);\n }\n\n this.checkListOverflow();\n }\n\n componentDidUpdate(prevProps: Readonly<ScrollspyProps>, prevState: Readonly<ScrollspyState>) {\n const {items, router} = this.props;\n const {inViewState} = this.state;\n\n if (!isEqual(inViewState, prevState.inViewState)) {\n this.scrollToListItem();\n }\n\n if (!isEqual(items, prevProps.items) || prevProps.router.pathname !== router.pathname) {\n this.initItems();\n }\n\n if (!this.overflowChecked) {\n this.overflowChecked = true;\n\n this.checkListOverflow();\n }\n\n if (router.hash !== prevProps.router.hash) {\n this.pauseScrollHandler();\n this.saveActiveItems(router.hash);\n }\n }\n\n componentWillUnmount() {\n window.removeEventListener('scroll', this.handleScroll);\n\n const containerEl = this.containerRef.current;\n if (containerEl) {\n containerEl.removeEventListener('scroll', this.updateScrollValues);\n }\n }\n\n render() {\n const {children, currentClassName, className, ...rest} = this.props;\n const {inViewState} = this.state;\n\n const items = children.map((child, index) => {\n if (!child) {\n return null;\n }\n\n const ChildTag = child.type;\n let childClassNames = child.props.className;\n\n if (inViewState[index] && currentClassName.length > 0) {\n childClassNames += ` ${currentClassName}`;\n\n this.syncScroll(index);\n }\n\n return (\n <ChildTag\n key={child.key}\n className={childClassNames}\n onClick={this.handleSectionClick}\n ref={this.itemRefs[index]}\n aria-current={inViewState[index] ? 'location' : undefined}\n >\n {child.props.children}\n </ChildTag>\n );\n });\n\n return (\n <ul className={className} ref={this.containerRef} {...rest}>\n {items}\n </ul>\n );\n }\n\n private updateFirstItemIndexInView(maxItemsInView: number) {\n this.firstItemIndexInView = Math.max(this.lastItemIndexInView - (maxItemsInView - 1), 0);\n }\n\n private getContainerValues(containerEl: HTMLUListElement) {\n const {children} = this.props;\n\n /* Average values */\n const childHeight = Math.round(containerEl.scrollHeight / children.length);\n const maxItemsInView = Math.round(containerEl.clientHeight / childHeight);\n\n return {childHeight, maxItemsInView};\n }\n\n private updateScrollValues = () => {\n const containerEl = this.containerRef.current;\n\n if (!containerEl) {\n return;\n }\n\n const {childHeight, maxItemsInView} = this.getContainerValues(containerEl);\n this.lastItemIndexInView =\n Math.round(containerEl.scrollTop / childHeight) + maxItemsInView - 1;\n\n this.updateFirstItemIndexInView(maxItemsInView);\n };\n\n private syncScroll(index: number) {\n const {children} = this.props;\n const containerEl = this.containerRef.current;\n\n if (!containerEl) {\n return;\n }\n\n const {childHeight, maxItemsInView} = this.getContainerValues(containerEl);\n\n if (this.lastItemIndexInView === -1) {\n this.lastItemIndexInView = maxItemsInView - 1;\n }\n\n this.updateFirstItemIndexInView(maxItemsInView);\n\n let itemInView = false;\n if (index >= this.lastItemIndexInView) {\n this.lastItemIndexInView = Math.min(index + 1, children.length - 1);\n } else if (index <= this.firstItemIndexInView) {\n this.lastItemIndexInView = Math.max(index + maxItemsInView - 2, maxItemsInView - 1);\n } else {\n itemInView = true;\n }\n\n this.updateFirstItemIndexInView(maxItemsInView);\n\n const endIsNear = index + maxItemsInView / 2 > children.length;\n if (itemInView) {\n return;\n } else if (endIsNear) {\n containerEl.scrollTop = containerEl.scrollHeight;\n } else {\n containerEl.scrollTop = childHeight * this.firstItemIndexInView;\n }\n }\n\n private scrollToListItem = () => {\n if (!this.props.scrollToListItem) {\n return;\n }\n\n let itemIndex = this.state.inViewState.findIndex((isActive) => isActive);\n\n if (itemIndex < 0) {\n itemIndex = 0;\n }\n\n const ref = this.itemRefs[itemIndex] && this.itemRefs[itemIndex].current;\n\n if (ref) {\n scrollIntoView(ref, {\n scrollMode: 'if-needed',\n block: 'nearest',\n inline: 'nearest',\n behavior: 'smooth',\n });\n }\n };\n\n private initItems() {\n const {items} = this.props;\n const targetItems = items\n .map((item) => document.getElementById(item.split('#')[1]))\n .filter(Boolean) as HTMLElement[];\n\n this.setState({targetItems}, this.initSections);\n this.scrollToListItem();\n }\n\n private initSections = () => {\n this.saveActiveItems();\n };\n\n private saveActiveItems(hash?: string) {\n const {titles, onActiveItemTitleChange} = this.props;\n\n const visibleItems = this.getViewState(hash);\n const activeItemTitle = this.getActiveItemTitle(titles, visibleItems);\n\n if (activeItemTitle && onActiveItemTitleChange) {\n onActiveItemTitleChange(activeItemTitle);\n }\n\n this.setState({inViewState: visibleItems});\n }\n\n private getViewState(hash?: string) {\n const {targetItems, inViewState} = this.state;\n const {headerHeight} = this.props;\n const currentOffset = window.pageYOffset;\n\n const isScrollUp = currentOffset < this.prevOffset;\n this.prevOffset = currentOffset;\n\n const pureHash = hash?.startsWith('#') ? hash.substring(1) : hash;\n\n let newActiveIndex: number;\n if (pureHash) {\n newActiveIndex = targetItems.findIndex(\n (item) => item && item.getAttribute('id') === pureHash,\n );\n } else {\n newActiveIndex = targetItems.reduce<number>((res, item, index) => {\n if (!item) {\n return res;\n }\n\n const isScrolledPast = item.getBoundingClientRect().top < headerHeight + 1;\n return isScrolledPast ? index : res;\n }, -1);\n }\n\n if (targetItems.length && newActiveIndex === -1) {\n newActiveIndex = 0;\n }\n\n if (newActiveIndex === -1) {\n return inViewState;\n }\n\n const prevActiveIndex = inViewState.findIndex(Boolean);\n const getNewInViewState = () => {\n if (newActiveIndex === prevActiveIndex) {\n return inViewState;\n }\n const result = new Array<boolean>(targetItems.length).fill(false);\n result[newActiveIndex] = true;\n return result;\n };\n\n if (pureHash) {\n this.hasActiveHash = true;\n return getNewInViewState();\n }\n\n // not changing active item until scroll up or the next item becomes active\n if (this.hasActiveHash) {\n if (isScrollUp || newActiveIndex > prevActiveIndex) {\n this.hasActiveHash = false;\n return getNewInViewState();\n }\n return inViewState;\n }\n\n return getNewInViewState();\n }\n\n private getActiveItemTitle(titles: string[] | undefined, inViewState: boolean[]) {\n const activeIndex = inViewState.findIndex(Boolean);\n return titles?.[activeIndex] ?? null;\n }\n\n private handleScroll = () => {\n if (this.scrollByClick) {\n // the end of smooth auto-scroll\n window.removeEventListener('scroll', this.handleScrollDebounced);\n window.addEventListener('scroll', this.handleScroll);\n this.scrollByClick = false;\n }\n this.saveActiveItems();\n };\n\n // eslint-disable-next-line @typescript-eslint/member-ordering, react/sort-comp\n private handleScrollDebounced = debounce(this.handleScroll, 100);\n\n private pauseScrollHandler() {\n // wait for the end of smooth auto-scroll\n this.scrollByClick = true;\n window.removeEventListener('scroll', this.handleScroll);\n window.addEventListener('scroll', this.handleScrollDebounced);\n }\n\n private handleSectionClick = (event: MouseEvent) => {\n const {onSectionClick} = this.props;\n const {target} = event;\n\n if (target && (target as HTMLElement).tagName === 'A') {\n event.stopPropagation();\n this.pauseScrollHandler();\n this.saveActiveItems((target as HTMLAnchorElement).hash);\n\n if (onSectionClick) {\n onSectionClick(event);\n }\n }\n };\n\n private checkListOverflow = () => {\n const {containerRef, itemRefs} = this;\n const {overflowedClassName} = this.props;\n\n const containerHeight = containerRef.current?.offsetHeight ?? 0;\n const itemsHeight = itemRefs.reduce(\n (heightSum, item) => heightSum + (item.current?.offsetHeight ?? 0),\n 0,\n );\n\n if (containerHeight < itemsHeight) {\n containerRef.current?.classList.add(overflowedClassName);\n }\n };\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["_a", "_b"]
|
|
7
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './Scrollspy';
|