{"version":3,"file":"ng-rating-bar.mjs","sources":["../../../projects/ng-rating-bar/src/lib/ng-rating-bar.component.ts","../../../projects/ng-rating-bar/src/lib/ng-rating-bar.module.ts","../../../projects/ng-rating-bar/src/public-api.ts","../../../projects/ng-rating-bar/src/ng-rating-bar.ts"],"sourcesContent":["import {\n  Component,\n  OnInit,\n  Input,\n  Output,\n  EventEmitter,\n  OnChanges,\n  SimpleChanges\n} from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\ninterface Styles {\n  fontSize?: string;\n  backgroundColor?: string;\n  margin?: string;\n  padding?: string;\n}\n\n@Component({\n  selector: 'ng-rating-bar',\n  template: `\n  <ng-container *ngFor=\"let item of numbers; let i = index\">\n    <span\n      class=\"star\"\n      (mouseenter)=\"enter(i)\"\n      (mouseleave)=\"leave(i)\"\n      (click)=\"setSelected(i)\"\n      [ngStyle]=\"{'color': (i <= hoverIndex) ? colorActive : colorDefault}\"\n      [style.fontSize]=\"styles.fontSize\"\n      [style.backgroundColor]=\"styles.backgroundColor\"\n      [style.marginRight]=\"styles.margin\"\n      [style.padding]=\"styles.padding\"\n    >\n    <span [innerHTML]=\"symbol\"></span>\n    <span\n      class=\"star half\"\n      *ngIf=\"!isHovered && i == halfIndex\"\n      [style.width.%]=\"halfValue\"\n      [style.color]=\"colorActive\"\n      [innerHTML]=\"symbol\"\n      [style.padding]=\"styles.padding\"\n    >\n  </span>\n</span>\n</ng-container>\n  `,\n  styles: [\n    `\n   .star {\n    position: relative;\n  }\n  .star:not(.half) {\n    min-height: 20px;\n    min-width: 20px;\n    cursor: pointer;\n    display: inline-block;\n  }\n\n  .star.active {\n    color: inherit;\n  }\n\n  .star.half {\n      height: inherit;\n      font-size: inherit;\n      cursor: pointer;\n      position: absolute;\n      left: 0;\n      top: 0;\n      display: inline-block;\n      overflow: hidden;\n\n  }\n\n  `]\n})\nexport class NgRatingBarComponent implements OnInit, OnChanges {\n  @Input() ratingCount: number = 7;\n  @Input() colorActive: string = '#edb867';\n  @Input() colorDefault: string = '#d2d2d2';\n  @Input() disabled = false;\n  @Input() resetAble = false;\n\n  @Input() control?: FormControl<number | null>;\n\n  @Input() styles: Styles = {\n    fontSize: '28px',\n    backgroundColor: '',\n    margin: '5px',\n    padding: '0'\n  };;\n\n  @Input() value: number = 5;\n  @Output() valueChange: EventEmitter<number> = new EventEmitter<number>();\n  @Output() hoverChange: EventEmitter<number> = new EventEmitter<number>();\n  @Input() symbol = '&#9733;';\n\n  numbers: Array<number> = [];\n  hoverIndex = -1;\n  selectedValue = 0;\n  halfValue = 0;\n  halfIndex = -1;\n  isHovered = false;\n  constructor() {}\n\n  ngOnInit() {\n    this.ratingCount = this.ratingCount || 5;\n    this.colorActive = this.colorActive || '#edb867';\n    this.colorDefault = this.colorDefault || '#d2d2d2';\n\n\n    if (!this.styles) {\n      this.styles = {\n        fontSize: '28px',\n        backgroundColor: '',\n        margin: '5px',\n        padding: '0'\n      };\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes['value'] || this.control) {\n      this.initNumbers();\n      this.calculateHalfValue();\n    }\n  }\n\n  initNumbers() {\n    this.numbers = Array(this.ratingCount)\n      .fill(0)\n      .map((x, i) => i);\n    if (this.control) {\n      this.selectedValue = this.control.value || 0;\n    } else {\n      this.selectedValue = this.value;\n    }\n\n    this.hoverIndex = this.selectedValue - 1;\n  }\n\n  enter(i: number) {\n    if (this.disabled) {\n      return;\n    }\n    this.isHovered = true;\n    this.hoverIndex = i;\n    this.hoverChange.emit(1 + i);\n\n\n  }\n  leave(i: number) {\n    if (this.disabled) {\n      return;\n    }\n    this.isHovered = false;\n    this.hoverIndex = this.selectedValue - 1;\n  }\n\n  setSelected(i: number) {\n    if (this.disabled) {\n      return;\n    }\n\n    // set/unset  selected value on same value click\n    if (this.resetAble && this.selectedValue === i + 1) {\n      this.selectedValue = 0;\n    } else {\n      this.selectedValue = i + 1;\n    }\n\n    if (this.control) {\n      this.control.setValue(this.selectedValue || null);\n      this.control.markAsTouched();\n    } else {\n      this.valueChange.emit(this.selectedValue);\n    }\n    this.isHovered = false;\n    this.calculateHalfValue();\n  }\n\n  calculateHalfValue() {\n    this.halfValue = Math.round(100 * (this.selectedValue - Math.floor(this.selectedValue)) );\n    this.halfIndex = Math.ceil(this.selectedValue) - 1;\n  }\n\n}\n","import { NgModule } from '@angular/core';\nimport { NgRatingBarComponent } from './ng-rating-bar.component';\nimport { CommonModule } from '@angular/common';\n\n\n@NgModule({\n  declarations: [\n    NgRatingBarComponent\n  ],\n  imports: [\n    CommonModule\n  ],\n  exports: [\n    NgRatingBarComponent\n  ]\n})\nexport class NgRatingBarModule { }\n","/*\n * Public API Surface of ng-rating-bar\n */\n\nexport * from './lib/ng-rating-bar.component';\nexport * from './lib/ng-rating-bar.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}