@movingbrands/svelte-portable-text

0.0.11 • Public • Published

svelte-portable-text

Note: this package is in active development, will likely change and may contain errors.

Install

At the moment, it seems the best approach is to install @sanity/block-content-to-hyperscript alongside this component.

Installing Svelte components as a devDependency seems to address this issue.

npm install @movingbrands/svelte-portable-text @sanity/block-content-to-hyperscript --save-dev

Usage example

<script>
  import BlockContent from "@movingbrands/svelte-portable-text";
  
  import Image from "./Image";
  import Link from "./Link";

  export let content;
  export const customSerializers = {
    types: {
      image: props => {
        return {
          component: Image,
          childNodes: props.children,
          props: {
            url: props.node.url
          }
        };
      }
    },
    marks: {
      link: props => {
        return {
          component: Link,
          childNodes: props.children,
          props: props.mark
        };
      }
    }
  };
  </script>

  <BlockContent blocks={content} serializers={customSerializers} />

Consuming components

With Svelte apps (recommended approach)

This package.json has a "svelte" field pointing to src/index.svelte, which allows Svelte apps to import the source code directly, if they are using a bundler plugin like rollup-plugin-svelte or svelte-loader (where resolve.mainFields in your webpack config includes "svelte").

Apps which aren't using Svelte elsewhere

npm run build will bundle your component's source code into a plain JavaScript module (index.mjs) and a UMD script (index.js).

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 0.0.11
    12
    • latest

Version History

Package Sidebar

Install

npm i @movingbrands/svelte-portable-text

Weekly Downloads

8

Version

0.0.11

License

MIT

Unpacked Size

230 kB

Total Files

34

Last publish

Collaborators

  • mbldn
  • trmg