@w11k/ngx-present
Version:
Angular based Presentation Tool
152 lines • 13.3 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: lib/theming/table-of-content.component.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, Input } from '@angular/core';
import { OnDestroyMixin, untilComponentDestroyed } from '@w11k/ngx-componentdestroyed';
import { BehaviorSubject, combineLatest } from 'rxjs';
import { map } from 'rxjs/operators';
import { PresentationService } from '../core/presentation.service';
import { filterDeep, limitDepth, mapDeep } from '../core/utils';
import { coordinatesToString } from '../slide-by-slide/slide-by-slide.functions';
import { tableOfContentMetadata } from './table-of-content';
export class TableOfContentComponent extends OnDestroyMixin {
/**
* @param {?} service
*/
constructor(service) {
super();
this.service = service;
this.showCoordinates$ = new BehaviorSubject(undefined);
this.coordinatesSeparator$ = new BehaviorSubject(undefined);
this.depth$ = new BehaviorSubject(undefined);
/** @type {?} */
const presentation$ = this.service.select((/**
* @param {?} x
* @return {?}
*/
x => x))
.pipe(untilComponentDestroyed(this));
combineLatest(presentation$, this.showCoordinates$, this.coordinatesSeparator$, this.depth$)
.pipe(map((/**
* @param {?} __0
* @return {?}
*/
([presentation, showCoordinates, coordinatesSeparator, depth]) => {
/** @type {?} */
const leveled = limitDepth(presentation.slides, depth || presentation.config.tableOfContent.depth);
/** @type {?} */
const mapped = mapDeep(leveled, slideToUiEntryMapper(presentation.config, showCoordinates, coordinatesSeparator));
/** @type {?} */
const filtered = filterDeep(mapped, (/**
* @param {?} x
* @return {?}
*/
x => x !== undefined));
return filtered;
})))
.subscribe((/**
* @param {?} links
* @return {?}
*/
links => this.entries = links));
}
/**
* @param {?} val
* @return {?}
*/
set showCoordinates(val) {
this.showCoordinates$.next(val);
}
/**
* @param {?} val
* @return {?}
*/
set coordinatesSeparator(val) {
this.coordinatesSeparator$.next(val);
}
/**
* @param {?} val
* @return {?}
*/
set depth(val) {
this.depth$.next(val);
}
}
TableOfContentComponent.decorators = [
{ type: Component, args: [{
selector: 'ngx-present-table-of-content',
template: `
<ngx-present-table-of-content-view [entries]="entries"></ngx-present-table-of-content-view>
`
}] }
];
/** @nocollapse */
TableOfContentComponent.ctorParameters = () => [
{ type: PresentationService }
];
TableOfContentComponent.propDecorators = {
showCoordinates: [{ type: Input }],
coordinatesSeparator: [{ type: Input }],
depth: [{ type: Input }]
};
if (false) {
/**
* @type {?}
* @private
*/
TableOfContentComponent.prototype.showCoordinates$;
/**
* @type {?}
* @private
*/
TableOfContentComponent.prototype.coordinatesSeparator$;
/**
* @type {?}
* @private
*/
TableOfContentComponent.prototype.depth$;
/** @type {?} */
TableOfContentComponent.prototype.entries;
/**
* @type {?}
* @private
*/
TableOfContentComponent.prototype.service;
}
/**
* @param {?} config
* @param {?} showCoordinatesInput
* @param {?} coordinatesSeparatorInput
* @return {?}
*/
function slideToUiEntryMapper(config, showCoordinatesInput, coordinatesSeparatorInput) {
return (/**
* @param {?} slide
* @return {?}
*/
(slide) => {
/** @type {?} */
const decoratorMetadata = tableOfContentMetadata(slide);
if (decoratorMetadata !== undefined) {
/** @type {?} */
let linkName = decoratorMetadata.linkName;
/** @type {?} */
const showCoordinates = (showCoordinatesInput !== undefined && showCoordinatesInput) ||
config.tableOfContent.showCoordinates;
if (showCoordinates) {
/** @type {?} */
const coordinates = coordinatesToString(slide.coordinates, config.coordinates.separator, -1);
/** @type {?} */
const coordinatesSeparator = coordinatesSeparatorInput !== undefined ? coordinatesSeparatorInput : config.tableOfContent.separator;
linkName = `${coordinates}${coordinatesSeparator} ${linkName}`;
}
return { component: slide.component, name: linkName };
}
else {
return undefined;
}
});
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtb2YtY29udGVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdzExay9uZ3gtcHJlc2VudC8iLCJzb3VyY2VzIjpbImxpYi90aGVtaW5nL3RhYmxlLW9mLWNvbnRlbnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLGNBQWMsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXRELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDakYsT0FBTyxFQUFxQixzQkFBc0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBUy9FLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxjQUFjOzs7O0lBa0J6RCxZQUE2QixPQUE0QjtRQUN2RCxLQUFLLEVBQUUsQ0FBQztRQURtQixZQUFPLEdBQVAsT0FBTyxDQUFxQjtRQWhCeEMscUJBQWdCLEdBQUcsSUFBSSxlQUFlLENBQXNCLFNBQVMsQ0FBQyxDQUFDO1FBT3ZFLDBCQUFxQixHQUFHLElBQUksZUFBZSxDQUFxQixTQUFTLENBQUMsQ0FBQztRQU8zRSxXQUFNLEdBQUcsSUFBSSxlQUFlLENBQXFCLFNBQVMsQ0FBQyxDQUFDOztjQUtyRSxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNOzs7O1FBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUM7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QUNILENBQUMsRUFBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPbkRlc3Ryb3lNaXhpbiwgdW50aWxDb21wb25lbnREZXN0cm95ZWQgfSBmcm9tICdAdzExay9uZ3gtY29tcG9uZW50ZGVzdHJveWVkJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBQcmVzZW50YXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS9wcmVzZW50YXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBOZ3hQcmVzZW50Q29uZmlnLCBTbGlkZSB9IGZyb20gJy4uL2NvcmUvcHJlc2VudGF0aW9uLnR5cGVzJztcbmltcG9ydCB7IGZpbHRlckRlZXAsIGxpbWl0RGVwdGgsIG1hcERlZXAgfSBmcm9tICcuLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IGNvb3JkaW5hdGVzVG9TdHJpbmcgfSBmcm9tICcuLi9zbGlkZS1ieS1zbGlkZS9zbGlkZS1ieS1zbGlkZS5mdW5jdGlvbnMnO1xuaW1wb3J0IHsgRGVjb3JhdG9yTWV0YWRhdGEsIHRhYmxlT2ZDb250ZW50TWV0YWRhdGEgfSBmcm9tICcuL3RhYmxlLW9mLWNvbnRlbnQnO1xuaW1wb3J0IHsgVUlFbnRyeSB9IGZyb20gJy4vdGFibGUtb2YtY29udGVudC12aWV3LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC1wcmVzZW50LXRhYmxlLW9mLWNvbnRlbnQnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZ3gtcHJlc2VudC10YWJsZS1vZi1jb250ZW50LXZpZXcgW2VudHJpZXNdPVwiZW50cmllc1wiPjwvbmd4LXByZXNlbnQtdGFibGUtb2YtY29udGVudC12aWV3PlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlT2ZDb250ZW50Q29tcG9uZW50IGV4dGVuZHMgT25EZXN0cm95TWl4aW4ge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2hvd0Nvb3JkaW5hdGVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNob3dDb29yZGluYXRlcyh2YWw6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNob3dDb29yZGluYXRlcyQubmV4dCh2YWwpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBjb29yZGluYXRlc1NlcGFyYXRvciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGNvb3JkaW5hdGVzU2VwYXJhdG9yKHZhbDogc3RyaW5nKSB7XG4gICAgdGhpcy5jb29yZGluYXRlc1NlcGFyYXRvciQubmV4dCh2YWwpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkZXB0aCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHNlcnZpY2U6IFByZXNlbnRhdGlvblNlcnZpY2UpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgY29uc3QgcHJlc2VudGF0aW9uJCA9IHRoaXMuc2VydmljZS5zZWxlY3QoeCA9PiB4KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHVudGlsQ29tcG9uZW50RGVzdHJveWVkKHRoaXMpLFxuICAgICAgKTtcblxuICAgIGNvbWJpbmVMYXRlc3QocHJlc2VudGF0aW9uJCwgdGhpcy5zaG93Q29vcmRpbmF0ZXMkLCB0aGlzLmNvb3JkaW5hdGVzU2VwYXJhdG9yJCwgdGhpcy5kZXB0aCQpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChbcHJlc2VudGF0aW9uLCBzaG93Q29vcmRpbmF0ZXMsIGNvb3JkaW5hdGVzU2VwYXJhdG9yLCBkZXB0aF0pID0+IHtcblxuICAgICAgICAgIGNvbnN0IGxldmVsZWQgPSBsaW1pdERlcHRoKHByZXNlbnRhdGlvbi5zbGlkZXMsIGRlcHRoIHx8wqBwcmVzZW50YXRpb24uY29uZmlnLnRhYmxlT2ZDb250ZW50LmRlcHRoKTtcblxuICAgICAgICAgIGNvbnN0IG1hcHBlZCA9IG1hcERlZXAobGV2ZWxlZCwgc2xpZGVUb1VpRW50cnlNYXBwZXIocHJlc2VudGF0aW9uLmNvbmZpZywgc2hvd0Nvb3JkaW5hdGVzLCBjb29yZGluYXRlc1NlcGFyYXRvcikpO1xuXG4gICAgICAgICAgY29uc3QgZmlsdGVyZWQgPSBmaWx0ZXJEZWVwKG1hcHBlZCwgeCA9PiB4ICE9PSB1bmRlZmluZWQpO1xuXG4gICAgICAgICAgcmV0dXJuIGZpbHRlcmVkO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShsaW5rcyA9PiB0aGlzLmVudHJpZXMgPSBsaW5rcyk7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRlcHRoKHZhbDogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5kZXB0aCQubmV4dCh2YWwpO1xuICB9XG5cbiAgcHVibGljIGVudHJpZXM6IExpc3RPZlJlY3Vyc2l2ZUFycmF5c09yVmFsdWVzPFVJRW50cnkgfCB1bmRlZmluZWQ+IHwgdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBzbGlkZVRvVWlFbnRyeU1hcHBlcihjb25maWc6IE5neFByZXNlbnRDb25maWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Q29vcmRpbmF0ZXNJbnB1dDogYm9vbGVhbiB8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvb3JkaW5hdGVzU2VwYXJhdG9ySW5wdXQ6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICByZXR1cm4gKHNsaWRlOiBTbGlkZSk6IFVJRW50cnkgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IGRlY29yYXRvck1ldGFkYXRhOiBEZWNvcmF0b3JNZXRhZGF0YSB8IHVuZGVmaW5lZCA9IHRhYmxlT2ZDb250ZW50TWV0YWRhdGEoc2xpZGUpO1xuXG4gICAgaWYgKGRlY29yYXRvck1ldGFkYXRhICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGxldCBsaW5rTmFtZSA9IGRlY29yYXRvck1ldGFkYXRhLmxpbmtOYW1lO1xuXG4gICAgICBjb25zdCBzaG93Q29vcmRpbmF0ZXMgPSAoc2hvd0Nvb3JkaW5hdGVzSW5wdXQgIT09IHVuZGVmaW5lZCAmJiBzaG93Q29vcmRpbmF0ZXNJbnB1dCkgfHxcbiAgICAgICAgY29uZmlnLnRhYmxlT2ZDb250ZW50LnNob3dDb29yZGluYXRlcztcblxuICAgICAgaWYgKHNob3dDb29yZGluYXRlcykge1xuICAgICAgICBjb25zdCBjb29yZGluYXRlcyA9IGNvb3JkaW5hdGVzVG9TdHJpbmcoc2xpZGUuY29vcmRpbmF0ZXMsIGNvbmZpZy5jb29yZGluYXRlcy5zZXBhcmF0b3IsIC0xKTtcbiAgICAgICAgY29uc3QgY29vcmRpbmF0ZXNTZXBhcmF0b3IgPSBjb29yZGluYXRlc1NlcGFyYXRvcklucHV0ICE9PSB1bmRlZmluZWQgPyBjb29yZGluYXRlc1NlcGFyYXRvcklucHV0IDogY29uZmlnLnRhYmxlT2ZDb250ZW50LnNlcGFyYXRvcjtcbiAgICAgICAgbGlua05hbWUgPSBgJHtjb29yZGluYXRlc30ke2Nvb3JkaW5hdGVzU2VwYXJhdG9yfSAke2xpbmtOYW1lfWA7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7IGNvbXBvbmVudDogc2xpZGUuY29tcG9uZW50LCBuYW1lOiBsaW5rTmFtZSB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfTtcbn1cbiJdfQ==