Skip to content

Commit a5cebf2

Browse files
committed
Run onConnect callback just once. Fixes #1191.
1 parent 2975ef6 commit a5cebf2

File tree

1 file changed

+15
-9
lines changed

1 file changed

+15
-9
lines changed

packages/vidstack/src/elements/define/sliders/slider-chapters-element.ts

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,23 @@ export class MediaSliderChaptersElement extends Host(HTMLElement, SliderChapters
2626
static tagName = 'media-slider-chapters';
2727

2828
#template: HTMLTemplateElement | null = null;
29+
#connected_ran_once: Boolean = false;
2930

3031
protected onConnect(): void {
31-
// Animation frame required as some frameworks append late for some reason.
32-
requestScopedAnimationFrame(() => {
33-
if (!this.connectScope) return;
34-
const template = this.querySelector('template') as HTMLTemplateElement | null;
35-
if (template) {
36-
this.#template = template;
37-
effect(this.#renderTemplate.bind(this));
38-
}
39-
});
32+
// onConnect can run more than once (eg, Phoenix LiveView after navigation)
33+
if (!this.#connected_ran_once) {
34+
// Animation frame required as some frameworks append late for some reason.
35+
requestScopedAnimationFrame(() => {
36+
if (!this.connectScope) return;
37+
const template = this.querySelector('template') as HTMLTemplateElement | null;
38+
if (template) {
39+
this.#template = template;
40+
effect(this.#renderTemplate.bind(this));
41+
}
42+
});
43+
44+
this.#connected_ran_once = true;
45+
}
4046
}
4147

4248
#renderTemplate() {

0 commit comments

Comments
 (0)