{"version":3,"file":"ion-star-ratings.mjs","sources":["../../../projects/ion-star-ratings/src/lib/ion-star-ratings.component.ts","../../../projects/ion-star-ratings/src/public-api.ts","../../../projects/ion-star-ratings/src/ion-star-ratings.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IonicModule } from '@ionic/angular';\n\n@Component({\n  selector: 'ion-star-ratings',\n  standalone: true,\n  imports: [CommonModule, IonicModule],\n  template: `\n    <div class=\"ion-star-rating\">\n      <button [ngStyle]=\"{\n        'width' : fontSize, \n        'height' : fontSize\n      }\" \n        *ngFor=\"let index of iconsArray\" [id]=\"index\" type=\"button\" ion-button icon-only \n        (click)=\"changeRating($event)\">\n        <ion-icon [ngStyle]=\"{\n          'color': getIconColor(index), \n          'font-size' : fontSize }\" \n          [name]=\"getIconName(index)\">\n        </ion-icon>\n      </button>\n    </div>\n  `,\n  styles: [`\n    .ion-star-rating button {\n        background: none;\n        box-shadow: none;\n        -webkit-box-shadow: none;\n        padding : 0px;\n    }\n  `],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: IonStarRatingsComponent,\n      multi: true\n    }\n  ]\n})\nexport class IonStarRatingsComponent implements ControlValueAccessor, OnInit {\n  private _rating!: number;\n  private onChange: any;\n  private onTouched: any;\n  disabled!: boolean;\n\n  ngOnInit(): void {\n    this.rating = this.rating || 0; //default after input`s initialization\n    for (var i = 0; i < this.maxRating; i++) {\n      this.iconsArray.push(i);\n    }\n  }\n\n  getIconColor(index: number) {\n    return index < Math.round(this.rating) ? this.activeColor : this.defaultColor\n  }\n\n  getIconName(index: number) {\n    return (this.halfStar && (this.rating - index > 0) && (this.rating - index <= 0.5)) ?\n      this.halfIcon : (index < Math.round(this.rating)) ? this.activeIcon : this.defaultIcon\n  }\n\n  writeValue(obj: number): void {\n    this.rating = obj;\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState?(isDisabled: boolean): void {\n    this.readonly = isDisabled;\n  }\n\n  @Input()\n  set rating(val: number) {\n    this._rating = val;\n\n    if (this.onChange) {\n      this.onChange(val);\n    }\n  }\n\n  get rating(): number {\n    return this._rating;\n  }\n\n  @Output()\n  ratingChanged: EventEmitter<number> = new EventEmitter<number>();\n\n  @Input()\n  readonly: boolean = false;\n  @Input()\n  activeColor: string = '#488aff';\n  @Input()\n  defaultColor: string = '#aaaaaa';\n  @Input()\n  activeIcon: string = 'star';\n  @Input()\n  defaultIcon: string = 'star-outline';\n  @Input()\n  halfIcon: string = 'star-half';\n  @Input()\n  halfStar: boolean = false;\n  @Input()\n  maxRating: number = 5;\n  @Input()\n  fontSize: string = '28px';\n  iconsArray: number[] = [];\n\n  changeRating(event: any) {\n    if (this.readonly && this.readonly) return;\n\n    let id = event.target.id ? parseInt(event.target.id) : parseInt(event.target.parentElement.id);\n    if (this.halfStar && this.halfStar) {\n      this.rating = ((this.rating - id > 0) && (this.rating - id <= 0.5)) ? id + 1 : id + 0.5;\n    } else {\n      this.rating = id + 1;\n    }\n\n    this.ratingChanged.emit(this.rating);\n  }\n}\n","/*\n * Public API Surface of ion-star-ratings\n */\nexport * from './lib/ion-star-ratings.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}