UNPKG

primeng

Version:

PrimeNG is a premium UI library for Angular featuring a rich set of 90+ components, a theme designer, various theme alternatives such as Material, Bootstrap, Tailwind, premium templates and professional support. In addition, it integrates with PrimeBlock,

1 lines 47.8 kB
{"version":3,"file":"primeng-slider.mjs","sources":["../../src/slider/style/sliderstyle.ts","../../src/slider/slider.ts","../../src/slider/primeng-slider.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { style } from '@primeuix/styles/slider';\nimport { BaseStyle } from 'primeng/base';\n\nconst inlineStyles = {\n root: () => ({\n display: 'flex',\n position: 'relative',\n 'touch-action': 'none'\n }),\n track: () => ({\n display: 'block',\n 'flex-grow': 1,\n position: 'relative'\n }),\n range: ({ instance }) => {\n if (instance.range()) {\n const vals = instance.values() ?? [0, 0];\n const startPercent = instance.getValuePercent(Math.min(vals[0], vals[1]));\n const endPercent = instance.getValuePercent(Math.max(vals[0], vals[1]));\n const sizePercent = Math.max(endPercent - startPercent, 0);\n\n if (instance.isHorizontal()) {\n return { position: 'absolute', 'inset-inline-start': startPercent + '%', width: sizePercent + '%' };\n } else {\n return { position: 'absolute', bottom: startPercent + '%', height: sizePercent + '%' };\n }\n } else {\n const percent = instance.getValuePercent(instance.value() ?? 0);\n if (instance.isHorizontal()) {\n return { position: 'absolute', width: percent + '%' };\n } else {\n return { position: 'absolute', bottom: '0', height: percent + '%' };\n }\n }\n },\n handle: ({ instance, index }) => {\n const i = index ?? 0;\n const handleValue = instance.getHandleValue(i);\n const percent = instance.getValuePercent(handleValue);\n const disabled = instance.isHandleDisabled(i);\n const base = disabled ? { cursor: 'default', 'pointer-events': 'none' } : {};\n\n if (instance.isHorizontal()) {\n return { ...base, position: 'absolute', 'inset-inline-start': percent + '%', translate: '-50% 0' };\n } else {\n return { ...base, position: 'absolute', bottom: percent + '%', translate: '0 50%' };\n }\n },\n startHandler: ({ instance }) => {\n const handleValue = instance.getHandleValue(0);\n const percent = instance.getValuePercent(handleValue);\n const disabled = instance.isHandleDisabled(0);\n const base = disabled ? { cursor: 'default', 'pointer-events': 'none' } : {};\n\n if (instance.isHorizontal()) {\n return { ...base, position: 'absolute', 'inset-inline-start': percent + '%', translate: '-50% 0' };\n } else {\n return { ...base, position: 'absolute', bottom: percent + '%', translate: '0 50%' };\n }\n },\n endHandler: ({ instance }) => {\n const handleValue = instance.getHandleValue(1);\n const percent = instance.getValuePercent(handleValue);\n const disabled = instance.isHandleDisabled(1);\n const base = disabled ? { cursor: 'default', 'pointer-events': 'none' } : {};\n\n if (instance.isHorizontal()) {\n return { ...base, position: 'absolute', 'inset-inline-start': percent + '%', translate: '-50% 0' };\n } else {\n return { ...base, position: 'absolute', bottom: percent + '%', translate: '0 50%' };\n }\n }\n};\n\nconst classes = {\n root: ({ instance }) => [\n 'p-slider p-component',\n {\n 'p-disabled': instance.$disabled(),\n 'p-slider-horizontal': instance.isHorizontal(),\n 'p-slider-vertical': instance.isVertical()\n }\n ],\n track: 'p-slider-track',\n range: 'p-slider-range',\n handle: 'p-slider-handle',\n input: 'p-slider-input'\n};\n\n@Injectable()\nexport class SliderStyle extends BaseStyle {\n name = 'slider';\n\n style = style;\n\n classes = classes;\n\n inlineStyles = inlineStyles;\n}\n\n/**\n *\n * Slider is a component to provide input with a drag handle.\n *\n * [Live Demo](https://www.primeng.org/slider/)\n *\n * @module sliderstyle\n *\n */\nexport enum SliderClasses {\n /**\n * Class name of the root element\n */\n root = 'p-slider',\n /**\n * Class name of the track element\n */\n track = 'p-slider-track',\n /**\n * Class name of the range element\n */\n range = 'p-slider-range',\n /**\n * Class name of the handle element\n */\n handle = 'p-slider-handle',\n /**\n * Class name of the hidden input element\n */\n input = 'p-slider-input'\n}\n\nexport interface SliderStyle extends BaseStyle {}\n","import { booleanAttribute, ChangeDetectionStrategy, Component, computed, forwardRef, inject, input, NgModule, numberAttribute, output, Provider, signal, ViewEncapsulation } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { isRTL } from '@primeuix/utils';\nimport { SharedModule } from 'primeng/api';\nimport { AutoFocus } from 'primeng/autofocus';\nimport { PARENT_INSTANCE } from 'primeng/basecomponent';\nimport { BaseEditableHolder } from 'primeng/baseeditableholder';\nimport { Bind, BindModule } from 'primeng/bind';\nimport type { SliderChangeEvent, SliderOrientation, SliderPassThrough, SliderSlideEndEvent } from 'primeng/types/slider';\nimport { SliderStyle } from './style/sliderstyle';\n\nexport const SLIDER_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Slider),\n multi: true\n};\n/**\n * Slider is a component to provide input by dragging a handle along a track.\n * @group Components\n */\n@Component({\n selector: 'p-slider',\n standalone: true,\n imports: [AutoFocus, SharedModule, BindModule],\n template: `\n <div [class]=\"cx('track')\" [pBind]=\"ptm('track')\" [style]=\"sx('track')\">\n <span [class]=\"cx('range')\" [style]=\"sx('range')\" [pBind]=\"ptm('range')\"></span>\n </div>\n @if (!range()) {\n <span [class]=\"cx('handle')\" [style]=\"sx('handle', true, { index: 0 })\" (pointerdown)=\"onHandlePointerDown($event, 0)\" [attr.data-index]=\"0\" [attr.data-disabled]=\"getDataDisabled(0)\" [pBind]=\"ptm('handle')\">\n <input\n type=\"range\"\n [class]=\"cx('input')\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"$step()\"\n [value]=\"getHandleValue(0)\"\n [disabled]=\"isHandleDisabled(0)\"\n [attr.aria-valuemin]=\"min()\"\n [attr.aria-valuemax]=\"max()\"\n [attr.aria-valuenow]=\"getHandleValue(0)\"\n [attr.aria-orientation]=\"orientation()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledBy()\"\n [attr.tabindex]=\"getHandleTabindex(0)\"\n [pAutoFocus]=\"autofocus()\"\n (input)=\"onInputChange($event, 0)\"\n (change)=\"onInputChange($event, 0)\"\n (focus)=\"onInputFocus($event, 0)\"\n (blur)=\"onInputBlur($event, 0)\"\n (keydown)=\"onKeyDown($event, 0)\"\n [pBind]=\"ptm('input')\"\n />\n </span>\n }\n @if (range()) {\n <span [class]=\"cx('handle', { index: 0 })\" [style]=\"sx('startHandler')\" (pointerdown)=\"onHandlePointerDown($event, 0)\" [attr.data-index]=\"0\" [attr.data-disabled]=\"getDataDisabled(0)\" [pBind]=\"ptm('startHandler')\">\n <input\n type=\"range\"\n [class]=\"cx('input')\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"$step()\"\n [value]=\"getHandleValue(0)\"\n [disabled]=\"isHandleDisabled(0)\"\n [attr.aria-valuemin]=\"min()\"\n [attr.aria-valuemax]=\"max()\"\n [attr.aria-valuenow]=\"getHandleValue(0)\"\n [attr.aria-orientation]=\"orientation()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledBy()\"\n [attr.tabindex]=\"getHandleTabindex(0)\"\n [pAutoFocus]=\"autofocus()\"\n (input)=\"onInputChange($event, 0)\"\n (change)=\"onInputChange($event, 0)\"\n (focus)=\"onInputFocus($event, 0)\"\n (blur)=\"onInputBlur($event, 0)\"\n (keydown)=\"onKeyDown($event, 0)\"\n [pBind]=\"ptm('input')\"\n />\n </span>\n <span [class]=\"cx('handle', { index: 1 })\" [style]=\"sx('endHandler')\" (pointerdown)=\"onHandlePointerDown($event, 1)\" [attr.data-index]=\"1\" [attr.data-disabled]=\"getDataDisabled(1)\" [pBind]=\"ptm('endHandler')\">\n <input\n type=\"range\"\n [class]=\"cx('input')\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"$step()\"\n [value]=\"getHandleValue(1)\"\n [disabled]=\"isHandleDisabled(1)\"\n [attr.aria-valuemin]=\"min()\"\n [attr.aria-valuemax]=\"max()\"\n [attr.aria-valuenow]=\"getHandleValue(1)\"\n [attr.aria-orientation]=\"orientation()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledBy()\"\n [attr.tabindex]=\"getHandleTabindex(1)\"\n (input)=\"onInputChange($event, 1)\"\n (change)=\"onInputChange($event, 1)\"\n (focus)=\"onInputFocus($event, 1)\"\n (blur)=\"onInputBlur($event, 1)\"\n (keydown)=\"onKeyDown($event, 1)\"\n [pBind]=\"ptm('input')\"\n />\n </span>\n }\n `,\n providers: [SLIDER_VALUE_ACCESSOR, SliderStyle, { provide: PARENT_INSTANCE, useExisting: Slider }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': \"cx('root')\",\n '[style]': \"sx('root')\",\n '[attr.data-orientation]': 'orientation()',\n '[attr.data-dragging]': 'dataDragging()',\n '(pointerdown)': 'onTrackPointerDown($event)',\n '(pointermove)': 'onTrackPointerMove($event)',\n '(pointerup)': 'onTrackPointerUp($event)'\n },\n hostDirectives: [Bind]\n})\nexport class Slider extends BaseEditableHolder<SliderPassThrough> {\n componentName = 'Slider';\n\n bindDirectiveInstance = inject(Bind, { self: true });\n\n _componentStyle = inject(SliderStyle);\n\n /**\n * When enabled, displays an animation on click of the slider bar.\n * @group Props\n * @deprecated This property is no longer functional.\n */\n animate = input(undefined, { transform: booleanAttribute });\n /**\n * Mininum boundary value.\n * @group Props\n */\n min = input(0, { transform: numberAttribute });\n /**\n * Maximum boundary value.\n * @group Props\n */\n max = input(100, { transform: numberAttribute });\n /**\n * Orientation of the slider.\n * @group Props\n */\n orientation = input<SliderOrientation>('horizontal');\n /**\n * Step factor to increment/decrement the value.\n * @group Props\n */\n step = input(undefined, { transform: numberAttribute });\n /**\n * When specified, allows two boundary values to be picked.\n * @group Props\n */\n range = input(undefined, { transform: booleanAttribute });\n /**\n * Minimum number of steps between handles in range mode.\n * @group Props\n */\n minStepsBetweenHandles = input(0, { transform: numberAttribute });\n /**\n * Disables the minimum (start) handle in range mode.\n * @type boolean\n * @defaultValue false\n * @group Props\n */\n disabledMinHandle = input(false, { transform: booleanAttribute });\n /**\n * Disables the maximum (end) handle in range mode.\n * @type boolean\n * @defaultValue false\n * @group Props\n */\n disabledMaxHandle = input(false, { transform: booleanAttribute });\n /**\n * Defines a string that labels the input for accessibility.\n * @group Props\n */\n ariaLabel = input<string>();\n /**\n * Establishes relationships between the component and label(s) where its value should be one or more element IDs.\n * @group Props\n */\n ariaLabelledBy = input<string>();\n /**\n * Index of the element in tabbing order.\n * @group Props\n */\n tabindex = input(0, { transform: numberAttribute });\n /**\n * When present, it specifies that the component should automatically get focus on load.\n * @group Props\n */\n autofocus = input(false, { transform: booleanAttribute });\n /**\n * Callback to invoke on value change.\n * @param {SliderChangeEvent} event - Custom value change event.\n * @group Emits\n */\n onChange = output<SliderChangeEvent>();\n /**\n * Callback to invoke when slide ended.\n * @param {SliderSlideEndEvent} event - Custom slide end event.\n * @group Emits\n */\n onSlideEnd = output<SliderSlideEndEvent>();\n\n onAfterViewChecked() {\n this.bindDirectiveInstance.setAttrs(this.ptms(['host', 'root']));\n }\n\n value = signal<number | null>(null);\n\n values = signal<number[] | null>(null);\n\n isDragging = signal<boolean>(false);\n\n dragging = computed(() => this.isDragging());\n\n dataDragging = computed(() => (this.isDragging() ? '' : null));\n\n activeIndex: number = 0;\n\n get handleIndex(): number {\n return this.activeIndex;\n }\n\n private focusedIndex: number | null = null;\n\n private isHandlePointerDown: boolean = false;\n\n private dragOffsetPx: number = 0;\n\n isHorizontal = computed(() => this.orientation() === 'horizontal');\n\n isVertical = computed(() => this.orientation() === 'vertical');\n\n $step = computed(() => this.step() || 1);\n\n $tabindex = computed(() => (this.$disabled() ? -1 : this.tabindex()));\n\n isHandleDisabled(index: number): boolean {\n return this.$disabled() || (index === 0 && this.disabledMinHandle()) || (index === 1 && this.disabledMaxHandle());\n }\n\n getDataDisabled(index: number): '' | null {\n return this.isHandleDisabled(index) ? '' : null;\n }\n\n getHandleTabindex(index: number): number {\n return this.isHandleDisabled(index) ? -1 : this.$tabindex();\n }\n\n dataP = computed(() =>\n this.cn({\n [this.orientation() as string]: this.orientation()\n })\n );\n\n private clamp(value: number, minVal: number, maxVal: number): number {\n return Math.min(Math.max(value, minVal), maxVal);\n }\n\n private getPrecision(stepValue: number): number {\n const stepString = stepValue.toString();\n if (stepString.includes('e-')) {\n return Number(stepString.split('e-')[1] || 0);\n }\n const dotIndex = stepString.indexOf('.');\n return dotIndex >= 0 ? stepString.length - dotIndex - 1 : 0;\n }\n\n private roundToStep(value: number, stepValue: number, minValue: number): number {\n if (!stepValue) return value;\n const precision = this.getPrecision(stepValue);\n const rounded = Math.round((value - minValue) / stepValue) * stepValue + minValue;\n return Number(rounded.toFixed(precision));\n }\n\n private normalizeValue(value: number): number {\n const s = this.step() || 1;\n return this.clamp(this.roundToStep(value, s, this.min()), this.min(), this.max());\n }\n\n getValuePercent(value: number): number {\n const rangeValue = this.max() - this.min();\n if (!rangeValue) return 0;\n return this.clamp(((value - this.min()) / rangeValue) * 100, 0, 100);\n }\n\n getHandleValue(index: number): number {\n const values = this.getValues();\n return values[index] ?? this.min();\n }\n\n private getValues(): number[] {\n if (this.range()) {\n const vals = this.values() ?? [this.min(), this.min()];\n return vals.map((v) => this.normalizeValue(v));\n } else {\n return [this.normalizeValue(this.value() ?? this.min())];\n }\n }\n\n private getValueFromPointer(event: PointerEvent, offsetPx: number = 0): number {\n const rect = this.el.nativeElement.getBoundingClientRect();\n const size = this.isHorizontal() ? rect.width : rect.height;\n if (!size) return this.min();\n\n const pointerPosition = this.isHorizontal() ? event.clientX - rect.left : event.clientY - rect.top;\n const position = (pointerPosition - offsetPx) / size;\n const clampedPosition = this.clamp(position, 0, 1);\n const isRtl = this.isHorizontal() && isRTL(this.el.nativeElement);\n const orientedPosition = this.isHorizontal() ? (isRtl ? 1 - clampedPosition : clampedPosition) : 1 - clampedPosition;\n const value = this.min() + orientedPosition * (this.max() - this.min());\n\n return this.normalizeValue(value);\n }\n\n private getClosestValueIndex(values: number[], nextValue: number, event?: PointerEvent): number {\n const enabledIndices = values.map((_, i) => i).filter((i) => !this.isHandleDisabled(i));\n if (!enabledIndices.length) return -1;\n\n let closestIndex = enabledIndices[0];\n let smallestDistance = Math.abs(values[closestIndex] - nextValue);\n const pointerAxis = event ? (this.isHorizontal() ? event.clientX : event.clientY) : null;\n\n for (const i of enabledIndices.slice(1)) {\n const distance = Math.abs(values[i] - nextValue);\n if (distance < smallestDistance) {\n closestIndex = i;\n smallestDistance = distance;\n } else if (distance === smallestDistance && pointerAxis !== null) {\n const closestEl = this.getHandleElement(closestIndex);\n const candidateEl = this.getHandleElement(i);\n if (closestEl && candidateEl) {\n const closestRect = closestEl.getBoundingClientRect();\n const candidateRect = candidateEl.getBoundingClientRect();\n const closestCenter = this.isHorizontal() ? closestRect.left + closestRect.width / 2 : closestRect.top + closestRect.height / 2;\n const candidateCenter = this.isHorizontal() ? candidateRect.left + candidateRect.width / 2 : candidateRect.top + candidateRect.height / 2;\n\n if (closestCenter === candidateCenter) {\n closestIndex = pointerAxis < closestCenter ? Math.min(closestIndex, i) : Math.max(closestIndex, i);\n } else {\n const closestDelta = Math.abs(pointerAxis - closestCenter);\n const candidateDelta = Math.abs(pointerAxis - candidateCenter);\n if (candidateDelta < closestDelta) {\n closestIndex = i;\n }\n }\n }\n }\n }\n\n return closestIndex;\n }\n\n private getHandleElement(index: number): HTMLElement | null {\n return this.el.nativeElement.querySelector(`[data-index=\"${index}\"]`) as HTMLElement | null;\n }\n\n private updateValueAt(index: number, nextValue: number, event: Event): void {\n const values = this.getValues();\n const clampedValue = this.clamp(this.normalizeValue(nextValue), this.min(), this.max());\n\n if (this.range()) {\n const minDistance = Math.max(this.minStepsBetweenHandles() * (this.step() || 1), 0);\n const minBound = index > 0 ? values[index - 1] + minDistance : this.min();\n const maxBound = index < values.length - 1 ? values[index + 1] - minDistance : this.max();\n const lowerBound = Math.min(minBound, maxBound);\n const upperBound = Math.max(minBound, maxBound);\n const boundedValue = this.clamp(clampedValue, lowerBound, upperBound);\n\n const newVals = [...values];\n newVals[index] = boundedValue;\n this.values.set(newVals);\n this.onModelChange(newVals);\n this.onChange.emit({ event, values: newVals });\n } else {\n this.value.set(clampedValue);\n this.onModelChange(clampedValue);\n this.onChange.emit({ event, value: clampedValue });\n }\n }\n\n private updateValueFromPointer(event: PointerEvent): void {\n const nextValue = this.getValueFromPointer(event, this.dragOffsetPx);\n const values = this.getValues();\n\n if (this.range()) {\n const closestIndex = this.getClosestValueIndex(values, nextValue, event);\n if (closestIndex === -1) return;\n this.activeIndex = closestIndex;\n this.dragOffsetPx = 0;\n this.updateValueAt(this.activeIndex, nextValue, event);\n } else {\n if (this.isHandleDisabled(0)) return;\n this.activeIndex = 0;\n this.dragOffsetPx = 0;\n this.updateValueAt(0, nextValue, event);\n }\n }\n\n // --- Pointer event handlers ---\n\n onTrackPointerDown(event: PointerEvent) {\n if (this.$disabled()) return;\n if (event.pointerType === 'mouse' && event.button !== 0) return;\n\n event.preventDefault();\n (event.currentTarget as HTMLElement).setPointerCapture(event.pointerId);\n this.isDragging.set(true);\n\n if (this.isHandlePointerDown) {\n this.isHandlePointerDown = false;\n return;\n }\n\n this.dragOffsetPx = 0;\n this.updateValueFromPointer(event);\n }\n\n onTrackPointerMove(event: PointerEvent) {\n if (this.$disabled()) return;\n if (!this.isDragging()) return;\n if (this.isHandleDisabled(this.activeIndex)) return;\n\n event.preventDefault();\n this.updateValueAt(this.activeIndex, this.getValueFromPointer(event, this.dragOffsetPx), event);\n }\n\n onTrackPointerUp(event: PointerEvent) {\n if (this.$disabled()) return;\n\n event.preventDefault();\n (event.currentTarget as HTMLElement).releasePointerCapture(event.pointerId);\n this.isDragging.set(false);\n this.isHandlePointerDown = false;\n this.dragOffsetPx = 0;\n\n if (this.range()) {\n this.onSlideEnd.emit({ originalEvent: event, values: this.values() as number[] });\n } else {\n this.onSlideEnd.emit({ originalEvent: event, value: this.value() as number });\n }\n }\n\n onHandlePointerDown(event: PointerEvent, index: number) {\n if (this.$disabled()) return;\n if (event.pointerType === 'mouse' && event.button !== 0) return;\n\n event.preventDefault();\n\n const handle = this.getHandleElement(index);\n if (handle) {\n const handleRect = handle.getBoundingClientRect();\n const handleCenter = this.isHorizontal() ? handleRect.left + handleRect.width / 2 : handleRect.top + handleRect.height / 2;\n const pointerAxis = this.isHorizontal() ? event.clientX : event.clientY;\n this.dragOffsetPx = pointerAxis - handleCenter;\n } else {\n this.dragOffsetPx = 0;\n }\n\n this.activeIndex = index;\n this.isHandlePointerDown = true;\n }\n\n // --- Input event handlers ---\n\n onInputChange(event: Event, index: number) {\n if (this.isHandleDisabled(index)) return;\n this.activeIndex = index;\n const nextValue = Number((event.target as HTMLInputElement).value);\n this.updateValueAt(index, nextValue, event);\n\n if (this.range()) {\n this.onSlideEnd.emit({ originalEvent: event, values: this.values() as number[] });\n } else {\n this.onSlideEnd.emit({ originalEvent: event, value: this.value() as number });\n }\n }\n\n onInputFocus(_event: FocusEvent, index: number) {\n if (this.isHandleDisabled(index)) return;\n this.focusedIndex = index;\n this.activeIndex = index;\n }\n\n onInputBlur(event: FocusEvent, index: number) {\n if (this.isHandleDisabled(index)) return;\n this.activeIndex = index;\n if (this.focusedIndex === index) {\n this.focusedIndex = null;\n }\n\n if (this.range()) {\n this.onSlideEnd.emit({ originalEvent: event, values: this.values() as number[] });\n } else {\n this.onSlideEnd.emit({ originalEvent: event, value: this.value() as number });\n }\n this.onModelTouched();\n }\n\n // --- Keyboard ---\n\n onKeyDown(event: KeyboardEvent, index: number) {\n if (this.isHandleDisabled(index)) return;\n this.activeIndex = index;\n const s = this.step() || 1;\n\n switch (event.code) {\n case 'ArrowDown':\n case 'ArrowLeft':\n this.decrementValue(event, index, s);\n event.preventDefault();\n break;\n\n case 'ArrowUp':\n case 'ArrowRight':\n this.incrementValue(event, index, s);\n event.preventDefault();\n break;\n\n case 'PageDown':\n this.decrementValue(event, index, s * 10);\n event.preventDefault();\n break;\n\n case 'PageUp':\n this.incrementValue(event, index, s * 10);\n event.preventDefault();\n break;\n\n case 'Home':\n this.updateValueAt(index, this.min(), event);\n event.preventDefault();\n break;\n\n case 'End':\n this.updateValueAt(index, this.max(), event);\n event.preventDefault();\n break;\n\n default:\n break;\n }\n }\n\n private decrementValue(event: KeyboardEvent, index: number, amount: number) {\n const currentVal = this.getHandleValue(index);\n this.updateValueAt(index, currentVal - amount, event);\n }\n\n private incrementValue(event: KeyboardEvent, index: number, amount: number) {\n const currentVal = this.getHandleValue(index);\n this.updateValueAt(index, currentVal + amount, event);\n }\n\n /**\n * @override\n *\n * @see {@link BaseEditableHolder.writeControlValue}\n */\n writeControlValue(value: any) {\n if (this.range()) this.values.set(value || [0, 0]);\n else this.value.set(value || 0);\n }\n}\n\n@NgModule({\n imports: [Slider, SharedModule],\n exports: [Slider, SharedModule]\n})\nexport class SliderModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}