{"version":3,"file":"obliczeniowo-elementary-slider.mjs","sources":["../../../../projects/components/slider/slider/slider.component.ts","../../../../projects/components/slider/slider/slider.component.html","../../../../projects/components/slider/slider.module.ts","../../../../projects/components/slider/obliczeniowo-elementary-slider.ts"],"sourcesContent":["import { DecimalPipe } from '@angular/common';\r\nimport {\r\n  Component,\r\n  Input,\r\n  Output,\r\n  EventEmitter,\r\n  HostBinding,\r\n  ChangeDetectionStrategy\r\n} from '@angular/core';\r\nimport {\r\n  AbstractControl,\r\n  ControlValueAccessor,\r\n  NG_VALIDATORS,\r\n  NG_VALUE_ACCESSOR,\r\n  ValidationErrors,\r\n} from '@angular/forms';\r\n\r\nimport { ElementaryMath } from '@obliczeniowo/elementary/math';\r\n\r\n@Component({\r\n    selector: 'obl-slider',\r\n    templateUrl: './slider.component.html',\r\n    styleUrls: ['./slider.component.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    providers: [\r\n        {\r\n            provide: NG_VALUE_ACCESSOR,\r\n            multi: true,\r\n            useExisting: SliderComponent\r\n        },\r\n        {\r\n            provide: NG_VALIDATORS,\r\n            multi: true,\r\n            useExisting: SliderComponent\r\n        }\r\n    ],\r\n    standalone: false\r\n})\r\nexport class SliderComponent implements ControlValueAccessor {\r\n  /** */\r\n  @Output() valueChanged: EventEmitter<number> = new EventEmitter<number>();\r\n  /** */\r\n  @Output() mouseDownValue: EventEmitter<number> = new EventEmitter<number>();\r\n  /** */\r\n  @Output() out: EventEmitter<void> = new EventEmitter<void>();\r\n  /** */\r\n  @Output() in: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n  over = false;\r\n  overValue = 0;\r\n  touched = false;\r\n\r\n  @HostBinding('class.disabled') disabled = false;\r\n\r\n  decimalPipe: DecimalPipe = new DecimalPipe('en-US');\r\n\r\n  /** */\r\n  @Input()\r\n  value = 0;\r\n\r\n  /**  */\r\n  @Input()\r\n  max = 100;\r\n\r\n  /** */\r\n  @Input()\r\n  min = 0;\r\n\r\n  /** precision */\r\n  @Input()\r\n  step = 1;\r\n\r\n  @Input() displayValue: boolean = true;\r\n\r\n  @Input() formatter: (value: number, max: number, decimalPipe: DecimalPipe) => string =\r\n    (value: number, max: number, decimalPipe: DecimalPipe): string => {\r\n      return `${decimalPipe.transform(value, '0.0-0')} / ${decimalPipe.transform(max, '0.0-0')}`;\r\n    }\r\n\r\n  onChange = (value: number): void => { };\r\n\r\n  onTouched = (): void => { };\r\n\r\n  validate(control: AbstractControl): ValidationErrors | null {\r\n    return null;\r\n  }\r\n\r\n  registerOnValidatorChange(fn: () => void): void { this.onChange = fn; }\r\n\r\n  writeValue(value: number): void {\r\n    this.value = value;\r\n  }\r\n\r\n  registerOnChange(onChange: any): void {\r\n    this.onChange = onChange;\r\n  }\r\n\r\n  registerOnTouched(onTouched: any): void {\r\n    this.onTouched = onTouched;\r\n  }\r\n\r\n  markAsTouched(): void {\r\n    if (this.disabled) {\r\n      return;\r\n    }\r\n    if (!this.touched) {\r\n      this.onTouched();\r\n      this.touched = true;\r\n    }\r\n  }\r\n\r\n  move(event: any, valueContent: HTMLElement): void {\r\n    if (this.disabled) {\r\n      return;\r\n    }\r\n    const rect = valueContent.getBoundingClientRect();\r\n    this.overValue = (event.pageX - rect.left) / rect.width * (this.max - this.min) + this.min;\r\n  }\r\n\r\n  setValue(emit = true): void {\r\n    if (this.disabled) {\r\n      return;\r\n    }\r\n    this.markAsTouched();\r\n    this.value = ElementaryMath.minmax(Math.round(this.overValue / this.step) * this.step, this.min, this.max);\r\n    if (emit) {\r\n      this.valueChanged.emit(this.value);\r\n    }\r\n    this.onChange(this.value);\r\n  }\r\n\r\n  preSetValue(): void {\r\n    if (this.disabled) {\r\n      return;\r\n    }\r\n    this.mouseDownValue.emit(this.overValue);\r\n  }\r\n\r\n  setDisabledState(disabled: boolean): void {\r\n    this.disabled = disabled;\r\n  }\r\n\r\n  onLeave(): void {\r\n    this.over = false;\r\n    this.out.emit();\r\n  }\r\n\r\n  onOver(): void {\r\n    this.over = !this.disabled;\r\n    this.in.emit();\r\n  }\r\n}\r\n","\r\n@if (displayValue) {\r\n  <div class=\"value\">\r\n    {{ formatter(over ? overValue : value, max, decimalPipe) }}\r\n  </div>\r\n}\r\n\r\n<div\r\n  #valueContent\r\n  class=\"value-container\"\r\n  (mouseover)=\"onOver()\"\r\n  (mouseleave)=\"onLeave()\"\r\n  (mousemove)=\"move($event, valueContent)\"\r\n  (click)=\"setValue()\"\r\n  (mousedown)=\"preSetValue()\"\r\n>\r\n  <div [style.width.%]=\"((value - min) / (max - min)) * 100\"></div>\r\n  @if (over) {\r\n    <div\r\n      class=\"hover-value\"\r\n      [style.width.%]=\"((overValue - min) / (max - min)) * 100\"\r\n    ></div>\r\n  }\r\n</div>\r\n","import { FormsModule } from '@angular/forms';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SliderComponent } from './slider/slider.component';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    SliderComponent\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    FormsModule\r\n  ],\r\n  exports: [\r\n    SliderComponent\r\n  ]\r\n})\r\nexport class SliderModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}