{"version":3,"file":"rm-ng-star-rating.mjs","sources":["../../projects/rm-ng-star-rating/src/lib/rm-ng-star-rating.component.ts","../../projects/rm-ng-star-rating/src/lib/rm-ng-star-rating.component.html","../../projects/rm-ng-star-rating/src/public-api.ts","../../projects/rm-ng-star-rating/src/rm-ng-star-rating.ts"],"sourcesContent":["import {\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  HostBinding,\r\n  Input,\r\n  OnInit,\r\n  Output,\r\n  ViewChild,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n    selector: 'rm-ng-star-rating',\r\n    imports: [CommonModule],\r\n    templateUrl: './rm-ng-star-rating.component.html',\r\n    styleUrls: ['./rm-ng-star-rating.component.css']\r\n})\r\nexport class RmNgStarRatingComponent implements OnInit {\r\n  @Output() ratingUpdated: EventEmitter<number> = new EventEmitter();\r\n  @Input() @HostBinding('style.--star-color') color: string = 'gold';\r\n  @Input() @HostBinding('style.--star-empty-color') emptyColor: string =\r\n    'lightgray';\r\n  @Input() @HostBinding('style.--star-size') size: string = '40px';\r\n  @Input() rating: number = 0;\r\n  @Input() starCount: number = 5;\r\n  @Input() readOnly: boolean = false;\r\n  // it is for showing pointing ratiing\r\n  // @Input() decimalRatting: boolean = false;\r\n  // @ViewChild('tooltip', {static: false}) tooltip!: ElementRef;\r\n\r\n  hovered: number = 0;\r\n  hoveredRating: number = 0;\r\n  starsArray: any[] = [];\r\n\r\n  ngOnInit(): void {\r\n    this.starsArray = Array.from({ length: this.starCount });\r\n  }\r\n\r\n  onMouseEnter(index: number, event: MouseEvent): void {\r\n    if (!this.readOnly) {\r\n      this.hovered = index;\r\n      this.hoveredRating = index;\r\n      // it is for showing pointing ratiing\r\n      // this.hoveredRating = this.calculateRating(index, event);\r\n      // const tooltipElement = this.tooltip.nativeElement as HTMLElement;\r\n      // tooltipElement.style.display = 'block';\r\n      // this.positionTooltip(event);\r\n    }\r\n  }\r\n\r\n  onMouseLeave(): void {\r\n    if (!this.readOnly) {\r\n      this.hovered = 0;\r\n      this.hoveredRating = 0;\r\n      // const tooltipElement = this.tooltip.nativeElement as HTMLElement;\r\n      // tooltipElement.style.display = 'none';\r\n    }\r\n  }\r\n\r\n  onClick(index: number): void {\r\n    if (!this.readOnly) {\r\n      this.rating = index;\r\n      // it is for showing pointing ratiing\r\n      // this.rating = this.calculateRating(index);\r\n      this.ratingUpdated.emit(this.rating);\r\n    }\r\n  }\r\n\r\n  getStarClass(index: number): string {\r\n    return this.hovered >= index || this.rating >= index\r\n      ? 'star-filled'\r\n      : 'star-empty';\r\n  }\r\n\r\n  // it is for showing pointing ratiing\r\n  // getStarClass(index: number): string {\r\n  //   if (this.hovered >= index || this.rating >= index) {\r\n  //     const fullStars = Math.floor(this.rating);\r\n  //     const fractionalPart = this.rating - fullStars;\r\n  //     if (index === fullStars + 1 && fractionalPart > 0) {\r\n  //       return 'star-half-filled';\r\n  //     }\r\n  //     return 'star-filled';\r\n  //   }\r\n  //   return 'star-empty';\r\n  // }\r\n\r\n  calculateRating(index: number, event?: MouseEvent): number {\r\n    if (event) {\r\n      const starWidth = (event.target as HTMLElement).offsetWidth;\r\n      const offsetX =\r\n        event.clientX -\r\n        (event.target as HTMLElement).getBoundingClientRect().left;\r\n      const fraction = Math.min(1, Math.max(0, offsetX / starWidth));\r\n      return index - 1 + fraction;\r\n    }\r\n    return index;\r\n  }\r\n\r\n  // positionTooltip(event: MouseEvent): void {\r\n  //   const tooltipElement = this.tooltip.nativeElement as HTMLElement;\r\n  //   const xOffset = -10; // Distance from the star to the tooltip\r\n  //   const yOffset = -30; // Position above the star\r\n  //\r\n  //   tooltipElement.style.left = `${event.clientX + xOffset}px`;\r\n  //   tooltipElement.style.top = `${event.clientY + yOffset}px`;\r\n  // }\r\n}\r\n","<!--<div class=\"star-rating\" [ngStyle]=\"{'font-size.px': size}\">-->\r\n<!--  <span *ngFor=\"let star of [].constructor(starCount); let i = index\"-->\r\n<!--        class=\"star\"-->\r\n<!--        [ngClass]=\"getStarClass(i + 1)\"-->\r\n<!--        (mouseenter)=\"onMouseEnter(i + 1)\"-->\r\n<!--        (mouseleave)=\"onMouseLeave()\"-->\r\n<!--        (click)=\"onClick(i + 1)\">-->\r\n<!--     ★-->\r\n<!--  </span>-->\r\n<!--</div>-->\r\n\r\n<!--<div class=\"star-rating-container\">-->\r\n<!--  <div class=\"star-rating\" [ngStyle]=\"{'font-size.px': size}\">-->\r\n<!--    <span *ngFor=\"let star of starsArray; let i = index\"-->\r\n<!--          class=\"star-wrapper\"-->\r\n<!--          (mouseenter)=\"onMouseEnter(i + 1, $event)\"-->\r\n<!--          (mouseleave)=\"onMouseLeave()\">-->\r\n<!--      <span class=\"star\"-->\r\n<!--            [ngClass]=\"getStarClass(i + 1)\"-->\r\n<!--            (click)=\"onClick(i + 1)\">-->\r\n<!--        ★-->\r\n<!--      </span>-->\r\n<!--      &lt;!&ndash; Tooltip displayed above the star &ndash;&gt;-->\r\n<!--      <div class=\"tooltip\" #tooltip>-->\r\n<!--        {{ hoveredRating }}-->\r\n<!--      </div>-->\r\n<!--    </span>-->\r\n<!--  </div>-->\r\n<!--</div>-->\r\n\r\n<div class=\"star-rating-container\">\r\n  <div class=\"star-rating\" [ngStyle]=\"{ 'font-size.px': size }\">\r\n    <span\r\n      *ngFor=\"let star of starsArray; let i = index\"\r\n      class=\"star-wrapper\"\r\n      (mouseenter)=\"onMouseEnter(i + 1, $event)\"\r\n      (mouseleave)=\"onMouseLeave()\"\r\n    >\r\n      <span\r\n        class=\"star\"\r\n        [ngClass]=\"getStarClass(i + 1)\"\r\n        (click)=\"onClick(i + 1)\"\r\n      >\r\n        ★\r\n      </span>\r\n    </span>\r\n  </div>\r\n  <!-- Tooltip element -->\r\n  <!--  <div class=\"tooltip\" #tooltip>-->\r\n  <!--    {{ hoveredRating }}-->\r\n  <!--  </div>-->\r\n</div>\r\n","/*\r\n * Public API Surface of rm-ng-star-rating\r\n */\r\n\r\nexport * from './lib/rm-ng-star-rating.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}