@alyle/ui
Version:
Minimal Design, a set of components for Angular
1 lines • 91.2 kB
Source Map (JSON)
{"version":3,"file":"alyle-ui-slider.mjs","sources":["../../../lib/slider/tokens.ts","../../../lib/slider/util.ts","../../../lib/slider/tick.ts","../../../lib/slider/mark.ts","../../../lib/slider/mark.html","../../../lib/slider/slider.ts","../../../lib/slider/slider.html","../../../lib/slider/slider.module.ts","../../../lib/slider/alyle-ui-slider.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\n/**\n * Used to provide a slider to some of the sub-components without causing a circular dependency.\n * @docs-private\n */\nexport const LY_SLIDER = new InjectionToken<any>('LY_SLIDER');\n","export function гbetween(x: number, min: number, max: number) {\n return x >= min && x <= max;\n}\n\nexport function гvalueToPercent(value: number, min: number, max: number) {\n return ((value - min) * 100) / (max - min);\n}\n","import { Directive, Renderer2, ElementRef, Input, OnInit, OnDestroy, OnChanges, Inject } from '@angular/core';\nimport { гbetween, гvalueToPercent } from './util';\nimport { untilComponentDestroyed } from '@alyle/ui';\nimport { LY_SLIDER } from './tokens';\n\n@Directive({\n selector: 'ly-tick',\n standalone: false\n})\nexport class LyTick implements OnChanges, OnInit, OnDestroy {\n /** @docs-private */\n readonly classes = this._slider.classes;\n\n private _tickActiveClass?: string | null;\n\n @Input() value: number;\n\n constructor(\n private _renderer: Renderer2,\n private _el: ElementRef,\n @Inject(LY_SLIDER) public _slider?: any,\n ) { }\n\n ngOnChanges() {\n this._updateTick();\n }\n\n ngOnInit() {\n this._renderer.addClass(this._getHostElement(), this.classes.tick);\n this._slider._changes.pipe(\n untilComponentDestroyed(this)\n ).subscribe(() => {\n this._updateTick();\n });\n }\n\n private _updateTick() {\n const min = this._slider._minPercent;\n const max = this._slider._maxPercent;\n\n const className = this._slider.classes.tickActive;\n const percent = гvalueToPercent(this.value, this._slider.min, this._slider.max);\n const pos = this._slider._calculatePosition(percent);\n\n if (гbetween(percent, min, max)) {\n this._tickActiveClass = className;\n this._renderer.addClass(this._el.nativeElement, className);\n } else if (this._tickActiveClass) {\n this._tickActiveClass = null;\n this._renderer.removeClass(this._el.nativeElement, className);\n }\n\n this._renderer.setStyle(this._getHostElement(), 'bottom', null);\n this._renderer.setStyle(this._getHostElement(), 'left', null);\n this._renderer.setStyle(this._getHostElement(), 'right', null);\n this._renderer.setStyle(this._getHostElement(), pos.style, pos.value);\n }\n\n ngOnDestroy() { }\n\n _getHostElement() {\n return this._el.nativeElement;\n }\n\n}\n","import { untilComponentDestroyed } from '@alyle/ui';\nimport { Component, Input, Renderer2, ElementRef, ChangeDetectionStrategy, ViewChild, OnInit, OnDestroy, Inject } from '@angular/core';\nimport { гvalueToPercent, гbetween } from './util';\nimport { LyTick } from './tick';\nimport { LY_SLIDER } from './tokens';\n\n@Component({\n selector: 'ly-mark',\n templateUrl: 'mark.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class LyMark implements OnInit, OnDestroy {\n /** @docs-private */\n readonly classes = this._slider.classes;\n\n private _markActiveClass?: string | null;\n\n @ViewChild(LyTick, { static: true}) _tick: LyTick;\n\n @Input() value: number;\n\n constructor(\n private _renderer: Renderer2,\n private _el: ElementRef,\n @Inject(LY_SLIDER) public _slider?: any,\n ) {\n _renderer.addClass(_el.nativeElement, _slider.classes.mark);\n }\n\n ngOnInit() {\n this._renderer.insertBefore(this._slider._wrapper.nativeElement, this._tick._getHostElement(), this._slider._ticksRef.nativeElement);\n this._slider._changes.pipe(untilComponentDestroyed(this)).subscribe(() => {\n this._updateMark();\n });\n this._updateMark();\n }\n\n private _updateMark() {\n const min = this._slider._minPercent;\n const max = this._slider._maxPercent;\n\n const className = this._slider.classes.markActive;\n const percent = гvalueToPercent(this.value, this._slider.min, this._slider.max);\n const pos = this._slider._calculatePosition(percent);\n\n if (гbetween(percent, min, max)) {\n this._markActiveClass = className;\n this._renderer.addClass(this._el.nativeElement, className);\n } else if (this._markActiveClass) {\n this._markActiveClass = null;\n this._renderer.removeClass(this._el.nativeElement, className);\n }\n\n this._renderer.setStyle(this._getHostElement(), 'bottom', null);\n this._renderer.setStyle(this._getHostElement(), 'left', null);\n this._renderer.setStyle(this._getHostElement(), 'right', null);\n this._renderer.setStyle(this._getHostElement(), pos.style, pos.value);\n\n }\n\n ngOnDestroy() { }\n\n private _getHostElement() {\n return this._el.nativeElement;\n }\n}\n\n","<ly-tick [value]=\"value\"></ly-tick>\n<ng-content></ng-content>","import {\n Component,\n ChangeDetectionStrategy,\n ElementRef,\n Renderer2,\n Input,\n OnInit,\n forwardRef,\n ChangeDetectorRef,\n Output,\n EventEmitter,\n ViewChild,\n OnChanges,\n OnDestroy,\n QueryList,\n ViewChildren,\n InjectionToken,\n Inject,\n Optional,\n NgZone,\n AfterViewInit} from '@angular/core';\nimport {\n LyTheme2,\n ThemeVariables,\n LY_COMMON_STYLES,\n untilComponentDestroyed,\n Dir,\n StyleCollection,\n LyClasses,\n StyleTemplate,\n st2c,\n ThemeRef,\n StyleRenderer,\n Style } from '@alyle/ui';\nimport { Color } from '@alyle/ui/color';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { normalizePassiveListenerOptions } from '@angular/cdk/platform';\nimport { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { DOCUMENT } from '@angular/common';\nimport { DOWN_ARROW, END, hasModifierKey, HOME, LEFT_ARROW, PAGE_DOWN, PAGE_UP, RIGHT_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport { LY_SLIDER } from './tokens';\nimport { гvalueToPercent } from './util';\nimport { coerceBooleanProperty, BooleanInput, coerceNumberProperty, NumberInput } from '@angular/cdk/coercion';\n\nconst activeEventOptions = normalizePassiveListenerOptions({passive: false});\n\nexport interface LySliderTheme {\n /** Styles for Slider Component */\n root?: StyleCollection<((classes: LyClasses<typeof STYLES>) => StyleTemplate)>\n | ((classes: LyClasses<typeof STYLES>) => StyleTemplate);\n /**\n * Disabled state\n * @param classes Classes\n * @param color color slider (deprecated)\n */\n disabled?: StyleCollection<((classes: LyClasses<typeof STYLES>, color: Color) => StyleTemplate)>\n | ((classes: LyClasses<typeof STYLES>, color: Color) => StyleTemplate);\n color?: StyleCollection<((classes: LyClasses<typeof STYLES>, color: Color, contrast: Color) => StyleTemplate)>\n | ((classes: LyClasses<typeof STYLES>, color: Color, contrast: Color) => StyleTemplate);\n appearance?: {\n standard?: StyleCollection<((classes: LyClasses<typeof STYLES>) => StyleTemplate)>\n | ((classes: LyClasses<typeof STYLES>) => StyleTemplate);\n md?: StyleCollection<((classes: LyClasses<typeof STYLES>) => StyleTemplate)>\n | ((classes: LyClasses<typeof STYLES>) => StyleTemplate);\n [key: string]: StyleCollection<((classes: LyClasses<typeof STYLES>) => StyleTemplate)>\n | ((classes: LyClasses<typeof STYLES>) => StyleTemplate) | undefined;\n };\n size?: {\n small?: StyleCollection<((classes: LyClasses<typeof STYLES>) => StyleTemplate)>\n | ((classes: LyClasses<typeof STYLES>) => StyleTemplate);\n medium?: StyleCollection<((classes: LyClasses<typeof STYLES>) => StyleTemplate)>\n | ((classes: LyClasses<typeof STYLES>) => StyleTemplate);\n [key: string]: StyleCollection<((classes: LyClasses<typeof STYLES>) => StyleTemplate)>\n | ((classes: LyClasses<typeof STYLES>) => StyleTemplate) | undefined;\n };\n}\n\nexport interface LySliderDefaultOptions {\n appearance?: string;\n}\n\nexport const LY_SLIDER_DEFAULT_OPTIONS =\n new InjectionToken<LySliderDefaultOptions>('LY_SLIDER_DEFAULT_OPTIONS');\n\nexport interface LySliderVariables {\n slider?: LySliderTheme;\n}\n\nexport const LY_SLIDER_CONTROL_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => LySlider),\n multi: true\n};\n\nconst STYLE_PRIORITY = -2;\nexport const STYLES = (theme: ThemeVariables & LySliderVariables, ref: ThemeRef) => {\n const __ = ref.selectorsOf(STYLES);\n const { before, after } = theme;\n const isRTL = theme.isRTL();\n return {\n $priority: STYLE_PRIORITY,\n root: () => (_className: string) => `${_className}{display:inline-block;position:relative;box-sizing:border-box;}${st2c((LY_COMMON_STYLES.fill), `${_className} ${__.bg}`)}${_className} ${__.bg}{margin:auto;}${_className}${__.sliding}{cursor:-webkit-grabbing;cursor:grabbing;}${_className}${__.sliding} ${__.thumb},${_className}${__.sliding} ${__.thumbLabel}{cursor:-webkit-grabbing;cursor:grabbing;}${st2c((\n (theme.slider\n && theme.slider.root\n && (theme.slider.root instanceof StyleCollection\n ? theme.slider.root.setTransformer(fn => fn(__)).css\n : theme.slider.root(__))\n )), `${_className}`)}`,\n\n wrapper: (_className: string) => `${_className}{-webkit-print-color-adjust:exact;color-adjust:exact;position:absolute;}`,\n\n track: () => (_className: string) => `${_className}{position:absolute;margin:auto;}${__.horizontal} ${_className}{transform-origin:${ isRTL ? 100 : 0}% 0;}${__.vertical} ${_className}{transform-origin:${ isRTL ? 100 : 0}% 100%;}`,\n bg: null,\n thumbContainer: (_className: string) => `${_className}{width:0;height:0;position:absolute;margin:auto;}`,\n thumbContent: (_className: string) => `${_className}{display:flex;justify-content:center;align-items:center;}`,\n thumb: (_className: string) => `${_className}{position:absolute;width:16px;height:16px;border-radius:50%;outline:0;cursor:-webkit-grab;cursor:grab;transition:${['border-radius', 'transform'].map(prop => `${prop} ${\n theme.animations.durations.exiting\n }ms ${theme.animations.curves.standard} 0ms`).join()};}${_className}::before{content:'';}${st2c((LY_COMMON_STYLES.fill), `${_className}::before`)}${_className}::before{border-radius:50%;transition:${['box-shadow'].map(prop => `${prop} ${\n theme.animations.durations.entering\n }ms ${theme.animations.curves.sharp} 0ms`).join()};}`,\n thumbLabel: (_className: string) => `${_className}{position:absolute;font-size:12px;width:28px;height:28px;border-radius:50%;top:-14px;${before}:-14px;cursor:-webkit-grab;cursor:grab;transition:${[\n 'transform',\n 'top',\n 'left',\n 'right',\n 'border-radius'\n ].map(prop => `${prop} 150ms ${theme.animations.curves.standard} 0ms`).join()};}`,\n thumbLabelValue: (_className: string) => `${_className}{display:flex;height:100%;width:100%;align-items:center;justify-content:center;}`,\n\n horizontal: () => (_className: string) => `${_className}{width:128px;height:48px;padding:8px;touch-action:pan-y !important;}${_className} ${__.wrapper}{top:23px;left:8px;right:8px;}${_className} ${__.track},${_className} ${__.bg},${_className} ${__.track}{height:inherit;}${_className} ${__.track},${_className} ${__.bg}{width:100%;}${_className} ${__.track}{${before}:0;top:0;bottom:0;}${_className} ${__.thumbContainer}{top:0;bottom:0;}${_className} ${__.tick}{width:2px;top:0;bottom:0;transform:translate(-1px,0%);}${_className} ${__.mark}{top:22px;transform:translateX(${theme.direction === Dir.ltr ? '-' : ''}50%);}${_className}${__.marked}{margin-bottom:24px;}`,\n vertical: () => (_className: string) => `${_className}{width:48px;height:128px;padding:8px;touch-action:pan-x !important;}${_className} ${__.wrapper}{${before}:23px;top:8px;bottom:8px;}${_className} ${__.track},${_className} ${__.bg},${_className} ${__.track}{width:inherit;}${_className} ${__.track},${_className} ${__.bg}{height:100%;}${_className} ${__.track}{bottom:0;${before}:-1px;${after}:0;}${_className} ${__.thumbContainer}{left:0;right:0;}${_className} ${__.tick}{width:inherit;height:2px;left:0;right:0;}${_className} ${__.mark}{${before}:22px;transform:translateY(50%);}${_className}${__.marked}{${theme.direction === Dir.ltr ? 'margin-right' : 'margin-left'}:24px;}`,\n\n marked: null,\n mark: (_className: string) => `${_className}{position:absolute;white-space:nowrap;font-size:14px;color:${theme.text.secondary};}`,\n markActive: (_className: string) => `${_className}{color:currentColor;}`,\n tick: (_className: string) => `${_className}{position:absolute;margin:auto;}`,\n tickActive: null,\n\n thumbVisible: null,\n thumbNotVisible: null,\n thumbContentFocused: null,\n sliding: null,\n disabled: (_className: string) => `${_className}{cursor:default;}`\n };\n};\n/** A change event emitted by the LySlider component. */\nexport class LySliderChange {\n\n constructor(\n /** The LySlider that changed. */\n public source: LySlider,\n /** The new value of the source slider. */\n public value: number | (number | null)[] | null,\n ) { }\n}\n\ninterface Thumb {\n value: number;\n displayValue: string | number | null;\n percent: number | null;\n styles: { [key: string]: string };\n focused?: boolean;\n sliding?: boolean;\n index: number;\n}\n\nexport interface LySliderMark {\n value: number;\n label: number | string;\n}\n\n@Component({\n selector: 'ly-slider',\n templateUrl: 'slider.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'lySlider',\n providers: [\n LY_SLIDER_CONTROL_VALUE_ACCESSOR,\n StyleRenderer,\n { provide: LY_SLIDER, useExisting: LySlider },\n ],\n host: {\n '(focus)': '_onFocus()',\n '(blur)': '_onBlur()',\n '(keydown)': '_onKeydown($event)',\n '(keyup)': '_onKeyup()',\n '(mouseenter)': '_onMouseenter()',\n\n // On Safari starting to slide temporarily triggers text selection mode which\n // show the wrong cursor. We prevent it by stopping the `selectstart` event.\n '(selectstart)': '$event.preventDefault()',\n },\n standalone: false\n})\nexport class LySlider implements OnChanges, OnInit, AfterViewInit, OnDestroy, ControlValueAccessor {\n\n /**\n * Identifier used to attribute a touch event to a particular slider.\n * Will be undefined if one of the following conditions is true:\n * - The user isn't dragging using a touch device.\n * - The browser doesn't support `Touch.identifier`.\n * - Dragging hasn't started yet.\n */\n private _touchId: number | undefined;\n\n /** Keeps track of the last pointer event that was captured by the slider. */\n private _lastPointerEvent: MouseEvent | TouchEvent | null;\n\n /** Used to subscribe to global move and end events */\n protected _document: Document;\n\n /** The dimensions of the slider. */\n private _sliderDimensions: ClientRect | null = null;\n\n /** Reference to the inner slider wrapper element. */\n @ViewChild('wrapper', { static: true }) readonly _wrapper: ElementRef;\n\n /** Whether or not to show the thumb. */\n @Input()\n get thumbVisible() {\n return this._thumbVisible;\n }\n set thumbVisible(val: BooleanInput | null) {\n const newVal = val != null ? coerceBooleanProperty(val) : null;\n\n if (newVal !== this.thumbVisible) {\n\n const { thumbVisible: thumbVisibleClass } = this.classes;\n const { thumbNotVisible: thumbNotVisibleClass } = this.classes;\n this._thumbVisible = newVal;\n\n this.sRenderer.toggleClass(thumbVisibleClass, newVal === true);\n this.sRenderer.toggleClass(thumbNotVisibleClass, newVal === false);\n\n }\n }\n\n /** Whether or not to show the marks, also accepts an array of marks. */\n @Input()\n get marks() {\n return this._marks;\n }\n set marks(val: BooleanInput | LySliderMark[]) {\n const newVal = coerceBooleanProperty(val);\n\n if (newVal !== this.marks) {\n\n const newClass = this.classes.marked;\n\n if (newVal) {\n this._renderer.addClass(this._el.nativeElement, newClass);\n this._marksClass = newClass;\n this._marks = Array.isArray(val) ? val : newVal;\n } else if (this._marksClass) {\n this._marks = false;\n this._renderer.removeClass(this._el.nativeElement, newClass);\n this._marksClass = null;\n }\n if (Array.isArray(newVal)) {\n this._marksList = val as LySliderMark[];\n } else {\n this._marksList = null;\n }\n }\n\n }\n\n /** The maximum value that the slider can have. */\n @Input()\n get max(): number {\n return this._max;\n }\n set max(v: NumberInput) {\n this._max = coerceNumberProperty(v, this._max);\n this._updateThumbs();\n\n this._cd.markForCheck();\n }\n\n /** The minimum value that the slider can have. */\n @Input()\n get min(): number {\n return this._min;\n }\n set min(v: NumberInput) {\n this._min = coerceNumberProperty(v, this._min);\n\n // If the value wasn't explicitly set by the user, set it to the min.\n if (this._value === null) {\n this.value = this._min;\n }\n this._updateThumbs();\n\n this._cd.markForCheck();\n }\n\n /** The slider appearance style. */\n @Input()\n set appearance(val: string) {\n if (val !== this.appearance) {\n this._appearance = val;\n this._appearanceClass = this.sRenderer.add(\n `${LySlider.и}.appearance:${val}`,\n (theme: ThemeVariables & LySliderVariables, ref) => {\n const classes = ref.selectorsOf(STYLES);\n if (theme.slider && theme.slider.appearance) {\n const appearance = theme.slider.appearance[val];\n if (appearance) {\n return appearance instanceof StyleCollection\n ? appearance.setTransformer((_) => _(classes)).css\n : appearance(classes, );\n }\n }\n throw new Error(`${val} not found in theme.slider.appearance`);\n }, STYLE_PRIORITY, this._appearanceClass);\n }\n }\n get appearance() {\n return this._appearance;\n }\n\n /** The slider size. */\n @Input()\n @Style<string | null>(\n val => (\n theme: ThemeVariables & LySliderVariables,\n ref: ThemeRef\n ) => {\n const slider = ref.selectorsOf(STYLES);\n if (theme.slider?.size) {\n const size = theme.slider.size[val];\n if (size) {\n return size instanceof StyleCollection\n ? size.setTransformer((_) => _(slider)).css\n : size(slider);\n }\n }\n throw new Error(`${LySlider.и}: styles theme.checkbox.size is undefined`);\n }\n , STYLE_PRIORITY)\n size: string | null;\n\n /** Color of Slider */\n @Input()\n get color(): string {\n return this._color;\n }\n set color(val: string) {\n this._color = val;\n const styleKey = `${LySlider.и}.color:${val}`;\n\n const newStyle = (theme: ThemeVariables & LySliderVariables, ref: ThemeRef) => {\n const color = theme.colorOf(val);\n const contrast = theme.colorOf(`${val}:contrast`);\n const __ = ref.selectorsOf(STYLES);\n\n if (theme.slider && theme.slider.color) {\n const sliderColor = theme.slider.color;\n if (sliderColor) {\n return sliderColor instanceof StyleCollection\n ? (sliderColor).setTransformer((_) => _(__, color, contrast)).css\n : sliderColor(__, color, contrast);\n }\n }\n throw new Error(`${val} not found in theme.slider.color`);\n };\n this._colorClass = this.sRenderer.add(\n styleKey,\n newStyle,\n STYLE_PRIORITY + 1,\n this._colorClass\n );\n }\n\n /** Whether the slider is vertical. */\n @Input()\n get vertical() {\n return this._vertical;\n }\n set vertical(val: BooleanInput) {\n const newVal = coerceBooleanProperty(val);\n this._vertical = newVal;\n\n const newClass = newVal\n ? this.classes.vertical\n : this.classes.horizontal;\n\n this._verticalClass = this._theme.updateClass(\n this._el.nativeElement,\n this._renderer,\n newClass,\n this._verticalClass as any);\n this._updateThumbs();\n\n this._cd.markForCheck();\n }\n\n /** The values at which the thumb will snap. */\n @Input()\n get step(): number { return this._step; }\n set step(v: NumberInput) {\n this._step = coerceNumberProperty(v, this._step);\n\n this._stepPrecision = this._step % 1 !== 0\n ? this._step.toString().split('.')[1].length\n : null;\n\n this._cd.markForCheck();\n }\n private _step: number = 1;\n\n /**\n * Value of a slider, this can be a number or an array of numbers.\n * If the array of numbers has more than one value,\n * then this will create more thumbs\n */\n @Input()\n get value() {\n return this._value;\n }\n set value(val: number | (number | null)[] | null) {\n if (val !== this._value) {\n const valueIsArray = Array.isArray(val);\n if (typeof val === 'number') {\n let newValue = Number(val);\n newValue = (newValue === this.min || newValue === this.max)\n ? newValue\n : parseFloat(newValue.toFixed(this._stepPrecision as number));\n this._value = newValue;\n } else if (valueIsArray && !arrayEquals(this._value, val)) {\n let newValue = val as number[];\n newValue = newValue.map(\n _val => _val === null\n ? _val\n : (_val === this.min || _val === this.max)\n ? _val\n : parseFloat(_val.toFixed(this._stepPrecision as number)));\n\n this._value = newValue;\n }\n this._thumbs = (valueIsArray ?\n this._value as (number | null)[]\n : [this._value as number | null]).map((v, index) => ({\n index,\n value: coerceNumberProperty(v, this.min),\n displayValue: null,\n percent: null,\n styles: {},\n focused: this._thumbs?.[index]?.focused\n }));\n\n this._updateThumbs();\n\n this._cd.markForCheck();\n }\n }\n\n /** Whether the slider is disabled. */\n @Input()\n get disabled() {\n return this._disabled;\n }\n set disabled(val: BooleanInput) {\n const newVal = coerceBooleanProperty(val);\n\n if (newVal !== this.disabled) {\n this._disabled = newVal;\n if (newVal) {\n // TODO: remove promise when color parameter removed\n Promise.resolve(null).then(() => {\n // TODO: deprecated\n const color = this.color;\n const styleKey = `${LySlider.и}.disabled:${val}-${color}`;\n let newStyle: ((theme: ThemeVariables & LySliderVariables, ref: ThemeRef) => StyleTemplate);\n newStyle = (theme: ThemeVariables & LySliderVariables, ref: ThemeRef) => {\n const clr = theme.colorOf(color);\n const __ = ref.selectorsOf(STYLES);\n\n if (theme.slider && theme.slider.disabled) {\n const sliderColor = theme.slider.disabled;\n if (sliderColor) {\n return sliderColor instanceof StyleCollection\n ? (sliderColor).setTransformer((_) => _(__, clr)).css\n : sliderColor(__, clr);\n }\n }\n throw new Error(`${val} not found in theme.slider.color`);\n };\n const newClass = this.sRenderer.add(\n styleKey,\n newStyle,\n STYLE_PRIORITY + 1.5,\n this._disabledClass\n );\n this.sRenderer.addClass(this.classes.disabled);\n this._disabledClass = newClass;\n });\n } else if (this._disabledClass) {\n this.sRenderer.removeClass(this._disabledClass);\n this.sRenderer.removeClass(this.classes.disabled);\n this._disabledClass = null;\n }\n }\n }\n\n /**\n * Whether or not to show the thumb label, but if the value is a number,\n * it will show ticks according to the steps. For example: if you set\n * 3 ticks with a step of 10, you will draw a tick every 30 values\n */\n @Input()\n get ticks() {\n return this._ticks;\n }\n set ticks(val: NumberInput | BooleanInput) {\n const newValue = coerceNumberProperty(val, coerceBooleanProperty(val));\n this._ticks = newValue;\n }\n get _tickList() {\n return this.__tickList;\n }\n // private _ngClass: NgClass;\n constructor(\n private _theme: LyTheme2,\n private _el: ElementRef,\n private _renderer: Renderer2,\n private _cd: ChangeDetectorRef,\n readonly sRenderer: StyleRenderer,\n private _ngZone: NgZone,\n private _focusMonitor: FocusMonitor,\n @Inject(DOCUMENT) _document: any,\n @Optional() @Inject(LY_SLIDER_DEFAULT_OPTIONS) private _default: LySliderDefaultOptions\n ) {\n this._document = _document;\n _renderer.addClass(_el.nativeElement, this.classes.root);\n _ngZone.runOutsideAngular(() => {\n const element = _el.nativeElement;\n element.addEventListener('mousedown', this._pointerDown, activeEventOptions);\n element.addEventListener('touchstart', this._pointerDown, activeEventOptions);\n });\n }\n static и = 'LySlider';\n readonly classes = this._theme.renderStyleSheet(STYLES);\n\n private _disabled: boolean;\n private _disabledClass: string | null;\n private _color: string;\n private _colorClass: string;\n\n private _vertical: boolean;\n private _verticalClass?: string | null;\n\n private _appearance: string;\n private _appearanceClass: string;\n\n private _value: number | (number | null)[] | null = null;\n private _thumbsOnSlideStart: Thumb[] | null;\n private _valueOnSlideStart: number | (number | null)[] | null;\n\n private _min: number = 0;\n private _max: number = 100;\n\n private _stepPrecision?: number | null;\n\n private _closestIndex: number | null;\n\n _changes = new Subject<void>();\n\n /** Min percentage, this is for mark. */\n _minPercent: number;\n /** Max percentage, this is for mark. */\n _maxPercent: number;\n\n /**\n * Whether or not the thumb is sliding.\n */\n _isSliding: 'keyboard' | 'pointer' | null = null;\n _slidingThumbValue?: number | null;\n\n _thumbs: Thumb[] = [];\n\n _rootClasses = new Set<string>();\n\n @ViewChild('bg') _bg?: ElementRef<HTMLDivElement>;\n @ViewChild('track', { static: true }) _track: ElementRef<HTMLDivElement>;\n @ViewChild('ticksRef', { static: true }) _ticksRef: ElementRef<HTMLDivElement>;\n @ViewChildren('thumbsRef') _thumbsRef?: QueryList<ElementRef<HTMLDivElement>>;\n\n @Input() displayWith: (value: number | null) => string | number;\n\n /** Event emitted when the slider value has changed. */\n @Output() readonly change: EventEmitter<LySliderChange> = new EventEmitter<LySliderChange>();\n\n /** Event emitted when the slider thumb moves. */\n @Output() readonly input: EventEmitter<LySliderChange> = new EventEmitter<LySliderChange>();\n\n /** @docs-private */\n @Output() readonly valueChange: EventEmitter<number | (number | null)[] | null> = new EventEmitter<number | (number | null)[] | null>();\n\n private _thumbVisible: boolean | null;\n\n private _marks: boolean | LySliderMark[];\n private _marksClass: string | null;\n _marksList?: LySliderMark[] | null;\n private _ticks: number | boolean;\n _tickInterval: number;\n private __tickList: number[];\n\n /** Called when the window has lost focus. */\n private _windowBlur = () => {\n // If the window is blurred while dragging we need to stop dragging because the\n // browser won't dispatch the `mouseup` and `touchend` events anymore.\n if (this._lastPointerEvent) {\n this._pointerUp(this._lastPointerEvent);\n }\n }\n\n /**\n * The registered callback function called when a blur event occurs on the input element.\n * @docs-private\n */\n onTouched = () => {};\n\n private _controlValueAccessorChangeFn: (value: any) => void = () => {};\n\n ngOnChanges() {\n this._updateTickValues();\n this._changes.next();\n }\n\n ngOnInit() {\n\n this._theme.directionChanged.pipe(untilComponentDestroyed(this)).subscribe(() => {\n this.ngOnChanges();\n this._updateThumbs();\n this._cd.markForCheck();\n });\n\n /** Set default appearance */\n if (this.appearance == null) {\n this.appearance = (this._default && this._default.appearance) || 'standard';\n }\n\n /** Set default size */\n if (this.size == null) {\n this.size = 'small';\n }\n\n /** Set horizontal slider */\n if (this.vertical == null) {\n this.vertical = false;\n }\n\n /** Set default color */\n if (this.color == null) {\n this.color = 'accent';\n }\n\n /** Set default step */\n if (this.step == null) {\n this.step = 1;\n }\n\n }\n\n ngAfterViewInit() {\n this._focusMonitor.monitor(this._el, true).subscribe((_origin: FocusOrigin) => {\n this._cd.detectChanges();\n });\n }\n\n ngOnDestroy() {\n const element = this._el.nativeElement;\n this._focusMonitor.stopMonitoring(this._el);\n element.removeEventListener('mousedown', this._pointerDown, activeEventOptions);\n element.removeEventListener('touchstart', this._pointerDown, activeEventOptions);\n this._lastPointerEvent = null;\n this._changes.complete();\n }\n\n writeValue(value: any): void {\n this.value = value;\n this._changes.next();\n }\n\n /**\n * Registers a function called when the control value changes.\n *\n * @param fn The callback function\n */\n registerOnChange(fn: (value: any) => any): void {\n this._controlValueAccessorChangeFn = fn;\n }\n\n /**\n * Registers a function called when the control is touched.\n *\n * @param fn The callback function\n */\n registerOnTouched(fn: () => any): void {\n this.onTouched = fn;\n }\n\n /**\n * Disables the select. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param isDisabled Sets whether the component is disabled.\n */\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n _onMouseenter() {\n if (this.disabled) {\n return;\n }\n\n // We save the dimensions of the slider here so we can use them to update the spacing of the\n // ticks and determine where on the slider click and slide events happen.\n this._sliderDimensions = this._getSliderDimensions();\n // this._updateTickIntervalPercent();\n }\n\n _onFocus() {\n // We save the dimensions of the slider here so we can use them to update the spacing of the\n // ticks and determine where on the slider click and slide events happen.\n this._sliderDimensions = this._getSliderDimensions();\n // this._updateTickIntervalPercent();\n }\n\n _onBlur() {\n this.onTouched();\n }\n\n _onKeydown(event: KeyboardEvent) {\n if (\n this.disabled ||\n hasModifierKey(event) ||\n (this._isSliding && this._isSliding !== 'keyboard')\n ) {\n return;\n }\n this._isSliding = 'keyboard';\n const oldValue = this.value;\n\n switch (event.keyCode) {\n case PAGE_UP:\n this._increment(10);\n break;\n case PAGE_DOWN:\n this._increment(-10);\n break;\n case END:\n this.value = this.max;\n break;\n case HOME:\n this.value = this.min;\n break;\n case LEFT_ARROW:\n this._increment(this._getDirection() === Dir.rtl ? 1 : -1);\n break;\n case UP_ARROW:\n this._increment(1);\n break;\n case RIGHT_ARROW:\n // See comment on LEFT_ARROW about the conditions under which we flip the meaning.\n this._increment(this._getDirection() === Dir.rtl ? -1 : 1);\n break;\n case DOWN_ARROW:\n this._increment(-1);\n break;\n default:\n // Return if the key is not one that we explicitly handle to avoid calling preventDefault on\n // it.\n return;\n }\n\n if (!valueEquals(oldValue, this.value)) {\n this._emitInputEvent();\n this._emitChangeEvent();\n this._changes.next();\n }\n\n event.preventDefault();\n }\n\n _onKeyup() {\n if (this._isSliding === 'keyboard') {\n this._renderer.removeClass(this._el.nativeElement, this.classes.sliding);\n this._isSliding = null;\n this._thumbsOnSlideStart = null;\n this._valueOnSlideStart = null;\n this._closestIndex = null;\n }\n }\n\n private _pointerDown = (event: TouchEvent | MouseEvent) => {\n // Don't do anything if the slider is disabled or the\n // user is using anything other than the main mouse button.\n if (this.disabled || this._isSliding || (!isTouchEvent(event) && event.button !== 0)) {\n return;\n }\n\n this._ngZone.run(() => {\n this._touchId = isTouchEvent(event)\n ? getTouchIdForSlider(event, this._el.nativeElement)\n : undefined;\n const pointerPosition = getPointerPositionOnPage(event, this._touchId);\n\n if (pointerPosition) {\n const oldValue = this.value;\n this._isSliding = 'pointer';\n this._lastPointerEvent = event;\n event.preventDefault();\n this._focusHostElement();\n this._onMouseenter(); // Simulate mouseenter in case this is a mobile device.\n this._bindGlobalEvents(event);\n this._focusHostElement();\n this._setOnSlideStart();\n this._updateValueFromPosition(pointerPosition.x, pointerPosition.y);\n\n // Emit a change and input event if the value changed.\n if (!valueEquals(oldValue, this.value)) {\n this._emitInputEvent();\n this._changes.next();\n }\n }\n });\n }\n\n /**\n * Called when the user has moved their pointer after\n * starting to drag. Bound on the document level.\n */\n private _pointerMove = (event: TouchEvent | MouseEvent) => {\n if (this._isSliding === 'pointer') {\n const pointerPosition = getPointerPositionOnPage(event, this._touchId);\n\n if (pointerPosition) {\n // Prevent the slide from selecting anything else.\n event.preventDefault();\n const oldValue = this.value;\n this._lastPointerEvent = event;\n this._updateValueFromPosition(pointerPosition.x, pointerPosition.y);\n\n // Native range elements always emit `input` events when the value changed while sliding.\n if (!valueEquals(oldValue, this.value)) {\n this._emitInputEvent();\n this._changes.next();\n }\n }\n }\n }\n\n /** Called when the user has lifted their pointer. Bound on the document level. */\n private _pointerUp = (event: TouchEvent | MouseEvent) => {\n if (this._isSliding === 'pointer') {\n if (\n !isTouchEvent(event) ||\n typeof this._touchId !== 'number' ||\n // Note that we use `changedTouches`, rather than `touches` because it\n // seems like in most cases `touches` is empty for `touchend` events.\n findMatchingTouch(event.changedTouches, this._touchId)\n ) {\n event.preventDefault();\n this._removeGlobalEvents();\n this._isSliding = null;\n this._touchId = undefined;\n this._renderer.removeClass(this._el.nativeElement, this.classes.sliding);\n\n if (!valueEquals(this._valueOnSlideStart, this.value) && !this.disabled) {\n this._emitChangeEvent();\n this._changes.next();\n }\n\n this._thumbsOnSlideStart = null;\n this._closestIndex = null;\n this._valueOnSlideStart = this._lastPointerEvent = null;\n }\n }\n }\n\n _onFocusThumb(thumb: Thumb) {\n if (!this.disabled) {\n thumb.focused = true;\n }\n }\n\n _onBlurThumb(thumb: Thumb) {\n if (!this.disabled ) {\n thumb.focused = false;\n }\n }\n\n\n private _setOnSlideStart() {\n if (!this._valueOnSlideStart) {\n\n this._renderer.addClass(this._el.nativeElement, this.classes.sliding);\n\n // clone\n this._valueOnSlideStart = Array.isArray(this.value) ? this.value.slice(0) : this.value;\n this._thumbsOnSlideStart = this._thumbs.slice(0).map(t => ({...t}));\n }\n }\n\n\n _trackByFn(_index: number, item: Thumb) {\n return item.index;\n }\n\n private _getDirection() {\n return this._theme.variables.direction;\n }\n\n private _updateValueFromPosition(x: number, y: number) {\n\n if (!this._sliderDimensions) {\n return;\n }\n\n const w = this._sliderDimensions!.width;\n const h = this._sliderDimensions!.height;\n x -= this._sliderDimensions.left;\n y -= this._sliderDimensions.top;\n\n let percent = clamp(\n this.vertical\n ? гvalueToPercent(y, 0, h)\n : гvalueToPercent(x, 0, w),\n 0,\n 100);\n\n if (this.vertical || (!this.vertical && this._theme.variables.direction === Dir.rtl)) {\n percent = 100 - percent;\n }\n\n let value: number;\n\n if (percent === 0) {\n value = this.min;\n } else if (percent === 100) {\n value = this.max;\n } else {\n value = this._roundValueToStep(percentToValue(percent, this.min, this.max));\n }\n if (this._closestIndex == null) {\n this._closestIndex = findClosest(this._thumbs.map(thumb => thumb.value), value);\n }\n const currentThumb = this._thumbsOnSlideStart![this._closestIndex];\n this._slidingThumbValue = currentThumb.value = value;\n if (Array.isArray(this.value)) {\n this.value = this._thumbsOnSlideStart!.map(thumb => thumb.value).sort(ASC);\n } else {\n this.value = value;\n }\n\n // focus slidingThumb\n const currentSlidingThumb: Thumb | undefined = this._thumbs.find(thumb => thumb.value === value)!;\n if (currentSlidingThumb) {\n currentSlidingThumb.focused = true;\n this._thumbsRef!.toArray()[currentSlidingThumb.index].nativeElement.focus();\n }\n }\n\n private _updateThumbs() {\n this._thumbs.forEach(thumb => {\n const val = clamp(thumb.value, this.min, this.max);\n const percent = гvalueToPercent(val, this.min, this.max);\n const pos = this._calculatePosition(percent);\n thumb.value = val;\n thumb.displayValue = this._transformValue(val);\n thumb.percent = percent;\n if (this._isSliding === 'pointer') {\n thumb.focused = false;\n }\n thumb.styles = {\n [pos.style]: pos.value\n };\n });\n\n this._updateTrack();\n }\n\n _calculatePosition(percent: number) {\n let style: string;\n const value = `${percent}%`;\n\n if (this.vertical) {\n style = 'bottom';\n } else {\n style = this._theme.variables.direction === 'rtl' ? 'right' : 'left';\n }\n return {\n style,\n value\n };\n }\n\n private _updateTrack() {\n const track = this._track;\n const thumbs = this._thumbs;\n const thumbsPercents = thumbs.map(thumb => thumb.percent!);\n // const direction = this._theme.variables.direction === 'rtl' ? 'right' : 'left';\n // const axis = this.vertical ? 'Y' : 'X';\n // const sign = this._theme.variables.direction === 'rtl' ? '-' : '';\n if (thumbs.length === 1) {\n thumbsPercents.unshift(0);\n }\n\n const minPercent = this._minPercent = Math.min(...thumbsPercents);\n const maxPercent = this._maxPercent = Math.max(...thumbsPercents);\n const percent = (maxPercent / 100) - (minPercent / 100);\n\n // const scale = this.vertical ? `1, ${percent}, 1` : `${percent}, 1, 1`;\n const position = this.vertical ? 'height' : 'width';\n const location = this.vertical ? 'bottom' : (this._theme.variables.direction === 'rtl' ? 'right' : 'left');\n if (track) {\n // track.nativeElement.style.transform = `translate${axis}(${sign}${minPercent}%)`;\n // track.nativeElement.style.transform = `translate${axis}(${sign}${minPercent}%) scale3d(${scale})`;\n track.nativeElement.style.width = '';\n track.nativeElement.style.height = '';\n track.nativeElement.style.left = '';\n track.nativeElement.style.right = '';\n track.nativeElement.style[position] = `${percent * 100}%`;\n track.nativeElement.style[location] = `${minPercent}%`;\n }\n }\n\n /** Emits a change event. */\n private _emitChangeEvent() {\n this._controlValueAccessorChangeFn(this.value);\n this.valueChange.emit(this.value);\n this.change.emit(this._createChangeEvent());\n }\n\n /** Emits an input event. */\n private _emitInputEvent() {\n this.input.emit(this._createChangeEvent());\n }\n\n private _createChangeEvent(value = this.value) {\n return new LySliderChange(this, value);\n }\n\n private _roundValueToStep(value: number) {\n return Number((Math.round(value / this.step) * this.step).toFixed(this._stepPrecision!));\n }\n\n private _transformValue(value: number) {\n if (this.displayWith) {\n return this.displayWith(value);\n }\n return value;\n }\n\n /** Increments the slider by the given number of steps (negative number decrements). */\n private _increment(numSteps: number) {\n this._setOnSlideStart();\n if (this._closestIndex == null) {\n this._closestIndex = this._thumbsOnSlideStart!.findIndex(_ => _.focused);\n }\n const index = this._closestIndex;\n const thumb = this._thumbsOnSlideStart![index];\n const newValue = clamp((thumb.value || 0) + this.step * numSteps, this.min, this.max);\n thumb.value = newValue;\n if (Array.isArray(this.value)) {\n this.value = this._thumbsOnSlideStart!.map(_ => _.value).sort(ASC);\n } else {\n this.value = newValue;\n }\n\n // focus slidingThumb\n const currentSlidingThumb: Thumb | undefined = this._thumbs.find(t => t.value === newValue)!;\n if (currentSlidingThumb) {\n currentSlidingThumb.focused = true;\n this._thumbsRef?.forEach((t, i) => {\n if (i === currentSlidingThumb.index) {\n t.nativeElement.focus();\n } else {\n this._thumbs[i].focused = false;\n }\n });\n }\n }\n\n _getHostElement() {\n return this._el.nativeElement;\n }\n\n /**\n * Get the bounding client rect of the slider track element.\n * The track is used rather than the native element to ignore the extra space that the thumb can\n * take up.\n */\n private _getSliderDimensions() {\n return this._bg ? this._bg.nativeElement.getBoundingClientRect() : null;\n }\n\n private _updateTickValues() {\n this.__tickList = [];\n if (!this.ticks || this.step == null) {\n return false;\n } else {\n const ticks = this.ticks;\n this._tickInterval = typeof ticks === 'number'\n ? this.step * ticks\n : this.step;\n\n this.__tickList = [];\n const stepWidth = this._tickInterval;\n let cu = this.min;\n this.__tickList.push(cu);\n while (cu <= this.max) {\n cu += stepWidth;\n const newVal = clamp(cu, this.min, this.max);\n this.__tickList.push(newVal);\n // Remove duplicate value for next\n if (newVal === this.max) {\n break;\n }\n }\n }\n\n this._cd.markForCheck();\n }\n\n /**\n * Focuses the native element.\n */\n private _focusHostElement(options?: FocusOptions) {\n this._el.nativeElement.focus(options);\n }\n\n /**\n * Binds our global move and end events. They're bound at the document level and only while\n * dragging so that the user doesn't have to keep their pointer exactly over the slider\n * as they're swiping across the screen.\n */\n private _bindGlobalEvents(triggerEvent: TouchEvent | MouseEvent) {\n // Note that we bind the events to the `document`, because it allows us to capture\n // drag cancel events where the user's pointer is outside the browser window.\n const document = this._document;\n const isTouch = isTouchEvent(triggerEvent);\n const moveEventName = isTouch ? 'touchmove' : 'mousemove';\n const endEventName = isTouch ? 'touchend' : 'mouseup';\n document.addEventListener(moveEventName, this._pointerMove, activeEventOptions);\n document.addEventListener(endEventName, this._pointerUp, activeEventOptions);\n\n if (isTouch) {\n document.addEventListener('touchcancel', this._pointerUp, activeEventOptions);\n }\n\n const window = this._getWindow();\n\n if (typeof window !== 'undefined' && window) {\n window.addEventListener('blur', this._windowBlur);\n }\n }\n\n /** Removes any global event listeners that we may have added. */\n private _removeGlobalEvents() {\n const document = this._document;\n document.removeEventListener('mousemove', this._pointerMove, activeEventOptions);\n document.removeEventListener('mouseup', this._pointerUp, activeEventOptions);\n document.removeEventListener('touchmove', this._pointerMove, activeEventOptions);\n document.removeEventListener('touchend', this._pointerUp, activeEventOptions);\n document.removeEventListener('touchcancel', this._pointerUp, activeEventOptions);\n\n const window = this._getWindow();\n\n if (typeof window !== 'undefined' && window) {\n window.removeEventListener('blur', this._windowBlur);\n }\n }\n\n /** Use defaultView of injected document if available or fallback to global window reference */\n private _getWindow(): Window {\n return this._document.defaultView || window;\n }\n\n}\n\nfunction findClosest(values: number[], currentValue: number) {\n const { index: closestIndex } = values.reduce<{\n distance: number\n index: number\n } | null>((previousValue, value, index) => {\n const distance = Math.abs(currentValue - value);\n\n if (previousValue === null || distance < previousValue.distance || distance === previousValue.distance) {\n return {\n distance,\n index,\n };\n }\n\n return previousValue;\n }, null)!;\n return closestIndex;\n}\n\nfunction percentToValue(percent, min, max) {\n return (max - min) * (percent / 100) + min;\n}\n\nfunction arrayEquals(array1: any, array2: any) {\n return Array.isArray(array1) && Array.isArray(array2) && array1.length === array2.length\n && array1.every((value, index) => value === array2[index]);\n}\n\n/** Quickly check if two values are equal */\nfunction valueEquals(value: number | (number | null)[] | null, value2: number | (number | null)[] | null) {\n if (value === value2) {\n return true;\n }\n return arrayEquals(value, value2);\n}\n\nfunction clamp(value: number, min: number, max: number) {\n if (value < min) {\n return min;\n }\n if (value > max) {\n return max;\n }\n return value;\n}\n\nfunction ASC(a: number, b: number) {\n return a - b;\n}\n\n/** Returns whether an event is a touch event. */\nfunction isTouchEvent(event: MouseEvent | TouchEvent): event is TouchEvent {\n // This function is called for every pixel that the user has dragged so we need it to be\n // as fast as possible. Since we only bind mouse events and touch events, we can assume\n // that if the event's name starts with `t`, it's a touch event.\n return event.type[0] === 't';\n}\n\n/** Gets the unique ID of a touch that matches a specific slider. */\nfunction getTouchIdForSlider(event: TouchEvent, sliderHost: HTMLElement): number | undefined {\n for (let i = 0; i < event.touches.length; i++) {\n const target = event.touches[i].target as HTMLElement;\n\n if (sliderHost === target || sliderHost.contains(target)) {\n return event.touches[i].identifier;\n }\n }\n\n return undefined;\n}\n\n/** Gets the coordinates of a touch or mouse event relative to the viewport. */\nfunction getPointerPositionOnPage(event: MouseEvent | TouchEvent, id: number | undefined) {\n let point: {clientX: number; clientY: number} | undefined;\n\n if (isTouchEvent(event)) {\n // The `identifier` could be undefined if the browser doesn't support `TouchEvent.identifier`.\n // If that's the case, attribute the first touch to all active sliders. This should still cover\n // the most common case while only breaking multi-touch.\n if (typeof id === 'number') {\n point = findMatchingTouch(event.touches, id) || findMatchingTouch(event.changedTouches, id);\n } else {\n // `touches` will be empty for start/end events so we have to fall back to `changedTouches`.\n point = event.touches[0] || event.changedTouches[0];\n }\n } else {\n point = event;\n }\n\n return point ? {x: point.clientX, y: point.clientY} : undefined;\n}\n\n/** Finds a `Touch` with a specific ID in a `TouchList`. */\nfunction findMatchingTouch(touches: TouchList, id: number): Touch | undefined {\n for (let i = 0; i < touches.length; i++) {\n if (touches[i].identifier === id) {\n return touches[i];\n }\n }\n\n return undefined;\n}\n","<div #wrapper [className]=\"classes.wrapper\">\n <div #bg [className]=\"classes.bg\"></div>\n <div #track [className]=\"classes.track\"></div>\n <ng-template [ngIf]=\"ticks\">\n <ly-tick *ngFor=\"let tick of _tickList\" [value]=\"tick\"></ly-tick>\n </ng-template>\n <span #ticksRef></span>\n <ng-template [ngIf]=\"marks\">\n <ng-content select=\"ly-mark\"></ng-content>\n </ng-template>\n <ng-template [ngIf]=\"_marksList\">\n <ly-mark *ngFor=\"let mark of _marksList\" [value]=\"mark.value\">{{ mark.label }}</ly-mark>\n </ng-template>\n <div\n *ngFor=\"let thumb of _thumbs; trackBy: _trackByFn\"\n [className]=\"classes.thumbContainer\"\n [ngStyle]=\"thumb.styles\"\n >\n <div\n [className]=\"classes.thumbContent\"\n [ngClass]=\"thumb.focused ? classes.thumbContentFocused : null\"\n #thumbsRef\n (focus)=\"_onFocusThumb(thumb)\"\n (blur)=\"_onBlurThumb(thumb)\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n >\n <div\n [className]=\"classes.thumb\"\n ></div>\n <div [className]=\"classes.thumbLabel\" *ngIf=\"thumbVisible !== false\">\n <span [className]=\"classes.thumbLabelValue\">{{ thumb.displayValue }}</span>\n </div>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LyCommonModule } from '@alyle/ui';\nimport { LySlider } from './slider';\nimport { LyMark } from './mark';\nimport { LyTick } from './tick';\n\n@NgModule({\n imports: [\n CommonModule,\n LyCommonModule\n ],\n declarations: [LySlider, LyMark, LyTick],\n exports: [LySlider, LyMark]\n})\nexport class LySliderModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.LyTick","i4.LyMark","i5.LyTick"],"mappings":"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"}