import { YEvent, YXmlText, YXmlElement, YXmlFragment, Transaction // eslint-disable-line } from '../internals.js' /** * @extends YEvent * An Event that describes changes on a YXml Element or Yxml Fragment */ export class YXmlEvent extends YEvent { /** * @param {YXmlElement|YXmlText|YXmlFragment} target The target on which the event is created. * @param {Set} subs The set of changed attributes. `null` is included if the * child list changed. * @param {Transaction} transaction The transaction instance with wich the * change was created. */ constructor (target, subs, transaction) { super(target, transaction) /** * Whether the children changed. * @type {Boolean} * @private */ this.childListChanged = false /** * Set of all changed attributes. * @type {Set} */ this.attributesChanged = new Set() subs.forEach((sub) => { if (sub === null) { this.childListChanged = true } else { this.attributesChanged.add(sub) } }) } }