From 90f127b8a6268e3a91390d0dbb751453061e92d0 Mon Sep 17 00:00:00 2001 From: Hans Pagel Date: Sat, 26 Sep 2020 10:43:08 +0200 Subject: [PATCH] refactor collaboration extension --- .../demos/Examples/Collaboration/index.vue | 11 +++------ .../index.ts | 23 ++++++++++++------- packages/extension-collaboration/package.json | 22 ++++++++++++++++++ packages/extension-yjs/package.json | 22 ------------------ 4 files changed, 40 insertions(+), 38 deletions(-) rename packages/{extension-yjs => extension-collaboration}/index.ts (77%) create mode 100644 packages/extension-collaboration/package.json delete mode 100644 packages/extension-yjs/package.json diff --git a/docs/src/demos/Examples/Collaboration/index.vue b/docs/src/demos/Examples/Collaboration/index.vue index ab0685b2..4b0e1a7b 100644 --- a/docs/src/demos/Examples/Collaboration/index.vue +++ b/docs/src/demos/Examples/Collaboration/index.vue @@ -7,7 +7,7 @@ import { Editor, EditorContent } from '@tiptap/vue-starter-kit' import Document from '@tiptap/extension-document' import Paragraph from '@tiptap/extension-paragraph' import Text from '@tiptap/extension-text' -import Yjs from '@tiptap/extension-yjs' +import Collaboration from '@tiptap/extension-collaboration' export default { components: { @@ -24,18 +24,13 @@ export default { this.editor = new Editor({ // TODO: This is added by every new user. // content: ` - //

- // This is a radically reduced version of tiptap. It has only support for a document, paragraphs and text. That’s it. It’s probably too much for real minimalists though. - //

- //

- // The paragraph extension is not literally required, but you need at least one node. That node can be something different, for example to render a task list and only that task list. - //

+ //

Example Text

// `, extensions: [ Document(), Paragraph(), Text(), - Yjs({ + Collaboration({ name: 'Other User', color: '#d6336c', }), diff --git a/packages/extension-yjs/index.ts b/packages/extension-collaboration/index.ts similarity index 77% rename from packages/extension-yjs/index.ts rename to packages/extension-collaboration/index.ts index 1b08794b..c8846e51 100644 --- a/packages/extension-yjs/index.ts +++ b/packages/extension-collaboration/index.ts @@ -6,33 +6,40 @@ import { import { WebrtcProvider } from 'y-webrtc' import { keymap } from 'prosemirror-keymap' -export interface YjsOptions { +export interface CollaborationOptions { name: string, color: string, + provider?: any, + type?: any, } const ydoc = new Y.Doc() const provider = new WebrtcProvider('example', ydoc) const type = ydoc.getXmlFragment('prosemirror') -export default new Extension() - .name('yjs') +export default new Extension() + .name('collaboration') .defaults({ name: 'Someone', color: '#cccccc', + provider: null, + type: null, }) .plugins(({ options }) => [ + // Collaboration ySyncPlugin(type), - yCursorPlugin((() => { - provider.awareness.setLocalStateField('user', { name: options.name, color: options.color }) - - return provider.awareness - })()), yUndoPlugin(), keymap({ 'Mod-z': undo, 'Mod-y': redo, 'Mod-Shift-z': redo, }), + + // CollaborationCursor + yCursorPlugin((() => { + provider.awareness.setLocalStateField('user', { name: options.name, color: options.color }) + + return provider.awareness + })()), ]) .create() diff --git a/packages/extension-collaboration/package.json b/packages/extension-collaboration/package.json new file mode 100644 index 00000000..4fa5d67b --- /dev/null +++ b/packages/extension-collaboration/package.json @@ -0,0 +1,22 @@ +{ + "name": "@tiptap/extension-collaboration", + "version": "1.0.0", + "source": "index.ts", + "main": "dist/tiptap-extension-collaboration.js", + "umd:main": "dist/tiptap-extension-collaboration.umd.js", + "module": "dist/tiptap-extension-collaboration.mjs", + "unpkg": "dist/tiptap-extension-collaboration.js", + "jsdelivr": "dist/tiptap-extension-collaboration.js", + "files": [ + "src", + "dist" + ], + "peerDependencies": { + "@tiptap/core": "2.x" + }, + "dependencies": { + "y-prosemirror": "^0.3.7", + "y-webrtc": "^10.1.6", + "yjs": "^13.3.2" + } +} diff --git a/packages/extension-yjs/package.json b/packages/extension-yjs/package.json deleted file mode 100644 index f185f136..00000000 --- a/packages/extension-yjs/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "@tiptap/extension-yjs", - "version": "1.0.0", - "source": "index.ts", - "main": "dist/tiptap-extension-yjs.js", - "umd:main": "dist/tiptap-extension-yjs.umd.js", - "module": "dist/tiptap-extension-yjs.mjs", - "unpkg": "dist/tiptap-extension-yjs.js", - "jsdelivr": "dist/tiptap-extension-yjs.js", - "files": [ - "src", - "dist" - ], - "peerDependencies": { - "@tiptap/core": "2.x" - }, - "dependencies": { - "y-prosemirror": "^0.3.7", - "y-webrtc": "^10.1.6", - "yjs": "^13.3.2" - } -}