···2424import { morph, morphInner } from "morphlex"
25252626// Morph the entire element
2727-morph(currentNode, referenceNode)
2727+morph(currentNode, newNode)
28282929// Morph only the children of the current node
3030-morphInner(currentNode, referenceNode)
3030+morphInner(currentNode, newNode)
3131+3232+// Morph the entire document
3333+morphDocument(document, newDocument)
3434+```
3535+3636+## Options
3737+3838+Both `morph` and `morphInner` accept an optional third parameter for configuration:
3939+4040+```javascript
4141+morph(currentNode, newNode, {
4242+ preserveChanges: true,
4343+ beforeNodeAdded: (parent, node, insertionPoint) => {
4444+ console.log("Adding node:", node)
4545+ return true // return false to prevent addition
4646+ },
4747+})
3148```
4949+5050+### Available Options
5151+5252+- **`preserveChanges`**: When `true`, preserves modified form inputs during morphing. This prevents user-entered data from being overwritten. Default: `false`
5353+5454+- **`beforeNodeVisited`**: Called before a node is visited during morphing. Return `false` to skip morphing this node.
5555+5656+- **`afterNodeVisited`**: Called after a node has been visited and morphed.
5757+5858+- **`beforeNodeAdded`**: Called before a new node is added to the DOM. Return `false` to prevent adding the node.
5959+6060+- **`afterNodeAdded`**: Called after a node has been added to the DOM.
6161+6262+- **`beforeNodeRemoved`**: Called before a node is removed from the DOM. Return `false` to prevent removal.
6363+6464+- **`afterNodeRemoved`**: Called after a node has been removed from the DOM.
6565+6666+- **`beforeAttributeUpdated`**: Called before an attribute is updated on an element. Return `false` to prevent the update.
6767+6868+- **`afterAttributeUpdated`**: Called after an attribute has been updated on an element.
6969+7070+- **`beforeChildrenVisited`**: Called before an element's children are visited during morphing. Return `false` to skip visiting children.
7171+7272+- **`afterChildrenVisited`**: Called after an element's children have been visited and morphed.
32733374## What makes Morphlex different?
3475