{"version":3,"file":"nelson6e65-ionic-rating-component.mjs","sources":["../../src/lib/ionic-rating.service.ts","../../src/lib/ionic-rating.component.ts","../../src/lib/ionic-rating.module.ts","../../src/public-api.ts","../../src/nelson6e65-ionic-rating-component.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\nimport { Subject } from \"rxjs\";\n\n@Injectable({\n  providedIn: \"root\",\n})\nexport class IonicRatingService {\n  private starRatingSubject = new Subject<number>();\n  private topicSubject = new Subject<{ [key: string]: any }>();\n\n  publishStartRatingChanged(value: number) {\n    this.starRatingSubject.next(value);\n  }\n\n  getStartRatingChangedObservable(): Subject<any> {\n    return this.starRatingSubject;\n  }\n\n  publishTopic(topic: string, value: number) {\n    this.topicSubject.next({ topic, value });\n  }\n\n  getTopicObservable(key): Subject<any> {\n    return this.topicSubject[key];\n  }\n}\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  OnInit,\n  Output,\n  forwardRef,\n} from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { IonicRatingService } from \"./ionic-rating.service\";\n\n@Component({\n  selector: \"ionic-rating-component\",\n  template: `\n    <div class=\"ionic5-star-rating\">\n      <ion-button\n        size=\"large\"\n        fill=\"clear\"\n        class=\"rate-button\"\n        [ngStyle]=\"{ width: fontSize, height: fontSize }\"\n        *ngFor=\"let index of iconsArray\"\n        id=\"{{ index }}\"\n        (click)=\"changeRating($event)\"\n      >\n        <ion-icon\n          [ngStyle]=\"{\n            color:\n              (halfStar === 'false' &&\n                index < this.Math.round(this.parseFloat(rating))) ||\n              (halfStar === 'true' && index < this.parseFloat(rating))\n                ? activeColor\n                : defaultColor,\n            'font-size': fontSize,\n          }\"\n          name=\"{{\n            halfStar === 'true' && rating - index > 0 && rating - index <= 0.5\n              ? halfIcon\n              : index < this.Math.round(this.parseFloat(rating))\n                ? activeIcon\n                : defaultIcon\n          }}\"\n        ></ion-icon>\n      </ion-button>\n    </div>\n  `,\n  styles: [\n    `\n      .rate-button {\n        --padding-bottom: 0;\n        --padding-end: 0;\n        --padding-start: 0;\n        --padding-top: 0;\n      }\n    `,\n  ],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => IonicRatingComponent),\n      multi: true,\n    },\n  ],\n})\nexport class IonicRatingComponent implements ControlValueAccessor, OnInit {\n  @Input()\n  public set rating(val: number) {\n    this._rating = val;\n    if (this.onChange) {\n      this.onChange(val);\n    }\n  }\n\n  public get rating(): number {\n    return this._rating;\n  }\n\n  constructor(private ionicRatingService: IonicRatingService) {\n    this.Math = Math;\n    this.parseFloat = parseFloat;\n  }\n  private _rating: number;\n  private onChange: any;\n  private onTouched: any;\n  public disabled: boolean;\n  Math: any;\n  parseFloat: any;\n  iconsArray: number[] = [];\n  @Output()\n  ratingChanged: EventEmitter<number> = new EventEmitter<number>();\n  @Input()\n  readonly: string = \"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: string = \"false\";\n  @Input()\n  maxRating: number = 5;\n  @Input()\n  fontSize: string = \"28px\";\n\n  public readonly eventInfo = (() => {\n    const id = new Date().getTime();\n    const topic = `star-rating:${id}:changed`;\n    return {\n      topic,\n    };\n  })();\n\n  ngOnInit(): void {\n    this.rating = this.rating || 3; //default after input`s initialization\n    for (let i = 0; i < this.maxRating; i++) {\n      this.iconsArray.push(i);\n    }\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 ? \"true\" : \"false\";\n  }\n\n  changeRating(event) {\n    if (this.readonly && this.readonly === \"true\") return;\n    // event is different for firefox and chrome\n    let id = event.target.id\n      ? parseInt(event.target.id)\n      : parseInt(event.target.parentElement.id);\n    if (this.halfStar && this.halfStar === \"true\") {\n      this.rating =\n        this.rating - id > 0 && this.rating - id <= 0.5 ? id + 1 : id + 0.5;\n    } else {\n      this.rating = id + 1;\n    }\n    // subscribe this event to get the changed value in your parent compoanent\n    this.ionicRatingService.publishStartRatingChanged(this.rating);\n    this.ionicRatingService.publishTopic(this.eventInfo.topic, this.rating);\n    // unique event\n    this.ratingChanged.emit(this.rating);\n  }\n}\n","import { NgModule } from \"@angular/core\";\nimport { IonicRatingComponent } from \"./ionic-rating.component\";\nimport { CommonModule } from \"@angular/common\";\nimport { IonicModule } from \"@ionic/angular\";\n\n@NgModule({\n  declarations: [IonicRatingComponent],\n  imports: [\n    CommonModule,\n    IonicModule,\n\n    //\n  ],\n  exports: [IonicRatingComponent],\n})\nexport class IonicRatingComponentModule {}\n","/*\n * Public API Surface of ionic-rating\n */\n\nexport * from \"./lib/ionic-rating.service\";\nexport * from \"./lib/ionic-rating.component\";\nexport * from \"./lib/ionic-rating.module\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.IonicRatingService"],"mappings":"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"}