export createDelta

This commit is contained in:
Kevin Jahns
2025-06-23 15:04:59 +02:00
parent e05d538f21
commit 5000fe58f9
5 changed files with 18 additions and 26 deletions

View File

@@ -19,6 +19,7 @@ export * from './utils/YEvent.js'
export * from './utils/StructSet.js'
export * from './utils/IdMap.js'
export * from './utils/AttributionManager.js'
export * from './utils/Delta.js'
export * from './types/AbstractType.js'
export * from './types/YArray.js'

View File

@@ -1090,7 +1090,7 @@ export class YText extends AbstractType {
// # Update Attributions
if (attribution != null || object.hasProperty(previousUnattributedAttributes, key)) {
/**
* @type {import('../utils/Delta.js').Attribution}
* @type {import('../utils/AttributionManager.js').Attribution}
*/
const formattingAttribution = object.assign({}, d.usedAttribution)
const changedAttributedAttributes = /** @type {{ [key: string]: Array<any> }} */ (formattingAttribution.attributes = object.assign({}, formattingAttribution.attributes ?? {}))

View File

@@ -77,7 +77,7 @@ export const createAttributionFromAttributionItems = (attrs, deleted) => {
// eslint-disable-next-line no-fallthrough
case 'insert':
case 'delete': {
const as = /** @type {import('../utils/Delta.js').Attribution} */ (attribution)
const as = /** @type {import('../utils/Delta.js').Attribution_} */ (attribution)
const ls = as[attr.name] = as[attr.name] ?? []
ls.push(attr.val)
break

View File

@@ -20,7 +20,7 @@ import * as error from 'lib0/error'
*/
/**
* @typedef {import('./AttributionManager.js').Attribution} Attribution
* @typedef {import('./AttributionManager.js').Attribution} Attribution_
*/
/**
@@ -32,14 +32,14 @@ import * as error from 'lib0/error'
*/
/**
* @typedef {{ insert: string|object, attributes?: { [key: string]: any }, attribution?: Attribution } | { delete: number } | { retain: number, attributes?: { [key:string]: any }, attribution?: Attribution }} DeltaJsonOp
* @typedef {{ insert: string|object, attributes?: { [key: string]: any }, attribution?: Attribution_ } | { delete: number } | { retain: number, attributes?: { [key:string]: any }, attribution?: Attribution_ }} DeltaJsonOp
*/
export class InsertStringOp {
/**
* @param {string} insert
* @param {FormattingAttributes|null} attributes
* @param {Attribution|null} attribution
* @param {Attribution_|null} attribution
*/
constructor (insert, attributes, attribution) {
this.insert = insert
@@ -73,7 +73,7 @@ export class InsertArrayOp {
/**
* @param {Array<ArrayContent>} insert
* @param {FormattingAttributes|null} attributes
* @param {Attribution|null} attribution
* @param {Attribution_|null} attribution
*/
constructor (insert, attributes, attribution) {
this.insert = insert
@@ -107,7 +107,7 @@ export class InsertEmbedOp {
/**
* @param {Embeds} insert
* @param {FormattingAttributes|null} attributes
* @param {Attribution|null} attribution
* @param {Attribution_|null} attribution
*/
constructor (insert, attributes, attribution) {
this.insert = insert
@@ -165,7 +165,7 @@ export class RetainOp {
/**
* @param {number} retain
* @param {FormattingAttributes|null} attributes
* @param {Attribution|null} attribution
* @param {Attribution_|null} attribution
*/
constructor (retain, attributes, attribution) {
this.retain = retain
@@ -286,7 +286,7 @@ export class DeltaBuilder extends AbstractDelta {
*/
this.usedAttributes = null
/**
* @type {Attribution?}
* @type {Attribution_?}
*/
this.usedAttribution = null
/**
@@ -323,9 +323,9 @@ export class DeltaBuilder extends AbstractDelta {
}
/**
* @template {keyof Attribution} NAME
* @template {keyof Attribution_} NAME
* @param {NAME} name
* @param {Attribution[NAME]?} value
* @param {Attribution_[NAME]?} value
*/
updateUsedAttribution (name, value) {
if (value == null) {
@@ -342,7 +342,7 @@ export class DeltaBuilder extends AbstractDelta {
}
/**
* @param {Attribution?} attribution
* @param {Attribution_?} attribution
*/
useAttribution (attribution) {
this.usedAttribution = attribution
@@ -352,7 +352,7 @@ export class DeltaBuilder extends AbstractDelta {
/**
* @param {(TDeltaOp extends InsertStringOp ? string : never) | (TDeltaOp extends InsertEmbedOp<infer Embeds> ? (Embeds) : never) | (TDeltaOp extends InsertArrayOp<infer Content> ? Array<Content> : never) } insert
* @param {FormattingAttributes?} attributes
* @param {Attribution?} attribution
* @param {Attribution_?} attribution
* @return {this}
*/
insert (insert, attributes = null, attribution = null) {
@@ -377,7 +377,7 @@ export class DeltaBuilder extends AbstractDelta {
/**
* @param {number} retain
* @param {FormattingAttributes?} attributes
* @param {Attribution?} attribution
* @param {Attribution_?} attribution
* @return {this}
*/
retain (retain, attributes = null, attribution = null) {

View File

@@ -1,20 +1,11 @@
import {
Item, AbstractType, Transaction, AbstractStruct // eslint-disable-line
TextDelta, Item, AbstractType, Transaction, AbstractStruct // eslint-disable-line
} from '../internals.js'
import * as set from 'lib0/set'
import * as array from 'lib0/array'
import * as error from 'lib0/error'
/**
* @template {object} Embed
* @typedef {import('../utils/Delta.js').TextDelta<Embed>} TextDelta
*/
/**
* @typedef {import('../utils/Delta.js').Delta} Delta
*/
const errorComputeChanges = 'You must not compute changes after the event-handler fired.'
/**
@@ -151,7 +142,7 @@ export class YEvent {
* unexpected behavior (incorrect computation of deltas). A safe way to collect changes
* is to store the `changes` or the `delta` object. Avoid storing the `transaction` object.
*
* @type {Delta}
* @type {import('./Delta.js').Delta}
*/
get delta () {
return this.changes.delta
@@ -175,7 +166,7 @@ export class YEvent {
* unexpected behavior (incorrect computation of deltas). A safe way to collect changes
* is to store the `changes` or the `delta` object. Avoid storing the `transaction` object.
*
* @type {{added:Set<Item>,deleted:Set<Item>,keys:Map<string,{action:'add'|'update'|'delete',oldValue:any}>,delta:Delta}}
* @type {{added:Set<Item>,deleted:Set<Item>,keys:Map<string,{action:'add'|'update'|'delete',oldValue:any}>,delta:import('./Delta.js').Delta}}
*/
get changes () {
let changes = this._changes