0.2.8 • Published 6 months ago

fresh-tap v0.2.8

Weekly downloads
-
License
MIT
Repository
bitbucket
Last release
6 months ago

fresh-tap

Fresh Tap is a framework-agnostic Custom Element WYSIWYG Editor build on top of Tiptap and Vue.

Installation

npm i fresh-tap

Usage

HTML:

<head>
  ...
  <!-- must make link public first -->
  <link rel="stylesheet" href="/fresh-tap/dist/style.css" />
  ...
</head>

<body>
<div id="fresh-tap-wrapper"></div>

<script type="module">
import { FreshTap } from 'fresh-tap'

const freshTap = FreshTap({
  initialValue: 'my initial value here',
  previewUrl: 'https://your-preview-url.com',
  previewSelector: '.selector',
  previewWrapperElement: {
    element: 'div',
    attributes: {
      class: 'wrapper-class'
    }
  },
  keepEmptyParagraphLineBreaks: true,
  editorStyles: '.FreshTapEditor .ProseMirror { display: grid; grid-template-columns: 100%; gap: 20px; }'
})

freshTap.addEventListener('value-updated', (e) => {
  console.log(e.detail)
})

document.getElementById('fresh-tap-wrapper')
  ?.appendChild?.(freshTap)
</script>
</body>

Vue:

<template>
  <div>
    <div ref="wysiwyg" />
  </div>
</template>

<script>
import { FreshTap } from 'fresh-tap'
import 'fresh-tap/dist/style.css'

export default {
  data () {
    return {
      freshTap: null
    }
  },
  
  mounted () {
    this.freshTap = FreshTap({
      initialValue: 'my initial value here',
      previewUrl: 'https://your-preview-url.com',
      previewSelector: '.selector',
      previewWrapperElement: {
        element: 'div',
        attributes: {
          class: 'wrapper-class'
        }
      },
      keepEmptyParagraphLineBreaks: true,
      editorStyles: '.FreshTapEditor .ProseMirror { display: grid; grid-template-columns: 100%; gap: 20px; }'
    })
    
    this.freshTap.addEventListener('value-updated', (e) => {
      // do something with the updated value here...
      console.log(e.detail)
    })
    
    this.$refs.wysiwyg.appendChild(this.freshTap)
  }
}
</script>

Props

NameDescriptionDefaultExample
initialValueThe initial value to populate the editor with.'''<p>test!</p>'
previewUrlThe url to populate the 'preview' content into.'''https://yoursite.com/page-where-the-content-will-live'
previewSelectorWhat section of the preview url should be replaced by the content.'''.css-selector-here'
previewWrapperElementThe element to wrap your content in.null{ element: 'div', attributes: { class: 'your-class' } }
uploadImageYour upload image function.async (file) => await blobToDataUrl(file)any async function that takes an image Blob and returns the string of where the image is saved.
saveYour save function.nullany function that takes a value and saves it to your database.
keepEmptyParagraphLineBreaksBoolean to keep empty paragraph line breaks.falsetrue
editorStylesStyles to apply to the editor. Styles should be prefixed with the class .FreshTapEditor .ProseMirror'''.FreshTapEditor .ProseMirror { display: grid; grid-template-columns: 100%; gap: 20px; }'

** All props are optional.

0.2.8

6 months ago

0.2.7

10 months ago

0.2.6

10 months ago

0.2.5

10 months ago

0.2.1

12 months ago

0.2.0

12 months ago

0.1.9

12 months ago

0.2.3

12 months ago

0.2.2

12 months ago

0.2.4

12 months ago

0.1.7

1 year ago

0.1.6

1 year ago

0.1.5

1 year ago

0.1.4

1 year ago

0.1.3

1 year ago

0.1.2

1 year ago

0.1.1

1 year ago

0.1.0

1 year ago

0.0.9

1 year ago

0.0.8

1 year ago

0.0.7

1 year ago

0.0.6

1 year ago

0.0.5

1 year ago

0.0.4

1 year ago

0.0.3

1 year ago

0.0.2

1 year ago

0.0.1

1 year ago

0.0.0

1 year ago