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

Commit 788cdde

Browse files
feat: refresh video and reflect its url in slide
1 parent 3ddd41d commit 788cdde

File tree

3 files changed

+39
-3
lines changed

3 files changed

+39
-3
lines changed

webcomponents/core/src/components/extra/deckdeckgo-youtube/deckdeckgo-youtube.tsx

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {Component, Element, Method, Prop, h} from '@stencil/core';
1+
import {Component, Element, Method, Prop, h, Watch} from '@stencil/core';
22

33
import {DeckdeckgoExtra} from '../deckdeckgo-extra';
44

@@ -61,6 +61,11 @@ export class DeckdeckgoYoutube implements DeckdeckgoExtra {
6161
return this.createIFrame();
6262
}
6363

64+
@Watch('src')
65+
async onSrcUpdate() {
66+
await this.createIFrame();
67+
}
68+
6469
private createIFrame(): Promise<void> {
6570
return new Promise<void>((resolve) => {
6671
if (!this.src) {
@@ -70,11 +75,15 @@ export class DeckdeckgoYoutube implements DeckdeckgoExtra {
7075

7176
const iframe: HTMLIFrameElement = this.el.shadowRoot.querySelector('iframe');
7277

73-
if (iframe) {
78+
if (iframe && !iframe.parentElement) {
7479
resolve();
7580
return;
7681
}
7782

83+
if (iframe) {
84+
iframe.parentElement.removeChild(iframe);
85+
}
86+
7887
const element: HTMLIFrameElement = document.createElement('iframe');
7988

8089
const allow: Attr = document.createAttribute('allow');

webcomponents/core/src/components/slides/deckdeckgo-slide-youtube/deckdeckgo-slide-youtube.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export class DeckdeckgoSlideYoutube implements DeckdeckgoSlide {
1616

1717
@Event() slideDidLoad: EventEmitter<void>;
1818

19-
@Prop() src: string;
19+
@Prop({reflectToAttr: true}) src: string;
2020
@Prop() width: number;
2121
@Prop() height: number;
2222

webcomponents/core/src/index.html

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,10 +215,37 @@ <h1 slot="title">Manual code</h1>
215215
});
216216
}
217217

218+
function updateVideo() {
219+
return new Promise(async (resolve) => {
220+
const deck = document.getElementById('slider');
221+
222+
if (!deck) {
223+
resolve();
224+
return;
225+
}
226+
227+
const index = await deck.getActiveIndex();
228+
229+
const youtubeSlideElement = document.querySelector('.deckgo-slide-container:nth-child(' + (index + 1) + ')');
230+
231+
if (!youtubeSlideElement || youtubeSlideElement.tagName !== 'deckgo-slide-youtube'.toUpperCase()) {
232+
resolve();
233+
return;
234+
}
235+
236+
youtubeSlideElement.src = 'https://www.youtube.com/watch?v=-6Zc8Co2H3w';
237+
238+
console.log(youtubeSlideElement);
239+
240+
resolve();
241+
});
242+
}
243+
218244
document.addEventListener('pagerClick', function() { console.log('Pager clicked'); });
219245
</script>
220246

221247
<div style="position: fixed; bottom: 0; right: 0; padding: 32px;">
248+
<button onclick="updateVideo()">Update video</button>
222249
<button onclick="toggleVideo()">Toggle video</button>
223250
<button onclick="slidePrev()">Prev</button>
224251
<button onclick="slideNext()">Next</button>

0 commit comments

Comments
 (0)