Skip to content

Commit 3bb3f3b

Browse files
committed
Cleanup
1 parent 2f13df6 commit 3bb3f3b

File tree

4 files changed

+12
-36
lines changed

4 files changed

+12
-36
lines changed

src/defs.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ export type Logger = ReturnType<typeof createLogger>;
2929
export type ScrollContainer = Element & {
3030
__restore_scroll?: {
3131
selector: string;
32-
onScroll: () => void;
3332
};
3433
};
3534

src/helpers.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ export function createContainerSelector(
137137
element: Element,
138138
logger?: Logger,
139139
): string {
140-
if (isRootElement(element) && !element.id) {
140+
if (!isRootElement(element) && !element.id) {
141141
logger?.log(
142142
"💡 for best results, add an [id] to elements you want to restore",
143143
{ element },

src/restoreScroll.ts

Lines changed: 10 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ const defaults: Options = {
1515
debug: false,
1616
};
1717

18-
/** Hook into beforeunload */
18+
/** Hooked into beforeunload? */
1919
let hookedIntoBeforeUnload = false;
2020

2121
/**
@@ -44,12 +44,7 @@ export default function restoreScroll(
4444
window.addEventListener("beforeunload", storeAll);
4545
}
4646

47-
register(element, settings);
48-
49-
/**
50-
* Return a destroy function
51-
*/
52-
return { destroy: () => unregister(element) };
47+
return register(element, settings);
5348
}
5449

5550
/**
@@ -61,36 +56,20 @@ function register(element: ScrollContainer, settings: Settings) {
6156
/** Mark the element */
6257
element.setAttribute("data-restore-scroll", "");
6358

59+
/** First time? Then attach the scroll handler further down */
60+
const isFirstTime = !element.__restore_scroll;
61+
6462
/** Create and store the state in the element */
6563
element.__restore_scroll ??= {
6664
selector: createContainerSelector(element, logger),
67-
onScroll: debounce(() => store(element, settings), 150),
6865
};
6966

7067
/** Always restore when called */
7168
restore(element, settings);
7269

73-
const eventTarget = isRootElement(element) ? window : element;
74-
75-
/** Allow for repeated calls to `register` (interesting for e.g. the window) */
76-
eventTarget.removeEventListener("scroll", element.__restore_scroll.onScroll);
77-
eventTarget.addEventListener("scroll", element.__restore_scroll.onScroll, {
78-
passive: true,
79-
});
80-
}
81-
82-
/**
83-
* Unregister an element from scroll restoration
84-
*/
85-
function unregister(element: ScrollContainer) {
86-
if (!element.__restore_scroll) return;
87-
88-
/** Unmark the element */
89-
element.removeAttribute("data-restore-scroll");
90-
91-
const eventTarget = isRootElement(element) ? window : element;
92-
93-
eventTarget.removeEventListener("scroll", element.__restore_scroll.onScroll);
94-
95-
element.__restore_scroll = undefined;
70+
if (isFirstTime) {
71+
const eventTarget = isRootElement(element) ? window : element;
72+
const onScroll = debounce(() => store(element, settings), 150);
73+
eventTarget.addEventListener("scroll", onScroll, { passive: true });
74+
}
9675
}

tests/unit/tests/events.test.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ describe("events", () => {
2222
});
2323

2424
afterEach(() => {
25-
logSpy.mockRestore();
25+
vi.restoreAllMocks();
2626
document.body.innerHTML = "";
2727
});
2828

@@ -48,7 +48,6 @@ describe("events", () => {
4848
console.log(el, event.type, event.detail);
4949
});
5050

51-
const position = { top: 100, left: 0 };
5251
dispatch(el, "store", eventDetail, {});
5352
dispatch(el, "restore", eventDetail, {});
5453

@@ -69,7 +68,6 @@ describe("events", () => {
6968
console.log(el, event.type, event.detail);
7069
});
7170

72-
const position = { top: 100, left: 0 };
7371
dispatch(el, "store", eventDetail, settingsWithEvents);
7472
dispatch(el, "restore", eventDetail, settingsWithEvents);
7573

0 commit comments

Comments
 (0)