Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
use-clamp-text
Advanced tools
react hook to clamp multiline text to a given height in a responsive way (in < 2.5kb)
react hook to clamp multiline text to a given height in a responsive way and with extreme flexibility (under 2.5kb)
Line Clampin’ (Truncating Multiple Line Text) is a major hassle still for most browsers.
This tiny react hook eases that pain.
Cause it gives extreme flexibility over how you want to control the text. Do you want truncate it or not? When to truncate it? How to show read more interactions? and more...
import { useClampText } from 'use-clamp-text';
const longText = "Spicy jalapeno bacon ipsum dolor amet drumstick sirloin chuck shankle. Flank ribeye pancetta andouille ham hock. Turkey cow tenderloin landjaeger filet mignon hamburger. Pig tail strip steak pastrami t-bone venison bresaola biltong corned beef drumstick pork hamburger tri-tip. Tongue ham hock corned beef tri-tip meatball t-bone fatback andouille sirloin chuck jowl biltong pastrami. Ham hock ground round landjaeger tail strip steak. Ham sirloin pork loin salami spare ribs. Jerky cow short ribs ground round. Hamburger porchetta shankle meatloaf shank.";
function ClampedText {
const [ref, { noClamp, clampedText }] = useClampText({
text: longText,
});
return (
<section>
<h1>
{noClamp ? 'Not truncated' : 'Truncated'}
</h1>
<div ref={ref}>
{clampedText}
</div>
</section>
);
}
Check out the codesandbox example
The hook accepts only a single object argument is accepted with the following properties:
property | type | required | default | description |
---|---|---|---|---|
text | string | true | Text you wish to clamp | |
ellipsis | string | number | false | '…' | String displayed after the clamped text or number of characters to be trimmed off the string (useful for adding inline custom ellipsis like a <a> or <button> ) |
expanded | boolean | false | false | To control whether the string should be truncated or not |
lines | number | false | 3 | Number of visible lines |
debounce | number | false | 300 | Time in milliseconds used for debounce |
charWidth | number | false | 1.2 | Character width to be assumed for calculating clamped string length (an average depending on your font size should work well enough) |
The hook returns a tuple -
React.MutableRefObject<HTMLElement | null>
- a ref to attach to the element where the clamped text will be renderedObject
- The properties of the object are documented in the table belowproperty | type | description |
---|---|---|
noClamp | boolean | Whether the text is clamped or not. Will return true if not clamped |
clampedText | string | The string to be rendered |
key | string | A key to attach to the element that contains the string to be rendered (only needed when using custom inline ellipsis) |
FAQs
react hook to clamp multiline text to a given height in a responsive way (in < 2.5kb)
The npm package use-clamp-text receives a total of 5,564 weekly downloads. As such, use-clamp-text popularity was classified as popular.
We found that use-clamp-text demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.