2.2.3 • Published 5 months ago

@slate-serializers/html v2.2.3

Weekly downloads
-
License
-
Repository
-
Last release
5 months ago

@slate-serializers/html

Convert Slate JSON objects to HTML and vice versa.

View the demo at https://thompsonsj.github.io/slate-serializers-demo.

Table of contents

Engineering

For details on how all serializers work, see Engineering decisions.

Install

yarn add @slate-serializers/html
# or
npm install @slate-serializers/html

Usage

slateToHtml

import { slateToHtml } from '@slate-serializers/html'

const slate = [
  {
    children: [
      {
        text: 'Heading 1',
      },
    ],
    type: 'h1',
  },
  {
    children: [
      {
        text: 'Paragraph 1',
      },
    ],
    type: 'p',
  },
]

const serializedToHtml = slateToHtml(slate)
// output
// <h1>Heading 1</h1><p>Paragraph 1</p>

Configuration

By default, slateToHtml incorporates transformation rules based on the example in Deserializing | Serializing | Slate.

Payload CMS

If you are using Payload CMS, import the Payload configuration file and pass it as a parameter to the serializer.

import { slateToHtml, payloadSlateToHtmlConfig } from '@slate-serializers/html'

const slate = [
  {
    children: [
      {
        text: 'Heading 1',
      },
    ],
    type: 'h1',
  },
]

const serializedToHtml = slateToHtml(slate, payloadSlateToHtmlConfig)
Custom configuration

You can create your own configuration file that implements your schema. See packages/dom/src/lib/config/payload.ts for an example of how to extend the default configuration or copy packages/dom/src/lib/config/default.ts and rewrite it as appropriate.

OptionDescriptionDefault
markMapMap Slate JSON properties to HTML formatting element tags. Accepts an array of HTML element tag names.See default config. Example: { code: ['pre', 'code'], /* ... */ }
elementMapMap Slate JSON type values to HTML element tags. Use elementTransforms for more control over the returned element.See default config. Example: { paragraph: 'p', /* ... */ }
markTransformsDefine transform functions for Slate JSON properties. Overrides and corresponding values in markMap.{ fontSize: ({ node }) => { return new Element('span', { style: `font-size:${node.fontSize};` }) } }
elementTransformsDefine transform functions for Slate JSON node types. Overrides and corresponding values in elementMap.See default config.
encodeEntitiesSee cheeriojs/dom-serializer - encodeEntitiestrue
alwaysEncodeBreakingEntitiesEncode &, < and > regardless of other option settings.false
alwaysEncodeCodeEntitiesEncode entities in <pre> tags regardless of other option settings.true
convertLineBreakToBrConvert \n line breaks in Slate text nodes to an HTML <br> element.true

htmlToSlate

import { htmlToSlate } from '@slate-serializers/html'

const html = `<h1>Heading 1</h1><p>Paragraph 1</p>`

const serializedToSlate = htmlToSlate(html)
// output
/*
[
  {
    children: [
      {
        text: 'Heading 1',
      },
    ],
    type: 'h1',
  },
  {
    children: [
      {
        text: 'Paragraph 1',
      },
    ],
    type: 'p',
  },
]
/*

Configuration

By default, htmlToSlate incorporates transformation rules based on the example in HTML | Serializing | Slate.

Payload CMS

If you are using Payload CMS, import the Payload configuration file and pass it as a parameter to the serializer.

import { htmlToSlate, payloadHtmlToSlateConfig } from '@slate-serializers/html'

const html = `<h1>Heading 1</h1><p>Paragraph 1</p>`

const serializedToSlate = htmlToSlate(html, payloadHtmlToSlateConfig)

Options

Create your own configuration file that implements your schema.

For more detailed documentation and examples, see htmlToSlate | slate-serializers.

OptionDescriptionDefault
textTagsDefine transform functions for HTML formatting elements.See default config. Examples: textTags.spec.ts.
elementTagsDefine transform functions for HTML element tag names.See default config. Example { p: () => ({ type: 'p' }), /* ... */ }.
htmlPreProcessStringPerform operations on the HTML string before serialization.(html) => html.replace(/<pre[^>]*>/g, '<code>').replace(/<\/pre>/g, '</code>')/ ... / }`.
filterWhitespaceNodesRemove whitespace that does not contribute meaning.true
convertBrToLineBreakConvert br tags to a new line character (\n).true
2.2.3

5 months ago

2.2.2

8 months ago

2.2.1

10 months ago

2.2.0

11 months ago

2.1.4

2 years ago

2.1.6

2 years ago

2.1.5

2 years ago

2.1.3

2 years ago

2.1.2

2 years ago

2.1.1

2 years ago

2.1.0

2 years ago

2.0.1

2 years ago

2.0.0

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago

0.6.7

2 years ago

0.6.6

2 years ago

0.6.5

2 years ago

0.6.4

2 years ago

0.6.3

2 years ago

0.6.2

2 years ago

0.6.1

2 years ago

0.6.0

2 years ago

0.5.3

2 years ago

0.5.2

2 years ago

0.4.2

2 years ago

0.4.1

2 years ago