UNPKG

@w11k/ngx-present

Version:

Angular based Presentation Tool

152 lines 13.3 kB
/** * @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==