grep-components 1.7.0 → 1.8.2
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/components/ToC/components/nav-tree-node.d.ts +2 -0
- package/dist/components/ToC/components/nav-tree.d.ts +2 -0
- package/dist/components/ToC/components/nav.d.ts +2 -0
- package/dist/components/ToC/index.d.ts +2 -0
- package/dist/index.js +28 -10
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -14,6 +14,8 @@ export interface GrepTableOfContentNavTreeNodeProps {
|
|
|
14
14
|
className?: string;
|
|
15
15
|
style?: React.CSSProperties;
|
|
16
16
|
renderChilds: (children: ContextTree) => ReactElement;
|
|
17
|
+
setSelectedValue: (selected: any) => void;
|
|
18
|
+
percentageRendered: number;
|
|
17
19
|
}
|
|
18
20
|
export declare const GrepTableOfContentNavTreeNode: React.FC<GrepTableOfContentNavTreeNodeProps>;
|
|
19
21
|
export default GrepTableOfContentNavTreeNode;
|
|
@@ -2,6 +2,8 @@ import React from 'react';
|
|
|
2
2
|
export interface GrepTableOfContentNavProps {
|
|
3
3
|
className?: string;
|
|
4
4
|
style?: React.CSSProperties;
|
|
5
|
+
setSelectedValue: (selected: any) => void;
|
|
6
|
+
percentageRendered: number;
|
|
5
7
|
}
|
|
6
8
|
export declare const GrepTableOfContentNav: React.FC<GrepTableOfContentNavProps>;
|
|
7
9
|
export default GrepTableOfContentNav;
|
|
@@ -3,6 +3,8 @@ import { GrepTableOfContentProviderProps as ContextProviderProps } from './conte
|
|
|
3
3
|
export interface GrepTableOfContentProps extends ContextProviderProps {
|
|
4
4
|
style?: React.CSSProperties;
|
|
5
5
|
className?: string;
|
|
6
|
+
setSelectedValue: (selected: any) => void;
|
|
7
|
+
percentageRendered: number;
|
|
6
8
|
}
|
|
7
9
|
export declare const GrepTableOfContent: React.FC<GrepTableOfContentProps>;
|
|
8
10
|
export default GrepTableOfContent;
|
package/dist/index.js
CHANGED
|
@@ -22296,12 +22296,13 @@ var useStyles$2 = makeStyles()(function (_a, _b) {
|
|
|
22296
22296
|
|
|
22297
22297
|
var GrepTableOfContentNavTreeNode = function (props) {
|
|
22298
22298
|
var linkRef = useRef(null);
|
|
22299
|
-
var node = props.node, style = props.style, renderChilds = props.renderChilds;
|
|
22299
|
+
var node = props.node, style = props.style, renderChilds = props.renderChilds, setSelectedValue = props.setSelectedValue, percentageRendered = props.percentageRendered;
|
|
22300
22300
|
var lvl = node.lvl, el = node.el, index = node.index, children = node.children;
|
|
22301
|
-
var _a = useContext(context), selected = _a.selected, setSelected = _a.setSelected, classes = _a.classes;
|
|
22301
|
+
var _a = useContext(context), selected = _a.selected, setSelected = _a.setSelected, classes = _a.classes, elements = _a.elements;
|
|
22302
22302
|
var isSelected = el === selected;
|
|
22303
22303
|
var styles = useStyles$2({ lvl: lvl }).classes;
|
|
22304
22304
|
var className = clsx('grep-toc__nav-tree-node', isSelected && 'grep-toc__nav-tree-node--selected', styles.root, classes === null || classes === void 0 ? void 0 : classes.node, props.className);
|
|
22305
|
+
var _b = __read(useState(false), 2), awaitingRender = _b[0], setAwaitingRender = _b[1];
|
|
22305
22306
|
var txt = el.innerText;
|
|
22306
22307
|
var location = useSelector(function (s) { return getLocation(s); });
|
|
22307
22308
|
var url = "".concat(location.pathname).concat(location.search, "#").concat(node.id);
|
|
@@ -22309,19 +22310,36 @@ var GrepTableOfContentNavTreeNode = function (props) {
|
|
|
22309
22310
|
var link = linkRef.current;
|
|
22310
22311
|
if (isSelected) {
|
|
22311
22312
|
link === null || link === void 0 ? void 0 : link.scrollIntoViewIfNeeded();
|
|
22313
|
+
//setTimeout(() => link?.scrollIntoViewIfNeeded(), 2000);
|
|
22312
22314
|
}
|
|
22313
22315
|
else if (link === document.activeElement) {
|
|
22314
22316
|
link === null || link === void 0 ? void 0 : link.blur();
|
|
22315
22317
|
}
|
|
22316
|
-
}, [isSelected, linkRef]);
|
|
22318
|
+
}, [isSelected, linkRef, setSelectedValue]);
|
|
22317
22319
|
var tabIndex = isSelected ? 0 : -1;
|
|
22320
|
+
useEffect(function () {
|
|
22321
|
+
if (awaitingRender) {
|
|
22322
|
+
doSelect();
|
|
22323
|
+
setAwaitingRender(false);
|
|
22324
|
+
}
|
|
22325
|
+
}, [percentageRendered]);
|
|
22326
|
+
var doSelect = function (checkAwaitRender) {
|
|
22327
|
+
if (checkAwaitRender === void 0) { checkAwaitRender = false; }
|
|
22328
|
+
window.history.replaceState({}, txt, url);
|
|
22329
|
+
setSelected(el, true);
|
|
22330
|
+
var values = Object.values(elements);
|
|
22331
|
+
var newPercentage = values.findIndex(function (e) { return e === el; }) / values.length + 0.1;
|
|
22332
|
+
setSelectedValue(newPercentage);
|
|
22333
|
+
if (checkAwaitRender && newPercentage > percentageRendered) {
|
|
22334
|
+
setAwaitingRender(true);
|
|
22335
|
+
}
|
|
22336
|
+
};
|
|
22318
22337
|
return (React__default.createElement("li", { key: index, "data-lvl": lvl, className: className, style: style },
|
|
22319
22338
|
React__default.createElement(Link$1, { ref: linkRef, className: clsx(styles.link, isSelected && "".concat(styles.link, "--selected")), href: url, tabIndex: tabIndex, onClick: function (event) {
|
|
22320
22339
|
console.debug('node click', node);
|
|
22321
22340
|
event.preventDefault();
|
|
22322
22341
|
event.stopPropagation();
|
|
22323
|
-
|
|
22324
|
-
setSelected(el, true);
|
|
22342
|
+
doSelect(true);
|
|
22325
22343
|
}, color: "inherit" }, txt),
|
|
22326
22344
|
children && renderChilds(children)));
|
|
22327
22345
|
};
|
|
@@ -22338,11 +22356,11 @@ var useStyles$1 = makeStyles()(function () { return ({
|
|
|
22338
22356
|
}); });
|
|
22339
22357
|
|
|
22340
22358
|
var NavTree = function (props) {
|
|
22341
|
-
var elements = props.elements, style = props.style;
|
|
22359
|
+
var elements = props.elements, style = props.style, setSelectedValue = props.setSelectedValue, percentageRendered = props.percentageRendered;
|
|
22342
22360
|
var classes = useContext(context).classes;
|
|
22343
22361
|
var styles = useStyles$1().classes;
|
|
22344
22362
|
var className = clsx('grep-toc__nav-tree', styles.root, classes === null || classes === void 0 ? void 0 : classes.tree, props.className);
|
|
22345
|
-
return (React__default.createElement("ul", { className: className, style: style }, Object.values(elements).map(function (node) { return (React__default.createElement(GrepTableOfContentNavTreeNode, { node: node, key: node.index, renderChilds: function (children) { return React__default.createElement(NavTree, { elements: children }); } })); })));
|
|
22363
|
+
return (React__default.createElement("ul", { className: className, style: style }, Object.values(elements).map(function (node) { return (React__default.createElement(GrepTableOfContentNavTreeNode, { node: node, key: node.index, renderChilds: function (children) { return (React__default.createElement(NavTree, { elements: children, setSelectedValue: setSelectedValue, percentageRendered: percentageRendered })); }, setSelectedValue: setSelectedValue, percentageRendered: percentageRendered })); })));
|
|
22346
22364
|
};
|
|
22347
22365
|
NavTree.displayName = 'Grep.ToC.NavTree';
|
|
22348
22366
|
|
|
@@ -22467,14 +22485,14 @@ var GrepTableOfContentNav = function (props) {
|
|
|
22467
22485
|
var style = useStyles().classes;
|
|
22468
22486
|
var className = clsx('grep-toc__nav', style.root, classes === null || classes === void 0 ? void 0 : classes.nav, props.className, showKeyboardHint && style.keyboardHint);
|
|
22469
22487
|
return (React__default.createElement("nav", { className: className, style: props.style, tabIndex: selected ? -1 : 0, onKeyDown: onKeyDown, ref: ref },
|
|
22470
|
-
React__default.createElement(NavTree, { elements: tree })));
|
|
22488
|
+
React__default.createElement(NavTree, { elements: tree, setSelectedValue: props.setSelectedValue, percentageRendered: props.percentageRendered })));
|
|
22471
22489
|
};
|
|
22472
22490
|
GrepTableOfContentNav.displayName = 'Grep.ToC.Nav';
|
|
22473
22491
|
|
|
22474
22492
|
var GrepTableOfContent = function (_a) {
|
|
22475
|
-
var style = _a.style, className = _a.className, props = __rest$1(_a, ["style", "className"]);
|
|
22493
|
+
var style = _a.style, className = _a.className, setSelectedValue = _a.setSelectedValue, percentageRendered = _a.percentageRendered, props = __rest$1(_a, ["style", "className", "setSelectedValue", "percentageRendered"]);
|
|
22476
22494
|
return (React__default.createElement(GrepTableOfContentProvider, __assign({}, props),
|
|
22477
|
-
React__default.createElement(GrepTableOfContentNav, { className: className, style: style })));
|
|
22495
|
+
React__default.createElement(GrepTableOfContentNav, { className: className, style: style, setSelectedValue: setSelectedValue, percentageRendered: percentageRendered })));
|
|
22478
22496
|
};
|
|
22479
22497
|
GrepTableOfContent.displayName = 'Grep.ToC';
|
|
22480
22498
|
|