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) • 12.3 kB
JavaScript
import*as e from"react";import{DomHandler as t,ObjectUtils as n}from"primereact/utils";function r(e){if(Array.isArray(e))return e}function u(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,u,c,o,i=[],f=!0,a=!1;try{if(c=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;f=!1}else for(;!(f=(r=c.call(n)).done)&&(i.push(r.value),i.length!==t);f=!0);}catch(e){a=!0,u=e}finally{try{if(!f&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(a)throw u}}return i}}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function o(e,t){if(e){if("string"==typeof e)return c(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?c(e,t):void 0}}function i(){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 f(e,t){return r(e)||u(e,t)||o(e,t)||i()}var a=function(t){var n=e.useRef(void 0);return e.useEffect((function(){n.current=t})),n.current},l=function(t){return e.useEffect((function(){return t}),[])},s=function(r){var u=r.target,c=void 0===u?"document":u,o=r.type,i=r.listener,f=r.options,s=r.when,v=void 0===s||s,p=e.useRef(null),g=e.useRef(null),d=a(f),m=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};n.isNotEmpty(e.target)&&(y(),(e.when||v)&&(p.current=t.getTargetElement(e.target))),!g.current&&p.current&&(g.current=function(e){return i&&i(e)},p.current.addEventListener(o,g.current,f))},y=function(){g.current&&(p.current.removeEventListener(o,g.current,f),g.current=null)};return e.useEffect((function(){v?p.current=t.getTargetElement(c):(y(),p.current=null)}),[c,v]),e.useEffect((function(){!g.current||g.current===i&&d===f||(y(),v&&m())}),[i,f]),l((function(){y()})),[m,y]},v=function(t,n){var r=function(e){t.current&&!t.current.contains(e.target)&&n(e)},u=f(s({type:"mousedown",listener:r}),2),c=u[0],o=u[1],i=f(s({type:"touchstart",listener:r}),2),a=i[0],l=i[1];return e.useEffect((function(){if(t.current)return c(),a(),function(){o(),l()}})),[t,n]},p=function(){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{step:1},n=f(e.useState(arguments.length>0&&void 0!==arguments[0]?arguments[0]:0),2),r=n[0],u=n[1];return{count:r,increment:function(){t.max&&r>=t.max||u(r+t.step)},decrement:function(){if(t.min||0===t.min&&r<=t.min)return null;u(r-t.step)},reset:function(){u(0)}}},g=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],u=e.useRef(null),c=e.useRef(null),o=e.useCallback((function(){return clearTimeout(u.current)}),[u.current]);return e.useEffect((function(){c.current=t})),e.useEffect((function(){if(r)return u.current=setTimeout((function(){c.current()}),n),o;o()}),[n,r]),l((function(){o()})),[o]},d=function(t,n){var r=f(e.useState(t),2),u=r[0],c=r[1],o=f(e.useState(t),2),i=o[0],a=o[1];return g((function(){a(u)}),n,u!==i),[u,i,c]},m={ico:"image/x-icon",png:"image/png",svg:"image/svg+xml",gif:"image/gif"},y=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"shortcut icon";e.useLayoutEffect((function(){if(t){document.querySelectorAll("link[rel*='icon']").forEach((function(e){document.head.removeChild(e)}));var e=document.createElement("link");e.setAttribute("type",m[t.split(".").pop()]),e.setAttribute("rel",n),e.setAttribute("href",t),document.head.appendChild(e)}}),[t,n])},h=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=f(e.useState(!1),2),u=r[0],c=r[1];return e.useEffect((function(){if(t.current){var e=new IntersectionObserver((function(e){var t=f(e,1);c(t[0].isIntersecting)}),n);return e.observe(t.current),function(){e.disconnect()}}}),[n,t]),u},b=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],u=e.useRef(null),c=e.useRef(null),o=e.useCallback((function(){return clearInterval(u.current)}),[u.current]);return e.useEffect((function(){c.current=t})),e.useEffect((function(){if(r)return u.current=setInterval((function(){c.current()}),n),o;o()}),[n,r]),l((function(){o()})),[o]},w=function(t){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=f(e.useState(!1),2),u=r[0],c=r[1],o=e.useRef(null),i=function(e){return c(e.matches)},a=function(){return o.current&&o.current.removeEventListener("change",i)&&(o.current=null)};return e.useEffect((function(){return n&&(o.current=window.matchMedia(t),c(o.current.matches),o.current&&o.current.addEventListener("change",i)),a}),[t,n]),u},E=function(t){return e.useEffect(t,[])};function O(e){return O="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},O(e)}function S(e,t){if("object"!==O(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!==O(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}function j(e){var t=S(e,"string");return"symbol"===O(t)?t:String(t)}function P(e,t,n){return(t=j(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function R(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function x(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?R(Object(n),!0).forEach((function(t){P(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):R(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var T=function(){var t=f(e.useState({x:0,y:0}),2),n=t[0],r=t[1],u=e.useRef(null),c=e.useCallback((function(e){var t,n;if(u.current){var c=e.currentTarget.getBoundingClientRect();t=e.pageX-c.left-(window.pageXOffset||window.scrollX),n=e.pageY-c.top-(window.pageYOffset||window.scrollY)}else t=e.clientX,n=e.clientY;r({x:Math.max(0,Math.round(t)),y:Math.max(0,Math.round(n))})}),[]),o=f(s({target:u,type:"mousemove",listener:c}),2),i=o[0],a=o[1],l=f(s({type:"mousemove",listener:c}),2),v=l[0],p=l[1];return e.useEffect((function(){return i(),u.current||v(),function(){a(),u.current||p()}}),[v,i,p,a]),x(x({ref:u},n),{},{reset:function(){return r({x:0,y:0})}})};function D(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function A(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?D(Object(n),!0).forEach((function(t){P(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):D(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function I(t){var n=t.mode,r=void 0===n?"both":n,u=t.initialValue,c=void 0===u?{x:0,y:0}:u,o=f(e.useState(c),2),i=o[0],a=o[1],l=f(e.useState(!1),2),v=l[0],p=l[1],g=e.useRef(!1),d=e.useRef(!1),m=e.useRef(null),y=function(e){return q({x:e.clientX,y:e.clientY})},h=function(e){var t=e.clampedX,n=e.clampedY;"vertical"===r?a({y:1-n}):"horizontal"===r?a({x:t}):"both"===r&&a({x:t,y:n})},b=function(){d.current&&g.current&&(d.current=!1,p(!1),J())},w=function(e){e.cancelable&&e.preventDefault(),q({x:e.changedTouches[0].clientX,y:e.changedTouches[0].clientY})},E=f(s({type:"mousemove",listener:y}),2),O=E[0],S=E[1],j=f(s({type:"mouseup",listener:b}),2),P=j[0],R=j[1],x=f(s({type:"touchmove",listener:w}),2),T=x[0],D=x[1],I=f(s({type:"touchend",listener:b}),2),k=I[0],X=I[1],Y=f(s({target:m,type:"mousedown",listener:function(e){V(),e.preventDefault(),y(e)}}),2),C=Y[0],M=Y[1],L=f(s({target:m,type:"touchstart",listener:function(e){e.cancelable&&e.preventDefault(),V(),w(e)},options:{passive:!1}}),2),N=L[0],z=L[1],B=function(e,t,n){return Math.min(Math.max(e,t),n)},F=function(e){var t=e.y;return{clampedX:B(e.x,0,1),clampedY:B(t,0,1)}},J=function(){S(),R(),D(),X()};e.useEffect((function(){g.current=!0}),[]);var V=function(){!d.current&&g.current&&(d.current=!0,p(!0),O(),P(),T(),k())},q=function(e){var t=e.x,n=e.y;if(d.current){var r=m.current.getBoundingClientRect(),u=F({x:(t-r.left)/r.width,y:(n-r.top)/r.height});h({clampedX:u.clampedX,clampedY:u.clampedY})}};return e.useEffect((function(){return m.current&&(C(),N()),function(){m.current&&(M(),z())}}),[C,N,i,M,z]),A(A({ref:m},i),{},{active:v,reset:function(){a(c)}})}var k=function(r){var u=r.target,c=r.listener,o=r.options,i=r.when,f=void 0===i||i,s=e.useRef(null),v=e.useRef(null),p=e.useRef([]),g=a(o),d=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(n.isNotEmpty(e.target)&&(m(),(e.when||f)&&(s.current=t.getTargetElement(e.target))),!v.current&&s.current){var r=p.current=t.getScrollableParents(s.current);v.current=function(e){return c&&c(e)},r.forEach((function(e){return e.addEventListener("scroll",v.current,o)}))}},m=function(){v.current&&(p.current.forEach((function(e){return e.removeEventListener("scroll",v.current,o)})),v.current=null)};return e.useEffect((function(){f?s.current=t.getTargetElement(u):(m(),s.current=null)}),[u,f]),e.useEffect((function(){!v.current||v.current===c&&g===o||(m(),f&&d())}),[c,o]),l((function(){m()})),[d,m]},X=function(e){var t=e.when;return s({target:"window",type:"resize",listener:e.listener,when:void 0===t||t})},Y=function(n){var r=n.target,u=n.overlay,c=n.listener,o=n.when,i=void 0===o||o,a=e.useRef(null),v=e.useRef(null),p=f(s({type:"click",listener:function(e){c&&c(e,{type:"outside",valid:3!==e.which&&P(e)})}}),2),g=p[0],d=p[1],m=f(X({listener:function(e){c&&c(e,{type:"resize",valid:!t.isTouchDevice()})}}),2),y=m[0],h=m[1],b=f(s({target:"window",type:"orientationchange",listener:function(e){c&&c(e,{type:"orientationchange",valid:!0})}}),2),w=b[0],E=b[1],O=f(k({target:r,listener:function(e){c&&c(e,{type:"scroll",valid:!0})}}),2),S=O[0],j=O[1],P=function(e){return a.current&&!(a.current.isSameNode(e.target)||a.current.contains(e.target)||v.current&&v.current.contains(e.target))},R=function(){d(),h(),E(),j()};return e.useEffect((function(){i?(a.current=t.getTargetElement(r),v.current=t.getTargetElement(u)):(R(),a.current=v.current=null)}),[r,u,i]),e.useEffect((function(){R()}),[i]),l((function(){R()})),[function(){g(),y(),w(),S()},R]},C=function(t,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"local",u="undefined"!=typeof window,c=f(s({target:"window",type:"storage",listener:function(e){var t="local"===r?window.localStorage:window.sessionStorage;e.storageArea===t&&e.key===n&&v(e.newValue||void 0)}}),2),o=c[0],i=c[1],a=f(e.useState(void 0),2),l=a[0],v=a[1];return e.useEffect((function(){u||v(t);try{var e="local"===r?window.localStorage.getItem(n):window.sessionStorage.getItem(n);v(e?JSON.parse(e):t)}catch(e){v(t)}return o(),function(){return i()}}),[]),[l,function(e){try{var t=e instanceof Function?e(l):e;if(v(t),u){var c=JSON.stringify(t);"local"===r?window.localStorage.setItem(n,c):window.sessionStorage.setItem(n,c)}}catch(e){throw new Error("PrimeReact useStorage: Failed to serialize the value at key: ".concat(n))}}]},M=function(e,t){return C(e,t,"local")},L=function(e,t){return C(e,t,"session")},N=function(t,n){var r=e.useRef(!1);return e.useEffect((function(){if(r.current)return t&&t();r.current=!0}),n)};export{v as useClickOutside,p as useCounter,d as useDebounce,s as useEventListener,y as useFavicon,h as useIntersectionObserver,b as useInterval,M as useLocalStorage,w as useMatchMedia,E as useMountEffect,T as useMouse,I as useMove,Y as useOverlayListener,k as useOverlayScrollListener,a as usePrevious,X as useResizeListener,L as useSessionStorage,C as useStorage,g as useTimeout,l as useUnmountEffect,N as useUpdateEffect};