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.26 kB
JavaScript
import*as r from"react";import{PrimeReactContext as e}from"primereact/api";import{ComponentBase as t,useHandleStyle as n}from"primereact/componentbase";import{useMergeProps as a}from"primereact/hooks";import{classNames as o,ObjectUtils as i,DomHandler as l,IconUtils as c}from"primereact/utils";function u(r){return u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(r){return typeof r}:function(r){return r&&"function"==typeof Symbol&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},u(r)}function s(r,e){if("object"!=u(r)||!r)return r;var t=r[Symbol.toPrimitive];if(void 0!==t){var n=t.call(r,e||"default");if("object"!=u(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(r)}function p(r){var e=s(r,"string");return"symbol"==u(e)?e:e+""}function m(r,e,t){return(e=p(e))in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}function f(){return f=Object.assign?Object.assign.bind():function(r){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var n in t)({}).hasOwnProperty.call(t,n)&&(r[n]=t[n])}return r},f.apply(null,arguments)}function v(r){if(Array.isArray(r))return r}function b(r,e){var t=null==r?null:"undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(null!=t){var n,a,o,i,l=[],c=!0,u=!1;try{if(o=(t=t.call(r)).next,0===e){if(Object(t)!==t)return;c=!1}else for(;!(c=(n=o.call(t)).done)&&(l.push(n.value),l.length!==e);c=!0);}catch(r){u=!0,a=r}finally{try{if(!c&&null!=t.return&&(i=t.return(),Object(i)!==i))return}finally{if(u)throw a}}return l}}function y(r,e){(null==e||e>r.length)&&(e=r.length);for(var t=0,n=Array(e);t<e;t++)n[t]=r[t];return n}function g(r,e){if(r){if("string"==typeof r)return y(r,e);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?y(r,e):void 0}}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 h(r,e){return v(r)||b(r,e)||g(r,e)||d()}var O=t.extend({defaultProps:{__TYPE:"Avatar",className:null,icon:null,image:null,imageAlt:"avatar",imageFallback:"default",label:null,onImageError:null,shape:"square",size:"normal",style:null,template:null,children:void 0},css:{classes:{root:function(r){var e=r.props,t=r.state;return o("p-avatar p-component",{"p-avatar-image":i.isNotEmpty(e.image)&&!t.imageFailed,"p-avatar-circle":"circle"===e.shape,"p-avatar-lg":"large"===e.size,"p-avatar-xl":"xlarge"===e.size,"p-avatar-clickable":!!e.onClick})},label:"p-avatar-text",icon:"p-avatar-icon"},styles:"\n@layer primereact {\n .p-avatar {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 2rem;\n height: 2rem;\n font-size: 1rem;\n }\n \n .p-avatar.p-avatar-image {\n background-color: transparent;\n }\n \n .p-avatar.p-avatar-circle {\n border-radius: 50%;\n }\n \n .p-avatar.p-avatar-circle img {\n border-radius: 50%;\n }\n \n .p-avatar .p-avatar-icon {\n font-size: 1rem;\n }\n \n .p-avatar img {\n width: 100%;\n height: 100%;\n }\n \n .p-avatar-clickable {\n cursor: pointer;\n }\n}\n"}});function j(r,e){var t=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),t.push.apply(t,n)}return t}function E(r){for(var e=1;e<arguments.length;e++){var t=null!=arguments[e]?arguments[e]:{};e%2?j(Object(t),!0).forEach((function(e){m(r,e,t[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(t)):j(Object(t)).forEach((function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(t,e))}))}return r}var S=r.forwardRef((function(t,u){var s=a(),p=r.useContext(e),m=O.getProps(t,p),v=r.useRef(null),b=h(r.useState(!1),2),y=b[0],g=b[1],d=h(r.useState(!1),2),j=d[1],S=O.setMetaData({props:m,state:{imageFailed:y,nested:d[0]}}),w=S.ptm,P=S.cx;n(O.css.styles,S.isUnstyled,{name:"avatar"});var A=function(r){"default"===m.imageFallback?m.onImageError||(g(!0),r.target.src=null):r.target.src=m.imageFallback,m.onImageError&&m.onImageError(r)};r.useEffect((function(){var r=l.isAttributeEquals(v.current.parentElement,"data-pc-name","avatargroup");j(r)}),[]),r.useImperativeHandle(u,(function(){return{props:m,getElement:function(){return v.current}}}));var k=s({ref:v,style:m.style,className:o(m.className,P("root",{imageFailed:y}))},O.getOtherProps(m),w("root")),x=m.template?i.getJSXElement(m.template,m):function(){if(i.isNotEmpty(m.image)&&!y){var e=s({src:m.image,onError:A},w("image"));return r.createElement("img",f({alt:m.imageAlt},e))}if(m.label){var t=s({className:P("label")},w("label"));return r.createElement("span",t,m.label)}if(m.icon){var n=s({className:P("icon")},w("icon"));return c.getJSXIcon(m.icon,E({},n),{props:m})}return null}();return r.createElement("div",k,x,m.children)}));S.displayName="Avatar";export{S as Avatar};