UNPKG

ngx-teximate

Version:
171 lines 13.8 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import { Directive, Output, Inject, ElementRef, EventEmitter, forwardRef } from '@angular/core'; import { Subscription, fromEvent, merge, of } from 'rxjs'; import { filter, switchMap, tap } from 'rxjs/operators'; import { Teximate } from './teximate'; export class TeximateEvents { /** * @param {?} element * @param {?} teximate */ constructor(element, teximate) { this.element = element; this.teximate = teximate; this.events = Subscription.EMPTY; this.click = new EventEmitter(); this.hover = new EventEmitter(); } /** * @return {?} */ ngAfterViewInit() { this.events = this.teximate.state.pipe(filter(() => !!this.click.observers.length || !!this.hover.observers.length), switchMap(() => { /** @type {?} */ let clickEvents = of(null); /** @type {?} */ let hoverEvents = of(null); /** @type {?} */ const words = this.element.nativeElement.querySelectorAll(this.selector); if (this.click.observers.length) { /** @type {?} */ const events = Array.from(words).map((el) => fromEvent(el, 'click')); clickEvents = merge(...events).pipe(tap(e => this.click.emit(e))); } if (this.hover.observers.length) { /** @type {?} */ const events = Array.from(words).map((el) => fromEvent(el, 'mouseenter')); hoverEvents = merge(...events).pipe(tap(e => this.hover.emit(e))); } return merge(clickEvents, hoverEvents); })).subscribe(); } /** * @return {?} */ ngOnDestroy() { this.events.unsubscribe(); } } /** @nocollapse */ TeximateEvents.ctorParameters = () => [ { type: ElementRef }, { type: Teximate, decorators: [{ type: Inject, args: [forwardRef(() => Teximate),] }] } ]; TeximateEvents.propDecorators = { click: [{ type: Output, args: ['',] }], hover: [{ type: Output, args: ['',] }] }; if (false) { /** @type {?} */ TeximateEvents.prototype.selector; /** @type {?} */ TeximateEvents.prototype.events; /** @type {?} */ TeximateEvents.prototype.click; /** @type {?} */ TeximateEvents.prototype.hover; /** @type {?} */ TeximateEvents.prototype.element; /** @type {?} */ TeximateEvents.prototype.teximate; } export class ParagraphEvents extends TeximateEvents { /** * @param {?} element * @param {?} teximate */ constructor(element, teximate) { super(element, teximate); this.click = new EventEmitter(); this.hover = new EventEmitter(); this.selector = '.teximate-paragraph'; } } ParagraphEvents.decorators = [ { type: Directive, args: [{ selector: 'teximate[paragraphClick], teximate[paragraphHover]' },] } ]; /** @nocollapse */ ParagraphEvents.ctorParameters = () => [ { type: ElementRef }, { type: Teximate, decorators: [{ type: Inject, args: [forwardRef(() => Teximate),] }] } ]; ParagraphEvents.propDecorators = { click: [{ type: Output, args: ['paragraphClick',] }], hover: [{ type: Output, args: ['paragraphHover',] }] }; if (false) { /** @type {?} */ ParagraphEvents.prototype.click; /** @type {?} */ ParagraphEvents.prototype.hover; } export class WordEvents extends TeximateEvents { /** * @param {?} element * @param {?} teximate */ constructor(element, teximate) { super(element, teximate); this.click = new EventEmitter(); this.hover = new EventEmitter(); this.selector = '.teximate-word'; } } WordEvents.decorators = [ { type: Directive, args: [{ selector: 'teximate[wordClick], teximate[wordHover]' },] } ]; /** @nocollapse */ WordEvents.ctorParameters = () => [ { type: ElementRef }, { type: Teximate, decorators: [{ type: Inject, args: [forwardRef(() => Teximate),] }] } ]; WordEvents.propDecorators = { click: [{ type: Output, args: ['wordClick',] }], hover: [{ type: Output, args: ['wordHover',] }] }; if (false) { /** @type {?} */ WordEvents.prototype.click; /** @type {?} */ WordEvents.prototype.hover; } export class LetterEvents extends TeximateEvents { /** * @param {?} element * @param {?} teximate */ constructor(element, teximate) { super(element, teximate); this.click = new EventEmitter(); this.hover = new EventEmitter(); this.selector = '.teximate-letter'; } } LetterEvents.decorators = [ { type: Directive, args: [{ selector: 'teximate[letterClick], teximate[letterHover]' },] } ]; /** @nocollapse */ LetterEvents.ctorParameters = () => [ { type: ElementRef }, { type: Teximate, decorators: [{ type: Inject, args: [forwardRef(() => Teximate),] }] } ]; LetterEvents.propDecorators = { click: [{ type: Output, args: ['letterClick',] }], hover: [{ type: Output, args: ['letterHover',] }] }; if (false) { /** @type {?} */ LetterEvents.prototype.click; /** @type {?} */ LetterEvents.prototype.hover; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4aW1hdGUtZXZlbnRzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LXRleGltYXRlLyIsInNvdXJjZXMiOlsibGliL3RleGltYXRlLWV2ZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQTRCLE1BQU0sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxSCxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQW9CLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRXRDLE1BQU0sT0FBTyxjQUFjOzs7OztJQU96QixZQUFtQixPQUFtQixFQUE2QyxRQUFrQjtRQUFsRixZQUFPLEdBQVAsT0FBTyxDQUFZO1FBQTZDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFKckcsV0FBTSxHQUFxQixZQUFZLENBQUMsS0FBSyxDQUFDO1FBQ2xDLFVBQUssR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzNCLFVBQUssR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBR3ZDLENBQUM7Ozs7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQ3BDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFDNUUsU0FBUyxDQUFDLEdBQUcsRUFBRTs7Z0JBQ1QsV0FBVyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7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U0FBQztnQkFDVCxRQUFRLEVBQUUsMENBQTBDO2FBQ3JEOzs7O1lBeEQ2RCxVQUFVO1lBRy9ELFFBQVEsdUJBMERtQixNQUFNLFNBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7O29CQUhsRSxNQUFNLFNBQUMsV0FBVztvQkFDbEIsTUFBTSxTQUFDLFdBQVc7Ozs7SUFEbkIsMkJBQWdEOztJQUNoRCwyQkFBZ0Q7O0FBV2xELE1BQU0sT0FBTyxZQUFhLFNBQVEsY0FBYzs7Ozs7SUFJOUMsWUFBWSxPQUFtQixFQUFzQyxRQUFrQjtRQUNyRixLQUFLLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBSkosVUFBSyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDM0IsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFJaEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxrQkFBa0IsQ0FBQztJQUNyQyxDQUFDOzs7WUFWRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLDhDQUE4QzthQUN6RDs7OztZQXJFNkQsVUFBVTtZQUcvRCxRQUFRLHVCQXVFbUIsTUFBTSxTQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUM7OztvQkFIbEUsTUFBTSxTQUFDLGFBQWE7b0JBQ3BCLE1BQU0sU0FBQyxhQUFhOzs7O0lBRHJCLDZCQUFrRDs7SUFDbEQsNkJBQWtEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBPdXRwdXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgSW5qZWN0LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgZnJvbUV2ZW50LCBtZXJnZSwgU3Vic2NyaXB0aW9uTGlrZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUZXhpbWF0ZSB9IGZyb20gJy4vdGV4aW1hdGUnO1xuXG5leHBvcnQgY2xhc3MgVGV4aW1hdGVFdmVudHMgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gIHNlbGVjdG9yOiBzdHJpbmc7XG4gIGV2ZW50czogU3Vic2NyaXB0aW9uTGlrZSA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcbiAgQE91dHB1dCgnJykgY2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoJycpIGhvdmVyID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50OiBFbGVtZW50UmVmLCBASW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gVGV4aW1hdGUpKSBwdWJsaWMgdGV4aW1hdGU6IFRleGltYXRlKSB7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5ldmVudHMgPSB0aGlzLnRleGltYXRlLnN0YXRlLnBpcGUoXG4gICAgICBmaWx0ZXIoKCkgPT4gISF0aGlzLmNsaWNrLm9ic2VydmVycy5sZW5ndGggfHwgISF0aGlzLmhvdmVyLm9ic2VydmVycy5sZW5ndGgpLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgbGV0IGNsaWNrRXZlbnRzID0gb2YobnVsbCk7XG4gICAgICAgIGxldCBob3ZlckV2ZW50cyA9IG9mKG51bGwpO1xuICAgICAgICBjb25zdCB3b3JkcyA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwodGhpcy5zZWxlY3Rvcik7XG4gICAgICAgIGlmICh0aGlzLmNsaWNrLm9ic2VydmVycy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCBldmVudHMgPSBBcnJheS5mcm9tKHdvcmRzKS5tYXAoKGVsOiBIVE1MRWxlbWVudCkgPT4gZnJvbUV2ZW50KGVsLCAnY2xpY2snKSk7XG4gICAgICAgICAgY2xpY2tFdmVudHMgPSBtZXJnZSguLi5ldmVudHMpLnBpcGUodGFwKGUgPT4gdGhpcy5jbGljay5lbWl0KGUpKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaG92ZXIub2JzZXJ2ZXJzLmxlbmd0aCkge1xuICAgICAgICAgIGNvbnN0IGV2ZW50cyA9IEFycmF5LmZyb20od29yZHMpLm1hcCgoZWw6IEhUTUxFbGVtZW50KSA9PiBmcm9tRXZlbnQoZWwsICdtb3VzZWVudGVyJykpO1xuICAgICAgICAgIGhvdmVyRXZlbnRzID0gbWVyZ2UoLi4uZXZlbnRzKS5waXBlKHRhcChlID0+IHRoaXMuaG92ZXIuZW1pdChlKSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZXJnZShjbGlja0V2ZW50cywgaG92ZXJFdmVudHMpO1xuICAgICAgfSlcbiAgICApLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5ldmVudHMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ3RleGltYXRlW3BhcmFncmFwaENsaWNrXSwgdGV4aW1hdGVbcGFyYWdyYXBoSG92ZXJdJ1xufSlcbmV4cG9ydCBjbGFzcyBQYXJhZ3JhcGhFdmVudHMgZXh0ZW5kcyBUZXhpbWF0ZUV2ZW50cyB7XG4gIEBPdXRwdXQoJ3BhcmFncmFwaENsaWNrJykgY2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoJ3BhcmFncmFwaEhvdmVyJykgaG92ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgY29uc3RydWN0b3IoZWxlbWVudDogRWxlbWVudFJlZiwgQEluamVjdChmb3J3YXJkUmVmKCgpID0+IFRleGltYXRlKSkgdGV4aW1hdGU6IFRleGltYXRlKSB7XG4gICAgc3VwZXIoZWxlbWVudCwgdGV4aW1hdGUpO1xuICAgIHRoaXMuc2VsZWN0b3IgPSAnLnRleGltYXRlLXBhcmFncmFwaCc7XG4gIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAndGV4aW1hdGVbd29yZENsaWNrXSwgdGV4aW1hdGVbd29yZEhvdmVyXSdcbn0pXG5leHBvcnQgY2xhc3MgV29yZEV2ZW50cyBleHRlbmRzIFRleGltYXRlRXZlbnRzIHtcbiAgQE91dHB1dCgnd29yZENsaWNrJykgY2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoJ3dvcmRIb3ZlcicpIGhvdmVyID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQ6IEVsZW1lbnRSZWYsIEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBUZXhpbWF0ZSkpIHRleGltYXRlOiBUZXhpbWF0ZSkge1xuICAgIHN1cGVyKGVsZW1lbnQsIHRleGltYXRlKTtcbiAgICB0aGlzLnNlbGVjdG9yID0gJy50ZXhpbWF0ZS13b3JkJztcbiAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICd0ZXhpbWF0ZVtsZXR0ZXJDbGlja10sIHRleGltYXRlW2xldHRlckhvdmVyXSdcbn0pXG5leHBvcnQgY2xhc3MgTGV0dGVyRXZlbnRzIGV4dGVuZHMgVGV4aW1hdGVFdmVudHMge1xuICBAT3V0cHV0KCdsZXR0ZXJDbGljaycpIGNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCdsZXR0ZXJIb3ZlcicpIGhvdmVyID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQ6IEVsZW1lbnRSZWYsIEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBUZXhpbWF0ZSkpIHRleGltYXRlOiBUZXhpbWF0ZSkge1xuICAgIHN1cGVyKGVsZW1lbnQsIHRleGltYXRlKTtcbiAgICB0aGlzLnNlbGVjdG9yID0gJy50ZXhpbWF0ZS1sZXR0ZXInO1xuICB9XG59XG4iXX0=