0.0.7 • Published 3 years ago
sanity-plugin-html-to-portable-text v0.0.7
Sanity Plugin HTML to Portable Text
This plugin is a custom input component which converts HTML into Portable Text on the fly.
Sanity is using the Portable Text-format whenever you use the block-type.
In Sanity-Studio there is a WYSIWYG-Block Content Editor which makes editing very convenient. But if you are just migrating to sanity and your source is HTML, this plugin may come in handy.
Your schema needs to define at least one block-type field to allow persisting to your schema.

Installation
Install the Sanity Plugin HTML to Portable Text with the sanity CLI
sanity install sanity-plugin-html-to-portable-textUsage
Just add a field of htmlPortableText-type to your fields-array.
Basic Usage
fields: [
{
name: 'htmlToArticleBody',
title: 'HTML to Article Body',
type: 'htmlToPortableText',
{
name: 'articleBody',
title: 'Article Body',
type: 'array',
of: [ { type: 'block' } ]
}
]Example with pre-selected block
If you have multiple block-type fields, you may want to have one selected as the default.
Parameters
options: { defaultrefblock: '<name>' },| Parameter | Type | Description | Default |
|---|---|---|---|
defaultrefblock | string | Optional. Name of referenced block | First block-type as defined in your schema |
fields: [
{
name: 'htmlToArticleBody',
title: 'HTML to Article Body',
type: 'htmlToPortableText',
// no need to reference the block
// all block-types get picked up automatically
// but you can specify which one is pre-selected
{
name: 'articleBody',
title: 'Article Body',
type: 'array',
of: [
{
type: 'block',
styles: [
// enable only below styles
{ title: 'Unstyled', value: 'normal' },
{ title: 'H1', value: 'h1' },
{ title: 'H2', value: 'h2' },
]
}
]
}
]Advanced Example
This example show how you may radically limit the available styles in Portable Text.
fields: [
{
name: 'htmlToArticleBody',
title: 'HTML to Article Body',
type: 'htmlToPortableText',
},
{
name: 'articleBody',
title: 'Article Body',
type: 'array',
of: [
{
type: 'block',
// Disallow all styles
styles: [],
// Disallow all lists
lists: [],
marks: {
// Only allow these decorators
decorators: [
{ title: 'Bold', value: 'strong' },
{
title: 'Superscript',
value: 'sup',
// Define custom icon and renderer for the blockEditor
blockEditor: {
icon: () => <div>⤴</div>,
render: ({ children }) => <span><sup>{children}</sup></span>
}
},
],
// disallow links
annotations: []
}
]
}
]Further reading
Features
- provides a custom input component
- converts
HTMLinto Portable Text on the fly - introspects the
schemaof the parent document and finds allblock-type fields - persist converted
HTMLto selectedblock-type field of yourschema