slider.min.js 17 KB

1234567891011
  1. /*
  2. * # Fomantic UI - 2.8.4
  3. * https://github.com/fomantic/Fomantic-UI
  4. * http://fomantic-ui.com/
  5. *
  6. * Copyright 2014 Contributors
  7. * Released under the MIT license
  8. * http://opensource.org/licenses/MIT
  9. *
  10. */
  11. !function(U,t,X,Y){"use strict";t=void 0!==t&&t.Math==Math?t:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),U.fn.slider=function(F){var S,e=U(this),A=U(t),D=e.selector||"",O=(new Date).getTime(),N=[],j=F,z="string"==typeof j,I=[].slice.call(arguments,1),R=["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"],B=0;return e.each(function(){var f,i,u,e,v,r,t,o,g,h,b,l,n,c,s,d=U.isPlainObject(F)?U.extend(!0,{},U.fn.slider.settings,F):U.extend({},U.fn.slider.settings),a=d.className,m=d.metadata,p=d.namespace,k=d.error,V=d.keys,T=d.interpretLabel,w=!1,y="."+p,M="module-"+p,x=U(this),P=this,E=x.data(M),C=1,L={initialize:function(){L.debug("Initializing slider",d),s=!0,t=B+=1,n=L.setup.testOutTouch(),L.setup.layout(),L.setup.labels(),L.is.disabled()||L.bind.events(),L.read.metadata(),L.read.settings(),s=!1,L.instantiate()},instantiate:function(){L.verbose("Storing instance of slider",L),E=L,x.data(M,L)},destroy:function(){L.verbose("Destroying previous slider for",x),clearInterval(E.interval),L.unbind.events(),L.unbind.slidingEvents(),x.removeData(M),E=Y},setup:{layout:function(){x.attr("tabindex")===Y&&x.attr("tabindex",0),0==x.find(".inner").length&&x.append("<div class='inner'><div class='track'></div><div class='track-fill'></div><div class='thumb'></div></div>"),l=L.get.precision(),i=x.find(".thumb:not(.second)"),f=i,L.is.range()&&(0==x.find(".thumb.second").length&&x.find(".inner").append("<div class='thumb second'></div>"),u=x.find(".thumb.second")),e=x.find(".track"),v=x.find(".track-fill"),b=i.width()/2},labels:function(){L.is.labeled()&&(0!=(r=x.find(".labels:not(.auto)")).length?L.setup.customLabel():L.setup.autoLabel(),d.showLabelTicks&&x.addClass(a.ticked))},testOutTouch:function(){try{return X.createEvent("TouchEvent"),!0}catch(e){return!1}},customLabel:function(){var n,e=r.find(".label"),a=e.length,o=L.get.min(),s=L.get.max();e.each(function(e){var t=U(this).attr("data-value");n=t?((t=s<t?s:t<o?o:t)-o)/(s-o):(e+1)/(a+1),L.update.labelPosition(n,U(this))})},autoLabel:function(){if(0!=L.get.step()){0!=(r=x.find(".labels")).length?r.empty():r=x.append('<ul class="auto labels"></ul>').find(".labels");for(var e=0,t=L.get.numLabels();e<=t;e++){var n=L.get.label(e),a=""!==n?e%L.get.gapRatio()?U('<li class="halftick label"></li>'):U('<li class="label">'+n+"</li>"):null,o=e/t;a&&(L.update.labelPosition(o,a),r.append(a))}}}},bind:{events:function(){L.bind.globalKeyboardEvents(),L.bind.keyboardEvents(),L.bind.mouseEvents(),L.is.touch()&&L.bind.touchEvents(),d.autoAdjustLabels&&L.bind.windowEvents()},keyboardEvents:function(){L.verbose("Binding keyboard events"),x.on("keydown"+y,L.event.keydown)},globalKeyboardEvents:function(){U(X).on("keydown"+y+t,L.event.activateFocus)},mouseEvents:function(){L.verbose("Binding mouse events"),x.find(".track, .thumb, .inner").on("mousedown"+y,function(e){e.stopImmediatePropagation(),e.preventDefault(),L.event.down(e)}),x.on("mousedown"+y,L.event.down),x.on("mouseenter"+y,function(e){w=!0}),x.on("mouseleave"+y,function(e){w=!1})},touchEvents:function(){L.verbose("Binding touch events"),x.find(".track, .thumb, .inner").on("touchstart"+y,function(e){e.stopImmediatePropagation(),e.preventDefault(),L.event.down(e)}),x.on("touchstart"+y,L.event.down)},slidingEvents:function(){L.verbose("Binding page wide events while handle is being draged"),L.is.touch()?(U(X).on("touchmove"+y,L.event.move),U(X).on("touchend"+y,L.event.up)):(U(X).on("mousemove"+y,L.event.move),U(X).on("mouseup"+y,L.event.up))},windowEvents:function(){A.on("resize"+y,L.event.resize)}},unbind:{events:function(){x.find(".track, .thumb, .inner").off("mousedown"+y),x.find(".track, .thumb, .inner").off("touchstart"+y),x.off("mousedown"+y),x.off("mouseenter"+y),x.off("mouseleave"+y),x.off("touchstart"+y),x.off("keydown"+y),x.off("focusout"+y),U(X).off("keydown"+y+t,L.event.activateFocus),A.off("resize"+y)},slidingEvents:function(){L.is.touch()?(U(X).off("touchmove"+y),U(X).off("touchend"+y)):(U(X).off("mousemove"+y),U(X).off("mouseup"+y))}},event:{down:function(e){var t,n;e.preventDefault(),L.is.range()&&(t=L.determine.eventPos(e),n=L.determine.pos(t),f=d.preventCrossover&&L.is.range()&&L.thumbVal===L.secondThumbVal?(c=n,Y):L.determine.closestThumb(n)),L.is.disabled()||L.bind.slidingEvents()},move:function(e){e.preventDefault();var t,n,a,o,s,r=L.determine.valueFromEvent(e);f===Y&&(t=L.determine.eventPos(e),n=L.determine.pos(t),f=n<c?i:u),0==L.get.step()||L.is.smooth()?(a=L.thumbVal,o=L.secondThumbVal,s=L.determine.smoothValueFromEvent(e),f.hasClass("second")?(d.preventCrossover&&L.is.range()&&(r=Math.max(a,r),s=Math.max(a,s)),o=r):(d.preventCrossover&&L.is.range()&&(r=Math.min(o,r),s=Math.min(o,s)),a=r),r=Math.abs(a-(o||0)),L.update.position(s),d.onMove.call(P,r,a,o)):L.update.value(r,function(e,t,n){d.onMove.call(P,e,t,n)})},up:function(e){e.preventDefault();var t=L.determine.valueFromEvent(e);L.set.value(t),L.unbind.slidingEvents()},keydown:function(e,t){if(d.preventCrossover&&L.is.range()&&L.thumbVal===L.secondThumbVal&&(f=Y),L.is.focused()&&U(X).trigger(e),t||L.is.focused()){var n=L.determine.keyMovement(e);if(0!=n)switch(e.preventDefault(),n){case 1:L.takeStep();break;case 2:L.takeStep(L.get.multiplier());break;case-1:L.backStep();break;case-2:L.backStep(L.get.multiplier())}}},activateFocus:function(e){!L.is.focused()&&L.is.hover()&&0!=L.determine.keyMovement(e)&&(e.preventDefault(),L.event.keydown(e,!0),x.focus())},resize:function(e){C!=L.get.gapRatio()&&(L.setup.labels(),C=L.get.gapRatio())}},resync:function(){L.verbose("Resyncing thumb position based on value"),L.is.range()&&L.update.position(L.secondThumbVal,u),L.update.position(L.thumbVal,i),L.setup.labels()},takeStep:function(e){var t,n,e=e!=Y?e:1,a=L.get.step(),o=L.get.currentThumbValue();L.verbose("Taking a step"),0<a?L.set.value(o+a*e):0==a&&(n=o+e/(t=L.get.precision()),L.set.value(Math.round(n*t)/t))},backStep:function(e){var t,n,e=e!=Y?e:1,a=L.get.step(),o=L.get.currentThumbValue();L.verbose("Going back a step"),0<a?L.set.value(o-a*e):0==a&&(n=o-e/(t=L.get.precision()),L.set.value(Math.round(n*t)/t))},is:{range:function(){return x.hasClass(d.className.range)},hover:function(){return w},focused:function(){return x.is(":focus")},disabled:function(){return x.hasClass(d.className.disabled)},labeled:function(){return x.hasClass(d.className.labeled)},reversed:function(){return x.hasClass(d.className.reversed)},vertical:function(){return x.hasClass(d.className.vertical)},smooth:function(){return d.smooth||x.hasClass(d.className.smooth)},touch:function(){return n}},get:{trackOffset:function(){return L.is.vertical()?e.offset().top:e.offset().left},trackLength:function(){return L.is.vertical()?e.height():e.width()},trackLeft:function(){return L.is.vertical()?e.position().top:e.position().left},trackStartPos:function(){return L.is.reversed()?L.get.trackLeft()+L.get.trackLength():L.get.trackLeft()},trackEndPos:function(){return L.is.reversed()?L.get.trackLeft():L.get.trackLeft()+L.get.trackLength()},trackStartMargin:function(){var e=L.is.vertical()?L.is.reversed()?x.css("padding-bottom"):x.css("padding-top"):L.is.reversed()?x.css("padding-right"):x.css("padding-left");return e||"0px"},trackEndMargin:function(){var e=L.is.vertical()?L.is.reversed()?x.css("padding-top"):x.css("padding-bottom"):L.is.reversed()?x.css("padding-left"):x.css("padding-right");return e||"0px"},precision:function(){var e,t,n=L.get.step();t=0!=n?2==(e=String(n).split(".")).length?e[1].length:0:d.decimalPlaces;var a=Math.pow(10,t);return L.debug("Precision determined",a),a},min:function(){return d.min},max:function(){var e=L.get.step(),t=L.get.min(),n=0===e?0:Math.floor((d.max-t)/e);return 0==(0===e?0:(d.max-t)%e)?d.max:t+n*e},step:function(){return d.step},numLabels:function(){var e=Math.round((L.get.max()-L.get.min())/L.get.step());return L.debug("Determined that there should be "+e+" labels"),e},labelType:function(){return d.labelType},label:function(e){if(T)return T(e);switch(d.labelType){case d.labelTypes.number:return Math.round((e*L.get.step()+L.get.min())*l)/l;case d.labelTypes.letter:return R[e%26];default:return e}},value:function(){return o},currentThumbValue:function(){return f!==Y&&f.hasClass("second")?L.secondThumbVal:L.thumbVal},thumbValue:function(e){switch(e){case"second":if(L.is.range())return L.secondThumbVal;L.error(k.notrange);break;case"first":default:return L.thumbVal}},multiplier:function(){return d.pageMultiplier},thumbPosition:function(e){switch(e){case"second":if(L.is.range())return h;L.error(k.notrange);break;case"first":default:return g}},gapRatio:function(){var e=1;if(d.autoAdjustLabels){var t=L.get.numLabels(),n=L.get.trackLength(),a=1;if(0<n)for(;n/t*a<d.labelDistance;)t%a||(e=a),a+=1}return e}},determine:{pos:function(e){return L.is.reversed()?L.get.trackStartPos()-e+L.get.trackOffset():e-L.get.trackOffset()-L.get.trackStartPos()},closestThumb:function(e){var t=parseFloat(L.determine.thumbPos(i)),n=Math.abs(e-t),a=parseFloat(L.determine.thumbPos(u)),o=Math.abs(e-a);return(n!==o||L.get.thumbValue()!==L.get.min())&&n<=o?i:u},closestThumbPos:function(e){var t=parseFloat(L.determine.thumbPos(i)),n=Math.abs(e-t),a=parseFloat(L.determine.thumbPos(u));return n<=Math.abs(e-a)?t:a},thumbPos:function(e){return L.is.vertical()?L.is.reversed()?e.css("bottom"):e.css("top"):L.is.reversed()?e.css("right"):e.css("left")},positionFromValue:function(e){var t=L.get.min(),n=L.get.max(),e=n<e?n:e<t?t:e,a=L.get.trackLength(),o=(e-t)/(n-t),s=Math.round(o*a);return L.verbose("Determined position: "+s+" from value: "+e),s},positionFromRatio:function(e){var t=L.get.trackLength(),n=L.get.step(),a=Math.round(e*t);return 0==n?a:Math.round(a/n)*n},valueFromEvent:function(e){var t=L.determine.eventPos(e),n=L.determine.pos(t),a=t<L.get.trackOffset()?L.is.reversed()?L.get.max():L.get.min():t>L.get.trackOffset()+L.get.trackLength()?L.is.reversed()?L.get.min():L.get.max():L.determine.value(n);return a},smoothValueFromEvent:function(e){var t=L.get.min(),n=L.get.max(),a=L.get.trackLength(),o=L.determine.eventPos(e)-L.get.trackOffset(),s=(o=o<0?0:a<o?a:o)/a;return L.is.reversed()&&(s=1-s),s*(n-t)+t},eventPos:function(e){if(L.is.touch()){var t=e.changedTouches?e:e.originalEvent,n=t.changedTouches[0]?t.changedTouches:t.touches,a=n[0].pageY,o=n[0].pageX;return L.is.vertical()?a:o}var s=e.pageY||e.originalEvent.pageY,r=e.pageX||e.originalEvent.pageX;return L.is.vertical()?s:r},value:function(e){var t=L.is.reversed()?L.get.trackEndPos():L.get.trackStartPos(),n=(e-t)/((L.is.reversed()?L.get.trackStartPos():L.get.trackEndPos())-t),a=L.get.max()-L.get.min(),o=L.get.step(),s=n*a,r=0==o?s:Math.round(s/o)*o;return L.verbose("Determined value based upon position: "+e+" as: "+s),s!=r&&L.verbose("Rounding value to closest step: "+r),r=Math.round(r*l)/l,L.verbose("Cutting off additional decimal places"),r+L.get.min()},keyMovement:function(e){var t=e.which,n=!L.is.vertical()||L.is.reversed()?V.downArrow:V.upArrow,a=!L.is.vertical()||L.is.reversed()?V.upArrow:V.downArrow,o=!L.is.vertical()&&L.is.reversed()?V.rightArrow:V.leftArrow,s=!L.is.vertical()&&L.is.reversed()?V.leftArrow:V.rightArrow;return t==n||t==o?-1:t==a||t==s?1:t==V.pageDown?-2:t==V.pageUp?2:0}},handleNewValuePosition:function(e){var t=L.get.min(),n=L.get.max();return e<=t?e=t:n<=e&&(e=n),L.determine.positionFromValue(e)},set:{value:function(e){L.update.value(e,function(e,t,n){s&&!d.fireOnInit||(d.onChange.call(P,e,t,n),d.onMove.call(P,e,t,n))})},rangeValue:function(e,t){var n,a;L.is.range()?(n=L.get.min(),a=L.get.max(),e<=n?e=n:a<=e&&(e=a),t<=n?t=n:a<=t&&(t=a),L.thumbVal=e,L.secondThumbVal=t,o=Math.abs(L.thumbVal-L.secondThumbVal),L.update.position(L.thumbVal,i),L.update.position(L.secondThumbVal,u),s&&!d.fireOnInit||(d.onChange.call(P,o,L.thumbVal,L.secondThumbVal),d.onMove.call(P,o,L.thumbVal,L.secondThumbVal))):L.error(k.notrange)},position:function(e,t){var n=L.determine.value(e);switch(t){case"second":L.secondThumbVal=n,L.update.position(n,u);break;default:L.thumbVal=n,L.update.position(n,i)}o=Math.abs(L.thumbVal-(L.secondThumbVal||0)),L.set.value(o)}},update:{value:function(e,t){var n=L.get.min(),a=L.get.max();e<=n?e=n:a<=e&&(e=a),L.is.range()?(f===Y&&(f=e<=L.get.currentThumbValue()?i:u),f.hasClass("second")?(d.preventCrossover&&L.is.range()&&(e=Math.max(L.thumbVal,e)),L.secondThumbVal=e):(d.preventCrossover&&L.is.range()&&(e=Math.min(L.secondThumbVal,e)),L.thumbVal=e),o=Math.abs(L.thumbVal-L.secondThumbVal)):(o=e,L.thumbVal=o),L.update.position(e),L.debug("Setting slider value to "+o),"function"==typeof t&&t(o,L.thumbVal,L.secondThumbVal)},position:function(e,t){var n=L.handleNewValuePosition(e),a=t!=Y?t:f,o=L.thumbVal||L.get.min(),s=L.secondThumbVal||L.get.min();L.is.range()&&a.hasClass("second")?(h=n,s=e):(g=n,o=e);var r,i=L.get.min(),u=L.get.max(),l=100*(e-i)/(u-i),c=100*(Math.min(o,s)-i)/(u-i),d=100*(1-(Math.max(o,s)-i)/(u-i)),m=L.is.vertical()?L.is.reversed()?(r={bottom:"calc("+l+"% - "+b+"px)",top:"auto"},{bottom:c+"%",top:d+"%"}):(r={top:"calc("+l+"% - "+b+"px)",bottom:"auto"},{top:c+"%",bottom:d+"%"}):L.is.reversed()?(r={right:"calc("+l+"% - "+b+"px)",left:"auto"},{right:c+"%",left:d+"%"}):(r={left:"calc("+l+"% - "+b+"px)",right:"auto"},{left:c+"%",right:d+"%"});a.css(r),v.css(m),L.debug("Setting slider position to "+n)},labelPosition:function(e,t){var n=L.get.trackStartMargin(),a=L.get.trackEndMargin(),o=L.is.vertical()?L.is.reversed()?"bottom":"top":L.is.reversed()?"right":"left",s=L.is.reversed()&&!L.is.vertical()?" - ":" + ",r="(100% - "+n+" - "+a+") * "+e;t.css(o,"calc("+r+s+n+")")}},goto:{max:function(){L.set.value(L.get.max())},min:function(){L.set.value(L.get.min())}},read:{metadata:function(){var e={thumbVal:x.data(m.thumbVal),secondThumbVal:x.data(m.secondThumbVal)};e.thumbVal&&(L.is.range()&&e.secondThumbVal?(L.debug("Current value set from metadata",e.thumbVal,e.secondThumbVal),L.set.rangeValue(e.thumbVal,e.secondThumbVal)):(L.debug("Current value set from metadata",e.thumbVal),L.set.value(e.thumbVal)))},settings:function(){!1!==d.start&&(L.is.range()?(L.debug("Start position set from settings",d.start,d.end),L.set.rangeValue(d.start,d.end)):(L.debug("Start position set from settings",d.start),L.set.value(d.start)))}},setting:function(e,t){if(L.debug("Changing setting",e,t),U.isPlainObject(e))U.extend(!0,d,e);else{if(t===Y)return d[e];U.isPlainObject(d[e])?U.extend(!0,d[e],t):d[e]=t}},internal:function(e,t){if(U.isPlainObject(e))U.extend(!0,L,e);else{if(t===Y)return L[e];L[e]=t}},debug:function(){!d.silent&&d.debug&&(d.performance?L.performance.log(arguments):(L.debug=Function.prototype.bind.call(console.info,console,d.name+":"),L.debug.apply(console,arguments)))},verbose:function(){!d.silent&&d.verbose&&d.debug&&(d.performance?L.performance.log(arguments):(L.verbose=Function.prototype.bind.call(console.info,console,d.name+":"),L.verbose.apply(console,arguments)))},error:function(){d.silent||(L.error=Function.prototype.bind.call(console.error,console,d.name+":"),L.error.apply(console,arguments))},performance:{log:function(e){var t,n;d.performance&&(n=(t=(new Date).getTime())-(O||t),O=t,N.push({Name:e[0],Arguments:[].slice.call(e,1)||"",Element:P,"Execution Time":n})),clearTimeout(L.performance.timer),L.performance.timer=setTimeout(L.performance.display,500)},display:function(){var e=d.name+":",n=0;O=!1,clearTimeout(L.performance.timer),U.each(N,function(e,t){n+=t["Execution Time"]}),e+=" "+n+"ms",D&&(e+=" '"+D+"'"),(console.group!==Y||console.table!==Y)&&0<N.length&&(console.groupCollapsed(e),console.table?console.table(N):U.each(N,function(e,t){console.log(t.Name+": "+t["Execution Time"]+"ms")}),console.groupEnd()),N=[]}},invoke:function(a,e,t){var o,s,n,r=E;return e=e||I,t=P||t,"string"==typeof a&&r!==Y&&(a=a.split(/[\. ]/),o=a.length-1,U.each(a,function(e,t){var n=e!=o?t+a[e+1].charAt(0).toUpperCase()+a[e+1].slice(1):a;if(U.isPlainObject(r[n])&&e!=o)r=r[n];else{if(r[n]!==Y)return s=r[n],!1;if(!U.isPlainObject(r[t])||e==o)return r[t]!==Y?s=r[t]:L.error(k.method,a),!1;r=r[t]}})),U.isFunction(s)?n=s.apply(t,e):s!==Y&&(n=s),U.isArray(S)?S.push(n):S!==Y?S=[S,n]:n!==Y&&(S=n),s}};z?(E===Y&&L.initialize(),L.invoke(j)):(E!==Y&&E.invoke("destroy"),L.initialize())}),S!==Y?S:this},U.fn.slider.settings={silent:!1,debug:!1,verbose:!1,performance:!0,name:"Slider",namespace:"slider",error:{method:"The method you called is not defined.",notrange:"This slider is not a range slider"},metadata:{thumbVal:"thumbVal",secondThumbVal:"secondThumbVal"},min:0,max:20,step:1,start:0,end:20,labelType:"number",showLabelTicks:!1,smooth:!1,autoAdjustLabels:!0,labelDistance:100,preventCrossover:!0,fireOnInit:!1,decimalPlaces:2,pageMultiplier:2,selector:{},className:{reversed:"reversed",disabled:"disabled",labeled:"labeled",ticked:"ticked",vertical:"vertical",range:"range",smooth:"smooth"},keys:{pageUp:33,pageDown:34,leftArrow:37,upArrow:38,rightArrow:39,downArrow:40},labelTypes:{number:"number",letter:"letter"},onChange:function(e,t,n){},onMove:function(e,t,n){}}}(jQuery,window,document);