ngx-teximate
Version:
Angular text animations component
171 lines • 13.8 kB
JavaScript
/**
* @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=