{"version":3,"file":"guajiritos-rating.mjs","sources":["../../../projects/guachos-rating/src/lib/guajiritos-rating.component.ts","../../../projects/guachos-rating/src/lib/guajiritos-rating.component.html","../../../projects/guachos-rating/src/public-api.ts","../../../projects/guachos-rating/src/guajiritos-rating.ts"],"sourcesContent":["import { Component, forwardRef, Input, signal, WritableSignal } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CommonModule } from '@angular/common';\nimport { ThemePalette } from '@angular/material/core';\n\nexport interface GuajiritosRatingConfig {\n  stars: number;\n  color?: ThemePalette;\n  size?: string;\n  label?: string;\n  readOnly?: boolean;\n  showNumber?: boolean;\n  showClearBtn?: boolean;\n}\n\n@Component({\n    selector: 'guajiritos-rating',\n    templateUrl: './guajiritos-rating.component.html',\n    styleUrls: ['./guajiritos-rating.component.scss'],\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => GuajiritosRating),\n            multi: true\n        }\n    ],\n    imports: [\n        CommonModule,\n        MatIconModule,\n        MatTooltipModule\n    ]\n})\nexport class GuajiritosRating implements ControlValueAccessor {\n  public rating: WritableSignal<number> = signal(0.0);\n  public _config: WritableSignal<GuajiritosRatingConfig> = signal({\n    size: '1rem',\n    color: 'accent',\n    showNumber: false,\n    readOnly: false,\n    label: '',\n    showClearBtn: false,\n    stars: 5\n  });\n  public arrayFill: WritableSignal<number[]> = signal([]);\n\n  @Input() set value(value: number) {\n    if (value) {\n      this.rating.set(value);\n    }\n  }\n\n  @Input({ required: true }) set config(value: Partial<GuajiritosRatingConfig>) {\n    this.processConfig(value);\n  }\n\n  private processConfig(value: Partial<GuajiritosRatingConfig>): void {\n    this._config.set({\n      ...this._config(),\n      ...value\n    });\n\n    const stars: number = this._config()?.stars;\n    if (stars) {\n      this.arrayFill.set(Array.from({ length: stars }, (_, index: number) => index + 1));\n    }\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  propagateChange = (fn: any) => {\n  };\n\n  registerOnChange(fn: (_: any) => void): void {\n    this.propagateChange = fn;\n  }\n\n  registerOnTouched(): void {\n  }\n\n  writeValue(value: any): void {\n    if (value !== undefined && value !== '') {\n      this.rating.set(value);\n    }\n  }\n\n  public onMark(item: number): void {\n    if (this._config()?.readOnly) {\n      return;\n    }\n\n    if (item !== this.rating()) {\n      this.rating.set(+item);\n    } else {\n      this.rating.set(this.rating() - 0.5);\n    }\n\n    this.propagateChange(this.rating());\n  }\n\n  public onClear(): void {\n    if (this._config()?.readOnly) {\n      return;\n    }\n    this.rating.set(0.0);\n\n    this.propagateChange(this.rating());\n  }\n}\n","<div class=\"container-stars\">\n  @if (_config().showClearBtn) {\n    <mat-icon (click)=\"onClear()\" class=\"clear-btn\"\n              [ngStyle]=\"{'width': _config()?.size,'height': _config()?.size,'font-size': _config()?.size,'cursor':(!_config()?.readOnly) ? 'pointer' : 'initial'}\">\n      cancel\n    </mat-icon>\n  }\n\n  @for (item of arrayFill(); track item) {\n    <mat-icon (click)=\"onMark(item)\" class=\"icon-star\" [matTooltip]=\"item +' '+ _config()?.label\"\n              [ngClass]=\"{'star-empty':!(rating() < item && rating()> (item-1)) && (rating() < item), 'primary': _config()?.color === 'primary', 'accent': _config()?.color === 'accent', 'warn': _config()?.color === 'warn'}\"\n              [ngStyle]=\"{'width': _config().size,'height': _config().size,'font-size':_config().size,'cursor':(!_config().readOnly)?'pointer':'initial'}\">\n      @if (rating() >= item) {\n        star\n      }\n      @if ((rating() < item && rating() > (item - 1))) {\n        star_half\n      } @else {\n        @if (rating() < item) {\n          star_border\n        }\n      }\n    </mat-icon>\n  }\n\n  @if (_config()?.showNumber) {\n    &nbsp;<span style=\"transform: scale(0.8);\" [ngStyle]=\"{'fontSize':_config()?.size}\">{{ rating() }}</span>\n  }\n</div>\n","/*\n * Public API Surface of guachos-rating\n */\n\nexport * from './lib/guajiritos-rating.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;MAkCa,gBAAgB,CAAA;AAjB7B,IAAA,WAAA,GAAA;AAkBS,QAAA,IAAA,CAAA,MAAM,GAA2B,MAAM,CAAC,GAAG,kDAAC;QAC5C,IAAA,CAAA,OAAO,GAA2C,MAAM,CAAC;AAC9D,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,KAAK,EAAE;AACR,SAAA,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AACK,QAAA,IAAA,CAAA,SAAS,GAA6B,MAAM,CAAC,EAAE,qDAAC;;AAyBvD,QAAA,IAAA,CAAA,eAAe,GAAG,CAAC,EAAO,KAAI;AAC9B,QAAA,CAAC;AAqCF,IAAA;IA7DC,IAAa,KAAK,CAAC,KAAa,EAAA;QAC9B,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QACxB;IACF;IAEA,IAA+B,MAAM,CAAC,KAAsC,EAAA;AAC1E,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;IAC3B;AAEQ,IAAA,aAAa,CAAC,KAAsC,EAAA;AAC1D,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;YACf,GAAG,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,GAAG;AACJ,SAAA,CAAC;QAEF,MAAM,KAAK,GAAW,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK;QAC3C,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAa,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC;QACpF;IACF;AAMA,IAAA,gBAAgB,CAAC,EAAoB,EAAA;AACnC,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;IAC3B;IAEA,iBAAiB,GAAA;IACjB;AAEA,IAAA,UAAU,CAAC,KAAU,EAAA;QACnB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE;AACvC,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QACxB;IACF;AAEO,IAAA,MAAM,CAAC,IAAY,EAAA;AACxB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE;YAC5B;QACF;AAEA,QAAA,IAAI,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE,EAAE;YAC1B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACxB;aAAO;AACL,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC;QACtC;QAEA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;IACrC;IAEO,OAAO,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE;YAC5B;QACF;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;QAEpB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;IACrC;8GAzEW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAbd;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,gBAAgB,CAAC;AAC/C,gBAAA,KAAK,EAAE;AACV;AACJ,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3BL,6vCA6BA,EAAA,MAAA,EAAA,CAAA,4VAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDAQ,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,aAAa,mLACb,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGX,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAjB5B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAAA,SAAA,EAGlB;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,sBAAsB,CAAC;AAC/C,4BAAA,KAAK,EAAE;AACV;qBACJ,EAAA,OAAA,EACQ;wBACL,YAAY;wBACZ,aAAa;wBACb;AACH,qBAAA,EAAA,QAAA,EAAA,6vCAAA,EAAA,MAAA,EAAA,CAAA,4VAAA,CAAA,EAAA;8BAeU,KAAK,EAAA,CAAA;sBAAjB;gBAM8B,MAAM,EAAA,CAAA;sBAApC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;;AErD3B;;AAEG;;ACFH;;AAEG;;;;"}