@xmcl/text-component
Version:
Parse Minecraft text component and render it to css.
53 lines (39 loc) • 1.91 kB
Markdown
# Text-component Module
[](https://www.npmjs.com/package/@xmcl/text-component)
[](https://npmjs.com/@xmcl/text-component)
[](https://packagephobia.now.sh/result?p=@xmcl/text-component)
[](https://github.com/voxelum/minecraft-launcher-core-node/blob/master/LICENSE)
[](https://github.com/Voxelum/minecraft-launcher-core-node/actions?query=workflow%3ABuild)
Provide functions to parse Minecraft text component.
## Usage
### TextComponent
Create TextComponent from string OR Minecraft's formatted string, like `'§cThis is red'`:
```ts
import { TextComponent, fromFormattedString } from "@xmcl/text-component";
const formattedString: string;
const fromFormatted: TextComponent = fromFormattedString(formattedString);
```
Render the TextComponent to css:
```ts
import { TextComponent, render, RenderNode } from "@xmcl/text-component";
const yourComponent: TextComponent;
const node: RenderNode = render(yourComponent);
node.text; // the text of the node
node.style; // style of the node
node.children; // children
// you can render in dom like this:
function renderToDom(node: RenderNode) {
const span = document.createElement('span');
span.style = node.style;
span.textContent = node.text;
for (const child of node.children) {
span.appendChild(renderToDom(child));
}
}
```
Iterate the TextComponent and its children:
```ts
import { TextComponent, flat } from "@xmcl/text-component";
const yourComponent: TextComponent;
const selfAndAllChildren: Array<TextComponent> = flat(yourComponent);
```