New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

for-editor-herb

Package Overview
Dependencies
Maintainers
1
Versions
26
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

for-editor-herb

react markdown editor

latest
Source
npmnpm
Version
2.3.7
Version published
Weekly downloads
20
185.71%
Maintainers
1
Weekly downloads
 
Created
Source

for-editor-herb

version download cnpmVersion cnpmDownload

Markdown editor for React, support Tex rendering!

About Versions

About Version Number

x.x.x ---> Incompatible Update . New Features(include Fixing Known Bugs) . Fix Bugs

A branch of for-editor! Beacuse of long time without refreshing, without PR handler. Hug to Open Source! If you like this, please give a star to for-editor

  • Demo
  • GitHub

Base on 0.3.5

What's New

  • Toolbar button: quote/paragraph/table/inline code/collapse/katex/list
  • Support to render Tex Block and Inline Tex sentences
  • Responsive Layout
  • Support Preview Outline for jumping appointed anchor
  • Generate TOC
  • Support Simplified Chinese, Traditional Chinese, English, Japanese
  • Support localization ( v2.3.3~ )
  • Support GitHub Diff Syntax ( v1.5.0~ )
  • Support to highlight the programming language which you want ( v2.0.0~ )
  • Support to render emoji by emoji shortname ( v2.2.0~ ), visit joypixels for more information
  • Support markdown Expanded Syntax
    • use ==Mark== to highlight (mark) the inline text ( v2.3.0~ )

Documents

Install

# npm
npm install for-editor-herb -S

# yarn
yarn add for-editor-herb

Use

import React, { Component } from 'react'
import ReactDOM from 'react-dom'
import Editor from 'for-editor-herb'

// require `highlight.js` package
const Hljs = require('highlight.js')

class App extends Component {
  constructor() {
    super()
    this.state = {
      value: ''
    }
  }

  componentDidMount() {
    // register languages in componentDidMount lifecycle
    Hljs.registerLanguage('css', require('highlight.js/lib/languages/css'))
    Hljs.registerLanguage('json', require('highlight.js/lib/languages/json'))
    Hljs.registerLanguage('less', require('highlight.js/lib/languages/less'))
    Hljs.registerLanguage('scss', require('highlight.js/lib/languages/scss'))
    Hljs.registerLanguage('javascript', require('highlight.js/lib/languages/javascript'))
    Hljs.registerLanguage('typescript', require('highlight.js/lib/languages/typescript'))
    Hljs.registerLanguage('go', require('highlight.js/lib/languages/go'))
  }

  handleChange(value) {
    this.setState({
      value
    })
  }

  render() {
    const { value } = this.state
    // Support default language('en', 'zh-CN', 'zh-TW', 'jp') and localization
    const customLang: any = {
      placeholder: "Begin editing...",
      undo: "Undo",
      redo: "Redo",
      h1: "Header 1",
      h2: "Header 2",
      h3: "Header 3",
      h4: "Header 4",
      h5: "Header 5",
      h6: "Header 6",
      img: "Image Link",
      para: "Paragraphy",
      italic: "Italic",
      bold: "Bold",
      bolditalic: "Bold Italic",
      delline: "Delete Line",
      underline: "Underline",
      keytext: "Keyboard Text",
      superscript: "Superscript",
      subscript: "Subscript",
      marktag: "Mark Tag",
      table: "Table",
      quote: "Quote",
      link: "Link",
      list: "List",
      orderlist: "Order List",
      disorderlist: "Disorder List",
      checklist: "Check List",
      inlinecode: "Inline Code",
      code: "Code",
      collapse: "Collapse",
      katex: "KaTeX",
      save: "Save",
      preview: "Preview",
      singleColumn: "Single Column",
      doubleColumn: "Double Columns",
      fullscreenOn: "FullScreen ON",
      fullscreenOff: "FullScreen OFF",
      addImgLink: "Add Image Link",
      addImg: "Upload Image",
      toc: "Generate TOC"
    }

    }
    // Transfer function `Hljs.highlightAuto` to the Editor
    return (
      <Editor
        value={value}
        onChange={() => this.handleChange()}
        highlight={Hljs.highlightAuto}
      />
    )
  }
}

ReactDOM.render(<App />, document.getElementById('root'))

Api

props

nametypedefaultdescription
valueString-value
languageString / IWordsenDefault Language(zh-CN: Simplified Chinese, en: English, zh-TW: Traditional Chinese, jp: Japanese), support localization by following the interface IWords
placeholderStringBegin editing...The default prompt text when the textarea is empty
lineNumBooleantrueShow lineNum
styleObject-editor styles
heightString600pxeditor height
previewBooleanfalsepreview switch
expandBooleanfalsefullscreen switch
subfieldBooleanfalsetrue: Double columns - Edit preview same screen(notice: preview: true), Single Columns - otherwise not
toolbarObjectAs in the following exampletoolbars
outlineBooleantrueDisplay outline list for markdown
highlightFunctionHljs.highlightAutoHljs (highlight.js)'s function --- highlightAuto
anchorBooleantrueControl if the anchor is displayed at the preview
/*
  The default toolbar properties are all true,
  You can customize the object to cover them.
  eg: {
    h1: true,
    code: true,
    preview: true,
  }
  At this point, the toolbar only displays the three function keys.
  notice: Toolbar will be hidden when empty object.
 */

toolbar: {
    h1: true,
    h2: true,
    h3: true,
    h4: true,
    h5: true,
    h6: true,
    img: true,
    list: true,
    para: {
      paragraph: true,            // control the whole part if you don't want to display
      italic: true,
      bold: true,
      bolditalic: true,
      delline: true,
      underline: true,
      keytext: true,
      superscript: true,
      subscript: true,
      marktag: true
    },
    table: true,
    quote: true,
    link: true,
    inlinecode: true,
    code: true,
    collapse: true,
    katex: true,
    preview: true,
    expand: true,
    undo: true,
    redo: true,
    save: true,
    subfield: true,
    toc: true         // generate TOC

Localization

IWords

interface IWords {
  placeholder: string
  h1: string
  h2: string
  h3: string
  h4: string
  h5: string
  h6: string
  undo: string
  redo: string
  list: string
  orderlist: string
  disorderlist: string
  checklist: string
  para: string
  italic: string
  bold: string
  bolditalic: string
  delline: string
  underline: string
  keytext: string
  superscript: string
  subscript: string
  marktag: string
  quote: string
  table: string
  img: string
  link: string
  inlinecode: string
  code: string
  collapse: string
  katex: string
  save: string
  preview: string
  singleColumn: string
  doubleColumn: string
  fullscreenOn: string
  fullscreenOff: string
  addImgLink: string
  addImg: string
  toc: string
}

events

nameparamsdefaultdescription
onChangeString: value-Edit area change callback event
onSaveString: value-Ctrl+s and click save button callback event
addImgFile: file-upload image callback event

upload image

class App extends Component {
  constructor() {
    super()
    this.state = {
      value: ''
    }
    this.$vm = React.createRef()
  }

  handleChange(value) {
    this.setState({
      value
    })
  }

  addImg($file) {
    this.$vm.current.$img2Url($file.name, 'file_url')
    console.log($file)
  }

  render() {
    const { value } = this.state

    return (
      <Editor
        ref={this.$vm}
        value={value}
        addImg={($file) => this.addImg($file)}
        onChange={(value) => this.handleChange(value)}
      />
    )
  }
}

hot key

namedescription
tabtwo space
ctrl+ssave
ctrl+zundo
ctrl+yredo

Update

Licence

for-editor is MIT Licence.

Keywords

javascript

FAQs

Package last updated on 15 Apr 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts