1
1
//CRDT Implementatiom
2
2
import crdt from "@cocreate/crdt"
3
3
import crud from "@cocreate/crud-client"
4
- import util from "@cocreate/utils"
5
4
6
5
// CRDT Implementaion
7
6
const { collection, document_id, name} = crud . GetAttr ( )
@@ -12,43 +11,23 @@ crdt.insertText({ collection, document_id, name, value, position })
12
11
crdt . deleteText ( { collection, document_id, name, position, length } )
13
12
crdt . replaceText ( { collection, document_id, name, value } )
14
13
15
- //. crdt listen and binding
14
+ //. crdt change event
16
15
/**
17
- * event: {
18
- * detail: [{
19
- * retain, //. position for insert and delete case
20
- * insert, //. insert string
21
- * delete, //. delete length
22
- }]
16
+ * event: {
17
+ * detail: [{
18
+ * collection: '',
19
+ * document_id '',
20
+ * name: '',
21
+ * retain, //. position for insert and delete case
22
+ * insert, //. insert string
23
+ * delete, //. delete length
24
+ * }]
23
25
* }
24
26
*
25
27
* ex: {insert: "testing", retain: 8}
26
28
* {delete: 10, reatin: 7}
27
29
*/
28
30
29
- // example of binding the input to sync with crdt and maintain cursour positions
30
- input_element . addEventListener ( 'cocreate-crdt-update' , function ( event ) {
31
- var info = event . detail ;
32
-
33
- var pos = 0 ;
34
- var flag = true ;
35
-
36
- info . forEach ( item => {
37
- if ( item . retain ) {
38
- flag = true ;
39
- pos = item . retain ;
40
- }
41
-
42
- if ( item . insert || item . delete ) {
43
- if ( flag == false ) pos = 0 ;
44
- flag = false ;
45
- if ( item . insert ) {
46
- //. element's insert process
47
- // self.updateChangeData(this, item.insert, pos, pos)
48
- } else if ( item . delete ) {
49
- //. element's delete process
50
- // self.updateChangeData(this, "", pos, pos + item.delete);
51
- }
52
- }
53
- } )
31
+ element . addEventListener ( 'cocreate-crdt-update' , function ( event ) {
32
+ var info = event . detail ; // details conatain collection document_id and name... use this to find your element
54
33
} )
0 commit comments