UNPKG

20.5 kBSource Map (JSON)View Raw
1{"version":3,"file":"bmat-angular-forms-bm-slider.js","sources":["ng://@bmat/angular/forms/bm-slider/lib/bm-slider-tooltip.directive.ts","ng://@bmat/angular/forms/bm-slider/lib/drag-observable.ts","ng://@bmat/angular/forms/bm-slider/lib/mouseover-relative-coordinates-observable.ts","ng://@bmat/angular/forms/bm-slider/lib/bm-slider.component.ts","ng://@bmat/angular/forms/bm-slider/lib/bm-slider.component.module.ts"],"sourcesContent":["import { Directive, TemplateRef } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport interface BMSliderTooltipContext {\n $implicit: number;\n min: number;\n max: number;\n isDragging: Observable<boolean>;\n}\n\n@Directive({\n selector: '[bmSliderValueTooltip]',\n})\n/**\n * Directive to draw a tooltip to the progress bar\n */\nexport class BMSliderValueTooltipDirective {\n constructor(public templateRef: TemplateRef<BMSliderTooltipContext>) {}\n}\n","import { fromEvent, Observable } from 'rxjs';\nimport { map, takeUntil } from 'rxjs/operators';\n\n/**\n * Observable Drag. Return relative position without the first\n * container, or body, with position non static.\n */\nexport function dragObservable(\n mousedownEvent: MouseEvent,\n doc: Document = document,\n): Observable<number> {\n let container = mousedownEvent.target as HTMLElement;\n while (\n container.tagName !== 'BODY' &&\n getComputedStyle(container).getPropertyValue('position') !== 'static'\n ) {\n container = container.parentElement as HTMLElement;\n }\n\n const { left, width } = container.getBoundingClientRect();\n const offsetX = mousedownEvent.offsetX;\n const mouseup = fromEvent<MouseEvent>(doc, 'mouseup');\n const mousemove = fromEvent<MouseEvent>(doc, 'mousemove');\n\n return mousemove.pipe(\n map(mousemoveEvent => {\n mousemoveEvent.preventDefault();\n return Math.min(\n 1,\n Math.max(0, (mousemoveEvent.clientX - offsetX - left) / width),\n );\n }),\n takeUntil(mouseup),\n );\n}\n","import { fromEvent, Observable } from 'rxjs';\nimport { map, startWith, takeUntil } from 'rxjs/operators';\n\n/**\n * Observable Drag. Return relative position without the first\n * container, or body, with position non static.\n */\nexport function mouseoverRelativeCoordinatesObservable(\n mouseenterEvent: MouseEvent,\n doc: Document = document,\n): Observable<number> {\n mouseenterEvent.preventDefault();\n let container = mouseenterEvent.target as HTMLElement;\n while (\n container.tagName !== 'BODY' &&\n getComputedStyle(container).getPropertyValue('position') !== 'static'\n ) {\n container = container.parentElement as HTMLElement;\n }\n\n const { left, width } = container.getBoundingClientRect();\n const mouseleave = fromEvent<MouseEvent>(container, 'mouseleave');\n const mousemove = fromEvent<MouseEvent>(doc, 'mousemove');\n\n return mousemove.pipe(\n map(mousemoveEvent => {\n mousemoveEvent.preventDefault();\n return Math.min(1, Math.max(0, (mousemoveEvent.clientX - left) / width));\n }),\n takeUntil(mouseleave),\n startWith(\n Math.min(1, Math.max(0, (mouseenterEvent.clientX - left) / width)),\n ),\n );\n}\n","import { Directionality } from '@angular/cdk/bidi';\nimport {\n DOWN_ARROW,\n LEFT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n UP_ARROW,\n} from '@angular/cdk/keycodes';\nimport { DOCUMENT } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { debounceTime, share } from 'rxjs/operators';\n\nimport { dragObservable } from './drag-observable';\nimport { mouseoverRelativeCoordinatesObservable } from './mouseover-relative-coordinates-observable';\n\n@Component({\n selector: 'bm-slider',\n templateUrl: 'bm-slider.component.html',\n styleUrls: ['bm-slider.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n/**\n * Media progress slider\n */\nexport class BMSliderComponent implements ControlValueAccessor {\n @HostBinding('attr.aria-valuemax')\n @Input()\n public max!: number;\n\n @HostBinding('attr.aria-valuenow')\n @Input()\n public set value(v: number) {\n this._value = v;\n }\n\n public get value() {\n return this._value;\n }\n\n @HostBinding('attr.aria-valuemin')\n @Input()\n public min = 0;\n\n @HostBinding('attr.tabindex')\n @Input()\n public tabindex = 0;\n\n @Input()\n @HostBinding('attr.aria-disabled')\n @HostBinding('class.bm-slider--disabled')\n public disabled!: boolean;\n\n @HostBinding('attr.role') public role = 'slider';\n\n @Output() public change = new EventEmitter<number>();\n @Output() public dragStart = new EventEmitter<void>();\n @Output() public dragEnd = new EventEmitter<void>();\n\n public pointerTime!: number;\n\n @ViewChild('doneBar', { read: ElementRef, static: true })\n private _doneBar!: ElementRef<HTMLElement>;\n @ViewChild('previewBar', { read: ElementRef, static: false })\n private _previewBar!: ElementRef<HTMLElement>;\n\n private _isDragging = false;\n private _isOver = false;\n private _value!: number;\n private _onChangeCB!: (_: number) => void;\n private _onTouchedCB!: () => void;\n\n constructor(\n public _elementRef: ElementRef<HTMLElement>,\n // tslint:disable-next-line:no-any\n @Inject(DOCUMENT) private _document: any,\n private _cdr: ChangeDetectorRef,\n private _dir: Directionality,\n ) {}\n\n public writeValue(v: number) {\n this.value = v;\n }\n\n public registerOnChange(fn: (_: number) => void) {\n this._onChangeCB = fn;\n }\n\n public registerOnTouched(fn: () => void) {\n this._onTouchedCB = fn;\n }\n\n public setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n @HostListener('mouseenter', ['$event'])\n public onMouseenter($event: MouseEvent) {\n if (this.disabled) {\n return;\n }\n\n this._isOver = true;\n\n mouseoverRelativeCoordinatesObservable($event, this._document).subscribe({\n next: val => {\n this.pointerTime = val * (this.max || 0);\n const overTime = Math.max(\n 0,\n this.getRelativeLeft(this.pointerTime) -\n this.getRelativeLeft(this.value),\n );\n if (\n overTime > 0 &&\n this._previewBar &&\n this._previewBar.nativeElement\n ) {\n const relativeLeft = this.getRelativeLeft(this.value);\n\n this._previewBar.nativeElement.style.left = `${relativeLeft}px`;\n this._previewBar.nativeElement.style.width = `${overTime}px`;\n }\n this._cdr.markForCheck();\n },\n error: () => {\n this._isOver = false;\n },\n complete: () => {\n this._isOver = false;\n this._cdr.markForCheck();\n },\n });\n }\n\n @HostListener('click', ['$event'])\n public onClick(e: MouseEvent) {\n if (!this._isDragging) {\n e.preventDefault();\n const { offsetX } = e;\n const { width } = this._elementRef.nativeElement.getBoundingClientRect();\n const percent = offsetX / width;\n\n this.value = percent * (this.max || 0);\n\n this.change.emit(this.value);\n }\n }\n\n @HostListener('focusin')\n public onFocusin() {\n if (this._onTouchedCB) {\n this._onTouchedCB();\n }\n }\n\n // tslint:disable-next-line:cyclomatic-complexity\n @HostListener('keydown', ['$event'])\n public onKeydown(e: KeyboardEvent) {\n if (this.disabled) {\n return;\n }\n\n let emitChanges = false;\n if (this.max) {\n const smallStep = (this.max || 1) / 100;\n switch (e.keyCode) {\n case PAGE_DOWN: {\n e.preventDefault();\n this._value = Math.max(0, this._value - 10 * smallStep);\n emitChanges = true;\n break;\n }\n case PAGE_UP: {\n e.preventDefault();\n this._value = Math.min(this.max, this._value + 10 * smallStep);\n emitChanges = true;\n break;\n }\n\n case DOWN_ARROW: {\n e.preventDefault();\n this._value = Math.max(0, this._value - smallStep);\n emitChanges = true;\n break;\n }\n case UP_ARROW: {\n e.preventDefault();\n this._value = Math.min(this.max, this._value + smallStep);\n emitChanges = true;\n break;\n }\n\n case LEFT_ARROW: {\n e.preventDefault();\n this._value = Math.min(\n Math.max(\n 0,\n this._value +\n (this._dir.value === 'ltr' ? -smallStep : smallStep),\n ),\n this.max,\n );\n emitChanges = true;\n break;\n }\n\n case RIGHT_ARROW: {\n e.preventDefault();\n this._value = Math.min(\n Math.max(\n 0,\n this._value +\n (this._dir.value === 'ltr' ? smallStep : -smallStep),\n ),\n this.max,\n );\n emitChanges = true;\n break;\n }\n default:\n }\n }\n\n if (emitChanges) {\n if (this._onChangeCB) {\n this._onChangeCB(this.value);\n }\n\n this.change.emit(this.value);\n }\n }\n\n public getRelativeLeft(value: number) {\n if (this._elementRef.nativeElement && value && this.max) {\n const { width } = this._elementRef.nativeElement.getBoundingClientRect();\n const relative = value / (this.max - this.min);\n return relative * width;\n }\n return 0;\n }\n\n public showThumb() {\n return this._isDragging || this._isOver;\n }\n\n public showPreviewBar() {\n return this._isOver && !this._isDragging;\n }\n\n public onThumbMousedown($event: MouseEvent) {\n if (this.disabled) {\n return;\n }\n\n this._cdr.detach();\n this._isDragging = true;\n\n if (this._onTouchedCB) {\n this._onTouchedCB();\n }\n\n this.dragStart.emit();\n\n const dragObservable$ = dragObservable($event, this._document).pipe(\n share(),\n );\n\n // The two observables with different throttles target components\n // that should update at different rates. The bounced targets the\n // the time tooltip, while the non bounced targets the dragged thumb\n // and bars.\n dragObservable$\n .pipe(debounceTime(15))\n .subscribe(() => this._cdr.detectChanges());\n\n dragObservable$.subscribe({\n next: val => {\n this._value = val * (this.max || 0);\n const relativeLeft = this.getRelativeLeft(this.value);\n ($event.target as HTMLElement).style.left = `${relativeLeft}px`;\n if (this._doneBar && this._doneBar.nativeElement) {\n this._doneBar.nativeElement.style.width = `${relativeLeft}px`;\n }\n\n if (this._onChangeCB) {\n this._onChangeCB(Math.min(Math.max(this.min, this.value), this.max));\n }\n\n this.change.emit(this.value);\n },\n error: () => {\n this._cdr.reattach();\n },\n complete: () => {\n this._cdr.reattach();\n this.dragEnd.emit();\n\n setTimeout(() => {\n this._isDragging = false;\n }, 10);\n },\n });\n }\n}\n","import { BidiModule } from '@angular/cdk/bidi';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { BMSliderValueTooltipDirective } from './bm-slider-tooltip.directive';\nimport { BMSliderComponent } from './bm-slider.component';\n\n@NgModule({\n imports: [BidiModule, CommonModule, OverlayModule],\n declarations: [BMSliderValueTooltipDirective, BMSliderComponent],\n exports: [BMSliderComponent, BMSliderValueTooltipDirective],\n})\n/**\n * Slider component module\n */\nexport class BMSliderComponentModule {}\n"],"names":[],"mappings":"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"}
\No newline at end of file