iD.ui.Sidebar = function(context) {
    var inspector = iD.ui.Inspector(context),
        current;

    function sidebar(selection) {
        var wrap = selection.append('div')
            .attr('class', 'inspector-hidden inspector-wrap fr');

        sidebar.hover = function(id) {
            if (!current && id) {
                wrap.classed('inspector-hidden', false)
                    .classed('inspector-hover', true);

                if (inspector.entityID() !== id || inspector.state() !== 'hover') {
                    inspector
                        .state('hover')
                        .entityID(id);

                    wrap.call(inspector);
                }
            } else {
                wrap.classed('inspector-hidden', true);
            }
        };

        sidebar.select = function(id, newFeature) {
            if (!current && id) {
                wrap.classed('inspector-hidden', false)
                    .classed('inspector-hover', false);

                if (inspector.entityID() !== id || inspector.state() !== 'select') {
                    inspector
                        .state('select')
                        .entityID(id)
                        .newFeature(newFeature);

                    wrap.call(inspector);
                }
            } else {
                wrap.classed('inspector-hidden', true);
            }
        };

        sidebar.show = function(component) {
            wrap.classed('inspector-hidden', true);
            current = selection.append('div')
                .attr('class', 'sidebar-component')
                .call(component);
        };

        sidebar.hide = function() {
            current.remove();
            current = null;
        };
    }

    return sidebar;
};

@@ -1738,16 +1738,156 @@
 %0A    %7D%0A%0A
+    sidebar.hover = function() %7B%7D;%0A    sidebar.select = function() %7B%7D;%0A    sidebar.show = function() %7B%7D;%0A    sidebar.hide = function() %7B%7D;%0A%0A
     retu

Fix tests