Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
336f7b1b1d | ||
|
|
8abf5b85ff | ||
|
|
320e8cbe18 | ||
|
|
49150f4adb |
2
package-lock.json
generated
2
package-lock.json
generated
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "yjs",
|
"name": "yjs",
|
||||||
"version": "13.5.17",
|
"version": "13.5.18",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "yjs",
|
"name": "yjs",
|
||||||
"version": "13.5.17",
|
"version": "13.5.18",
|
||||||
"description": "Shared Editing Library",
|
"description": "Shared Editing Library",
|
||||||
"main": "./dist/yjs.cjs",
|
"main": "./dist/yjs.cjs",
|
||||||
"module": "./dist/yjs.mjs",
|
"module": "./dist/yjs.mjs",
|
||||||
|
|||||||
@@ -706,9 +706,9 @@ export class YTextEvent extends YEvent {
|
|||||||
addOp()
|
addOp()
|
||||||
}
|
}
|
||||||
if (value === null) {
|
if (value === null) {
|
||||||
attributes[key] = value
|
|
||||||
} else {
|
|
||||||
delete attributes[key]
|
delete attributes[key]
|
||||||
|
} else {
|
||||||
|
attributes[key] = value
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
item.delete(transaction)
|
item.delete(transaction)
|
||||||
|
|||||||
@@ -360,7 +360,7 @@ const cleanupTransactions = (transactionCleanups, i) => {
|
|||||||
doc.subdocs.add(subdoc)
|
doc.subdocs.add(subdoc)
|
||||||
})
|
})
|
||||||
subdocsRemoved.forEach(subdoc => doc.subdocs.delete(subdoc))
|
subdocsRemoved.forEach(subdoc => doc.subdocs.delete(subdoc))
|
||||||
doc.emit('subdocs', [{ loaded: subdocsLoaded, added: subdocsAdded, removed: subdocsRemoved }])
|
doc.emit('subdocs', [{ loaded: subdocsLoaded, added: subdocsAdded, removed: subdocsRemoved }, doc, transaction])
|
||||||
subdocsRemoved.forEach(subdoc => subdoc.destroy())
|
subdocsRemoved.forEach(subdoc => subdoc.destroy())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -288,6 +288,41 @@ export const testFormattingRemovedInMidText = tc => {
|
|||||||
t.assert(Y.getTypeChildren(text0).length === 3)
|
t.assert(Y.getTypeChildren(text0).length === 3)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reported in https://github.com/yjs/yjs/issues/344
|
||||||
|
*
|
||||||
|
* @param {t.TestCase} tc
|
||||||
|
*/
|
||||||
|
export const testFormattingDeltaUnnecessaryAttributeChange = tc => {
|
||||||
|
const { text0, text1, testConnector } = init(tc, { users: 2 })
|
||||||
|
text0.insert(0, '\n', {
|
||||||
|
PARAGRAPH_STYLES: 'normal',
|
||||||
|
LIST_STYLES: 'bullet'
|
||||||
|
})
|
||||||
|
text0.insert(1, 'abc', {
|
||||||
|
PARAGRAPH_STYLES: 'normal'
|
||||||
|
})
|
||||||
|
testConnector.flushAllMessages()
|
||||||
|
/**
|
||||||
|
* @type {Array<any>}
|
||||||
|
*/
|
||||||
|
const deltas = []
|
||||||
|
text0.observe(event => {
|
||||||
|
deltas.push(event.delta)
|
||||||
|
})
|
||||||
|
text1.observe(event => {
|
||||||
|
deltas.push(event.delta)
|
||||||
|
})
|
||||||
|
text1.format(0, 1, { LIST_STYLES: 'number' })
|
||||||
|
testConnector.flushAllMessages()
|
||||||
|
const filteredDeltas = deltas.filter(d => d.length > 0)
|
||||||
|
t.assert(filteredDeltas.length === 2)
|
||||||
|
t.compare(filteredDeltas[0], [
|
||||||
|
{ retain: 1, attributes: { LIST_STYLES: 'number' } }
|
||||||
|
])
|
||||||
|
t.compare(filteredDeltas[0], filteredDeltas[1])
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {t.TestCase} tc
|
* @param {t.TestCase} tc
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user