Skip to content

Commit 90cf4dc

Browse files
committed
feat: add livewire navigated listener to global state and event handling
1 parent 716b069 commit 90cf4dc

3 files changed

Lines changed: 36 additions & 0 deletions

File tree

resources/js/src/main.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ exports.window.__pan =
99
clickListener: null,
1010
mouseoverListener: null,
1111
inertiaStartListener: null,
12+
livewireNavigatedListener: null,
1213
};
1314
if (exports.window.__pan.observer) {
1415
exports.window.__pan.observer.disconnect();
@@ -26,6 +27,10 @@ if (exports.window.__pan.inertiaStartListener) {
2627
document.removeEventListener("inertia:start", exports.window.__pan.inertiaStartListener);
2728
exports.window.__pan.inertiaStartListener = null;
2829
}
30+
if (exports.window.__pan.livewireNavigatedListener) {
31+
document.removeEventListener("livewire:navigated", exports.window.__pan.livewireNavigatedListener);
32+
exports.window.__pan.livewireNavigatedListener = null;
33+
}
2934
(function () {
3035
const domObserver = (callback) => {
3136
const observer = new MutationObserver(callback);
@@ -139,6 +144,13 @@ if (exports.window.__pan.inertiaStartListener) {
139144
detectImpressions();
140145
};
141146
document.addEventListener("inertia:start", exports.window.__pan.inertiaStartListener);
147+
exports.window.__pan.livewireNavigatedListener = () => {
148+
impressed = [];
149+
hovered = [];
150+
clicked = [];
151+
detectImpressions();
152+
};
153+
document.addEventListener("livewire:navigated", exports.window.__pan.livewireNavigatedListener);
142154
exports.window.__pan.beforeUnloadListener = function (event) {
143155
if (queue.length === 0) {
144156
return;

resources/js/src/main.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ window.__pan =
1313
clickListener: null,
1414
mouseoverListener: null,
1515
inertiaStartListener: null,
16+
livewireNavigatedListener: null,
1617
} as GlobalState);
1718

1819
if (window.__pan.observer) {
@@ -42,6 +43,15 @@ if (window.__pan.inertiaStartListener) {
4243
window.__pan.inertiaStartListener = null;
4344
}
4445

46+
if (window.__pan.livewireNavigatedListener) {
47+
document.removeEventListener(
48+
"livewire:navigated",
49+
window.__pan.livewireNavigatedListener,
50+
);
51+
52+
window.__pan.livewireNavigatedListener = null;
53+
}
54+
4555
(function (): void {
4656
const domObserver = (callback: MutationCallback): void => {
4757
const observer = new MutationObserver(callback);
@@ -210,6 +220,19 @@ if (window.__pan.inertiaStartListener) {
210220
window.__pan.inertiaStartListener,
211221
);
212222

223+
window.__pan.livewireNavigatedListener = (): void => {
224+
impressed = [];
225+
hovered = [];
226+
clicked = [];
227+
228+
detectImpressions();
229+
};
230+
231+
document.addEventListener(
232+
"livewire:navigated",
233+
window.__pan.livewireNavigatedListener,
234+
);
235+
213236
window.__pan.beforeUnloadListener = function (event: Event): void {
214237
if (queue.length === 0) {
215238
return;

resources/js/src/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,6 @@ export type GlobalState = {
77
clickListener: EventListener | null;
88
mouseoverListener: EventListener | null;
99
inertiaStartListener: EventListener | null;
10+
livewireNavigatedListener: EventListener | null;
1011
beforeUnloadListener: EventListener | null;
1112
};

0 commit comments

Comments
 (0)