[![GitHub license](https://img.shields.io/github/license/ineventapp/musjs.svg)](https://github.com/ineventapp/musjs/blob/master/LICENSE) ![Coverage](https://img.shields.io/badge/coverage-100%25-brightgreen.svg) # mus.js A simple mouse tracking library to provide insights on how your users are handling your layout / user experience. This library was created so you don't need an external service to "record" your users mouse events and "play" them in a later moment. **mus** works with any AMD you wish and its setup is extremely simple ## Recording ```js // Instantiate a mus object var mus = new Mus(); // Start recording mus.record(); // After a while, stops setTimeout(function() { mus.stop(); }, 5000); ``` ## Playing ```js // Sets playback speed (optional, default NORMAL) mus.setPlaybackSpeed(mus.speed.SLOW); // Starts playing and enjoy mus.play(); ``` ## Example ## Public methods ### Controls #### record() Starts a recording session for current screen. If there is already a session recorded, it appends to it. #### stop() Stops a recording or a playback. #### play(onfinish) Plays current recording session. #### pause() Pauses current playback. #### release() Releases all data recorded or set. ### Getters and setters #### getData() Returns all data collected during recording. #### setData(data) Sets custom data for playback. It must be a JSON object collected from `getData`. #### setFrames(frames) Same as `setData`, but allows only to set the `frames` array. #### setWindowSize(width, height) During recording, all data collected contains window dimensions as well, so if your recorded data comes from a different window dimension, **mus** automatically adapts to current window size. This function allows you to set a custom playback window size if you decide to use `setFrames` instead of `setData` (that already sets windows dimensions). #### setPlaybackSpeed(speed) Allows playback to be faster or slower. Default constants: `mus.speed.SLOW` (35), `mus.speed.NORMAL` (15), `mus.speed.FAST` (5) You may decide to use custom values as you wish. #### isRecording() Informs if **mus** is currently recording something. #### isPlaying() Informs if **mus** is currently playing something. # Roadmap - Detect touch movements and clicks; - Get form inputs; - Allows real clicks during setup (default false); - Suggestions are greatly appreciated! # License MIT