stylescape
Version:
Stylescape is a visual identity framework developed by Scape Agency.
78 lines (69 loc) • 2.33 kB
text/typescript
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,
)
}
}
}