react-truncate-string
Version:
> Truncate strings like butter.
2 lines (1 loc) • 4.58 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("prop-types")):"function"==typeof define&&define.amd?define(["exports","react","prop-types"],t):t((e["dist/truncateString"]=e["dist/truncateString"]||{},e["dist/truncateString"].js={}),e.React,e.PropTypes)}(this,function(e,t,n){"use strict";var r="default"in t?t.default:t;function i(e,t,n,r){var i,o=0;return"boolean"!=typeof t&&(r=n,n=t,t=void 0),function(){var a=this,u=Number(new Date)-o,s=arguments;function c(){o=Number(new Date),n.apply(a,s)}r&&!i&&c(),i&&clearTimeout(i),void 0===r&&u>e?c():!0!==t&&(i=setTimeout(r?function(){i=void 0}:c,void 0===r?e-u:e))}}n=n&&n.hasOwnProperty("default")?n.default:n;var o=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},a=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),u=Object.assign||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},s=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t},c=function(e){var t=e.text,n=e.ellipsisString,r=e.measurements,i=e.leftPercentage,o=void 0===i?50:i;if(r.text>r.component){var a=function(e){return r.component*(e/100)},u=function(e){return Math.floor(t.length*e/r.text)};return""+t.slice(0,Math.max(0,u(a(o))-n.length))+n+t.slice(t.length-u(a(100-o))+n.length,t.length)}return t},l=function(e){function n(){var e,t,r,a,u,c;o(this,n);for(var l=arguments.length,f=Array(l),p=0;p<l;p++)f[p]=arguments[p];return t=r=s(this,(e=n.__proto__||Object.getPrototypeOf(n)).call.apply(e,[this].concat(f))),Object.defineProperty(r,"state",{enumerable:!0,writable:!0,value:{truncating:!0,truncatedString:null}}),Object.defineProperty(r,"resetTruncate",{enumerable:!0,writable:!0,value:(a=50,u=function(){r.setState({truncating:!0},function(){var e=r.getTruncateString(r.props.text);r.setState({truncatedString:e,truncating:!1})})},void 0===c?i(a,u,!1):i(a,c,!1!==u))}),Object.defineProperty(r,"componentDidUpdate",{enumerable:!0,writable:!0,value:function(e,t){r.state.truncating===t.truncating&&r.resetTruncate()}}),Object.defineProperty(r,"setComponentRef",{enumerable:!0,writable:!0,value:function(e){r.componentRef=e}}),Object.defineProperty(r,"setTextRef",{enumerable:!0,writable:!0,value:function(e){r.textRef=e}}),Object.defineProperty(r,"setEllipsisRef",{enumerable:!0,writable:!0,value:function(e){r.ellipsisRef=e}}),s(r,t)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(n,t.PureComponent),a(n,[{key:"getTruncateString",value:function(e){var t={component:this.componentRef.offsetWidth,ellipsis:this.ellipsisRef.offsetWidth,text:this.textRef.offsetWidth},n=this.props.ellipsisString;return c({measurements:t,text:e,ellipsisString:n,leftPercentage:this.props.truncateAt})}},{key:"componentDidMount",value:function(){var e=this.getTruncateString(this.props.text);this.setState({truncatedString:e,truncating:!1}),window.addEventListener("resize",this.resetTruncate)}},{key:"componentWillUnmount",value:function(){window.removeEventListener("resize",this.resetTruncate)}},{key:"render",value:function(){var e=this.props,t=e.text,n=e.ellipsisString,i=(e.truncateAt,e.style),o=function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(e,["text","ellipsisString","truncateAt","style"]),a=this.state,s=a.truncatedString,c=a.truncating,l=u({},i,{display:"block",overflow:"hidden",whiteSpace:"nowrap"});return r.createElement("div",u({ref:this.setComponentRef,style:l},o),c&&r.createElement("span",{ref:this.setTextRef},t),c&&r.createElement("span",{ref:this.setEllipsisRef},n),!c&&s)}}]),n}();Object.defineProperty(l,"propTypes",{enumerable:!0,writable:!0,value:{ellipsisString:n.string,truncateAt:n.number,text:n.string}}),Object.defineProperty(l,"defaultProps",{enumerable:!0,writable:!0,value:{ellipsisString:"...",text:"",truncateAt:50}}),e.truncateString=c,e.default=l,Object.defineProperty(e,"__esModule",{value:!0})});