UNPKG

@w11k/ngx-present

Version:

Angular based Presentation Tool

156 lines 12.3 kB
/** * @fileoverview added by tsickle * Generated from: lib/core/slide-link.directive.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { __extends, __read, __spread } from "tslib"; import { Directive, ElementRef, Input, Optional, Type } from '@angular/core'; import { Router, RouterLinkWithHref } from '@angular/router'; import { OnDestroyMixin, untilComponentDestroyed } from '@w11k/ngx-componentdestroyed'; import { skipNil } from '@w11k/rx-ninja'; import { fromEvent, ReplaySubject } from 'rxjs'; import { filter, map, take, withLatestFrom } from 'rxjs/operators'; import { SlideBySlideService } from '../slide-by-slide/slide-by-slide.service'; /** * @param {?} event * @return {?} */ function isMouseEvent(event) { return event instanceof MouseEvent; } /** * Use in conjunction with routerLink on an anchor tag for real links. * Use on any tag for click event handling. */ var SlideLinkDirective = /** @class */ (function (_super) { __extends(SlideLinkDirective, _super); function SlideLinkDirective(service, router, element, routerLinkDirective) { var _this = _super.call(this) || this; _this.service = service; _this.router = router; _this.element = element; _this.routerLinkDirective = routerLinkDirective; _this.slide$ = new ReplaySubject(1); if (routerLinkDirective) { _this.slide$ .pipe(untilComponentDestroyed(_this)) .subscribe((/** * @param {?} slide * @return {?} */ function (slide) { /** @type {?} */ var link; if (slide) { /** @type {?} */ var mode = "/" + _this.service.state.currentMode; link = (__spread([mode], slide.coordinates)); } else { link = []; } _this.routerLinkDirective.routerLink = link; // update href on link _this.routerLinkDirective.ngOnChanges({}); })); } fromEvent(element.nativeElement, 'click') .pipe(filter(isMouseEvent), filter((/** * @param {?} event * @return {?} */ function (event) { return event.altKey; })), withLatestFrom(_this.slide$), untilComponentDestroyed(_this)) .subscribe((/** * @param {?} __0 * @return {?} */ function (_a) { var _b = __read(_a, 2), event = _b[0], slide = _b[1]; event.preventDefault(); /** @type {?} */ var link = (__spread(['/presenter'], slide.coordinates)); _this.router.navigate(link, { queryParamsHandling: 'merge' }); })); return _this; } Object.defineProperty(SlideLinkDirective.prototype, "ngxPresentSlideLink", { set: /** * @param {?} component * @return {?} */ function (component) { var _this = this; this.service.select(((/** * @param {?} state * @return {?} */ function (state) { return state.slides; }))) .pipe(skipNil(), untilComponentDestroyed(this)) .pipe(map((/** * @param {?} slides * @return {?} */ function (slides) { return slides.find((/** * @param {?} slide * @return {?} */ function (slide) { return slide.component === component; })); })), filter((/** * @param {?} slide * @return {?} */ function (slide) { return slide !== undefined; })), take(1)) .subscribe((/** * @param {?} slide * @return {?} */ function (slide) { return _this.slide$.next(slide); })); }, enumerable: true, configurable: true }); SlideLinkDirective.decorators = [ { type: Directive, args: [{ selector: '[ngxPresentSlideLink]' },] } ]; /** @nocollapse */ SlideLinkDirective.ctorParameters = function () { return [ { type: SlideBySlideService }, { type: Router }, { type: ElementRef }, { type: RouterLinkWithHref, decorators: [{ type: Optional }] } ]; }; SlideLinkDirective.propDecorators = { ngxPresentSlideLink: [{ type: Input }] }; return SlideLinkDirective; }(OnDestroyMixin)); export { SlideLinkDirective }; if (false) { /** * @type {?} * @private */ SlideLinkDirective.prototype.slide$; /** * @type {?} * @private */ SlideLinkDirective.prototype.service; /** * @type {?} * @private */ SlideLinkDirective.prototype.router; /** * @type {?} * @private */ SlideLinkDirective.prototype.element; /** * @type {?} * @private */ SlideLinkDirective.prototype.routerLinkDirective; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGUtbGluay5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdzExay9uZ3gtcHJlc2VudC8iLCJzb3VyY2VzIjpbImxpYi9jb3JlL3NsaWRlLWxpbmsuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7QUFHL0UsU0FBUyxZQUFZLENBQUMsS0FBVTtJQUM5QixPQUFPLEtBQUssWUFBWSxVQUFVLENBQUM7QUFDckMsQ0FBQzs7Ozs7QUFNRDtJQUd3QyxzQ0FBYztJQUlwRCw0QkFBNkIsT0FBNEIsRUFDNUIsTUFBYyxFQUNkLE9BQW1CLEVBQ1AsbUJBQXVDO1FBSGhGLFlBSUUsaUJBQU8sU0FxQ1I7UUF6QzRCLGFBQU8sR0FBUCxPQUFPLENBQXFCO1FBQzVCLFlBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxhQUFPLEdBQVAsT0FBTyxDQUFZO1FBQ1AseUJBQW1CLEdBQW5CLG1CQUFtQixDQUFvQjtRQUwvRCxZQUFNLEdBQUcsSUFBSSxhQUFhLENBQVEsQ0FBQyxDQUFDLENBQUM7UUFRcEQsSUFBSSxtQkFBbUIsRUFBRTtZQUN2QixLQUFJLENBQUMsTUFBTTtpQkFDUixJQUFJLENBQ0gsdUJBQXVCLENBQUMsS0FBSSxDQUFDLENBQzlCO2lCQUNBLFNBQVM7Ozs7WUFBQyxVQUFBLEtBQUs7O29CQUNWLElBQVc7Z0JBRWYsSUFBSSxLQUFLLEVBQUU7O3dCQUNILElBQUksR0FBRyxNQUFJLEtBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQWE7b0JBQ2pELElBQUksR0FBRyxXQUFFLElBQUksR0FBSyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7aUJBQ3ZDO3FCQUFNO29CQUNMLElBQUksR0FBRyxFQUFFLENBQUM7aUJBQ1g7Z0JBRUQsS0FBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7Z0JBQzNDLHNCQUFzQjtnQkFDdEIsS0FBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMzQyxDQUFDLEVBQUMsQ0FBQztTQUNOO1FBRUQsU0FBUyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDO2FBQ3RDLElBQUksQ0FDSCxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQ3BCLE1BQU07Ozs7UUFBQyxVQUFBLEtBQUssSUFBSSxPQUFBLEtBQUssQ0FBQyxNQUFNLEVBQVosQ0FBWSxFQUFDLEVBQzdCLGNBQWMsQ0FBQyxLQUFJLENBQUMsTUFBTSxDQUFDLEVBQzNCLHVCQUF1QixDQUFDLEtBQUksQ0FBQyxDQUM5QjthQUNBLFNBQVM7Ozs7UUFBQyxVQUFDLEVBQWM7Z0JBQWQsa0JBQWMsRUFBYixhQUFLLEVBQUUsYUFBSztZQUN2QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7O2dCQUVqQixJQUFJLEdBQUcsV0FBRSxZQUFZLEdBQUssS0FBSyxDQUFDLFdBQVcsRUFBRTtZQUVuRCxLQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxtQkFBbUIsRUFBRSxPQUFPLEVBQUMsQ0FBQyxDQUFDO1FBQzlELENBQUMsRUFBQyxDQUFDOztJQUNQLENBQUM7SUFFRCxzQkFDVyxtREFBbUI7Ozs7O1FBRDlCLFVBQytCLFNBQW9CO1lBRG5ELGlCQVlDO1lBVkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7Ozs7WUFBQyxVQUFBLEtBQUssSUFBSSxPQUFBLEtBQUssQ0FBQyxNQUFNLEVBQVosQ0FBWSxFQUFDLENBQUM7aUJBQ3pDLElBQUksQ0FDSCxPQUFPLEVBQUUsRUFDVCx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDL0IsSUFBSSxDQUNILEdBQUc7Ozs7WUFBQyxVQUFBLE1BQU0sSUFBSSxPQUFBLE1BQU0sQ0FBQyxJQUFJOzs7O1lBQUMsVUFBQSxLQUFLLElBQUksT0FBQSxLQUFLLENBQUMsU0FBUyxLQUFLLFNBQVMsRUFBN0IsQ0FBNkIsRUFBQyxFQUFuRCxDQUFtRCxFQUFDLEVBQ2xFLE1BQU07Ozs7WUFBQyxVQUFBLEtBQUssSUFBSSxPQUFBLEtBQUssS0FBSyxTQUFTLEVBQW5CLENBQW1CLEVBQUMsRUFDcEMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUNSO2lCQUNBLFNBQVM7Ozs7WUFBQyxVQUFBLEtBQUssSUFBSSxPQUFBLEtBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUF2QixDQUF1QixFQUFDLENBQUM7UUFDakQsQ0FBQzs7O09BQUE7O2dCQTlERixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtpQkFDbEM7Ozs7Z0JBYlEsbUJBQW1CO2dCQU5uQixNQUFNO2dCQURLLFVBQVU7Z0JBQ2Isa0JBQWtCLHVCQTJCcEIsUUFBUTs7O3NDQXdDcEIsS0FBSzs7SUFhUix5QkFBQztDQUFBLEFBL0RELENBR3dDLGNBQWMsR0E0RHJEO1NBNURZLGtCQUFrQjs7Ozs7O0lBRTdCLG9DQUFzRDs7Ozs7SUFFMUMscUNBQTZDOzs7OztJQUM3QyxvQ0FBK0I7Ozs7O0lBQy9CLHFDQUFvQzs7Ozs7SUFDcEMsaURBQW9FIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgT3B0aW9uYWwsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciwgUm91dGVyTGlua1dpdGhIcmVmIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9uRGVzdHJveU1peGluLCB1bnRpbENvbXBvbmVudERlc3Ryb3llZCB9IGZyb20gJ0B3MTFrL25neC1jb21wb25lbnRkZXN0cm95ZWQnO1xuaW1wb3J0IHsgc2tpcE5pbCB9IGZyb20gJ0B3MTFrL3J4LW5pbmphJztcbmltcG9ydCB7IGZyb21FdmVudCwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgdGFrZSwgd2l0aExhdGVzdEZyb20gfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTbGlkZUJ5U2xpZGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2xpZGUtYnktc2xpZGUvc2xpZGUtYnktc2xpZGUuc2VydmljZSc7XG5pbXBvcnQgeyBTbGlkZSB9IGZyb20gJy4vcHJlc2VudGF0aW9uLnR5cGVzJztcblxuZnVuY3Rpb24gaXNNb3VzZUV2ZW50KGV2ZW50OiBhbnkpOiBldmVudCBpcyBNb3VzZUV2ZW50IHtcbiAgcmV0dXJuIGV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudDtcbn1cblxuLyoqXG4gKiBVc2UgaW4gY29uanVuY3Rpb24gd2l0aCByb3V0ZXJMaW5rIG9uIGFuIGFuY2hvciB0YWcgZm9yIHJlYWwgbGlua3MuXG4gKiBVc2Ugb24gYW55IHRhZyBmb3IgY2xpY2sgZXZlbnQgaGFuZGxpbmcuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tuZ3hQcmVzZW50U2xpZGVMaW5rXSdcbn0pXG5leHBvcnQgY2xhc3MgU2xpZGVMaW5rRGlyZWN0aXZlIGV4dGVuZHMgT25EZXN0cm95TWl4aW4ge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2xpZGUkID0gbmV3IFJlcGxheVN1YmplY3Q8U2xpZGU+KDEpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgc2VydmljZTogU2xpZGVCeVNsaWRlU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50OiBFbGVtZW50UmVmLFxuICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IHJvdXRlckxpbmtEaXJlY3RpdmU6IFJvdXRlckxpbmtXaXRoSHJlZikge1xuICAgIHN1cGVyKCk7XG5cbiAgICBpZiAocm91dGVyTGlua0RpcmVjdGl2ZSkge1xuICAgICAgdGhpcy5zbGlkZSRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdW50aWxDb21wb25lbnREZXN0cm95ZWQodGhpcyksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZShzbGlkZSA9PiB7XG4gICAgICAgICAgbGV0IGxpbms6IGFueVtdO1xuXG4gICAgICAgICAgaWYgKHNsaWRlKSB7XG4gICAgICAgICAgICBjb25zdCBtb2RlID0gYC8ke3RoaXMuc2VydmljZS5zdGF0ZS5jdXJyZW50TW9kZX1gO1xuICAgICAgICAgICAgbGluayA9IChbbW9kZSwgLi4uc2xpZGUuY29vcmRpbmF0ZXNdKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGluayA9IFtdO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMucm91dGVyTGlua0RpcmVjdGl2ZS5yb3V0ZXJMaW5rID0gbGluaztcbiAgICAgICAgICAvLyB1cGRhdGUgaHJlZiBvbiBsaW5rXG4gICAgICAgICAgdGhpcy5yb3V0ZXJMaW5rRGlyZWN0aXZlLm5nT25DaGFuZ2VzKHt9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnJvbUV2ZW50KGVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2NsaWNrJylcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoaXNNb3VzZUV2ZW50KSxcbiAgICAgICAgZmlsdGVyKGV2ZW50ID0+IGV2ZW50LmFsdEtleSksXG4gICAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc2xpZGUkKSxcbiAgICAgICAgdW50aWxDb21wb25lbnREZXN0cm95ZWQodGhpcyksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChbZXZlbnQsIHNsaWRlXSkgPT4ge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIGNvbnN0IGxpbmsgPSAoWycvcHJlc2VudGVyJywgLi4uc2xpZGUuY29vcmRpbmF0ZXNdKTtcblxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShsaW5rLCB7IHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZSd9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBuZ3hQcmVzZW50U2xpZGVMaW5rKGNvbXBvbmVudDogVHlwZTxhbnk+KSB7XG4gICAgdGhpcy5zZXJ2aWNlLnNlbGVjdCgoc3RhdGUgPT4gc3RhdGUuc2xpZGVzKSlcbiAgICAgIC5waXBlKFxuICAgICAgICBza2lwTmlsKCksXG4gICAgICAgIHVudGlsQ29tcG9uZW50RGVzdHJveWVkKHRoaXMpKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChzbGlkZXMgPT4gc2xpZGVzLmZpbmQoc2xpZGUgPT4gc2xpZGUuY29tcG9uZW50ID09PSBjb21wb25lbnQpKSxcbiAgICAgICAgZmlsdGVyKHNsaWRlID0+IHNsaWRlICE9PSB1bmRlZmluZWQpLFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShzbGlkZSA9PiB0aGlzLnNsaWRlJC5uZXh0KHNsaWRlKSk7XG4gIH1cbn1cbiJdfQ==