34 lines
1.1 KiB
TypeScript

/* eslint-disable @typescript-eslint/consistent-type-assertions */
export * from "./controllers.js";
(function enableScrollPreservation() {
/* https://github.com/hotwired/turbo/issues/37#issuecomment-1422200868 */
let scrollTop = 0;
let shouldPreserveScroll = false;
document.addEventListener("turbo:click", function (event) {
if ((event.target as HTMLDivElement).hasAttribute("data-turbo-preserve-scroll")) {
shouldPreserveScroll = true;
} else {
shouldPreserveScroll = false;
}
});
document.addEventListener("turbo:before-visit", function () {
if (shouldPreserveScroll) {
scrollTop = document.documentElement.scrollTop;
}
});
addEventListener("turbo:visit", () => {
/* eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any */
if (shouldPreserveScroll) {
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any
(window as any).Turbo.navigator.currentVisit.scrolled = true;
document.documentElement.scrollTop = scrollTop;
}
shouldPreserveScroll = false;
});
})();