Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ce80cb4a0d | ||
|
|
ae3c4cc050 | ||
|
|
27a78047c5 | ||
|
|
7a128c271b | ||
|
|
baca852733 | ||
|
|
7cbf204143 |
2
package-lock.json
generated
2
package-lock.json
generated
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "yjs",
|
"name": "yjs",
|
||||||
"version": "13.4.12",
|
"version": "13.4.14",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|||||||
11
package.json
11
package.json
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "yjs",
|
"name": "yjs",
|
||||||
"version": "13.4.12",
|
"version": "13.4.14",
|
||||||
"description": "Shared Editing Library",
|
"description": "Shared Editing Library",
|
||||||
"main": "./dist/yjs.cjs",
|
"main": "./dist/yjs.cjs",
|
||||||
"module": "./dist/yjs.mjs",
|
"module": "./dist/yjs.mjs",
|
||||||
@@ -26,14 +26,13 @@
|
|||||||
"postinstall": "node ./sponsor-y.js"
|
"postinstall": "node ./sponsor-y.js"
|
||||||
},
|
},
|
||||||
"files": [
|
"files": [
|
||||||
"dist/*",
|
"dist/yjs.*",
|
||||||
"src/*",
|
"dist/src",
|
||||||
"tests/*",
|
"src",
|
||||||
"docs/*",
|
"tests/testHelper.js",
|
||||||
"sponsor-y.js"
|
"sponsor-y.js"
|
||||||
],
|
],
|
||||||
"dictionaries": {
|
"dictionaries": {
|
||||||
"doc": "docs",
|
|
||||||
"test": "tests"
|
"test": "tests"
|
||||||
},
|
},
|
||||||
"standard": {
|
"standard": {
|
||||||
|
|||||||
@@ -63,6 +63,9 @@ export {
|
|||||||
encodeSnapshotV2,
|
encodeSnapshotV2,
|
||||||
decodeStateVector,
|
decodeStateVector,
|
||||||
decodeStateVectorV2,
|
decodeStateVectorV2,
|
||||||
|
encodeRelativePosition,
|
||||||
|
decodeRelativePosition,
|
||||||
|
relativePositionToJSON,
|
||||||
isDeleted,
|
isDeleted,
|
||||||
isParentOf,
|
isParentOf,
|
||||||
equalSnapshots,
|
equalSnapshots,
|
||||||
|
|||||||
@@ -75,13 +75,34 @@ export class RelativePosition {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {RelativePosition} rpos
|
||||||
|
* @return {any}
|
||||||
|
*/
|
||||||
|
export const relativePositionToJSON = rpos => {
|
||||||
|
const json = {}
|
||||||
|
if (rpos.type) {
|
||||||
|
json.type = rpos.type
|
||||||
|
}
|
||||||
|
if (rpos.tname) {
|
||||||
|
json.tname = rpos.tname
|
||||||
|
}
|
||||||
|
if (rpos.item) {
|
||||||
|
json.item = rpos.item
|
||||||
|
}
|
||||||
|
if (rpos.assoc != null) {
|
||||||
|
json.assoc = rpos.assoc
|
||||||
|
}
|
||||||
|
return json
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {any} json
|
* @param {any} json
|
||||||
* @return {RelativePosition}
|
* @return {RelativePosition}
|
||||||
*
|
*
|
||||||
* @function
|
* @function
|
||||||
*/
|
*/
|
||||||
export const createRelativePositionFromJSON = json => new RelativePosition(json.type == null ? null : createID(json.type.client, json.type.clock), json.tname || null, json.item == null ? null : createID(json.item.client, json.item.clock))
|
export const createRelativePositionFromJSON = json => new RelativePosition(json.type == null ? null : createID(json.type.client, json.type.clock), json.tname || null, json.item == null ? null : createID(json.item.client, json.item.clock), json.assoc == null ? 0 : json.assoc)
|
||||||
|
|
||||||
export class AbsolutePosition {
|
export class AbsolutePosition {
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import {
|
|||||||
followRedone,
|
followRedone,
|
||||||
getItemCleanStart,
|
getItemCleanStart,
|
||||||
getState,
|
getState,
|
||||||
ID, Transaction, Doc, Item, GC, DeleteSet, AbstractType // eslint-disable-line
|
Transaction, Doc, Item, GC, DeleteSet, AbstractType, YEvent // eslint-disable-line
|
||||||
} from '../internals.js'
|
} from '../internals.js'
|
||||||
|
|
||||||
import * as time from 'lib0/time.js'
|
import * as time from 'lib0/time.js'
|
||||||
@@ -45,6 +45,11 @@ const popStackItem = (undoManager, stack, eventType) => {
|
|||||||
* @type {StackItem?}
|
* @type {StackItem?}
|
||||||
*/
|
*/
|
||||||
let result = null
|
let result = null
|
||||||
|
/**
|
||||||
|
* Keep a reference to the transaction so we can fire the event with the changedParentTypes
|
||||||
|
* @type {any}
|
||||||
|
*/
|
||||||
|
let _tr = null
|
||||||
const doc = undoManager.doc
|
const doc = undoManager.doc
|
||||||
const scope = undoManager.scope
|
const scope = undoManager.scope
|
||||||
transact(doc, transaction => {
|
transact(doc, transaction => {
|
||||||
@@ -126,9 +131,11 @@ const popStackItem = (undoManager, stack, eventType) => {
|
|||||||
type._searchMarker.length = 0
|
type._searchMarker.length = 0
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
_tr = transaction
|
||||||
}, undoManager)
|
}, undoManager)
|
||||||
if (result != null) {
|
if (result != null) {
|
||||||
undoManager.emit('stack-item-popped', [{ stackItem: result, type: eventType }, undoManager])
|
const changedParentTypes = _tr.changedParentTypes
|
||||||
|
undoManager.emit('stack-item-popped', [{ stackItem: result, type: eventType, changedParentTypes }, undoManager])
|
||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
@@ -215,7 +222,7 @@ export class UndoManager extends Observable {
|
|||||||
keepItem(item, true)
|
keepItem(item, true)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
this.emit('stack-item-added', [{ stackItem: stack[stack.length - 1], origin: transaction.origin, type: undoing ? 'redo' : 'undo' }, this])
|
this.emit('stack-item-added', [{ stackItem: stack[stack.length - 1], origin: transaction.origin, type: undoing ? 'redo' : 'undo', changedParentTypes: transaction.changedParentTypes }, this])
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -201,10 +201,12 @@ export const testUndoEvents = tc => {
|
|||||||
let receivedMetadata = -1
|
let receivedMetadata = -1
|
||||||
undoManager.on('stack-item-added', /** @param {any} event */ event => {
|
undoManager.on('stack-item-added', /** @param {any} event */ event => {
|
||||||
t.assert(event.type != null)
|
t.assert(event.type != null)
|
||||||
|
t.assert(event.changedParentTypes != null && event.changedParentTypes.has(text0))
|
||||||
event.stackItem.meta.set('test', counter++)
|
event.stackItem.meta.set('test', counter++)
|
||||||
})
|
})
|
||||||
undoManager.on('stack-item-popped', /** @param {any} event */ event => {
|
undoManager.on('stack-item-popped', /** @param {any} event */ event => {
|
||||||
t.assert(event.type != null)
|
t.assert(event.type != null)
|
||||||
|
t.assert(event.changedParentTypes != null && event.changedParentTypes.has(text0))
|
||||||
receivedMetadata = event.stackItem.meta.get('test')
|
receivedMetadata = event.stackItem.meta.get('test')
|
||||||
})
|
})
|
||||||
text0.insert(0, 'abc')
|
text0.insert(0, 'abc')
|
||||||
|
|||||||
Reference in New Issue
Block a user