{"version":3,"file":"mayvio-ui-angular-src-slider.mjs","sources":["../../src/slider/slider.component.ts","../../src/slider/mayvio-ui-angular-src-slider.ts"],"sourcesContent":["import { Component, ChangeDetectionStrategy, Input, forwardRef, ViewEncapsulation, ViewChild, ElementRef, HostListener, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { SliderConfig } from 'mayvio-ui/slider';\nimport 'mayvio-ui/slider/css';\n\n@Component({\n  selector: 'mv-slider',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <div \n      [class]=\"'mv-slider-wrapper ' + (disabled ? 'mv-slider-wrapper--disabled ' : '') + className\"\n      (pointerdown)=\"onPointerDown($event)\"\n    >\n      <div class=\"mv-slider-track\" #trackRef>\n        <div class=\"mv-slider-range\" [style.width]=\"percentage + '%'\"></div>\n      </div>\n      <div\n        class=\"mv-slider-thumb\"\n        [style.left]=\"percentage + '%'\"\n        role=\"slider\"\n        [attr.tabindex]=\"disabled ? -1 : 0\"\n        [attr.aria-valuemin]=\"min\"\n        [attr.aria-valuemax]=\"max\"\n        [attr.aria-valuenow]=\"value\"\n        [attr.aria-disabled]=\"disabled\"\n        (keydown)=\"onKeyDown($event)\"\n        (blur)=\"onTouched()\"\n      ></div>\n    </div>\n  `,\n  styleUrls: [],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => SliderComponent),\n      multi: true,\n    },\n  ],\n})\nexport class SliderComponent implements ControlValueAccessor, SliderConfig, OnInit {\n  @Input() value = 0;\n  @Input() min = 0;\n  @Input() max = 100;\n  @Input() step = 1;\n  @Input() disabled = false;\n  @Input() className = '';\n\n  @ViewChild('trackRef') trackRef!: ElementRef<HTMLDivElement>;\n\n  private isDragging = false;\n\n  get percentage() {\n    return ((this.value - this.min) / (this.max - this.min)) * 100;\n  }\n\n  ngOnInit() {\n    this.value = Math.max(this.min, Math.min(this.value, this.max));\n  }\n\n  onChange = (val: number) => {};\n  onTouched = () => {};\n\n  writeValue(value: number): void {\n    if (value !== undefined && value !== null) {\n      this.value = Math.max(this.min, Math.min(value, this.max));\n    }\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState?(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  private updateValue(clientX: number) {\n    if (this.disabled || !this.trackRef) return;\n    const rect = this.trackRef.nativeElement.getBoundingClientRect();\n    const percent = Math.min(Math.max((clientX - rect.left) / rect.width, 0), 1);\n    const rawValue = percent * (this.max - this.min) + this.min;\n    \n    let newValue = Math.round(rawValue / this.step) * this.step;\n    newValue = Math.min(Math.max(newValue, this.min), this.max);\n\n    if (newValue !== this.value) {\n      this.value = newValue;\n      this.onChange(newValue);\n    }\n  }\n\n  onPointerDown(e: PointerEvent) {\n    if (this.disabled) return;\n    this.isDragging = true;\n    const el = e.currentTarget as HTMLElement;\n    el.setPointerCapture(e.pointerId);\n    this.updateValue(e.clientX);\n  }\n\n  @HostListener('pointermove', ['$event'])\n  onPointerMove(e: PointerEvent) {\n    if (!this.isDragging) return;\n    this.updateValue(e.clientX);\n  }\n\n  @HostListener('pointerup', ['$event'])\n  @HostListener('pointercancel', ['$event'])\n  onPointerUp(e: PointerEvent) {\n    if (!this.isDragging) return;\n    this.isDragging = false;\n    const el = e.currentTarget as HTMLElement;\n    if (el && el.releasePointerCapture) {\n      // It might be document, so only call if exists\n      try { el.releasePointerCapture(e.pointerId); } catch(e) {}\n    }\n  }\n\n  onKeyDown(e: KeyboardEvent) {\n    if (this.disabled) return;\n    let newValue = this.value;\n    if (e.key === 'ArrowRight' || e.key === 'ArrowUp') {\n      newValue = Math.min(this.value + this.step, this.max);\n    } else if (e.key === 'ArrowLeft' || e.key === 'ArrowDown') {\n      newValue = Math.max(this.value - this.step, this.min);\n    }\n    \n    if (newValue !== this.value) {\n      this.value = newValue;\n      this.onChange(newValue);\n    }\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}