Precise DOM morphing
morphing typescript dom

Make replaceNode atomic

+7 -2
+7 -2
src/morphlex.ts
··· 670 670 #replaceNode(node: ChildNode, newNode: ChildNode): void { 671 671 const parent = node.parentNode || document 672 672 const insertionPoint = node 673 - if (this.#options.beforeNodeAdded?.(parent, newNode, insertionPoint) ?? true) { 673 + // Check if both removal and addition are allowed before starting the replacement 674 + if ( 675 + (this.#options.beforeNodeRemoved?.(node) ?? true) && 676 + (this.#options.beforeNodeAdded?.(parent, newNode, insertionPoint) ?? true) 677 + ) { 674 678 moveBefore(parent, newNode, insertionPoint) 675 679 this.#options.afterNodeAdded?.(newNode) 676 - this.#removeNode(node) 680 + node.remove() 681 + this.#options.afterNodeRemoved?.(node) 677 682 } 678 683 } 679 684