@omnedia/ngx-cryptic-text
Version:
A simple component library to animate text.
1 lines • 6.69 kB
Source Map (JSON)
{"version":3,"file":"omnedia-ngx-cryptic-text.mjs","sources":["../../../projects/ngx-cryptic-text/src/lib/ngx-cryptic-text.component.ts","../../../projects/ngx-cryptic-text/src/lib/ngx-cryptic-text.component.html","../../../projects/ngx-cryptic-text/src/public-api.ts","../../../projects/ngx-cryptic-text/src/omnedia-ngx-cryptic-text.ts"],"sourcesContent":["import {CommonModule, isPlatformBrowser} from '@angular/common';\r\nimport {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n Inject,\r\n Input,\r\n OnDestroy,\r\n PLATFORM_ID,\r\n signal,\r\n ViewChild\r\n} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'om-cryptic-text',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: \"./ngx-cryptic-text.component.html\",\r\n styles: '',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class NgxCrypticTextComponent implements AfterViewInit, OnDestroy {\r\n @ViewChild(\"OmCrypticTextElement\") crypticTextElement!: ElementRef<HTMLElement>;\r\n\r\n @Input(\"styleClass\")\r\n styleClass?: string;\r\n\r\n @Input(\"text\")\r\n set textInput(text: string) {\r\n this.text = text;\r\n this.generateText();\r\n }\r\n\r\n text!: string;\r\n\r\n templateText = signal('');\r\n\r\n @Input(\"animationSpeed\")\r\n animationSpeed = 800;\r\n\r\n @Input(\"animateOnce\")\r\n animateOnce = false;\r\n animated = false;\r\n\r\n isInView = signal(false);\r\n private intersectionObserver?: IntersectionObserver;\r\n\r\n constructor(\r\n @Inject(PLATFORM_ID) private platformId: object\r\n ) {\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (!this.text) {\r\n throw new Error('om-cryptic-text: No text provided!');\r\n }\r\n\r\n if (isPlatformBrowser(this.platformId)) {\r\n this.intersectionObserver = new IntersectionObserver(([entry]) => {\r\n if (!this.isInView() && entry.isIntersecting && (!this.animateOnce || this.animateOnce && !this.animated)) {\r\n this.generateText();\r\n }\r\n\r\n this.isInView.set(entry.isIntersecting);\r\n });\r\n this.intersectionObserver.observe(this.crypticTextElement.nativeElement);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.intersectionObserver) {\r\n this.intersectionObserver.disconnect();\r\n }\r\n }\r\n\r\n generateText(): void {\r\n this.animated = true;\r\n this.templateText.set('');\r\n\r\n const alphabets = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\".split(\"\");\r\n\r\n const getRandomInt = (max: number) => Math.floor(Math.random() * max);\r\n\r\n let iterations = 0;\r\n\r\n const interval = setInterval(\r\n () => {\r\n if (iterations < this.text.length) {\r\n let displayText = \"\";\r\n this.text.split('').forEach((char, index) => {\r\n displayText += char === \" \" ? char : index <= iterations ? this.text[index] : alphabets[getRandomInt(26)];\r\n });\r\n this.templateText.set(displayText);\r\n iterations = iterations + 0.1;\r\n } else {\r\n clearInterval(interval);\r\n }\r\n },\r\n this.animationSpeed / (this.text.length * 10),\r\n );\r\n }\r\n}\r\n","<p [ngClass]=\"styleClass\" #OmCrypticTextElement>{{ templateText() }}</p>\n","/*\r\n * Public API Surface of ngx-cryptic-text\r\n */\r\n\r\nexport * from './lib/ngx-cryptic-text.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}