UNPKG

stylescape

Version:

Stylescape is a visual identity framework developed by Scape Agency.

78 lines (69 loc) 2.33 kB
export class ScrollElementManager { private contentElement: HTMLElement | null private storageKey: string private debug: boolean constructor( contentSelector: string, storageKey: string = "scrollpos", debug = false, ) { this.contentElement = document.querySelector(contentSelector) this.storageKey = storageKey this.debug = debug if (!this.contentElement) { if (this.debug) console.warn( "ScrollElementManager: Element not found:", contentSelector, ) return } this.initialize() } private initialize(): void { window.addEventListener("load", this.loadScrollPosition.bind(this)) this.contentElement?.addEventListener( "scroll", this.updateScrollPosition.bind(this), ) if (this.debug) console.log("ScrollElementManager initialized.") } private loadScrollPosition(): void { try { const scrollpos = sessionStorage.getItem(this.storageKey) if (scrollpos !== null && this.contentElement) { this.contentElement.scrollTop = parseInt(scrollpos, 10) sessionStorage.removeItem(this.storageKey) if (this.debug) console.log("Scroll position restored:", scrollpos) } } catch (err) { if (this.debug) console.error( "ScrollElementManager error loading scroll position:", err, ) } } private updateScrollPosition(): void { try { if (this.contentElement) { sessionStorage.setItem( this.storageKey, this.contentElement.scrollTop.toString(), ) if (this.debug) console.log( "Scroll position saved:", this.contentElement.scrollTop, ) } } catch (err) { if (this.debug) console.error( "ScrollElementManager error saving scroll position:", err, ) } } }