UNPKG

carbon-react

Version:

A library of reusable React components for easily building user interfaces.

2 lines (1 loc) 3.13 kB
import{jsx as t}from"react/jsx-runtime";import e,{useContext as o,useMemo as i}from"react";import r from"invariant";import{Tooltip as n}from"../tooltip/tooltip.component.js";import"../../style/utils/filter-styled-system-padding-props.js";import l from"../../style/utils/filter-styled-system-margin-props.js";import{TooltipContext as a}from"../../__internal__/tooltip-provider/index.js";import s from"./icon.style.js";import{ICON_TOOLTIP_POSITIONS as p}from"./icon-config.js";import{useTabs as c}from"../tabs/__next__/tabs.context.js";function d(t,e,o){return e in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}function f(t){for(var e=1;e<arguments.length;e++){var o=null!=arguments[e]?arguments[e]:{},i=Object.keys(o);"function"==typeof Object.getOwnPropertySymbols&&(i=i.concat(Object.getOwnPropertySymbols(o).filter((function(t){return Object.getOwnPropertyDescriptor(o,t).enumerable})))),i.forEach((function(e){d(t,e,o[e])}))}return t}const u=e.forwardRef(((e,d)=>{var{"aria-hidden":u,ariaLabel:b,bg:m,bgShape:g,bgSize:y,className:O,color:v,"data-element":j,"data-role":h,disabled:S,focusable:I=!0,fontSize:P="small",id:x,inputSize:w,isPartOfInput:z,tabIndex:_,tooltipMessage:C,tooltipPosition:F,tooltipVisible:N,tooltipBgColor:V,tooltipFontColor:k,tooltipFlipOverrides:T,tooltipId:A,type:B,role:E}=e,L=function(t,e){if(null==t)return{};var o,i,r=function(t,e){if(null==t)return{};var o,i,r={},n=Object.keys(t);for(i=0;i<n.length;i++)o=n[i],e.indexOf(o)>=0||(r[o]=t[o]);return r}(t,e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);for(i=0;i<n.length;i++)o=n[i],e.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(t,o)&&(r[o]=t[o])}return r}(e,["aria-hidden","ariaLabel","bg","bgShape","bgSize","className","color","data-element","data-role","disabled","focusable","fontSize","id","inputSize","isPartOfInput","tabIndex","tooltipMessage","tooltipPosition","tooltipVisible","tooltipBgColor","tooltipFontColor","tooltipFlipOverrides","tooltipId","type","role"]);const M=Array.isArray(T)&&T.every((t=>p.includes(t)));T&&r(M,'The tooltipFlipOverrides prop supplied to `Icon` must be an array containing some or all of ["top", "bottom", "left", "right"].');const q=!!C&&!S,{tooltipPosition:D,focusable:R,tooltipVisible:G,disabled:H,target:J}=o(a),{isInTab:K}=c(),Q=i((()=>{switch(B){case"help":return"question";case"maintenance":return"settings";case"new":return"gift";case"success":return"tick";case"messages":case"email":return"message";default:return B}}),[B]),U=!S&&!H&&!!C&&(void 0!==R?R:I),W=i((()=>{if(!K)return U&&void 0===_?0:_}),[K,U,_]),X=f({"aria-hidden":u,"aria-label":b,bg:m,bgSize:y||P,bgShape:g,className:O||void 0,color:v,"data-component":"icon","data-element":null!=j?j:Q,"data-role":null!=h?h:"icon",disabled:H||S,fontSize:P,hasTooltip:U,id:x,isInteractive:q,ref:d,role:E,tabIndex:W,type:Q},l(L));return C?t(n,{message:C,position:D||F,type:B,id:A,isVisible:!S&&(void 0!==G?G:N),isPartOfInput:z,inputSize:w,bgColor:V,fontColor:k,flipOverrides:T,target:J,children:t(s,f({},X))}):t(s,f({},X))}));u.displayName="Icon";export{u as default};