primereact
Version:
PrimeReact is an open source UI library for React featuring a rich set of 90+ components, a theme designer, various theme alternatives such as Material, Bootstrap, Tailwind, premium templates and professional support. In addition, it integrates with Prime
2 lines (1 loc) • 5.75 kB
JavaScript
import*as e from"react";import{useEventListener as n}from"primereact/hooks";import{ObjectUtils as r,DomHandler as t,classNames as a}from"primereact/utils";function o(){return o=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var t in r)Object.prototype.hasOwnProperty.call(r,t)&&(e[t]=r[t])}return e},o.apply(this,arguments)}function i(e,n){(null==n||n>e.length)&&(n=e.length);for(var r=0,t=new Array(n);r<n;r++)t[r]=e[r];return t}function l(e){if(Array.isArray(e))return i(e)}function u(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function c(e,n){if(e){if("string"==typeof e)return i(e,n);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?i(e,n):void 0}}function s(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function f(e){if(Array.isArray(e))return e}function m(e,n){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var t,a,o,i,l=[],u=!0,c=!1;try{if(o=(r=r.call(e)).next,0===n){if(Object(r)!==r)return;u=!1}else for(;!(u=(t=o.call(r)).done)&&(l.push(t.value),l.length!==n);u=!0);}catch(e){c=!0,a=e}finally{try{if(!u&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(c)throw a}}return l}}function d(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function p(e,n){return f(e)||m(e,n)||c(e,n)||d()}var h={defaultProps:{__TYPE:"Slider",id:null,value:null,min:0,max:100,orientation:"horizontal",step:null,range:!1,style:null,className:null,disabled:!1,tabIndex:0,onChange:null,onSlideEnd:null,children:void 0},getProps:function(e){return r.getMergedProps(e,h.defaultProps)},getOtherProps:function(e){return r.getDiffProps(e,h.defaultProps)}},v=e.memo(e.forwardRef((function(i,f){var m=h.getProps(i),d=e.useRef(null),v=e.useRef(0),g=e.useRef(!1),y=e.useRef(!1),b=e.useRef(0),x=e.useRef(0),w=e.useRef(0),E=e.useRef(0),S=m.range?m.value||[m.min,m.max]:m.value||0,A="horizontal"===m.orientation,P="vertical"===m.orientation,R=p(n({type:"mousemove",listener:function(e){return _(e)}}),2),O=R[0],I=R[1],j=p(n({type:"mouseup",listener:function(e){return H(e)}}),2),C=j[0],N=j[1],D=p(n({type:"touchmove",listener:function(e){return _(e)}}),2),M=D[0],T=D[1],F=p(n({type:"touchend",listener:function(e){return H(e)}}),2),k=F[0],z=F[1],W=function(e,n){$(e,(m.range?S[v.current]:S)+(m.step||1)*n),e.preventDefault()},Y=function(e,n){m.disabled||(y.current=!0,X(),g.current=!0,v.current=n)},_=function(e){y.current&&(B(e),e.preventDefault())},H=function(e){y.current&&(y.current=!1,m.onSlideEnd&&m.onSlideEnd({originalEvent:e,value:m.value}),I(),N(),T(),z())},K=function(e,n){O(),C(),Y(0,n)},L=function(e,n){M(),k(),Y(0,n)},U=function(e,n){if(!m.disabled){v.current=n;var r=e.key;"ArrowRight"===r||"ArrowUp"===r?W(e,1):"ArrowLeft"!==r&&"ArrowDown"!==r||W(e,-1)}},X=function(){var e=d.current.getBoundingClientRect();b.current=e.left+t.getWindowScrollLeft(),x.current=e.top+t.getWindowScrollTop(),w.current=d.current.offsetWidth,E.current=d.current.offsetHeight},B=function(e){var n=(A?100*((e.touches?e.touches[0].pageX:e.pageX)-b.current)/w.current:100*(x.current+E.current-(e.touches?e.touches[0].pageY:e.pageY))/E.current)/100*(m.max-m.min)+m.min;if(m.step){var r=m.range?S[v.current]:S,t=n-r;t<0?n=r+Math.ceil(n/m.step-r/m.step)*m.step:t>0&&(n=r+Math.floor(n/m.step-r/m.step)*m.step)}else n=Math.floor(n);return $(e,n)},$=function(e,n){var r,t=parseFloat(n.toFixed(10)),a=t;return m.range?(0===v.current?t<m.min?t=m.min:t>S[1]&&(t=S[1]):t>m.max?t=m.max:t<S[0]&&(t=S[0]),(a=l(r=S)||u(r)||c(r)||s())[v.current]=t,m.onChange&&m.onChange({originalEvent:e,value:a})):(t<m.min?t=m.min:t>m.max&&(t=m.max),a=t,m.onChange&&m.onChange({originalEvent:e,value:a})),a},q=function(n,r,t){var i={transition:y.current?"none":null,left:null!==n&&n+"%",bottom:r&&r+"%"},l=a("p-slider-handle",{"p-slider-handle-start":0===t,"p-slider-handle-end":1===t,"p-slider-handle-active":v.current===t});return e.createElement("span",o({className:l,style:i,tabIndex:m.tabIndex,role:"slider",onMouseDown:function(e){return K(0,t)},onTouchStart:function(e){return L(0,t)},onKeyDown:function(e){return U(e,t)},"aria-valuemin":m.min,"aria-valuemax":m.max,"aria-valuenow":n||r,"aria-orientation":m.orientation},ee))};e.useImperativeHandle(f,(function(){return{props:m,getElement:function(){return d.current}}}));var G,J,Q,V,Z=h.getOtherProps(m),ee=r.reduceKeys(Z,t.ARIA_PROPS),ne=a("p-slider p-component",m.className,{"p-disabled":m.disabled,"p-slider-horizontal":A,"p-slider-vertical":P}),re=m.range?(G=100*(S[0]<m.min?m.min:S[0]-m.min)/(m.max-m.min),J=100*(S[1]>m.max?m.max:S[1]-m.min)/(m.max-m.min),Q=A?q(G,null,0):q(null,G,0),V=A?q(J,null,1):q(null,J,1),e.createElement(e.Fragment,null,e.createElement("span",{className:"p-slider-range",style:A?{left:G+"%",width:J-G+"%"}:{bottom:G+"%",height:J-G+"%"}}),Q,V)):function(){var n;n=S<m.min?m.min:S>m.max?m.max:100*(S-m.min)/(m.max-m.min);var r=A?{width:n+"%"}:{height:n+"%"},t=A?q(n,null,null):q(null,n,null);return e.createElement(e.Fragment,null,e.createElement("span",{className:"p-slider-range",style:r}),t)}();return e.createElement("div",o({ref:d,id:m.id,style:m.style,className:ne},Z,{onClick:function(e){if(!m.disabled){if(!g.current){X();var n=B(e);m.onSlideEnd&&m.onSlideEnd({originalEvent:e,value:n})}g.current=!1}}}),re)})));v.displayName="Slider";export{v as Slider};