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) • 17.6 kB
JavaScript
this.primereact=this.primereact||{},this.primereact.carousel=function(e,t,n,r,a,o,i,l,c,u,s){"use strict";function p(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function m(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var f=m(t),d=p(n);function v(e){return v="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},v(e)}function b(e,t){if("object"!==v(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!==v(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}function h(e){var t=b(e,"string");return"symbol"===v(t)?t:String(t)}function y(){return y=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},y.apply(this,arguments)}function g(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 x(e){if(Array.isArray(e))return g(e)}function I(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function w(e,t){if(e){if("string"==typeof e)return g(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)?g(e,t):void 0}}function N(){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 O(e){return x(e)||I(e)||w(e)||N()}function S(e){if(Array.isArray(e))return e}function C(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,l=[],c=!0,u=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(u)throw a}}return l}}function E(){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,t){return S(e)||C(e,t)||w(e,t)||E()}var j=r.ComponentBase.extend({defaultProps:{__TYPE:"Carousel",id:null,value:null,page:0,header:null,footer:null,style:null,className:null,itemTemplate:null,circular:!1,showIndicators:!0,showNavigators:!0,autoplayInterval:0,numVisible:1,numScroll:1,prevIcon:null,nextIcon:null,responsiveOptions:null,orientation:"horizontal",verticalViewPortHeight:"300px",contentClassName:null,containerClassName:null,indicatorsContentClassName:null,onPageChange:null,children:void 0},css:{classes:{root:function(e){var t=e.isVertical;return s.classNames("p-carousel p-component",{"p-carousel-vertical":t,"p-carousel-horizontal":!t})},container:"p-carousel-container",content:"p-carousel-content",indicators:"p-carousel-indicators p-reset",header:"p-carousel-header",footer:"p-carousel-footer",itemsContainer:"p-carousel-items-container",itemsContent:"p-carousel-items-content",previousButton:function(e){return s.classNames("p-carousel-prev p-link",{"p-disabled":e.isDisabled})},previousButtonIcon:"p-carousel-prev-icon",nextButton:function(e){return s.classNames("p-carousel-next p-link",{"p-disabled":e.isDisabled})},nextButtonIcon:"p-carousel-next-icon",indicator:function(e){return s.classNames("p-carousel-indicator",{"p-highlight":e.isActive})},indicatorButton:"p-link",itemCloned:function(e){var t=e.itemProps;return s.classNames(t.className,"p-carousel-item",{"p-carousel-item-active":t.active,"p-carousel-item-start":t.start,"p-carousel-item-end":t.end})},item:function(e){var t=e.itemProps;return s.classNames(t.className,"p-carousel-item",{"p-carousel-item-active":t.active,"p-carousel-item-start":t.start,"p-carousel-item-end":t.end})}},styles:"\n@layer primereact {\n .p-carousel {\n display: flex;\n flex-direction: column;\n }\n \n .p-carousel-content {\n display: flex;\n flex-direction: column;\n overflow: auto;\n }\n \n .p-carousel-prev,\n .p-carousel-next {\n align-self: center;\n flex-grow: 0;\n flex-shrink: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n overflow: hidden;\n position: relative;\n }\n \n .p-carousel-container {\n display: flex;\n flex-direction: row;\n }\n \n .p-carousel-items-content {\n overflow: hidden;\n width: 100%;\n }\n \n .p-carousel-items-container {\n display: flex;\n flex-direction: row;\n }\n \n .p-carousel-indicators {\n display: flex;\n flex-direction: row;\n justify-content: center;\n flex-wrap: wrap;\n }\n \n .p-carousel-indicator > button {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n \n /* Vertical */\n .p-carousel-vertical .p-carousel-container {\n flex-direction: column;\n }\n \n .p-carousel-vertical .p-carousel-items-container {\n flex-direction: column;\n height: 100%;\n }\n \n /* Keyboard Support */\n .p-items-hidden .p-carousel-item {\n visibility: hidden;\n }\n \n .p-items-hidden .p-carousel-item.p-carousel-item-active {\n visibility: visible;\n }\n}\n",inlineStyles:{itemsContent:function(e){return{height:e.height}}}}});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 k(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){var r,a,o;r=e,o=n[t],(a=h(a=t))in r?Object.defineProperty(r,a,{value:o,enumerable:!0,configurable:!0,writable:!0}):r[a]=o})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):D(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var R=f.memo((function(e){var t=a.useMergeProps(),n=e.ptm,r=e.cx,o=e.className&&"p-carousel-item-cloned"===e.className?"itemCloned":"item",i=e.template(e.item),l=t({className:r(o,{itemProps:e}),role:e.role,"aria-roledescription":e.ariaRoledescription,"aria-label":e.ariaLabel,"aria-hidden":e.ariaHidden,"data-p-carousel-item-active":e.active,"data-p-carousel-item-start":e.start,"data-p-carousel-item-end":e.end},n(o));return f.createElement("div",l,i)})),H=f.memo(f.forwardRef((function(e,t){var p=a.useMergeProps(),m=f.useContext(n.PrimeReactContext),v=j.getProps(e,m),b=P(f.useState(v.numVisible),2),h=b[0],g=b[1],x=P(f.useState(v.numScroll),2),I=x[0],w=x[1],N=P(f.useState(v.page*v.numScroll*-1),2),S=N[0],C=N[1],E=P(f.useState(v.page),2),D=E[0],H=E[1],A=j.setMetaData({props:v,state:{numVisible:h,numScroll:I,totalShiftedItems:S,page:D}}),B=A.ptm,T=A.cx,M=A.sx,V=A.isUnstyled;r.useHandleStyle(j.css.styles,V,{name:"carousel"});var L=f.useRef(null),U=f.useRef(null),_=f.useRef(0),z=f.useRef(!!v.autoplayInterval),X=f.useRef(""),Y=f.useRef(20),J=f.useRef(null),K=f.useRef(null),q=f.useRef(null),F=f.useRef(null),W=f.useRef(!1),$=f.useRef(null),G=a.usePrevious(I),Q=a.usePrevious(h),Z=a.usePrevious(v.value),ee=a.usePrevious(v.page),te="vertical"===v.orientation,ne=v.circular||!!v.autoplayInterval,re=ne&&v.value&&v.value.length>=h,ae=v.value?Math.max(Math.ceil((v.value.length-h)/I)+1,0):0,oe=ae&&v.autoplayInterval&&z.current,ie=v.onPageChange&&!oe,le=ie?v.page:D,ce=P(a.useResizeListener({listener:function(){se()},when:v.responsiveOptions}),1)[0],ue=function(e,t){var n=S;null!=t?(n=I*t*-1,re&&(n-=h),W.current=!1):(n+=I*e,W.current&&(n+=_.current-I*e,W.current=!1),t=Math.abs(Math.floor((re?n+h:n)/I)));re&&D===ae-1&&-1===e?(n=-1*(v.value.length+h),t=0):re&&0===D&&1===e?(n=0,t=ae-1):t===ae-1&&_.current>0&&(n+=-1*_.current-I*e,W.current=!0),U.current&&(!V()&&s.DomHandler.removeClass(U.current,"p-items-hidden"),De(n),U.current.style.transition="transform 500ms ease 0s"),ke(t),C(n)},se=function(){if(U.current&&$.current){for(var e=window.innerWidth,t={numVisible:v.numVisible,numScroll:v.numScroll},n=0;n<$.current.length;n++){var r=$.current[n];parseInt(r.breakpoint,10)>=e&&(t=r)}if(I!==t.numScroll){var a=Math.floor(le*I/t.numScroll),o=t.numScroll*a*-1;re&&(o-=t.numVisible),C(o),w(t.numScroll),ke(a)}h!==t.numVisible&&g(t.numVisible)}},pe=function(e,t){(ne||0!==le)&&ue(1,t),z.current=!1,e.cancelable&&e.preventDefault()},me=function(e,t){(ne||le<ae-1)&&ue(-1,t),z.current=!1,e.cancelable&&e.preventDefault()},fe=function(e,t){t>le?me(e,t):t<le&&pe(e,t)},de=function(e){U.current&&"transform"===e.propertyName&&(s.DomHandler.addClass(U.current,"p-items-hidden"),U.current.style.transition="",0!==D&&D!==ae-1||!re||De(S))},ve=function(e){var t=e.changedTouches[0];J.current={x:t.pageX,y:t.pageY}},be=function(e){e.cancelable&&e.preventDefault()},he=function(e){var t=e.changedTouches[0];ye(e,te?t.pageY-J.current.y:t.pageX-J.current.x)},ye=function(e,t){Math.abs(t)>Y.current&&(t<0?me(e):pe(e))},ge=function(e){switch(e.code){case"ArrowRight":xe();break;case"ArrowLeft":Ie();break;case"Home":we(),e.preventDefault();break;case"End":Ne(),e.preventDefault();break;case"ArrowUp":case"ArrowDown":e.preventDefault();break;case"Tab":Oe()}},xe=function(){var e=O(s.DomHandler.find(F.current,'[data-pc-section="indicator"]')),t=Se();Ce(t,t+1===e.length?e.length-1:t+1)},Ie=function(){var e=Se();Ce(e,e-1<=0?0:e-1)},we=function(){var e=Se();Ce(e,0)},Ne=function(){var e=O(s.DomHandler.find(F.current,'[data-pc-section="indicator"]r')),t=Se();Ce(t,e.length-1)},Oe=function(){var e=O(s.DomHandler.find(F.current,'[data-pc-section="indicator"]')),t=e.findIndex((function(e){return!0===s.DomHandler.getAttribute(e,"data-p-highlight")})),n=s.DomHandler.findSingle(F.current,'[data-pc-section="indicator"] > button[tabindex="0"]'),r=e.findIndex((function(e){return e===n.parentElement}));e[r].children[0].tabIndex="-1",e[t].children[0].tabIndex="0"},Se=function(){var e=O(s.DomHandler.find(F.current,'[data-pc-section="indicator"]')),t=s.DomHandler.findSingle(F.current,'[data-pc-section="indicator"] > button[tabindex="0"]');return e.findIndex((function(e){return e===t.parentElement}))},Ce=function(e,t){var n=O(s.DomHandler.find(F.current,'[data-pc-section="indicator"]'));n[e].children[0].tabIndex="-1",n[t].children[0].tabIndex="0",n[t].children[0].focus()},Ee=function(){v.autoplayInterval>0&&(K.current=setInterval((function(){ue(-1,D===ae-1?0:D+1)}),v.autoplayInterval))},Pe=function(){K.current&&clearInterval(K.current)},je=function(){q.current||(q.current=s.DomHandler.createInlineStyle(m&&m.nonce||d.default.nonce,m&&m.styleContainer));var e="\n .p-carousel[".concat(X.current,"] .p-carousel-item {\n flex: 1 0 ").concat(100/h,"%\n }\n ");if(v.responsiveOptions){var t=s.ObjectUtils.localeComparator(m&&m.locale||d.default.locale);$.current=O(v.responsiveOptions),$.current.sort((function(e,n){return s.ObjectUtils.sort(e.breakpoint,n.breakpoint,-1,t,m&&m.nullSortOrder||d.default.nullSortOrder)}));for(var n=0;n<$.current.length;n++){var r=$.current[n];e+="\n @media screen and (max-width: ".concat(r.breakpoint,") {\n .p-carousel[").concat(X.current,"] .p-carousel-item {\n flex: 1 0 ").concat(100/r.numVisible,"%\n }\n }\n ")}se()}q.current.innerHTML=e},De=function(e){U.current&&(U.current.style.transform=te?"translate3d(0, ".concat(e*(100/h),"%, 0)"):"translate3d(".concat(e*(100/h),"%, 0, 0)"))},ke=function(e){!ie&&H(e),v.onPageChange&&v.onPageChange({page:e})};f.useImperativeHandle(t,(function(){return{props:v,startAutoplay:Ee,stopAutoplay:Pe,getElement:function(){return L.current}}})),a.useMountEffect((function(){L.current&&(X.current=s.UniqueComponentId(),L.current.setAttribute(X.current,"")),q.current||(se(),De(S),ce())})),a.useUpdateEffect((function(){var e=!1,t=S;if(je(),v.autoplayInterval&&Pe(),G!==I||Q!==h||v.value&&Z&&Z.length!==v.value.length){_.current=(v.value.length-h)%I;var n=le;0!==ae&&n>=ae&&(ke(n=ae-1),e=!0),t=n*I*-1,re&&(t-=h),n===ae-1&&_.current>0?(t+=-1*_.current+I,W.current=!0):W.current=!1,t!==S&&(C(t),e=!0),De(t)}return re&&(0===D?t=-1*h:0===t&&(t=-1*v.value.length,_.current>0&&(W.current=!0)),t!==S&&(C(t),e=!0)),ee!==v.page&&(v.page>ee&&v.page<=ae-1?ue(-1,v.page):v.page<ee&&ue(1,v.page)),!e&&oe&&Ee(),function(){v.autoplayInterval&&Pe(),q.current=s.DomHandler.removeInlineStyle(q.current)}}));var Re,He,Ae,Be,Te,Me,Ve,Le=function(){if(v.value&&v.value.length){var e=null,t=null;if(re){var r=null;e=(r=v.value.slice(-1*h)).map((function(e,t){return f.createElement(R,{key:t+"_scloned",className:"p-carousel-item-cloned",template:v.itemTemplate,item:e,active:-1*S===v.value.length+h,start:0===t,end:t===r.length-1,ptm:B,cx:T})})),t=(r=v.value.slice(0,h)).map((function(e,t){return f.createElement(R,{key:t+"_fcloned",className:"p-carousel-item-cloned",template:v.itemTemplate,item:e,active:0===S,start:0===t,end:t===r.length-1,ptm:B,cx:T})}))}var a=v.value.map((function(e,t){var r=re?-1*(S+h):-1*S,a=r+h-1,o=r<=t&&a>=t,i=r===t,l=a===t,c=r>t||a<t||void 0,u=n.ariaLabel("slideNumber",{slideNumber:t}),s=n.localeOption("aria")?n.localeOption("aria").slide:void 0;return f.createElement(R,{key:t,template:v.itemTemplate,item:e,active:o,start:i,ariaHidden:c,ariaLabel:u,ariaRoledescription:s,role:"group",end:l,ptm:B,cx:T})}));return f.createElement(f.Fragment,null,e,a,t)}},Ue=function(){if(v.showNavigators){var e=(!ne||v.value&&v.value.length<h)&&0===le,t=p({className:T("previousButtonIcon")},B("previousButtonIcon")),r=s.IconUtils.getJSXIcon(te?v.prevIcon||f.createElement(c.ChevronUpIcon,t):v.prevIcon||f.createElement(i.ChevronLeftIcon,t),k({},t),{props:v}),a=p({type:"button",className:T("previousButton",{isDisabled:e}),onClick:function(e){return pe(e)},disabled:e,"aria-label":n.localeOption("aria")?n.localeOption("aria").previousPageLabel:void 0,"data-pc-group-section":"navigator"},B("previousButton"));return f.createElement("button",a,r,f.createElement(u.Ripple,null))}return null},_e=function(){if(v.showNavigators){var e=(!ne||v.value&&v.value.length<h)&&(le===ae-1||0===ae),t=p({className:T("nextButtonIcon")},B("nextButtonIcon")),r=s.IconUtils.getJSXIcon(te?v.nextIcon||f.createElement(o.ChevronDownIcon,t):v.nextIcon||f.createElement(l.ChevronRightIcon,t),k({},t),{props:v}),a=p({type:"button",className:T("nextButton",{isDisabled:e}),onClick:function(e){return me(e)},disabled:e,"aria-label":n.localeOption("aria")?n.localeOption("aria").nextPageLabel:void 0,"data-pc-group-section":"navigator"},B("nextButton"));return f.createElement("button",a,r,f.createElement(u.Ripple,null))}return null},ze=function(e){var t,r=le===e,a=function(e){return B(e,{context:{active:r}})},o="carousel-indicator-"+e,i=p({className:T("indicator",{isActive:r}),"data-p-highlight":r},a("indicator")),l=p({type:"button",className:T("indicatorButton"),tabIndex:le===e?"0":"-1",onClick:function(t){return fe(t,e)},"aria-label":(t=e+1,n.ariaLabel("pageLabel",{page:t})),"aria-current":le===e?"page":void 0},a("indicatorButton"));return f.createElement("li",y({},i,{key:o}),f.createElement("button",l,f.createElement(u.Ripple,null)))},Xe=(Re=Le(),He=te?v.verticalViewPortHeight:"auto",Ae=Ue(),Be=_e(),Te=p({className:T("itemsContent"),style:M("itemsContent",{height:He}),onTouchStart:function(e){return ve(e)},onTouchMove:function(e){return be(e)},onTouchEnd:function(e){return he(e)}},B("itemsContent")),Me=p({className:s.classNames(v.containerClassName,T("container")),"aria-live":z.current?"polite":"off"},B("container")),Ve=p({className:T("itemsContainer"),onTransitionEnd:de},B("itemsContainer")),f.createElement("div",Me,Ae,f.createElement("div",Te,f.createElement("div",y({ref:U},Ve),Re)),Be)),Ye=function(){if(v.showIndicators){for(var e=[],t=0;t<ae;t++)e.push(ze(t));var n=p({ref:F,className:s.classNames(v.indicatorsContentClassName,T("indicators")),onKeyDown:ge},B("indicators"));return f.createElement("ul",n,e)}return null}(),Je=function(){if(v.header){var e=p({className:T("header")},B("header"));return f.createElement("div",e,v.header)}return null}(),Ke=function(){if(v.footer){var e=p({className:T("footer")},B("footer"));return f.createElement("div",e,v.footer)}return null}(),qe=p({id:v.id,ref:L,className:s.classNames(v.className,T("root",{isVertical:te})),style:v.style,role:"region"},j.getOtherProps(v),B("root")),Fe=p({className:s.classNames(v.contentClassName,T("content"))},B("content"));return f.createElement("div",qe,Je,f.createElement("div",Fe,Xe,Ye),Ke)})));return R.displayName="CarouselItem",H.displayName="Carousel",e.Carousel=H,Object.defineProperty(e,"__esModule",{value:!0}),e}({},React,primereact.api,primereact.componentbase,primereact.hooks,primereact.icons.chevrondown,primereact.icons.chevronleft,primereact.icons.chevronright,primereact.icons.chevronup,primereact.ripple,primereact.utils);