{"version":3,"file":"omnedia-ngx-highlighter.mjs","sources":["../../../projects/ngx-highlighter/src/lib/ngx-highlighter.component.ts","../../../projects/ngx-highlighter/src/lib/ngx-highlighter.component.html","../../../projects/ngx-highlighter/src/public-api.ts","../../../projects/ngx-highlighter/src/omnedia-ngx-highlighter.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  OnChanges,\r\n  OnDestroy,\r\n  PLATFORM_ID,\r\n  signal,\r\n  SimpleChanges,\r\n  ViewChild\r\n} from '@angular/core';\r\nimport {annotate} from 'rough-notation';\r\nimport {AnnotationAction, BracketType} from './ngx-highlighter.types';\r\n\r\n@Component({\r\n  selector: 'om-highlighter',\r\n  standalone: true,\r\n  imports: [CommonModule],\r\n  templateUrl: './ngx-highlighter.component.html',\r\n  styleUrl: './ngx-highlighter.component.scss',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class NgxHighlighterComponent implements AfterViewInit, OnDestroy, OnChanges {\r\n  @ViewChild('wrapper') wrapperRef!: ElementRef<HTMLElement>;\r\n\r\n  @Input() action: AnnotationAction = 'highlight';\r\n  @Input() color = '#d1daff';\r\n  @Input() strokeWidth = 1.5;\r\n  @Input() animationDuration = 600;\r\n  @Input() iterations = 2;\r\n  @Input() padding = 2;\r\n  @Input() multiline = true;\r\n  @Input() animateOnlyOnce = false;\r\n  @Input() brackets: BracketType | BracketType[] = ['left', 'right'];\r\n  @Input() animate = true;\r\n\r\n  isInView = signal(false);\r\n\r\n  private io?: IntersectionObserver;\r\n  private annotation?: ReturnType<typeof annotate>;\r\n  private animatedOnce = false;\r\n\r\n  constructor(@Inject(PLATFORM_ID) private platformId: object) {\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    if (!isPlatformBrowser(this.platformId)) return;\r\n    \r\n    this.createAnnotation();\r\n\r\n    this.io = new IntersectionObserver(([entry]) => {\r\n      const inView = entry.isIntersecting;\r\n      this.isInView.set(inView);\r\n\r\n      if (inView && (!this.animateOnlyOnce || this.animateOnlyOnce && !this.animatedOnce)) {\r\n        this.annotation?.show();\r\n        this.animatedOnce = true;\r\n      } else if (!this.animateOnlyOnce) {\r\n        this.annotation?.hide();\r\n      }\r\n    });\r\n    this.io.observe(this.wrapperRef.nativeElement);\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (!isPlatformBrowser(this.platformId) || !this.wrapperRef?.nativeElement) return;\r\n    if (['action', 'color', 'strokeWidth', 'animationDuration', 'iterations', 'padding', 'multiline']\r\n      .some(k => k in changes)) {\r\n      this.annotation?.remove();\r\n      this.createAnnotation();\r\n      if (this.isInView()) this.annotation?.show();\r\n    }\r\n  }\r\n\r\n  private createAnnotation() {\r\n    this.annotation = annotate(this.wrapperRef.nativeElement, {\r\n      type: this.action,\r\n      color: this.color,\r\n      strokeWidth: this.strokeWidth,\r\n      animationDuration: this.animationDuration,\r\n      iterations: this.iterations,\r\n      padding: this.padding,\r\n      multiline: this.multiline,\r\n      brackets: this.brackets,\r\n      animate: this.animate,\r\n    });\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.io?.disconnect();\r\n    this.annotation?.remove();\r\n    this.annotation = undefined;\r\n  }\r\n}\r\n","<span #wrapper class=\"om-highlighter\">\n  <ng-content></ng-content>\n</span>\n","/*\r\n * Public API Surface of ngx-highlighter\r\n */\r\n\r\nexport * from './lib/ngx-highlighter.component';\r\nexport * from './lib/ngx-highlighter.types';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}