Skip to content

Insertion order issue when performing a merge with an extra node #228

@agubler

Description

@agubler

Bug

Nodes are merged in the wrong order when the client renders an extra node in between the HTML that is being merged against.

Code

<body>
    <div id="root">
        <div>
            <header></header>
            <footer></footer>
        </div>
    </div>
</body>
class MyWidget extends WidgetBase {
    render() {
        return v('div', [
            v('header', { id: 'header' }),
            v('div' { id: 'my-body' }),
            v('footer' { id: 'footer' })
        ]);
    }
}
// main.ts

const r = renderer(() => w(MyWidget, {});
r.mount({ domNode: document.getElementById('root')! });

Expected behavior:

Node Structure:

<body>
    <div id="root">
        <div>
            <header id="header"></header>
            <div id="my-body"></div>
            <footer id="footer"></footer>
        </div>
    </div>
</body>

Actual behavior:

Node structure:

<body>
    <div id="root">
        <div>
            <header id="header"></header>
            <footer id="footer"></footer>
            <div id="my-body"></div>
        </div>
    </div>
</body>

Package Version: 5.0.0-alpha.6

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions