{"version":3,"file":"slider.es5.js","sources":["../../packages/material/esm5/slider/slider.js","../../packages/material/esm5/slider/slider-module.js","../../packages/material/esm5/slider/index.js"],"sourcesContent":["/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport * as tslib_1 from \"tslib\";\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { DOWN_ARROW, END, HOME, LEFT_ARROW, PAGE_DOWN, PAGE_UP, RIGHT_ARROW, UP_ARROW, } from '@angular/cdk/keycodes';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, Input, Optional, Output, Renderer2, ViewChild, ViewEncapsulation, } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { mixinColor, mixinDisabled, } from '@angular/material/core';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { Subscription } from 'rxjs/Subscription';\n/**\n * Visually, a 30px separation between tick marks looks best. This is very subjective but it is\n * the default separation we chose.\n */\nvar MIN_AUTO_TICK_SEPARATION = 30;\n/**\n * The thumb gap size for a disabled slider.\n */\nvar DISABLED_THUMB_GAP = 7;\n/**\n * The thumb gap size for a non-active slider at its minimum value.\n */\nvar MIN_VALUE_NONACTIVE_THUMB_GAP = 7;\n/**\n * The thumb gap size for an active slider at its minimum value.\n */\nvar MIN_VALUE_ACTIVE_THUMB_GAP = 10;\n/**\n * Provider Expression that allows mat-slider to register as a ControlValueAccessor.\n * This allows it to support [(ngModel)] and [formControl].\n */\nexport var MAT_SLIDER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(function () { return MatSlider; }),\n multi: true\n};\n/**\n * A simple change event emitted by the MatSlider component.\n */\nvar MatSliderChange = (function () {\n function MatSliderChange() {\n }\n return MatSliderChange;\n}());\nexport { MatSliderChange };\nfunction MatSliderChange_tsickle_Closure_declarations() {\n /**\n * The MatSlider that changed.\n * @type {?}\n */\n MatSliderChange.prototype.source;\n /**\n * The new value of the source slider.\n * @type {?}\n */\n MatSliderChange.prototype.value;\n}\n/**\n * \\@docs-private\n */\nvar MatSliderBase = (function () {\n /**\n * @param {?} _renderer\n * @param {?} _elementRef\n */\n function MatSliderBase(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n }\n return MatSliderBase;\n}());\nexport { MatSliderBase };\nfunction MatSliderBase_tsickle_Closure_declarations() {\n /** @type {?} */\n MatSliderBase.prototype._renderer;\n /** @type {?} */\n MatSliderBase.prototype._elementRef;\n}\nexport var /** @type {?} */ _MatSliderMixinBase = mixinColor(mixinDisabled(MatSliderBase), 'accent');\n/**\n * Allows users to select from a range of values by moving the slider thumb. It is similar in\n * behavior to the native `` element.\n */\nvar MatSlider = (function (_super) {\n tslib_1.__extends(MatSlider, _super);\n /**\n * @param {?} renderer\n * @param {?} elementRef\n * @param {?} _focusMonitor\n * @param {?} _changeDetectorRef\n * @param {?} _dir\n */\n function MatSlider(renderer, elementRef, _focusMonitor, _changeDetectorRef, _dir) {\n var _this = _super.call(this, renderer, elementRef) || this;\n _this._focusMonitor = _focusMonitor;\n _this._changeDetectorRef = _changeDetectorRef;\n _this._dir = _dir;\n _this._invert = false;\n _this._max = 100;\n _this._min = 0;\n _this._step = 1;\n _this._thumbLabel = false;\n _this._tickInterval = 0;\n _this._value = null;\n _this._vertical = false;\n /**\n * Event emitted when the slider value has changed.\n */\n _this.change = new EventEmitter();\n /**\n * Event emitted when the slider thumb moves.\n */\n _this.input = new EventEmitter();\n /**\n * onTouch function registered via registerOnTouch (ControlValueAccessor).\n */\n _this.onTouched = function () { };\n _this._percent = 0;\n /**\n * Whether or not the thumb is sliding.\n * Used to determine if there should be a transition for the thumb and fill track.\n */\n _this._isSliding = false;\n /**\n * Whether or not the slider is active (clicked or sliding).\n * Used to shrink and grow the thumb as according to the Material Design spec.\n */\n _this._isActive = false;\n /**\n * The size of a tick interval as a percentage of the size of the track.\n */\n _this._tickIntervalPercent = 0;\n /**\n * The dimensions of the slider.\n */\n _this._sliderDimensions = null;\n _this._controlValueAccessorChangeFn = function () { };\n /**\n * Subscription to the Directionality change EventEmitter.\n */\n _this._dirChangeSubscription = Subscription.EMPTY;\n return _this;\n }\n Object.defineProperty(MatSlider.prototype, \"invert\", {\n /**\n * Whether the slider is inverted.\n * @return {?}\n */\n get: function () { return this._invert; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._invert = coerceBooleanProperty(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"max\", {\n /**\n * The maximum value that the slider can have.\n * @return {?}\n */\n get: function () { return this._max; },\n /**\n * @param {?} v\n * @return {?}\n */\n set: function (v) {\n this._max = coerceNumberProperty(v, this._max);\n this._percent = this._calculatePercentage(this._value);\n // Since this also modifies the percentage, we need to let the change detection know.\n this._changeDetectorRef.markForCheck();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"min\", {\n /**\n * The minimum value that the slider can have.\n * @return {?}\n */\n get: function () { return this._min; },\n /**\n * @param {?} v\n * @return {?}\n */\n set: function (v) {\n this._min = coerceNumberProperty(v, this._min);\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._percent = this._calculatePercentage(this._value);\n // Since this also modifies the percentage, we need to let the change detection know.\n this._changeDetectorRef.markForCheck();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"step\", {\n /**\n * The values at which the thumb will snap.\n * @return {?}\n */\n get: function () { return this._step; },\n /**\n * @param {?} v\n * @return {?}\n */\n set: function (v) {\n this._step = coerceNumberProperty(v, this._step);\n if (this._step % 1 !== 0) {\n this._roundLabelTo = ((this._step.toString().split('.').pop())).length;\n }\n // Since this could modify the label, we need to notify the change detection.\n this._changeDetectorRef.markForCheck();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"thumbLabel\", {\n /**\n * Whether or not to show the thumb label.\n * @return {?}\n */\n get: function () { return this._thumbLabel; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._thumbLabel = coerceBooleanProperty(value); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"_thumbLabelDeprecated\", {\n /**\n * @deprecated\n * @return {?}\n */\n get: function () { return this._thumbLabel; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) { this._thumbLabel = value; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"tickInterval\", {\n /**\n * How often to show ticks. Relative to the step so that a tick always appears on a step.\n * Ex: Tick interval of 4 with a step of 3 will draw a tick every 4 steps (every 12 values).\n * @return {?}\n */\n get: function () { return this._tickInterval; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n if (value === 'auto') {\n this._tickInterval = 'auto';\n }\n else if (typeof value === 'number' || typeof value === 'string') {\n this._tickInterval = coerceNumberProperty(value, /** @type {?} */ (this._tickInterval));\n }\n else {\n this._tickInterval = 0;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"_tickIntervalDeprecated\", {\n /**\n * @deprecated\n * @return {?}\n */\n get: function () { return this.tickInterval; },\n /**\n * @param {?} v\n * @return {?}\n */\n set: function (v) { this.tickInterval = v; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"value\", {\n /**\n * Value of the slider.\n * @return {?}\n */\n get: function () {\n // If the value needs to be read and it is still uninitialized, initialize it to the min.\n if (this._value === null) {\n this.value = this._min;\n }\n return this._value;\n },\n /**\n * @param {?} v\n * @return {?}\n */\n set: function (v) {\n if (v !== this._value) {\n this._value = coerceNumberProperty(v, this._value || 0);\n this._percent = this._calculatePercentage(this._value);\n // Since this also modifies the percentage, we need to let the change detection know.\n this._changeDetectorRef.markForCheck();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"vertical\", {\n /**\n * Whether the slider is vertical.\n * @return {?}\n */\n get: function () { return this._vertical; },\n /**\n * @param {?} value\n * @return {?}\n */\n set: function (value) {\n this._vertical = coerceBooleanProperty(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"displayValue\", {\n /**\n * The value to be used for display purposes.\n * @return {?}\n */\n get: function () {\n // Note that this could be improved further by rounding something like 0.999 to 1 or\n // 0.899 to 0.9, however it is very performance sensitive, because it gets called on\n // every change detection cycle.\n if (this._roundLabelTo && this.value && this.value % 1 !== 0) {\n return this.value.toFixed(this._roundLabelTo);\n }\n return this.value || 0;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"percent\", {\n /**\n * The percentage of the slider that coincides with the value.\n * @return {?}\n */\n get: function () { return this._clamp(this._percent); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"_invertAxis\", {\n /**\n * Whether the axis of the slider is inverted.\n * (i.e. whether moving the thumb in the positive x or y direction decreases the slider's value).\n * @return {?}\n */\n get: function () {\n // Standard non-inverted mode for a vertical slider should be dragging the thumb from bottom to\n // top. However from a y-axis standpoint this is inverted.\n return this.vertical ? !this.invert : this.invert;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"_isMinValue\", {\n /**\n * Whether the slider is at its minimum value.\n * @return {?}\n */\n get: function () {\n return this.percent === 0;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"_thumbGap\", {\n /**\n * The amount of space to leave between the slider thumb and the track fill & track background\n * elements.\n * @return {?}\n */\n get: function () {\n if (this.disabled) {\n return DISABLED_THUMB_GAP;\n }\n if (this._isMinValue && !this.thumbLabel) {\n return this._isActive ? MIN_VALUE_ACTIVE_THUMB_GAP : MIN_VALUE_NONACTIVE_THUMB_GAP;\n }\n return 0;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"_trackBackgroundStyles\", {\n /**\n * CSS styles for the track background element.\n * @return {?}\n */\n get: function () {\n var /** @type {?} */ axis = this.vertical ? 'Y' : 'X';\n var /** @type {?} */ sign = this._invertMouseCoords ? '-' : '';\n return {\n 'transform': \"translate\" + axis + \"(\" + sign + this._thumbGap + \"px) scale\" + axis + \"(\" + (1 - this.percent) + \")\"\n };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"_trackFillStyles\", {\n /**\n * CSS styles for the track fill element.\n * @return {?}\n */\n get: function () {\n var /** @type {?} */ axis = this.vertical ? 'Y' : 'X';\n var /** @type {?} */ sign = this._invertMouseCoords ? '' : '-';\n return {\n 'transform': \"translate\" + axis + \"(\" + sign + this._thumbGap + \"px) scale\" + axis + \"(\" + this.percent + \")\"\n };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"_ticksContainerStyles\", {\n /**\n * CSS styles for the ticks container element.\n * @return {?}\n */\n get: function () {\n var /** @type {?} */ axis = this.vertical ? 'Y' : 'X';\n // For a horizontal slider in RTL languages we push the ticks container off the left edge\n // instead of the right edge to avoid causing a horizontal scrollbar to appear.\n var /** @type {?} */ sign = !this.vertical && this._direction == 'rtl' ? '' : '-';\n var /** @type {?} */ offset = this._tickIntervalPercent / 2 * 100;\n return {\n 'transform': \"translate\" + axis + \"(\" + sign + offset + \"%)\"\n };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"_ticksStyles\", {\n /**\n * CSS styles for the ticks element.\n * @return {?}\n */\n get: function () {\n var /** @type {?} */ tickSize = this._tickIntervalPercent * 100;\n var /** @type {?} */ backgroundSize = this.vertical ? \"2px \" + tickSize + \"%\" : tickSize + \"% 2px\";\n var /** @type {?} */ axis = this.vertical ? 'Y' : 'X';\n // Depending on the direction we pushed the ticks container, push the ticks the opposite\n // direction to re-center them but clip off the end edge. In RTL languages we need to flip the\n // ticks 180 degrees so we're really cutting off the end edge abd not the start.\n var /** @type {?} */ sign = !this.vertical && this._direction == 'rtl' ? '-' : '';\n var /** @type {?} */ rotate = !this.vertical && this._direction == 'rtl' ? ' rotate(180deg)' : '';\n var /** @type {?} */ styles = {\n 'backgroundSize': backgroundSize,\n // Without translateZ ticks sometimes jitter as the slider moves on Chrome & Firefox.\n 'transform': \"translateZ(0) translate\" + axis + \"(\" + sign + tickSize / 2 + \"%)\" + rotate\n };\n if (this._isMinValue && this._thumbGap) {\n var /** @type {?} */ side = this.vertical ?\n (this._invertAxis ? 'Bottom' : 'Top') :\n (this._invertAxis ? 'Right' : 'Left');\n styles[\"padding\" + side] = this._thumbGap + \"px\";\n }\n return styles;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"_thumbContainerStyles\", {\n /**\n * @return {?}\n */\n get: function () {\n var /** @type {?} */ axis = this.vertical ? 'Y' : 'X';\n // For a horizontal slider in RTL languages we push the thumb container off the left edge\n // instead of the right edge to avoid causing a horizontal scrollbar to appear.\n var /** @type {?} */ invertOffset = (this._direction == 'rtl' && !this.vertical) ? !this._invertAxis : this._invertAxis;\n var /** @type {?} */ offset = (invertOffset ? this.percent : 1 - this.percent) * 100;\n return {\n 'transform': \"translate\" + axis + \"(-\" + offset + \"%)\"\n };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"_invertMouseCoords\", {\n /**\n * Whether mouse events should be converted to a slider position by calculating their distance\n * from the right or bottom edge of the slider as opposed to the top or left.\n * @return {?}\n */\n get: function () {\n return (this._direction == 'rtl' && !this.vertical) ? !this._invertAxis : this._invertAxis;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatSlider.prototype, \"_direction\", {\n /**\n * The language direction for this slider element.\n * @return {?}\n */\n get: function () {\n return (this._dir && this._dir.value == 'rtl') ? 'rtl' : 'ltr';\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n MatSlider.prototype.ngOnInit = function () {\n var _this = this;\n this._focusMonitor\n .monitor(this._elementRef.nativeElement, this._renderer, true)\n .subscribe(function (origin) {\n _this._isActive = !!origin && origin !== 'keyboard';\n _this._changeDetectorRef.detectChanges();\n });\n if (this._dir) {\n this._dirChangeSubscription = this._dir.change.subscribe(function () {\n _this._changeDetectorRef.markForCheck();\n });\n }\n };\n /**\n * @return {?}\n */\n MatSlider.prototype.ngOnDestroy = function () {\n this._focusMonitor.stopMonitoring(this._elementRef.nativeElement);\n this._dirChangeSubscription.unsubscribe();\n };\n /**\n * @return {?}\n */\n MatSlider.prototype._onMouseenter = function () {\n if (this.disabled) {\n return;\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 * @param {?} event\n * @return {?}\n */\n MatSlider.prototype._onClick = function (event) {\n if (this.disabled) {\n return;\n }\n var /** @type {?} */ oldValue = this.value;\n this._isSliding = false;\n this._focusHostElement();\n this._updateValueFromPosition({ x: event.clientX, y: event.clientY });\n /* Emit a change and input event if the value changed. */\n if (oldValue != this.value) {\n this._emitInputEvent();\n this._emitChangeEvent();\n }\n };\n /**\n * @param {?} event\n * @return {?}\n */\n MatSlider.prototype._onSlide = function (event) {\n if (this.disabled) {\n return;\n }\n // The slide start event sometimes fails to fire on iOS, so if we're not already in the sliding\n // state, call the slide start handler manually.\n if (!this._isSliding) {\n this._onSlideStart(null);\n }\n // Prevent the slide from selecting anything else.\n event.preventDefault();\n var /** @type {?} */ oldValue = this.value;\n this._updateValueFromPosition({ x: event.center.x, y: event.center.y });\n // Native range elements always emit `input` events when the value changed while sliding.\n if (oldValue != this.value) {\n this._emitInputEvent();\n }\n };\n /**\n * @param {?} event\n * @return {?}\n */\n MatSlider.prototype._onSlideStart = function (event) {\n if (this.disabled || this._isSliding) {\n return;\n }\n // Simulate mouseenter in case this is a mobile device.\n this._onMouseenter();\n this._isSliding = true;\n this._focusHostElement();\n this._valueOnSlideStart = this.value;\n if (event) {\n this._updateValueFromPosition({ x: event.center.x, y: event.center.y });\n event.preventDefault();\n }\n };\n /**\n * @return {?}\n */\n MatSlider.prototype._onSlideEnd = function () {\n this._isSliding = false;\n if (this._valueOnSlideStart != this.value) {\n this._emitChangeEvent();\n }\n this._valueOnSlideStart = null;\n };\n /**\n * @return {?}\n */\n MatSlider.prototype._onFocus = function () {\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 * @return {?}\n */\n MatSlider.prototype._onBlur = function () {\n this.onTouched();\n };\n /**\n * @param {?} event\n * @return {?}\n */\n MatSlider.prototype._onKeydown = function (event) {\n if (this.disabled) {\n return;\n }\n var /** @type {?} */ oldValue = this.value;\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 // NOTE: For a sighted user it would make more sense that when they press an arrow key on an\n // inverted slider the thumb moves in that direction. However for a blind user, nothing\n // about the slider indicates that it is inverted. They will expect left to be decrement,\n // regardless of how it appears on the screen. For speakers ofRTL languages, they probably\n // expect left to mean increment. Therefore we flip the meaning of the side arrow keys for\n // RTL. For inverted sliders we prefer a good a11y experience to having it \"look right\" for\n // sighted users, therefore we do not swap the meaning.\n this._increment(this._direction == '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._direction == '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 if (oldValue != this.value) {\n this._emitInputEvent();\n this._emitChangeEvent();\n }\n this._isSliding = true;\n event.preventDefault();\n };\n /**\n * @return {?}\n */\n MatSlider.prototype._onKeyup = function () {\n this._isSliding = false;\n };\n /**\n * Increments the slider by the given number of steps (negative number decrements).\n * @param {?} numSteps\n * @return {?}\n */\n MatSlider.prototype._increment = function (numSteps) {\n this.value = this._clamp((this.value || 0) + this.step * numSteps, this.min, this.max);\n };\n /**\n * Calculate the new value from the new physical location. The value will always be snapped.\n * @param {?} pos\n * @return {?}\n */\n MatSlider.prototype._updateValueFromPosition = function (pos) {\n if (!this._sliderDimensions) {\n return;\n }\n var /** @type {?} */ offset = this.vertical ? this._sliderDimensions.top : this._sliderDimensions.left;\n var /** @type {?} */ size = this.vertical ? this._sliderDimensions.height : this._sliderDimensions.width;\n var /** @type {?} */ posComponent = this.vertical ? pos.y : pos.x;\n // The exact value is calculated from the event and used to find the closest snap value.\n var /** @type {?} */ percent = this._clamp((posComponent - offset) / size);\n if (this._invertMouseCoords) {\n percent = 1 - percent;\n }\n var /** @type {?} */ exactValue = this._calculateValue(percent);\n // This calculation finds the closest step by finding the closest whole number divisible by the\n // step relative to the min.\n var /** @type {?} */ closestValue = Math.round((exactValue - this.min) / this.step) * this.step + this.min;\n // The value needs to snap to the min and max.\n this.value = this._clamp(closestValue, this.min, this.max);\n };\n /**\n * Emits a change event if the current value is different from the last emitted value.\n * @return {?}\n */\n MatSlider.prototype._emitChangeEvent = function () {\n this._controlValueAccessorChangeFn(this.value);\n this.change.emit(this._createChangeEvent());\n };\n /**\n * Emits an input event when the current value is different from the last emitted value.\n * @return {?}\n */\n MatSlider.prototype._emitInputEvent = function () {\n this.input.emit(this._createChangeEvent());\n };\n /**\n * Updates the amount of space between ticks as a percentage of the width of the slider.\n * @return {?}\n */\n MatSlider.prototype._updateTickIntervalPercent = function () {\n if (!this.tickInterval || !this._sliderDimensions) {\n return;\n }\n if (this.tickInterval == 'auto') {\n var /** @type {?} */ trackSize = this.vertical ? this._sliderDimensions.height : this._sliderDimensions.width;\n var /** @type {?} */ pixelsPerStep = trackSize * this.step / (this.max - this.min);\n var /** @type {?} */ stepsPerTick = Math.ceil(MIN_AUTO_TICK_SEPARATION / pixelsPerStep);\n var /** @type {?} */ pixelsPerTick = stepsPerTick * this.step;\n this._tickIntervalPercent = pixelsPerTick / trackSize;\n }\n else {\n this._tickIntervalPercent = this.tickInterval * this.step / (this.max - this.min);\n }\n };\n /**\n * Creates a slider change object from the specified value.\n * @param {?=} value\n * @return {?}\n */\n MatSlider.prototype._createChangeEvent = function (value) {\n if (value === void 0) { value = this.value; }\n var /** @type {?} */ event = new MatSliderChange();\n event.source = this;\n event.value = value;\n return event;\n };\n /**\n * Calculates the percentage of the slider that a value is.\n * @param {?} value\n * @return {?}\n */\n MatSlider.prototype._calculatePercentage = function (value) {\n return ((value || 0) - this.min) / (this.max - this.min);\n };\n /**\n * Calculates the value a percentage of the slider corresponds to.\n * @param {?} percentage\n * @return {?}\n */\n MatSlider.prototype._calculateValue = function (percentage) {\n return this.min + percentage * (this.max - this.min);\n };\n /**\n * Return a number between two numbers.\n * @param {?} value\n * @param {?=} min\n * @param {?=} max\n * @return {?}\n */\n MatSlider.prototype._clamp = function (value, min, max) {\n if (min === void 0) { min = 0; }\n if (max === void 0) { max = 1; }\n return Math.max(min, Math.min(value, max));\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 * @return {?}\n */\n MatSlider.prototype._getSliderDimensions = function () {\n return this._sliderWrapper ? this._sliderWrapper.nativeElement.getBoundingClientRect() : null;\n };\n /**\n * Focuses the native element.\n * Currently only used to allow a blur event to fire but will be used with keyboard input later.\n * @return {?}\n */\n MatSlider.prototype._focusHostElement = function () {\n this._elementRef.nativeElement.focus();\n };\n /**\n * Sets the model value. Implemented as part of ControlValueAccessor.\n * @param {?} value\n * @return {?}\n */\n MatSlider.prototype.writeValue = function (value) {\n this.value = value;\n };\n /**\n * Registers a callback to eb triggered when the value has changed.\n * Implemented as part of ControlValueAccessor.\n * @param {?} fn Callback to be registered.\n * @return {?}\n */\n MatSlider.prototype.registerOnChange = function (fn) {\n this._controlValueAccessorChangeFn = fn;\n };\n /**\n * Registers a callback to be triggered when the component is touched.\n * Implemented as part of ControlValueAccessor.\n * @param {?} fn Callback to be registered.\n * @return {?}\n */\n MatSlider.prototype.registerOnTouched = function (fn) {\n this.onTouched = fn;\n };\n /**\n * Sets whether the component should be disabled.\n * Implemented as part of ControlValueAccessor.\n * @param {?} isDisabled\n * @return {?}\n */\n MatSlider.prototype.setDisabledState = function (isDisabled) {\n this.disabled = isDisabled;\n };\n MatSlider.decorators = [\n { type: Component, args: [{selector: 'mat-slider',\n exportAs: 'matSlider',\n providers: [MAT_SLIDER_VALUE_ACCESSOR],\n host: {\n '(focus)': '_onFocus()',\n '(blur)': '_onBlur()',\n '(click)': '_onClick($event)',\n '(keydown)': '_onKeydown($event)',\n '(keyup)': '_onKeyup()',\n '(mouseenter)': '_onMouseenter()',\n '(slide)': '_onSlide($event)',\n '(slideend)': '_onSlideEnd()',\n '(slidestart)': '_onSlideStart($event)',\n 'class': 'mat-slider',\n 'role': 'slider',\n 'tabindex': '0',\n '[attr.aria-disabled]': 'disabled',\n '[attr.aria-valuemax]': 'max',\n '[attr.aria-valuemin]': 'min',\n '[attr.aria-valuenow]': 'value',\n '[attr.aria-orientation]': 'vertical ? \"vertical\" : \"horizontal\"',\n '[class.mat-slider-disabled]': 'disabled',\n '[class.mat-slider-has-ticks]': 'tickInterval',\n '[class.mat-slider-horizontal]': '!vertical',\n '[class.mat-slider-axis-inverted]': '_invertAxis',\n '[class.mat-slider-sliding]': '_isSliding',\n '[class.mat-slider-thumb-label-showing]': 'thumbLabel',\n '[class.mat-slider-vertical]': 'vertical',\n '[class.mat-slider-min-value]': '_isMinValue',\n '[class.mat-slider-hide-last-tick]': 'disabled || _isMinValue && _thumbGap && _invertAxis',\n },\n template: \"
\",\n styles: [\".mat-slider{display:inline-block;position:relative;box-sizing:border-box;padding:8px;outline:0;vertical-align:middle}.mat-slider-wrapper{position:absolute}.mat-slider-track-wrapper{position:absolute;top:0;left:0;overflow:hidden}.mat-slider-track-fill{position:absolute;transform-origin:0 0;transition:transform .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.mat-slider-track-background{position:absolute;transform-origin:100% 100%;transition:transform .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.mat-slider-ticks-container{position:absolute;left:0;top:0;overflow:hidden}.mat-slider-ticks{background-repeat:repeat;background-clip:content-box;box-sizing:border-box;opacity:0;transition:opacity .4s cubic-bezier(.25,.8,.25,1)}.mat-slider-thumb-container{position:absolute;z-index:1;transition:transform .4s cubic-bezier(.25,.8,.25,1)}.mat-slider-focus-ring{position:absolute;width:30px;height:30px;border-radius:50%;transform:scale(0);opacity:0;transition:transform .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1),opacity .4s cubic-bezier(.25,.8,.25,1)}.cdk-keyboard-focused .mat-slider-focus-ring{transform:scale(1);opacity:1}.mat-slider:not(.mat-slider-disabled) .mat-slider-thumb,.mat-slider:not(.mat-slider-disabled) .mat-slider-thumb-label{cursor:-webkit-grab;cursor:grab}.mat-slider-sliding:not(.mat-slider-disabled) .mat-slider-thumb,.mat-slider-sliding:not(.mat-slider-disabled) .mat-slider-thumb-label,.mat-slider:not(.mat-slider-disabled) .mat-slider-thumb-label:active,.mat-slider:not(.mat-slider-disabled) .mat-slider-thumb:active{cursor:-webkit-grabbing;cursor:grabbing}.mat-slider-thumb{position:absolute;right:-10px;bottom:-10px;box-sizing:border-box;width:20px;height:20px;border:3px solid transparent;border-radius:50%;transform:scale(.7);transition:transform .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1),border-color .4s cubic-bezier(.25,.8,.25,1)}.mat-slider-thumb-label{display:none;align-items:center;justify-content:center;position:absolute;width:28px;height:28px;border-radius:50%;transition:transform .4s cubic-bezier(.25,.8,.25,1),border-radius .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.mat-slider-thumb-label-text{z-index:1;opacity:0;transition:opacity .4s cubic-bezier(.25,.8,.25,1)}.mat-slider-sliding .mat-slider-thumb-container,.mat-slider-sliding .mat-slider-track-background,.mat-slider-sliding .mat-slider-track-fill{transition-duration:0s}.mat-slider-has-ticks .mat-slider-wrapper::after{content:'';position:absolute;border-width:0;border-style:solid;opacity:0;transition:opacity .4s cubic-bezier(.25,.8,.25,1)}.mat-slider-has-ticks.cdk-focused:not(.mat-slider-hide-last-tick) .mat-slider-wrapper::after,.mat-slider-has-ticks:hover:not(.mat-slider-hide-last-tick) .mat-slider-wrapper::after{opacity:1}.mat-slider-has-ticks.cdk-focused:not(.mat-slider-disabled) .mat-slider-ticks,.mat-slider-has-ticks:hover:not(.mat-slider-disabled) .mat-slider-ticks{opacity:1}.mat-slider-thumb-label-showing .mat-slider-focus-ring{transform:scale(0);opacity:0}.mat-slider-thumb-label-showing .mat-slider-thumb-label{display:flex}.mat-slider-axis-inverted .mat-slider-track-fill{transform-origin:100% 100%}.mat-slider-axis-inverted .mat-slider-track-background{transform-origin:0 0}.mat-slider:not(.mat-slider-disabled).cdk-focused.mat-slider-thumb-label-showing .mat-slider-thumb{transform:scale(0)}.mat-slider:not(.mat-slider-disabled).cdk-focused .mat-slider-thumb-label{border-radius:50% 50% 0}.mat-slider:not(.mat-slider-disabled).cdk-focused .mat-slider-thumb-label-text{opacity:1}.mat-slider:not(.mat-slider-disabled).cdk-mouse-focused .mat-slider-thumb,.mat-slider:not(.mat-slider-disabled).cdk-program-focused .mat-slider-thumb,.mat-slider:not(.mat-slider-disabled).cdk-touch-focused .mat-slider-thumb{border-width:2px;transform:scale(1)}.mat-slider-disabled .mat-slider-focus-ring{transform:scale(0);opacity:0}.mat-slider-disabled .mat-slider-thumb{border-width:4px;transform:scale(.5)}.mat-slider-disabled .mat-slider-thumb-label{display:none}.mat-slider-horizontal{height:48px;min-width:128px}.mat-slider-horizontal .mat-slider-wrapper{height:2px;top:23px;left:8px;right:8px}.mat-slider-horizontal .mat-slider-wrapper::after{height:2px;border-left-width:2px;right:0;top:0}.mat-slider-horizontal .mat-slider-track-wrapper{height:2px;width:100%}.mat-slider-horizontal .mat-slider-track-fill{height:2px;width:100%;transform:scaleX(0)}.mat-slider-horizontal .mat-slider-track-background{height:2px;width:100%;transform:scaleX(1)}.mat-slider-horizontal .mat-slider-ticks-container{height:2px;width:100%}.mat-slider-horizontal .mat-slider-ticks{height:2px;width:100%}.mat-slider-horizontal .mat-slider-thumb-container{width:100%;height:0;top:50%}.mat-slider-horizontal .mat-slider-focus-ring{top:-15px;right:-15px}.mat-slider-horizontal .mat-slider-thumb-label{right:-14px;top:-40px;transform:translateY(26px) scale(.01) rotate(45deg)}.mat-slider-horizontal .mat-slider-thumb-label-text{transform:rotate(-45deg)}.mat-slider-horizontal.cdk-focused .mat-slider-thumb-label{transform:rotate(45deg)}.mat-slider-vertical{width:48px;min-height:128px}.mat-slider-vertical .mat-slider-wrapper{width:2px;top:8px;bottom:8px;left:23px}.mat-slider-vertical .mat-slider-wrapper::after{width:2px;border-top-width:2px;bottom:0;left:0}.mat-slider-vertical .mat-slider-track-wrapper{height:100%;width:2px}.mat-slider-vertical .mat-slider-track-fill{height:100%;width:2px;transform:scaleY(0)}.mat-slider-vertical .mat-slider-track-background{height:100%;width:2px;transform:scaleY(1)}.mat-slider-vertical .mat-slider-ticks-container{width:2px;height:100%}.mat-slider-vertical .mat-slider-focus-ring{bottom:-15px;left:-15px}.mat-slider-vertical .mat-slider-ticks{width:2px;height:100%}.mat-slider-vertical .mat-slider-thumb-container{height:100%;width:0;left:50%}.mat-slider-vertical .mat-slider-thumb-label{bottom:-14px;left:-40px;transform:translateX(26px) scale(.01) rotate(-45deg)}.mat-slider-vertical .mat-slider-thumb-label-text{transform:rotate(45deg)}.mat-slider-vertical.cdk-focused .mat-slider-thumb-label{transform:rotate(-45deg)}[dir=rtl] .mat-slider-wrapper::after{left:0;right:auto}[dir=rtl] .mat-slider-horizontal .mat-slider-track-fill{transform-origin:100% 100%}[dir=rtl] .mat-slider-horizontal .mat-slider-track-background{transform-origin:0 0}[dir=rtl] .mat-slider-horizontal.mat-slider-axis-inverted .mat-slider-track-fill{transform-origin:0 0}[dir=rtl] .mat-slider-horizontal.mat-slider-axis-inverted .mat-slider-track-background{transform-origin:100% 100%}\"],\n inputs: ['disabled', 'color'],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n },] },\n ];\n /**\n * @nocollapse\n */\n MatSlider.ctorParameters = function () { return [\n { type: Renderer2, },\n { type: ElementRef, },\n { type: FocusMonitor, },\n { type: ChangeDetectorRef, },\n { type: Directionality, decorators: [{ type: Optional },] },\n ]; };\n MatSlider.propDecorators = {\n 'invert': [{ type: Input },],\n 'max': [{ type: Input },],\n 'min': [{ type: Input },],\n 'step': [{ type: Input },],\n 'thumbLabel': [{ type: Input },],\n '_thumbLabelDeprecated': [{ type: Input, args: ['thumb-label',] },],\n 'tickInterval': [{ type: Input },],\n '_tickIntervalDeprecated': [{ type: Input, args: ['tick-interval',] },],\n 'value': [{ type: Input },],\n 'vertical': [{ type: Input },],\n 'change': [{ type: Output },],\n 'input': [{ type: Output },],\n '_sliderWrapper': [{ type: ViewChild, args: ['sliderWrapper',] },],\n };\n return MatSlider;\n}(_MatSliderMixinBase));\nexport { MatSlider };\nfunction MatSlider_tsickle_Closure_declarations() {\n /** @type {?} */\n MatSlider.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatSlider.ctorParameters;\n /** @type {?} */\n MatSlider.propDecorators;\n /** @type {?} */\n MatSlider.prototype._invert;\n /** @type {?} */\n MatSlider.prototype._max;\n /** @type {?} */\n MatSlider.prototype._min;\n /** @type {?} */\n MatSlider.prototype._step;\n /** @type {?} */\n MatSlider.prototype._thumbLabel;\n /** @type {?} */\n MatSlider.prototype._tickInterval;\n /** @type {?} */\n MatSlider.prototype._value;\n /** @type {?} */\n MatSlider.prototype._vertical;\n /**\n * Event emitted when the slider value has changed.\n * @type {?}\n */\n MatSlider.prototype.change;\n /**\n * Event emitted when the slider thumb moves.\n * @type {?}\n */\n MatSlider.prototype.input;\n /**\n * onTouch function registered via registerOnTouch (ControlValueAccessor).\n * @type {?}\n */\n MatSlider.prototype.onTouched;\n /** @type {?} */\n MatSlider.prototype._percent;\n /**\n * Whether or not the thumb is sliding.\n * Used to determine if there should be a transition for the thumb and fill track.\n * @type {?}\n */\n MatSlider.prototype._isSliding;\n /**\n * Whether or not the slider is active (clicked or sliding).\n * Used to shrink and grow the thumb as according to the Material Design spec.\n * @type {?}\n */\n MatSlider.prototype._isActive;\n /**\n * The size of a tick interval as a percentage of the size of the track.\n * @type {?}\n */\n MatSlider.prototype._tickIntervalPercent;\n /**\n * The dimensions of the slider.\n * @type {?}\n */\n MatSlider.prototype._sliderDimensions;\n /** @type {?} */\n MatSlider.prototype._controlValueAccessorChangeFn;\n /**\n * Decimal places to round to, based on the step amount.\n * @type {?}\n */\n MatSlider.prototype._roundLabelTo;\n /**\n * Subscription to the Directionality change EventEmitter.\n * @type {?}\n */\n MatSlider.prototype._dirChangeSubscription;\n /**\n * The value of the slider when the slide start event fires.\n * @type {?}\n */\n MatSlider.prototype._valueOnSlideStart;\n /**\n * Reference to the inner slider wrapper element.\n * @type {?}\n */\n MatSlider.prototype._sliderWrapper;\n /** @type {?} */\n MatSlider.prototype._focusMonitor;\n /** @type {?} */\n MatSlider.prototype._changeDetectorRef;\n /** @type {?} */\n MatSlider.prototype._dir;\n}\n//# sourceMappingURL=slider.js.map","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { BidiModule } from '@angular/cdk/bidi';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { GestureConfig, MatCommonModule } from '@angular/material/core';\nimport { HAMMER_GESTURE_CONFIG } from '@angular/platform-browser';\nimport { MatSlider } from './slider';\nvar MatSliderModule = (function () {\n function MatSliderModule() {\n }\n MatSliderModule.decorators = [\n { type: NgModule, args: [{\n imports: [CommonModule, MatCommonModule, BidiModule, A11yModule],\n exports: [MatSlider, MatCommonModule],\n declarations: [MatSlider],\n providers: [{ provide: HAMMER_GESTURE_CONFIG, useClass: GestureConfig }]\n },] },\n ];\n /**\n * @nocollapse\n */\n MatSliderModule.ctorParameters = function () { return []; };\n return MatSliderModule;\n}());\nexport { MatSliderModule };\nfunction MatSliderModule_tsickle_Closure_declarations() {\n /** @type {?} */\n MatSliderModule.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatSliderModule.ctorParameters;\n}\n//# sourceMappingURL=slider-module.js.map","/**\n * Generated bundle index. Do not edit.\n */\nexport { MatSliderModule, MAT_SLIDER_VALUE_ACCESSOR, MatSliderChange, MatSliderBase, _MatSliderMixinBase, MatSlider } from './public-api';\n//# sourceMappingURL=index.js.map"],"names":["tslib_1.__extends"],"mappings":"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"}