{"version":3,"file":"ion-rating-stars.mjs","sources":["../../../projects/ion-rating-stars/src/lib/ion-rating-stars.component.ts","../../../projects/ion-rating-stars/src/lib/ion-rating-stars.html","../../../projects/ion-rating-stars/src/public-api.ts","../../../projects/ion-rating-stars/src/ion-rating-stars.ts"],"sourcesContent":["import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { IonIcon } from '@ionic/angular/standalone';\r\nimport { CommonModule } from '@angular/common';\r\nimport { star, starOutline, starHalf, starHalfOutline } from 'ionicons/icons';\r\nimport { addIcons } from 'ionicons';\r\n\r\n@Component({\r\n  selector: 'ion-rating-stars',\r\n  templateUrl: 'ion-rating-stars.html',\r\n  styles: [],\r\n  standalone: true,\r\n  imports: [CommonModule, IonIcon]\r\n})\r\nexport class IonRatingStarsComponent implements OnInit {\r\n  stars = [1, 2, 3, 4, 5];\r\n\r\n  @Input() rating: number = 0;\r\n  @Input() size: number = 20;\r\n  @Input() color: string = 'grey';\r\n  @Input() filledColor: string = 'orange';\r\n  @Input() margin: number = 5;\r\n  @Input() disabled: boolean = false;\r\n  @Input() opacity: number = 0.5;\r\n  @Input() isHalfStar: boolean = false;\r\n\r\n  @Output() ratingChange = new EventEmitter<any>();\r\n\r\n\r\n  constructor() {\r\n    addIcons({ star, starOutline, starHalf, starHalfOutline })\r\n  }\r\n\r\n  ngOnInit(): void {\r\n  }\r\n\r\n  rateChange(i: number) {\r\n    if (this.isHalfStar) {\r\n      if (this.rating === i + 0.5) {\r\n        // If the clicked star is already half-filled, make it full\r\n        this.rating = i + 1;\r\n      } else if (this.rating === i + 1) {\r\n        // If the clicked star is already full, make it empty\r\n        this.rating = i + 0.5;\r\n      } else {\r\n        // Otherwise, set it to half-filled\r\n        this.rating = i + 0.5;\r\n      }\r\n    } else {\r\n      this.rating = i + 1;\r\n    }\r\n    this.ratingChange.emit(this.rating);\r\n  }\r\n\r\n  getStarColor(index: number): string {\r\n    if (this.rating >= index + 1) {\r\n      return this.filledColor;\r\n    } else if (this.rating >= index + 0.5) {\r\n      return this.filledColor;\r\n    } else {\r\n      return this.color;\r\n    }\r\n  }\r\n\r\n}\r\n","<div>\r\n  @for(star of stars; track $index;){\r\n  <ion-icon\r\n    [name]=\"($index + 1) <= rating ? 'star' : (isHalfStar && rating === $index + 0.5) ? 'star-half-outline' : 'star-outline'\"\r\n    [ngStyle]=\"{\r\n      'color': getStarColor($index),\r\n      'font-size': size + 'px',\r\n      'margin-right': margin + 'px',\r\n      'opacity': disabled ? opacity : '1',\r\n      'pointer-events': disabled ? 'none' : ''\r\n    }\"\r\n    (click)=\"rateChange($index)\">\r\n  </ion-icon>\r\n  }\r\n</div>","/*\r\n * Public API Surface of ion-rating-stars\r\n */\r\nexport * from './lib/ion-rating-stars.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}