{ "version": 3, "sources": ["src/app/shared/read-more/read-more.component.ts", "src/app/shared/read-more/read-more.component.html"], "sourcesContent": ["import { CommonModule } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnChanges } from '@angular/core';\r\nimport { TranslocoDirective } from \"@ngneat/transloco\";\r\nimport { SafeHtmlPipe } from \"../../_pipes/safe-html.pipe\";\r\n\r\n@Component({\r\n selector: 'app-read-more',\r\n standalone: true,\r\n imports: [CommonModule, SafeHtmlPipe, TranslocoDirective],\r\n templateUrl: './read-more.component.html',\r\n styleUrls: ['./read-more.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ReadMoreComponent implements OnChanges {\r\n /**\r\n * String to apply readmore on\r\n */\r\n @Input({required: true}) text!: string;\r\n /**\r\n * Max length before apply read more. Defaults to 250 characters.\r\n */\r\n @Input() maxLength: number = 250;\r\n /**\r\n * If the field is collapsed and blur true, text will not be readable\r\n */\r\n @Input() blur: boolean = false;\r\n /**\r\n * If the read more toggle is visible\r\n */\r\n @Input() showToggle: boolean = true;\r\n\r\n currentText!: string;\r\n hideToggle: boolean = true;\r\n isCollapsed: boolean = true;\r\n\r\n constructor(private readonly cdRef: ChangeDetectorRef) {}\r\n\r\n toggleView() {\r\n this.isCollapsed = !this.isCollapsed;\r\n localStorage.setItem(\"readMore\", this.isCollapsed + \"\");\r\n this.determineView();\r\n }\r\n\r\n determineView() {\r\n if (!this.text || this.text.length <= this.maxLength) {\r\n this.currentText = this.text;\r\n this.isCollapsed = true;\r\n this.hideToggle = true;\r\n return;\r\n }\r\n this.hideToggle = false;\r\n this.isCollapsed = (localStorage.getItem(\"readMore\") === 'true') || false;\r\n if (this.isCollapsed) {\r\n this.currentText = this.text.substring(0, this.maxLength);\r\n this.currentText = this.currentText.substring(0, Math.min(this.currentText.length, this.currentText.lastIndexOf(' ')));\r\n this.currentText = this.currentText + '…';\r\n } else if (!this.isCollapsed) {\r\n this.currentText = this.text;\r\n }\r\n\r\n this.cdRef.markForCheck();\r\n }\r\n ngOnChanges() {\r\n this.determineView();\r\n }\r\n}\r\n", "\r\n
\r\n \r\n maxLength && showToggle\" class=\"read-more-link\" (click)=\"toggleView()\">\r\n   {{isCollapsed ? t('read-more') : t('read-less')}}\r\n \r\n
\r\n
\r\n"], "mappings": "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", "names": ["\u0275\u0275elementStart", "\u0275\u0275listener", "\u0275\u0275restoreView", "_r1", "ctx_r1", "\u0275\u0275nextContext", "\u0275\u0275resetView", "toggleView", "\u0275\u0275text", "\u0275\u0275element", "\u0275\u0275elementEnd", "\u0275\u0275classProp", "hideToggle", "\u0275\u0275advance", "\u0275\u0275property", "\u0275\u0275pureFunction2", "_c1", "isCollapsed", "\u0275\u0275textInterpolate1", "t_r3", "\u0275\u0275elementContainerStart", "\u0275\u0275template", "ReadMoreComponent_ng_container_0_a_4_Template", "\u0275\u0275pipeBind1", "currentText", "\u0275\u0275sanitizeHtml", "\u0275\u0275pureFunction1", "_c0", "blur", "text", "length", "maxLength", "showToggle", "ReadMoreComponent", "constructor", "cdRef", "localStorage", "setItem", "determineView", "getItem", "substring", "Math", "min", "lastIndexOf", "markForCheck", "ngOnChanges", "\u0275\u0275directiveInject", "ChangeDetectorRef", "selectors", "inputs", "standalone", "features", "\u0275\u0275NgOnChangesFeature", "\u0275\u0275StandaloneFeature", "decls", "vars", "consts", "template", "rf", "ctx", "ReadMoreComponent_ng_container_0_Template", "CommonModule", "NgClass", "NgIf", "SafeHtmlPipe", "TranslocoDirective", "styles", "changeDetection", "_ReadMoreComponent"] }