UNPKG

@w11k/ngx-present

Version:

Angular based Presentation Tool

198 lines 14.8 kB
/** * @fileoverview added by tsickle * Generated from: lib/overview/overview-route.component.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { __extends, __read, __spread, __values } from "tslib"; import { Component } from '@angular/core'; import { Router } from '@angular/router'; import { OnDestroyMixin, untilComponentDestroyed } from '@w11k/ngx-componentdestroyed'; import { switchMap } from 'rxjs/operators'; import { PresentationService } from '../core/presentation.service'; import { flattenDelayedWithAnimationFrame } from '../core/utils'; import { OverviewService } from './overview.service'; var OverviewRouteComponent = /** @class */ (function (_super) { __extends(OverviewRouteComponent, _super); function OverviewRouteComponent(service, router, presentation) { var _this = _super.call(this) || this; _this.service = service; _this.router = router; _this.presentation = presentation; _this.zoomFactor = service.state.defaultZoom; return _this; } /** * @return {?} */ OverviewRouteComponent.prototype.ngOnInit = /** * @return {?} */ function () { var _this = this; this.presentation .select((/** * @param {?} state * @return {?} */ function (state) { return state.slides; })) .pipe(switchMap((/** * @param {?} slides * @return {?} */ function (slides) { return flattenDelayedWithAnimationFrame(slides); })), untilComponentDestroyed(this)) .subscribe((/** * @param {?} slides * @return {?} */ function (slides) { return _this.slides = slides; })); this.service .select((/** * @param {?} x * @return {?} */ function (x) { return x; })) .pipe(untilComponentDestroyed(this)) .subscribe((/** * @param {?} view * @return {?} */ function (view) { _this.view = view; _this.zoomFactor = (100 - (view.zoom + 1)) / view.zoom; })); }; /** * @return {?} */ OverviewRouteComponent.prototype.zoomIn = /** * @return {?} */ function () { this.service.zoomIn(); }; /** * @return {?} */ OverviewRouteComponent.prototype.resetZoom = /** * @return {?} */ function () { this.service.resetZoom(); }; /** * @return {?} */ OverviewRouteComponent.prototype.zoomOut = /** * @return {?} */ function () { this.service.zoomOut(); }; /** * @param {?} slide * @return {?} */ OverviewRouteComponent.prototype.getRouterLink = /** * @param {?} slide * @return {?} */ function (slide) { return __spread(['/slide'], slide.coordinates); }; /** * @param {?} event * @param {?} slide * @return {?} */ OverviewRouteComponent.prototype.navigate = /** * @param {?} event * @param {?} slide * @return {?} */ function (event, slide) { if (event.altKey) { event.preventDefault(); this.router.navigate(__spread(['presenter'], slide.coordinates)); } }; /** * @return {?} */ OverviewRouteComponent.prototype.toggleBreak = /** * @return {?} */ function () { this.service.toggleLineBreakOnFirstLevel(); }; /** * @param {?} slide * @return {?} */ OverviewRouteComponent.prototype.shouldBreak = /** * @param {?} slide * @return {?} */ function (slide) { var e_1, _a; if (!this.service.state.lineBreakOnFirstLevel) { return false; } /** @type {?} */ var subCoordinates = slide.coordinates.slice(1); try { for (var subCoordinates_1 = __values(subCoordinates), subCoordinates_1_1 = subCoordinates_1.next(); !subCoordinates_1_1.done; subCoordinates_1_1 = subCoordinates_1.next()) { var coordinate = subCoordinates_1_1.value; if (coordinate !== 1) { return false; } } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (subCoordinates_1_1 && !subCoordinates_1_1.done && (_a = subCoordinates_1.return)) _a.call(subCoordinates_1); } finally { if (e_1) throw e_1.error; } } return true; }; OverviewRouteComponent.decorators = [ { type: Component, args: [{ selector: 'ngx-present-overview-route', template: "<div ngxPresentPageTitle>Overview</div>\n\n<mat-toolbar color=\"accent\">\n <ngx-present-menu-toggle-icon></ngx-present-menu-toggle-icon>\n <h1>Overview</h1>\n <span class=\"fill-remaining-space\"></span>\n <span>\n <button mat-icon-button (click)=\"toggleBreak()\" *ngIf=\"!view?.lineBreakOnFirstLevel\">\n <mat-icon>format_align_left</mat-icon>\n </button>\n <button mat-icon-button (click)=\"toggleBreak()\" *ngIf=\"view?.lineBreakOnFirstLevel\">\n <mat-icon>format_align_justify</mat-icon>\n </button>\n <button mat-icon-button (click)=\"zoomIn()\" [disabled]=\"view?.zoom <= view?.minZoom\">\n <mat-icon>zoom_in</mat-icon>\n </button>\n <button mat-icon-button (click)=\"resetZoom()\" [disabled]=\"view?.zoom === view?.defaultZoom\">\n <mat-icon>search</mat-icon>\n </button>\n <button mat-icon-button (click)=\"zoomOut()\" [disabled]=\"view?.zoom >= view?.maxZoom\">\n <mat-icon>zoom_out</mat-icon>\n </button>\n </span>\n</mat-toolbar>\n\n<div class=\"slides\">\n\n <ng-container *ngFor=\"let slide of slides\">\n <div class=\"break\" *ngIf=\"shouldBreak(slide)\"></div>\n <div class=\"slide\"\n [style.width]=\"zoomFactor + 'vw'\"\n [style.height]=\"zoomFactor + 'vh'\"\n >\n <mat-card>\n <mat-card-content>\n <div class=\"scale\" [style.transform]=\"'scale(' + zoomFactor / 100 + ')'\">\n <ngx-present-slide [slide]=\"slide\"></ngx-present-slide>\n </div>\n <a class=\"overlay\"\n [routerLink]=\"getRouterLink(slide)\"\n (click)=\"navigate($event, slide)\"></a>\n </mat-card-content>\n </mat-card>\n </div>\n </ng-container>\n</div>\n", styles: [".slides{width:100vw;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;align-content:flex-start;box-sizing:border-box;padding:.5vw}.break{width:100%}.slide{box-sizing:border-box;margin:.5vw;width:32vw;height:32vh}.slide:hover{cursor:pointer}.slide mat-card{height:100%;box-sizing:border-box;padding:0}.slide mat-card mat-card-content{height:100%;position:relative;overflow:hidden}.slide mat-card mat-card-content>.scale{transform:scale(.32);transform-origin:0 0}.slide mat-card mat-card-content>.overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1000}.fill-remaining-space{flex:1 1 auto}"] }] } ]; /** @nocollapse */ OverviewRouteComponent.ctorParameters = function () { return [ { type: OverviewService }, { type: Router }, { type: PresentationService } ]; }; return OverviewRouteComponent; }(OnDestroyMixin)); export { OverviewRouteComponent }; if (false) { /** @type {?} */ OverviewRouteComponent.prototype.slides; /** @type {?} */ OverviewRouteComponent.prototype.zoomFactor; /** @type {?} */ OverviewRouteComponent.prototype.view; /** * @type {?} * @private */ OverviewRouteComponent.prototype.service; /** * @type {?} * @private */ OverviewRouteComponent.prototype.router; /** * @type {?} * @private */ OverviewRouteComponent.prototype.presentation; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcnZpZXctcm91dGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHcxMWsvbmd4LXByZXNlbnQvIiwic291cmNlcyI6WyJsaWIvb3ZlcnZpZXcvb3ZlcnZpZXctcm91dGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpDLE9BQU8sRUFBRSxjQUFjLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFbkUsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxlQUFlLEVBQWlCLE1BQU0sb0JBQW9CLENBQUM7QUFFcEU7SUFLNEMsMENBQWM7SUFLeEQsZ0NBQTZCLE9BQXdCLEVBQ3hCLE1BQWMsRUFDZCxZQUFpQztRQUY5RCxZQUdFLGlCQUFPLFNBRVI7UUFMNEIsYUFBTyxHQUFQLE9BQU8sQ0FBaUI7UUFDeEIsWUFBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGtCQUFZLEdBQVosWUFBWSxDQUFxQjtRQUU1RCxLQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDOztJQUM5QyxDQUFDOzs7O0lBRUQseUNBQVE7OztJQUFSO1FBQUEsaUJBa0JDO1FBakJDLElBQUksQ0FBQyxZQUFZO2FBQ2QsTUFBTTs7OztRQUFDLFVBQUEsS0FBSyxJQUFJLE9BQUEsS0FBSyxDQUFDLE1BQU0sRUFBWixDQUFZLEVBQUM7YUFDN0IsSUFBSSxDQUNILFNBQVM7Ozs7UUFBQyxVQUFBLE1BQU0sSUFBSSxPQUFBLGdDQUFnQyxDQUFDLE1BQU0sQ0FBQyxFQUF4QyxDQUF3QyxFQUFDLEVBQzdELHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUM5QjthQUNBLFNBQVM7Ozs7UUFBQyxVQUFBLE1BQU0sSUFBSSxPQUFBLEtBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxFQUFwQixDQUFvQixFQUFDLENBQUM7UUFFN0MsSUFBSSxDQUFDLE9BQU87YUFDVCxNQUFNOzs7O1FBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLEVBQUQsQ0FBQyxFQUFDO2FBQ2QsSUFBSSxDQUNILHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUM5QjthQUNBLFNBQVM7Ozs7UUFBQyxVQUFBLElBQUk7WUFDYixLQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztZQUNqQixLQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDeEQsQ0FBQyxFQUFDLENBQUM7SUFDUCxDQUFDOzs7O0lBRUQsdUNBQU07OztJQUFOO1FBQ0UsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN4QixDQUFDOzs7O0lBRUQsMENBQVM7OztJQUFUO1FBQ0UsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUMzQixDQUFDOzs7O0lBRUQsd0NBQU87OztJQUFQO1FBQ0UsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN6QixDQUFDOzs7OztJQUVELDhDQUFhOzs7O0lBQWIsVUFBYyxLQUFZO1FBQ3hCLGlCQUFRLFFBQVEsR0FBSyxLQUFLLENBQUMsV0FBVyxFQUFFO0lBQzFDLENBQUM7Ozs7OztJQUVELHlDQUFROzs7OztJQUFSLFVBQVMsS0FBaUIsRUFBRSxLQUFZO1FBQ3RDLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNoQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLFdBQUUsV0FBVyxHQUFLLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUMzRDtJQUNILENBQUM7Ozs7SUFFRCw0Q0FBVzs7O0lBQVg7UUFDRSxJQUFJLENBQUMsT0FBTyxDQUFDLDJCQUEyQixFQUFFLENBQUM7SUFDN0MsQ0FBQzs7Ozs7SUFFRCw0Q0FBVzs7OztJQUFYLFVBQVksS0FBWTs7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLHFCQUFxQixFQUFFO1lBQzdDLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7O1lBRUssY0FBYyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzs7WUFFakQsS0FBeUIsSUFBQSxtQkFBQSxTQUFBLGNBQWMsQ0FBQSw4Q0FBQSwwRUFBRTtnQkFBcEMsSUFBTSxVQUFVLDJCQUFBO2dCQUNuQixJQUFJLFVBQVUsS0FBSyxDQUFDLEVBQUU7b0JBQ3BCLE9BQU8sS0FBSyxDQUFDO2lCQUNkO2FBQ0Y7Ozs7Ozs7OztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs7Z0JBOUVGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsNEJBQTRCO29CQUN0Qyx3c0RBQThDOztpQkFFL0M7Ozs7Z0JBTlEsZUFBZTtnQkFQZixNQUFNO2dCQUlOLG1CQUFtQjs7SUFvRjVCLDZCQUFDO0NBQUEsQUEvRUQsQ0FLNEMsY0FBYyxHQTBFekQ7U0ExRVksc0JBQXNCOzs7SUFDakMsd0NBQW1DOztJQUNuQyw0Q0FBMEI7O0lBQzFCLHNDQUF1Qzs7Ozs7SUFFM0IseUNBQXlDOzs7OztJQUN6Qyx3Q0FBK0I7Ozs7O0lBQy9CLDhDQUFrRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBPbkRlc3Ryb3lNaXhpbiwgdW50aWxDb21wb25lbnREZXN0cm95ZWQgfSBmcm9tICdAdzExay9uZ3gtY29tcG9uZW50ZGVzdHJveWVkJztcbmltcG9ydCB7IHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFByZXNlbnRhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9jb3JlL3ByZXNlbnRhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFNsaWRlIH0gZnJvbSAnLi4vY29yZS9wcmVzZW50YXRpb24udHlwZXMnO1xuaW1wb3J0IHsgZmxhdHRlbkRlbGF5ZWRXaXRoQW5pbWF0aW9uRnJhbWUgfSBmcm9tICcuLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IE92ZXJ2aWV3U2VydmljZSwgT3ZlcnZpZXdTdGF0ZSB9IGZyb20gJy4vb3ZlcnZpZXcuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC1wcmVzZW50LW92ZXJ2aWV3LXJvdXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL292ZXJ2aWV3LXJvdXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vb3ZlcnZpZXctcm91dGUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBPdmVydmlld1JvdXRlQ29tcG9uZW50IGV4dGVuZHMgT25EZXN0cm95TWl4aW4gaW1wbGVtZW50cyBPbkluaXQge1xuICBwdWJsaWMgc2xpZGVzOiBTbGlkZVtdIHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgem9vbUZhY3RvcjogbnVtYmVyO1xuICBwdWJsaWMgdmlldzogT3ZlcnZpZXdTdGF0ZSB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHNlcnZpY2U6IE92ZXJ2aWV3U2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBwcmVzZW50YXRpb246IFByZXNlbnRhdGlvblNlcnZpY2UpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuem9vbUZhY3RvciA9IHNlcnZpY2Uuc3RhdGUuZGVmYXVsdFpvb207XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnByZXNlbnRhdGlvblxuICAgICAgLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS5zbGlkZXMpXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKHNsaWRlcyA9PiBmbGF0dGVuRGVsYXllZFdpdGhBbmltYXRpb25GcmFtZShzbGlkZXMpKSxcbiAgICAgICAgdW50aWxDb21wb25lbnREZXN0cm95ZWQodGhpcyksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHNsaWRlcyA9PiB0aGlzLnNsaWRlcyA9IHNsaWRlcyk7XG5cbiAgICB0aGlzLnNlcnZpY2VcbiAgICAgIC5zZWxlY3QoeCA9PiB4KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHVudGlsQ29tcG9uZW50RGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHZpZXcgPT4ge1xuICAgICAgICB0aGlzLnZpZXcgPSB2aWV3O1xuICAgICAgICB0aGlzLnpvb21GYWN0b3IgPSAoMTAwIC0gKHZpZXcuem9vbSArIDEpKSAvIHZpZXcuem9vbTtcbiAgICAgIH0pO1xuICB9XG5cbiAgem9vbUluKCkge1xuICAgIHRoaXMuc2VydmljZS56b29tSW4oKTtcbiAgfVxuXG4gIHJlc2V0Wm9vbSgpIHtcbiAgICB0aGlzLnNlcnZpY2UucmVzZXRab29tKCk7XG4gIH1cblxuICB6b29tT3V0KCkge1xuICAgIHRoaXMuc2VydmljZS56b29tT3V0KCk7XG4gIH1cblxuICBnZXRSb3V0ZXJMaW5rKHNsaWRlOiBTbGlkZSkge1xuICAgIHJldHVybiBbJy9zbGlkZScsIC4uLnNsaWRlLmNvb3JkaW5hdGVzXTtcbiAgfVxuXG4gIG5hdmlnYXRlKGV2ZW50OiBNb3VzZUV2ZW50LCBzbGlkZTogU2xpZGUpIHtcbiAgICBpZiAoZXZlbnQuYWx0S2V5KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydwcmVzZW50ZXInLCAuLi5zbGlkZS5jb29yZGluYXRlc10pO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZUJyZWFrKCkge1xuICAgIHRoaXMuc2VydmljZS50b2dnbGVMaW5lQnJlYWtPbkZpcnN0TGV2ZWwoKTtcbiAgfVxuXG4gIHNob3VsZEJyZWFrKHNsaWRlOiBTbGlkZSk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5zZXJ2aWNlLnN0YXRlLmxpbmVCcmVha09uRmlyc3RMZXZlbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHN1YkNvb3JkaW5hdGVzID0gc2xpZGUuY29vcmRpbmF0ZXMuc2xpY2UoMSk7XG5cbiAgICBmb3IgKGNvbnN0IGNvb3JkaW5hdGUgb2Ygc3ViQ29vcmRpbmF0ZXMpIHtcbiAgICAgIGlmIChjb29yZGluYXRlICE9PSAxKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIl19