@itwin/core-react
Version:
A react component library of iTwin.js UI general purpose components
37 lines • 1.36 kB
JavaScript
/**
* A helper class to recursively save and restore scroll positions.
* Usage:
* ```ts
* // scroll positions are saved when `ScrollPositionMaintainer` object is created
* const maintainer = new ScrollPositionMaintainer(element);
* // can do something with `element` here
* // disposing the `maintainer` object restores scroll positions
* maintainer.dispose();
* ```
* @public
* @deprecated in 4.15.0. Not use by AppUI.
*/
// eslint-disable-next-line @typescript-eslint/no-deprecated
export class ScrollPositionMaintainer {
constructor(el) {
this._storage = new Map();
// eslint-disable-next-line @typescript-eslint/no-deprecated
ScrollPositionMaintainer.saveScrollPositions([el], this._storage);
}
dispose() {
// eslint-disable-next-line @typescript-eslint/no-deprecated
ScrollPositionMaintainer.restoreScrollPositions(this._storage);
}
static saveScrollPositions(elements, storage) {
for (const el of elements) {
if (el.scrollTop)
storage.set(el, el.scrollTop);
if (el.children)
this.saveScrollPositions(el.children, storage);
}
}
static restoreScrollPositions(storage) {
storage.forEach((scrollTop, el) => (el.scrollTop = scrollTop));
}
}
//# sourceMappingURL=ScrollPositionMaintainer.js.map