
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
react-splitting
Advanced tools
A re-implementation of splitting.js (a text segmenter for animation) for React supporting SSR/SSG.
An (incomplete) re-implementation of splitting.js (a text segmenter for animation) for React supporting SSR/SSG.
This is a re-implementation because the original works with real DOM nodes. Converting ReactNodes to such then back again might preserve most--if not all--attributes, but will definitely lose all React event handlers.
[!WARNING]
- Only "chars" and "words" are supported for the
byproperty.<script>and<style>elements are property ignored.- The
keyoption was renamed tocssKeyto avoid a conflict with React's ownkeyproperty.
- It is properly prefixed.
[!NOTE]
- This library comes in two variants: one with "meta" and one without. The "meta" variant is a drop-in replacement for the original library as it replicates its CSS classes, CSS variables,
data-*attributes, lack of proper multilingual support and some quirky whitespace handling.- Each variant can be used as a component--which offers nothing additional--or as a function--which adds segment counts and access to segment nodes before they're rendered.
npm install react-splitting
<Splitting /> / splitting()Lightweight and completely customizable.
import { Segmentation, Splitting } from 'react-splitting';
export default () => (
<>
<p>
<Splitting by={Segmentation.WORDS}>
Text <strong>split</strong> by <em>words</em>.
</Splitting>
</p>
<p>
<Splitting by={Segmentation.CHARS}>
Text <strong>split</strong> by <em>characters</em>.
</Splitting>
</p>
With more customization:
<p>
<Splitting
by={Segmentation.WORDS}
wordProps={i => ({ className: 'word', style: { '--word-index': i } })}
>
Text <strong>split</strong> by <em>words</em>.
</Splitting>
</p>
<p>
<Splitting
by={Segmentation.CHARS}
charProps={i => ({ className: 'char', style: { '--char-index': i } })}
wordProps={i => ({ className: 'word', style: { '--word-index': i } })}
>
Text <strong>split</strong> by <em>characters</em>.
</Splitting>
</p>
</>
);
import { Segmentation, splitting } from 'react-splitting';
export default () => {
const { charCount, segments, wordCount } = splitting(
<>
Text <strong>split</strong> by <em>words</em>.
</>,
{
by: Segmentation.WORDS,
charProps: i => ({ className: 'char', style: { '--char-index': i } }),
wordProps: i => ({ className: 'word', style: { '--word-index': i } }),
}
);
return <p>{segments}</p>;
};
<SplittingWithMeta /> / splittingWithMeta()Drop-in replacement.
import { SplittingWithMeta } from 'react-splitting/with-meta';
export default () => (
<SplittingWithMeta as="div">
Text with <strong>added metadata</strong>, split by <em>characters</em>.
</SplittingWithMeta>
);
import { splittingWithMeta } from 'react-splitting/with-meta';
export default () => {
const { charCount, container, wordCount } = splittingWithMeta(
<>
Text with <strong>added metadata</strong>, split by <em>characters</em>.
</>,
{ as: 'div' }
);
return container;
};
npm run build
The test suite can perform a single run:
npm test
… or indefinitely as files are changed:
npm run test:watch
rewriteRelativeImportExtensions with allowImportingTsExtensions when possible.FAQs
A re-implementation of splitting.js (a text segmenter for animation) for React supporting SSR/SSG.
We found that react-splitting 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
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.