{"version":3,"sources":["ixp-slider.js"],"names":["runtime","_","components","dependencies","Modernizr","constants","merge","sliderSelector","sliderValueSelector","sliderHandleSelector","css","orientation","horizontal","vertical","styles","filled","valueLocation","none","handle","above_handle","min","max","extensibility","events","valueChanged","displayValueChanging","registerExtensibility","commands","statics","cssClassesToPreserve","aboveHandle","coerceToFloat","input","defaultVal","defaultValFloat","isString","parseFloat","replace","isNaN","getScaffolding","scaffoldingKey","builder","options","style","customClass","getDefaultTheme","getRangeValue","$el","hasClass","register","InputComponentBase","initialize","this","$elSlider","find","$elSliderValue","$thisEl","config","range","numberMin","numberMax","step","numberStep","defaultValue","triggerExtensibility","all","initializing","any","slider","create","bind","_onSliderCreated","onDocumentReady","_positionValueDisplay","onListenToInputEvents","on","eventNamespace","debounce","maxWait","_onSliderChange","_onSliderSlide","onListenToStudioEvents","_onMicroThemeChanged","e","onDestroy","length","setFocus","$field","closest","inputs","formFieldSelector","attr","focus","removeAttr","getValue","onSetValue","value","onValidateValue","ui","_setInitialValue","setValue","_updateValueDisplay","onInputChanged","ee","defaultValueType","inStudio","dataContext","hasValue","hasDefaultValue","Math","validate","_setValueDisplayLocation","valueDisplayLocation","prefix","valuePrefix","suffix","valueSuffix","html","prepend","append","classesToRemove","$","extend","c","hasOwnProperty","removeClass","addClass","defer","me","positionCoords","my","at","position","of","top","left","studioInitialize","deactivateEvents","pointerevents","getParamMapOverrides","val","allowedDropTargets","origin","onGetCssClassesToPreserve","onGetScaffolding","window","ixp"],"mappings":"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","file":"ixp-slider.min.js","sourcesContent":["(function(runtime) {\r\n var _ = runtime.components.dependencies._;\r\n var Modernizr = runtime.components.dependencies.Modernizr;\r\n\r\n var constants = runtime.components.constants.merge({\r\n sliderSelector: '.ixp-component-slider-uislider',\r\n sliderValueSelector: '.ixp-component-slider-value',\r\n sliderHandleSelector: '.ui-slider-handle',\r\n\r\n css: {\r\n orientation: {\r\n horizontal: 'ixp-component-slider-value-horizontal',\r\n vertical: 'ixp-component-slider-value-vertical'\r\n },\r\n styles: {\r\n filled: 'ixp-component-slider-filled'\r\n },\r\n valueLocation: {\r\n none: 'ixp-component-slider-value-none',\r\n handle: 'ixp-component-slider-value-handle',\r\n above_handle: 'ixp-component-slider-value-above_handle',\r\n min: 'ixp-component-slider-value-min',\r\n max: 'ixp-component-slider-value-max'\r\n }\r\n },\r\n\r\n extensibility: {\r\n events: {\r\n valueChanged: ':value:changed',\r\n displayValueChanging: ':displayValue:changing'\r\n }\r\n }\r\n });\r\n\r\n runtime.components.registerExtensibility('ixp-slider', {\r\n commands: constants.extensibility.commands || {},\r\n events: constants.extensibility.events || {}\r\n });\r\n\r\n var statics = {\r\n cssClassesToPreserve: [\r\n constants.css.orientation.horizontal,\r\n constants.css.orientation.vertical,\r\n constants.css.valueLocation.none,\r\n constants.css.valueLocation.handle,\r\n constants.css.valueLocation.aboveHandle,\r\n constants.css.valueLocation.min,\r\n constants.css.valueLocation.max\r\n ],\r\n\r\n // remove commas, try to parse as float; if fails, use 'defaultVal' instead\r\n coerceToFloat: function(input, defaultVal) {\r\n var defaultValFloat = _.isString(input) ? parseFloat(input.replace(/,/g, '')) : input;\r\n return isNaN(defaultValFloat) ? defaultVal : defaultValFloat;\r\n },\r\n\r\n getScaffolding: function(scaffoldingKey, builder, options) {\r\n return {\r\n style: {\r\n customClass: builder.getDefaultTheme('slider')\r\n }\r\n };\r\n },\r\n getRangeValue: function($el) {\r\n return $el.hasClass(constants.css.styles.filled) ? 'min' : false;\r\n }\r\n };\r\n\r\n return runtime.components.register('ixp-slider', runtime.components.InputComponentBase, {\r\n initialize: function(options) {\r\n this.$elSlider = this.$el.find(constants.sliderSelector);\r\n this.$elSliderValue = this.$el.find(constants.sliderValueSelector);\r\n\r\n var $thisEl = this.$el;\r\n\r\n var config = {\r\n range: statics.getRangeValue($thisEl),\r\n orientation: this.orientation,\r\n min: this.numberMin === '' ? 0 : this.numberMin,\r\n max: this.numberMax === '' ? 100 : this.numberMax,\r\n step: this.numberStep || 1,\r\n defaultValue: this.defaultValue\r\n };\r\n this.triggerExtensibility(constants.extensibility.all.events.initializing, config, { any: true });\r\n\r\n this.defaultValue = config.defaultValue;\r\n\r\n this.$elSlider.slider({\r\n range: config.range,\r\n orientation: config.orientation,\r\n min: config.min,\r\n max: config.max,\r\n step: config.step,\r\n create: _.bind(this._onSliderCreated, this)\r\n });\r\n },\r\n\r\n onDocumentReady: function() {\r\n this._positionValueDisplay();\r\n return true;\r\n },\r\n\r\n onListenToInputEvents: function() {\r\n this.$elSlider.on('resize' + this.eventNamespace, _.debounce(_.bind(this._positionValueDisplay, this), 100, { maxWait: 250 }));\r\n this.$elSlider.on('slidechange' + this.eventNamespace, _.bind(this._onSliderChange, this));\r\n this.$elSlider.on('slide' + this.eventNamespace, _.bind(this._onSliderSlide, this));\r\n },\r\n\r\n onListenToStudioEvents: function(events) {\r\n // TODO jhp 10/2014: we should only listen for a change on the slider's micro-theme -- not on all changes\r\n events.on('element:microtheme:applied element:microtheme:removed', _.bind(this._onMicroThemeChanged, this));\r\n },\r\n\r\n _onMicroThemeChanged: function(e) {\r\n this.$elSlider.slider('option', 'range', statics.getRangeValue(this.$el));\r\n },\r\n\r\n onDestroy: function() {\r\n if (this.$elSlider && this.$elSlider.length) {\r\n this.$elSlider.slider(\"destroy\");\r\n }\r\n },\r\n\r\n setFocus: function() {\r\n var $field = this.$el.closest(constants.inputs.formFieldSelector);\r\n if ($field.length) {\r\n $field.attr('tabindex', 0);\r\n $field.focus();\r\n $field.removeAttr('tabindex');\r\n }\r\n\r\n this.$el.find(constants.sliderHandleSelector).focus();\r\n },\r\n\r\n getValue: function() {\r\n return this.$elSlider.slider('option', 'value');\r\n },\r\n\r\n onSetValue: function(value) {\r\n this.$elSlider.slider('option', 'value', value);\r\n },\r\n\r\n onValidateValue: function(value) {\r\n if (_.isString(value)) {\r\n // remove commas then try to parse as float\r\n value = parseFloat(value.replace(/,/g, ''));\r\n if (isNaN(value)) {\r\n return false;\r\n }\r\n }\r\n\r\n if (value < (this.numberMin || 0) ||\r\n value > (this.numberMax || 0)) {\r\n return false;\r\n }\r\n\r\n return true;\r\n },\r\n\r\n _onSliderCreated: function(e, ui) {\r\n this._setInitialValue(this.defaultValue);\r\n },\r\n\r\n _onSliderChange: function(e, ui) {\r\n // The values could differ if the step doesn't allow the current value\r\n if (ui.value !== this.getValue()) {\r\n this.setValue(ui.value);\r\n }\r\n\r\n this._updateValueDisplay(ui.value);\r\n this._positionValueDisplay();\r\n this.onInputChanged();\r\n },\r\n\r\n _onSliderSlide: function(e, ui) {\r\n this._updateValueDisplay(ui.value);\r\n this._positionValueDisplay();\r\n\r\n var ee = {\r\n value: ui.value\r\n };\r\n this.triggerExtensibility(constants.extensibility.events.valueChanged, ee);\r\n },\r\n\r\n _setInitialValue: function(defaultValue) {\r\n var value;\r\n switch (this.defaultValueType) {\r\n case 'none':\r\n value = this.numberMin;\r\n break;\r\n\r\n case 'datafield':\r\n if (!this.inStudio) {\r\n if (this.dataContext.hasValue) {\r\n defaultValue = this.dataContext.value;\r\n } else if (this.dataContext.hasDefaultValue) {\r\n defaultValue = this.dataContext.defaultValue;\r\n }\r\n }\r\n\r\n value = Math.min(this.numberMax, Math.max(this.numberMin, statics.coerceToFloat(defaultValue, this.numberMin)));\r\n break;\r\n\r\n case 'custom':\r\n value = Math.min(this.numberMax, Math.max(this.numberMin, statics.coerceToFloat(defaultValue, this.numberMin)));\r\n break;\r\n }\r\n\r\n this.setValue(value);\r\n\r\n this.validate(value);\r\n this._setValueDisplayLocation(this.valueDisplayLocation);\r\n },\r\n\r\n _updateValueDisplay: function(value) {\r\n if (value == null) {\r\n value = this.getValue();\r\n }\r\n\r\n var ee = {\r\n value: value,\r\n prefix: this.valuePrefix,\r\n suffix: this.valueSuffix\r\n };\r\n this.triggerExtensibility(constants.extensibility.events.displayValueChanging, ee);\r\n\r\n this.$elSliderValue.html(ee.value || 0);\r\n\r\n if (ee.prefix) {\r\n this.$elSliderValue.prepend(ee.prefix);\r\n }\r\n if (ee.suffix) {\r\n this.$elSliderValue.append(ee.suffix);\r\n }\r\n },\r\n\r\n _setValueDisplayLocation: function(valueDisplayLocation) {\r\n this.valueDisplayLocation = valueDisplayLocation;\r\n\r\n this._updateValueDisplay();\r\n\r\n // remove classes first -- necessary for live updating\r\n var classesToRemove = {};\r\n this.$.extend(classesToRemove, constants.css.orientation, constants.css.valueLocation);\r\n\r\n for (var c in classesToRemove) {\r\n if (classesToRemove.hasOwnProperty(c)) {\r\n this.$el.removeClass(classesToRemove[c]);\r\n }\r\n }\r\n\r\n // the display value location is controlled by these 2 classes:\r\n this.$el\r\n .addClass(constants.css.orientation[this.orientation])\r\n .addClass(constants.css.valueLocation[this.valueDisplayLocation]);\r\n\r\n this._positionValueDisplay();\r\n },\r\n\r\n _positionValueDisplay: function() {\r\n switch (this.valueDisplayLocation) {\r\n case 'handle': {\r\n // The defer is so that the handle is aligned properly\r\n _.defer(function(me) {\r\n var positionCoords = (me.orientation === 'horizontal')\r\n ? { my: 'center top', at: 'center bottom' }\r\n : { my: 'left center', at: 'right+5 center' };\r\n\r\n me.$elSliderValue.position(_.extend(positionCoords, {\r\n of: me.$el.find(constants.sliderHandleSelector)\r\n }));\r\n }, this);\r\n break;\r\n }\r\n case 'above_handle': {\r\n // The defer is so that the handle is aligned properly\r\n _.defer(function(me) {\r\n var positionCoords = (me.orientation === 'horizontal')\r\n ? { my: 'center top', at: 'center top' }\r\n : { my: 'left center', at: 'left-30 center' };\r\n\r\n me.$elSliderValue.position(_.extend(positionCoords, {\r\n of: me.$el.find(constants.sliderHandleSelector)\r\n }));\r\n }, this);\r\n break;\r\n }\r\n default: {\r\n this.$elSliderValue.css({\r\n position: '',\r\n top: '',\r\n left: ''\r\n });\r\n }\r\n }\r\n },\r\n\r\n studioInitialize: function(options) {\r\n this.deactivateEvents(this.$elSlider);\r\n this.deactivateEvents(this.$elSlider.find(constants.sliderHandleSelector));\r\n if (!Modernizr.pointerevents) {\r\n this.$elSlider.slider('disable');\r\n }\r\n },\r\n\r\n getParamMapOverrides: function() {\r\n return {\r\n defaultValue: function(val) {\r\n this.defaultValue = val;\r\n this._setInitialValue(this.defaultValue);\r\n },\r\n\r\n defaultValueType: function(val) {\r\n this.defaultValueType = val;\r\n this._setInitialValue(this.defaultValue);\r\n },\r\n\r\n orientation: function(val) {\r\n this.orientation = val;\r\n this.$elSlider.slider('option', 'orientation', this.orientation);\r\n this._setValueDisplayLocation(this.valueDisplayLocation);\r\n },\r\n\r\n numberMin: function(val) {\r\n var min = parseFloat(val);\r\n this.numberMin = isNaN(min) ? '' : min;\r\n this.$elSlider.slider('option', 'min', this.numberMin === '' ? 0 : this.numberMin);\r\n\r\n this._setInitialValue(this.defaultValue);\r\n },\r\n\r\n numberMax: function(val) {\r\n var max = parseFloat(val);\r\n this.numberMax = isNaN(max) ? '' : max;\r\n this.$elSlider.slider('option', 'max', this.numberMax === '' ? 100 : this.numberMax);\r\n\r\n this._setInitialValue(this.defaultValue);\r\n },\r\n\r\n numberStep: function(val) {\r\n var step = parseFloat(val);\r\n this.numberStep = isNaN(step) ? 0 : step;\r\n this.$elSlider.slider('option', 'step', this.numberStep || 1);\r\n },\r\n\r\n valueDisplayLocation: this._setValueDisplayLocation,\r\n\r\n valuePrefix: function(val) {\r\n if (val !== this.valuePrefix) {\r\n this.valuePrefix = val;\r\n this._updateValueDisplay();\r\n }\r\n },\r\n\r\n valueSuffix: function(val) {\r\n if (val !== this.valueSuffix) {\r\n this.valueSuffix = val;\r\n this._updateValueDisplay();\r\n }\r\n }\r\n };\r\n },\r\n\r\n allowedDropTargets: function(origin) {\r\n if (origin === 'element'){\r\n return ['ixp-form-field'];\r\n }\r\n return ['ixp-form', 'ixp-form-field'];\r\n },\r\n\r\n onGetCssClassesToPreserve: function() {\r\n return statics.cssClassesToPreserve;\r\n },\r\n\r\n onGetScaffolding: function(scaffoldingKey, builder, options) {\r\n return statics.getScaffolding(scaffoldingKey, builder, options);\r\n }\r\n });\r\n})(window.ixp.runtime);\r\n"]}