UNPKG

@itwin/core-react

Version:

A react component library of iTwin.js UI general purpose components

38 lines 1.37 kB
/** * 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 { _storage; 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