0.0.1-alpha.3 • Published 4 months ago

react-email-builder v0.0.1-alpha.3

Weekly downloads
-
License
MIT
Repository
github
Last release
4 months ago

React Email Builder

npm version

A simple React drag and drop email builder.

npm i react-email-builder

Usage

import { useState } from 'react'
import {
  buttonBlock,
  columnsBlock,
  createEmailBuilderState,
  dividerBlock,
  EmailBuilder,
  imageBlock,
  spacerBlock,
  textBlock
} from 'react-email-builder'
import 'react-email-builder/styles.css'
import type { EmailBuilderConfig } from 'react-email-builder'

const config: EmailBuilderConfig = {
  blocks: [
    columnsBlock(),
    buttonBlock(),
    dividerBlock(),
    textBlock(),
    imageBlock(),
    spacerBlock()
  ],
  upload: async (file: File) => {
    // mock file upload
    await new Promise((resolve) => setTimeout(resolve, 500))
    return { url: URL.createObjectURL(file) }
  }
}

export default function App() {
  const [state, setState] = useState(() => createEmailBuilderState())
  return (
    <EmailBuilder
      config={config}
      style={{ height: 800, width: 1200, margin: '16px auto' }}
      state={state}
      setState={setState}
    />
  )
}

This package provides a function named generateMJML that can be used to generate MJML code from the email builder state. Here is an example:

// You can use the mjml-browser package to convert the mjml to html
const mjml = generateMJML({ state, config })

To serialize email build state, please use serializeEmailBuilderState. For example:

// You can save JSON.string(serialized) to your database
const serialized = serializeEmailBuilderState(config, state)

To deserialize email build state, please use deserializeEmailBuilderState. For example:

const state = deserializeEmailBuilderState(config, serialized)