UNPKG

ng-cw-v12

Version:

Angular UI component library

135 lines 14.7 kB
import { Component, Input } from '@angular/core'; import * as i0 from "@angular/core"; export class TypingTextComponent { constructor(elementRef) { this.elementRef = elementRef; /** 展示的文本内容 */ this._text = ''; /** 每个字符之间的延迟 */ this.ncDelayMultiple = 100; /** 每个字符之间的间距 */ this.ncGap = 0; /** 延迟 */ this.ncDelay = 0; /** 是否在视图可见时才开始动画 */ this._startOnView = false; /** 是否只执行一次动画 */ this._once = false; this.displayedText = ''; this.observer = null; this.typingInterval = null; this.timeout = null; } set ncText(value) { this._text = value; setTimeout(() => { this.start(); }); } get ncText() { return this._text; } set ncStartOnView(val) { this._startOnView = val !== null && val !== undefined && val !== false && val !== 'false'; } get ncStartOnView() { return this._startOnView; } set ncOnce(val) { this._once = val !== null && val !== undefined && val !== false && val !== 'false'; } get ncOnce() { return this._once; } ngOnInit() { } ngOnDestroy() { this.clear(); } start() { this.clear(); if (!this.ncStartOnView) { this.timeout = setTimeout(() => { this.startTyping(); }, this.ncDelay); } else { this.setupIntersectionObserver(); } } clear() { if (this.observer) { this.observer.disconnect(); } if (this.typingInterval) { clearInterval(this.typingInterval); } if (this.timeout) { clearTimeout(this.timeout); } } setupIntersectionObserver() { this.observer = new IntersectionObserver((entries) => { if (entries[0].isIntersecting) { this.timeout = setTimeout(() => { this.startTyping(); }, this.ncDelay); if (this.ncOnce) { if (this.observer) { this.observer.disconnect(); } } } else if (!this.ncOnce) { this.endTyping(); } }, { threshold: 0.1 }); this.observer.observe(this.elementRef.nativeElement); } startTyping() { let i = 0; this.typingInterval = setInterval(() => { if (i < this.ncText.length) { this.displayedText = this.ncText.substring(0, i + 1); i++; } else { clearInterval(this.typingInterval); } }, this.ncDelayMultiple); } endTyping() { //若执行动画(startTyping)内部正在执行,则清除动画 if (this.typingInterval) { clearInterval(this.typingInterval); } //若存在ncDelay,离开视图后,进入动画(startTyping)可能还未执行,则需要清除timeout if (this.timeout) { clearTimeout(this.timeout); } //隐藏显示的文本 this.displayedText = ''; } } TypingTextComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: TypingTextComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); TypingTextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.5", type: TypingTextComponent, selector: "nc-typing-text", inputs: { ncText: "ncText", ncDelayMultiple: "ncDelayMultiple", ncGap: "ncGap", ncDelay: "ncDelay", ncStartOnView: "ncStartOnView", ncOnce: "ncOnce" }, ngImport: i0, template: "<div class=\"typing-text-container\" style=\"--gap: {{ncGap}}px;\">\r\n {{ displayedText }}\r\n</div>", styles: [".typing-text-container{width:-moz-fit-content;width:fit-content;letter-spacing:var(--gap)}\n"] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: TypingTextComponent, decorators: [{ type: Component, args: [{ selector: 'nc-typing-text', templateUrl: './typing-text.component.html', styleUrls: ['./typing-text.component.less'] }] }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { ncText: [{ type: Input }], ncDelayMultiple: [{ type: Input }], ncGap: [{ type: Input }], ncDelay: [{ type: Input }], ncStartOnView: [{ type: Input }], ncOnce: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwaW5nLXRleHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy90eXBpbmctdGV4dC90eXBpbmctdGV4dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3R5cGluZy10ZXh0L3R5cGluZy10ZXh0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUF5QixNQUFNLGVBQWUsQ0FBQzs7QUFPaEYsTUFBTSxPQUFPLG1CQUFtQjtJQTJDOUIsWUFBb0IsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQTFDMUMsY0FBYztRQUNOLFVBQUssR0FBVyxFQUFFLENBQUM7UUFXM0IsZ0JBQWdCO1FBQ1Asb0JBQWUsR0FBVyxHQUFHLENBQUM7UUFDdkMsZ0JBQWdCO1FBQ1AsVUFBSyxHQUFXLENBQUMsQ0FBQztRQUMzQixTQUFTO1FBQ0EsWUFBTyxHQUFXLENBQUMsQ0FBQztRQUM3QixvQkFBb0I7UUFDWixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQVF0QyxnQkFBZ0I7UUFDUixVQUFLLEdBQVksS0FBSyxDQUFDO1FBUy9CLGtCQUFhLEdBQVcsRUFBRSxDQUFDO1FBQ25CLGFBQVEsR0FBZ0MsSUFBSSxDQUFDO1FBQzdDLG1CQUFjLEdBQVEsSUFBSSxDQUFDO1FBQzNCLFlBQU8sR0FBUSxJQUFJLENBQUM7SUFFa0IsQ0FBQztJQXhDL0MsSUFDSSxNQUFNLENBQUMsS0FBYTtRQUN0QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFD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RSxDQUFDO2FBQ0w7aUJBQU07Z0JBQ0wsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUNwQztRQUNILENBQUMsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVPLFNBQVM7UUFDZixnQ0FBZ0M7UUFDaEMsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3ZCLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDcEM7UUFDRCx1REFBdUQ7UUFDdkQsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDNUI7UUFDRCxTQUFTO1FBQ1QsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7SUFDMUIsQ0FBQzs7Z0hBeEhVLG1CQUFtQjtvR0FBbkIsbUJBQW1CLDhNQ1BoQywwR0FFTTsyRkRLTyxtQkFBbUI7a0JBTC9CLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsV0FBVyxFQUFFLDhCQUE4QjtvQkFDM0MsU0FBUyxFQUFFLENBQUMsOEJBQThCLENBQUM7aUJBQzVDO2lHQUtLLE1BQU07c0JBRFQsS0FBSztnQkFXRyxlQUFlO3NCQUF2QixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBSUYsYUFBYTtzQkFEaEIsS0FBSztnQkFVRixNQUFNO3NCQURULEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduYy10eXBpbmctdGV4dCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3R5cGluZy10ZXh0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90eXBpbmctdGV4dC5jb21wb25lbnQubGVzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUeXBpbmdUZXh0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIC8qKiDlsZXnpLrnmoTmlofmnKzlhoXlrrkgKi9cclxuICBwcml2YXRlIF90ZXh0OiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKVxyXG4gIHNldCBuY1RleHQodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5fdGV4dCA9IHZhbHVlO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuc3RhcnQoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBnZXQgbmNUZXh0KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fdGV4dDtcclxuICB9XHJcbiAgLyoqIOavj+S4quWtl+espuS5i+mXtOeahOW7tui/nyAqL1xyXG4gIEBJbnB1dCgpIG5jRGVsYXlNdWx0aXBsZTogbnVtYmVyID0gMTAwO1xyXG4gIC8qKiDmr4/kuKrlrZfnrKbkuYvpl7TnmoTpl7Tot50gKi9cclxuICBASW5wdXQoKSBuY0dhcDogbnVtYmVyID0gMDtcclxuICAvKiog5bu26L+fICovXHJcbiAgQElucHV0KCkgbmNEZWxheTogbnVtYmVyID0gMDtcclxuICAvKiog5piv5ZCm5Zyo6KeG5Zu+5Y+v6KeB5pe25omN5byA5aeL5Yqo55S7ICovXHJcbiAgcHJpdmF0ZSBfc3RhcnRPblZpZXc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIHNldCBuY1N0YXJ0T25WaWV3KHZhbDogYm9vbGVhbiB8IHN0cmluZykge1xyXG4gICAgdGhpcy5fc3RhcnRPblZpZXcgPSB2YWwgIT09IG51bGwgJiYgdmFsICE9PSB1bmRlZmluZWQgJiYgdmFsICE9PSBmYWxzZSAmJiB2YWwgIT09ICdmYWxzZSc7XHJcbiAgfVxyXG4gIGdldCBuY1N0YXJ0T25WaWV3KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3N0YXJ0T25WaWV3O1xyXG4gIH1cclxuICAvKiog5piv5ZCm5Y+q5omn6KGM5LiA5qyh5Yqo55S7ICovXHJcbiAgcHJpdmF0ZSBfb25jZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IG5jT25jZSh2YWw6IGJvb2xlYW4gfCBzdHJpbmcpIHtcclxuICAgIHRoaXMuX29uY2UgPSB2YWwgIT09IG51bGwgJiYgdmFsICE9PSB1bmRlZmluZWQgJiYgdmFsICE9PSBmYWxzZSAmJiB2YWwgIT09ICdmYWxzZSc7XHJcbiAgfVxyXG4gIGdldCBuY09uY2UoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fb25jZTtcclxuICB9XHJcblxyXG4gIGRpc3BsYXllZFRleHQ6IHN0cmluZyA9ICcnO1xyXG4gIHByaXZhdGUgb2JzZXJ2ZXI6IEludGVyc2VjdGlvbk9ic2VydmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSB0eXBpbmdJbnRlcnZhbDogYW55ID0gbnVsbDtcclxuICBwcml2YXRlIHRpbWVvdXQ6IGFueSA9IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZikgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQgeyB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jbGVhcigpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGFydCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2xlYXIoKTtcclxuICAgIGlmICghdGhpcy5uY1N0YXJ0T25WaWV3KSB7XHJcbiAgICAgIHRoaXMudGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3RhcnRUeXBpbmcoKTtcclxuICAgICAgfSwgdGhpcy5uY0RlbGF5KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0dXBJbnRlcnNlY3Rpb25PYnNlcnZlcigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbGVhcigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm9ic2VydmVyKSB7XHJcbiAgICAgIHRoaXMub2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudHlwaW5nSW50ZXJ2YWwpIHtcclxuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnR5cGluZ0ludGVydmFsKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnRpbWVvdXQpIHtcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldHVwSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChlbnRyaWVzKSA9PiB7XHJcbiAgICAgIGlmIChlbnRyaWVzWzBdLmlzSW50ZXJzZWN0aW5nKSB7XHJcbiAgICAgICAgdGhpcy50aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnN0YXJ0VHlwaW5nKCk7XHJcbiAgICAgICAgfSwgdGhpcy5uY0RlbGF5KTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMubmNPbmNlKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5vYnNlcnZlcikge1xyXG4gICAgICAgICAgICB0aGlzLm9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoIXRoaXMubmNPbmNlKSB7XHJcbiAgICAgICAgdGhpcy5lbmRUeXBpbmcoKTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgICAgeyB0aHJlc2hvbGQ6IDAuMSB9XHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMub2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXJ0VHlwaW5nKCk6IHZvaWQge1xyXG4gICAgbGV0IGkgPSAwO1xyXG5cclxuICAgIHRoaXMudHlwaW5nSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgIGlmIChpIDwgdGhpcy5uY1RleHQubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5ZWRUZXh0ID0gdGhpcy5uY1RleHQuc3Vic3RyaW5nKDAsIGkgKyAxKTtcclxuICAgICAgICBpKys7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnR5cGluZ0ludGVydmFsKTtcclxuICAgICAgfVxyXG4gICAgfSwgdGhpcy5uY0RlbGF5TXVsdGlwbGUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbmRUeXBpbmcoKTogdm9pZCB7XHJcbiAgICAvL+iLpeaJp+ihjOWKqOeUu++8iHN0YXJ0VHlwaW5n77yJ5YaF6YOo5q2j5Zyo5omn6KGM77yM5YiZ5riF6Zmk5Yqo55S7XHJcbiAgICBpZiAodGhpcy50eXBpbmdJbnRlcnZhbCkge1xyXG4gICAgICBjbGVhckludGVydmFsKHRoaXMudHlwaW5nSW50ZXJ2YWwpO1xyXG4gICAgfVxyXG4gICAgLy/oi6XlrZjlnKhuY0RlbGF577yM56a75byA6KeG5Zu+5ZCO77yM6L+b5YWl5Yqo55S777yIc3RhcnRUeXBpbmfvvInlj6/og73ov5jmnKrmiafooYzvvIzliJnpnIDopoHmuIXpmaR0aW1lb3V0XHJcbiAgICBpZiAodGhpcy50aW1lb3V0KSB7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpO1xyXG4gICAgfVxyXG4gICAgLy/pmpDol4/mmL7npLrnmoTmlofmnKxcclxuICAgIHRoaXMuZGlzcGxheWVkVGV4dCA9ICcnO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwidHlwaW5nLXRleHQtY29udGFpbmVyXCIgc3R5bGU9XCItLWdhcDoge3tuY0dhcH19cHg7XCI+XHJcbiAgICB7eyBkaXNwbGF5ZWRUZXh0IH19XHJcbjwvZGl2PiJdfQ==