From f893198769250d1257365bb8220ad50195495325 Mon Sep 17 00:00:00 2001 From: Kevin Jahns Date: Wed, 22 May 2019 17:32:51 +0200 Subject: [PATCH] remove examples. fixes #149 --- examples/.gitignore | 1 - examples/codemirror.html | 70 ----- examples/codemirror.js | 22 -- examples/dom.html | 37 --- examples/dom.js | 13 - examples/exampleConfig.js | 9 - examples/examples.json | 17 -- examples/prosemirror-history.js | 159 ---------- examples/prosemirror-schema.js | 197 ------------- examples/prosemirror.css | 330 --------------------- examples/prosemirror.html | 123 -------- examples/prosemirror.js | 36 --- examples/quill.html | 51 ---- examples/quill.js | 30 -- examples/style.css | 29 -- examples/textarea.html | 32 -- examples/textarea.js | 14 - package-lock.json | 507 ++++++++++---------------------- package.json | 14 +- rollup.config.js | 16 - 20 files changed, 151 insertions(+), 1556 deletions(-) delete mode 100644 examples/.gitignore delete mode 100644 examples/codemirror.html delete mode 100644 examples/codemirror.js delete mode 100644 examples/dom.html delete mode 100644 examples/dom.js delete mode 100644 examples/exampleConfig.js delete mode 100644 examples/examples.json delete mode 100644 examples/prosemirror-history.js delete mode 100644 examples/prosemirror-schema.js delete mode 100644 examples/prosemirror.css delete mode 100644 examples/prosemirror.html delete mode 100644 examples/prosemirror.js delete mode 100644 examples/quill.html delete mode 100644 examples/quill.js delete mode 100644 examples/style.css delete mode 100644 examples/textarea.html delete mode 100644 examples/textarea.js diff --git a/examples/.gitignore b/examples/.gitignore deleted file mode 100644 index 378eac25..00000000 --- a/examples/.gitignore +++ /dev/null @@ -1 +0,0 @@ -build diff --git a/examples/codemirror.html b/examples/codemirror.html deleted file mode 100644 index cf29c4d1..00000000 --- a/examples/codemirror.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - Yjs CodeMirror Example - - - - -

This example shows how to bind a YText type to CodeMirror editor.

-

The content of this editor is shared with every client who visits this domain.

-
- -
-
- - - - \ No newline at end of file diff --git a/examples/codemirror.js b/examples/codemirror.js deleted file mode 100644 index a5840883..00000000 --- a/examples/codemirror.js +++ /dev/null @@ -1,22 +0,0 @@ -import { WebsocketProvider } from 'y-websocket' -import { CodeMirrorBinding } from 'y-codemirror' - -import * as conf from './exampleConfig.js' - -import CodeMirror from 'codemirror' -import 'codemirror/mode/javascript/javascript.js' - -const provider = new WebsocketProvider(conf.serverAddress) -const ydocument = provider.get('codemirror') -const ytext = ydocument.getText('codemirror') - -const editor = new CodeMirror(document.querySelector('#container'), { - mode: 'javascript', - lineNumbers: true -}) - -const binding = new CodeMirrorBinding(ytext, editor) - -window.codemirrorExample = { - binding, editor, ytext, ydocument -} diff --git a/examples/dom.html b/examples/dom.html deleted file mode 100644 index 74e005b3..00000000 --- a/examples/dom.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - Yjs Prosemirror Example - - - - -

This example shows how to bind a YXmlFragment type to an arbitrary DOM element. We set the DOM element to contenteditable so it basically behaves like a very powerful rich-text editor.

-

The content of this editor is shared with every client who visits this domain.

