{"version":3,"file":"ngx-stars.mjs","sources":["../../../projects/ngx-stars/src/lib/ngx-stars.component.ts","../../../projects/ngx-stars/src/lib/ngx-stars.component.html","../../../projects/ngx-stars/src/lib/ngx-stars.module.ts","../../../projects/ngx-stars/src/public_api.ts","../../../projects/ngx-stars/src/ngx-stars.ts"],"sourcesContent":["import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\n\n@Component({\n  selector: 'ngx-stars',\n  templateUrl: './ngx-stars.component.html',\n  styleUrls: [ './ngx-stars.component.css' ],\n})\nexport class NgxStarsComponent implements OnInit, OnDestroy {\n\n  @Input()\n  maxStars: number = 5;\n\n  @Input()\n  initialStars: number = 0;\n\n  @Input()\n  readonly: boolean;\n\n  @Input()\n  size: number;\n\n  @Input()\n  customSize: string;\n\n  @Input()\n  color: string;\n\n  @Input()\n  animation: boolean;\n\n  @Input()\n  animationSpeed: number = 100;\n\n  @Input()\n  customPadding: string;\n\n  @Input()\n  wholeStars: boolean = false;\n\n  @Input()\n  customStarIcons: { empty: string, half: string, full: string };\n\n  @Input()\n  rtl: boolean = false;\n\n  @Output()\n  ratingOutput: EventEmitter<number> = new EventEmitter();\n\n  rating: number;\n  editableStars: EditableStar[];\n  animationInterval: any;\n  animationRunning: boolean;\n\n  private customCssClasses: HTMLStyleElement[];\n  private customClassIdentifier = Math.random().toString(36).substring(2);\n\n  ngOnInit(): void {\n    this.setupStarImages();\n    this.editableStars = Array.from(new Array(this.maxStars)).map((elem, index) => new EditableStar(index));\n    if (this.rtl) {\n      this.editableStars = this.editableStars.reverse();\n    }\n    this.setRating(this.initialStars);\n\n    if (this.animation) {\n      this.animationInterval = setInterval(this.starAnimation.bind(this), this.animationSpeed);\n    }\n  }\n\n  ngOnDestroy(): void {\n    // remove the three custom classes we created if custom image urls were provided\n    if (this.customCssClasses) {\n      this.customCssClasses.forEach(style => {\n        if (style && style.parentNode) {\n          style.parentNode.removeChild(style);\n        }\n      });\n    }\n  }\n\n  private setupStarImages() {\n    if (this.customStarIcons) {\n      this.customCssClasses = [];\n      Object.keys(this.customStarIcons).map(key => key as StarType).forEach(starType => {\n        const classname = this.getStarClass(starType);\n        this.createCssClass(classname, starType);\n      });\n    }\n  }\n\n  private createCssClass(classname: string, starType: StarType) {\n    const clazz = document.createElement('style');\n    clazz.type = 'text/css';\n    clazz.innerHTML = `.${classname} {\n      -webkit-mask-image: url(${this.customStarIcons[starType]});\n      mask-image: url(${this.customStarIcons[starType]});\n    }`;\n    document.getElementsByTagName('head')[0].appendChild(clazz);\n    this.customCssClasses.push(clazz);\n  }\n\n  starPadding(): { [p: string]: string } {\n    return { 'margin-right': this.customPadding || `calc(${this.starSize().width} / 10)` };\n  }\n\n  starColorAndSize(): { [p: string]: string } {\n    return Object.assign({}, this.starColor(), this.starSize());\n  }\n\n  private starColor(): { [p: string]: string } {\n    return { 'background-color': this.color || 'crimson' };\n  }\n\n  starSize(): { [p: string]: string } {\n    return {\n      height: this.customSize || `${15 * this.safeSize()}px`,\n      width: this.customSize || `${16 * this.safeSize()}px`,\n    };\n  }\n\n  zeroStarLeft(): string {\n    if (this.rtl) {\n      const width = this.starSize()['width'];\n      return `calc(${width} * ${this.maxStars})`;\n    }\n    return '-16px';\n  }\n\n  private safeSize = () => (Number.isInteger(this.size) && this.size > 0 && this.size < 6) ? this.size : 1;\n\n  starAnimation(): void {\n    this.animationRunning = true;\n    if (this.rating < this.maxStars) {\n      this.setRating(this.rating += 0.5);\n    }\n    else {\n      this.setRating(0);\n    }\n  }\n\n  cancelStarAnimation(): void {\n    if (this.animationRunning) {\n      clearInterval(this.animationInterval);\n      this.rating = 0;\n      this.animationRunning = false;\n    }\n  }\n\n  setRating(rating: number) {\n    this.rating = Math.round(rating * 2) / 2;\n    this.onStarsUnhover();\n  }\n\n  onStarHover(event: MouseEvent, clickedStar: EditableStar): void {\n    this.cancelStarAnimation();\n\n    const clickedInFirstHalf = this.clickedInFirstHalf(event);\n\n    // fill in either a half or whole star depending on where user clicked\n    clickedStar.classname = (!this.wholeStars && clickedInFirstHalf) ? this.getStarClass('half') : this.getStarClass('full');\n\n    // fill in all stars in previous positions and clear all in later ones\n    this.editableStars.forEach(star => {\n      if (star.position > clickedStar.position) {\n        star.classname = this.getStarClass('empty');\n      }\n      else if (star.position < clickedStar.position) {\n        star.classname = this.getStarClass('full');\n      }\n    });\n  }\n\n  onStarClick(event: MouseEvent, clickedStar: EditableStar): void {\n    this.cancelStarAnimation();\n\n    // lock in current rating\n    const clickedInFirstHalf = this.clickedInFirstHalf(event);\n    this.rating = clickedStar.position + ((!this.wholeStars && clickedInFirstHalf) ? 0.5 : 1);\n    this.ratingOutput.emit(this.rating);\n  }\n\n  // hidden star to left of first star lets user click there to set to 0\n  onZeroStarClick(): void {\n    this.setRating(0);\n    this.ratingOutput.emit(this.rating);\n  }\n\n  onZeroStarHover(): void {\n    // clear all stars\n    this.editableStars.forEach(star => star.classname = this.getStarClass('empty'));\n  }\n\n  onStarsUnhover() {\n    // when user stops hovering we want to make stars reflect the last rating applied by clicking\n    this.editableStars.forEach(star => {\n      const starNumber = star.position + 1;\n      if (this.rating >= starNumber) {\n        star.classname = this.getStarClass('full');\n      }\n      else if (this.rating > starNumber - 1 && this.rating < starNumber) {\n        star.classname = this.getStarClass('half');\n      }\n      else {\n        star.classname = this.getStarClass('empty');\n      }\n    });\n  }\n\n  private clickedInFirstHalf(event: MouseEvent): boolean {\n    const starIcon = event.target as HTMLElement;\n    if (this.rtl) {\n      return event.pageX > starIcon.getBoundingClientRect().right - starIcon.offsetWidth / 2;\n    }\n    else {\n      return event.pageX < starIcon.getBoundingClientRect().left + starIcon.offsetWidth / 2;\n    }\n  }\n\n  noop(): void {}\n\n  private getStarClass(starType: StarType) {\n    if (this.customCssClasses) {\n      return `ngx-stars-star-${starType}-${this.customClassIdentifier}`;\n    }\n    return `star-${starType}`;\n  }\n\n  // this and the aria-labels and role in the html inspired by https://stackoverflow.com/q/55966205\n  getAriaLabel(): string {\n    return `Rating: ${this.rating} out of ${this.maxStars} stars ${this.readonly ? '' : '. Can be edited.'}`;\n  }\n}\n\nexport type StarType = 'empty' | 'half' | 'full';\n\nexport class EditableStar {\n  position: number;\n  classname: string;\n\n  constructor(position: number) {\n    this.position = position;\n  }\n}\n","<div class=\"stars-line\" (mouseleave)=\"readonly ? noop() : onStarsUnhover()\" role=\"img\" [attr.aria-label]=\"getAriaLabel()\">\n  <span class=\"star zero-star\" [ngStyle]=\"starSize()\" [style.left]=\"zeroStarLeft()\" aria-hidden=\"true\" (click)=\"readonly ? noop() : onZeroStarClick()\" (mousemove)=\"readonly ? noop() : onZeroStarHover()\"></span>\n  <div *ngFor=\"let star of editableStars;\" [ngStyle]=\"starPadding()\" aria-hidden=\"true\" (click)=\"readonly ? noop() : onStarClick($event, star)\" (mousemove)=\"readonly ? noop() : onStarHover($event, star)\">\n    <span class=\"star\" [class.star-rtl]=\"rtl\" [ngClass]=\"star.classname\" [ngStyle]=\"starColorAndSize()\" aria-hidden=\"true\"></span>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { NgxStarsComponent } from './ngx-stars.component';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n  imports: [\n    CommonModule\n  ],\n  declarations: [\n    NgxStarsComponent\n  ],\n  exports: [\n    NgxStarsComponent\n  ]\n})\nexport class NgxStarsModule { }\n","/*\n * Public API Surface of ngx-stars\n */\n\nexport * from './lib/ngx-stars.component';\nexport * from './lib/ngx-stars.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}