import { Node , Schema } from 'prosemirror-model' ; import { Plugin , EditorState , Transaction } from 'prosemirror-state' ; import { EditorView , NodeView } from 'prosemirror-view' ; import * as showdown from 'showdown' ; export interface ExtensionSchema { content ? : string ; group ? : string ; parseDOM ? : ( { tag ? : string ; style ? : string ; } ) [ ] ; text ? : string ; toDOM ? ( node ) : ( string | { [ key ] : any ; } | number ) [ ] ; } export type Dispatch = ( tr : Transaction < any > ) => void ; type CustomLayoutProps = { dispatch : Dispatch ; state : EditorState ; } ; export type ExtensionProps = { schema ? : ExtensionSchema ; className ? : string ; tagName ? : string ; icon ? : JSX . Element | string ; customName ? : string ; } & { [ key ] : any ; } | null ; export abstract class Extension { constructor ( props ) { if ( props ) { this . className = props . className ; this . customSchema = props . schema ; this . tagName = props . tagName ; this . customIcon = props . icon ; this . customName = props . customName ; } } name : string ; customName ? : string ; schema ? : ExtensionSchema ; customSchema ? : ExtensionSchema ; schemaDependencies ? : { [ key ] : ExtensionSchema ; } ; customProps ? : { [ key ] : any ; } ; tagName ? : string ; className ? : string ; customMenu ? ( { state : EditorState , dispatch : Dispatch } ) ; customInlineMenu ? ( { state : EditorState , dispatch : Dispatch } ) ; customLayout ? ( props , dom ) ; customButton ? ( { state : EditorState , dispatch : Dispatch } ) ; customIcon ? : JSX . Element | string ; icon ? : JSX . Element | string ; plugins ? : Plugin < any , any > [ ] ; showMenu : boolean ; hideMenuOnFocus ? : boolean ; hideBlockMenuOnFocus ? : boolean ; hideInlineMenuOnFocus ? : boolean ; group ? : string ; view ? ( node , view , getPos ) ; active ? ( state ) ; enable ? ( state ) ; onClick ? ( state , dispatch , view ? ) ; keys ? ( schema ) ; btnColor ? : 'black' | 'white' ; } type OutputJson = { [ key ] : any ; } ; export type Output = { json : OutputJson ; html : string ; schema : Schema ; markdown ? : string ; } ; export type AppProps = { onChange ? ( output ) : void ; onTitleChange ? ( title ) : void ; onInit ? ( json ) : void ; json ? : OutputJson ; html ? : string ; markdown ? : string ; showdown ? : showdown ; extensions ? : Extension [ ] ; showBackBtn ? : boolean ; autoSave ? : boolean ; showTitle ? : boolean ; titleText ? : string ; titlePlaceholder ? : string ; outputMarkdown ? : boolean ; full ? : boolean ; getEditorRef ? ( div ) : void ; } ;