{ "version": 3, "sources": ["src/app/shared/read-more/read-more.component.ts", "src/app/shared/read-more/read-more.component.html"], "sourcesContent": ["import {ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, Input, OnChanges} from '@angular/core';\r\nimport {NgClass} from \"@angular/common\";\r\nimport {SafeHtmlPipe} from \"../../_pipes/safe-html.pipe\";\r\nimport {TranslocoDirective} from \"@jsverse/transloco\";\r\n\r\n@Component({\r\n selector: 'app-read-more',\r\n standalone: true,\r\n imports: [SafeHtmlPipe, TranslocoDirective, NgClass],\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 private readonly cdRef = inject(ChangeDetectorRef);\r\n\r\n /**\r\n * String to apply read more 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\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 this.cdRef.markForCheck();\r\n return;\r\n }\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\r\n @if (text && text.length > maxLength && showToggle) {\r\n \r\n  \r\n  {{isCollapsed ? t('read-more') : t('read-less')}}\r\n \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_Conditional_4_Template", "\u0275\u0275pipeBind1", "currentText", "\u0275\u0275sanitizeHtml", "\u0275\u0275pureFunction1", "_c0", "blur", "\u0275\u0275conditional", "text", "length", "maxLength", "showToggle", "ReadMoreComponent", "constructor", "cdRef", "inject", "ChangeDetectorRef", "localStorage", "setItem", "determineView", "markForCheck", "getItem", "substring", "Math", "min", "lastIndexOf", "ngOnChanges", "selectors", "inputs", "standalone", "features", "\u0275\u0275NgOnChangesFeature", "\u0275\u0275StandaloneFeature", "decls", "vars", "consts", "template", "rf", "ctx", "ReadMoreComponent_ng_container_0_Template", "SafeHtmlPipe", "TranslocoDirective", "NgClass", "styles", "changeDetection", "_ReadMoreComponent"] }