@w11k/ngx-present
Version:
Angular based Presentation Tool
156 lines • 12.3 kB
JavaScript
/**
* @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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGUtbGluay5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdzExay9uZ3gtcHJlc2VudC8iLCJzb3VyY2VzIjpbImxpYi9jb3JlL3NsaWRlLWxpbmsuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7QUFHL0UsU0FBUyxZQUFZLENBQUMsS0FBVTtJQUM5QixPQUFPLEtBQUssWUFBWSxVQUFVLENBQUM7QUFDckMsQ0FBQzs7Ozs7QUFNRDtJQUd3QyxzQ0FBYztJQUlwRCw0QkFBNkIsT0FBNEIsRUFDNUIsTUFBYyxFQUNkLE9BQW1CLEVBQ1AsbUJBQXVDO1FBSGhGLFlBSUUsaUJBQU8sU0FxQ1I7UUF6QzRCLGFBQU8sR0FBUCxPQUFPLENBQXFCO1FBQzVCLFlBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxhQUFPLEdBQVAsT0FBTyxDQUFZO1FBQ1AseUJBQW1CLEdBQW5CLG1CQUFtQixDQUFvQjtRQUwvRCxZQUFNLEdBQUcsSUFBSSxhQUFhLENBQVEsQ0FBQyxDQUFDLENBQUM7UUFRcEQsSUFBSSxt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ZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgT3B0aW9uYWwsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciwgUm91dGVyTGlua1dpdGhIcmVmIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9uRGVzdHJveU1peGluLCB1bnRpbENvbXBvbmVudERlc3Ryb3llZCB9IGZyb20gJ0B3MTFrL25neC1jb21wb25lbnRkZXN0cm95ZWQnO1xuaW1wb3J0IHsgc2tpcE5pbCB9IGZyb20gJ0B3MTFrL3J4LW5pbmphJztcbmltcG9ydCB7IGZyb21FdmVudCwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgdGFrZSwgd2l0aExhdGVzdEZyb20gfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTbGlkZUJ5U2xpZGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2xpZGUtYnktc2xpZGUvc2xpZGUtYnktc2xpZGUuc2VydmljZSc7XG5pbXBvcnQgeyBTbGlkZSB9IGZyb20gJy4vcHJlc2VudGF0aW9uLnR5cGVzJztcblxuZnVuY3Rpb24gaXNNb3VzZUV2ZW50KGV2ZW50OiBhbnkpOiBldmVudCBpcyBNb3VzZUV2ZW50IHtcbiAgcmV0dXJuIGV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudDtcbn1cblxuLyoqXG4gKiBVc2UgaW4gY29uanVuY3Rpb24gd2l0aCByb3V0ZXJMaW5rIG9uIGFuIGFuY2hvciB0YWcgZm9yIHJlYWwgbGlua3MuXG4gKiBVc2Ugb24gYW55IHRhZyBmb3IgY2xpY2sgZXZlbnQgaGFuZGxpbmcuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tuZ3hQcmVzZW50U2xpZGVMaW5rXSdcbn0pXG5leHBvcnQgY2xhc3MgU2xpZGVMaW5rRGlyZWN0aXZlIGV4dGVuZHMgT25EZXN0cm95TWl4aW4ge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2xpZGUkID0gbmV3IFJlcGxheVN1YmplY3Q8U2xpZGU+KDEpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgc2VydmljZTogU2xpZGVCeVNsaWRlU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50OiBFbGVtZW50UmVmLFxuICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IHJvdXRlckxpbmtEaXJlY3RpdmU6IFJvdXRlckxpbmtXaXRoSHJlZikge1xuICAgIHN1cGVyKCk7XG5cbiAgICBpZiAocm91dGVyTGlua0RpcmVjdGl2ZSkge1xuICAgICAgdGhpcy5zbGlkZSRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdW50aWxDb21wb25lbnREZXN0cm95ZWQodGhpcyksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZShzbGlkZSA9PiB7XG4gICAgICAgICAgbGV0IGxpbms6IGFueVtdO1xuXG4gICAgICAgICAgaWYgKHNsaWRlKSB7XG4gICAgICAgICAgICBjb25zdCBtb2RlID0gYC8ke3RoaXMuc2VydmljZS5zdGF0ZS5jdXJyZW50TW9kZX1gO1xuICAgICAgICAgICAgbGluayA9IChbbW9kZSwgLi4uc2xpZGUuY29vcmRpbmF0ZXNdKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGluayA9IFtdO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMucm91dGVyTGlua0RpcmVjdGl2ZS5yb3V0ZXJMaW5rID0gbGluaztcbiAgICAgICAgICAvLyB1cGRhdGUgaHJlZiBvbiBsaW5rXG4gICAgICAgICAgdGhpcy5yb3V0ZXJMaW5rRGlyZWN0aXZlLm5nT25DaGFuZ2VzKHt9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnJvbUV2ZW50KGVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2NsaWNrJylcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoaXNNb3VzZUV2ZW50KSxcbiAgICAgICAgZmlsdGVyKGV2ZW50ID0+IGV2ZW50LmFsdEtleSksXG4gICAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc2xpZGUkKSxcbiAgICAgICAgdW50aWxDb21wb25lbnREZXN0cm95ZWQodGhpcyksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChbZXZlbnQsIHNsaWRlXSkgPT4ge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIGNvbnN0IGxpbmsgPSAoWycvcHJlc2VudGVyJywgLi4uc2xpZGUuY29vcmRpbmF0ZXNdKTtcblxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShsaW5rLCB7IHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZSd9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBuZ3hQcmVzZW50U2xpZGVMaW5rKGNvbXBvbmVudDogVHlwZTxhbnk+KSB7XG4gICAgdGhpcy5zZXJ2aWNlLnNlbGVjdCgoc3RhdGUgPT4gc3RhdGUuc2xpZGVzKSlcbiAgICAgIC5waXBlKFxuICAgICAgICBza2lwTmlsKCksXG4gICAgICAgIHVudGlsQ29tcG9uZW50RGVzdHJveWVkKHRoaXMpKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChzbGlkZXMgPT4gc2xpZGVzLmZpbmQoc2xpZGUgPT4gc2xpZGUuY29tcG9uZW50ID09PSBjb21wb25lbnQpKSxcbiAgICAgICAgZmlsdGVyKHNsaWRlID0+IHNsaWRlICE9PSB1bmRlZmluZWQpLFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShzbGlkZSA9PiB0aGlzLnNsaWRlJC5uZXh0KHNsaWRlKSk7XG4gIH1cbn1cbiJdfQ==