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

Commit 4a40c0c

Browse files
fix: update remote control on slides reorder change
1 parent e128741 commit 4a40c0c

File tree

4 files changed

+48
-6
lines changed

4 files changed

+48
-6
lines changed

studio/package-lock.json

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

studio/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
"test.watch": "stencil test --spec --e2e --watch"
1515
},
1616
"dependencies": {
17-
"@deckdeckgo/core": "^1.0.0-beta.41",
17+
"@deckdeckgo/core": "^1.0.0-beta.42",
1818
"@deckdeckgo/highlight-code": "^1.0.0-alpha.16",
1919
"@deckdeckgo/inline-editor": "^1.0.0-alpha.10",
2020
"@deckdeckgo/lazy-img": "^1.0.0-alpha.10",

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

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ export class RemoteEventsHandler {
239239

240240
deckgoRemoteElement.slides = $event.detail;
241241

242-
await this.updateRemoteSlides($event);
242+
await this.updateRemoteSlidesOnSlidesDidLoad($event);
243243

244244
resolve();
245245
});
@@ -392,7 +392,7 @@ export class RemoteEventsHandler {
392392
});
393393
}
394394

395-
private updateRemoteSlides($event: CustomEvent): Promise<void> {
395+
private updateRemoteSlidesOnSlidesDidLoad($event: CustomEvent): Promise<void> {
396396
return new Promise<void>(async (resolve) => {
397397
const deck: HTMLElement = this.el.querySelector('deckgo-deck');
398398

@@ -409,6 +409,46 @@ export class RemoteEventsHandler {
409409
return;
410410
}
411411

412+
await this.updateRemoteSlides();
413+
414+
resolve();
415+
});
416+
}
417+
418+
updateRemoteSlidesOnMutation(): Promise<void> {
419+
return new Promise<void>(async (resolve) => {
420+
const deck: HTMLElement = this.el.querySelector('deckgo-deck');
421+
422+
if (!deck || !deck.hasChildNodes()) {
423+
resolve();
424+
return;
425+
}
426+
427+
const observer: MutationObserver = new MutationObserver(async (_mutations: MutationRecord[], _observer: MutationObserver) => {
428+
429+
const slidesDefinition: any[] = await (deck as any).getSlidesDefinition();
430+
431+
if (slidesDefinition && slidesDefinition.length > 0) {
432+
const deckgoRemoteElement = this.el.querySelector('deckgo-remote');
433+
434+
if (deckgoRemoteElement) {
435+
deckgoRemoteElement.slides = slidesDefinition;
436+
437+
await this.updateRemoteSlides();
438+
}
439+
}
440+
441+
observer.disconnect();
442+
});
443+
444+
observer.observe(deck, {childList: true, subtree: true});
445+
446+
resolve();
447+
});
448+
}
449+
450+
private updateRemoteSlides(): Promise<void> {
451+
return new Promise<void>(async (resolve) => {
412452
const deckgoRemoteElement = this.el.querySelector('deckgo-remote');
413453

414454
if (!deckgoRemoteElement) {

studio/src/app/pages/editor/app-editor/app-editor.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -505,6 +505,8 @@ export class AppEditor {
505505
return;
506506
}
507507

508+
await this.remoteEventsHandler.updateRemoteSlidesOnMutation();
509+
508510
this.slides.splice(detail.to, 0, ...this.slides.splice(detail.from, 1));
509511
this.slides = [...this.slides];
510512
} catch (err) {

0 commit comments

Comments
 (0)