diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..e6abc510 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,52 @@ +# Contributing + +We welcome bug reports, feature requests and pull requests. If you want to help us out, please follow these guidelines, in order to avoid redundant work. + +## Reporting issues + +Our GitHub issue tracker is for bug reports and feature requests. Don't create support issues here. Use [Stack Overflow](https://stackoverflow.com/) or [our Slack](https://bit.ly/plyr-chat) for that. + +Please verify that your issue hasn't already been answered by our FAQ (https://github.com/sampotts/plyr/wiki/FAQ), or that there isn't already an open issue for it. + +When applicable, check that your problem doesn't happen without Plyr (see [FAQ#1](https://github.com/sampotts/plyr/wiki/FAQ#1-does-plyr-work-with--)). + +Verify that you are following the documentation, are using the latest version of Plyr, and aren't getting any errors in your own code, causing the issues. + +Describe the issue as detailed as possible, answering these questions: + +* Does it happen only with specific options and/or specific browsers? +* Does is happen only with HTML5 video, audio, youtube, vimeo or a specific library? +* Does the issue happen on [our demo](https://plyr.io/)? If not, please recreate it with a **minimal** example online. You can use our Codepen templates to get started: + * [HTML5 video](https://codepen.io/pen?template=bKeqpr) + * [HTML5 audio](https://codepen.io/pen?template=rKLywR) + * [YouTube](https://codepen.io/pen?template=GGqbbJ) + * [Vimeo](https://codepen.io/pen?template=bKeXNq) + * [Dash.js integration](https://codepen.io/pen?template=zaBgBy) + * [Hls.js integration](https://codepen.io/pen?template=oyLKQb) + * [Shaka Player integration](https://codepen.io/pen?template=ZRpzZO) + +It's important that you keep the issue description and replication demo **minimal**. If your implementation is using a framework, library or custom methods, which aren't needed to reproduce the issue, this makes it harder to debug and understand the issue. While it may be relevant to bring this up (ex: "I need Plyr to trigger the event sooner or it breaks Framework X") it also means that the person who is trying to fix the issue either has to know or learn your frameworks, libraries and custom methods, or that no one will try to fix your issue because it's too much work. + +In order to keep things on topic and to avoid bothering people with github notifications, please don't combine multiple problems or bugs into one issue, don't comment on issues unless your comment is related to that issue, and don't post "+1" or "I agree" type of comments. Use the emojis instead. + +Last but not least: Keep a civil tone in issues and comments. Non-constructive comments may be removed. + +## Requesting features and improvements + +If you are missing something in Plyr, you can create a GitHub issue for this as well. Since we prioritize fixing bugs first, and may have a lot of other suggestions and architectural changes to work on as well, these may not be at the top of our list. If it's important or urgent to you, you may want to first ensure it's something we want to have in Plyr, and then contribute it as a pull request. + +## Contributing features and documentation + +* Fork Plyr, and create a new branch in your fork, based on the **develop** branch + +* To test locally, you can use the demo. First make sure you have installed the dependencies with `npm install` or `yarn`. Run `gulp` to build while you are working, and run a local server from the repository root directory. If you have Python installed, this command should work: `python -m SimpleHTTPServer 8080`. Then go to `http://localhost:8080/demo/` + +* Develop and test your modifications. + +* Preferably commit your changes as independent logical chunks, with meaningful messages. Make sure you do not commit unnecessary files or changes, such as logging or breakpoints you added for testing, and the build output. + +* If your modifications changes the documented behavior or add new features, document these changes in readme.md. + +* When finished, push the changes to your GitHub repository and send a pull request to **develop**. Describe what your PR does. + +* If the Travis build fails, or if you get a code review with change requests, you can fix these by pushing new or rebased commits to the branch. diff --git a/changelog.md b/changelog.md index 8f46e701..a4531352 100644 --- a/changelog.md +++ b/changelog.md @@ -1,182 +1,192 @@ +# v3.3.11 + +- Fix synthetic event bubble/proxy loses detail (thanks @friday!) +- Make utils static (thanks @friday!) +- Fix for YouTube and Vimeo pausing after seek (thanks @friday!) +- Vimeo: Update playback state and assure events are triggered on load (thanks @friday!) +- Captions rewrite (use index internally to support missing or duplicate languages) (thanks @friday and @philipgiuliani!) +- Contributing document and codepen demo updates (thanks @friday!) +- Fix for after clicking on the progress bar, keyboard operations will not work (thanks @cky917!) + # v3.3.10 -* Fix for buffer display alignment and incorrect BEM classname -* Fix for playback not resuming position after quality swap (fixes #991, thanks @philipgiuliani!) -* Travis integration (thanks @friday!) -* Translate quality badges and quality names (thanks @philipgiuliani!) -* Improve captions handling for streaming (thanks @friday!) -* Call duration update method manually if user config has duration (thanks @friday!) +- Fix for buffer display alignment and incorrect BEM classname +- Fix for playback not resuming position after quality swap (fixes #991, thanks @philipgiuliani!) +- Travis integration (thanks @friday!) +- Translate quality badges and quality names (thanks @philipgiuliani!) +- Improve captions handling for streaming (thanks @friday!) +- Call duration update method manually if user config has duration (thanks @friday!) # v3.3.9 Again, more changes from @friday! -* Restore window reference in `utils.is.cue()` -* Fix InvalidStateError and IE11 issues -* Respect storage being disabled for storage getter +- Restore window reference in `utils.is.cue()` +- Fix InvalidStateError and IE11 issues +- Respect storage being disabled for storage getter # v3.3.8 Many changes here thanks to @friday: -* Added missing URL polyfill -* Pause while seeking to mimic default HTML5 behaviour -* Add `seeked` event listener to update progress (fixes #966) -* Trigger seeked event in youtube plugin if either playing or paused (fixes #921) -* Fix for YouTube and Vimeo autoplays on seek (fixes #876) -* Toggle controls improvements -* Cleanup unused code -* Poster image loading improvements -* Fix for seek tooltip vs click accuracy +- Added missing URL polyfill +- Pause while seeking to mimic default HTML5 behaviour +- Add `seeked` event listener to update progress (fixes #966) +- Trigger seeked event in youtube plugin if either playing or paused (fixes #921) +- Fix for YouTube and Vimeo autoplays on seek (fixes #876) +- Toggle controls improvements +- Cleanup unused code +- Poster image loading improvements +- Fix for seek tooltip vs click accuracy # v3.3.7 -* Poster fixes (thanks @friday) -* Grid tweak +- Poster fixes (thanks @friday) +- Grid tweak # v3.3.6 -* Vimeo fixes for mute state -* Vimeo ID fix (fixes #945) -* Use `
` for poster container -* Tooltip fixes for unicode languages (fixes #943) +- Vimeo fixes for mute state +- Vimeo ID fix (fixes #945) +- Use `
` for poster container +- Tooltip fixes for unicode languages (fixes #943) # v3.3.5 -* Removed `.load()` call as it breaks HLS (see #870) +- Removed `.load()` call as it breaks HLS (see #870) # v3.3.4 -* Fix for controls sometimes not showing while video is playing -* Fixed logic for show home tab on option select +- Fix for controls sometimes not showing while video is playing +- Fixed logic for show home tab on option select # v3.3.3 -* Reverted change to show home tab on option select due to usability regression +- Reverted change to show home tab on option select due to usability regression # v3.3.2 -* Fix for ads running in audio -* Fix for setting poster on source change +- Fix for ads running in audio +- Fix for setting poster on source change ## v3.3.0 -* Now using a custom poster image element to hide the YouTube play button and give more control over when the poster image shows -* Renamed `showPosterOnEnd` to `resetOnEnd` as it makes more sense and now works for all players and does not reload media -* Fix for same domain SVG URLs (raised by Jochem in Slack) -* [`URL`](https://developer.mozilla.org/en-US/docs/Web/API/Window/URL) is polyfill now required -* Added pause className (fixes #941) -* Button height set in CSS (auto) (fixes #928) -* Don't autoplay cloned original media (fixes #936) -* Return to the home menu pane after selecting an option +- Now using a custom poster image element to hide the YouTube play button and give more control over when the poster image shows +- Renamed `showPosterOnEnd` to `resetOnEnd` as it makes more sense and now works for all players and does not reload media +- Fix for same domain SVG URLs (raised by Jochem in Slack) +- [`URL`](https://developer.mozilla.org/en-US/docs/Web/API/Window/URL) is polyfill now required +- Added pause className (fixes #941) +- Button height set in CSS (auto) (fixes #928) +- Don't autoplay cloned original media (fixes #936) +- Return to the home menu pane after selecting an option ## v3.2.4 -* Fix issue wher player never reports as ready if controls is empty array -* Fix issue where screen reader labels were removed from time displays -* Fix issue where custom controls placeholders were not populated -* Custom controls HTML example updated -* Fix for aria-label being set to the initial state on toggle buttons, overriding the inner labels -* Fix for hidden mute button on iOS (not functional for Vimeo due to API limitations) (fixes #656) +- Fix issue wher player never reports as ready if controls is empty array +- Fix issue where screen reader labels were removed from time displays +- Fix issue where custom controls placeholders were not populated +- Custom controls HTML example updated +- Fix for aria-label being set to the initial state on toggle buttons, overriding the inner labels +- Fix for hidden mute button on iOS (not functional for Vimeo due to API limitations) (fixes #656) ## v3.2.3 -* Fix for iOS 9 throwing error for `name` property in fullscreen API (fixes #908) +- Fix for iOS 9 throwing error for `name` property in fullscreen API (fixes #908) ## v3.2.2 -* Fix for regression in 3.2.1 resulting in hidden buffer display (fixes #920) -* Cleaned up incorrect use of `aria-hidden` attribute +- Fix for regression in 3.2.1 resulting in hidden buffer display (fixes #920) +- Cleaned up incorrect use of `aria-hidden` attribute ## v3.2.1 -* Accessibility improvements for the controls (part of #905 fixes) -* Fix for context menu showing on YouTube (thanks Anthony Recenello in Slack) -* Vimeo fix for their API not returning the right duration until playback begins (fixes #891) +- Accessibility improvements for the controls (part of #905 fixes) +- Fix for context menu showing on YouTube (thanks Anthony Recenello in Slack) +- Vimeo fix for their API not returning the right duration until playback begins (fixes #891) ## v3.2.0 -* Fullscreen fixes (thanks @friday) -* Menu fix for if speed not in config -* Menu z-index fix (thanks @danielsarin) -* i18n fix for missing "Normal" string (thanks @danielsarin) -* Safer check for active caption (thanks @Antonio-Laguna) -* Add custom property fallback (thanks @friday) -* Fixed bug for captions with no srclang and labels and improved logic (fixes #875) -* Fix for `playing` false positive (fixes #898) -* Fix for IE issue with navigator.language (thanks @nicolasthy) (fixes #893) -* Fix for Vimeo controls missing on iOS (thanks @verde-io) (fixes #807) -* Fix for double vimeo caption rendering (fixes #877) +- Fullscreen fixes (thanks @friday) +- Menu fix for if speed not in config +- Menu z-index fix (thanks @danielsarin) +- i18n fix for missing "Normal" string (thanks @danielsarin) +- Safer check for active caption (thanks @Antonio-Laguna) +- Add custom property fallback (thanks @friday) +- Fixed bug for captions with no srclang and labels and improved logic (fixes #875) +- Fix for `playing` false positive (fixes #898) +- Fix for IE issue with navigator.language (thanks @nicolasthy) (fixes #893) +- Fix for Vimeo controls missing on iOS (thanks @verde-io) (fixes #807) +- Fix for double vimeo caption rendering (fixes #877) ## v3.1.0 -* Styling fixes +- Styling fixes ## v3.1.0-beta.2 -* YouTube playback speed fixes +- YouTube playback speed fixes ## v3.1.0-beta.1 -* HTML5 quality selection -* Improvements to the YouTube quality selection +- HTML5 quality selection +- Improvements to the YouTube quality selection ## v3.0.11 -* Muted and autoplay fixes -* Small bug fixes from Sentry logs +- Muted and autoplay fixes +- Small bug fixes from Sentry logs ## v3.0.10 -* Docs fix -* Package upgrades +- Docs fix +- Package upgrades ## v3.0.9 -* Demo fix -* Fix Vimeo regression +- Demo fix +- Fix Vimeo regression ## v3.0.8 -* Vimeo hotfix for private videos +- Vimeo hotfix for private videos ## v3.0.7 -* Fix for keyboard shortcut error with fast forward -* Fix for Vimeo trying to set playback rate when not allowed +- Fix for keyboard shortcut error with fast forward +- Fix for Vimeo trying to set playback rate when not allowed ## v3.0.6 -* Improved the logic for the custom handlers preventing default handlers +- Improved the logic for the custom handlers preventing default handlers ## v3.0.5 -* Removed console messages +- Removed console messages ## v3.0.4 -* Fixes for fullscreen not working inside iframes -* Fixes for custom handlers being able to prevent default -* Fixes for controls not hiding/showing correctly on Mobile Safari +- Fixes for fullscreen not working inside iframes +- Fixes for custom handlers being able to prevent default +- Fixes for controls not hiding/showing correctly on Mobile Safari ## v3.0.3 -* Vimeo offset tweak (fixes #826) -* Fix for .stop() method (fixes #819) -* Check for array for speed options (fixes #817) -* Restore as float (fixes #828) -* Fix for Firefox fullscreen oddness (Fixes #821) -* Improve Sprite checking (fixes #827) -* Fix fast-forward control (thanks @saadshahd) -* Fix the options link in the readme (thanks @DanielRuf) +- Vimeo offset tweak (fixes #826) +- Fix for .stop() method (fixes #819) +- Check for array for speed options (fixes #817) +- Restore as float (fixes #828) +- Fix for Firefox fullscreen oddness (Fixes #821) +- Improve Sprite checking (fixes #827) +- Fix fast-forward control (thanks @saadshahd) +- Fix the options link in the readme (thanks @DanielRuf) ## v3.0.2 -* Fix for Safari not firing error events when trying to load blocked scripts +- Fix for Safari not firing error events when trying to load blocked scripts ## v3.0.1 -* Fix for trying to accessing local storage when it's blocked +- Fix for trying to accessing local storage when it's blocked # v3.0.0 @@ -184,37 +194,37 @@ This is a massive release. A _mostly_ complete rewrite in ES6. What started out ### Big changes -* New settings menu complete with funky animations -* Ability to adjust speed of playback -* Ability to toggle caption language (HTML5 and Vimeo only) -* Ability to set YouTube quality (HTML5 will follow) -* Added support for Vimeo captions -* Added Picture-in-Picture support (Safari only) -* Added AirPlay support (again, Safari only) -* Added `playsinline` support for iOS 10+ -* Soundcloud removed until I can work on a plugin framework -* Embedded players are now progressively enhanced - no more empty `
`s! +- New settings menu complete with funky animations +- Ability to adjust speed of playback +- Ability to toggle caption language (HTML5 and Vimeo only) +- Ability to set YouTube quality (HTML5 will follow) +- Added support for Vimeo captions +- Added Picture-in-Picture support (Safari only) +- Added AirPlay support (again, Safari only) +- Added `playsinline` support for iOS 10+ +- Soundcloud removed until I can work on a plugin framework +- Embedded players are now progressively enhanced - no more empty `
`s! ### Other stuff -* Now using SASS exclusively. Sorry, LESS folk it just made sense to maintain one method as SASS is what the cool kids use. It may come back if we work out an automated way to convert the SASS -* Moved to ES6. All the rage these days. You'll need to look at polyfills. The demo uses [polyfill.io](https://polyfill.io) -* Added basic looping support -* Added an aspect ratio option for those that can't leave the 90s and want 4:3 -* `controlshidden` and `controlsshown` events added for when the controls show or hide -* `qualityrequested` and `qualitychange` events for YouTube quality control (HTML5 will follow) -* Volume is now `0` to `1` as per HTML5 spec -* No longer bodging a `` behind the `` to make up for WebKit's lack of lower fill styling -* Captions now render with line breaks as intended -* Captions now render without AJAX using the native events etc -* Added a fallback for getting YouTube video data incase `.getVideoData()` disappears when one of their developers randomly deletes it again -* Setup and building of the UI should be way "snappier" -* Click to toggle inverted time (e.g. 0:01 or -2:59 for a 3 minute video at 1 seconds) - new `toggleInvert` and `invertTime` options -* Added `autopause` option for Vimeo -* Added `muted` option for you guessed it, muted playback -* Restored the `.off()` API method -* `.play()` will now return a promise to prevent that pesky uncaught promise issue in Chrome etc -* Pressing and hold the seek bar no longer freezes all other updates of the UI +- Now using SASS exclusively. Sorry, LESS folk it just made sense to maintain one method as SASS is what the cool kids use. It may come back if we work out an automated way to convert the SASS +- Moved to ES6. All the rage these days. You'll need to look at polyfills. The demo uses [polyfill.io](https://polyfill.io) +- Added basic looping support +- Added an aspect ratio option for those that can't leave the 90s and want 4:3 +- `controlshidden` and `controlsshown` events added for when the controls show or hide +- `qualityrequested` and `qualitychange` events for YouTube quality control (HTML5 will follow) +- Volume is now `0` to `1` as per HTML5 spec +- No longer bodging a `` behind the `` to make up for WebKit's lack of lower fill styling +- Captions now render with line breaks as intended +- Captions now render without AJAX using the native events etc +- Added a fallback for getting YouTube video data incase `.getVideoData()` disappears when one of their developers randomly deletes it again +- Setup and building of the UI should be way "snappier" +- Click to toggle inverted time (e.g. 0:01 or -2:59 for a 3 minute video at 1 seconds) - new `toggleInvert` and `invertTime` options +- Added `autopause` option for Vimeo +- Added `muted` option for you guessed it, muted playback +- Restored the `.off()` API method +- `.play()` will now return a promise to prevent that pesky uncaught promise issue in Chrome etc +- Pressing and hold the seek bar no longer freezes all other updates of the UI ...plus loads of bug fixes. @@ -222,28 +232,28 @@ This is a massive release. A _mostly_ complete rewrite in ES6. What started out You gotta break eggs to make an omelette. Sadly, there's quite a few breaking changes: -* Setup now uses proper constructor, accepts a single selector/element/node and returns a single instance - much simpler than before -* Much of the API is now using getters and setters rather than methods (where it makes sense) to match the HTML5 API - see the docs for more info -* The data attributes for the embeds are now `data-plyr-provider` and `data-plyr-embed-id` to prevent compatibility issues. These can be changed under `config.attributes.embed` if required -* `blankUrl` -> `blankVideo` -* `volume` is now `0` to `1` as per HTML5 spec -* `keyboardShorcuts` (typo) is now just `keyboard` -* `loop` is now `loop.active` in preparation for loop enhancements later -* `html` option for custom controls removed in favour of the `controls` option which now accepts an array (to use built in controls) or a string of HTML for custom controls. -* `classes` -> `classNames` -* `classes.videoWrapper` -> `classNames.video` -* `classes.embedWrapper` -> `classNames.embed` -* `classes.ready` removed -* `classes.setup` removed -* `classes.muted` removed -* `classes.fullscreen.active` removed in favour of the `:fullscreen` selector -* `selectors.html5` removed -* `selectors.embed` removed -* `selectors.buttons.seek` -> `selectors.inputs.seek` -* `selectors.volume.input` -> `selectors.inputs.volume` -* `selectors.volume.display` -> `selectors.display.volume` -* `selectors.currentTime` -> `selectors.display.currentTime` -* `selectors.duration` -> `selectors.display.duration` +- Setup now uses proper constructor, accepts a single selector/element/node and returns a single instance - much simpler than before +- Much of the API is now using getters and setters rather than methods (where it makes sense) to match the HTML5 API - see the docs for more info +- The data attributes for the embeds are now `data-plyr-provider` and `data-plyr-embed-id` to prevent compatibility issues. These can be changed under `config.attributes.embed` if required +- `blankUrl` -> `blankVideo` +- `volume` is now `0` to `1` as per HTML5 spec +- `keyboardShorcuts` (typo) is now just `keyboard` +- `loop` is now `loop.active` in preparation for loop enhancements later +- `html` option for custom controls removed in favour of the `controls` option which now accepts an array (to use built in controls) or a string of HTML for custom controls. +- `classes` -> `classNames` +- `classes.videoWrapper` -> `classNames.video` +- `classes.embedWrapper` -> `classNames.embed` +- `classes.ready` removed +- `classes.setup` removed +- `classes.muted` removed +- `classes.fullscreen.active` removed in favour of the `:fullscreen` selector +- `selectors.html5` removed +- `selectors.embed` removed +- `selectors.buttons.seek` -> `selectors.inputs.seek` +- `selectors.volume.input` -> `selectors.inputs.volume` +- `selectors.volume.display` -> `selectors.display.volume` +- `selectors.currentTime` -> `selectors.display.currentTime` +- `selectors.duration` -> `selectors.display.duration` ### Polyfilling @@ -251,674 +261,674 @@ Because we're using the fancy new ES6 syntax, you will need to polyfill for vint ## v2.0.18 -* Fix for YouTube .getVideoData() issue (fixes #709) +- Fix for YouTube .getVideoData() issue (fixes #709) ## v2.0.17 -* Vimeo controls fix (fixes #697) -* SVG4everybody compatibility fix -* Allow Plyr.setup event listeners to be set up as separate event listeners (https://github.com/sampotts/plyr/pull/703) -* Added title to the layer html template (for custom controls) (https://github.com/sampotts/plyr/pull/649) -* Target is null bug fix (https://github.com/sampotts/plyr/pull/617) -* fix #684 memory leaks issues after destroy (https://github.com/sampotts/plyr/pull/700) +- Vimeo controls fix (fixes #697) +- SVG4everybody compatibility fix +- Allow Plyr.setup event listeners to be set up as separate event listeners (https://github.com/sampotts/plyr/pull/703) +- Added title to the layer html template (for custom controls) (https://github.com/sampotts/plyr/pull/649) +- Target is null bug fix (https://github.com/sampotts/plyr/pull/617) +- fix #684 memory leaks issues after destroy (https://github.com/sampotts/plyr/pull/700) ## v2.0.16 -* Fullscreen bug fix (fixes #664) +- Fullscreen bug fix (fixes #664) ## v2.0.15 -* Demo fix +- Demo fix ## v2.0.14 -* CDN URL updates. Sorry, still working on V3 as hard as I can... +- CDN URL updates. Sorry, still working on V3 as hard as I can... ## v2.0.13 -* Repo moved and Vimeo demo fix +- Repo moved and Vimeo demo fix ## v2.0.12 -* Ability to set custom `blankUrl` for source changes (https://github.com/sampotts/plyr/pull/504) -* Ability to set caption button listener (https://github.com/sampotts/plyr/pull/468) +- Ability to set custom `blankUrl` for source changes (https://github.com/sampotts/plyr/pull/504) +- Ability to set caption button listener (https://github.com/sampotts/plyr/pull/468) ## v2.0.11 -* Fix for `cleanUp` being called twice (thanks to @sebastiancarlsson) -* Fix for YouTube controls on iPad (fixes #391) +- Fix for `cleanUp` being called twice (thanks to @sebastiancarlsson) +- Fix for YouTube controls on iPad (fixes #391) ## v2.0.10 -* Added seek event fixes for Vimeo and YouTube (fixes #409) -* Added support for embed URLs rather than ID only (fixes #345) +- Added seek event fixes for Vimeo and YouTube (fixes #409) +- Added support for embed URLs rather than ID only (fixes #345) ## v2.0.9 -* Temporary patch for the YouTube API issues with `getDuration()` (relates to #374) +- Temporary patch for the YouTube API issues with `getDuration()` (relates to #374) ## v2.0.8 -* Added `isPaused()` API method (thanks to @darrena092) -* Allowed `.on()` API method to be chainable (thanks to @gurupras) (fixes #357) -* Improved the "awful" rendering of captions on small screens in fullscreen mode (fixes #390) -* Fix for Firefox VTT compatibility (thanks to @magourex) -* Fix for Firefox Developer Edition blank video due to `-webkit-mask-image` issue (fixes #392) -* Added Issue and PR templates with the aim of reducing duplicate or duff issues +- Added `isPaused()` API method (thanks to @darrena092) +- Allowed `.on()` API method to be chainable (thanks to @gurupras) (fixes #357) +- Improved the "awful" rendering of captions on small screens in fullscreen mode (fixes #390) +- Fix for Firefox VTT compatibility (thanks to @magourex) +- Fix for Firefox Developer Edition blank video due to `-webkit-mask-image` issue (fixes #392) +- Added Issue and PR templates with the aim of reducing duplicate or duff issues ## v2.0.7 -* Fixed `getCurrentTime()` method (fixes #351) -* Added `getVolume()` , `isMuted()` and `getDuration()` API methods (fixes #346) +- Fixed `getCurrentTime()` method (fixes #351) +- Added `getVolume()` , `isMuted()` and `getDuration()` API methods (fixes #346) ## v2.0.6 -* Fixed merge issue with `Updated define to work with AMD imports #326` PR -* Code formatting +- Fixed merge issue with `Updated define to work with AMD imports #326` PR +- Code formatting ## v2.0.5 -* Fix for Vimeo in IE9 & IE10 -* Fix for HTML5 elements not firing `ready` event +- Fix for Vimeo in IE9 & IE10 +- Fix for HTML5 elements not firing `ready` event ## v2.0.4 -* Fix for Firefox full screen (fixes #343) +- Fix for Firefox full screen (fixes #343) ## v2.0.3 -* Set 'global' keyboard shortcut option to false as default, added `