-
-
- -
-
- - - - \ No newline at end of file diff --git a/examples/dom.js b/examples/dom.js deleted file mode 100644 index d1aa465b..00000000 --- a/examples/dom.js +++ /dev/null @@ -1,13 +0,0 @@ -import * as Y from '../src/index.js' -import { WebsocketProvider } from 'y-websocket' -import { DomBinding } from 'y-dom' -import * as conf from './exampleConfig.js' - -const provider = new WebsocketProvider(conf.serverAddress) -const ydocument = provider.get('dom') -const type = ydocument.define('xml', Y.XmlFragment) -const binding = new DomBinding(type, document.querySelector('#content'), { scrollingElement: document.scrollingElement }) - -window.example = { - provider, ydocument, type, binding -} diff --git a/examples/exampleConfig.js b/examples/exampleConfig.js deleted file mode 100644 index 566ed9b5..00000000 --- a/examples/exampleConfig.js +++ /dev/null @@ -1,9 +0,0 @@ -/* eslint-env browser */ - -const isDeployed = location.hostname === 'yjs.website' - -if (!isDeployed) { - console.log('%cYjs: Start your local websocket server by running %c`npm run websocket-server`', 'color:blue', 'color: grey; font-weight: bold') -} - -export const serverAddress = isDeployed ? 'wss://api.yjs.website' : 'ws://localhost:1234' diff --git a/examples/examples.json b/examples/examples.json deleted file mode 100644 index c9515c58..00000000 --- a/examples/examples.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "codemirror": { - "title": "CodeMirror Binding" - }, - "prosemirror": { - "title": "ProseMirror Binding" - }, - "textarea": { - "title": "Textarea Binding" - }, - "quill": { - "title": "Quill Binding" - }, - "dom": { - "title": "Dom Binding" - } -} \ No newline at end of file diff --git a/examples/prosemirror-history.js b/examples/prosemirror-history.js deleted file mode 100644 index 48a45cf7..00000000 --- a/examples/prosemirror-history.js +++ /dev/null @@ -1,159 +0,0 @@ - -import { Plugin } from 'prosemirror-state' -import crel from 'crel' -import * as Y from '../src/index.js' -import { prosemirrorPluginKey } from 'y-prosemirror' -import * as encoding from 'lib0/encoding.js' -import * as decoding from 'lib0/decoding.js' -import * as historyProtocol from 'y-protocols/history.js' - -const niceColors = ['#3cb44b', '#4363d8', '#f58231', '#911eb4', '#46f0f0', '#f032e6', '#bcf60c', '#008080', '#9a6324', '#800000', '#808000', '#000075', '#808080'] - -const createUserCSS = (userid, username, color = 'rgb(250, 129, 0)', color2 = 'rgba(250, 129, 0, .41)') => ` - [ychange_state][ychange_user="${userid}"]:hover::before { - content: "${username}" !important; - background-color: ${color} !important; - } - [ychange_state="added"][ychange_user="${userid}"] { - background-color: ${color2} !important; - } - [ychange_state="removed"][ychange_user="${userid}"] { - color: ${color} !important; - } -` - -export const noteHistoryPlugin = new Plugin({ - state: { - init (initargs, state) { - return new NoteHistoryPlugin() - }, - apply (tr, pluginState) { - return pluginState - } - }, - view (editorView) { - const hstate = noteHistoryPlugin.getState(editorView.state) - hstate.init(editorView) - return { - destroy: hstate.destroy.bind(hstate) - } - } -}) - -const createWrapper = () => { - const wrapper = crel('div', { style: 'display: flex;' }) - const historyContainer = crel('div', { style: 'align-self: baseline; flex-basis: 250px;', class: 'shared-history' }) - wrapper.insertBefore(historyContainer, null) - const userStyleContainer = crel('style') - wrapper.insertBefore(userStyleContainer, null) - return { wrapper, historyContainer, userStyleContainer } -} - -class NoteHistoryPlugin { - init (editorView) { - this.editorView = editorView - const { historyContainer, wrapper, userStyleContainer } = createWrapper() - this.userStyleContainer = userStyleContainer - this.wrapper = wrapper - this.historyContainer = historyContainer - const n = editorView.dom.parentNode.parentNode - n.parentNode.replaceChild(this.wrapper, n) - n.style['flex-grow'] = '1' - wrapper.insertBefore(n, this.wrapper.firstChild) - this.render() - const y = prosemirrorPluginKey.getState(this.editorView.state).y - const history = y.define('history', Y.Array) - history.observe(this.render.bind(this)) - } - destroy () { - this.wrapper.parentNode.replaceChild(this.wrapper.firstChild, this.wrapper) - const y = prosemirrorPluginKey.getState(this.editorView.state).y - const history = y.define('history', Y.Array) - history.unobserve(this.render) - } - render () { - const y = prosemirrorPluginKey.getState(this.editorView.state).y - const history = y.define('history', Y.Array).toArray() - const fragment = document.createDocumentFragment() - const snapshotBtn = crel('button', { type: 'button' }, ['snapshot']) - fragment.insertBefore(snapshotBtn, null) - let _prevSnap = null // empty - snapshotBtn.addEventListener('click', () => { - const awareness = y.getAwarenessInfo() - const userMap = new Map() - const aw = y.getLocalAwarenessInfo() - userMap.set(y.userID, aw.name || 'unknown') - awareness.forEach((a, userID) => { - userMap.set(userID, a.name || 'Unknown') - }) - this.snapshot(userMap) - }) - history.forEach(buf => { - const decoder = decoding.createDecoder(buf) - const snapshot = historyProtocol.readHistorySnapshot(decoder) - const date = new Date(decoding.readUint32(decoder) * 1000) - const restoreBtn = crel('button', { type: 'button' }, ['restore']) - const a = crel('a', [ - '• ' + date.toUTCString(), restoreBtn - ]) - const el = crel('div', [ a ]) - let prevSnapshot = _prevSnap // rebind to new variable - restoreBtn.addEventListener('click', event => { - if (prevSnapshot === null) { - prevSnapshot = { ds: snapshot.ds, sm: new Map() } - } - this.editorView.dispatch(this.editorView.state.tr.setMeta(prosemirrorPluginKey, { snapshot, prevSnapshot, restore: true })) - event.stopPropagation() - }) - a.addEventListener('click', () => { - console.log('setting snapshot') - if (prevSnapshot === null) { - prevSnapshot = { ds: snapshot.ds, sm: new Map() } - } - this.renderSnapshot(snapshot, prevSnapshot) - }) - fragment.insertBefore(el, null) - _prevSnap = snapshot - }) - this.historyContainer.innerHTML = '' - this.historyContainer.insertBefore(fragment, null) - } - renderSnapshot (snapshot, prevSnapshot) { - this.editorView.dispatch(this.editorView.state.tr.setMeta(prosemirrorPluginKey, { snapshot, prevSnapshot })) - /** - * @type {Array} - */ - let colors = niceColors.slice() - let style = '' - snapshot.userMap.forEach((name, userid) => { - /** - * @type {any} - */ - const randInt = name.split('').map(s => s.charCodeAt(0)).reduce((a, b) => a + b) - let color = null - let i = 0 - for (; i < colors.length && color === null; i++) { - color = colors[(randInt + i) % colors.length] - } - if (color === null) { - colors = niceColors.slice() - i = 0 - color = colors[randInt % colors.length] - } - colors[randInt % colors.length] = null - style += createUserCSS(userid, name, color, color + '69') - }) - this.userStyleContainer.innerHTML = style - } - /** - * @param {Map} [updatedUserMap] Maps from userid (yjs model) to account name (e.g. mail address) - */ - snapshot (updatedUserMap = new Map()) { - const y = prosemirrorPluginKey.getState(this.editorView.state).y - const history = y.define('history', Y.Array) - const encoder = encoding.createEncoder() - historyProtocol.writeHistorySnapshot(encoder, y, updatedUserMap) - encoding.writeUint32(encoder, Math.floor(Date.now() / 1000)) - history.push([encoding.toUint8Array(encoder)]) - } -} diff --git a/examples/prosemirror-schema.js b/examples/prosemirror-schema.js deleted file mode 100644 index b282cbf2..00000000 --- a/examples/prosemirror-schema.js +++ /dev/null @@ -1,197 +0,0 @@ -import { Schema } from 'prosemirror-model' - -const brDOM = ['br'] - -const calcYchangeDomAttrs = (attrs, domAttrs = {}) => { - domAttrs = Object.assign({}, domAttrs) - if (attrs.ychange !== null) { - domAttrs.ychange_user = attrs.ychange.user - domAttrs.ychange_state = attrs.ychange.state - } - return domAttrs -} - -// :: Object -// [Specs](#model.NodeSpec) for the nodes defined in this schema. -export const nodes = { - // :: NodeSpec The top level document node. - doc: { - content: 'block+' - }, - - // :: NodeSpec A plain paragraph textblock. Represented in the DOM - // as a `

` element. - paragraph: { - attrs: { ychange: { default: null } }, - content: 'inline*', - group: 'block', - parseDOM: [{ tag: 'p' }], - toDOM (node) { return ['p', calcYchangeDomAttrs(node.attrs), 0] } - }, - - // :: NodeSpec A blockquote (`

`) wrapping one or more blocks. - blockquote: { - attrs: { ychange: { default: null } }, - content: 'block+', - group: 'block', - defining: true, - parseDOM: [{ tag: 'blockquote' }], - toDOM (node) { return ['blockquote', calcYchangeDomAttrs(node.attrs), 0] } - }, - - // :: NodeSpec A horizontal rule (`
`). - horizontal_rule: { - attrs: { ychange: { default: null } }, - group: 'block', - parseDOM: [{ tag: 'hr' }], - toDOM (node) { - return ['hr', calcYchangeDomAttrs(node.attrs)] - } - }, - - // :: NodeSpec A heading textblock, with a `level` attribute that - // should hold the number 1 to 6. Parsed and serialized as `

` to - // `

` elements. - heading: { - attrs: { - level: { default: 1 }, - ychange: { default: null } - }, - content: 'inline*', - group: 'block', - defining: true, - parseDOM: [{ tag: 'h1', attrs: { level: 1 } }, - { tag: 'h2', attrs: { level: 2 } }, - { tag: 'h3', attrs: { level: 3 } }, - { tag: 'h4', attrs: { level: 4 } }, - { tag: 'h5', attrs: { level: 5 } }, - { tag: 'h6', attrs: { level: 6 } }], - toDOM (node) { return ['h' + node.attrs.level, calcYchangeDomAttrs(node.attrs), 0] } - }, - - // :: NodeSpec A code listing. Disallows marks or non-text inline - // nodes by default. Represented as a `
` element with a
-  // `` element inside of it.
-  code_block: {
-    attrs: { ychange: { default: null } },
-    content: 'text*',
-    marks: '',
-    group: 'block',
-    code: true,
-    defining: true,
-    parseDOM: [{ tag: 'pre', preserveWhitespace: 'full' }],
-    toDOM (node) { return ['pre', calcYchangeDomAttrs(node.attrs), ['code', 0]] }
-  },
-
-  // :: NodeSpec The text node.
-  text: {
-    group: 'inline'
-  },
-
-  // :: NodeSpec An inline image (``) node. Supports `src`,
-  // `alt`, and `href` attributes. The latter two default to the empty
-  // string.
-  image: {
-    inline: true,
-    attrs: {
-      ychange: { default: null },
-      src: {},
-      alt: { default: null },
-      title: { default: null }
-    },
-    group: 'inline',
-    draggable: true,
-    parseDOM: [{ tag: 'img[src]',
-      getAttrs (dom) {
-        return {
-          src: dom.getAttribute('src'),
-          title: dom.getAttribute('title'),
-          alt: dom.getAttribute('alt')
-        }
-      } }],
-    toDOM (node) {
-      const domAttrs = {
-        src: node.attrs.src,
-        title: node.attrs.title,
-        alt: node.attrs.alt
-      }
-      return ['img', calcYchangeDomAttrs(node.attrs, domAttrs)]
-    }
-  },
-
-  // :: NodeSpec A hard line break, represented in the DOM as `
`. - hard_break: { - inline: true, - group: 'inline', - selectable: false, - parseDOM: [{ tag: 'br' }], - toDOM () { return brDOM } - } -} - -const emDOM = ['em', 0]; const strongDOM = ['strong', 0]; const codeDOM = ['code', 0] - -// :: Object [Specs](#model.MarkSpec) for the marks in the schema. -export const marks = { - // :: MarkSpec A link. Has `href` and `title` attributes. `title` - // defaults to the empty string. Rendered and parsed as an `` - // element. - link: { - attrs: { - href: {}, - title: { default: null } - }, - inclusive: false, - parseDOM: [{ tag: 'a[href]', - getAttrs (dom) { - return { href: dom.getAttribute('href'), title: dom.getAttribute('title') } - } }], - toDOM (node) { return ['a', node.attrs, 0] } - }, - - // :: MarkSpec An emphasis mark. Rendered as an `` element. - // Has parse rules that also match `` and `font-style: italic`. - em: { - parseDOM: [{ tag: 'i' }, { tag: 'em' }, { style: 'font-style=italic' }], - toDOM () { return emDOM } - }, - - // :: MarkSpec A strong mark. Rendered as ``, parse rules - // also match `` and `font-weight: bold`. - strong: { - parseDOM: [{ tag: 'strong' }, - // This works around a Google Docs misbehavior where - // pasted content will be inexplicably wrapped in `` - // tags with a font-weight normal. - { tag: 'b', getAttrs: node => node.style.fontWeight !== 'normal' && null }, - { style: 'font-weight', getAttrs: value => /^(bold(er)?|[5-9]\d{2,})$/.test(value) && null }], - toDOM () { return strongDOM } - }, - - // :: MarkSpec Code font mark. Represented as a `` element. - code: { - parseDOM: [{ tag: 'code' }], - toDOM () { return codeDOM } - }, - ychange: { - attrs: { - user: { default: null }, - state: { default: null } - }, - inclusive: false, - parseDOM: [{ tag: 'ychange' }], - toDOM (node) { - return ['ychange', { ychange_user: node.attrs.user, ychange_state: node.attrs.state }, 0] - } - } -} - -// :: Schema -// This schema rougly corresponds to the document schema used by -// [CommonMark](http://commonmark.org/), minus the list elements, -// which are defined in the [`prosemirror-schema-list`](#schema-list) -// module. -// -// To reuse elements from this schema, extend or read from its -// `spec.nodes` and `spec.marks` [properties](#model.Schema.spec). -export const schema = new Schema({ nodes, marks }) diff --git a/examples/prosemirror.css b/examples/prosemirror.css deleted file mode 100644 index 4e5895fc..00000000 --- a/examples/prosemirror.css +++ /dev/null @@ -1,330 +0,0 @@ -.ProseMirror { - position: relative; -} - -.ProseMirror { - word-wrap: break-word; - white-space: pre-wrap; - -webkit-font-variant-ligatures: none; - font-variant-ligatures: none; -} - -.ProseMirror pre { - white-space: pre-wrap; -} - -.ProseMirror li { - position: relative; -} - -.ProseMirror-hideselection *::selection { background: transparent; } -.ProseMirror-hideselection *::-moz-selection { background: transparent; } -.ProseMirror-hideselection { caret-color: transparent; } - -.ProseMirror-selectednode { - outline: 2px solid #8cf; -} - -/* Make sure li selections wrap around markers */ - -li.ProseMirror-selectednode { - outline: none; -} - -li.ProseMirror-selectednode:after { - content: ""; - position: absolute; - left: -32px; - right: -2px; top: -2px; bottom: -2px; - border: 2px solid #8cf; - pointer-events: none; -} -.ProseMirror-textblock-dropdown { - min-width: 3em; -} - -.ProseMirror-menu { - margin: 0 -4px; - line-height: 1; -} - -.ProseMirror-tooltip .ProseMirror-menu { - width: -webkit-fit-content; - width: fit-content; - white-space: pre; -} - -.ProseMirror-menuitem { - margin-right: 3px; - display: inline-block; -} - -.ProseMirror-menuseparator { - border-right: 1px solid #ddd; - margin-right: 3px; -} - -.ProseMirror-menu-dropdown, .ProseMirror-menu-dropdown-menu { - font-size: 90%; - white-space: nowrap; -} - -.ProseMirror-menu-dropdown { - vertical-align: 1px; - cursor: pointer; - position: relative; - padding-right: 15px; -} - -.ProseMirror-menu-dropdown-wrap { - padding: 1px 0 1px 4px; - display: inline-block; - position: relative; -} - -.ProseMirror-menu-dropdown:after { - content: ""; - border-left: 4px solid transparent; - border-right: 4px solid transparent; - border-top: 4px solid currentColor; - opacity: .6; - position: absolute; - right: 4px; - top: calc(50% - 2px); -} - -.ProseMirror-menu-dropdown-menu, .ProseMirror-menu-submenu { - position: absolute; - background: white; - color: #666; - border: 1px solid #aaa; - padding: 2px; -} - -.ProseMirror-menu-dropdown-menu { - z-index: 15; - min-width: 6em; -} - -.ProseMirror-menu-dropdown-item { - cursor: pointer; - padding: 2px 8px 2px 4px; -} - -.ProseMirror-menu-dropdown-item:hover { - background: #f2f2f2; -} - -.ProseMirror-menu-submenu-wrap { - position: relative; - margin-right: -4px; -} - -.ProseMirror-menu-submenu-label:after { - content: ""; - border-top: 4px solid transparent; - border-bottom: 4px solid transparent; - border-left: 4px solid currentColor; - opacity: .6; - position: absolute; - right: 4px; - top: calc(50% - 4px); -} - -.ProseMirror-menu-submenu { - display: none; - min-width: 4em; - left: 100%; - top: -3px; -} - -.ProseMirror-menu-active { - background: #eee; - border-radius: 4px; -} - -.ProseMirror-menu-active { - background: #eee; - border-radius: 4px; -} - -.ProseMirror-menu-disabled { - opacity: .3; -} - -.ProseMirror-menu-submenu-wrap:hover .ProseMirror-menu-submenu, .ProseMirror-menu-submenu-wrap-active .ProseMirror-menu-submenu { - display: block; -} - -.ProseMirror-menubar { - border-top-left-radius: inherit; - border-top-right-radius: inherit; - position: relative; - min-height: 1em; - color: #666; - padding: 1px 6px; - top: 0; left: 0; right: 0; - border-bottom: 1px solid silver; - background: white; - z-index: 10; - -moz-box-sizing: border-box; - box-sizing: border-box; - overflow: visible; -} - -.ProseMirror-icon { - display: inline-block; - line-height: .8; - vertical-align: -2px; /* Compensate for padding */ - padding: 2px 8px; - cursor: pointer; -} - -.ProseMirror-menu-disabled.ProseMirror-icon { - cursor: default; -} - -.ProseMirror-icon svg { - fill: currentColor; - height: 1em; -} - -.ProseMirror-icon span { - vertical-align: text-top; -} -.ProseMirror-gapcursor { - display: none; - pointer-events: none; - position: absolute; -} - -.ProseMirror-gapcursor:after { - content: ""; - display: block; - position: absolute; - top: -2px; - width: 20px; - border-top: 1px solid black; - animation: ProseMirror-cursor-blink 1.1s steps(2, start) infinite; -} - -@keyframes ProseMirror-cursor-blink { - to { - visibility: hidden; - } -} - -.ProseMirror-focused .ProseMirror-gapcursor { - display: block; -} -/* Add space around the hr to make clicking it easier */ - -.ProseMirror-example-setup-style hr { - padding: 2px 10px; - border: none; - margin: 1em 0; -} - -.ProseMirror-example-setup-style hr:after { - content: ""; - display: block; - height: 1px; - background-color: silver; - line-height: 2px; -} - -.ProseMirror ul, .ProseMirror ol { - padding-left: 30px; -} - -.ProseMirror blockquote { - padding-left: 1em; - border-left: 3px solid #eee; - margin-left: 0; margin-right: 0; -} - -.ProseMirror-example-setup-style img { - cursor: default; -} - -.ProseMirror-prompt { - background: white; - padding: 5px 10px 5px 15px; - border: 1px solid silver; - position: fixed; - border-radius: 3px; - z-index: 11; - box-shadow: -.5px 2px 5px rgba(0, 0, 0, .2); -} - -.ProseMirror-prompt h5 { - margin: 0; - font-weight: normal; - font-size: 100%; - color: #444; -} - -.ProseMirror-prompt input[type="text"], -.ProseMirror-prompt textarea { - background: #eee; - border: none; - outline: none; -} - -.ProseMirror-prompt input[type="text"] { - padding: 0 4px; -} - -.ProseMirror-prompt-close { - position: absolute; - left: 2px; top: 1px; - color: #666; - border: none; background: transparent; padding: 0; -} - -.ProseMirror-prompt-close:after { - content: "✕"; - font-size: 12px; -} - -.ProseMirror-invalid { - background: #ffc; - border: 1px solid #cc7; - border-radius: 4px; - padding: 5px 10px; - position: absolute; - min-width: 10em; -} - -.ProseMirror-prompt-buttons { - margin-top: 5px; - display: none; -} -#editor, .editor { - background: white; - color: black; - background-clip: padding-box; - border-radius: 4px; - border: 2px solid rgba(0, 0, 0, 0.2); - padding: 5px 0; - margin-bottom: 23px; -} - -.ProseMirror p:first-child, -.ProseMirror h1:first-child, -.ProseMirror h2:first-child, -.ProseMirror h3:first-child, -.ProseMirror h4:first-child, -.ProseMirror h5:first-child, -.ProseMirror h6:first-child { - margin-top: 10px; -} - -.ProseMirror { - padding: 4px 8px 4px 14px; - line-height: 1.2; - outline: none; -} - -.ProseMirror p { margin-bottom: 1em } - diff --git a/examples/prosemirror.html b/examples/prosemirror.html deleted file mode 100644 index 8647361d..00000000 --- a/examples/prosemirror.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - Yjs Prosemirror Example - - - - - -

This example shows how to bind a YXmlFragment to a Prosemirror editor using y-prosemirror.

-

The content of this editor is shared with every client that visits this domain.

-
- -
- -
- - - - \ No newline at end of file diff --git a/examples/prosemirror.js b/examples/prosemirror.js deleted file mode 100644 index a3196f64..00000000 --- a/examples/prosemirror.js +++ /dev/null @@ -1,36 +0,0 @@ -import * as Y from 'yjs' -import { WebsocketProvider } from 'y-websocket' -import { prosemirrorPlugin, cursorPlugin } from 'y-prosemirror' - -import * as conf from './exampleConfig.js' - -import { EditorState } from 'prosemirror-state' -import { EditorView } from 'prosemirror-view' -import { DOMParser } from 'prosemirror-model' -import { schema } from './prosemirror-schema.js' -import { exampleSetup } from 'prosemirror-example-setup' -// import { noteHistoryPlugin } from './prosemirror-history.js' - -const provider = new WebsocketProvider(conf.serverAddress) -const ydocument = provider.get('prosemirror' /*, { gc: false } */) -const type = ydocument.get('prosemirror', Y.XmlFragment) - -const prosemirrorView = new EditorView(document.querySelector('#editor'), { - state: EditorState.create({ - doc: DOMParser.fromSchema(schema).parse(document.querySelector('#content')), - plugins: exampleSetup({ schema }).concat([prosemirrorPlugin(type), cursorPlugin]) - }) -}) - -const connectBtn = document.querySelector('.y-connect-btn') -connectBtn.addEventListener('click', () => { - if (ydocument.wsconnected) { - ydocument.disconnect() - connectBtn.textContent = 'Connect' - } else { - ydocument.connect() - connectBtn.textContent = 'Disconnect' - } -}) - -window.example = { provider, ydocument, type, prosemirrorView } diff --git a/examples/quill.html b/examples/quill.html deleted file mode 100644 index d3d9e69a..00000000 --- a/examples/quill.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - Yjs Quill Example - - - -

This example shows how to bind a YText type to Quill editor.

-

The content of this editor is shared with every client who visits this domain.

-
-
-
-
-
-
- - - - \ No newline at end of file diff --git a/examples/quill.js b/examples/quill.js deleted file mode 100644 index 3e9a06cd..00000000 --- a/examples/quill.js +++ /dev/null @@ -1,30 +0,0 @@ -import * as Y from '../src/index.js' -import { WebsocketProvider } from 'y-websocket' -import { QuillBinding } from 'y-quill' - -import * as conf from './exampleConfig.js' - -import Quill from 'quill' - -const provider = new WebsocketProvider(conf.serverAddress) -const ydocument = provider.get('quill') -const ytext = ydocument.define('quill', Y.Text) - -const quill = new Quill('#quill-container', { - modules: { - toolbar: [ - [{ header: [1, 2, false] }], - ['bold', 'italic', 'underline'], - ['image', 'code-block'], - [{ color: [] }, { background: [] }], // Snow theme fills in values - [{ script: 'sub' }, { script: 'super' }], - ['link', 'image'], - ['link', 'code-block'], - [{ list: 'ordered' }, { list: 'bullet' }] - ] - }, - placeholder: 'Compose an epic...', - theme: 'snow' // or 'bubble' -}) - -window.quillBinding = new QuillBinding(ytext, quill) diff --git a/examples/style.css b/examples/style.css deleted file mode 100644 index 232e234b..00000000 --- a/examples/style.css +++ /dev/null @@ -1,29 +0,0 @@ -footer img { - display: none; -} - -nav .title h1 a { - display: none; -} - -footer { - background-color: #b93c1d; -} - -#resizer { - background-color: #b93c1d; -} - -.main section article.readme h1:first-child img { - display: none; -} - -.main section article.readme h1:first-child { - margin-bottom: 16px; - margin-top: 30px; -} - -.main section article.readme h1:first-child::before { - content: "Yjs"; - font-size: 2em; -} \ No newline at end of file diff --git a/examples/textarea.html b/examples/textarea.html deleted file mode 100644 index 56bb6085..00000000 --- a/examples/textarea.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - Yjs Textarea Example - - -

This example shows how to bind a YText type to a DOM Textarea.

-

The content of this textarea is shared with every client who visits this domain.

-
- - -
- - - - \ No newline at end of file diff --git a/examples/textarea.js b/examples/textarea.js deleted file mode 100644 index 585f232f..00000000 --- a/examples/textarea.js +++ /dev/null @@ -1,14 +0,0 @@ -import { WebsocketProvider } from 'y-websocket' -import { TextareaBinding } from 'y-textarea' - -import * as conf from './exampleConfig.js' - -const provider = new WebsocketProvider(conf.serverAddress) -const ydocument = provider.get('textarea') -const type = ydocument.getText('textarea') -const textarea = document.querySelector('textarea') -const binding = new TextareaBinding(type, textarea) - -window.textareaExample = { - provider, ydocument, type, textarea, binding -} diff --git a/package-lock.json b/package-lock.json index 98a99537..7e0231ba 100644 --- a/package-lock.json +++ b/package-lock.json @@ -625,24 +625,12 @@ "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", "dev": true }, - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", - "dev": true - }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", "dev": true }, - "codemirror": { - "version": "5.46.0", - "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.46.0.tgz", - "integrity": "sha512-3QpMge0vg4QEhHW3hBAtCipJEWjTJrqLLXdIaWptJOblf1vHFeXLNtFhPai/uX2lnFCehWNk4yOdaMR853Z02w==", - "dev": true - }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -668,12 +656,6 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "colors": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", - "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==", - "dev": true - }, "commander": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.6.0.tgz", @@ -801,22 +783,6 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, - "cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dev": true, - "requires": { - "object-assign": "^4", - "vary": "^1" - } - }, - "crel": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/crel/-/crel-3.1.0.tgz", - "integrity": "sha512-VIGY44ERxx8lXVkOEfcB0A49OkjxkQNK+j+fHvoLy7GsGX1KKgAaQ+p9N0YgvQXu+X+ryUWGDeLx/fSI+w7+eg==", - "dev": true - }, "cross-spawn": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", @@ -873,12 +839,6 @@ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, - "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", - "dev": true - }, "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", @@ -1487,12 +1447,6 @@ "through": "~2.3.1" } }, - "eventemitter3": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-2.0.3.tgz", - "integrity": "sha1-teEHm1n7XhuidxwKmTvgYKWMmbo=", - "dev": true - }, "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -1528,12 +1482,6 @@ } } }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, "extend-shallow": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", @@ -1643,12 +1591,6 @@ "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", "dev": true }, - "fast-diff": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", - "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==", - "dev": true - }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", @@ -1818,9 +1760,9 @@ "dev": true }, "fsevents": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.8.tgz", - "integrity": "sha512-tPvHgPGB7m40CZ68xqFGkKuzN+RnpGmSV+hgeKxhRpbxdqKXUFJGC3yonBOLzQBcJyGpdZFDfCsdOC2KFsXzeA==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", "dev": true, "optional": true, "requires": { @@ -1837,7 +1779,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -1858,12 +1801,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -1878,17 +1823,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -2005,7 +1953,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -2017,6 +1966,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -2031,6 +1981,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -2038,12 +1989,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -2062,6 +2015,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -2142,7 +2096,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -2154,6 +2109,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -2239,7 +2195,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -2275,6 +2232,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -2294,6 +2252,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -2337,12 +2296,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, @@ -3059,9 +3020,9 @@ } }, "lib0": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/lib0/-/lib0-0.0.4.tgz", - "integrity": "sha512-osSGIxFM0mUuVAclVOQAio4lq0YYk1xFfj6J+1i3u5az8rXAQKDil2skA19aiiG0sfAdasOtr8Mk+9Mrw10cfQ==" + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/lib0/-/lib0-0.0.5.tgz", + "integrity": "sha512-3ElV6/t5Lv0Eczlnh/05q+Uq3RxQ/Q0zdN6LVtaUERQIDDZsP/CUXEGLsV8KZTgZwVFNCPGXNWYE+3WTOo+SHw==" }, "linkify-it": { "version": "2.1.0", @@ -3089,15 +3050,110 @@ "object-assign": "^4.1.1", "opn": "^6.0.0", "proxy-middleware": "^0.15.0", - "send": "^0.16.2", + "send": "^0.17.1", "serve-index": "^1.9.1" }, "dependencies": { + "colors": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", + "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==", + "dev": true + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true + }, + "opn": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-6.0.0.tgz", + "integrity": "sha512-I9PKfIZC+e4RXZ/qr1RhgyCnGgYX0UEIlXgWnCOVACIvFgaC9rz6Won7xbdhoHrd8IIhV7YEpHjreNUNkqCGkQ==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "proxy-middleware": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/proxy-middleware/-/proxy-middleware-0.15.0.tgz", + "integrity": "sha1-o/3xvvtzD5UZZYcqwvYHTGFHelY=", + "dev": true + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + } + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true } } }, @@ -3327,12 +3383,6 @@ } } }, - "mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", - "dev": true - }, "mime-db": { "version": "1.40.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", @@ -3425,9 +3475,9 @@ "dev": true }, "nan": { - "version": "2.13.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.13.2.tgz", - "integrity": "sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw==", + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", "dev": true, "optional": true }, @@ -3620,15 +3670,6 @@ "mimic-fn": "^1.0.0" } }, - "opn": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-6.0.0.tgz", - "integrity": "sha512-I9PKfIZC+e4RXZ/qr1RhgyCnGgYX0UEIlXgWnCOVACIvFgaC9rz6Won7xbdhoHrd8IIhV7YEpHjreNUNkqCGkQ==", - "dev": true, - "requires": { - "is-wsl": "^1.1.0" - } - }, "optionator": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", @@ -3651,12 +3692,6 @@ } } }, - "orderedmap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/orderedmap/-/orderedmap-1.0.0.tgz", - "integrity": "sha1-2Q/Cuh7QhRkJB9YB3sbmpT+NQbo=", - "dev": true - }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -3687,12 +3722,6 @@ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, - "parchment": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/parchment/-/parchment-1.1.4.tgz", - "integrity": "sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg==", - "dev": true - }, "parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", @@ -3913,217 +3942,12 @@ "object-assign": "^4.1.1" } }, - "prosemirror-commands": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.0.7.tgz", - "integrity": "sha512-IR8yMSdw7XlKuF68tydAak1J9P/lLD5ohsrL7pzoLsJAJAQU7mVPDXtGbQrrm0mesddFjcc1zNo/cJQN3lRYnA==", - "dev": true, - "requires": { - "prosemirror-model": "^1.0.0", - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.0.0" - } - }, - "prosemirror-dropcursor": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/prosemirror-dropcursor/-/prosemirror-dropcursor-1.1.1.tgz", - "integrity": "sha512-GeUyMO/tOEf8MXrP7Xb7UIMrfK86OGh0fnyBrHfhav4VjY9cw65mNoqHy87CklE5711AhCP5Qzfp8RL/hVKusg==", - "dev": true, - "requires": { - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.1.0", - "prosemirror-view": "^1.1.0" - } - }, - "prosemirror-example-setup": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prosemirror-example-setup/-/prosemirror-example-setup-1.0.1.tgz", - "integrity": "sha512-4NKWpdmm75Zzgq/dIrypRnkBNPx+ONKyoGF42a9g3VIVv0TWglf1CBNxt5kzCgli9xdfut/xE5B42F9DR6BLHw==", - "dev": true, - "requires": { - "prosemirror-commands": "^1.0.0", - "prosemirror-dropcursor": "^1.0.0", - "prosemirror-gapcursor": "^1.0.0", - "prosemirror-history": "^1.0.0", - "prosemirror-inputrules": "^1.0.0", - "prosemirror-keymap": "^1.0.0", - "prosemirror-menu": "^1.0.0", - "prosemirror-schema-list": "^1.0.0", - "prosemirror-state": "^1.0.0" - } - }, - "prosemirror-gapcursor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/prosemirror-gapcursor/-/prosemirror-gapcursor-1.0.3.tgz", - "integrity": "sha512-X+hJhr42PcHWiSWL+lI5f/UeOhXCxlBFb8M6O8aG1hssmaRrW7sS2/Fjg5jFV+pTdS1REFkmm1occh01FMdDIQ==", - "dev": true, - "requires": { - "prosemirror-keymap": "^1.0.0", - "prosemirror-model": "^1.0.0", - "prosemirror-state": "^1.0.0", - "prosemirror-view": "^1.0.0" - } - }, - "prosemirror-history": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.0.3.tgz", - "integrity": "sha512-IfFGbhafSx+R3aq7nLJGkXeu2iaUiP8mkU3aRu2uQcIIjU8Fq7RJfuvhIOJ2RNUoSyqF/ANkdTjnZ74F5eHs1Q==", - "dev": true, - "requires": { - "prosemirror-state": "^1.2.2", - "prosemirror-transform": "^1.0.0", - "rope-sequence": "^1.2.0" - } - }, - "prosemirror-inputrules": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.0.1.tgz", - "integrity": "sha512-UHy22NmwxS5WIMQYkzraDttQAF8mpP82FfbJsmKFfx6jwkR/SZa+ZhbkLY0zKQ5fBdJN7euj36JG/B5iAlrpxA==", - "dev": true, - "requires": { - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.0.0" - } - }, - "prosemirror-keymap": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.0.1.tgz", - "integrity": "sha512-e79ApE7PXXZMFtPz7WbjycjAFd1NPjgY1MkecVz98tqwlBSggXWXYQnWFk6x7UkmnBYRHHbXHkR/RXmu2wyBJg==", - "dev": true, - "requires": { - "prosemirror-state": "^1.0.0", - "w3c-keyname": "^1.1.8" - } - }, - "prosemirror-menu": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/prosemirror-menu/-/prosemirror-menu-1.0.5.tgz", - "integrity": "sha512-9Vrn7CC191v7FA4QrAkL8W1SrR73V3CRIYCDuk94R8oFVk4VxSFdoKVLHuvGzxZ8b5LCu3DMJfh86YW9uL4RkQ==", - "dev": true, - "requires": { - "crel": "^3.0.0", - "prosemirror-commands": "^1.0.0", - "prosemirror-history": "^1.0.0", - "prosemirror-state": "^1.0.0" - } - }, - "prosemirror-model": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.6.3.tgz", - "integrity": "sha512-iqIml664X9MUVGLz2nzK4xfAofX8+o7gs2mi2/k+pVD0qZ7th1Jm5eG3AsqWoEUIZuWeaOWCKpBl/dPnhIIWew==", - "dev": true, - "requires": { - "orderedmap": "^1.0.0" - } - }, - "prosemirror-schema-basic": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prosemirror-schema-basic/-/prosemirror-schema-basic-1.0.1.tgz", - "integrity": "sha512-LFO/+zr7RSRJ95k6QGHdAwxsTsB3xxSCphU2Xkg6hNroblUV0rYelKe6s5uM5rdyPUdTTRTPjnZWQE28YsGVcA==", - "dev": true, - "requires": { - "prosemirror-model": "^1.2.0" - } - }, - "prosemirror-schema-list": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.0.1.tgz", - "integrity": "sha512-AiLIX6qm6PEeDtMCKZLcSLi55WXo1ls7DnRK+4hSkoi0IIzNdxGsRlecCd3MzEu//DVz3nAEh+zEmslyW+uk8g==", - "dev": true, - "requires": { - "prosemirror-model": "^1.0.0", - "prosemirror-transform": "^1.0.0" - } - }, - "prosemirror-state": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.2.3.tgz", - "integrity": "sha512-TNFw98jHLcU7JXViozcDHxzIWQj7WfGqTAB05RCrkkUuIleKekW9PbhQGXRZdlSPFkViPlLy/emh+5HtjH1Yzg==", - "dev": true, - "requires": { - "prosemirror-model": "^1.0.0", - "prosemirror-transform": "^1.0.0" - } - }, - "prosemirror-transform": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.1.3.tgz", - "integrity": "sha512-1O6Di5lOL1mp4nuCnQNkHY7l2roIW5y8RH4ZG3hMYmkmDEWzTaFFnxxAAHsE5ipGLBSRcTlP7SsDhYBIdSuLpQ==", - "dev": true, - "requires": { - "prosemirror-model": "^1.0.0" - } - }, - "prosemirror-view": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.9.5.tgz", - "integrity": "sha512-062RMNDpof3SHgfTbJS6pVycdEaVgP1IGqdVLangZb0iwgb7yNZ8C5BPG+Is8GoEk3H5d9uZ0c6FskAA08gR3g==", - "dev": true, - "requires": { - "prosemirror-model": "^1.1.0", - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.1.0" - } - }, - "proxy-middleware": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/proxy-middleware/-/proxy-middleware-0.15.0.tgz", - "integrity": "sha1-o/3xvvtzD5UZZYcqwvYHTGFHelY=", - "dev": true - }, "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, - "quill": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/quill/-/quill-1.3.6.tgz", - "integrity": "sha512-K0mvhimWZN6s+9OQ249CH2IEPZ9JmkFuCQeHAOQax3EZ2nDJ3wfGh59mnlQaZV2i7u8eFarx6wAtvQKgShojug==", - "dev": true, - "requires": { - "clone": "^2.1.1", - "deep-equal": "^1.0.1", - "eventemitter3": "^2.0.3", - "extend": "^3.0.1", - "parchment": "^1.1.4", - "quill-delta": "^3.6.2" - } - }, - "quill-cursors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/quill-cursors/-/quill-cursors-1.0.3.tgz", - "integrity": "sha512-rS81BZIlHdWXucf00qo5NIp3QrpT/4JHwoHTRlR48fO+k6AzBJvVyGoNrWkO5yzdlwUwHSw3jPoLWfxyzLOoxw==", - "dev": true, - "requires": { - "rangefix": "^0.2.5", - "tinycolor2": "^1.4.1" - } - }, - "quill-delta": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-3.6.3.tgz", - "integrity": "sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==", - "dev": true, - "requires": { - "deep-equal": "^1.0.1", - "extend": "^3.0.2", - "fast-diff": "1.1.2" - } - }, - "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", - "dev": true - }, - "rangefix": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/rangefix/-/rangefix-0.2.5.tgz", - "integrity": "sha1-vOeMkhsjWCuuIR9ZdGSlkf0alPk=", - "dev": true - }, "read-pkg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", @@ -4387,12 +4211,6 @@ "micromatch": "^3.1.10" } }, - "rope-sequence": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.2.2.tgz", - "integrity": "sha1-ScTlwvVKSOmQsFCSZ3HihxvLMc4=", - "dev": true - }, "run-async": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", @@ -4456,35 +4274,6 @@ "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", "dev": true }, - "send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", - "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" - }, - "dependencies": { - "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", - "dev": true - } - } - }, "serialize-javascript": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.6.1.tgz", @@ -5001,12 +4790,6 @@ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, - "tinycolor2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.1.tgz", - "integrity": "sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g=", - "dev": true - }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -5058,6 +4841,12 @@ } } }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, "tree-kill": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.1.tgz", @@ -5263,12 +5052,6 @@ "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", "dev": true }, - "w3c-keyname": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-1.1.8.tgz", - "integrity": "sha512-2HAdug8GTiu3b4NYhssdtY8PXRue3ICnh1IlxvZYl+hiINRq0GfNWei3XOPDg8L0PsxbmYjWVLuLj6BMRR/9vA==", - "dev": true - }, "websocket-driver": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", @@ -5334,6 +5117,14 @@ "dev": true, "requires": { "lib0": "0.0.4" + }, + "dependencies": { + "lib0": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/lib0/-/lib0-0.0.4.tgz", + "integrity": "sha512-osSGIxFM0mUuVAclVOQAio4lq0YYk1xFfj6J+1i3u5az8rXAQKDil2skA19aiiG0sfAdasOtr8Mk+9Mrw10cfQ==", + "dev": true + } } }, "yallist": { diff --git a/package.json b/package.json index b6daee64..c15ad5a1 100644 --- a/package.json +++ b/package.json @@ -8,8 +8,7 @@ "scripts": { "test": "npm run dist && PRODUCTION=1 node ./dist/tests.js --repitition-time 50 --production", "test-exhaustive": "npm run lint && npm run dist && node ./dist/tests.js --repitition-time 10000", - "dist": "rm -rf dist examples/build && rollup -c", - "serve-examples": "concurrently 'npm run watch' 'serve examples'", + "dist": "rm -rf dist && rollup -c", "watch": "rollup -wc", "lint": "standard && tsc", "docs": "rm -rf docs; jsdoc --configure ./.jsdoc.json --verbose --readme ./README.v13.md --package ./package.json || true", @@ -28,15 +27,13 @@ ], "dictionaries": { "doc": "docs", - "example": "examples", "test": "tests" }, "standard": { "ignore": [ "/dist", "/node_modules", - "/docs", - "/examples/build" + "/docs" ] }, "repository": { @@ -57,16 +54,9 @@ "lib0": "0.0.5" }, "devDependencies": { - "codemirror": "^5.46.0", "concurrently": "^3.6.1", "jsdoc": "^3.6.2", "live-server": "^1.2.1", - "prosemirror-example-setup": "^1.0.1", - "prosemirror-schema-basic": "^1.0.1", - "prosemirror-state": "^1.2.3", - "prosemirror-view": "^1.9.5", - "quill": "^1.3.6", - "quill-cursors": "^1.0.3", "rollup": "^1.11.3", "rollup-cli": "^1.0.9", "rollup-plugin-commonjs": "^9.3.4", diff --git a/rollup.config.js b/rollup.config.js index a819d843..d926a781 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -84,20 +84,4 @@ export default [{ }) // commonjs() ] -}, { - input: ['./examples/prosemirror.js'], // './examples/textarea.js', './examples/quill.js', './examples/dom.js', './examples/codemirror.js' - output: { - dir: 'examples/build', - format: 'esm', - sourcemap: true - }, - plugins: [ - debugResolve, - nodeResolve({ - sourcemap: true, - mainFields: ['module', 'browser', 'main'] - }), - commonjs(), - ...minificationPlugins - ] }]