@w11k/ngx-present
Version:
Angular based Presentation Tool
198 lines • 14.8 kB
JavaScript
/**
* @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