{"version":3,"file":"ngx-stars-rating.mjs","sources":["../../../projects/ngx-stars-rating/src/lib/globals/default-options.ts","../../../projects/ngx-stars-rating/src/lib/ngx-stars-rating.component.ts","../../../projects/ngx-stars-rating/src/lib/ngx-stars-rating.module.ts","../../../projects/ngx-stars-rating/src/public-api.ts","../../../projects/ngx-stars-rating/src/ngx-stars-rating.ts"],"sourcesContent":["import { IRatingOptions } from \"../models\";\n\nexport const DEFAULT_RATING_OPTIONS: IRatingOptions = {\n    starsCount: 5\n}","import { Component, Input, OnInit, Output, TemplateRef, EventEmitter, ViewEncapsulation } from '@angular/core';\n\nimport { DEFAULT_RATING_OPTIONS } from './globals';\nimport { IRatingOptions } from './models';\n\n@Component({\n  selector: 'ngx-stars-rating',\n  template: `\n  <div class=\"rating-wrapper\" (mouseleave)=\"onMouseLeave()\">\n    <div class=\"stars-container\">\n        <span class=\"star-item-wrapper\" *ngFor=\"let item of starItems; let ind=index\" (click)=\"onClickRating(ind)\">\n            <span class=\"star-item\" [class.star-item-hoverable]=\"options.hoverable\" [class.active-star]=\"ind <= activeStarIndex || ind<=hoveringStarIndex\" (mouseenter)=\"onStarHover(ind)\">\n                <ng-container *ngIf=\"!starTemplate;else starTemplateRef\">\n                    &#x2605;\n                </ng-container>\n                <ng-template #starTemplateRef [ngTemplateOutlet]=\"starTemplate\">\n                </ng-template>\n            </span>\n            <span class=\"star-item star-item-fill\" *ngIf=\"halfStarIndex === ind && !isHovering\"\n                [style.width.%]=\"starFillPercentage\">\n                <ng-container *ngIf=\"!starTemplate;else starTemplateRef\">\n                    &#x2605;\n                </ng-container>\n                <ng-template #starTemplateRef [ngTemplateOutlet]=\"starTemplate\">\n                </ng-template>\n            </span>\n        </span>\n    </div>\n  </div>\n  `,\n  styles: [\n    `\n    .rating-wrapper {\n      width: 150px;\n      position: relative;\n      color: transparent;\n    }\n    .rating-wrapper .stars-container {\n      white-space: nowrap;\n      display: flex;\n    }\n    .rating-wrapper .star-item-wrapper {\n      position: relative;\n    }\n    .rating-wrapper .star-item-wrapper .star-item {\n      font-size: 30px;\n      cursor: pointer;\n      white-space: nowrap;\n      overflow: hidden;\n      display: flex;\n      color: #bdbdbd;\n    }\n    .rating-wrapper .star-item-wrapper .star-item-hoverable:hover {\n      color: gold;\n    }\n    .rating-wrapper .star-item-wrapper .star-item-fill {\n      position: absolute;\n      left: 0;\n      right: 0;\n      bottom: 0;\n      top: 0;\n      width: 0;\n      color: gold;\n    }\n    .rating-wrapper .active-star {\n      color: gold !important;\n    }   \n    `\n  ],\n  encapsulation: ViewEncapsulation.None\n})\nexport class NgxStarsRatingComponent implements OnInit {\n  private _options: IRatingOptions;\n  private _rate: number = 0;\n  @Input() set options($event: IRatingOptions) {\n    if (!$event) {\n      return;\n    }\n    this._options = $event;\n  }\n  @Input() set rate($event: number) {\n    this._rate = $event;\n    this._calculateStartIndexes();\n  }\n  @Input() public starTemplate!: TemplateRef<any>;\n  @Output('onRate') private _onRateEvent: EventEmitter<number> = new EventEmitter<number>();\n  public isHovering: boolean = false;\n  public starItems: number[] = [];\n  public activeStarIndex!: number;\n  public halfStarIndex!: number;\n  public starFillPercentage!: number;\n  public hoveringStarIndex!: number;\n\n  get options(): IRatingOptions {\n    return this._options;\n  }\n\n  constructor() {\n    this._options = DEFAULT_RATING_OPTIONS;\n  }\n\n  ngOnInit(): void {\n    this._setStarItems();\n  }\n\n  private _setStarItems(): void {\n    const { starsCount } = this._options;\n    this.starItems = Array.from(Array(starsCount));\n    this._calculateStartIndexes();\n  }\n\n  public onStarHover(starIndex: number): void {\n    if (!this._options.hoverable) {\n      return;\n    }\n    this.hoveringStarIndex = starIndex;\n    this.isHovering = true;\n  }\n\n  public onMouseLeave(): void {\n    if (!this._options.hoverable) {\n      return;\n    }\n    this.hoveringStarIndex = -1;\n    this.isHovering = false;\n  }\n\n  public onClickRating(rateIndex: number): void {\n    if (!this._options.clickable) {\n      return;\n    }\n    const rate: number = rateIndex + 1;\n    this._onRateEvent.emit(rate);\n  }\n\n  private _calculateStartIndexes(): void {\n    this.activeStarIndex = Math.floor(this._rate) - 1;\n    this.halfStarIndex = Math.ceil(this._rate) - 1;\n    this.starFillPercentage = (this._rate - Math.floor(this._rate)) * 100;\n    if (this.starFillPercentage > 100) {\n      this.starFillPercentage = 100;\n    }\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { NgxStarsRatingComponent } from './ngx-stars-rating.component';\n\n\n\n@NgModule({\n  declarations: [\n    NgxStarsRatingComponent\n  ],\n  imports: [\n    CommonModule\n  ],\n  exports: [\n    NgxStarsRatingComponent\n  ]\n})\nexport class NgxStarsRatingModule { }\n","/*\n * Public API Surface of ngx-stars-rating\n */\n\nexport * from './lib/ngx-stars-rating.component';\nexport * from './lib/ngx-stars-rating.module';\nexport * from './lib/models/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}