There's a lot of duplication here, with the exception of mouseMove. Should we instead abstract out a click method which takes a type -- left, right, double -- and call through to that from JavaScript? The only complication is mouseMove for the initial click -- but maybe we just ignore that if the type is doubleClick.