@ebay/ui-core-react
Version:
Skin components build off React
2 lines (1 loc) • 1.39 kB
JavaScript
;const p=require("./tslib.es6-C4EgNkz1.js"),t=require("react"),k=require("classnames"),C=require("./forwardRef-DBQKIlPy.js");require("./array.polyfill.flat-5BAolFdk.js");const E=require("./random-id-DlJj_RWH.js"),h=n=>{var{name:a,className:e,noSkinClasses:f=!1,a11yText:s,a11yVariant:u,forwardedRef:m,__type:o="icon"}=n,b=p.__rest(n,["name","className","noSkinClasses","a11yText","a11yVariant","forwardedRef","__type"]);const[g,y]=t.useState("");t.useEffect(()=>{y(E.randomId())},[]);const i=u==="label",c=s&&`icon-title-${g}`,N=s?{"aria-labelledby":i?void 0:c,"aria-label":i?s:void 0,role:"img"}:{"aria-hidden":!0},r=d(a),w=q(r)||r,l=o==="flag"?"flag":"icon",I=[`${l}`,`${l}--${w}`,R(r)].filter(Boolean).join(" "),$=k(e,{[I]:!f}),x=["icon","flag"].includes(o)?`${o}-`:"";return t.createElement("svg",Object.assign({},b,{className:$,xmlns:"http://www.w3.org/2000/svg",focusable:!1,ref:m},N),s&&!i&&t.createElement("title",{id:c},s),t.createElement("use",{xlinkHref:`#${x}${r}`}))};function q(n){const a=n.split("-"),e=a[a.length-1];return e==="colored"?a[a.length-2]:isNaN(Number(e))?"":e}function R(n){const a=n.split("-"),e=a.indexOf("filled");return e===-1?"":`icon--${a.slice(0,e+1).join("-")}`}function d(n){return n.replace(/([0-9]+)/g,(a,e)=>`-${e}`).replace(/([A-Z])/g,(a,e)=>`-${e.toLowerCase()}`)}const _=C.withForwardRef(h);exports.EbayIcon=_;exports.kebabCased=d;