primereact
Version:
PrimeReact is an open source UI library for React featuring a rich set of 80+ 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) • 4.91 kB
JavaScript
import*as e from"react";import t,{localeOption as n}from"primereact/api";import{CSSTransition as r}from"primereact/csstransition";import{useUnmountEffect as a}from"primereact/hooks";import{Portal as i}from"primereact/portal";import{ZIndexUtils as o,ObjectUtils as l,classNames as c,DomHandler as u}from"primereact/utils";function m(){return m=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},m.apply(this,arguments)}function s(e){if(Array.isArray(e))return e}function p(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i=[],o=!0,l=!1;try{for(n=n.call(e);!(o=(r=n.next()).done)&&(i.push(r.value),!t||i.length!==t);o=!0);}catch(e){l=!0,a=e}finally{try{o||null==n.return||n.return()}finally{if(l)throw a}}return i}}function f(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 d(e,t){if(e){if("string"==typeof e)return f(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)?f(e,t):void 0}}function g(){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 y(e,t){return s(e)||p(e,t)||d(e,t)||g()}var E=e.memo(e.forwardRef((function(s,p){var f=y(e.useState(!1),2),d=f[0],g=f[1],v=y(e.useState(!1),2),b=v[0],h=v[1],N=y(e.useState(0),2),w=N[0],k=N[1],S=y(e.useState(1),2),C=S[0],x=S[1],I=e.useRef(null),A=e.useRef(null),O=e.useRef(null),R=e.useRef(null),j=e.useRef(!1),P=function(){s.preview&&(g(!0),setTimeout((function(){h(!0)}),25))},T=function(){j.current||(h(!1),k(0),x(1)),j.current=!1},z=function(){j.current=!0},H=function(){u.saveAs({name:s.alt,src:s.src}),j.current=!0},_=function(){k((function(e){return e+90})),j.current=!0},D=function(){k((function(e){return e-90})),j.current=!0},J=function(){x((function(e){return e+.1})),j.current=!0},K=function(){x((function(e){return e-.1})),j.current=!0},M=function(){o.set("modal",O.current,t.autoZIndex,t.zIndex.modal)},U=function(){s.onShow&&s.onShow()},X=function(){u.addClass(O.current,"p-component-overlay-leave")},Y=function(){s.onHide&&s.onHide()},Z=function(){o.clear(O.current),g(!1)};a((function(){O.current&&o.clear(O.current)}));e.useImperativeHandle(p,(function(){return{props:s,show:P,hide:T,getElement:function(){return I.current},getImage:function(){return A.current}}}));var $,q,B=s.src,F=s.alt,G=s.width,L=s.height,Q=l.findDiffKeys(s,E.defaultProps),V=c("p-image p-component",s.className,{"p-image-preview-container":s.preview}),W=($={transform:"rotate("+w+"deg) scale("+C+")"},q=C<=.5||C>=1.5,e.createElement("div",{ref:O,className:"p-image-mask p-component-overlay p-component-overlay-enter",onClick:T},e.createElement("div",{className:"p-image-toolbar"},s.downloadable&&e.createElement("button",{className:"p-image-action p-link",onClick:H,type:"button"},e.createElement("i",{className:"pi pi-download"})),e.createElement("button",{className:"p-image-action p-link",onClick:_,type:"button"},e.createElement("i",{className:"pi pi-refresh"})),e.createElement("button",{className:"p-image-action p-link",onClick:D,type:"button"},e.createElement("i",{className:"pi pi-undo"})),e.createElement("button",{className:"p-image-action p-link",onClick:K,type:"button",disabled:q},e.createElement("i",{className:"pi pi-search-minus"})),e.createElement("button",{className:"p-image-action p-link",onClick:J,type:"button",disabled:q},e.createElement("i",{className:"pi pi-search-plus"})),e.createElement("button",{className:"p-image-action p-link",type:"button","aria-label":n("close")},e.createElement("i",{className:"pi pi-times"}))),e.createElement(r,{nodeRef:R,classNames:"p-image-preview",in:b,timeout:{enter:150,exit:150},unmountOnExit:!0,onEntering:M,onEntered:U,onExit:X,onExiting:Y,onExited:Z},e.createElement("div",{ref:R},e.createElement("img",{src:s.zoomSrc||s.src,className:"p-image-preview",style:$,onClick:z,alt:s.alt}))))),ee=s.template?l.getJSXElement(s.template,s):e.createElement("i",{className:"p-image-preview-icon pi pi-eye"}),te=s.preview?e.createElement("div",{className:"p-image-preview-indicator",onClick:P},ee):null,ne=s.src&&e.createElement("img",{ref:A,src:B,className:s.imageClassName,width:G,height:L,style:s.imageStyle,alt:F,onError:s.onError});return e.createElement("span",m({ref:I,className:V},Q),ne,te,d&&e.createElement(i,{element:W,appendTo:document.body}))})));E.displayName="Image",E.defaultProps={__TYPE:"Image",alt:null,className:null,downloadable:!1,height:null,imageClassName:null,imageStyle:null,onError:null,preview:!1,zoomSrc:null,src:null,template:null,width:null};export{E as Image};