Skip to content
This repository was archived by the owner on Feb 6, 2024. It is now read-only.

Commit 527fbff

Browse files
fix: slide to last slide when new slide added
1 parent 09f668e commit 527fbff

File tree

1 file changed

+26
-5
lines changed

1 file changed

+26
-5
lines changed

studio/src/app/handlers/editor/events/deck/deck-events.handler.tsx

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ export class DeckEventsHandler {
5555
this.el.addEventListener('deckDidChange', this.onDeckChange, false);
5656
this.el.addEventListener('slideDidChange', this.onSlideChange, false);
5757
this.el.addEventListener('slideDidLoad', this.onSlideDidLoad, false);
58+
this.el.addEventListener('slidesDidLoad', this.onSlidesDidLoad, false);
5859
this.el.addEventListener('slideDelete', this.onSlideDelete, false);
5960
this.el.addEventListener('codeDidChange', this.onCodeChange, false);
6061

@@ -75,6 +76,7 @@ export class DeckEventsHandler {
7576
this.el.removeEventListener('deckDidChange', this.onDeckChange, true);
7677
this.el.removeEventListener('slideDidChange', this.onSlideChange, true);
7778
this.el.removeEventListener('slideDidLoad', this.onSlideDidLoad, true);
79+
this.el.removeEventListener('slidesDidLoad', this.onSlidesDidLoad, true);
7880
this.el.removeEventListener('slideDelete', this.onSlideDelete, true);
7981
this.el.removeEventListener('codeDidChange', this.onCodeChange, true);
8082

@@ -91,11 +93,16 @@ export class DeckEventsHandler {
9193

9294
private onSlideDidLoad = async ($event: CustomEvent) => {
9395
if ($event && $event.target && $event.target instanceof HTMLElement) {
94-
await this.slideToLastSlide($event.target);
9596
await this.createSlide($event.target);
9697
}
9798
};
9899

100+
private onSlidesDidLoad = async ($event: CustomEvent) => {
101+
if ($event) {
102+
await this.slideToLastSlide();
103+
}
104+
};
105+
99106
private onDeckChange = async ($event: CustomEvent) => {
100107
if (!$event || !$event.detail) {
101108
return;
@@ -518,19 +525,33 @@ export class DeckEventsHandler {
518525
return SlideTemplate[templateKey];
519526
}
520527

521-
private slideToLastSlide(newSlide: HTMLElement): Promise<void> {
528+
private slideToLastSlide(): Promise<void> {
522529
return new Promise<void>(async (resolve) => {
523530
const deck: HTMLElement = this.el.querySelector('deckgo-deck');
524531

525-
if (!deck) {
532+
if (!deck || !deck.children || deck.children.length <= 0) {
533+
resolve();
534+
return;
535+
}
536+
537+
const slides: Element[] = Array.from(deck.children).filter((slide: Element) => {
538+
return slide.tagName.toLocaleLowerCase().indexOf('deckgo-slide-') > -1
539+
});
540+
541+
if (!slides || slides.length <= 0) {
526542
resolve();
527543
return;
528544
}
529545

530-
if (!newSlide.getAttribute('slide_id') && deck.hasChildNodes()) {
531-
await (deck as any).slideTo(deck.children && deck.children.length > 0 ? deck.children.length - 1 : 0);
546+
const lastSlide: Element = slides[slides.length - 1];
547+
548+
if (!lastSlide || lastSlide.getAttribute('slide_id')) {
549+
resolve();
550+
return;
532551
}
533552

553+
await (deck as any).slideTo(slides.length - 1);
554+
534555
resolve();
535556
});
536557
}

0 commit comments

Comments
 (0)