@lexical/yjs 0.1.16 → 0.1.19
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.
- package/LICENSE +1 -1
- package/LexicalYjs.dev.js +6 -4
- package/LexicalYjs.prod.js +35 -35
- package/package.json +3 -7
package/LICENSE
CHANGED
package/LexicalYjs.dev.js
CHANGED
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
*/
|
|
7
7
|
'use strict';
|
|
8
8
|
|
|
9
|
-
var yjs = require('yjs');
|
|
10
9
|
var lexical = require('lexical');
|
|
10
|
+
var yjs = require('yjs');
|
|
11
11
|
var offset = require('@lexical/offset');
|
|
12
12
|
|
|
13
13
|
/**
|
|
@@ -663,10 +663,8 @@ function syncLexicalDecoratorArrayValueToYjs(binding, collabNode, internalArray,
|
|
|
663
663
|
|
|
664
664
|
function syncLexicalDecoratorMapToYjs(binding, collabNode, decoratorMap, yjsMap) {
|
|
665
665
|
const internalMap = decoratorMap._map;
|
|
666
|
-
const keys = Array.from(internalMap.keys());
|
|
667
666
|
|
|
668
|
-
for (
|
|
669
|
-
const key = keys[i];
|
|
667
|
+
for (const [key] of internalMap) {
|
|
670
668
|
syncLexicalDecoratorMapKeyToYjs(binding, collabNode, internalMap, yjsMap, key);
|
|
671
669
|
}
|
|
672
670
|
}
|
|
@@ -2092,6 +2090,8 @@ function syncLexicalUpdateToYjs(binding, provider, prevEditorState, currEditorSt
|
|
|
2092
2090
|
*
|
|
2093
2091
|
*
|
|
2094
2092
|
*/
|
|
2093
|
+
const CONNECTED_COMMAND = lexical.createCommand();
|
|
2094
|
+
const TOGGLE_CONNECT_COMMAND = lexical.createCommand();
|
|
2095
2095
|
function createUndoManager(binding, root) {
|
|
2096
2096
|
return new yjs.UndoManager(root, {
|
|
2097
2097
|
trackedOrigins: new Set([binding, null])
|
|
@@ -2126,6 +2126,8 @@ function setLocalStateFocus(provider, name, color, focusing) {
|
|
|
2126
2126
|
awareness.setLocalState(localState);
|
|
2127
2127
|
}
|
|
2128
2128
|
|
|
2129
|
+
exports.CONNECTED_COMMAND = CONNECTED_COMMAND;
|
|
2130
|
+
exports.TOGGLE_CONNECT_COMMAND = TOGGLE_CONNECT_COMMAND;
|
|
2129
2131
|
exports.createBinding = createBinding;
|
|
2130
2132
|
exports.createUndoManager = createUndoManager;
|
|
2131
2133
|
exports.initLocalState = initLocalState;
|
package/LexicalYjs.prod.js
CHANGED
|
@@ -4,57 +4,57 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
|
-
var k=require("
|
|
8
|
-
class C{constructor(a,b){this._key="";this._map=a;this._parent=b;this._type="linebreak"}getNode(){const a=
|
|
9
|
-
class E{constructor(a,b,c,d){this._key="";this._map=a;this._parent=c;this._text=b;this._type=d;this._normalized=!1}getPrevNode(a){if(null===a)return null;a=a.get(this._key);return
|
|
10
|
-
this._parent._xmlText;a=this.getOffset()+1+a;0!==b&&d.delete(a,b);""!==c&&d.insert(a,c)}syncPropertiesAndTextFromLexical(a,b,c){var d=this.getPrevNode(c);c=b.__text;F(a,this._map,d,b);if(null!==d&&(a=d.__text,a!==c)){d=b.__key;b=a;var e=
|
|
7
|
+
var k=require("lexical"),r=require("yjs"),z=require("@lexical/offset");function B(a){throw Error(`Minified Lexical error #${a}; see codes.json for the full message or `+"use the non-minified dev environment for full errors and additional helpful warnings.");}
|
|
8
|
+
class C{constructor(a,b){this._key="";this._map=a;this._parent=b;this._type="linebreak"}getNode(){const a=k.$getNodeByKey(this._key);return k.$isLineBreakNode(a)?a:null}getKey(){return this._key}getSharedType(){return this._map}getType(){return this._type}getSize(){return 1}getOffset(){return this._parent.getChildOffset(this)}destroy(a){a.collabNodeMap.delete(this._key)}}function D(a,b){b=new C(a,b);return a._collabNode=b}
|
|
9
|
+
class E{constructor(a,b,c,d){this._key="";this._map=a;this._parent=c;this._text=b;this._type=d;this._normalized=!1}getPrevNode(a){if(null===a)return null;a=a.get(this._key);return k.$isTextNode(a)?a:null}getNode(){const a=k.$getNodeByKey(this._key);return k.$isTextNode(a)?a:null}getSharedType(){return this._map}getType(){return this._type}getKey(){return this._key}getSize(){return this._text.length+(this._normalized?0:1)}getOffset(){return this._parent.getChildOffset(this)}spliceText(a,b,c){const d=
|
|
10
|
+
this._parent._xmlText;a=this.getOffset()+1+a;0!==b&&d.delete(a,b);""!==c&&d.insert(a,c)}syncPropertiesAndTextFromLexical(a,b,c){var d=this.getPrevNode(c);c=b.__text;F(a,this._map,d,b);if(null!==d&&(a=d.__text,a!==c)){d=b.__key;b=a;var e=k.$getSelection();a=c.length;k.$isRangeSelection(e)&&e.isCollapsed()&&(e=e.anchor,e.key===d&&(a=e.offset));d=b.length;const f=c.length;let g=e=0;for(;e<d&&e<f&&b[e]===c[e]&&e<a;)e++;for(;g+e<d&&g+e<f&&b[d-g-1]===c[f-g-1];)g++;for(;g+e<d&&g+e<f&&b[e]===c[e];)e++;b=
|
|
11
11
|
e;a=c.slice(e,f-g);d=d-e-g;this.spliceText(b,d,a);this._text=c}}syncPropertiesAndTextFromYjs(a,b){const c=this.getNode();if(null===c)throw Error("Should never happen");G(a,this._map,c,b);a=this._text;c.__text!==a&&(c.getWritable().__text=a)}destroy(a){a.collabNodeMap.delete(this._key)}}function I(a,b,c,d){b=new E(a,b,c,d);return a._collabNode=b}const J=new Set("__key __children __parent __cachedText __text __state".split(" "));
|
|
12
|
-
function K(a){a=
|
|
13
|
-
function aa(a,b,c){const d=b.__type;if(
|
|
12
|
+
function K(a){a=k.$getNodeByKey(a);if(null===a)throw Error("Should never happen");return a}
|
|
13
|
+
function aa(a,b,c){const d=b.__type;if(k.$isElementNode(b)){var e=new r.XmlText;c=L(e,c,d);c.syncPropertiesFromLexical(a,b,null);c.syncChildrenFromLexical(a,b,null,null,null)}else if(k.$isTextNode(b))e=new r.Map,c=I(e,b.__text,c,d),c.syncPropertiesAndTextFromLexical(a,b,null);else if(k.$isLineBreakNode(b))a=new r.Map,a.set("__type","linebreak"),c=D(a,c);else if(k.$isDecoratorNode(b))e=new r.XmlElement,c=ba(e,c,d),c.syncPropertiesFromLexical(a,b,null);else throw Error("Should never happen");c._key=
|
|
14
14
|
b.__key;return c}
|
|
15
|
-
function M(a,b,c){const d=b._collabNode;if(void 0===d){var e=a.editor._nodes;const f=b instanceof
|
|
16
|
-
f)}if(b instanceof
|
|
17
|
-
function F(a,b,c,d){var e=d.__type,f=a.nodeProperties;a=f.get(e);void 0===a&&(a=Object.keys(d).filter(g=>!J.has(g)),f.set(e,a));for(e=0;e<a.length;e++){f=a[e];const g=d[f];(null===c?void 0:c[f])!==g&&(b instanceof
|
|
15
|
+
function M(a,b,c){const d=b._collabNode;if(void 0===d){var e=a.editor._nodes;const f=b instanceof r.Map?b.get("__type"):b.getAttribute("__type");if(null==f)throw Error("Should never happen");if(void 0===e.get(f))throw Error("Should never happen");e=b.parent;a=void 0===c&&null!==e?M(a,e):c||null;if(!(a instanceof O))throw Error("Should never happen");if(b instanceof r.XmlText)return L(b,a,f);if(b instanceof r.Map){if(null===a)throw Error("Should never happen");return"linebreak"===f?D(b,a):I(b,"",a,
|
|
16
|
+
f)}if(b instanceof r.XmlElement)return ba(b,a,f)}return d}function G(a,b,c,d){a=null===d?b instanceof r.Map?Array.from(b.keys()):Object.keys(b.getAttributes()):Array.from(d);let e;for(d=0;d<a.length;d++){const f=a[d];if(J.has(f))continue;const g=c[f],h=b instanceof r.Map?b.get(f):b.getAttribute(f);g!==h&&(void 0===e&&(e=c.getWritable()),e[f]=h)}}
|
|
17
|
+
function F(a,b,c,d){var e=d.__type,f=a.nodeProperties;a=f.get(e);void 0===a&&(a=Object.keys(d).filter(g=>!J.has(g)),f.set(e,a));for(e=0;e<a.length;e++){f=a[e];const g=d[f];(null===c?void 0:c[f])!==g&&(b instanceof r.Map?b.set(f,g):b.setAttribute(f,g))}}
|
|
18
18
|
function P(a,b,c){let d=0,e=0;const f=a._children,g=f.length;for(;e<g;e++){a=f[e];const h=d,p=a.getSize();d+=p;if((c?d>=b:d>b)&&a instanceof E)return b=b-h-1,0>b&&(b=0),{length:p-b,node:a,nodeIndex:e,offset:b};if(d>b)return{length:0,node:a,nodeIndex:e,offset:h};if(e===g-1)return{length:0,node:null,nodeIndex:e+1,offset:h+1}}return{length:0,node:null,nodeIndex:0,offset:0}}
|
|
19
|
-
function ca(a){const b=a.anchor;a=a.focus;let c=!1;try{const d=b.getNode(),e=a.getNode();if(!d.isAttached()||!e.isAttached()||
|
|
19
|
+
function ca(a){const b=a.anchor;a=a.focus;let c=!1;try{const d=b.getNode(),e=a.getNode();if(!d.isAttached()||!e.isAttached()||k.$isTextNode(d)&&b.offset>d.getTextContentSize()||k.$isTextNode(e)&&a.offset>e.getTextContentSize())c=!0}catch(d){c=!0}return c}function Q(a,b){a.doc.transact(b,a)}let R=!1;function S(a){const b=R;try{R=!0,a()}finally{R=b}}function T(a,b,c,d){const e=c.observe(f=>{R||Q(a,()=>da(a,b,c._map,d,f))});b._unobservers.add(e)}
|
|
20
20
|
function V(a,b,c,d){const e=c.observe((f,g)=>{R||Q(a,()=>{0<g&&d.delete(f,g);ea(a,b,c._array,d,f)})});b._unobservers.add(e)}
|
|
21
|
-
function da(a,b,c,d,e){const f=c.get(e);c=d.get(e);if(f!==c)if(
|
|
22
|
-
c._lexicalValue=f,c._collabNode=b,d.set(e,c),V(a,b,f,c)),fa(a,b,f,c)):((
|
|
23
|
-
function ea(a,b,c,d,e){const f=c[e];c=d.get(e);if(f!==c)if(
|
|
24
|
-
c._lexicalValue=f,c._collabNode=b,d.insert(e,[c]),V(a,b,f,c)),fa(a,b,f,c)):d.insert(e,[f])}function W(a,b,c,d){c=c._map;const e
|
|
25
|
-
function ha(a,b,c,d,e){var f=d.get(e);const g=c.get(e);if(f!==g){let h=g._lexicalValue;g instanceof
|
|
21
|
+
function da(a,b,c,d,e){const f=c.get(e);c=d.get(e);if(f!==c)if(k.isDecoratorMap(f))void 0===c&&(c=new r.Map,c._lexicalValue=f,c._collabNode=b,c.set("type","map"),d.set(e,c),T(a,b,f,c)),W(a,b,f,c);else if(k.isDecoratorEditor(f)){let g;void 0===c&&(c=new r.Map,c._lexicalValue=f,c._collabNode=b,g=new r.Doc,c.set("doc",g),c.set("type","editor"),d.set(e,c));g=g||c.get("doc");b=c.get("id");d=f.id;b!==d&&(a=a.docMap,a.delete(b),c.set("id",d),a.set(d,g))}else k.isDecoratorArray(f)?(void 0===c&&(c=new r.Array,
|
|
22
|
+
c._lexicalValue=f,c._collabNode=b,d.set(e,c),V(a,b,f,c)),fa(a,b,f,c)):((k.isDecoratorArray(c)||k.isDecoratorMap(c))&&c.destroy(),d.set(e,f))}
|
|
23
|
+
function ea(a,b,c,d,e){const f=c[e];c=d.get(e);if(f!==c)if(k.isDecoratorMap(f))void 0===c&&(c=new r.Map,c._lexicalValue=f,c._collabNode=b,c.set("type","map"),d.insert(e,[c]),T(a,b,f,c)),W(a,b,f,c);else if(k.isDecoratorEditor(f)){let g;void 0===c&&(c=new r.Map,c._lexicalValue=f,c._collabNode=b,g=new r.Doc,c.set("doc",g),c.set("type","editor"),d.insert(e,[c]));g=g||c.get("doc");b=c.get("id");d=f.id;b!==d&&(a=a.docMap,a.delete(b),c.set("id",d),a.set(d,g))}else k.isDecoratorArray(f)?(void 0===c&&(c=new r.Array,
|
|
24
|
+
c._lexicalValue=f,c._collabNode=b,d.insert(e,[c]),V(a,b,f,c)),fa(a,b,f,c)):d.insert(e,[f])}function W(a,b,c,d){c=c._map;for(const [e]of c)da(a,b,c,d,e)}function fa(a,b,c,d){c=c._array;for(let e=0;e<c.length;e++)ea(a,b,c,d,e)}
|
|
25
|
+
function ha(a,b,c,d,e){var f=d.get(e);const g=c.get(e);if(f!==g){let h=g._lexicalValue;g instanceof r.Map?(c=g.get("type"),"editor"===c?void 0===h&&(a=a.docMap,c=g.get("id"),f=g.get("doc"),h=k.createDecoratorEditor(c),g._lexicalValue=h,g._collabNode=b,a.set(c,f),S(()=>d.set(e,h))):"map"===c?(void 0===h&&(h=k.createDecoratorMap(a.editor),T(a,b,h,g),g._lexicalValue=h,g._collabNode=b,S(()=>d.set(e,h))),X(a,b,g,h,null)):B(48)):g instanceof r.Array?(void 0===h&&(h=k.createDecoratorArray(a.editor),V(a,
|
|
26
26
|
b,h,g),g._lexicalValue=h,g._collabNode=b,S(()=>d.set(e,h))),ia(a,b,g,h)):S(()=>d.set(e,g))}}
|
|
27
|
-
function ja(a,b,c,d,e){var f=d._array[e];const g=c.get(e);if(f!==g){let h=g._lexicalValue;g instanceof
|
|
27
|
+
function ja(a,b,c,d,e){var f=d._array[e];const g=c.get(e);if(f!==g){let h=g._lexicalValue;g instanceof r.Map?(c=g.get("type"),"editor"===c?void 0===h&&(a=a.docMap,c=g.get("id"),f=g.get("doc"),h=k.createDecoratorEditor(c),g._lexicalValue=h,g._collabNode=b,a.set(c,f),S(()=>d.splice(e,0,h))):"map"===c?(void 0===h&&(h=k.createDecoratorMap(a.editor),T(a,b,h,g),g._lexicalValue=h,g._collabNode=b,S(()=>d.splice(e,0,h))),X(a,b,g,h,null)):B(48)):g instanceof r.Array?(void 0===h&&(h=k.createDecoratorArray(a.editor),
|
|
28
28
|
V(a,b,h,g),g._lexicalValue=h,g._collabNode=b,S(()=>d.splice(e,0,h))),ia(a,b,g,h)):S(()=>d.splice(e,0,g))}}function ia(a,b,c,d){const e=Math.max(c.length,d.getLength());for(let f=0;f<e;f++)ja(a,b,c,d,f)}function X(a,b,c,d,e){e=null===e?Array.from(c.keys()):Array.from(e);for(let f=0;f<e.length;f++)ha(a,b,c,d,e[f])}
|
|
29
|
-
class Y{constructor(a,b,c){this._key="";this._xmlElem=a;this._parent=b;this._type=c;this._unobservers=new Set}getPrevNode(a){if(null===a)return null;a=a.get(this._key);return
|
|
30
|
-
c=this._xmlElem;const e=null===d?null:d.__state,f=b.__state;F(a,c,d,b);e!==f&&(b=new
|
|
29
|
+
class Y{constructor(a,b,c){this._key="";this._xmlElem=a;this._parent=b;this._type=c;this._unobservers=new Set}getPrevNode(a){if(null===a)return null;a=a.get(this._key);return k.$isDecoratorNode(a)?a:null}getNode(){const a=k.$getNodeByKey(this._key);return k.$isDecoratorNode(a)?a:null}getSharedType(){return this._xmlElem}getType(){return this._type}getKey(){return this._key}getSize(){return 1}getOffset(){return this._parent.getChildOffset(this)}syncPropertiesFromLexical(a,b,c){const d=this.getPrevNode(c);
|
|
30
|
+
c=this._xmlElem;const e=null===d?null:d.__state,f=b.__state;F(a,c,d,b);e!==f&&(b=new r.Map,c.insert(0,[b]),b._lexicalValue=f,b._collabNode=this,W(a,this,f,b),T(a,this,f,b))}syncPropertiesFromYjs(a,b){const c=this.getNode();if(null===c)throw Error("Should never happen");const d=this._xmlElem,e=d.firstChild,f=c.__state;e._lexicalValue=f;e._collabNode=this;G(a,d,c,b);X(a,this,e,f,null);T(a,this,f,e)}destroy(a){a.collabNodeMap.delete(this._key);this._unobservers.forEach(b=>b());this._unobservers.clear()}}
|
|
31
31
|
function ba(a,b,c){b=new Y(a,b,c);return a._collabNode=b}
|
|
32
|
-
class O{constructor(a,b,c){this._key="";this._children=[];this._xmlText=a;this._type=c;this._parent=b}getPrevNode(a){if(null===a)return null;a=a.get(this._key);return
|
|
32
|
+
class O{constructor(a,b,c){this._key="";this._children=[];this._xmlText=a;this._type=c;this._parent=b}getPrevNode(a){if(null===a)return null;a=a.get(this._key);return k.$isElementNode(a)?a:null}getNode(){const a=k.$getNodeByKey(this._key);return k.$isElementNode(a)?a:null}getSharedType(){return this._xmlText}getType(){return this._type}getKey(){return this._key}isEmpty(){return 0===this._children.length}getSize(){return 1}getOffset(){const a=this._parent;if(null===a)throw Error("Should never happen");
|
|
33
33
|
return a.getChildOffset(this)}syncPropertiesFromYjs(a,b){const c=this.getNode();if(null===c)throw this.getNode(),Error("Should never happen");G(a,this._xmlText,c,b)}applyChildrenYjsDelta(a,b){const c=this._children;let d=0;for(let q=0;q<b.length;q++){var e=b[q],f=e.insert,g=e.delete;if(null!=e.retain)d+=e.retain;else if("number"===typeof g)for(f=g;0<f;){const {node:l,nodeIndex:t,offset:u,length:n}=P(this,d,!1);if(l instanceof O||l instanceof C||l instanceof Y)c.splice(t,1),--f;else if(l instanceof
|
|
34
34
|
E){e=Math.min(f,n);g=0!==t?c[t-1]:null;var h=l.getSize();if(0===u&&1===e&&0<t&&g instanceof E&&n===h&&0===Array.from(l._map.keys()).length)g._text+=l._text,c.splice(t,1);else if(0===u&&e===h)c.splice(t,1);else{g=l._text;h=u;var p=e;g=g.slice(0,h)+""+g.slice(h+p);l._text=g}f-=e}else break}else if(null!=f)if("string"===typeof f){const {node:l,offset:t}=P(this,d,!0);l instanceof E?(e=l._text,g=t,h=f,e=e.slice(0,g)+h+e.slice(g+0),l._text=e):this._xmlText.delete(t,f.length);d+=f.length}else e=f,{nodeIndex:f}=
|
|
35
|
-
P(this,d,!1),e=M(a,e,this),c.splice(f,0,e),d+=1;else throw Error("Unexpected delta format");}}syncChildrenFromYjs(a){var b=this.getNode();if(null===b)throw this.getNode(),Error("Should never happen");var c=b.__key;const d=b.__children;var e=[];const f=d.length,g=this._children,h=g.length,p=a.collabNodeMap,q=new Set;let l,t;h!==f&&(t=ka(b,t,e));let u=0;for(let y=0;y<h;y++){var n=d[u];const x=g[y];var m=x.getNode(),w=x._key;if(null!==m&&n===w){m=
|
|
35
|
+
P(this,d,!1),e=M(a,e,this),c.splice(f,0,e),d+=1;else throw Error("Unexpected delta format");}}syncChildrenFromYjs(a){var b=this.getNode();if(null===b)throw this.getNode(),Error("Should never happen");var c=b.__key;const d=b.__children;var e=[];const f=d.length,g=this._children,h=g.length,p=a.collabNodeMap,q=new Set;let l,t;h!==f&&(t=ka(b,t,e));let u=0;for(let y=0;y<h;y++){var n=d[u];const x=g[y];var m=x.getNode(),w=x._key;if(null!==m&&n===w){m=k.$isTextNode(m);q.add(n);if(m)if(x._key=n,x instanceof
|
|
36
36
|
O)m=x._xmlText,x.syncPropertiesFromYjs(a,null),x.applyChildrenYjsDelta(a,m.toDelta()),x.syncChildrenFromYjs(a);else if(x instanceof E)x.syncPropertiesAndTextFromYjs(a,null);else if(x instanceof Y)x.syncPropertiesFromYjs(a,null);else if(!(x instanceof C))throw Error("Should never happen");e[y]=n;u++}else{if(void 0===l)for(l=new Set,w=0;w<h;w++){var v=g[w]._key;""!==v&&l.add(v)}if(null===m||void 0===n||l.has(n)){t=ka(b,t,e);n=a;m=x;w=c;v=m.getType();v=n.editor._nodes.get(v);if(void 0===v)throw Error("createLexicalNode failed");
|
|
37
37
|
v=new v.klass;v.__parent=w;m._key=v.__key;m instanceof O?(w=m._xmlText,m.syncPropertiesFromYjs(n,null),m.applyChildrenYjsDelta(n,w.toDelta()),m.syncChildrenFromYjs(n)):m instanceof E?m.syncPropertiesAndTextFromYjs(n,null):m instanceof Y&&m.syncPropertiesFromYjs(n,null);n.collabNodeMap.set(v.__key,m);n=v.__key;p.set(n,x);e[y]=n}else y--,u++}}for(b=0;b<f;b++)e=d[b],q.has(e)||(c=K(e).getWritable(),e=a.collabNodeMap.get(e),void 0!==e&&e.destroy(a),c.__parent=null)}syncPropertiesFromLexical(a,b,c){F(a,
|
|
38
|
-
this._xmlText,this.getPrevNode(c),b)}_syncChildFromLexical(a,b,c,d,e,f){b=this._children[b];c=K(c);b instanceof O&&
|
|
38
|
+
this._xmlText,this.getPrevNode(c),b)}_syncChildFromLexical(a,b,c,d,e,f){b=this._children[b];c=K(c);b instanceof O&&k.$isElementNode(c)?(b.syncPropertiesFromLexical(a,c,d),b.syncChildrenFromLexical(a,c,d,e,f)):b instanceof E&&k.$isTextNode(c)?b.syncPropertiesAndTextFromLexical(a,c,d):b instanceof Y&&k.$isDecoratorNode(c)&&b.syncPropertiesFromLexical(a,c,d)}syncChildrenFromLexical(a,b,c,d,e){var f=this.getPrevNode(c);const g=null===f?[]:f.__children;f=b.__children;const h=g.length-1,p=f.length-1,q=
|
|
39
39
|
a.collabNodeMap;let l,t,u=0;for(b=0;u<=h&&b<=p;){var n=g[u];const w=f[b];if(n===w)this._syncChildFromLexical(a,b,w,c,d,e),u++,b++;else{void 0===l&&(l=new Set(g));void 0===t&&(t=new Set(f));var m=t.has(n);n=l.has(w);m?(m=K(w),m=aa(a,m,this),q.set(w,m),n?(this.splice(a,b,1,m),u++):this.splice(a,b,0,m),b++):(this.splice(a,b,1),u++)}}c=u>h;d=b>p;if(c&&!d)for(;b<=p;++b)c=f[b],d=K(c),d=aa(a,d,this),this.append(d),q.set(c,d);else if(d&&!c)for(f=this._children.length-1;f>=b;f--)this.splice(a,f,1)}append(a){const b=
|
|
40
40
|
this._xmlText;var c=this._children;c=c[c.length-1];c=void 0!==c?c.getOffset()+c.getSize():0;if(a instanceof O)b.insertEmbed(c,a._xmlText);else if(a instanceof E){const d=a._map;null===d.parent&&b.insertEmbed(c,d);b.insert(c+1,a._text)}else a instanceof C?b.insertEmbed(c,a._map):a instanceof Y&&b.insertEmbed(c,a._xmlElem);this._children.push(a)}splice(a,b,c,d){const e=this._children;var f=e[b];if(void 0===f)if(void 0!==d)this.append(d);else throw Error("Should never happen");else{var g=f.getOffset();
|
|
41
41
|
if(-1===g)throw Error("Should never happen");var h=this._xmlText;0!==c&&h.delete(g,f.getSize());d instanceof O?h.insertEmbed(g,d._xmlText):d instanceof E?(f=d._map,null===f.parent&&h.insertEmbed(g,f),h.insert(g+1,d._text)):d instanceof C?h.insertEmbed(g,d._map):d instanceof Y&&h.insertEmbed(g,d._xmlElem);if(0!==c)for(g=e.slice(b,b+c),h=0;h<g.length;h++)g[h].destroy(a);void 0!==d?e.splice(b,c,d):e.splice(b,c)}}getChildOffset(a){let b=0;const c=this._children;for(let d=0;d<c.length;d++){const e=c[d];
|
|
42
42
|
if(e===a)return b;b+=e.getSize()}return-1}destroy(a){const b=a.collabNodeMap,c=this._children;for(let d=0;d<c.length;d++)c[d].destroy(a);b.delete(this._key)}}function ka(a,b,c){return void 0===b?(a=a.getWritable(),a.__children=c,a):b}function L(a,b,c){b=new O(a,b,c);return a._collabNode=b}
|
|
43
|
-
function la(a,b){b=b.collabNodeMap.get(a.key);if(void 0===b)return null;a=a.offset;let c=b.getSharedType();if(b instanceof E){c=b._parent._xmlText;b=b.getOffset();if(-1===b)return null;a=b+1+a}return
|
|
43
|
+
function la(a,b){b=b.collabNodeMap.get(a.key);if(void 0===b)return null;a=a.offset;let c=b.getSharedType();if(b instanceof E){c=b._parent._xmlText;b=b.getOffset();if(-1===b)return null;a=b+1+a}return r.createRelativePositionFromTypeIndex(c,a)}function ma(a,b){if(null==a){if(null!=b)return!0}else if(null==b||!r.compareRelativePositions(a,b))return!0;return!1}function na(a,b){a=a.cursorsContainer;if(null!==a){b=b.selections;const c=b.length;for(let d=0;d<c;d++)a.removeChild(b[d])}}
|
|
44
44
|
function oa(a){for(;null!=a;){if(3===a.nodeType)return a;a=a.firstChild}return null}function pa(a){const b=a.parentNode;if(null==b)throw Error("Should never happen");return[b,Array.from(b.childNodes).indexOf(a)]}
|
|
45
|
-
function qa(a,b){var c=b.awareness.getLocalState();if(null!==c&&(b=c.anchorPos,c=c.focusPos,null!==b&&null!==c&&(b=
|
|
46
|
-
"element":"text");if(c.key!==a||c.offset!==h)c=
|
|
47
|
-
function va(a,b){var c=Array.from(b.awareness.getStates()),d=a.clientID;b=a.cursors;var e=a.editor._editorState._nodeMap;const f=new Set;for(var g=0;g<c.length;g++){const [N,xa]=c[g];if(N!==d){f.add(N);const {anchorPos:ra,focusPos:sa,name:ya,color:za,focusing:Aa}=xa;var h=null,p=b.get(N);void 0===p&&(p={color:za,name:ya,selection:null},b.set(N,p));if(null!==ra&&null!==sa&&Aa){var q=
|
|
45
|
+
function qa(a,b){var c=b.awareness.getLocalState();if(null!==c&&(b=c.anchorPos,c=c.focusPos,null!==b&&null!==c&&(b=r.createAbsolutePositionFromRelativePosition(b,a.doc),a=r.createAbsolutePositionFromRelativePosition(c,a.doc),null!==b&&null!==a))){const [e,f]=Z(b.type,b.index),[g,h]=Z(a.type,a.index);if(null!==e&&null!==g){const p=e.getKey();a=g.getKey();b=k.$getSelection();if(k.$isRangeSelection(b)){var d=b.anchor;c=b.focus;if(d.key!==p||d.offset!==f)d=k.$getNodeByKey(p),b.anchor.set(p,f,k.$isElementNode(d)?
|
|
46
|
+
"element":"text");if(c.key!==a||c.offset!==h)c=k.$getNodeByKey(a),b.focus.set(a,h,k.$isElementNode(c)?"element":"text")}}}}function Z(a,b){a=a._collabNode;if(void 0===a)return[null,0];if(a instanceof O){const {node:c,offset:d}=P(a,b,!0);return null===c?[a,0]:[c,d]}return[null,0]}
|
|
47
|
+
function va(a,b){var c=Array.from(b.awareness.getStates()),d=a.clientID;b=a.cursors;var e=a.editor._editorState._nodeMap;const f=new Set;for(var g=0;g<c.length;g++){const [N,xa]=c[g];if(N!==d){f.add(N);const {anchorPos:ra,focusPos:sa,name:ya,color:za,focusing:Aa}=xa;var h=null,p=b.get(N);void 0===p&&(p={color:za,name:ya,selection:null},b.set(N,p));if(null!==ra&&null!==sa&&Aa){var q=r.createAbsolutePositionFromRelativePosition(ra,a.doc),l=r.createAbsolutePositionFromRelativePosition(sa,a.doc);if(null!==
|
|
48
48
|
q&&null!==l){const [H,U]=Z(q.type,q.index),[ta,ua]=Z(l.type,l.index);if(null!==H&&null!==ta){l=H.getKey();var t=ta.getKey();h=p.selection;if(null===h){q=p;h=l;l=U;var u=ua,n=q.color,m=document.createElement("span");m.style.cssText=`position:absolute;top:0;bottom:0;right:-1px;width:1px;background-color:rgb(${n});z-index:10;`;var w=document.createElement("span");w.textContent=q.name;w.style.cssText=`position:absolute;left:-2px;top:-16px;background-color:rgb(${n});color:#fff;line-height:12px;height:12px;font-size:12px;padding:2px;font-family:Arial;font-weight:bold;white-space:nowrap;`;
|
|
49
49
|
m.appendChild(w);h={anchor:{key:h,offset:l},caret:m,color:n,focus:{key:t,offset:u},name:w,range:document.createRange(),selections:[]}}else q=h.anchor,u=h.focus,q.key=l,q.offset=U,u.key=t,u.offset=ua}}}a:{q=a;l=p;m=h;var v=e;n=q.editor;t=n.getRootElement();p=q.cursorsContainer;if(null===p||null===t)break a;h=l.selection;if(null===m){null!==h&&(l.selection=null,na(q,h));break a}else l.selection=m;u=m.range;h=m.caret;l=m.color;q=m.selections;var y=m.anchor,x=m.focus;m=y.key;w=x.key;var A=v.get(m);const H=
|
|
50
|
-
v.get(w);v=n.getElementByKey(m);n=n.getElementByKey(w);y=y.offset;x=x.offset;
|
|
50
|
+
v.get(w);v=n.getElementByKey(m);n=n.getElementByKey(w);y=y.offset;x=x.offset;k.$isTextNode(A)&&(v=oa(v));k.$isTextNode(H)&&(n=oa(n));if(void 0!==A&&void 0!==H&&null!==v&&null!==n){"BR"===v.nodeName&&([v,y]=pa(v));"BR"===n.nodeName&&([n,x]=pa(n));A=v.firstChild;v===n&&null!=A&&"BR"===A.nodeName&&0===y&&0===x&&(x=1);try{u.setStart(v,y),u.setEnd(n,x)}catch(U){break a}!u.collapsed||y===x&&m===w||(u.setStart(n,x),u.setEnd(v,y));n=t.getBoundingClientRect();t=getComputedStyle(t);t=parseFloat(t.paddingLeft)+
|
|
51
51
|
parseFloat(t.paddingRight);m=Array.from(u.getClientRects());u=m.length;w=q.length;for(A=0;A<u;A++)v=m[A],v.width+t===n.width?(m.splice(A--,1),u--):(y=q[A],void 0===y&&(y=document.createElement("span"),q[A]=y,p.appendChild(y)),y.style.cssText=`position:absolute;top:${v.top}px;left:${v.left}px;height:${v.height}px;width:${v.width}px;background-color:rgba(${l}, 0.3);pointer-events:none;z-index:10;`,A===u-1&&h.parentNode!==y&&y.appendChild(h));for(h=w-1;h>=u;h--)p.removeChild(q[h]),q.pop()}}}}c=Array.from(b.keys());
|
|
52
|
-
for(d=0;d<c.length;d++)e=c[d],f.has(e)||(g=b.get(e),void 0!==g&&(g=g.selection,null!==g&&na(a,g),b.delete(e)))}function wa(a,b,c,d){b=b.awareness;var e=b.getLocalState();if(null!==e){var {anchorPos:f,focusPos:g,name:h,color:p,focusing:q}=e,l=e=null;if(null!==d&&(null===f||d.is(c))||null!==c)
|
|
53
|
-
function Ba(a,b){var {target:c}=b;const d=M(a,c),e=c._lexicalValue;if(void 0!==e&&d instanceof Y)if(c instanceof
|
|
54
|
-
}}}else if(d instanceof O&&b instanceof
|
|
55
|
-
exports.createBinding=function(a,b,c,d,e){if(void 0===d||null===d)throw Error("Should never happen");b=d.get("root",
|
|
56
|
-
exports.initLocalState=function(a,b,c,d){a.awareness.setLocalState({anchorPos:null,color:c,focusPos:null,focusing:d,name:b})};exports.setLocalStateFocus=function(a,b,c,d){({awareness:a}=a);let e=a.getLocalState();null===e&&(e={anchorPos:null,color:c,focusPos:null,focusing:d,name:b});e.focusing=d;a.setLocalState(e)};exports.syncCursorPositions=va;
|
|
57
|
-
exports.syncLexicalUpdateToYjs=function(a,b,c,d,e,f,g,h){Q(a,()=>{d.read(()=>{if(h.has("collaboration")){if(0<g.size){var p=Array.from(g),q=a.collabNodeMap,l=[];for(let m=0;m<p.length;m++){var t=p[m],u=
|
|
58
|
-
(l=c._nodeMap,p=
|
|
59
|
-
exports.syncYjsChangesToLexical=function(a,b,c){const d=a.editor,e=d._editorState;d.update(()=>{var f=d._pendingEditorState;for(var g=0;g<c.length;g++)Ba(a,c[g]);var h=
|
|
60
|
-
|
|
52
|
+
for(d=0;d<c.length;d++)e=c[d],f.has(e)||(g=b.get(e),void 0!==g&&(g=g.selection,null!==g&&na(a,g),b.delete(e)))}function wa(a,b,c,d){b=b.awareness;var e=b.getLocalState();if(null!==e){var {anchorPos:f,focusPos:g,name:h,color:p,focusing:q}=e,l=e=null;if(null!==d&&(null===f||d.is(c))||null!==c)k.$isRangeSelection(d)&&(e=la(d.anchor,a),l=la(d.focus,a)),(ma(f,e)||ma(g,l))&&b.setLocalState({anchorPos:e,color:p,focusPos:l,focusing:q,name:h})}}
|
|
53
|
+
function Ba(a,b){var {target:c}=b;const d=M(a,c),e=c._lexicalValue;if(void 0!==e&&d instanceof Y)if(c instanceof r.Map)X(a,d,c,e,b.keysChanged);else{if(c instanceof r.Array&&k.isDecoratorArray(e)){b=b.delta;let g=0;for(let h=0;h<b.length;h++){var f=b[h];const p=f.retain,q=f.delete;f=f.insert;if(void 0!==p)g+=p;else if(void 0!==q)S(()=>{e._array.slice(g,g+q).forEach(l=>{(k.isDecoratorArray(l)||k.isDecoratorMap(l))&&l.destroy()});e.splice(g,q)});else if(void 0!==f)ja(a,d,c,e,g);else throw Error("Not supported");
|
|
54
|
+
}}}else if(d instanceof O&&b instanceof r.YTextEvent){const {keysChanged:g,childListChanged:h,delta:p}=b;0<g.size&&d.syncPropertiesFromYjs(a,g);h&&(d.applyChildrenYjsDelta(a,p),d.syncChildrenFromYjs(a))}else if(d instanceof E&&b instanceof r.YMapEvent)({keysChanged:c}=b),0<c.size&&d.syncPropertiesAndTextFromYjs(a,c);else if(d instanceof Y&&b instanceof r.YXmlEvent)({attributesChanged:c}=b),0<c.size&&d.syncPropertiesFromYjs(a,c);else throw Error("Should never happen");}
|
|
55
|
+
const Ca=k.createCommand(),Da=k.createCommand();exports.CONNECTED_COMMAND=Ca;exports.TOGGLE_CONNECT_COMMAND=Da;exports.createBinding=function(a,b,c,d,e){if(void 0===d||null===d)throw Error("Should never happen");b=d.get("root",r.XmlText);b=L(b,null,"root");b._key="root";return{clientID:d.clientID,collabNodeMap:new Map,cursors:new Map,cursorsContainer:null,doc:d,docMap:e,editor:a,id:c,nodeProperties:new Map,root:b}};
|
|
56
|
+
exports.createUndoManager=function(a,b){return new r.UndoManager(b,{trackedOrigins:new Set([a,null])})};exports.initLocalState=function(a,b,c,d){a.awareness.setLocalState({anchorPos:null,color:c,focusPos:null,focusing:d,name:b})};exports.setLocalStateFocus=function(a,b,c,d){({awareness:a}=a);let e=a.getLocalState();null===e&&(e={anchorPos:null,color:c,focusPos:null,focusing:d,name:b});e.focusing=d;a.setLocalState(e)};exports.syncCursorPositions=va;
|
|
57
|
+
exports.syncLexicalUpdateToYjs=function(a,b,c,d,e,f,g,h){Q(a,()=>{d.read(()=>{if(h.has("collaboration")){if(0<g.size){var p=Array.from(g),q=a.collabNodeMap,l=[];for(let m=0;m<p.length;m++){var t=p[m],u=k.$getNodeByKey(t),n=q.get(t);if(n instanceof E)if(k.$isTextNode(u))l.push([n,u.__text]);else{u=n.getOffset();if(-1===u)continue;const w=n._parent;n._normalized=!0;w._xmlText.delete(u,1);q.delete(t);t=w._children;n=t.indexOf(n);t.splice(n,1)}}for(p=0;p<l.length;p++){const [m,w]=l[p];m._text=w}}}else e.has("root")&&
|
|
58
|
+
(l=c._nodeMap,p=k.$getRoot(),q=a.root,q.syncPropertiesFromLexical(a,p,l),q.syncChildrenFromLexical(a,p,l,e,f)),l=k.$getSelection(),wa(a,b,c._selection,l)})})};
|
|
59
|
+
exports.syncYjsChangesToLexical=function(a,b,c){const d=a.editor,e=d._editorState;d.update(()=>{var f=d._pendingEditorState;for(var g=0;g<c.length;g++)Ba(a,c[g]);var h=k.$getSelection();if(k.$isRangeSelection(h))if(ca(h)){g=e._selection;if(k.$isRangeSelection(g)){const p=z.$createOffsetView(d,0,e);f=z.$createOffsetView(d,0,f);const [q,l]=p.getOffsetsFromSelection(g);f=f.createSelectionFromOffsets(q,l,p);null!==f?k.$setSelection(f):(qa(a,b),ca(h)&&(h=k.$getRoot(),0===h.getChildrenSize()&&h.append(k.$createParagraphNode()),
|
|
60
|
+
k.$getRoot().selectEnd()))}wa(a,b,g,k.$getSelection())}else qa(a,b)},{onUpdate:()=>{va(a,b)},skipTransforms:!0,tag:"collaboration"})};
|
package/package.json
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lexical/yjs",
|
|
3
|
-
"author": {
|
|
4
|
-
"name": "Dominic Gannaway",
|
|
5
|
-
"email": "dg@domgan.com"
|
|
6
|
-
},
|
|
7
3
|
"description": "The library provides Yjs editor bindings for Lexical.",
|
|
8
4
|
"keywords": [
|
|
9
5
|
"react",
|
|
@@ -15,13 +11,13 @@
|
|
|
15
11
|
"crdt"
|
|
16
12
|
],
|
|
17
13
|
"license": "MIT",
|
|
18
|
-
"version": "0.1.
|
|
14
|
+
"version": "0.1.19",
|
|
19
15
|
"main": "LexicalYjs.js",
|
|
20
16
|
"dependencies": {
|
|
21
|
-
"@lexical/offset": "0.1.
|
|
17
|
+
"@lexical/offset": "0.1.19"
|
|
22
18
|
},
|
|
23
19
|
"peerDependencies": {
|
|
24
|
-
"lexical": "0.1.
|
|
20
|
+
"lexical": "0.1.19",
|
|
25
21
|
"yjs": ">=13.5.22"
|
|
26
22
|
},
|
|
27
23
|
"repository": {
|