So if I'm reading this right, the click handler defined in `contacts_list.js` is going to get called by DOM elements cloned by `search.js` which will then call into `search.js` to do the actual selection?  This doesn't feel very clean to me.  (Also, does it work?  I didn't realize event handlers got cloned...)

Is the use case we want to support entering select mode and then using search?

Perhaps we could have `search.js` always register its own click handler on the cloned nodes which calls `source.handleClick(node, id)` to perform any source specific logic.  The `contact_list.js` file would then define a `searchSource.handleClick(node, id)` function to perform extra logic if in selection mode.  That should keep the interface between search and the list confined to the source API.

That may sound complicated, but i think it might be easier to maintain vs. having search and list reaching back into each other's details.