@remirror/extension-yjs 1.0.17 → 1.0.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,6 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var _applyDecoratedDescriptor = require('@babel/runtime/helpers/applyDecoratedDescriptor');
6
6
  var yProsemirror = require('y-prosemirror');
7
+ var yjs = require('yjs');
7
8
  var core = require('@remirror/core');
8
9
  var extensionAnnotation = require('@remirror/extension-annotation');
9
10
  var messages = require('@remirror/messages');
@@ -104,13 +105,16 @@ var YjsExtension = (_dec = core.extension({
104
105
  trackedOrigins = _this$options.trackedOrigins;
105
106
  var yDoc = this.provider.doc;
106
107
  var type = yDoc.getXmlFragment('prosemirror');
108
+ var undoManager = new yjs.UndoManager(type, {
109
+ trackedOrigins: new Set([yProsemirror.ySyncPluginKey, ...trackedOrigins]),
110
+ deleteFilter: item => yProsemirror.defaultDeleteFilter(item, protectedNodes)
111
+ });
107
112
  return [yProsemirror.ySyncPlugin(type, syncPluginOptions), yProsemirror.yCursorPlugin(this.provider.awareness, {
108
113
  cursorBuilder,
109
114
  cursorStateField,
110
115
  getSelection
111
116
  }, cursorStateField), yProsemirror.yUndoPlugin({
112
- protectedNodes,
113
- trackedOrigins
117
+ undoManager
114
118
  })];
115
119
  }
116
120
  /**
@@ -123,6 +127,13 @@ var YjsExtension = (_dec = core.extension({
123
127
  pickChanged = props.pickChanged;
124
128
  var changedPluginOptions = pickChanged(['cursorBuilder', 'cursorStateField', 'getProvider', 'getSelection', 'syncPluginOptions', 'protectedNodes', 'trackedOrigins']);
125
129
 
130
+ if (changes.protectedNodes.changed || changes.trackedOrigins.changed) {
131
+ // Cannot change these, as we would need a new undo manager instance, and for that
132
+ // we would need to unregister the previous instance from the document to avoid
133
+ // memory leaks.
134
+ throw new Error("Cannot change \"protectedNodes\" or \"trackedOrigins\" options");
135
+ }
136
+
126
137
  if (changes.getProvider.changed) {
127
138
  this._provider = undefined;
128
139
  var previousProvider = getLazyValue(changes.getProvider.previousValue); // Check whether the values have changed.
@@ -1,5 +1,6 @@
1
1
  import _applyDecoratedDescriptor from '@babel/runtime/helpers/esm/applyDecoratedDescriptor';
2
- import { defaultCursorBuilder, ySyncPlugin, yCursorPlugin, yUndoPlugin, yUndoPluginKey, undo, redo, ySyncPluginKey, absolutePositionToRelativePosition, relativePositionToAbsolutePosition } from 'y-prosemirror';
2
+ import { defaultCursorBuilder, ySyncPluginKey, defaultDeleteFilter, ySyncPlugin, yCursorPlugin, yUndoPlugin, yUndoPluginKey, undo, redo, absolutePositionToRelativePosition, relativePositionToAbsolutePosition } from 'y-prosemirror';
3
+ import { UndoManager } from 'yjs';
3
4
  import { extension, invariant, ErrorConstant, ExtensionPriority, command, keyBinding, NamedShortcut, PlainExtension, isFunction, isEmptyObject, nonChainable, convertCommand } from '@remirror/core';
4
5
  import { AnnotationExtension } from '@remirror/extension-annotation';
5
6
  import { ExtensionHistoryMessages } from '@remirror/messages';
@@ -100,13 +101,16 @@ var YjsExtension = (_dec = extension({
100
101
  trackedOrigins = _this$options.trackedOrigins;
101
102
  var yDoc = this.provider.doc;
102
103
  var type = yDoc.getXmlFragment('prosemirror');
104
+ var undoManager = new UndoManager(type, {
105
+ trackedOrigins: new Set([ySyncPluginKey, ...trackedOrigins]),
106
+ deleteFilter: item => defaultDeleteFilter(item, protectedNodes)
107
+ });
103
108
  return [ySyncPlugin(type, syncPluginOptions), yCursorPlugin(this.provider.awareness, {
104
109
  cursorBuilder,
105
110
  cursorStateField,
106
111
  getSelection
107
112
  }, cursorStateField), yUndoPlugin({
108
- protectedNodes,
109
- trackedOrigins
113
+ undoManager
110
114
  })];
111
115
  }
112
116
  /**
@@ -119,6 +123,13 @@ var YjsExtension = (_dec = extension({
119
123
  pickChanged = props.pickChanged;
120
124
  var changedPluginOptions = pickChanged(['cursorBuilder', 'cursorStateField', 'getProvider', 'getSelection', 'syncPluginOptions', 'protectedNodes', 'trackedOrigins']);
121
125
 
126
+ if (changes.protectedNodes.changed || changes.trackedOrigins.changed) {
127
+ // Cannot change these, as we would need a new undo manager instance, and for that
128
+ // we would need to unregister the previous instance from the document to avoid
129
+ // memory leaks.
130
+ throw new Error("Cannot change \"protectedNodes\" or \"trackedOrigins\" options");
131
+ }
132
+
122
133
  if (changes.getProvider.changed) {
123
134
  this._provider = undefined;
124
135
  var previousProvider = getLazyValue(changes.getProvider.previousValue); // Check whether the values have changed.
@@ -4,6 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var _applyDecoratedDescriptor = require('@babel/runtime/helpers/applyDecoratedDescriptor');
6
6
  var yProsemirror = require('y-prosemirror');
7
+ var yjs = require('yjs');
7
8
  var core = require('@remirror/core');
8
9
  var extensionAnnotation = require('@remirror/extension-annotation');
9
10
  var messages = require('@remirror/messages');
@@ -104,13 +105,16 @@ var YjsExtension = (_dec = core.extension({
104
105
  trackedOrigins = _this$options.trackedOrigins;
105
106
  var yDoc = this.provider.doc;
106
107
  var type = yDoc.getXmlFragment('prosemirror');
108
+ var undoManager = new yjs.UndoManager(type, {
109
+ trackedOrigins: new Set([yProsemirror.ySyncPluginKey, ...trackedOrigins]),
110
+ deleteFilter: item => yProsemirror.defaultDeleteFilter(item, protectedNodes)
111
+ });
107
112
  return [yProsemirror.ySyncPlugin(type, syncPluginOptions), yProsemirror.yCursorPlugin(this.provider.awareness, {
108
113
  cursorBuilder,
109
114
  cursorStateField,
110
115
  getSelection
111
116
  }, cursorStateField), yProsemirror.yUndoPlugin({
112
- protectedNodes,
113
- trackedOrigins
117
+ undoManager
114
118
  })];
115
119
  }
116
120
  /**
@@ -123,6 +127,13 @@ var YjsExtension = (_dec = core.extension({
123
127
  pickChanged = props.pickChanged;
124
128
  var changedPluginOptions = pickChanged(['cursorBuilder', 'cursorStateField', 'getProvider', 'getSelection', 'syncPluginOptions', 'protectedNodes', 'trackedOrigins']);
125
129
 
130
+ if (changes.protectedNodes.changed || changes.trackedOrigins.changed) {
131
+ // Cannot change these, as we would need a new undo manager instance, and for that
132
+ // we would need to unregister the previous instance from the document to avoid
133
+ // memory leaks.
134
+ throw new Error("Cannot change \"protectedNodes\" or \"trackedOrigins\" options");
135
+ }
136
+
126
137
  if (changes.getProvider.changed) {
127
138
  this._provider = undefined;
128
139
  var previousProvider = getLazyValue(changes.getProvider.previousValue); // Check whether the values have changed.
@@ -4,6 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var _applyDecoratedDescriptor = require('@babel/runtime/helpers/applyDecoratedDescriptor');
6
6
  var yProsemirror = require('y-prosemirror');
7
+ var yjs = require('yjs');
7
8
  var core = require('@remirror/core');
8
9
  var extensionAnnotation = require('@remirror/extension-annotation');
9
10
  var messages = require('@remirror/messages');
@@ -101,13 +102,16 @@ var YjsExtension = (_dec = core.extension({
101
102
  trackedOrigins = _this$options.trackedOrigins;
102
103
  var yDoc = this.provider.doc;
103
104
  var type = yDoc.getXmlFragment('prosemirror');
105
+ var undoManager = new yjs.UndoManager(type, {
106
+ trackedOrigins: new Set([yProsemirror.ySyncPluginKey, ...trackedOrigins]),
107
+ deleteFilter: item => yProsemirror.defaultDeleteFilter(item, protectedNodes)
108
+ });
104
109
  return [yProsemirror.ySyncPlugin(type, syncPluginOptions), yProsemirror.yCursorPlugin(this.provider.awareness, {
105
110
  cursorBuilder,
106
111
  cursorStateField,
107
112
  getSelection
108
113
  }, cursorStateField), yProsemirror.yUndoPlugin({
109
- protectedNodes,
110
- trackedOrigins
114
+ undoManager
111
115
  })];
112
116
  }
113
117
  /**
@@ -120,6 +124,13 @@ var YjsExtension = (_dec = core.extension({
120
124
  pickChanged = props.pickChanged;
121
125
  var changedPluginOptions = pickChanged(['cursorBuilder', 'cursorStateField', 'getProvider', 'getSelection', 'syncPluginOptions', 'protectedNodes', 'trackedOrigins']);
122
126
 
127
+ if (changes.protectedNodes.changed || changes.trackedOrigins.changed) {
128
+ // Cannot change these, as we would need a new undo manager instance, and for that
129
+ // we would need to unregister the previous instance from the document to avoid
130
+ // memory leaks.
131
+ throw new Error("Cannot change \"protectedNodes\" or \"trackedOrigins\" options");
132
+ }
133
+
123
134
  if (changes.getProvider.changed) {
124
135
  this._provider = undefined;
125
136
  var previousProvider = getLazyValue(changes.getProvider.previousValue); // Check whether the values have changed.
@@ -1,5 +1,6 @@
1
1
  import _applyDecoratedDescriptor from '@babel/runtime/helpers/esm/applyDecoratedDescriptor';
2
- import { defaultCursorBuilder, ySyncPlugin, yCursorPlugin, yUndoPlugin, yUndoPluginKey, undo, redo, ySyncPluginKey, absolutePositionToRelativePosition, relativePositionToAbsolutePosition } from 'y-prosemirror';
2
+ import { defaultCursorBuilder, ySyncPluginKey, defaultDeleteFilter, ySyncPlugin, yCursorPlugin, yUndoPlugin, yUndoPluginKey, undo, redo, absolutePositionToRelativePosition, relativePositionToAbsolutePosition } from 'y-prosemirror';
3
+ import { UndoManager } from 'yjs';
3
4
  import { extension, invariant, ErrorConstant, ExtensionPriority, command, keyBinding, NamedShortcut, PlainExtension, isFunction, isEmptyObject, nonChainable, convertCommand } from '@remirror/core';
4
5
  import { AnnotationExtension } from '@remirror/extension-annotation';
5
6
  import { ExtensionHistoryMessages } from '@remirror/messages';
@@ -100,13 +101,16 @@ var YjsExtension = (_dec = extension({
100
101
  trackedOrigins = _this$options.trackedOrigins;
101
102
  var yDoc = this.provider.doc;
102
103
  var type = yDoc.getXmlFragment('prosemirror');
104
+ var undoManager = new UndoManager(type, {
105
+ trackedOrigins: new Set([ySyncPluginKey, ...trackedOrigins]),
106
+ deleteFilter: item => defaultDeleteFilter(item, protectedNodes)
107
+ });
103
108
  return [ySyncPlugin(type, syncPluginOptions), yCursorPlugin(this.provider.awareness, {
104
109
  cursorBuilder,
105
110
  cursorStateField,
106
111
  getSelection
107
112
  }, cursorStateField), yUndoPlugin({
108
- protectedNodes,
109
- trackedOrigins
113
+ undoManager
110
114
  })];
111
115
  }
112
116
  /**
@@ -119,6 +123,13 @@ var YjsExtension = (_dec = extension({
119
123
  pickChanged = props.pickChanged;
120
124
  var changedPluginOptions = pickChanged(['cursorBuilder', 'cursorStateField', 'getProvider', 'getSelection', 'syncPluginOptions', 'protectedNodes', 'trackedOrigins']);
121
125
 
126
+ if (changes.protectedNodes.changed || changes.trackedOrigins.changed) {
127
+ // Cannot change these, as we would need a new undo manager instance, and for that
128
+ // we would need to unregister the previous instance from the document to avoid
129
+ // memory leaks.
130
+ throw new Error("Cannot change \"protectedNodes\" or \"trackedOrigins\" options");
131
+ }
132
+
122
133
  if (changes.getProvider.changed) {
123
134
  this._provider = undefined;
124
135
  var previousProvider = getLazyValue(changes.getProvider.previousValue); // Check whether the values have changed.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remirror/extension-yjs",
3
- "version": "1.0.17",
3
+ "version": "1.0.18",
4
4
  "description": "Realtime collaboration with yjs",
5
5
  "keywords": [
6
6
  "remirror",
@@ -47,13 +47,13 @@
47
47
  "@remirror/core": "^1.3.3",
48
48
  "@remirror/extension-annotation": "^1.1.9",
49
49
  "@remirror/messages": "^1.0.6",
50
- "y-prosemirror": "^1.0.9",
50
+ "y-prosemirror": "^1.0.14",
51
51
  "y-protocols": "^1.0.5"
52
52
  },
53
53
  "devDependencies": {
54
54
  "@remirror/pm": "^1.0.10",
55
- "y-webrtc": "^10.2.0",
56
- "yjs": "^13.5.11"
55
+ "y-webrtc": "^10.2.2",
56
+ "yjs": "^13.5.23"
57
57
  },
58
58
  "peerDependencies": {
59
59
  "@remirror/pm": "^1.0.10",