46 lines
1.5 KiB
JavaScript
46 lines
1.5 KiB
JavaScript
/* eslint-env browser */
|
|
import * as Y from '../../src/index.js'
|
|
import { prosemirrorPlugin, cursorPlugin } from '../../bindings/ProsemirrorBinding/ProsemirrorBinding.js'
|
|
import WebsocketProvider from '../../provider/websocket/WebSocketProvider.js'
|
|
|
|
import {EditorState} from 'prosemirror-state'
|
|
import {EditorView} from 'prosemirror-view'
|
|
import {Schema, DOMParser, Mark, Fragment, Node, Slice} from 'prosemirror-model'
|
|
import {schema} from 'prosemirror-schema-basic'
|
|
import {exampleSetup} from 'prosemirror-example-setup'
|
|
import { PlaceholderPlugin, startImageUpload } from './PlaceholderPlugin.js'
|
|
|
|
const provider = new WebsocketProvider('ws://localhost:1234/')
|
|
const ydocument = provider.get('prosemirror')
|
|
|
|
/**
|
|
* @type {any}
|
|
*/
|
|
const type = ydocument.define('prosemirror', Y.XmlFragment)
|
|
|
|
const view = new EditorView(document.querySelector('#editor'), {
|
|
state: EditorState.create({
|
|
doc: DOMParser.fromSchema(schema).parse(document.querySelector('#content')),
|
|
plugins: exampleSetup({schema}).concat([PlaceholderPlugin, prosemirrorPlugin(type), cursorPlugin])
|
|
})
|
|
})
|
|
|
|
window.provider = provider
|
|
window.ydocument = ydocument
|
|
window.type = type
|
|
window.view = view
|
|
window.EditorState = EditorState
|
|
window.EditorView = EditorView
|
|
window.Mark = Mark
|
|
window.Fragment = Fragment
|
|
window.Node = Node
|
|
window.Schema = Schema
|
|
window.Slice = Slice
|
|
|
|
document.querySelector('#image-upload').addEventListener('change', e => {
|
|
if (view.state.selection.$from.parent.inlineContent && e.target.files.length) {
|
|
startImageUpload(view, e.target.files[0])
|
|
}
|
|
view.focus()
|
|
})
|