rc-tc-ifn
Version:
React component that truncates text with ellipsis and shows tooltip only when content overflows.
3 lines (2 loc) • 2.28 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("react-tooltip-z"),r=require("joinclass"),n=require("rsx-z"),o=function(){return o=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},o.apply(this,arguments)};"function"==typeof SuppressedError&&SuppressedError;var a=n.createStyleEngine(n.createDOMSheet()),i=a.style({display:"inline-block",whiteSpace:"nowrap",textOverflow:"ellipsis",overflow:"hidden"});function s(e){return a.style({display:"inline-block",width:e})}function c(n){var a=n.children,c=n.content,l=n.width,u=n.wrapperWidth,p=n.tagTruncate,f=n.truncateClassName,d=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(n=Object.getOwnPropertySymbols(e);o<n.length;o++)t.indexOf(n[o])<0&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]])}return r}(n,["children","content","width","wrapperWidth","tagTruncate","truncateClassName"]),y=e.useRef(null),v=function(t){var r=e.useState(!1),n=r[0],o=r[1];return e.useLayoutEffect(function(){var e=t.current;if(e){var r=function(){o(e.scrollWidth>e.clientWidth)};if(r(),"undefined"!=typeof ResizeObserver){var n=new ResizeObserver(r);return n.observe(e),function(){return n.disconnect()}}return window.addEventListener("resize",r),function(){window.removeEventListener("resize",r)}}},[t]),n}(y),h=e.useState(!1),m=h[0],w=h[1],O=o({},l?{width:l}:{});var b=e.Children.toArray(a)[0],g=p||"span",E=e.isValidElement(b)?e.cloneElement(b,{ref:y,className:r(b.props.className,f,i),style:o(o({},O),b.props.style)}):e.createElement(g,{ref:y,className:r(f,i),style:O},a);return e.createElement(t.Tooltip,o({},d,{tagName:d.tagName||"span",className:r(d.className,s(u)),content:null!=c?c:a,trigger:"manual",open:m,onMouseEnter:function(){v&&w(!0)},onMouseLeave:function(){w(!1)}}),E)}exports.TooltipIfn=c,exports.default=c,exports.mergeRefs=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return function(t){e.forEach(function(e){"function"==typeof e?e(t):e&&(e.current=t)})}};
//# sourceMappingURL=index.js.map