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

Commit e128741

Browse files
merge: from master
2 parents 2c16ef3 + 14fdada commit e128741

File tree

6 files changed

+70
-23
lines changed

6 files changed

+70
-23
lines changed

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
<a name="1.0.0-beta.51-1"></a>
2+
# [1.0.0-beta.51-1](https://github.com/deckgo/deckdeckgo/compare/v1.0.0-beta.51...v1.0.0-beta.51-1) (2019-07-18)
3+
4+
### Web Components
5+
6+
* core: v1.0.0-beta.42 ([CHANGELOG](https://github.com/deckgo/deckdeckgo/blob/master/webcomponents/core/CHANGELOG.md))
7+
18
<a name="1.0.0-beta.51"></a>
29
# [1.0.0-beta.51](https://github.com/deckgo/deckdeckgo/compare/v1.0.0-beta.50...v1.0.0-beta.51) (2019-07-17)
310

webcomponents/core/CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
<a name="1.0.0-beta.42"></a>
2+
# 1.0.0-beta.42 (2019-06-18)
3+
4+
### Features
5+
6+
* add a new function to query the slide definitions which could be used to update the remote connection
7+
18
<a name="1.0.0-beta.41"></a>
29
# 1.0.0-beta.41 (2019-06-13)
310

webcomponents/core/package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

webcomponents/core/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@deckdeckgo/core",
3-
"version": "1.0.0-beta.41",
3+
"version": "1.0.0-beta.42",
44
"description": "Add a presentation to your web application using HTML and Web Components",
55
"module": "dist/index.mjs",
66
"main": "dist/index.js",

webcomponents/core/src/components.d.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66

77

88
import { HTMLStencilElement, JSXBase } from '@stencil/core/internal';
9+
import {
10+
DeckdeckgoSlideDefinition,
11+
} from '@deckdeckgo/types';
912

1013

1114
export namespace Components {
@@ -17,6 +20,7 @@ export namespace Components {
1720
'embedded': boolean;
1821
'getActiveIndex': () => Promise<number>;
1922
'getLength': () => Promise<number>;
23+
'getSlidesDefinition': () => Promise<DeckdeckgoSlideDefinition[]>;
2024
'initSlideSize': () => Promise<void>;
2125
'isBeginning': () => Promise<boolean>;
2226
'isEnd': () => Promise<boolean>;

webcomponents/core/src/components/deck/deckdeckgo-deck/deckdeckgo-deck.tsx

Lines changed: 50 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -402,39 +402,68 @@ export class DeckdeckgoDeck {
402402
}
403403

404404
private afterSlidesDidLoad(): Promise<void> {
405+
return new Promise<void>(async (resolve) => {
406+
const slidesDefinition: DeckdeckgoSlideDefinition[] = await this.getSlidesDefinition();
407+
408+
if (slidesDefinition && slidesDefinition.length > 0) {
409+
this.slidesDidLoad.emit(slidesDefinition);
410+
411+
await this.onAllSlidesDidLoadLazyAndClone();
412+
}
413+
414+
resolve();
415+
});
416+
}
417+
418+
private onAllSlidesDidLoadLazyAndClone(): Promise<void> {
405419
return new Promise<void>(async (resolve) => {
406420
const filteredSlides: HTMLElement[] = await this.getDefinedFilteredSlides();
407421

422+
const promises: Promise<void>[] = [];
423+
promises.push(this.lazyLoadFirstSlides());
424+
promises.push(DeckdeckgoDeckBackgroundUtils.cloneSlots(this.el, filteredSlides, 'actions'));
425+
promises.push(DeckdeckgoDeckBackgroundUtils.cloneAndLoadBackground(this.el, filteredSlides, this.cloneBackground));
426+
427+
await Promise.all(promises);
428+
429+
resolve();
430+
});
431+
}
432+
433+
@Method()
434+
getSlidesDefinition(): Promise<DeckdeckgoSlideDefinition[]> {
435+
return new Promise<DeckdeckgoSlideDefinition[] | null>(async (resolve) => {
408436
const loadedSlides: NodeListOf<HTMLElement> = this.el.querySelectorAll('.deckgo-slide-container');
409437

438+
if (!loadedSlides || loadedSlides.length <= 0) {
439+
resolve(null);
440+
return;
441+
}
442+
443+
const filteredSlides: HTMLElement[] = await this.getDefinedFilteredSlides();
444+
410445
const definedSlidesLength: number = filteredSlides ? filteredSlides.length : 0;
411446

412447
// Are all slides loaded?
413-
if (filteredSlides && loadedSlides && loadedSlides.length === definedSlidesLength && definedSlidesLength === this.length) {
414-
const orderedSlidesTagNames: DeckdeckgoSlideDefinition[] = [];
415-
416-
Array.from(loadedSlides).forEach((slide: HTMLElement) => {
417-
const notes: HTMLElement = slide.querySelector('[slot=\'notes\']');
418-
const title: HTMLElement = slide.querySelector('[slot=\'title\']');
419-
420-
orderedSlidesTagNames.push({
421-
name: slide.tagName,
422-
title: title ? title.innerHTML : null,
423-
notes: notes ? notes.innerHTML : null
424-
});
425-
});
448+
if (loadedSlides.length !== definedSlidesLength) {
449+
resolve(null);
450+
return;
451+
}
426452

427-
this.slidesDidLoad.emit(orderedSlidesTagNames);
453+
const orderedSlidesTagNames: DeckdeckgoSlideDefinition[] = [];
428454

429-
const promises: Promise<void>[] = [];
430-
promises.push(this.lazyLoadFirstSlides());
431-
promises.push(DeckdeckgoDeckBackgroundUtils.cloneSlots(this.el, filteredSlides, 'actions'));
432-
promises.push(DeckdeckgoDeckBackgroundUtils.cloneAndLoadBackground(this.el, filteredSlides, this.cloneBackground));
455+
Array.from(loadedSlides).forEach((slide: HTMLElement) => {
456+
const notes: HTMLElement = slide.querySelector('[slot=\'notes\']');
457+
const title: HTMLElement = slide.querySelector('[slot=\'title\']');
433458

434-
await Promise.all(promises);
435-
}
459+
orderedSlidesTagNames.push({
460+
name: slide.tagName,
461+
title: title ? title.innerHTML : null,
462+
notes: notes ? notes.innerHTML : null
463+
});
464+
});
436465

437-
resolve();
466+
resolve(orderedSlidesTagNames);
438467
});
439468
}
440469

0 commit comments

Comments
 (0)