Compare commits

...

841 Commits

Author SHA1 Message Date
Sam Potts cce143a7da v3.0.11 2018-03-30 23:14:07 +11:00
Sam Potts d593005b32 Muted and autoplay fixes, small bug fixes 2018-03-30 23:09:17 +11:00
Sam Potts 7be9d5d4d3 v3.0.10 2018-03-30 00:16:42 +11:00
Sam Potts d7141d5ed7 Controls docs, package upgrades 2018-03-30 00:11:48 +11:00
Sam Potts 0d0ece94d3 Fix regression 2018-03-29 20:20:37 +11:00
Sam Potts 1c06f6d06d Vimeo hotfix 2018-03-29 19:35:02 +11:00
Sam Potts dda8e30b92 Merge branch 'master' of github.com:sampotts/plyr 2018-03-28 22:45:18 +11:00
Sam Potts c4e2e24643 Bug fixes 2018-03-28 22:45:11 +11:00
Sam Potts e020a105a3 Update readme.md 2018-03-28 00:55:55 +11:00
Sam Potts 2b7fe9a4f9 v3.0.6 2018-03-28 00:17:15 +11:00
Sam Potts 951df64b7f v3.0.5 2018-03-27 23:52:26 +11:00
Sam Potts 0976afe282 v3.0.4 2018-03-27 23:47:58 +11:00
Sam Potts 7b1e4abda7 Controls fixes 2018-03-27 23:43:38 +11:00
Sam Potts 0cf75eed3f Revert API method change 2018-03-27 21:15:11 +11:00
Sam Potts d96957d086 Allow fullscreen in iframe 2018-03-27 21:13:22 +11:00
Sam Potts 1a032ea498 Fix for seeking issue 2018-03-27 21:10:06 +11:00
Sam Potts 5d079da1b8 Use object.entries 2018-03-27 10:41:06 +11:00
Sam Potts 9c1bc6ab08 Fixes for fast forward and issues with event.preventDefault() 2018-03-27 10:36:08 +11:00
Sam Potts 3d2ba8c009 Update readme.md 2018-03-22 09:11:42 +11:00
Sam Potts e872ce3f77 Update readme.md 2018-03-22 09:10:50 +11:00
Sam Potts b77756da04 Typo 2018-03-22 01:15:10 +11:00
Sam Potts 9b23e13ce8 v3.0.3 2018-03-22 01:13:37 +11:00
Sam Potts 5eafe9baff Vimeo offset tweak (fixes #826) 2018-03-22 01:08:08 +11:00
Sam Potts c251c94131 Fix for .stop() method (fixes #819) 2018-03-22 01:02:38 +11:00
Sam Potts 17041efc71 Check for array for speed options (fixes #252) 2018-03-22 00:33:14 +11:00
Sam Potts 05b8e8a6e0 Restore as float (fixes #828) 2018-03-22 00:28:42 +11:00
Sam Potts f998b996fa Fix for Firefox fullscreen oddness (Fixes #821) 2018-03-22 00:26:01 +11:00
Sam Potts 958b47c435 Merge branch 'master' of github.com:sampotts/plyr 2018-03-22 00:06:26 +11:00
Sam Potts a27248d3b6 Merge pull request #820 from saadshahd/patch-1
Fix fast-forward control
2018-03-22 00:05:24 +11:00
Sam Potts 1b1f7be7ff Merge branch 'master' of github.com:sampotts/plyr 2018-03-22 00:04:34 +11:00
Sam Potts 59d4a27240 Improve Sprite checking (fixes #827) 2018-03-22 00:04:28 +11:00
Saad Shahd 75e9f3c2e3 Fix fast-forward control
fast-forward control doesn't work.
2018-03-21 12:15:57 +02:00
Sam Potts 7132eccf50 Merge pull request #822 from DanielRuf/patch/fix-options-link
fix the options link in the readme
2018-03-21 09:12:06 +11:00
Daniel Ruf e953c6398c fix the options link in the readme 2018-03-20 15:05:51 +01:00
Sam Potts bb7eea27e5 v3.0.2 2018-03-18 22:46:36 +11:00
Sam Potts 595c5e95bc Fix for Safari with adblockers 2018-03-18 22:37:06 +11:00
Sam Potts 43e6dcd41d Fix for local storage issue 2018-03-18 01:37:24 +11:00
Sam Potts b06c8ae43f Changelog updated 2018-03-18 01:14:18 +11:00
Sam Potts c7ea13c0c7 Sentry in live only 2018-03-18 01:08:05 +11:00
Sam Potts 0f8c6e147b Added Sentry 2018-03-18 00:21:23 +11:00
Sam Potts e566365288 Typo 2018-03-17 23:44:40 +11:00
Sam Potts a06e0f5890 Updated screenshot 2018-03-17 23:40:28 +11:00
Sam Potts 3bccc0da01 v3.0.0 2018-03-17 23:33:25 +11:00
Sam Potts a0173d991e Removed beta message 2018-03-17 23:31:34 +11:00
Sam Potts 600f0eb8a3 Merge branch 'beta'
# Conflicts:
#	readme.md
2018-03-17 23:30:16 +11:00
Sam Potts 5db73b1327 Added buffered getter 2018-03-17 23:27:40 +11:00
Sam Potts 5cb1628cd8 Vimeo fix 2018-03-15 10:29:05 +11:00
Sam Potts c74b75e8e1 3.0.0-beta.20 2018-03-13 23:35:17 +11:00
Sam Potts 0538476d6f 3.0.0-beta.19 2018-03-13 22:15:28 +11:00
Sam Potts 5ebe18d081 Typography fix 2018-03-13 22:00:40 +11:00
Sam Potts 207adde36d 3.0.0-beta.18 2018-03-13 21:44:18 +11:00
Sam Potts 1b13ddaa54 Update ads 2018-03-13 21:42:01 +11:00
Sam Potts 9981c349be Fix for null manager race condition 2018-03-11 18:23:47 +11:00
Sam Potts b3365a7373 Normalised event names and removed unused 2018-03-11 12:54:51 +11:00
Sam Potts 9a0c1c830d Merge pull request #804 from friday/ads-trigger-arguments
[v3] Add optional arguments to Ads.trigger
2018-03-11 10:55:29 +11:00
Albin Larsson ef27ba16f4 Add optional argument to Ads.trigger (currently only used for adblocker error) 2018-03-10 16:20:33 +01:00
Sam Potts e206edc1f6 Event listener fixes, loadScript promise, ads tweaks 2018-03-11 02:03:35 +11:00
Sam Potts c734bc4957 Merge branch 'beta' of github.com:sampotts/plyr into beta 2018-03-10 23:32:55 +11:00
Sam Potts 572b8a7aca Manually merged PRs 2018-03-10 23:32:48 +11:00
Sam Potts eebae4a227 Merge pull request #802 from gehaktmolen/ad-hotfixes
Advertisement couldnt be loaded when creative dimensions do not align after resizing
2018-03-10 23:32:15 +11:00
Sam Potts e0562752ea Merge pull request #795 from frogg/patch-1
Added link that explains Webkit's autoplay blocker
2018-03-10 23:29:22 +11:00
Arthur Hulsman 6a2ca534d2 Removed redundant wrappers within the adsmanager promises. 2018-03-09 14:29:37 +01:00
Arthur Hulsman 7adc2bc6c8 Unneeded else has been removed within the play() method. 2018-03-09 13:21:19 +01:00
Arthur Hulsman ba8d7831a7 Made sure play() returns a promise. 2018-03-09 12:50:57 +01:00
Arthur Hulsman 69ffcbad27 Ad block detection would not work when calling play() right after creating the player instance, so the adsManager now also rejects on such a case. Also made sure that calling play() will wait for the adsManager promise to resolve or otherwise return the media.play() method. 2018-03-09 11:17:24 +01:00
Arthur Hulsman 819f7d1080 Resizing the ad container while having it on display none will return offset width and height of 0, which will cause ads not to play when ad sizes are set within the clients DSP. Also making sure that the inner containers of the ad container are full size. The container is now hidden/ displayed using z-index. 2018-03-07 15:43:48 +01:00
Arthur Hulsman 409b588458 Made sure that cue points for midrolls are not displayed when the ad rule for a midroll doesn't exceed the total play time of a video. 2018-03-07 15:17:30 +01:00
Arthur Hulsman e90a603d57 Removed a double this.enabled variable and updated a comment in ads.js. Also made sure the adsmanager promise also can fail, so we can use it to wait for getting the advertisement ready when someone clicks the play button. Otherwise there it can look glitchy when the actual video starts playing and the video ad plays a few seconds later because the vast tag was slow to retrieve. Also fixed a typo. 2018-03-06 17:27:59 +01:00
Sam Potts 6f061621ad v3.0.0-beta.17 2018-03-03 23:16:15 +11:00
Sam Potts 0300610108 Typo 2018-03-03 23:14:57 +11:00
Sam Potts 2fba5f152c 3.0.0-beta.16 2018-03-03 23:06:54 +11:00
Sam Potts 317b08c703 Ready event fix, YouTube play event fix, docs update 2018-03-03 23:06:12 +11:00
Frederik Riedel e6db374a72 Added link that explains Webkit's autoplay blocker 2018-02-24 16:19:55 +01:00
Sam Potts bfb550b8d0 Package updates 2018-02-22 23:46:52 +11:00
Sam Potts 174234c166 v3.0.0-beta.15 2018-02-19 09:55:16 +11:00
Sam Potts 24b4220de5 Fix IE CORS captions 2018-02-19 09:52:46 +11:00
Sam Potts f1895a4cce Pause button fix, polyfilled build, unminified builds 2018-02-17 19:34:15 +11:00
Sam Potts c2a6306d46 Merge pull request #781 from friday/gulp-unminified-js-output
Build both minified and non-minified js-bundles
2018-02-17 09:22:34 +11:00
Sam Potts 7ac732f45b Merge branch 'beta' into gulp-unminified-js-output 2018-02-17 09:22:19 +11:00
Sam Potts c90f1bdf08 v3.0.0-beta.13 2018-02-13 00:02:13 +11:00
Sam Potts 6a9be8d16b Fix for custom controls 2018-02-13 00:01:19 +11:00
Sam Potts 58c2c52c95 Merge branch 'beta' of github.com:sampotts/plyr into beta 2018-02-11 15:09:40 +11:00
Sam Potts 73a39769d4 Fullscreen API changes, color settings tweaks 2018-02-11 15:09:34 +11:00
Sam Potts 7221e26eca Merge pull request #780 from friday/captions-ie11-indexsizeerror
Fix harmless but annoying IE error 'IndexSizeError'
2018-02-06 12:51:45 +11:00
Albin Larsson 98adb8e784 Fix harmless but annoying IE error 'IndexSizeError' 2018-02-06 02:39:01 +01:00
Albin Larsson a59dcb2f53 Gulp js build: create both minified and non-minified outputs 2018-02-06 01:57:27 +01:00
Sam Potts d21b58e1c9 Copy 2018-02-06 11:26:13 +11:00
Sam Potts d6e84cbabb Nicer checks 2018-02-06 11:12:03 +11:00
Sam Potts fcccf1d479 Copy 2018-02-06 11:08:26 +11:00
Sam Potts 211db12a3d Readme merge 2018-02-06 11:06:46 +11:00
Sam Potts ab7f277a1b Merge pull request #769 from redxtech/add-vue-plyr-to-readme
Add vue-plyr to readme
2018-02-06 10:51:42 +11:00
Albin Larsson ce1d5a60d6 Remove eslint-rule 'no-shadow' (common variable names should be able to exist in different scopes) 2018-02-05 23:22:20 +01:00
Sam Potts f67315e20c 3.0.0-beta.12 2018-02-06 00:25:50 +11:00
Sam Potts 2150c44036 Added backwards compatibility for <div> embeds 2018-02-06 00:24:48 +11:00
Sam Potts 70c9fbdde3 Removed fetch dependency 2018-02-05 21:43:32 +11:00
Sam Potts f3ea31c515 Merge branch 'beta' of github.com:sampotts/plyr into beta
# Conflicts:
#	dist/plyr.js
#	dist/plyr.js.map
2018-02-05 21:28:16 +11:00
Sam Potts 1ee88cba16 Testing fetch 2018-02-05 21:26:18 +11:00
Sam Potts af3ae75229 Update readme.md 2018-02-03 23:16:52 +11:00
Sam Potts d76ef3ff91 Small UI tweaks and fix for instanceof issue 2018-01-31 19:33:00 +11:00
Sam Potts 2691c7c9d6 Version bump + icon fix 2018-01-30 13:01:05 +11:00
Sam Potts 26b1d8ce8f Fix UMD stuff 2018-01-30 12:57:19 +11:00
Sam Potts 6fae148fc1 Deploy 2018-01-30 09:26:09 +11:00
Sam Potts bb51647fe2 Merge pull request #772 from sampotts/fix/ads-blocked
Fix: ads blocked and media playing before ad plays
2018-01-30 09:22:54 +11:00
Sam Potts 71efbe7a92 Merge branch 'beta' into fix/ads-blocked
# Conflicts:
#	dist/plyr.js
#	dist/plyr.js.map
#	src/js/plugins/ads.js
#	src/js/plyr.js
2018-01-30 09:22:14 +11:00
ferdiemmen afd695cb39 Fix typo's 2018-01-29 22:45:46 +01:00
ferdiemmen c4eb4c97ac fix(ads): Fixes media from playing when ads are blocked 2018-01-29 22:40:08 +01:00
Gabriel Dunn d5a1a7ca1c Add vue-plyr to readme 2018-01-28 23:03:05 -07:00
Sam Potts 8f7a8940f3 Version bump 2018-01-25 22:42:52 +11:00
Sam Potts 5e68f8c8dd Attempt to fix YouTube message error, added ads references, changes to bool 2018-01-25 22:41:30 +11:00
Sam Potts b4e22e2e7b Restored “Ad” in label 2018-01-24 09:06:20 +11:00
Sam Potts d4234da9aa Docs tweak 2018-01-23 19:13:35 +11:00
Sam Potts 1f53b27d4e Version bump 2018-01-23 18:00:08 +11:00
Sam Potts cc128e6088 Renamed property, UI tweak 2018-01-23 10:31:21 +11:00
ferdiemmen 3c8acb4e9e Fix bug where ad would play on every play action 2018-01-22 21:07:08 +01:00
Sam Potts ebf53d14b1 Small tweaks 2018-01-22 23:39:09 +11:00
Sam Potts b298587c0b Bug fix 2018-01-22 23:20:03 +11:00
Sam Potts 26e9aaceb8 Version bump 2018-01-22 23:17:40 +11:00
Sam Potts 384f3d6eda Gulp 2018-01-22 23:16:50 +11:00
Sam Potts 3aa5747c90 Merge pull request #760 from sampotts/beta-with-ads
Beta with ads
2018-01-22 23:15:52 +11:00
Sam Potts 5671235fd9 Formatting, events and ad countdown added 2018-01-22 23:15:10 +11:00
Sam Potts 1dd5c9efd9 Converted demo to iife 2018-01-20 15:23:36 +11:00
Sam Potts 5fad152cbf Formatting and “ad” badge 2018-01-19 20:24:15 +11:00
Sam Potts f33ca846f2 Build 2018-01-19 14:30:28 +11:00
Sam Potts 986c802acd Merge branch 'beta-with-ads' of github.com:sampotts/plyr into beta-with-ads
# Conflicts:
#	src/js/plugins/ads.js
2018-01-19 14:30:11 +11:00
Sam Potts 98dd818bf6 Merge branch 'beta' into beta-with-ads
# Conflicts:
#	demo/dist/demo.js
#	demo/dist/demo.js.map
#	dist/plyr.js
#	dist/plyr.js.map
2018-01-19 14:28:39 +11:00
Sam Potts 021f6c8460 Comments and formatting 2018-01-19 14:26:25 +11:00
Sam Potts 392f837398 Merge pull request #763 from gehaktmolen/beta-with-ads-adjustments
Beta with ads - Reloading ads on new video
2018-01-19 14:26:08 +11:00
Sam Potts 6831c30534 Transition event fix 2018-01-19 14:22:26 +11:00
Arthur Hulsman ed6048034b Noticed that Plyr stopped working when ads are blocked. 2018-01-18 14:04:47 +01:00
Arthur Hulsman 8af312fe3c Updated pause and resume content methods within Ads class. 2018-01-18 12:31:10 +01:00
Arthur Hulsman d87ada4f58 Reformatted ads codebase and added/ changed comments. Also removed un-used events. 2018-01-18 12:26:53 +01:00
Arthur Hulsman 31c8166562 Fixed string literal and position issue of the midroll cue inside the time line. Added a check for the progress element existence. 2018-01-17 15:57:10 +01:00
Arthur Hulsman 0cb2f95888 Removed an un-used variable. 2018-01-17 15:43:08 +01:00
Arthur Hulsman 896ea7c689 Added cue markings within the time line for when midrolls will be displayed. Removed unusued callback parameter. 2018-01-17 15:38:26 +01:00
Arthur Hulsman 1d1eb02bd7 Added the logging of our main promises to their resolving callback. Otherwise they come up as null. 2018-01-17 14:44:44 +01:00
Arthur Hulsman 3583165b30 Removed logic related to starting the ad by clicking/ tapping the advertisement container. Ad is started by plyr play method. 2018-01-17 14:09:11 +01:00
Arthur Hulsman d822f0c6bf Adsmanager is now re/pre-loaded with new ads when the video is done or an ad error appears. Will make it possible to request ads when a new video is loaded. Added comments and missing events within the adsmanagerloader method. 2018-01-17 13:58:39 +01:00
Arthur Hulsman 9e52296dc6 Moved the ads container to be outside of the video wrapper. This way we can easily move the ad in front or behind the video controls based on content resume or pause IMA events. 2018-01-17 12:19:32 +01:00
Arthur Hulsman 12a7a4142c Moved the logic for pausing and playing the video to content pause/ resume IMA events to avoid flickering. Also used events for resolving the adsmanager and adsloader promises. 2018-01-17 11:32:13 +01:00
ferdiemmen 8348f79742 Fix loading/playing of the ads when there is no valid ads.tagUrl 2018-01-17 08:31:36 +01:00
ferdiemmen ec73d34bd3 Some tweaks 2018-01-16 23:06:40 +01:00
ferdiemmen 1cef48d4f8 fix blocking play() if ads are set 2018-01-15 23:30:54 +01:00
Ferdi c24c05226d Merge pull request #761 from gehaktmolen/beta-with-ads-promises
Beta with ads - Added promises, missing events, new ad tag and additional logging.
2018-01-15 20:13:51 +01:00
Arthur Hulsman 4b0005c28e Added promises, missing events, new ad tag and additional logging. 2018-01-15 14:47:34 +01:00
Sam Potts 8064405dbc Tweaks 2018-01-14 23:33:18 +11:00
Sam Potts 22e8892993 Code tweaks 2018-01-14 23:15:33 +11:00
Sam Potts cfc86bcb7c Merge branch 'beta' into beta-with-ads
# Conflicts:
#	demo/dist/demo.js
#	demo/dist/demo.js.map
#	dist/plyr.js
#	dist/plyr.js.map
2018-01-14 22:55:44 +11:00
Sam Potts 5f96ec6ac2 Minor logic tweak 2018-01-14 22:54:03 +11:00
ferdiemmen bbdf225d7b Fix loading google ima sdk 2018-01-14 08:21:35 +01:00
ferdiemmen 025fc1090b Implementing ads plugin 2018-01-13 23:02:59 +01:00
Sam Potts d9ec1d1b8e Progressively enhance <iframe> embeds 2018-01-12 19:35:46 +11:00
Sam Potts 2e5d06ad85 Publish script tweaks 2018-01-09 20:43:58 +11:00
Sam Potts bacd049eb0 Package 2018-01-09 20:26:56 +11:00
Sam Potts 6fd7b26bb2 Beta version up on https://plyr.io/beta and CDN 2018-01-09 20:25:46 +11:00
Sam Potts 1df79cf7f8 Publishing to /beta 2018-01-09 19:35:17 +11:00
Sam Potts e6badacf0d Recommended extensions for VS Code 2018-01-09 18:52:36 +11:00
Sam Potts a0d9d5eca8 Styling tweaks 2018-01-09 09:14:59 +11:00
Sam Potts 8786377a75 Use CSS custom property for webkit range fill 2018-01-08 20:53:18 +11:00
Sam Potts f0322e8d94 Merge branch 'develop' of github.com:sampotts/plyr into develop 2018-01-08 19:42:29 +11:00
Sam Potts 3f2ac3fca0 Package tweaks 2018-01-08 19:42:21 +11:00
Sam Potts 9872207e87 Merge pull request #752 from friday/gulp-fix
Enable gulp builds when aws.json isn't present.
2018-01-08 12:12:11 +11:00
Albin Larsson 58d942e737 Fix gulp build for user who doesn't have aws.json 2018-01-08 02:01:39 +01:00
Sam Potts dd190155c4 Empty storage fix 2018-01-07 23:16:55 +11:00
Sam Potts ebb3b83b27 Merge branch 'master' into develop
# Conflicts:
#	src/js/plyr.js
2018-01-07 22:46:28 +11:00
Sam Potts 79a43120ae Merge pull request #740 from gurinderhans/master
double click player to toggle fullscreen
2018-01-07 22:40:20 +11:00
Sam Potts 2b36ab7ef5 Merge branch 'master' into develop
# Conflicts:
#	.vscode/settings.json
#	demo/dist/demo.css
#	demo/dist/demo.js
#	demo/error.html
#	demo/index.html
#	demo/src/js/main.js
#	demo/src/less/lib/fontface.less
#	dist/plyr.css
#	dist/plyr.js
#	gulpfile.js
#	package-lock.json
#	package.json
#	readme.md
#	src/js/plyr.js
#	src/less/plyr.less
#	src/scss/plyr.scss
2018-01-07 22:39:28 +11:00
Sam Potts eb38e0394d Slider styling 2018-01-07 22:35:52 +11:00
Sam Potts b79ffacd9c Merge pull request #726 from xDae/master
Added react port
2018-01-05 21:23:45 +11:00
Sam Potts e14e2cfaff Merge branch 'develop' of https://github.com/Selz/plyr into develop 2018-01-05 10:37:38 +11:00
Sam Potts 04119b27e6 Tweaks 2018-01-05 10:37:34 +11:00
Sam 92cb9e22e2 Started on error handling 2018-01-04 13:43:56 +11:00
Sam Potts 888c6773d0 Merge pull request #743 from jwpage/patch-1
Fix `enabled` smartphone example in README
2018-01-03 11:45:33 +11:00
Johnson Page cfd653f02a Fix enabled smartphone example in README 2018-01-03 09:55:14 +11:00
Sam 6b9106ddb1 Fix for promise issue on Chrome, loading fix 2017-12-27 21:40:35 +00:00
Gurinder Hans 838bd49a1d add comment about no fullscreen if player type is audio 2017-12-23 21:47:01 -08:00
Gurinder Hans 800e0dedfb add double click to make full screen support 2017-12-23 21:41:08 -08:00
Sam Potts 965fc0b2f5 Docs, restored loadSprite and supported static methods 2017-12-23 18:42:52 +00:00
Sam Potts 98ac98b4c2 Vimeo fix 2017-12-21 00:20:56 +00:00
Sam Potts 178b0d8020 Badge tweak 2017-12-21 00:06:59 +00:00
Sam Potts 3bd1c1ff56 Fix for scrubber 2017-12-20 22:06:26 +00:00
Sam Potts 7d4bf91a35 Small fixes 2017-12-20 21:45:06 +00:00
Sam Potts ac3d1d1242 Docs 2017-12-20 21:10:43 +00:00
Sam Potts 742018a716 Fix SASS bundle 2017-12-20 21:08:44 +00:00
Sam Potts a2ef691b4b Comment update 2017-12-20 20:49:41 +00:00
Sam Potts 9e0c406a4a Remove chaning ability and return promise for play() 2017-12-20 20:47:02 +00:00
Sam Potts f3df7aba15 Split up settings file 2017-12-20 18:00:05 +00:00
Sam Potts 6bc3592381 Fix for rounding 2017-12-20 15:32:16 +00:00
Sam Potts 6864149989 Converted to SASS/SCSS 2017-12-20 15:14:05 +00:00
Sam Potts aab53fa91f Minor tweaks 2017-12-18 16:57:23 +00:00
Sam Potts 423f67b4f4 Copy 2017-12-08 15:55:12 +00:00
Sam Potts 82f81f4f73 More Edge fixes and small UI bugs 2017-12-08 15:54:08 +00:00
Sam Potts c8990bd379 IE & Edge fixes, Storage & Console classes 2017-12-08 10:05:38 +00:00
Jose Miguel Bejarano e6cc4ba1f5 Added react port 2017-12-04 17:05:14 +02:00
Sam Potts de54929bb7 Safari CSS fixes and variables setup 2017-11-25 22:54:04 +11:00
Sam Potts fd77831303 Fix display for current language on change 2017-11-25 01:19:16 +11:00
Sam Potts cda574e627 Map 2017-11-24 08:47:17 +11:00
Sam Potts fda1977119 Fix for keyboard increase/decrease volume 2017-11-24 08:47:11 +11:00
Sam Potts f7bf0961cf Fix overflow issue on small players with menu open 2017-11-23 22:32:07 +11:00
Sam Potts 61325bbad1 Vimeo captions fix 2017-11-23 20:50:07 +11:00
Sam Potts 921cefd212 Moved to provider + type to make it cleaner in future, fix for multiple players 2017-11-23 17:35:35 +11:00
Sam Potts de6f0f1b77 Updated data attributes to data-plyr namespace. Speed menu fixes 2017-11-23 12:57:43 +11:00
Sam Potts 7382553a78 Work on touch controls 2017-11-22 00:04:11 +11:00
Sam Potts 4b82e89845 Fix for playing getter as currentTime check is flaky 2017-11-21 21:14:44 +11:00
Sam Potts d3b31e595a Handle no audio, more docs in code, fix for playing getter 2017-11-21 20:14:57 +11:00
Sam Potts f33bc5a5c6 Minor tweaks 2017-11-21 14:05:55 +11:00
Sam Potts f518ec108b Vimeo autopause option 2017-11-21 13:33:51 +11:00
Sam Potts edfc6cd475 Play button as toggle button, tooltip changes, docs updated, fullscreen fix 2017-11-21 13:12:36 +11:00
Sam Potts 92cd67effb Docs to build custom CSS for plyr 2017-11-20 23:53:54 +11:00
Sam Potts da1e987444 WIP on docs example 2017-11-20 21:23:49 +11:00
Sam Potts 2d4a166218 Merge branch 'develop' of https://github.com/Selz/plyr into develop
# Conflicts:
#	dist/plyr.js
#	dist/plyr.js.map
2017-11-20 10:48:53 +11:00
Sam Potts feae00224e Added ended and playing getters 2017-11-20 10:48:28 +11:00
Sam Potts 000afdd300 Merge branch 'develop' of github.com:Selz/plyr into develop 2017-11-19 23:35:23 +11:00
Sam Potts 0dc9681ae8 YouTube title 2017-11-19 23:35:07 +11:00
Sam Potts dc391c98c6 UI tweaks 2017-11-19 21:15:24 +11:00
Sam Potts 4b62a5c74d Captions fix 2017-11-19 17:54:38 +11:00
Sam Potts 3f744ef63a Formatting 2017-11-18 19:36:36 +11:00
Sam Potts 5a244b7fed Merge branch 'develop' of https://github.com/Selz/plyr into develop
# Conflicts:
#	dist/plyr.js
#	dist/plyr.js.map
#	src/js/controls.js
2017-11-18 19:33:01 +11:00
Sam Potts 4dca4bf93c Minor fixes 2017-11-18 19:31:45 +11:00
Sam Potts 6984d6fb16 Controls cleanup, work on captions bug, click to invert time 2017-11-18 19:30:26 +11:00
Sam Potts d7a1c44281 Using fetch instead of xhr, grabbing title for YouTube 2017-11-16 11:38:06 +01:00
Sam Potts c64b8f6940 Started on error handling, Safari icon fix 2017-11-14 17:27:40 +01:00
Sam Potts 9c4b53d761 Fix for YouTube .getVideoData() issue (fixes #709) 2017-11-14 13:28:52 +01:00
Sam Potts 022b436c3f YouTube fix 2017-11-14 13:22:23 +01:00
Sam Potts 6058bb0245 Docs 2017-11-12 08:16:47 +00:00
Sam Potts 3ade86537d Docs, keyboard shortcut fixes 2017-11-12 08:14:14 +00:00
Sam Potts d80be3b903 More docs, event renamed 2017-11-12 07:45:52 +00:00
Sam Potts 1a26681d87 Added Sparkk TV to the list of users 2017-11-10 00:19:44 +11:00
Sam Potts 9171297764 More docs 2017-11-10 00:06:46 +11:00
Sam Potts ebd1a52e5d Config docs 2017-11-09 21:18:09 +11:00
Sam Potts 743c84188e Fix for destroy 2017-11-09 20:54:14 +11:00
Sam Potts 4879bea4a0 Moved console methods out of the root of the object 2017-11-09 20:01:13 +11:00
Sam Potts 66917fd39b Use callback for loading Vimeo API 2017-11-09 19:44:07 +11:00
Sam Potts fd97607e55 Merge branch 'develop' of https://github.com/Selz/plyr into develop
# Conflicts:
#	dist/plyr.js
#	dist/plyr.js.map
2017-11-09 19:41:12 +11:00
Sam Potts f878581c8f UI bugs 2017-11-09 19:40:45 +11:00
Sam Potts f9602acf61 Callback for loadScript 2017-11-09 16:06:49 +11:00
Sam Potts 86a5724bdb Missing code highlight 2017-11-09 00:22:40 +11:00
Sam Potts 63c963d726 More docs 2017-11-09 00:21:44 +11:00
Sam Potts 88bfa35b99 Test 2017-11-09 00:06:34 +11:00
Sam Potts bb66be98da Volume fixes and other tidy up work 2017-11-08 23:46:20 +11:00
Sam Potts c948e95ade Looping, increase/decrease volume fix 2017-11-08 00:37:14 +11:00
Sam Potts 1a5f4b1b9e Merge branch 'develop' of github.com:Selz/plyr into develop
# Conflicts:
#	dist/plyr.js
#	dist/plyr.js.map
#	src/js/defaults.js
2017-11-07 23:23:17 +11:00
Sam Potts 3f41a0cf54 Merge branch 'develop' of github.com:Selz/plyr into develop
# Conflicts:
#	readme.md
2017-11-07 23:21:35 +11:00
Sam Potts 966ca1acc3 Trap focus fix 2017-11-07 18:01:24 +11:00
Sam Potts e2c7491ccd Using the “href” attribute on SVG if supported, using hasAttribute 2017-11-07 09:58:37 +11:00
Sam Potts 0ec0addbda Update readme.md 2017-11-07 09:16:41 +11:00
Sam Potts fae4ca12e0 Started on docs 2017-11-06 23:06:14 +11:00
Sam Potts 84505da84b Automatic Vimeo aspect ratio 2017-11-06 22:00:00 +11:00
Sam Potts 2497e25b3c Global listeners to prevent repeat binding 2017-11-06 21:19:00 +11:00
Sam Potts 9c4b7e7094 Keyboard logic 2017-11-06 20:34:11 +11:00
Sam Potts 3a9beaed59 Vimeo captions fix 2017-11-06 20:27:19 +11:00
Sam Potts 1578525ee3 Finished aspect ratio setting 2017-11-06 20:24:07 +11:00
Sam Potts 62c1b368cf Cleanup 2017-11-06 19:53:27 +11:00
Sam Potts f8ecea8fb7 Added Vimeo playback speed 2017-11-06 19:47:14 +11:00
Sam Potts 0068710740 Started on documentation and aspect ratio option 2017-11-06 19:38:31 +11:00
Sam Potts d206b8ab34 Merge pull request #696 from yuriykuzin/enable-speed-controls-on-vimeo
Enable speed controls using Vimeo API
2017-11-06 19:37:47 +11:00
Sam Potts 51c011b733 Merge branch 'master' into enable-speed-controls-on-vimeo 2017-11-06 19:37:02 +11:00
Sam Potts 5fe477340b Tab focus classname change 2017-11-05 23:20:26 +11:00
Sam Potts 45df319823 Keyboard shortcut tweaks 2017-11-05 23:09:33 +11:00
Sam Potts 6bebbe4153 Key listeners fix 2017-11-05 20:49:37 +11:00
Sam Potts 374de800a4 Captions fix 2017-11-05 18:57:22 +11:00
Sam Potts 60084a17f8 YouTube volume fix 2017-11-05 18:40:41 +11:00
Sam Potts 4d417d0396 Vimeo fix 2017-11-05 12:04:31 +11:00
Sam Potts e2d8bd2b73 Captions language fix 2017-11-05 11:59:15 +11:00
Sam Potts 1c693df00b src getter fix, local storage fix 2017-11-05 11:45:02 +11:00
Sam Potts 8aaa932050 Cleanup 2017-11-05 01:13:00 +11:00
Sam Potts 3cd6c2acf6 Merge branch 'develop' of https://github.com/Selz/plyr into develop 2017-11-05 01:02:17 +11:00
Sam Potts 3930ebb339 Menu design tweaks, moved logic into plugins 2017-11-05 01:02:10 +11:00
Sam Potts b102714067 Merge pull request #705 from friday/editorconfig
Add .editorconfig file
2017-11-05 00:49:45 +11:00
Sam Potts 13d3037a53 Meta data and icons updated 2017-11-05 00:29:21 +11:00
Albin Larsson 1e7a60ee5c Add .editorconfig file 2017-11-04 14:16:00 +01:00
Sam Potts 8d80f6b05d Removed log 2017-11-04 23:53:03 +11:00
Sam Potts 3c99357f06 Vimeo fixes + small bug fixes 2017-11-04 23:18:47 +11:00
Sam Potts 597b3fe0db Retrofit PRs 2017-11-04 22:41:18 +11:00
Sam Potts a757acad15 Merge pull request #577 from brandon-pereira/master
fix for svg4everybody conflicting with plyr
2017-11-04 22:25:27 +11:00
Sam Potts 7913cf837f Merge branch 'master' into master 2017-11-04 22:25:17 +11:00
Sam Potts e98d356ede Merge branch 'master' into master 2017-11-04 22:22:49 +11:00
Sam Potts c9c20345c0 Merge pull request #613 from vers-one/master
Fix for handling explicitly set duration of audio
2017-11-04 22:19:47 +11:00
Sam Potts aca06be7ac Merge branch 'master' into master 2017-11-04 22:19:39 +11:00
Sam Potts 550cc6a19b Merge branch 'master' into master 2017-11-04 22:19:17 +11:00
Sam Potts e44e93c117 Merge pull request #617 from oemueller/patch-1
[bugfix] target is null exception
2017-11-04 22:17:00 +11:00
Sam Potts a06a8150ef Merge pull request #649 from waltercruz/master
Adding title to the player html template
2017-11-04 22:16:28 +11:00
Sam Potts e787934ee6 Merge branch 'master' into master 2017-11-04 22:16:16 +11:00
Sam Potts be4b5ef4db Merge branch 'master' into master 2017-11-04 22:14:55 +11:00
Sam Potts 55c5b8b07e Typo 2017-11-04 21:32:19 +11:00
Sam Potts a924d40620 Merge pull request #654 from jjui/patch-1
Enable start/stop toggle on whole element
2017-11-04 21:29:25 +11:00
Sam Potts 0074e77a7c Update plyr.scss 2017-11-04 21:28:38 +11:00
Sam Potts f3141690ee Update plyr.less 2017-11-04 21:28:17 +11:00
Sam Potts 7ac5b0e18b Merge pull request #678 from StudyTube/use-url-as-input-for-vimeo-player
Add URL as a possible input option to Vimeo player
2017-11-04 21:24:55 +11:00
Sam Potts d920de2a25 Small tweaks 2017-11-04 21:19:02 +11:00
Sam Potts 5abf7e9535 Merge pull request #703 from gurupras/early-listener-fix
Allow Plyr.setup event listeners to be set up as separate event listeners
2017-11-04 18:15:03 +11:00
Sam Potts 650ee2c18f Merge pull request #700 from ashkanhosseini/master
fix #684 memory leaks issues after destroy.
2017-11-04 18:11:35 +11:00
Sam Potts 069c8093ae Small bug fixes 2017-11-04 14:45:06 +11:00
Sam Potts 1cc2930dc0 ES6-ified 2017-11-04 14:25:28 +11:00
Guru Prasad Srinivasa 95734cf7cc Allow setup event listeners to be set up as separate event listeners
rather than in-conjunction with defaultListener

This allows the setup listeners to do things like
preventDefault()/stopImmediatePropagation() and have them work
2017-11-01 04:15:03 -04:00
Sam Potts 3d50936b47 Split LESS into more granular files, Vimeo fixes 2017-10-28 20:14:33 +11:00
Ashkan Hosseini 7234e2f5a3 fix #684 memory leaks issues after destroy. 2017-10-28 00:09:40 +03:00
Sam Potts dd9d5c8898 Linting and minor changes 2017-10-27 15:06:16 +11:00
Yuriy e06b689f5c Enable speed controls using Vimeo API 2017-10-26 17:11:19 +03:00
Sam Potts 71db66d802 Error pages 2017-10-26 20:59:40 +11:00
Sam Potts 959b5a20e3 Inlined SVGs, fixed build 2017-10-26 00:10:56 +11:00
Sam Potts 9de5c0cf39 Built JS 2017-10-26 00:00:15 +11:00
Sam Potts 1a3868a6c6 Merge branch 'develop' of https://github.com/Selz/plyr into develop 2017-10-25 23:59:59 +11:00
Sam Potts 378aa159b8 Docs/demo refresh 2017-10-25 23:59:53 +11:00
Sam Potts 6876a9163d Merge pull request #694 from friday/fix/volume-steps
Restore volume stepping via key up/down
2017-10-25 23:59:15 +11:00
Sam Potts 34d28a69ad Merge pull request #693 from friday/fix/instanceof-undefined
v3: Add instanceof wrapper to avoid TypeErrors
2017-10-25 23:54:10 +11:00
Albin Larsson 0715d3ae67 Restore up/down arrow behavior from v2 (10 steps between min and max instead of one) 2017-10-25 14:25:10 +02:00
Albin Larsson 542095f5eb Add instanceof wrapper that avoids TypeError when second argument is undefined 2017-10-25 14:10:38 +02:00
Sam Potts 57517a9dcc Fullscreen improvements 2017-10-18 23:55:53 +11:00
Sam Potts 751708ff23 Fix 2017-10-18 19:47:03 +11:00
Sam Potts fcf944788a Cleanup 2017-10-18 12:47:54 +11:00
Sam Potts 36a84c5c2d Removed extra <progress> for populating lower fill on range inputs 2017-10-18 12:43:10 +11:00
Sam Potts 4392abfc49 Merge branch 'develop' of https://github.com/Selz/plyr into develop
# Conflicts:
#	dist/plyr.js
2017-10-08 19:12:55 +11:00
Sam Potts 3238b6a36a Fullscreen fix 2017-10-08 19:12:25 +11:00
Sam Potts 18a5edef0e Linting 2017-10-08 19:10:04 +11:00
Yuriy Kuzin 1b3a6b340d Add URL as a possible input option to Vimeo player
This is reasonable to processing correctly private Vimeo links, like https://vimeo.com/25345658/fe46e209ac - that contain not only vimeo id, but also private key
2017-10-06 14:41:57 +03:00
Sam Potts b3759e966d Version bump 2017-10-05 22:47:27 +11:00
Sam Potts 34172b9aee Fullscreen bug fix (fixes #664) 2017-10-05 22:46:48 +11:00
Sam Potts 02cb093f7b Small tweaks to focus 2017-10-03 00:00:45 +11:00
Sam Potts d6977473b1 Formatting 2017-10-02 21:03:51 +11:00
Sam Potts 15cffad89e CDN URLs 2017-10-02 14:54:35 +11:00
Sam Potts a21ffe983c Demo fixes 2017-10-02 14:52:31 +11:00
Sam Potts 0d96601d1a CDN URLs 2017-10-02 14:48:15 +11:00
Sam Potts 9fb79f29fd Readme fix 2017-10-02 14:25:14 +11:00
Sam Potts 032d73408f CDN URL updates 2017-10-02 14:18:44 +11:00
Sam Potts 7959297a98 Merge branch 'develop' of https://github.com/Selz/plyr into develop 2017-10-02 13:55:08 +11:00
Sam Potts 6dd010ea34 Comments, small tweaks 2017-10-02 13:55:03 +11:00
Sam Potts f89ddb2f1b Merge pull request #669 from friday/fix/prevent-buttons-from-submitting-form
Prevent buttons from submitting form (v3)
2017-09-27 23:33:28 +10:00
Sam Potts 2e5cc272e3 Merge pull request #670 from friday/fix/errors-without-settings-pane
Avoid errors when initiating plyr without settings (v3)
2017-09-27 23:32:25 +10:00
Albin Larsson ebd13c63e8 Avoid multiple errors when initiating plyr without 'settings' in controls 2017-09-27 05:09:56 +02:00
Albin Larsson ec091266aa Prevent buttons from submitting form 2017-09-27 02:34:23 +02:00
Sam Potts ad105877ed Merge pull request #667 from friday/fix/caption-feature-detection
Fix 'TypeError: Cannot read property 'kind' of null' in captions feat…
2017-09-27 10:03:25 +10:00
Albin Larsson c84f666b55 Fix 'TypeError: Cannot read property 'kind' of null' in captions feature detection if video lacks captions 2017-09-27 00:24:54 +02:00
J 72412d26a5 Update plyr.less 2017-09-09 13:31:39 +02:00
J bf02c69daa Enable start/stop toggle on whole element
Related to issue https://github.com/sampotts/plyr/issues/587
2017-09-09 13:25:22 +02:00
Sam Potts 2bba1f30e2 Fixing Vimeo captions, WIP on settings menu, prettier and VS code settings 2017-09-03 14:36:55 +10:00
Walter Cruz 01f50f03f1 dding title to the player html template (build) 2017-08-28 10:32:56 -03:00
Walter Cruz f50f0eb63d Adding title to the player html template 2017-08-28 10:19:29 -03:00
Sam Potts 2196665495 Cleanup 2017-08-16 13:30:27 +10:00
Sam Potts 0148c76c30 ESLint, comments, quality and speed menus 2017-08-16 00:36:23 +10:00
Sam Potts 3fe0c7c84b Update readme.md 2017-08-13 21:07:22 +10:00
Sam Potts 18b2cbb2e9 Small tweak 2017-08-13 13:54:16 +10:00
Sam Potts f6a7555a1d Work on quality control 2017-08-06 21:00:31 +10:00
Sam Potts f7144dc0cb Fix bug when switching sources 2017-08-06 13:42:37 +10:00
Sam Potts a9957211f4 Work on playback rate changes 2017-07-31 09:58:30 +10:00
Sam Potts 7b60e473fa Small tweaks 2017-07-23 21:13:11 +10:00
Oliver b114a6f42e [bugfix] target is null exception
when using 'play-large' without a 'play' button, the statement target = target[0]; caused an error. So it is necessary to check the value of target before accessing [0]
2017-07-12 22:17:25 +02:00
Sam Potts dfc516baf6 Merge branch 'develop' of https://github.com/Selz/plyr into develop 2017-07-09 17:17:26 +10:00
Sam Potts b0d3bcd15a Notes 2017-07-09 17:17:21 +10:00
Sam Potts 03c3960e93 Tweaks 2017-07-09 17:14:42 +10:00
versfx d0ceefe827 Gulp build 2017-07-06 23:41:34 -04:00
versfx e756664750 Fix for https://github.com/sampotts/plyr/issues/601 2017-07-06 23:28:31 -04:00
Sam Potts 21f444ed61 Tweaks 2017-06-12 09:26:01 +07:00
Sam Potts 40b4f8e840 Tweaks 2017-06-04 22:39:21 +10:00
Sam Potts bc61dac4c5 Tidy up, fixing destroy 2017-06-04 18:30:37 +10:00
Sam Potts 3605989226 Warning 2017-06-04 15:51:37 +10:00
Sam Potts a49d77afab Source change fix 2017-06-04 15:50:47 +10:00
Sam Potts 7daa08c32f Change to proper constructor + prototypes 2017-06-04 15:27:37 +10:00
Sam Potts aaab9ad082 Seperated reduce motion check 2017-05-22 09:07:14 +10:00
Sam Potts 86c9004183 More work on the menu 2017-05-22 08:55:45 +10:00
Sam Potts 857dfe838c Menu toggle 2017-05-21 17:50:07 +10:00
Sam Potts 6828bc00f8 Delete notes.md 2017-05-16 10:31:07 +10:00
Sam Potts e1a19faf26 URL updates 2017-05-16 10:20:58 +10:00
Sam Potts e95c81cc5b Update bower.json 2017-05-16 10:17:57 +10:00
Sam Potts f3bda17fa0 Merge branch 'master' into develop
# Conflicts:
#	demo/dist/demo.js
#	demo/src/js/main.js
#	dist/plyr.js
#	notes.md
#	src/js/plyr.js
2017-05-16 10:17:04 +10:00
Sam Potts c0eee58732 Plugin versions 2017-05-16 10:14:01 +10:00
Sam Potts bcf88cd024 Vimeo demo bug fix + repo move 2017-05-16 10:08:59 +10:00
Sam Potts 966c3d875d Single instance only 2017-05-16 09:58:53 +10:00
Sam Potts fe9383bed5 Cleanup 2017-05-09 21:30:09 +10:00
Sam Potts 2c31770030 Update notes 2017-05-09 00:20:22 +10:00
Sam Potts 8d3e160166 Adding support for playsinline 2017-05-09 00:18:19 +10:00
Sam Potts 408cfe5b97 Added support for passive event listeners 2017-05-08 23:07:19 +10:00
Sam Potts 279fee3595 Bug fixes 2017-05-07 20:17:36 +10:00
Sam Potts 28dddfcff2 Vimeo captions working 2017-05-07 20:07:08 +10:00
Sam Potts 9e2580ec6a Merge branch 'develop' of https://github.com/Selz/plyr into develop
# Conflicts:
#	dist/plyr.js
2017-05-07 19:04:05 +10:00
Sam Potts aba5a9dc0e Utils object, work on Vimeo captions 2017-05-07 19:03:48 +10:00
Brandon Pereira d27a0b3855 updated to check for global namespace 2017-05-01 16:53:54 -06:00
Brandon Pereira a575aa25ac fix for svg4everybody conflicting with plyr 2017-05-01 15:50:54 -06:00
Sam Potts 9999828505 Merge pull request #574 from mapmelabs/youtube-loop
Implement loop in YouTube
2017-04-28 13:12:31 +10:00
Alejandro Iglesias b04301c211 Implement loop in YouTube 2017-04-27 11:53:53 -03:00
Sam Potts 97157efcfa More work on Vimeo captions 2017-04-26 00:24:42 +10:00
Sam Potts 3756476809 Merge branch 'develop' of github.com:Selz/plyr into develop 2017-04-25 22:39:21 +10:00
Sam Potts b3d798eeee Gulp tweak 2017-04-25 22:39:14 +10:00
Sam Potts b499622eb8 Started on Vimeo captions 2017-04-25 20:45:25 +10:00
Sam Potts 04b8d0bac8 Tweaks 2017-04-25 19:31:34 +10:00
Sam Potts 8ea4cbd942 Tidy up 2017-04-25 18:43:09 +10:00
Sam Potts 7889ae1126 Built JS 2017-04-25 18:37:56 +10:00
Sam Potts 897d49ad87 Merge branch 'develop' of https://github.com/Selz/plyr into develop 2017-04-25 18:37:36 +10:00
Sam Potts 1960d35d8b More work on menus and tidy up 2017-04-25 18:37:31 +10:00
Sam Potts 0b7d0dedf6 Merge pull request #545 from silverwind/blank-mp4
Add blank.mp4 to dist files
2017-04-25 12:40:20 +10:00
Sam Potts 948e2cc66c Merge branch 'develop' into blank-mp4 2017-04-25 12:40:13 +10:00
Sam Potts 396b816a1f Merge pull request #563 from stormrockwell/master
removed vimeo id parsing because it is not necessary
2017-04-25 12:37:43 +10:00
Sam Potts 0a58cbfd59 Merge branch 'develop' into master 2017-04-25 12:37:35 +10:00
Sam Potts bbe4b7e565 Notes 2017-04-22 14:55:03 +10:00
stormrockwell 2ecca2cbe3 removed vimeo id parsing because it is not necessary 2017-04-19 15:16:03 -04:00
Sam Potts f5d80fa888 Notes 2017-04-19 22:40:32 +10:00
Sam Potts f2bbe4eb12 Looping menu (WIP) 2017-04-19 22:34:52 +10:00
Sam Potts 60e51b7077 Added notes 2017-04-19 21:33:23 +10:00
Sam Potts 01d1ac9ab9 Toggle menu 2017-04-17 21:05:35 +10:00
Sam Potts 9b2396f5ff Airplay and PiP 2017-04-17 01:28:52 +10:00
Sam Potts da15980b8a ID fix and styling fix 2017-04-17 00:32:41 +10:00
Sam Potts 452678867f More work on menus 2017-04-16 20:38:45 +10:00
Sam Potts ff2d27f8e5 Cleanup events and references 2017-04-16 13:00:57 +10:00
Sam Potts 546cdaad92 Merge branch 'develop' of https://github.com/Selz/plyr into develop
# Conflicts:
#	dist/plyr.js
2017-04-15 23:22:35 +10:00
Sam Potts 5d38497f07 Formatting 2017-04-15 23:22:14 +10:00
Sam Potts 808a3af3cf Formatting 2017-04-15 23:21:18 +10:00
Sam Potts 889712761a Merge branch 'develop' of github.com:Selz/plyr into develop
# Conflicts:
#	dist/plyr.js
#	src/js/plyr.js
2017-03-29 09:05:25 +11:00
Sam Potts 46fab972a0 Namespacing 2017-03-29 09:03:33 +11:00
Sam Potts 535c046b62 Merge branch 'develop' of https://github.com/Selz/plyr into develop
# Conflicts:
#	dist/plyr.js
#	src/js/plyr.js
2017-03-28 09:30:37 +11:00
Sam Potts 55dfab8394 Tweaks 2017-03-28 09:19:58 +11:00
Sam Potts 18bf4d84b9 Menu creation (WIP) 2017-03-28 00:12:33 +11:00
Sam Potts ef1d73df15 Controls rewrite 2017-03-27 00:25:41 +11:00
Sam Potts 684107da5c WIP on new controls creation 2017-03-26 21:32:41 +11:00
silverwind 2a97a9a9c5 Add blank.mp4 to dist files
For a complete "offline" experience, it's necessary to self-host the
file, so include it in the dist files for that purpose.
2017-03-25 10:58:36 +01:00
Sam Potts ca12343b16 Merge branch 'develop' of https://github.com/Selz/plyr into develop 2017-03-25 18:44:17 +11:00
Sam Potts a974fbf31c Notes 2017-03-25 18:44:10 +11:00
Sam Potts 6eaf33ec6c Merge pull request #520 from platformpurple/feature/subtitles
Feature/subtitles
2017-03-25 18:43:45 +11:00
Sam Potts 33fef7faee Merge branch 'develop' into feature/subtitles 2017-03-25 18:43:36 +11:00
Sam Potts b083bf4297 Merge branch 'master' into develop
# Conflicts:
#	dist/plyr.css
#	dist/plyr.js
#	src/js/plyr.js
#	src/less/plyr.less
#	src/scss/plyr.scss
2017-03-25 11:24:38 +11:00
Sam Potts 4957e4d80c Version bump to 2.0.12 2017-03-25 10:58:41 +11:00
Sam Potts 605f8a8249 Changelog update 2017-03-25 10:57:52 +11:00
Sam Potts 7490a7e7f3 Merge pull request #468 from jronallo/captions-listener
allow for setting additional listener for captions
2017-03-25 10:51:54 +11:00
Sam Potts f32527feb4 Merge pull request #504 from ShimShamSam/master
Add blankUrl option to set the URL for blank.mp4
2017-03-25 10:50:55 +11:00
Sam Potts ebc7ed538a Manual merge of #509 2017-03-25 10:49:04 +11:00
Sam Potts a60868bfe8 Clean up 2017-03-25 10:47:37 +11:00
Sam Potts 4a2866d05f Merge branch 'develop' of https://github.com/Selz/plyr into develop
# Conflicts:
#	dist/plyr.js
2017-03-25 10:37:21 +11:00
Sam Potts 1a05f352c7 Code formatting 2017-03-25 10:37:00 +11:00
Sam Potts ba27de0669 Merge pull request #510 from platformpurple/feature/loop-events
Added key bindings for loop
2017-03-25 10:35:15 +11:00
Sam Potts e21e7054ce Merge branch 'develop' into feature/loop-events 2017-03-25 10:35:08 +11:00
Sam Potts bc323e905c Manual merge of #543 PR 2017-03-25 10:27:03 +11:00
Sam Potts afa1fe9d5f Merge pull request #514 from platformpurple/improvement/loop-color-area
Improvement/loop color area
2017-03-25 10:22:10 +11:00
Sam Potts 2444efc834 Merge branch 'develop' into improvement/loop-color-area 2017-03-25 10:22:02 +11:00
Sam Potts 7b6257ff20 Merge branch 'develop' of https://github.com/Selz/plyr into develop
# Conflicts:
#	dist/plyr.js
2017-03-25 10:09:14 +11:00
Sam Potts 13973125fb Loop variable naming 2017-03-25 10:08:39 +11:00
Sam Potts ddf9104349 Merge pull request #511 from platformpurple/develop
Fix on typo
2017-03-25 10:07:07 +11:00
Marios Tasos 47b53fffb4 remove commented out code 2017-03-24 17:29:48 +02:00
Marios Tasos 9ba3753f80 toggle quality options 2017-03-24 17:25:09 +02:00
Marios Tasos a353194fe1 make config.captions.selectedIndex number 2017-03-22 15:50:56 +02:00
Marios Tasos c205c47509 set captionExists to true if selectedIndex is bigger than capt source 2017-03-22 13:38:08 +02:00
Marios Tasos 9c867edfbc fix data typo in language button 2017-03-18 01:59:20 +02:00
Marios Tasos 9919d80782 check if captions exists 2017-03-15 17:18:34 +02:00
Sam Potts a971850d26 Update readme.md 2017-03-09 15:35:29 +11:00
Chrysa Papadopoulou 8464ffe6ad Conflicts and tracks array on config 2017-02-24 16:38:00 +02:00
Chrysa Papadopoulou 6537225c61 Subtitles tracks 2017-02-24 16:32:17 +02:00
Chrysa Papadopoulou dcbf59bd89 Colored strip indicating looped area 2017-02-15 17:41:04 +02:00
Chrysa Papadopoulou 21d478d396 Add looping key bindings to allowed array 2017-02-14 17:15:27 +02:00
Chrysa Papadopoulou 054c243416 Fix on typo and gulp 2017-02-14 16:44:29 +02:00
Chrysa Papadopoulou d57e453541 Fix on typo 2017-02-14 16:42:40 +02:00
Chrysa Papadopoulou 3f45ef4908 Removed console 2017-02-14 16:29:05 +02:00
Chrysa Papadopoulou 1fd742464d Added key bindings for loop 2017-02-14 16:04:58 +02:00
Samuel Hodge 382397407f Generated dist files 2017-02-12 00:15:21 -05:00
Samuel Hodge 82809235b9 Documented the blankUrl option 2017-02-11 23:59:14 -05:00
Samuel Hodge 7d5c507f16 Allow configuration of the blank.mp4 URL
This is useful for people behind firewalls who need to host a blank mp4 themselves.
2017-02-11 23:50:49 -05:00
Sam Potts bc139f16a7 Update readme.md 2017-02-10 11:21:20 +11:00
Sam Potts f6f3284dc5 Update readme.md 2017-02-10 11:19:37 +11:00
Sam Potts f4d2f1856f Update readme.md 2017-02-09 23:38:52 +11:00
Sam Potts 871e19ed92 Update readme.md 2017-02-09 23:37:29 +11:00
Sam Potts 9c599884a8 Merge branch 'develop' of https://github.com/Selz/plyr into develop
# Conflicts:
#	dist/plyr.js
#	src/js/plyr.js
2017-02-05 11:36:53 +11:00
Sam Potts cbef45841c Menu work 2017-02-05 11:34:33 +11:00
Sam Potts 96d9f302c2 Merge pull request #490 from platformpurple/develop
Playback speed and looping controls
2017-02-05 11:31:58 +11:00
Chrysa Papadopoulou afcdf17a72 Removed not needed functions + reverted demo.js to previous 2017-02-03 14:52:38 +02:00
Chrysa Papadopoulou 1bcdbe4c00 Refactored loop event buttons + on 'No Loop' cleared displayed timing 2017-02-02 11:38:08 +02:00
Chrysa Papadopoulou 45c0ded88c Loop functionality 2017-02-01 19:16:39 +02:00
Chrysa Papadopoulou ea30ad9494 Playback speed control settings 2017-01-31 17:21:33 +02:00
Sam Potts 7608615702 Merge branch 'develop' of https://github.com/Selz/plyr into develop 2017-01-11 20:14:48 +11:00
Sam Potts cc5f37392f ToDo notes, code tidy up 2017-01-11 20:14:41 +11:00
Sam Potts 413fcbcb8c Merge branch 'develop' of github.com:Selz/plyr into develop
# Conflicts:
#	dist/plyr.js
#	src/js/plyr.js
2017-01-10 21:47:49 +11:00
Sam Potts c49d0a99e4 JsBeautifier 2017-01-10 21:43:28 +11:00
Sam Potts 5a0cb9289c JsBeautifier in use, syntax tweaks 2017-01-10 20:22:18 +11:00
Sam Potts 72998c4c41 Merge pull request #437 from tv2/playground
Fixed typo
2017-01-10 20:21:01 +11:00
Sam Potts da48be495b Merge pull request #477 from iamrobert/patch-1
Update index.html
2017-01-10 14:51:40 +11:00
Robert Stark c843ed3460 Update index.html
Just missing the closing </li>
2017-01-10 11:50:26 +08:00
Sam Potts 4232aa9ea4 Update issue_template.md 2017-01-10 09:47:46 +11:00
Sam Potts f6612fa78c Update issue_template.md 2017-01-10 09:45:41 +11:00
Sam Potts bce1d983cb Merge pull request #457 from amowu/patch-3
fix: Firefox can not display captions
2017-01-04 08:45:40 +11:00
Sam Potts 047fc43f8f Merge pull request #458 from amowu/patch-4
fix: parse webVTT time NaN
2017-01-04 08:45:06 +11:00
Jason Ronallo 96ae866baa allow for setting additional listener for captions 2016-12-26 17:06:59 -05:00
Amo Wu 0cbfc9252c fix: parse webVTT time NaN 2016-12-16 14:32:04 +08:00
Amo Wu d02e57bdb3 fix: Firefox can not display captions 2016-12-15 16:38:46 +08:00
Morten Vestergaard Hansen a1d5bccac2 Fixed typo 2016-11-30 08:54:24 +01:00
Sam Potts a9bb8afca4 v2.0.11 2016-11-27 20:18:30 +11:00
Sam Potts 28cd92b708 Merge branch 'master' of https://github.com/Selz/plyr 2016-11-27 20:15:19 +11:00
Sam Potts a44c7ecc3a Fix for iPad and YouTube issues 2016-11-27 20:15:15 +11:00
Sam Potts 663c1fb627 Merge pull request #427 from amowu/patch-2
Fix cannot scroll after destroyed
2016-11-27 20:09:49 +11:00
Amo Wu a7969b8e9e Fix cannot scroll after destroyed
In single page application, switch router when plyr is fullscreen mode, page cannot scroll, because `document.body.style.overflow` is `hidden`
2016-11-24 11:21:43 +08:00
Sam Potts 4ca3f030cc Merge pull request #419 from amowu/patch-1
refactor: miss prefix
2016-11-18 09:48:40 +11:00
Sam Potts 5214c5d55d Merge pull request #425 from sebastiancarlsson/cleanup-called-twice-bug
fixes bug where cleanUp would be called twice
2016-11-18 09:40:34 +11:00
Sebastian Carlsson 3e6ed7b69b fixes bug where cleanUp would be called twice 2016-11-17 15:43:26 +01:00
Sam Potts 7d2a8d343a Update 2016-11-16 09:41:06 +11:00
Sam Potts 03aacf483f Update readme.md 2016-11-16 09:40:09 +11:00
Amo Wu 02bc8c8445 refactor: miss prefix
fix _fullscreen.prefix can't work
2016-11-10 16:27:10 +08:00
Sam Potts 7965b82cca Quality WIP 2016-11-06 21:47:44 +11:00
Sam Potts bae04a492a Merge branch 'master' into develop
# Conflicts:
#	demo/index.html
#	dist/plyr.js
2016-11-06 15:55:55 +11:00
Sam Potts 73a1391f2f Update readme.md 2016-11-02 18:45:37 +11:00
Sam Potts 660ff0434d Cache bust 2016-11-02 18:29:38 +11:00
Sam Potts 94208dce76 v2.0.10
- Added seek event fixes for Vimeo and YouTube (fixes #409)
- Added support for embed URLs rather than ID only (fixes #345)
2016-11-02 18:14:06 +11:00
Sam Potts efe54fbba4 Added seek event fixes (fixes #409), Added support for URLs (fixes #345) 2016-11-02 18:09:40 +11:00
Sam Potts 10561d6c83 Merge pull request #408 from gurupras/urlparser
Added logic to parse youtube video id
2016-11-02 16:59:28 +11:00
Sam Potts 72404e77e5 PiP 2016-11-01 12:00:16 +11:00
Guru Prasad Srinivasa 0ef87f93a6 Added logic to parse youtube video id
This commit is targetted at solving issue#345 and adds
    functionality to parse youtube video IDs from various
    types of youtube video URLs.

    Other embed types like vimeo/soundcloud can be extended by
    following a similar structure as implemented in this commit.
2016-10-30 00:49:17 -04:00
Sam c7310c21fb Fullscreen fix, styling 2016-10-24 00:11:47 +11:00
Sam ed9e27b64f Merge branch 'develop' of https://github.com/Selz/plyr into develop 2016-10-23 21:42:18 +11:00
Sam Potts 801ed63be5 Work on PiP 2016-10-23 21:21:42 +11:00
Sam 2aa9b267ab Merge branch 'develop' of https://github.com/Selz/plyr into develop
# Conflicts:
#	src/js/plyr.js
2016-10-23 21:16:49 +11:00
Sam 90338d9600 Tweaks 2016-10-23 21:15:19 +11:00
Sam Potts 5cecf16d4f Merge branch 'master' into develop
# Conflicts:
#	demo/dist/demo.js
#	dist/plyr.css
#	dist/plyr.js
2016-10-23 15:27:28 +11:00
Sam Potts a3ed309342 v2.0.9
- Temporary patch for the YouTube API issues with `getDuration()` (relates to #374)
2016-10-23 15:18:53 +11:00
Sam Potts 08b4c09b89 Temporary patch for the YouTube API issues with getDuration() (relates to #374) 2016-10-23 15:18:08 +11:00
Sam Potts a509a5e1bc 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
2016-10-23 13:48:05 +11:00
Sam Potts bec10e7836 Fix for caption size (fixes #390), Fix for Firefox Dev (fixes #392) 2016-10-23 13:35:49 +11:00
Sam Potts f9a184800b Add Issue and PR templates 2016-10-23 13:34:44 +11:00
Sam Potts f428c3ff8b Manually merged #395 2016-10-23 12:19:39 +11:00
Sam Potts 97eb40a8e3 Merge pull request #389 from darrena092/master
Added .isPaused().
2016-10-23 11:51:10 +11:00
Darren Anderson 8211631950 Gulp build done. 2016-10-06 15:43:41 +01:00
Darren Anderson a17cbb0e8b Added .isPaused to API 2016-10-06 15:33:49 +01:00
Sam Potts 21a30f1b6f Fixed for array passed to _on and _off 2016-10-03 17:16:05 +11:00
Sam 613c45ede9 Merge branch 'master' into develop 2016-10-01 22:18:40 +10:00
Sam 8743c6a08d Code style 2016-10-01 22:18:01 +10:00
Sam Potts 8098be6f93 Merge pull request #379 from magourex/master
Support WebVTT with CRLF or LF Line separator with firefox #378
2016-10-01 22:10:35 +10:00
Sam eba0831538 Manually merged #385 2016-10-01 22:07:01 +10:00
Thomas LM 1c73c9fbfe Update plyr.js 2016-09-27 10:57:35 +02:00
Sam 1ad103c29f Menu animation 2016-09-26 23:21:57 +10:00
Sam ca37b4c9ac Menu 2016-09-25 23:54:49 +10:00
Sam Potts d3bbf09d12 More menu work 2016-09-25 20:01:58 +10:00
Sam Potts f608317eec Merge branch 'develop' of https://github.com/Selz/plyr into develop
# Conflicts:
#	dist/plyr.css
#	dist/plyr.js
2016-09-14 15:22:41 +10:00
Sam Potts c8b9c9bcaa Expanded 2016-09-13 23:52:25 +10:00
Sam d638cdcdd3 Started on PIP support 2016-09-13 00:16:27 +10:00
Sam Potts 46f82a4af3 Added quality in menu 2016-09-07 22:18:05 +10:00
Sam Potts 978606edb4 CSS path 2016-09-06 23:54:04 +10:00
Sam 42a2642d40 Icon fix 2016-09-06 23:50:59 +10:00
Sam 37840c3844 Working on settings menu 2016-09-06 23:48:09 +10:00
Sam Potts 28335ef3d8 Merge pull request #356 from amowu/feature/add-playback-speed
Add playback speed
2016-09-06 20:46:00 +10:00
Amo Wu 78ec5b3322 refactor: sorting speed 2016-09-05 22:56:19 +08:00
Amo Wu ac7e1ab299 test: add speed-up button 2016-09-05 18:00:11 +08:00
Amo Wu ea60fd0f45 docs: update readme 2016-08-31 17:18:44 +08:00
Amo Wu c291e8c5d9 refactor: check config.speeds format 2016-08-31 15:42:01 +08:00
Amo Wu f0ac542a7f refactor: add localStorage supporting 2016-08-31 15:34:44 +08:00
Amo Wu a412085785 feat: add playback speed button 2016-08-31 15:11:29 +08:00
Sam 435b5c74bf Fixed API method, added new methods (fixes #346, #351)
- Fixed `getCurrentTime()` method (fixes #351)
- Added `getVolume()` , `isMuted()` and `getDuration()` API methods (fixes #346)
2016-08-29 23:36:43 +10:00
Sam 15fd7041ab Fixed AMD definition 2016-08-26 21:43:51 +10:00
Sam Potts 1ced6b4d67 Vimeo IE9/10 (Fixes #348), HTML5 ready event (Fixes #349) 2016-08-26 18:15:24 +10:00
Sam 6694c1e6cf Fix for Firefox full screen (fixes #343) 2016-08-23 00:34:43 +10:00
Sam Potts 19ca906e50 Update changelog.md 2016-08-22 20:41:49 +10:00
Sam Potts 12e94775d6 Global keyboard shortcut changes 2016-08-22 14:44:18 +10:00
Sam Potts df7f52d885 Added ‘global’ keyboard shortcut option 2016-08-22 14:15:49 +10:00
Sam Potts d5b5faafbb Version bump for NPM 2016-08-22 13:08:19 +10:00
Sam Potts a318e8588b Merge branch 'master' of https://github.com/Selz/plyr 2016-08-22 13:07:07 +10:00
Sam Potts 51fb252cd8 Update changelog.md 2016-08-22 13:06:26 +10:00
Sam Potts 86b2f61b56 Bump to v2.0.0 2016-08-22 13:00:47 +10:00
Sam Potts 232a9fe868 Update changelog.md 2016-08-22 12:53:38 +10:00
Sam Potts e8bfe73b1d Update readme.md 2016-08-22 08:40:02 +10:00
Sam Potts ab0d762675 Update readme.md 2016-08-21 22:46:11 +10:00
Sam Potts a6a314e011 Update readme.md 2016-08-21 21:53:16 +10:00
Sam Potts 514bdff92e Update readme.md 2016-08-21 21:53:02 +10:00
Sam Potts 745e56a3a3 Update readme.md 2016-08-21 21:40:24 +10:00
Sam Potts 130fb78b4c Version bump 2016-08-21 19:47:13 +10:00
Sam Potts 3718ec69ba Use minified 2016-08-21 19:45:45 +10:00
Sam Potts 4610f4a8c9 Firefox and Edge fixes 2016-08-21 19:44:46 +10:00
Sam Potts a8062354ec Loading tweaks, Microsoft Edge tweaks 2016-08-21 19:25:21 +10:00
Sam aac0a5a3a9 Work on docs 2016-08-21 10:30:11 +10:00
Sam 92b9e3400b Keyboard shortcuts 2016-08-20 23:39:18 +10:00
Sam bea513f5dd Jshint tweaks, changelog 2016-08-20 20:11:21 +10:00
Sam Potts 9d109bf02d Refactoring and bug fixing 2016-08-20 18:02:02 +10:00
Sam Potts fc45ab48c9 Merge branch 'master' into develop
# Conflicts:
#	src/js/plyr.js
2016-08-20 17:46:05 +10:00
Sam Potts 58e9b02405 Merge 2016-08-06 11:09:55 +10:00
Sam Potts b578fb4840 Merge branch 'master' of https://github.com/Selz/plyr 2016-08-06 11:08:33 +10:00
Sam Potts f18d9589eb Font stack SASS fix (Fixes #328) 2016-08-06 11:08:28 +10:00
Sam Potts 35c6ec9461 Manually merged #313 PR 2016-08-06 11:08:04 +10:00
Sam Potts 56d9730d0a Merge pull request #326 from mkaziz/master
Updated define to work with AMD imports
2016-08-06 10:15:53 +10:00
Khalid Aziz 6e18bc8b31 Updated define to work with AMD imports 2016-08-04 02:05:12 -05:00
Sam Potts 81756a1af9 Merge pull request #322 from mortonfox/patch-1
Fix the Initialising and Options anchor links
2016-07-30 14:10:34 +10:00
Morton Fox 05e1ab1165 Fix the Initialising and Options anchor links 2016-07-30 00:09:39 -04:00
Sam Potts a0ddc5e6eb Merge pull request #321 from electerious/patch-1
Added Array as selector in .setup() to readme
2016-07-25 08:53:29 +10:00
Tobias Reich dc40b1f93a Added Array as selector in .setup() to readme
Documentation for #319
2016-07-24 20:52:20 +02:00
Sam Potts d7cc29f2fb Vimeo keyboard focus fix (Fixes #317), Fix for Vimeo on basic support devices 2016-07-23 11:11:17 +10:00
Sam Potts 0505e49038 Vimeo API upgrade, YouTube Bugfix, Array support
- Vimeo API upgrade
- Fix for YouTube bug introduced in v1.8.9 (Fixes #320)
- Added support for passing array to .setup() (Fixes #319)
2016-07-23 10:42:06 +10:00
Sam Potts 6ff1e47341 Merge branch 'master' of https://github.com/Selz/plyr 2016-07-21 21:59:26 +10:00
Sam Potts e72a91de6e Fix for seek issues introduced in v1.8.9 2016-07-21 21:59:16 +10:00
Sam Potts 52ec4c012d Update readme.md 2016-07-21 21:32:56 +10:00
Sam Potts ae89c92ab6 Update readme.md 2016-07-21 21:31:09 +10:00
Sam Potts 57ad124ce8 v1.8.9 2016-07-21 21:25:27 +10:00
Sam Potts a85d45d2e5 Fix for fullscreen not being defined (Fixes #295) 2016-07-21 21:21:10 +10:00
Sam Potts a6f57fc034 Fix for multiline captions (Fixes #314) 2016-07-21 21:15:44 +10:00
Sam Potts 04c9653b86 Merge branch 'master' of https://github.com/Selz/plyr 2016-07-21 21:14:29 +10:00
Sam Potts b8cdc71001 Clean up of type checks and fix for _restart() (Fixes #315) 2016-07-21 21:14:22 +10:00
Sam Potts 277ebf0fd1 Merge pull request #312 from dpschen/patch-1
Add kirby-plyrtag
2016-07-14 22:03:50 +10:00
Dominik Pschenitschni 7682d998e7 Add kirby-plyrtag
Added a Kirby cms kirbytag https://getkirby.com/
2016-07-14 12:52:28 +02:00
Sam Potts 05b9b9a831 Fix for MEDIA_ERR_SRC_NOT_SUPPORTED when calling .source() API method 2016-07-14 17:13:37 +10:00
Sam Potts eee699cec6 Version bump 2016-07-10 20:59:42 +10:00
Sam Potts 3c9e9862d8 Added getCurrentTime API method (fixes #292) 2016-07-10 20:58:19 +10:00
Sam Potts 39dc651a9d Fix for !hideControls on touch devices (fixes #303) 2016-07-10 20:50:55 +10:00
Sam Potts 4effda125a Merge branch 'master' of https://github.com/Selz/plyr 2016-07-10 20:45:58 +10:00
Sam Potts bf9de231d8 Styling minor tweaks 2016-07-10 20:45:54 +10:00
Sam Potts ef12332505 Update readme.md 2016-06-29 16:23:38 +10:00
Sam Potts 1b735f1727 Update readme.md 2016-06-26 22:21:19 +10:00
Sam Potts 7f7ecf852e Line height fix 2016-06-26 09:07:42 +10:00
Sam Potts 931672895f Reverted font size change 2016-06-26 09:04:38 +10:00
Sam Potts 0952bc8239 Built JS 2016-06-26 08:45:06 +10:00
Sam Potts 7e7508ca82 Fixed overflow issues (fixes #286) 2016-06-26 08:34:36 +10:00
Sam Potts 095d100ba4 Version bump 2016-06-25 23:47:30 +10:00
Sam Potts c61fad51c1 Fix for z-index on large play button 2016-06-25 23:46:37 +10:00
Sam Potts 7b11c6803d Merge pull request #283 from arrowthemes/patch-1
Make the player button clickable on small videos
2016-06-25 17:44:07 +04:00
Sam Potts 9b75436380 v1.8.3
- Disabled iPad support for YouTube and Vimeo due to iOS limitations with iFrame playback
- Fixed IE11 icon loading (fixes #269)
- Updated screenshot (fixes #281)
- Added WordPress plugin (fixes #239)
- Added Neos plugin
- Added HLS, Shaka and dash.js examples (see #235 for more)
- Improvements for controls hiding and showing on touch devices
2016-06-25 23:39:00 +10:00
Sam Potts be19b72719 Merge branch 'master' of https://github.com/Selz/plyr
# Conflicts:
#	dist/plyr.css
#	src/less/plyr.less
#	src/scss/plyr.scss
2016-06-25 22:35:04 +10:00
Sam Potts 2fdcc18356 Hide Shadow DOM elements 2016-06-25 22:33:23 +10:00
Sam Potts 6425a33ccd Merge pull request #284 from Integer64/develop
fix name svg
2016-06-22 19:10:48 +01:00
Integer64 12c5dbd290 fix name svg 2016-06-23 01:56:14 +08:00
Joel Mbugua cb591dac0c Make the player button clickable on small videos
If you set the plyr video to width of 300px, the plyr__controls overlays the play centered play button such that you can't click on the play button. Adding a z-index on the plyr .plyr__play-large fixes that.
2016-06-21 21:59:00 +03:00
Sam Potts 4c1cdea56e Merge pull request #275 from wilsonmsalberto/master
Prevent error when verifying if play buttons exist
2016-06-13 18:49:20 +01:00
Wilson Alberto 80cfabbaf9 Prevent error when verifying if play buttons exist 2016-06-13 17:01:46 +01:00
Sam c7d28b09c0 Fixed event bubbling 2016-06-09 11:05:07 +01:00
Sam 161dd48312 Fixed log message 2016-06-09 09:57:16 +01:00
Sam 383515c1b7 Merge branch 'master' of https://github.com/Selz/plyr 2016-06-09 09:49:09 +01:00
Sam 98792168e4 Changes to setup return value, SVG bug fix (fixes #269) 2016-06-09 09:49:01 +01:00
Sam Potts 01437a4a38 Merge pull request #271 from thegrammarnazi/patch-3
correct grammar
2016-06-09 09:46:49 +01:00
Grammar Nazi 03ed86f5c2 correct grammar 2016-06-09 01:39:52 -05:00
Sam 1a745e1eaa Merge branch 'master' of https://github.com/Selz/plyr 2016-06-07 12:34:40 +01:00
Sam 70646ca907 See changelog (fixes #265, #253, #257) 2016-06-07 12:34:36 +01:00
Sam Potts af774b6f02 Merge pull request #260 from cytec/fix-control-icon-size
use $plyr-control-icon-size in sass file
2016-06-02 10:41:36 +01:00
cytec 7a9eac093a use $plyr-control-icon-size in sass file 2016-06-02 11:40:09 +02:00
Sam 4afd311ef6 Version bump 2016-06-02 10:19:35 +01:00
Sam 7eec6c6739 Fix for multiple sprites being requested (fixes #259) 2016-06-02 10:18:33 +01:00
Sam 521431e093 Fix for scroll direction on volume (fixes #258) 2016-06-01 09:38:29 +01:00
Sam Potts 24bc415faf Merge pull request #256 from MrSnowflake/develop
In specific cases Plyr fails to initiate YT: YT.Player is not a constructor
2016-05-31 08:26:53 +01:00
Sam 552f448ccd Seek rounding from 1 to 4 decimal places (fixes #242) 2016-05-30 07:41:17 +01:00
MrSnowflake 152e94f229 Improved YT initialized check.
Added an extra check to see wether YT API has been initialized. The current check is inadequate as YT can be an object while the API still isn't completely initialized.
2016-05-30 00:35:07 +02:00
Sam Potts cb318dd6ad Update readme.md 2016-05-27 08:42:11 +01:00
Sam 9ee0d00a35 Merge branch 'master' of https://github.com/Selz/plyr 2016-05-26 22:32:23 +01:00
Sam c0909095e3 Added disableContextMenu option to hide the right click context menu (fixes #248 and #225) 2016-05-26 22:32:18 +01:00
Sam Potts 1e732694eb Merge pull request #246 from zvizvi/master
FIx Plyr to work with RTL systems
2016-05-26 08:03:40 +01:00
Tzvi 30922246e9 FIx Plyr to work with RTL systems 2016-05-26 03:35:08 +03:00
Tzvi edf5a14171 FIx Plyr to work with RTL systems
(less)
2016-05-26 03:33:05 +03:00
Tzvi 1c9f7901bc FIx Plyr to work with RTL systems
(scss)
2016-05-26 03:32:22 +03:00
Sam Potts 1bd6ffc84d Merge pull request #237 from itaditya/master
Update readme.md
2016-05-25 19:13:13 +01:00
Sam Potts 845ed000fc Merge pull request #244 from thijstriemstra/patch-1
reference unminified js script
2016-05-25 19:12:05 +01:00
Thijs Triemstra c7b2347ccd reference unminified js script
Reading the minified js script is impossible so reference the source version instead.
2016-05-25 19:41:12 +02:00
Sam Potts a2f18c4e31 Merge pull request #241 from rabbitears/patch-1
Fix typo
2016-05-24 21:52:26 +01:00
louise louise 37c8948d2c Fix typo 2016-05-24 14:08:15 -04:00
Sam 351e1540c5 Version bump 2016-05-23 22:33:16 +01:00
Sam b3299b4641 Fix for Tooltips overflowing (fixes #230) 2016-05-23 22:29:20 +01:00
Sam be2e7d4c99 Always hide standard controls (Fixes #225) 2016-05-23 21:19:53 +01:00
Sam 7238eab737 Merge branch 'master' of https://github.com/Selz/plyr 2016-05-23 21:11:54 +01:00
Sam 3c2921b994 Restore scroll position when exiting fullscreen (fixes #236) 2016-05-23 21:11:43 +01:00
Sam Potts 179c6fca0b Update readme.md 2016-05-23 19:21:43 +01:00
Sam 69194915d4 Sprite loading improvements, touch controls
- SVG sprite loading automatically for an easier setup
- Touch devices now show controls on touch rather than pausing playback
2016-05-23 19:16:48 +01:00
Aditya Agarwal 341fd59cf6 Update readme.md 2016-05-23 21:34:57 +05:30
Aditya Agarwal a6c8b7e506 Update readme.md
thang was a less common word , keeping it simple by using 'thing' is I think good , also there were SASS support so why not add that too.
2016-05-22 16:36:30 +05:30
Sam Potts 98e4c5acea Decreased sensitivity and inverted scroll on volume slider (scroll up to increase, down to decrease) 2016-05-19 12:06:51 +10:00
Sam Potts 1496b21c83 Version bump 2016-05-19 11:59:52 +10:00
Sam Potts ac0061b83e Bug fix for no buffer 2016-05-19 11:56:24 +10:00
Sam Potts 0b7dc51bd1 Merge branch 'master' into develop
# Conflicts:
#	dist/plyr.css
#	dist/plyr.js
2016-05-19 11:32:14 +10:00
Sam Potts 126f80ed78 Reverted LESS structure for now 2016-05-19 11:31:27 +10:00
Sam Potts e0ef7482c6 Merge pull request #227 from igoradamenko/scroll-on-volume-slider
Add scroll listener on volume slider
2016-05-19 10:43:22 +10:00
i.adamenko 6ffb971226 Add scroll listener on volume slider 2016-05-19 02:11:41 +03:00
Sam Potts 72187a89dd Update readme.md 2016-05-19 08:47:42 +10:00
Sam Potts a461500ab9 Update readme.md 2016-05-17 12:38:52 +10:00
Sam Potts c830af492c Merge pull request #216 from IonicaBizauKitchen/fix
Removed "Node Package Manager" in readme.md
2016-05-17 08:30:25 +10:00
Ionică Bizău 1f6f841fcb Removed "Node Package Manager" in readme.md
`npm` does not stand for "Node Package Manager" because `npm` is not an acronym. It is a bacronymic abbreviation for "npm is not an acronym".

https://www.quora.com/I-keep-hearing-NPM-doesnt-stand-for-Node-Package-Manager-what-does-it-stand-for
2016-05-16 17:59:37 +03:00
Sam Potts 99960c0dc5 Fix for Vimeo fullscreen (fixes #214) 2016-05-16 12:28:28 +10:00
Sam Potts e8a8b08215 Merge branch 'master' of https://github.com/Selz/plyr 2016-05-16 12:15:15 +10:00
Sam Potts a989e87a2d Changed icon prefix default to avoid clashes 2016-05-16 12:15:09 +10:00
Sam 0bceeb4674 Merge branch 'master' of https://github.com/Selz/plyr
# Conflicts:
#	dist/plyr.css
#	src/less/variables.less
2016-05-15 19:54:03 +10:00
Sam 5a433f2fc8 Remove unused styles 2016-05-15 19:52:55 +10:00
Sam Potts c86b824a04 Comment 2016-05-15 18:59:13 +10:00
Sam Potts 21c2276359 Build changes, sprite.svg => plyr.svg 2016-05-15 18:57:21 +10:00
Sam Potts 602944ea4f Fix for bug in v1.6.7 2016-05-14 09:18:04 +10:00
Sam Potts f4a9ffcec7 Merge branch 'master' of https://github.com/Selz/plyr 2016-05-14 08:57:07 +10:00
Sam Potts d2e9c61fd7 iOS bug fixes (fixes #213) 2016-05-14 08:56:59 +10:00
Sam Potts c8cd051a00 Update readme.md 2016-05-14 01:09:20 +10:00
Sam Potts 448c070898 Merge branch 'master' of https://github.com/Selz/plyr
# Conflicts:
#	dist/plyr.css
2016-05-14 00:48:56 +10:00
Sam Potts 7f624ebbb7 Icon tweaks, IE button fix 2016-05-14 00:48:21 +10:00
Sam 4a69ef3874 Merge branch 'master' into develop
# Conflicts:
#	dist/plyr.css
#	src/less/plyr.less
2016-05-11 22:47:27 +10:00
Sam Potts 31c933af38 Merge pull request #209 from robinpoort/master
Add CSS settings
2016-05-11 22:39:54 +10:00
Robin Poort 00137fe46b Compile css file 2016-05-11 13:46:47 +02:00
Robin Poort b23a16826e Adding SCSS settings
- Added setting to be able to disable the border-box if you already defined that in your own css
- Added setting to be able to disable touch-action if you already defined that in your own css
- Added setting to choose not to use !important for sr-only class
2016-05-11 13:46:40 +02:00
Robin Poort 2a822d7b45 Adding LESS settings
- Added setting to be able to disable the border-box if you already defined that in your own css
- Added setting to be able to disable touch-action if you already defined that in your own css
- Added setting to choose not to use !important for sr-only class
2016-05-11 13:46:19 +02:00
Sam Potts cc5b363d66 Version bump 2016-05-11 10:18:34 +10:00
Sam Potts 7e53f01d44 Fix for #206 2016-05-11 10:17:28 +10:00
Sam Potts d351f9f172 Merge branch 'master' into develop
# Conflicts:
#	dist/plyr.css
#	src/less/plyr.less
2016-05-10 10:01:29 +10:00
Sam Potts 4d67d68c6b Built CSS 2016-05-10 09:35:45 +10:00
Sam Potts 3f20462943 Restore simplicity to LESS file structure 2016-05-10 09:35:19 +10:00
Sam Potts ab26525f09 Merge pull request #204 from robinpoort/master
Broken progress bar styling IE10
2016-05-10 09:17:09 +10:00
Robin Poort e431d7594b Fix broken progress bar styling IE10 2016-05-09 17:47:10 +02:00
Robin Poort 8b75bec3d2 Fix broken progress bar styling IE10 2016-05-09 17:40:14 +02:00
Robin Poort 1a5e56ed46 Fix broken progress bar styling IE10 2016-05-09 17:39:36 +02:00
Sam Potts 3470d5f5e6 Merge branch 'master' into develop
# Conflicts:
#	src/less/plyr.less
2016-05-09 19:11:57 +10:00
Sam Potts 9ff933e532 Merge pull request #202 from robinpoort/master
Removing duplicate selectors
2016-05-09 19:09:23 +10:00
Robin Poort 299dfe4afe Removing duplicate selectors 2016-05-06 12:37:18 +02:00
Robin Poort 6921070688 Removing duplicate selectors 2016-05-06 12:36:14 +02:00
Sam Potts bb976ccf4b Merge pull request #200 from shakeelmohamed/feature/youtube-onstatuschange-event
Add event for YouTube onStateChange
2016-05-02 07:31:29 +10:00
Shakeel Mohamed f02cb5635f Add event for YouTube onStateChange 2016-05-01 10:24:25 -07:00
Sam Potts fad3f41ca7 Prep work for theming 2016-05-01 19:27:53 +10:00
Sam Potts 39a0a38d07 Bug fix for undefined progress bar 2016-05-01 15:04:09 +10:00
Sam Potts a316514ca1 Minor bug fixes 2016-05-01 13:39:53 +10:00
Sam Potts 3b69f47590 v1.6.2 2016-05-01 12:52:07 +10:00
Sam Potts 8172e2339d Caption change position on controls hidden 2016-05-01 12:49:04 +10:00
Sam Potts 44bb6c077c Fixed merge 2016-05-01 12:00:37 +10:00
Sam Potts e11a58a841 Bug fixes 2016-05-01 11:30:51 +10:00
Sam c4e3b5a242 Bug fixes 2016-05-01 00:35:30 +10:00
Sam Potts f1b44e6da0 Error handling 2016-04-30 19:52:10 +10:00
Sam Potts aa093b6c42 Merge branch 'pr/196' into develop
# Conflicts:
#	dist/plyr.js
2016-04-30 11:08:42 +10:00
Sam 97870a7cdc Merge branch 'master' of https://github.com/Selz/plyr 2016-04-28 23:35:26 +10:00
Sam 9a6433488f Tooltip bug fixes 2016-04-28 23:35:18 +10:00
Sam Potts 993617f75f Remove badges (broken since GitHub caching changes) 2016-04-28 22:55:47 +10:00
Sam e3baa43b22 Docs 2016-04-28 22:24:54 +10:00
Sam 7a332f29ea Typo 2016-04-28 22:22:32 +10:00
Sam 14c21422e7 URL fix 2016-04-28 22:21:03 +10:00
Sam fe411b1ede Screenshot 2016-04-28 22:17:45 +10:00
Sam 4f02e2d6e7 Docs updates, small tweaks 2016-04-28 22:07:35 +10:00
Sam Potts 4719766843 Merge branch 'develop' of github.com:selz/plyr into develop
# Conflicts:
#	dist/plyr.css
2016-04-28 18:35:21 +10:00
Sam Potts 85600ef685 Max width on range progress indicators 2016-04-28 18:33:58 +10:00
Sam Potts f7edd84125 Bug fixes 2016-04-28 13:57:01 +10:00
Sam Potts 27e3583fbc Merge branch 'develop' of github.com:selz/plyr into develop 2016-04-28 08:36:30 +10:00
Sam Potts 12d1a03bc4 Margins 2016-04-28 08:36:23 +10:00
Sam d3028b9a03 iconUrl option 2016-04-28 00:14:20 +10:00
Sam Potts 2385291886 Volume fixes, iOS bug fixes 2016-04-27 22:47:03 +10:00
Sam Potts cb0b22574a Input progress for volume, fixes for playback progress 2016-04-27 22:22:17 +10:00
Sam Potts 4a1adf92e2 Color 2016-04-27 08:46:36 +10:00
Sam Potts b077bb9f5f Docs tweaks 2016-04-27 00:34:44 +10:00
Sam 68c4b52dfa Mute volume toggle fixes 2016-04-27 00:15:29 +10:00
Sam Potts 81ad9cf6f7 Audio styles, docs tweaks, package updates 2016-04-26 23:06:30 +10:00
Sam 024706f2ff Tab shows controls 2016-04-26 22:24:20 +10:00
Sam 57b3b9e3f6 Audio styles 2016-04-26 21:15:36 +10:00
Sam Potts 6c8d118f83 WIP 2016-04-26 19:14:42 +10:00
Monica Cheung 48399f6364 Merge remote-tracking branch 'org/develop' into develop 2016-04-25 22:43:44 -07:00
Sam e26694c322 Work on Audio UI 2016-04-25 22:48:40 +10:00
Sam Potts d41249bd90 WIP 2016-04-25 21:24:07 +10:00
Sam 833d3ac36f Tweaks 2016-04-25 20:05:01 +10:00
Sam Potts fdaeecbb06 Merge branch 'master' into develop 2016-04-25 19:11:00 +10:00
Sam Potts 70297321c3 Merge branch 'develop' of github.com:selz/plyr into develop
# Conflicts:
#	.gitignore
#	dist/plyr.css
#	dist/plyr.js
#	dist/sprite.svg
#	docs/dist/docs.css
#	docs/dist/docs.js
#	docs/src/less/components/examples.less
#	src/js/plyr.js
#	src/less/plyr.less
#	src/sprite/icon-fast-forward.svg
#	src/sprite/icon-pause.svg
#	src/sprite/icon-play.svg
#	src/sprite/icon-rewind.svg
2016-04-25 19:10:10 +10:00
Sam Potts a02609c3e3 ignore 2016-04-25 19:07:17 +10:00
Sam Potts ffebc7b077 UI tweaks 2016-04-25 19:06:55 +10:00
Monica Cheung 47e0800f02 Add support for soundcloud 2016-04-17 20:57:55 -07:00
Sam Potts c7c7902769 Merge pull request #179 from prince-0203/update-readme-outdated-contents
Update outdated contents in readme.md
2016-04-18 10:25:23 +10:00
Sam Potts 5bb4d70cf7 Merge branch 'master' of github.com:selz/plyr 2016-03-27 18:30:20 +11:00
Sam Potts 67b2f2510b Bug fix for embeds: play not being defined (fixes #185 and #186) 2016-03-27 18:29:58 +11:00
Sam Potts ba9434b6f2 Merge pull request #184 from iamvlado/patch-1
fix type error
2016-03-20 15:26:25 +11:00
vlado 26469452e1 fix type error 2016-03-19 17:29:15 +02:00
Sam Potts 6ae2655923 Version bump 2016-03-14 22:53:11 +11:00
Sam Potts 815100cff8 Autoplay bug fixes 2016-03-14 22:50:34 +11:00
Sam Potts 33771ef8c0 Merge branch 'master' of github.com:selz/plyr 2016-03-14 22:34:44 +11:00
Sam Potts b51a1684dc Fix for embed property not being set 2016-03-14 22:34:28 +11:00
Sam Potts ba9abdc1d3 Update readme.md 2016-03-13 22:45:47 +11:00
Sam Potts 6a8803ec9f Update readme.md 2016-03-13 22:45:27 +11:00
Sam Potts bcb5b981f9 Update readme.md 2016-03-13 22:44:14 +11:00
Sam Potts 5ea9e59d71 SASS fixes, docs changes (fixes #180), 'ready' event 2016-03-13 21:45:57 +11:00
Sam Potts 01b45e7d97 Merge branch 'master' of github.com:selz/plyr 2016-03-13 21:23:00 +11:00
Sam Potts c41e5320c8 SASS fixes, Default font stack added 2016-03-13 21:22:51 +11:00
Sam Potts 426c0f5559 Merge pull request #181 from shakeelmohamed/bugfix/youtube-autoplay
Dynamically set YouTube autoplay from config
2016-03-13 18:29:49 +11:00
Shakeel Mohamed c636f0e69e Dynamically set YouTube autoplay from config
The YouTube autoplay doesn't work without this
change.
2016-03-12 14:05:33 -08:00
prince 58342cfae8 Update outdated contents in readme.md 2016-03-12 14:07:37 +09:00
Sam Potts 193103cb2d Update readme.md 2016-03-07 23:18:56 +11:00
Sam Potts f9c593d2f9 Update readme.md 2016-03-07 23:16:46 +11:00
Sam Potts 87d174ac2c Bug fixes and native APIs exposed for embeds 2016-03-07 22:28:30 +11:00
Sam Potts cd83a2670b Cancel requests on source change (Fixes #174) 2016-02-28 12:50:34 +11:00
Sam Potts 1bbc47c64f CustomEvent polyfill (Fixes #172) 2016-02-28 11:22:11 +11:00
Sam Potts 7a1a5830aa Remove version from source 2016-02-25 19:36:14 +11:00
Sam Potts 1ecbec4044 Volume storage fix (Fixes #171) 2016-02-25 19:35:03 +11:00
Sam Potts ab329b99df Merge branch 'master' of github.com:selz/plyr 2016-02-23 15:11:48 +11:00
Sam Potts 54af43dd75 Docs code 2016-02-23 15:11:35 +11:00
Sam Potts 188a2e72eb Update readme.md 2016-02-21 14:34:49 +11:00
Sam Potts b7a14be2ac Removed npm log 2016-02-21 14:33:34 +11:00
Sam Potts c99f20d5d8 Fix for manual captions 2016-02-21 14:28:01 +11:00
Sam Potts 5b968c97f4 v1.5.12 2016-02-21 14:07:17 +11:00
Sam Potts d538cdcdf6 1.5.12 2016-02-21 14:04:49 +11:00
Sam Potts cad142fe85 Merge branch 'master' of github.com:selz/plyr
# Conflicts:
#	src/js/plyr.js
2016-02-21 14:04:13 +11:00
Sam Potts b18ed03384 WIP on captions bug, manual duration option, reset media object 2016-02-21 13:17:30 +11:00
Sam Potts 6a0b3dc823 Merge pull request #168 from gurupras/fix-captions
Fixes for captions
2016-02-21 11:28:15 +11:00
Guru Prasad Srinivasa 402c45ee2b Updated manual caption split pattern
Previously, Plyr was using a fixed pattern of '\n\n' to split
contents into captions. This does not always work as some VTT files
contain '\r\n'. This commit checks for both.
2016-02-16 20:17:10 -05:00
Guru Prasad Srinivasa 67f19166ac Some WebVTT fixes to allow manual captions
WebVTT allows additional parameters along with the line that
contains the start and end times. These were not being filtered
out while attempting to manually display captions.
2016-02-16 19:52:08 -05:00
Sam Potts 32b7b6b886 Merge pull request #167 from ivanvermeyen/patch-1
Allow player control colors to be overridden #158
2016-02-15 11:50:38 +11:00
Sam Potts 96df8fbc85 Update readme.md 2016-02-14 14:04:30 +11:00
Sam Potts e742527e65 Version bump 2016-02-13 22:23:11 +11:00
Sam Potts f426af6e9e 1.5.11 2016-02-13 22:19:48 +11:00
Sam Potts aea86b6124 Merge branch 'master' of github.com:selz/plyr
# Conflicts:
#	dist/plyr.js
2016-02-13 22:19:31 +11:00
Sam Potts ce51344269 iOS fix (Fixes #166), Edge Progress Tip (Fixes #160), SASS fix (Fixes #158) 2016-02-13 22:18:42 +11:00
Ivan Vermeyen 7d0311fd64 Allow player control colors to be overridden #158 2016-02-12 17:11:07 +01:00
Sam Potts 89e000f669 Update readme.md 2016-02-09 14:53:57 +11:00
Sam Potts f341f1264d Update readme.md 2016-02-09 14:53:20 +11:00
Sam Potts c687b867e7 Update readme.md 2016-02-09 14:52:37 +11:00
Sam Potts 4ee31ba661 Update readme.md 2016-02-09 14:40:26 +11:00
Sam Potts a9126a4c82 Update readme.md 2016-02-05 00:02:24 +11:00
Sam Potts 6b70c4b49a Update readme.md 2016-02-04 14:59:59 +11:00
Sam Potts d8fb876c81 Update readme.md 2016-02-04 14:58:00 +11:00
Sam Potts 73e6ad610f Merge pull request #156 from mortonfox/patch-1
Fix the svgfixer.js link
2016-02-02 09:35:31 +11:00
Morton Fox eee7553d09 Fix the svgfixer.js link 2016-02-01 16:14:22 -05:00
Sam Potts 130b5ebedf Update readme.md 2016-01-29 10:25:39 +11:00
Sam Potts dae5fb9785 Merge pull request #154 from marvinhagemeister/fix_window_usage
Get the proper reference to window on initialization.
2016-01-28 09:19:25 +11:00
Marvin Hagemeister 31a0eb8d14 Get the proper window reference on initialization.
The previous code assumed that `this` points to the browsers
window object, which is not the case when using a module bundler.

So we check for the variable `window` first, before falling back
to `this`.

(taken from jQuery's codebase)
2016-01-27 21:27:58 +01:00
Sam Potts b8b611fbb6 Merge pull request #152 from marvinhagemeister/fix_commonjs
Swap CommonJS and AMD module check so that CommonJS is checked first
2016-01-27 08:45:10 +11:00
Marvin Hagemeister a285fcc4ec Check for module.exports as well for CommonJS Modules 2016-01-26 17:05:57 +01:00
Marvin Hagemeister 4fda65c862 Swap CommonJS and AMD module check so that CommonJS is checked first. Fixes Webpack module bundling 2016-01-26 16:53:15 +01:00
Sam Potts a8cea7b5c9 1.5.10 2016-01-26 22:44:09 +11:00
Sam Potts 01bdcc2b01 Merge pull request #151 from marvinhagemeister/fix_npm
Fix broken npm require/import
2016-01-26 20:44:44 +11:00
Marvin Hagemeister 812d2d33f2 NPM package main must always be the main source file. Fixes broken require/import 2016-01-26 10:21:03 +01:00
Sam Potts a59073c5ca Update readme.md 2016-01-26 10:16:02 +11:00
Sam Potts 7edc3ccd53 NPM updates and published (fixes #146) 2016-01-26 10:08:19 +11:00
Sam Potts b217e23880 Npm changes 2016-01-26 09:59:17 +11:00
Sam Potts 053b6c2e3f Merge pull request #150 from marvinhagemeister/remove_global
Remove global preinstall script
2016-01-26 09:33:49 +11:00
Marvin Hagemeister 0d426ca479 Remove global preinstall script. Gulp does not have to be globally installed to build plyr 2016-01-25 16:35:54 +01:00
Sam Potts a327056789 Seek fixes for touch 2016-01-25 11:25:32 +11:00
Sam Potts b006b73c69 Fix for control tooltips always showing 2016-01-25 11:02:35 +11:00
Sam Potts 3127cea1b2 SASS fix (fixes #149) 2016-01-25 08:36:53 +11:00
Sam Potts a965d8a893 Seek tooltip, bug fixes for SASS, fullscreen and icons 2016-01-24 11:25:31 +11:00
Sam Potts 173e651e3f Comment 2016-01-23 12:24:58 +11:00
Sam Potts fa5cb828c0 Update controls.md 2016-01-21 09:49:00 +11:00
Sam Potts 5978810b7f Update controls.md 2016-01-21 09:48:46 +11:00
Sam Potts 6c251794c8 Merge branch 'master' of github.com:selz/plyr 2016-01-21 09:43:40 +11:00
Sam Potts 76917751e3 Small bug fixes 2016-01-21 09:43:27 +11:00
Sam Potts e75a9b89b0 Merge pull request #147 from christianpv/patch-3
Update bundles.json - Fix path to sass dir.
2016-01-21 09:06:08 +11:00
Christian Pena a0fe61011f Update bundles.json - Fix path to sass dir. 2016-01-20 12:40:04 -05:00
Sam Potts 84a1b03d7d Docs update 2016-01-19 17:15:50 +11:00
Sam Potts b9177e7892 Minor bug fix for clicking video to play/pause after source change 2016-01-19 11:36:30 +11:00
Sam Potts fd12247a62 Fix for video click 2016-01-19 11:34:04 +11:00
Sam Potts 20a71300a5 Controls 2016-01-19 09:54:23 +11:00
Sam Potts 70c5b24678 Added reference 2016-01-19 09:35:10 +11:00
Sam Potts a87e87f93c Version bump 2016-01-19 09:32:04 +11:00
Sam Potts 1b54ff0ad3 Listen for durationchange 2016-01-19 09:30:37 +11:00
Sam Potts 3075e1eda2 Docs 2016-01-19 09:22:39 +11:00
Sam Potts 8d1e014a40 Docs 2016-01-19 00:46:00 +11:00
Sam Potts 0c52fe0c7c Added events line 2016-01-19 00:43:22 +11:00
Sam Potts bb25f8d02a Removed broken links 2016-01-19 00:41:30 +11:00
Sam Potts 42c955c5eb Removed onSetup from docs code 2016-01-19 00:33:22 +11:00
Sam Potts 268223ac52 Version bump 2016-01-19 00:31:28 +11:00
Sam Potts b81b8c1d31 Event listeners 2016-01-19 00:30:25 +11:00
Sam Potts 5b2a016241 Merge branch 'master' of github.com:selz/plyr 2016-01-18 19:48:20 +11:00
Sam Potts a665121b52 Types enum 2016-01-18 19:48:14 +11:00
Sam Potts 02d312f2d2 Style tweaks 2016-01-18 18:27:01 +11:00
Sam Potts c23c150fe9 Merge branch 'master' of https://github.com/Selz/plyr 2016-01-18 17:35:32 +11:00
Sam Potts 2e5bdb338e Tidying up, Vimeo fix 2016-01-18 17:35:18 +11:00
Sam Potts c51ef05067 Update readme.md 2016-01-18 11:24:31 +11:00
Sam dbe152a4c1 LESS/SASS variable name spacing and clean up 2016-01-17 19:22:43 +11:00
Sam Potts 3f42e53d95 Don't add video hash 2016-01-17 10:48:26 +11:00
Sam Potts 54b0dc5273 Docs tweak 2016-01-17 10:41:13 +11:00
Sam Potts d6b67c3388 Docs pushstate for tabs 2016-01-17 10:39:05 +11:00
Sam a277224ef4 Reverted docs.js changes 2016-01-17 01:29:34 +11:00
Sam f87a10ae0b Fix for event listeners being duplicated on source change 2016-01-17 01:25:11 +11:00
Sam Potts f18fb3f26d Update readme.md 2016-01-16 13:51:18 +11:00
Sam Potts 71359a3ff2 Merge branch 'master' of github.com:selz/plyr
# Conflicts:
#	readme.md
2016-01-16 13:48:26 +11:00
Sam Potts 6edc6ac680 Image 2016-01-16 13:48:11 +11:00
Sam Potts bf2b6c3c96 Update readme.md 2016-01-16 13:46:09 +11:00
Sam Potts b904e640f7 Docs update 2016-01-16 13:45:41 +11:00
176 changed files with 42992 additions and 6628 deletions
+10
View File
@@ -0,0 +1,10 @@
# See editorconfig.org
root = true
[*]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true
+41
View File
@@ -0,0 +1,41 @@
{
"parser": "babel-eslint",
"extends": ["airbnb-base", "prettier"],
"env": {
"browser": true,
"es6": true
},
"globals": { "Plyr": false, "jQuery": false },
"rules": {
"no-const-assign": 1,
"no-shadow": 0,
"no-this-before-super": 1,
"no-undef": 1,
"no-unreachable": 1,
"no-unused-vars": 1,
"constructor-super": 1,
"valid-typeof": 1,
"indent": [2, 4, { "SwitchCase": 1 }],
"quotes": [2, "single", "avoid-escape"],
"semi": [2, "always"],
"eqeqeq": [2, "always"],
"one-var": [2, "never"],
"comma-dangle": [2, "always-multiline"],
"no-restricted-globals": [
"error",
{
"name": "event",
"message": "Use local parameter instead."
},
{
"name": "error",
"message": "Use local parameter instead."
}
],
"array-bracket-newline": [2, { "minItems": 2 }],
"array-element-newline": [2, { "minItems": 2 }]
},
"parserOptions": {
"sourceType": "module"
}
}
+17
View File
@@ -0,0 +1,17 @@
<!---
Please use this issue template as it makes replicating and fixing the issue easier!
--->
### Expected behaviour
### Actual behaviour
### Environment
- Browser:
- Version:
- Operating System:
- Version:
### Steps to reproduce
-
+8
View File
@@ -0,0 +1,8 @@
### Link to related issue (if applicable)
### Sumary of proposed changes
### Task list
- [ ] Tested on [supported browsers](https://github.com/sampotts/plyr#browser-support)
- [ ] Gulp build completed
+8 -4
View File
@@ -1,7 +1,11 @@
node_modules
*.sublime-project
*.sublime-workspace
.DS_Store
aws.json
docs/index.dev.html
*.mp4
*.mp4
!dist/blank.mp4
index-*.html
npm-debug.log
*.webm
/package-lock.json
.idea/
View File
-55
View File
@@ -1,55 +0,0 @@
{
// Settings
"passfail" : false, // Stop on first error.
"maxerr" : 100, // Maximum error before stopping.
// Predefined globals whom JSHint will ignore.
"browser" : true, // Standard browser globals e.g. `window`, `document`.
"node" : false,
"rhino" : false,
"couch" : false,
"wsh" : true, // Windows Scripting Host.
"jquery" : false,
// Development.
"debug" : false, // Allow debugger statements e.g. browser breakpoints.
"devel" : true, // Allow developments statements e.g. `console.log();`.
// ECMAScript 5.
"strict" : false, // Require `use strict` pragma in every file.
"globalstrict" : false, // Allow global "use strict" (also enables 'strict').
// The Good Parts.
"asi" : true, // Tolerate Automatic Semicolon Insertion (no semicolons).
"laxbreak" : true, // Tolerate unsafe line breaks e.g. `return [\n] x` without semicolons.
"bitwise" : false, // Prohibit bitwise operators (&, |, ^, etc.).
"boss" : false, // Tolerate assignments inside if, for & while. Usually conditions & loops are for comparison, not assignments.
"curly" : true, // Require {} for every new block or scope.
"eqeqeq" : false, // Require triple equals i.e. `===`.
"eqnull" : false, // Tolerate use of `== null`.
"evil" : false, // Tolerate use of `eval`.
"expr" : false, // Tolerate `ExpressionStatement` as Programs.
"forin" : false, // Tolerate `for in` loops without `hasOwnPrototype`.
"immed" : true, // Require immediate invocations to be wrapped in parens e.g. `( function(){}() );`
"latedef" : false, // Prohipit variable use before definition.
"loopfunc" : true, // Allow functions to be defined within loops.
"noarg" : true, // Prohibit use of `arguments.caller` and `arguments.callee`.
"regexp" : true, // Prohibit `.` and `[^...]` in regular expressions.
"regexdash" : false, // Tolerate unescaped last dash i.e. `[-...]`.
"scripturl" : true, // Tolerate script-targeted URLs.
"shadow" : false, // Allows re-define variables later in code e.g. `var x=1; x=2;`.
"supernew" : false, // Tolerate `new function () { ... };` and `new Object;`.
"undef" : true, // Require all non-global variables be declared before they are used.
// Personal styling preferences.
"newcap" : true, // Require capitalization of all constructor functions e.g. `new F()`.
"noempty" : true, // Prohibit use of empty blocks.
"nonew" : true, // Prohibit use of constructors for side-effects.
"nomen" : true, // Prohibit use of initial or trailing underbars in names.
"onevar" : false, // Allow only one `var` statement per function.
"plusplus" : false, // Prohibit use of `++` & `--`.
"sub" : false, // Tolerate all forms of subscript notation besides dot notation e.g. `dict['key']` instead of `dict.key`.
"trailing" : true, // Prohibit trailing whitespaces.
"white" : true, // Check against strict whitespace and indentation rules.
"indent" : 4 // Specify indentation spacing
}
+4
View File
@@ -0,0 +1,4 @@
demo
.github
.vscode
*.code-workspace
+7
View File
@@ -0,0 +1,7 @@
{
"useTabs": false,
"tabWidth": 4,
"printWidth": 160,
"singleQuote": true,
"trailingComma": "all"
}
+24
View File
@@ -0,0 +1,24 @@
{
"plugins": ["stylelint-selector-bem-pattern", "stylelint-scss"],
"extends": ["stylelint-config-recommended", "stylelint-config-sass-guidelines", "stylelint-config-prettier"],
"rules": {
"selector-class-pattern": null,
"selector-no-qualifying-type": [
true,
{
"ignore": ["attribute", "class"]
}
],
"indentation": 4,
"string-quotes": "single",
"max-nesting-depth": 2,
"plugin/selector-bem-pattern": {
"preset": "bem",
"componentName": "(([a-z0-9]+(?!-$)-?)+)",
"componentSelectors": {
"initial": "\\.{componentName}(((__|--)(([a-z0-9\\[\\]'=]+(?!-$)-?)+))+)?$"
},
"ignoreSelectors": [".*\\.has-.*", ".*\\.is-.*"]
}
}
}
+12
View File
@@ -0,0 +1,12 @@
{
// See http://go.microsoft.com/fwlink/?LinkId=827846
// for the documentation about the extensions.json format
"recommendations": [
// Extension identifier format: ${publisher}.${name}. Example: vscode.csharp
"dbaeumer.vscode-eslint",
"wix.vscode-import-cost",
"esbenp.prettier-vscode",
"shinnn.stylelint",
"wayou.vscode-todo-highlight"
]
}
+15
View File
@@ -0,0 +1,15 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Launch Chrome against localhost",
"url": "http://localhost/dev/plyr/demo",
"webRoot": "${workspaceFolder}"
}
]
}
+1
View File
@@ -0,0 +1 @@
{}
+6 -6
View File
@@ -6,18 +6,18 @@
"Audio",
"Video",
"HTML5 Audio",
"HTml5 Video"
"HTML5 Video"
],
"authors": [
"Sam Potts <me@sampotts.me>"
"Sam Potts <sam@potts.es>"
],
"dependencies": {},
"main": [
"dist/plyr.css",
"dist/plyr.js",
"dist/sprite.svg",
"dist/plyr.svg",
"src/less/plyr.less",
"src/sass/plyr.scss",
"src/scss/plyr.scss",
"src/js/plyr.js"
],
"ignore": [
@@ -27,7 +27,7 @@
],
"repository": {
"type": "git",
"url": "git://github.com/selz/plyr.git"
"url": "git://github.com/sampotts/plyr.git"
},
"license": "MIT"
}
}
+8 -12
View File
@@ -1,24 +1,20 @@
{
"plyr": {
"less": {
"plyr.css": ["src/less/plyr.less"]
},
"sass": {
"plyr.css": ["src/less/plyr.sass"]
"plyr.css": "src/sass/plyr.scss"
},
"js": {
"plyr.js": ["src/js/plyr.js"]
"plyr.js": "src/js/plyr.js",
"plyr.polyfilled.js": "src/js/plyr.polyfilled.js"
}
},
"docs": {
"less": {
"docs.css": ["docs/src/less/docs.less"]
"demo": {
"sass": {
"demo.css": "demo/src/sass/bundles/demo.scss",
"error.css": "demo/src/sass/bundles/error.csss"
},
"js": {
"docs.js": [
"docs/src/js/lib/classlist.js",
"docs/src/js/docs.js"
]
"demo.js": "demo/src/js/demo.js"
}
}
}
+679 -103
View File
@@ -1,225 +1,801 @@
# Changelog
## v3.0.11
* Muted and autoplay fixes
* Small bug fixes from Sentry logs
## v3.0.10
* Docs fix
* Package upgrades
## v3.0.9
* Demo fix
* Fix Vimeo regression
## v3.0.8
* 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
## v3.0.6
* Improved the logic for the custom handlers preventing default handlers
## v3.0.5
* 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
## 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)
## v3.0.2
* 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
# v3.0.0
This is a massive release. A _mostly_ complete rewrite in ES6. What started out as a few changes quickly snowballed. There's many breaking changes so be careful upgrading.
### 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 `<div>`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 `<progress>` behind the `<input type="range">` 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.
### Breaking changes
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`
### Polyfilling
Because we're using the fancy new ES6 syntax, you will need to polyfill for vintage browsers if you want to use Plyr and still support them. Luckily there's a decent service for this that makes it painless, [polyfill.io](https://polyfill.io). Alternatively, you can use the prebuilt polyfilled build but bear in mind this is 20kb larger. I'd suggest working our your own polyfill strategy.
## v2.0.18
* 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)
## v2.0.16
* Fullscreen bug fix (fixes #664)
## v2.0.15
* Demo fix
## v2.0.14
* CDN URL updates. Sorry, still working on V3 as hard as I can...
## v2.0.13
* 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)
## v2.0.11
* 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)
## v2.0.9
* 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
## v2.0.7
* 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
## v2.0.5
* Fix for Vimeo in IE9 & IE10
* Fix for HTML5 elements not firing `ready` event
## v2.0.4
* Fix for Firefox full screen (fixes #343)
## v2.0.3
* Set 'global' keyboard shortcut option to false as default, added `<textarea>` to editable elements to be ignored
## v2.0.2
* Added 'global' keyboard shortcut option
## v2.0.1
* Version bump for NPM (sorry for folks who upgraded to the now deleted v1.9.0 through NPM)
# v2.0.0
This version contains several potential **_breaking changes_**:
* `setup()` has been reverted to pre v1.8.0 behaviour; meaning it will return the _instance_ rather than the _element_. This is because the reference to the instance is no longer added to the original element (see below).
* The reference to the `plyr` instance is now added to the media element rather than original container. This is because if a container with multiple children was passed to `setup()` the references to all instances would have been added to the container, creating issues. I would recommend using the return value from `setup()` or the new `get()` method to access the instance.
* Players will always be wrapped in their own div now - this makes `setup()` and `destroy()` cleaner. This _may_ break any custom styling based on DOM position.
* Players no longer seek to 0 on 'ended' - this is to fix a bug with Microsoft Edge as it triggers 'ended' on media change for whatever reason. They'll never change ;-)
And some other changes and bug fixes:
* New `get()` method on the global plyr object to get all instances inside a container
* New API methods: - `getOriginal()` to get the original, _unmodified_ element plyr was setup on (`<video>`, `<audio>` or empty `<div>` for YouTube and Vimeo) - `getContainer()` to get the players outer wrapper element - `getMedia()` to get the players media element (`<video>`, `<audio>` or empty `<div>` for YouTube and Vimeo) - `getEmbed()` to access the YouTube or Vimeo API directly - `getType()` to get the type of the player - `isReady()` to determine if an instance has completed setup and necessary APIs are loaded (for YouTube / Vimeo) - `on()` to provide an easy way to listen to events - `stop()` to, you guessed it, stop the player
* `destroy()` now works correctly for YouTube and Vimeo (fixes #272)
* New `destroyed` event when `destroy()` has completed (original element is passed as event.target)
* Default volume is now 10 (max) rather than 5
* Sprite is only loaded once (fixes #259)
* Fixes for Vimeo post message bugs on source change or destroy (fixes #318)
* Save caption state in storage (fixes #311)
* Added keyboard shortcuts to the current focused player (with `keyboardShortcuts` boolean option to disable) (fixes #309)
* Fix for captions bug (fixes #332)
* Change to AMD (fixes #298)
## v1.8.12
* Vimeo keyboard focus fix (Fixes #317)
* Fix for Vimeo on basic support devices
## v1.8.11
* Fix for keyboard navigation on Vimeo (Fixes #317)
* Fix for bug introduced in v1.8.9 related to additional controls
* Vimeo API upgrade
* Fix for YouTube bug introduced in v1.8.9
* Added support for passing array to .setup() (Fixes #319)
## v1.8.10
* Fix for seek issues introduced in v1.8.9
## v1.8.9
* Fix for fullscreen not being defined (Fixes #295)
* Fix for multiline captions (Fixes #314)
* Clean up of type checks and fix for `restart()` (Fixes #315)
* Fix for `MEDIA_ERR_SRC_NOT_SUPPORTED` when calling `.source()` API method
## v1.8.8
* Added getCurrentTime API method (fixes #292)
* Fix for !hideControls on touch devices (fixes #303)
## v1.8.7
* Line height fix
## v1.8.6
* Reverted font size change
## v1.8.5
* Fixed overflow issues (fixes #286)
## v1.8.4
* Fix for large play button on small videos
## v1.8.3
* Disabled iPad support for YouTube and Vimeo due to iOS limitations with iFrame playback
* Fixed IE11 icon loading (fixes #269)
* Updated screenshot (fixes #281)
* Added WordPress plugin (fixes #239)
* Added Neos plugin
* Added HLS, Shaka and dash.js examples (see #235 for more)
* Improvements for controls hiding and showing on touch devices
## v1.8.2
* Fixed event bubbling
## v1.8.1
* Fixed inaccurate log message
# v1.8.0
* **_(Important)_** `setup()` now returns the element Plyr was setup on rather than the `plyr` object. This means `var player = plyr.setup()[0];` would now be `var player = plyr.setup()[0].plyr;`. This improves support for React and other virtual dom frameworks as mentioned in #254
* Fixed using a relative URL for `iconUrl` in IE (fixes #269)
# v1.7.0
* SASS cleanup (fixes #265)
* Docs tidy up to help quick start (fixes #253)
* Fix for issues with data attribute options passing (fixes #257)
* **_(Important)_** Removed the requirement for a wrapper div to setup Plyr and removed the dependency on the `plyr` classname as a JS hook. By default it will now look for `<video>`, `<audio>` and `[data-type]` elements. If you are just calling `setup()` with a `<div class="plyr">` you may want to give it a good test after upgrading. You can probably remove the wrapper div. The reason behind this is to make setup easier for newcomers and prevent the styling being used on unsupported players (because the plyr classname was used as a CSS and JS hook - which isn't ideal)
* Renamed the 'docs' folder to `demo` to avoid confusion - the readme is the docs after all
## v1.6.20
* Fix for multiple sprites being requested (fixes #259)
## v1.6.19
* Fix for scroll direction issues on volume control (fixes #258)
## v1.6.18
* Reduced rounding of seek value from 1 decimal point to 4 (fixes #242)
## v1.6.17
* Added `disableContextMenu` option to hide the right click context menu (fixes #248 and #225)
## v1.6.16
* Always hide standard controls (fixes #225)
* Fix for Tooltips overflowing (fixes #230)
## v1.6.15
* Restore scroll position when exiting full screen (fixes #236)
## v1.6.14
* SVG sprite loading automatically for an easier setup
* Touch devices now show controls on touch rather than pausing playback
## v1.6.13
* Decreased sensitivity and inverted scroll on volume slider (scroll up to increase, down to decrease)
## v1.6.12
* Fix for undefined buffer error
* Add scroll listener on volume slider (PR #227 bty @igoradamenko)
## v1.6.11
* Fix for Vimeo fullscreen (fixes #214)
## v1.6.10
* Changed default icon prefix from 'icon' to 'plyr' to avoid clashes
## v1.6.9
* Added 'latest' CDN option
* Renamed `sprite.svg` to `plyr.svg` to be inline with the other package files
## v1.6.8
* Fix for bug introduced in v1.6.7
## v1.6.7
* Fixes for using `source` API method on iOS
## v1.6.6
* Icons cleaned up
* IE11 button fix for tooltips (fixes #210)
## v1.6.5
* IE UI bug fixes
## v1.6.4
* Bug fix for undefined progress bar
## v1.6.3
* Seek back to 0 for all media on ended
* Check for HTML5 video on ended reload
* Update to docs for `showPosterOnEnd` option
## v1.6.2
* Fix for tooltip displaying when duration is not set (fixes #177)
* `showPosterOnEnd` option to show poster when HTML5 video ended (fixes #59)
* Error handler for YouTube (fixes #189)
* Initial SoundCloud support (fixes #194)
* Other minor bug fixes
## v1.6.1
* Tooltip changes for accessibility
## v1.6.0
* New, cleaner, UI: - Controls are now overlaid, maintaining the video's ratio and making sizing easier - A large play button can now be overlaid over videos - Default number of control buttons reduced - New play, pause, rewind and fast forward icons - Flexbox all the things!
* Tidied up the LESS (and SCSS) as part of the above, variables and mixins in seprate files amking customization and upgrades easier
* Toggle mute bug fix; if a player was muted previously and the user refreshed, unmuting would have meant volume was still zero (effectively muted), now the config default value is used. Not ideal but good for now
* New `iconUrl` option allowing specifying a same origin SVG sprite location. Loading this way means you don't need the AJAX sprite loading JavaScript
* `click` option renamed to `clickToPlay` to make it a bit more self explanatory. Unfortunately cross origin SVG sprites is not supported in any browser yet :-(
* `hideControls` is now a global option, rather than being exclusive to fullscreen. Controls are now hidden after 2 seconds of no mouse movement. Controls are always shown when media is paused or stopped. This is defaulted to true.
* `sass` folder in `src` renamed from to `scss`
## v1.5.21
* Bug fix for embeds: `play` not being defined (fixes #185 and #186)
## v1.5.20
* Bug fix for autoplay option
## v1.5.19
* Fix for accessing `embed` property after `ready` event fired
## v1.5.18
* Added 'ready' event for initial setup complete or source change occurs
* Fixed SASS stylesheet references to transparentize
* Added default font stack to controls
* Docs fixes inc controls HTML (fixes #180)
## v1.5.17
* Expose YouTube and Vimeo API (docs update required) (fixes #176)
* Auto set title based on YouTube getVideoData() title property
* Bug fix for Vimeo API change (Uncaught TypeError: Cannot read property 'value' of undefined) due to a change their end
## v1.5.16
* Cancel requests on source change (fixes #174)
## v1.5.15
* Fix for CustomEvent polyfill and related bug (see #172)
## v1.5.14
* Volume storage fix (fixes #171)
## v1.5.13
* Fix for manual caption rendering
## v1.5.12
* Added a duration option to pass the duration of the file
* Added the ability to set options per element by setting a data-plyr attribute on the target elements (this might be useful for the duration option for example)
* Fixes for Chrome and Safari caption rendering, they now use the default texttrack and cuechange events
* Firefox bug fix for event not defined
## v1.5.11
* iOS embed bug fixes (fixes #166)
* Hide IE/Edge <input type='range'> tooltip (since we have a styled one) (fixes #160)
* SASS bug fix for default values (fixes #158)
## v1.5.9 + v1.5.10
* NPM bug fixes
## v1.5.8
* Fix for touch device seek tooltip
* Seek improvements
## v1.5.7
* Fix for control tooltips always showing
## v1.5.6
* Seek tooltip (option for tooltips changed, please check docs)
* SASS compile error fixes (fixes #148)
* Fullscreen fixes for controls not always hiding/showing (fixes #149)
* Screen reader icon fixes (title was being read twice due to the tooltip/hidden label)
## v1.5.5
* Fixed controls.md example
* Bug fix for docs error page
* Bug fix for controls tooltips
## v1.5.4
* Minor bug fix for clicking video to play/pause after source change
## v1.5.3
* Minor bug fix for occasional display of 0:00 as the media duration
## v1.5.2
* `handlers` option renamed to `listeners`
* Added event listeners for all types to the plyr container (playback, fullscreen, captions etc - see docs)
* Removed onSetup config option (use the 'setup' event instead, plyr element is event.plyr)
* Style bug fixes
* Vimeo seek bug fix (requires whole seconds when seeking)
* Fix for fullscreen player (using class hook, not browser fullscreen)
## v1.5.1
* Fix for event listeners being duplicated on source change
# v1.5.0
- Vimeo support (fixes #8)
- New options for initialization (you can now pass a selector, HTMLElement or NodeList) (fixes #118)
- Switched to BEM methodology (you will need to change CSS and probably HTML)
- Decoupled CSS and JS hooks (fixes #129)
- Custom controls container (fixes #98)
- Fix for private/incognito mode local storage bug (fixes #131)
- UMD module setup (fixes #121)
- Specify iframe title for Vimeo and YouTube (fixes #124)
- Better handling of mission controls (fixes #132)
- Retain classname on source change (fixes #120)
- Increased thumb size on seek (partially fixes #130)
- Passing no argument to `source` api method, now returns current source (by @gurupras)
- Ability to add custom handlers to controls prior to Plyr bindings (by @gurupras)
- Keyboard navigation improvements (focus on seek, focus trap in fullscreen) (fixes #135)
* Vimeo support (fixes #8)
* New options for initialization (you can now pass a selector, HTMLElement or NodeList) (fixes #118)
* Switched to BEM methodology (you will need to change CSS and probably HTML)
* Decoupled CSS and JS hooks (fixes #129)
* Custom controls container (fixes #98)
* Fix for private/incognito mode local storage bug (fixes #131)
* UMD module setup (fixes #121)
* Specify iframe title for Vimeo and YouTube (fixes #124)
* Better handling of mission controls (fixes #132)
* Retain classname on source change (fixes #120)
* Increased thumb size on seek (partially fixes #130)
* Passing no argument to `source` api method, now returns current source (by @gurupras)
* Ability to add custom handlers to controls prior to Plyr bindings (by @gurupras)
* Keyboard navigation improvements (focus on seek, focus trap in fullscreen) (fixes #135)
## v1.3.5
- Fixed bug with API use on basic supported browsers
* Fixed bug with API use on basic supported browsers
## v1.3.4
- Code cleanup by @calvintam236
* Code cleanup by @calvintam236
## v1.3.3
- Removed captions being read by screen readers
* Removed captions being read by screen readers
## v1.3.2
- Voiceover fix for captions
* Voiceover fix for captions
## v1.3.1
- ARIA improvements for captions being read
* ARIA improvements for captions being read
## v1.3.0
- Internationalization support (i18n) using default controls (required markup changes to controls)
- ARIA enhancements for controls (required markup changes to controls)
- Captions legibility improvements
- YouTube bug fixes
* Internationalization support (i18n) using default controls (required markup changes to controls)
* ARIA enhancements for controls (required markup changes to controls)
* Captions legibility improvements
* YouTube bug fixes
## v1.2.6
- SASS updates and fixes (cheers @ChristianPV)
* SASS updates and fixes (cheers @ChristianPV)
## v1.2.5
- Fix for YouTube quality (let them decide quality)
* Fix for YouTube quality (let them decide quality)
## v1.2.4
- Fix for omitted kind attribute on <track> (fixes #88)
* Fix for omitted kind attribute on <track> (fixes #88)
## v1.2.3
- Fix for YouTube on iPhone or unsupported browsers (fallback to YouTube native)
- Docs tidy up
- Fullscreen for Safari fix (Fixes #96)
* Fix for YouTube on iPhone or unsupported browsers (fallback to YouTube native)
* Docs tidy up
* Fullscreen for Safari fix (fixes #96)
## v1.2.2
- Fix for :focus keyboard vs mouse (Fixes #61)
- Fix for caption positioning in full screen (Fixes #92)
* Fix for :focus keyboard vs mouse (fixes #61)
* Fix for caption positioning in full screen (fixes #92)
## v1.2.1
- Tooltip bug fix
* Tooltip bug fix
# v1.2.0
- Added YouTube support
* Added YouTube support
## v1.1.13
- Added icon prefix option for when using default controls
* Added icon prefix option for when using default controls
## v1.1.13
- Logic tweaks for hiding controls in fullscreen
* Logic tweaks for hiding controls in fullscreen
## v1.1.12
- Bug fix for Chrome Canary
* Bug fix for Chrome Canary
## v1.1.11
- Bug fix
* Bug fix
## v1.1.10
- Bug fix
* Bug fix
## v1.1.9
- Bug fix for 1.1.8
* Bug fix for 1.1.8
## v1.1.8
- setVolume API method improvements (Fixes #83)
* setVolume API method improvements (fixes #83)
## v1.1.7
- Restore classname on destroy()
* Restore classname on destroy()
## v1.1.6
- New API methods (fixes #77), Fix for non strict mode (fixes #78)
* New API methods (fixes #77), Fix for non strict mode (fixes #78)
## v1.1.5
- Fix for incorrect `isFullscreen()` return value in Mozilla (Fixes #38)
* Fix for incorrect `isFullscreen()` return value in Mozilla (fixes #38)
## v1.1.4
- Minor bug fixes
* Minor bug fixes
## v1.1.3
- Fixes for random id used in controls with multiple instances and one call to setup
- Audio player UI improvements
* Fixes for random id used in controls with multiple instances and one call to setup
* Audio player UI improvements
## v1.1.2
- Added an onSetup callback option
- Added fullscreen API methods `toggleFullscreen()` (must be user iniated), and `isFullscreen()`
* Added an onSetup callback option
* Added fullscreen API methods `toggleFullscreen()` (must be user iniated), and `isFullscreen()`
## v1.1.1
- Fix for unsupported browser handling
- Fix for config.controls having no effect
* Fix for unsupported browser handling
* Fix for config.controls having no effect
## v1.1.0
- Added config option to set which controls are shown (if using the default controls html) and better handling of missing controls
* Added config option to set which controls are shown (if using the default controls html) and better handling of missing controls
## v1.0.31
- Display duration on `metadataloaded`
* Display duration on `metadataloaded`
## v1.0.30
- Fixed bug with media longer than 60 minutes (Fixes #69)
* Fixed bug with media longer than 60 minutes (fixes #69)
## v1.0.29
- Added option to hide controls on fullscreen (default `true`) while palying, after 1s. Pause, mouse hover on progress, or focus on a child control re-shows the controls. On touch a tap of the video (which plays/pauses the video by default) is required. (Fixes #47)
- Fixed a bug with caption toggle in 1.0.28
* Added option to hide controls on fullscreen (default `true`) while palying, after 1s. Pause, mouse hover on progress, or focus on a child control re-shows the controls. On touch a tap of the video (which plays/pauses the video by default) is required. (fixes #47)
* Fixed a bug with caption toggle in 1.0.28
## v1.0.28
- Added API support for browsers that don't have full plyr support (pretty much <=IE9 and `<video>` on iPhone/iPod)
* Added API support for browsers that don't have full plyr support (pretty much <=IE9 and `<video>` on iPhone/iPod)
## v1.0.27
- Keyboard accessibility improvements (Fixes #66)
* Keyboard accessibility improvements (fixes #66)
## v1.0.26
- Fixes for SASS (cheers @brunowego)
- Indentation reset to 4 spaces
* Fixes for SASS (cheers @brunowego)
* Indentation reset to 4 spaces
## v1.0.25
- Fixes for iOS volume controls (hidden)
- Classnames for left/right controls changed
* Fixes for iOS volume controls (hidden)
* Classnames for left/right controls changed
## v1.0.24
- Added tooltip option to display labels as tooltips (Fixes #50)
* Added tooltip option to display labels as tooltips (fixes #50)
## v1.0.23
- Handling loading states in the UI (Fixes #36)
* Handling loading states in the UI (fixes #36)
## v1.0.22
- Added support() API method for checking mimetype support
- Added source() API method for setting media source(s) (Fixes #44)
- Added poster() API method for setting poster source
- Refactored captions logic for manual captions
* Added support() API method for checking mimetype support
* Added source() API method for setting media source(s) (fixes #44)
* Added poster() API method for setting poster source
* Refactored captions logic for manual captions
## v1.0.21
- Added an <input type="range"> for seeking to improve experience (and support dragging) (Fixes #40, #42)
- Icons for restart and captions improved (and some IDs changed) (Fixes #49)
* Added an <input type="range"> for seeking to improve experience (and support dragging) (fixes #40, #42)
* Icons for restart and captions improved (and some IDs changed) (fixes #49)
## v1.0.20
- Default controls included (Fixes #45)
- Volume changes on `input` as well as `change` (Fixes #43)
- Fix for undefined Play text
- License changed to MIT
* Default controls included (Fixes #45)
* Volume changes on `input` as well as `change` (fixes #43)
* Fix for undefined Play text
* License changed to MIT
## v1.0.19
- Fixed firefox fullscreen issue (Fixes #38)
* Fixed firefox fullscreen issue (fixes #38)
## v1.0.18
- Added CDN references
* Added CDN references
## v1.0.17
- SASS support added (thanks to @brunowego)
- Docs completely separated to avoid any confusion
- New gulp tasks (will add more documentation for this)
* SASS support added (thanks to @brunowego)
* Docs completely separated to avoid any confusion
* New gulp tasks (will add more documentation for this)
## v1.0.16
- Aria label is now dynamic
* Aria label is now dynamic
## v1.0.15
- Fix for seek time display in controls
- More documentation for controls html
* Fix for seek time display in controls
* More documentation for controls html
## v1.0.14
- Minor change for bootstrap compatibility
* Minor change for bootstrap compatibility
## v1.0.13
- Minor tweaks
* Minor tweaks
## v1.0.12
- Handle native events (Issue #34)
* Handle native events (issue #34)
## v1.0.11
- Bug fixes for fullscreen mode
* Bug fixes for fullscreen mode
## v1.0.10
- Bower includes src files now
- Folder re-arrangement
* Bower includes src files now
* Folder re-arrangement
## v1.0.9
- Added buffer progress bar
- Fixed Safari 8 caption track (it needs to be removed from the DOM like in Safari 7)
- Added validation (it works or it doesn't basically) of the `html` option passed
* Added buffer progress bar
* Fixed Safari 8 caption track (it needs to be removed from the DOM like in Safari 7)
* Added validation (it works or it doesn't basically) of the `html` option passed
## v1.0.8
- Bug fix
* Bug fix
## v1.0.7
- Storing user selected volume in local storage
* Storing user selected volume in local storage
## v1.0.6
- Fullscreen fallback for older browsers to use "full window"
* Fullscreen fallback for older browsers to use "full window"
## v1.0.5
- More minor bug fixes and improvements
* More minor bug fixes and improvements
## v1.0.4
- Fixed caption legibility issues
* Fixed caption legibility issues
## v1.0.3
- Minor bug fixes
* Minor bug fixes
## v1.0.2
- Added OGG to <audio> example for Firefox
- Fixed IE11 fullscreen issues
* Added OGG to <audio> example for Firefox
* Fixed IE11 fullscreen issues
## v1.0.1
- Bug fixes for IE (as per usual)
- Added CSS hooks for media type
- Return instances of Plyr to the element
* Bug fixes for IE (as per usual)
* Added CSS hooks for media type
* Return instances of Plyr to the element
## v1.0.0
- Initial release
* Initial release
+125 -84
View File
@@ -1,28 +1,72 @@
# Controls
This is the markup that is rendered for the Plyr controls. You can use the default controls or provide a customized version of markup based on your needs.
This is the markup that is rendered for the Plyr controls. You can use the default controls or provide a customized version of markup based on your needs. You can pass the following to the `controls` option:
## Internationalization using default controls
* `Array` of options (this builds the default controls based on your choices)
* `String` containing the desired HTML
* `Function` that will be executed and should return one of the above
## Using default controls
If you want to use the standard controls as they are, you don't need to pass any options. If you want to turn on off controls, here's the full list:
```javascript
controls: [
'play-large', // The large play button in the center
'restart', // Restart playback
'rewind', // Rewind by the seek time (default 10 seconds)
'play', // Play/pause playback
'fast-forward', // Fast forward by the seek time (default 10 seconds)
'progress', // The progress bar and scrubber for playback and buffering
'current-time', // The current time of playback
'duration', // The full duration of the media
'mute', // Toggle mute
'volume', // Volume control
'captions', // Toggle captions
'settings', // Settings menu
'pip', // Picture-in-picture (currently Safari only)
'airplay', // Airplay (currently Safari only)
'fullscreen', // Toggle fullscreen
];
```
### Internationalization using default controls
You can provide an `i18n` object as one of your options when initialising the plugin which we be used when rendering the controls.
### Example
#### Example
```javascript
i18n: {
restart: "Restart",
rewind: "Rewind {seektime} secs",
play: "Play",
pause: "Pause",
forward: "Forward {seektime} secs",
played: "played",
buffered: "buffered",
currentTime: "Current time",
duration: "Duration",
volume: "Volume",
toggleMute: "Toggle Mute",
toggleCaptions: "Toggle Captions",
toggleFullscreen: "Toggle Fullscreen"
restart: 'Restart',
rewind: 'Rewind {seektime} secs',
play: 'Play',
pause: 'Pause',
fastForward: 'Forward {seektime} secs',
seek: 'Seek',
played: 'Played',
buffered: 'Buffered',
currentTime: 'Current time',
duration: 'Duration',
volume: 'Volume',
mute: 'Mute',
unmute: 'Unmute',
enableCaptions: 'Enable captions',
disableCaptions: 'Disable captions',
enterFullscreen: 'Enter fullscreen',
exitFullscreen: 'Exit fullscreen',
frameTitle: 'Player for {title}',
captions: 'Captions',
settings: 'Settings',
speed: 'Speed',
quality: 'Quality',
loop: 'Loop',
start: 'Start',
end: 'End',
all: 'All',
reset: 'Reset',
disabled: 'Disabled',
advertisement: 'Ad',
}
```
@@ -30,81 +74,78 @@ Note: `{seektime}` will be replaced with your configured seek time or the defaul
## Using custom HTML
You can specify the HTML for the controls using the `html` option.
You can specify the HTML as a `String` or your `Function` return for the controls using the `controls` option.
The classes and data attributes used in your template should match the `selectors` option.
The classes and data attributes used in your template should match the `selectors` option if you change any.
You need to add several placeholders to your html template that are replaced when rendering:
You need to add several placeholders to your HTML template that are replaced when rendering:
- `{id}` - the dynamically generated ID for the player (for form controls)
- `{seektime}` - the seek time specified in options for fast forward and rewind
* `{id}` - the dynamically generated ID for the player (for form controls)
* `{seektime}` - the seek time specified in options for fast forward and rewind
* `{title}` - the title of your media, if specified
You can include only the controls you need when specifying custom html.
### Limitations
* Currently the settings menus are not supported with custom controls HTML
* AirPlay and PiP buttons can be added but you will have to manage feature detection
### Example
This is an example `html` option with all controls.
Here's an example of custom controls markup (this is just all default controls shown).
```javascript
["<div class='player-controls'>",
"<div class='player-progress'>",
"<label for='seek{id}' class='sr-only'>Seek</label>",
"<input id='seek{id}' class='player-progress-seek' type='range' min='0' max='100' step='0.5' value='0' data-player='seek'>",
"<progress class='player-progress-played' max='100' value='0'>",
"<span>0</span>% played",
"</progress>",
"<progress class='player-progress-buffer' max='100' value='0'>",
"<span>0</span>% buffered",
"</progress>",
"</div>",
"<span class='player-controls-left'>",
"<button type='button' data-player='restart'>",
"<svg><use xlink:href='#icon-restart'></use></svg>",
"<span class='sr-only'>Restart</span>",
"</button>",
"<button type='button' data-player='rewind'>",
"<svg><use xlink:href='#icon-rewind'></use></svg>",
"<span class='sr-only'>Rewind {seektime} secs</span>",
"</button>",
"<button type='button' data-player='play'>",
"<svg><use xlink:href='#icon-play'></use></svg>",
"<span class='sr-only'>Play</span>",
"</button>",
"<button type='button' data-player='pause'>",
"<svg><use xlink:href='#icon-pause'></use></svg>",
"<span class='sr-only'>Pause</span>",
"</button>",
"<button type='button' data-player='fast-forward'>",
"<svg><use xlink:href='#icon-fast-forward'></use></svg>",
"<span class='sr-only'>Forward {seektime} secs</span>",
"</button>",
"<span class='player-time'>",
"<span class='sr-only'>Current time</span>",
"<span class='player-current-time'>00:00</span>",
"</span>",
"<span class='player-time'>",
"<span class='sr-only'>Duration</span>",
"<span class='player-duration'>00:00</span>",
"</span>",
"</span>",
"<span class='player-controls-right'>",
"<button type='button' data-player='mute'>",
"<svg class='icon-muted'><use xlink:href='#icon-muted'></use></svg>",
"<svg><use xlink:href='#icon-volume'></use></svg>",
"<span class='sr-only'>Toggle Mute</span>",
"</button>",
"<label for='volume{id}' class='sr-only'>Volume</label>",
"<input id='volume{id}' class='player-volume' type='range' min='0' max='10' value='5' data-player='volume'>",
"<button type='button' data-player='captions'>",
"<svg class='icon-captions-on'><use xlink:href='#icon-captions-on'></use></svg>",
"<svg><use xlink:href='#icon-captions-off'></use></svg>",
"<span class='sr-only'>Toggle Captions</span>",
"</button>",
"<button type='button' data-player='fullscreen'>",
"<svg class='icon-exit-fullscreen'><use xlink:href='#icon-exit-fullscreen'></use></svg>",
"<svg><use xlink:href='#icon-enter-fullscreen'></use></svg>",
"<span class='sr-only'>Toggle Fullscreen</span>",
"</button>",
"</span>",
"</div>"].join("\n");
const controls = `
<div class="plyr__controls">
<button type="button" class="plyr__control" data-plyr="restart">
<svg role="presentation"><use xlink:href="#plyr-restart"></use></svg>
<span class="plyr__tooltip" role="tooltip">Restart</span>
</button>
<button type="button" class="plyr__control" data-plyr="rewind">
<svg role="presentation"><use xlink:href="#plyr-rewind"></use></svg>
<span class="plyr__tooltip" role="tooltip">Rewind {seektime} secs</span>
</button>
<button type="button" class="plyr__control" aria-pressed="false" aria-label="Play, {title}" data-plyr="play">
<svg class="icon--pressed" role="presentation"><use xlink:href="#plyr-pause"></use></svg>
<svg class="icon--not-pressed" role="presentation"><use xlink:href="#plyr-play"></use></svg>
<span class="label--pressed plyr__tooltip" role="tooltip">Pause</span>
<span class="label--not-pressed plyr__tooltip" role="tooltip">Play</span>
</button>
<button type="button" class="plyr__control" data-plyr="fast-forward">
<svg role="presentation"><use xlink:href="#plyr-fast-forward"></use></svg>
<span class="plyr__tooltip" role="tooltip">Forward {seektime} secs</span>
</button>
<div class="plyr__progress">
<label for="plyr-seek-{id}" class="plyr__sr-only">Seek</label>
<input data-plyr="seek" type="range" min="0" max="100" step="0.01" value="0" id="plyr-seek-{id}">
<progress class="plyr__progress--buffer" min="0" max="100" value="0">% buffered</progress>
<span role="tooltip" class="plyr__tooltip">00:00</span>
</div>
<div class="plyr__time">00:00</div>
<button type="button" class="plyr__control" aria-pressed="false" aria-label="Mute" data-plyr="mute">
<svg class="icon--pressed" role="presentation"><use xlink:href="#plyr-muted"></use></svg>
<svg class="icon--not-pressed" role="presentation"><use xlink:href="#plyr-volume"></use></svg>
<span class="label--pressed plyr__tooltip" role="tooltip">Unmute</span>
<span class="label--not-pressed plyr__tooltip" role="tooltip">Mute</span>
</button>
<div class="plyr__volume">
<label for="plyr-volume-{id}" class="plyr__sr-only">Volume</label>
<input data-plyr="volume" type="range" min="0" max="1" step="0.05" value="1" autocomplete="off" id="plyr-volume-{id}">
</div>
<button type="button" class="plyr__control" aria-pressed="true" aria-label="Enable captions" data-plyr="captions">
<svg class="icon--pressed" role="presentation"><use xlink:href="#plyr-captions-on"></use></svg>
<svg class="icon--not-pressed" role="presentation"><use xlink:href="#plyr-captions-off"></use></svg>
<span class="label--pressed plyr__tooltip" role="tooltip">Disable captions</span>
<span class="label--not-pressed plyr__tooltip" role="tooltip">Enable captions</span>
</button>
<button type="button" class="plyr__control" aria-pressed="false" aria-label="Enter fullscreen" data-plyr="fullscreen">
<svg class="icon--pressed" role="presentation"><use xlink:href="#plyr-exit-fullscreen"></use></svg>
<svg class="icon--not-pressed" role="presentation"><use xlink:href="#plyr-enter-fullscreen"></use></svg>
<span class="label--pressed plyr__tooltip" role="tooltip">Exit fullscreen</span>
<span class="label--not-pressed plyr__tooltip" role="tooltip">Enter fullscreen</span>
</button>
</div>
`;
// Setup the player
const player = new Plyr('#player', { controls });
```
+1
View File
File diff suppressed because one or more lines are too long
+4111
View File
File diff suppressed because it is too large Load Diff
+1
View File
File diff suppressed because one or more lines are too long
+2
View File
File diff suppressed because one or more lines are too long
+1
View File
File diff suppressed because one or more lines are too long
+25
View File
@@ -0,0 +1,25 @@
<!doctype html>
<html lang="en" class="error">
<head>
<meta charset="utf-8" />
<title>Doh. Looks like something went wrong.</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Docs styles -->
<link rel="stylesheet" href="dist/error.css">
<!-- Preload -->
<link rel="preload" as="font" crossorigin type="font/woff2" href="https://cdn.plyr.io/static/fonts/gordita-medium.woff2">
<link rel="preload" as="font" crossorigin type="font/woff2" href="https://cdn.plyr.io/static/fonts/gordita-bold.woff2">
</head>
<body>
<main>
<h1>Doh.</h1>
<p>Looks like something went wrong.</p>
<a href="javascript:history.back()" class="button">Go back</a>
</main>
</body>
</html>
+188
View File
@@ -0,0 +1,188 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Plyr - A simple, customizable HTML5 Video, Audio, YouTube and Vimeo player</title>
<meta name="description" property="og:description" content="A simple HTML5 media player with custom controls and WebVTT captions.">
<meta name="author" content="Sam Potts">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Icons -->
<link rel="icon" href="https://cdn.plyr.io/static/icons/favicon.ico">
<link rel="icon" type="image/png" href="https://cdn.plyr.io/static/icons/32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="https://cdn.plyr.io/static/icons/16x16.png" sizes="16x16">
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.plyr.io/static/icons/180x180.png">
<!-- Opengraph -->
<meta property="og:title" content="Plyr - A simple, customizable HTML5 Video, Audio, YouTube and Vimeo player">
<meta property="og:site_name" content="Plyr">
<meta property="og:url" content="https://plyr.io">
<meta property="og:image" content="https://cdn.plyr.io/static/icons/1200x630.png">
<!-- Twitter -->
<meta name="twitter:card" content="summary">
<meta name="twitter:site" content="@sam_potts">
<meta name="twitter:creator" content="@sam_potts">
<meta name="twitter:card" content="summary_large_image">
<!-- Docs styles -->
<link rel="stylesheet" href="dist/demo.css">
<!-- Preload -->
<link rel="preload" as="font" crossorigin type="font/woff2" href="https://cdn.plyr.io/static/fonts/gordita-medium.woff2">
<link rel="preload" as="font" crossorigin type="font/woff2" href="https://cdn.plyr.io/static/fonts/gordita-bold.woff2">
</head>
<body>
<div class="grid">
<header>
<h1>Plyr</h1>
<p>A simple, accessible and customisable media player for
<button type="button" class="faux-link" data-source="video">
<svg class="icon">
<title>HTML5</title>
<path d="M14.738.326C14.548.118 14.28 0 14 0H2c-.28 0-.55.118-.738.326S.98.81 1.004 1.09l1 11c.03.317.208.603.48.767l5 3c.16.095.338.143.516.143s.356-.048.515-.143l5-3c.273-.164.452-.45.48-.767l1-11c.026-.28-.067-.557-.257-.764zM12 4H6v2h6v5.72l-4 1.334-4-1.333V9h2v1.28l2 .666 2-.667V8H4V2h8v2z"></path>
</svg>Video</button>,
<button type="button" class="faux-link" data-source="audio">
<svg class="icon">
<title>HTML5</title>
<path d="M14.738.326C14.548.118 14.28 0 14 0H2c-.28 0-.55.118-.738.326S.98.81 1.004 1.09l1 11c.03.317.208.603.48.767l5 3c.16.095.338.143.516.143s.356-.048.515-.143l5-3c.273-.164.452-.45.48-.767l1-11c.026-.28-.067-.557-.257-.764zM12 4H6v2h6v5.72l-4 1.334-4-1.333V9h2v1.28l2 .666 2-.667V8H4V2h8v2z"></path>
</svg>Audio</button>,
<button type="button" class="faux-link" data-source="youtube">
<svg class="icon" role="presentation">
<title>YouTube</title>
<path d="M15.8,4.8c-0.2-1.3-0.8-2.2-2.2-2.4C11.4,2,8,2,8,2S4.6,2,2.4,2.4C1,2.6,0.3,3.5,0.2,4.8C0,6.1,0,8,0,8
s0,1.9,0.2,3.2c0.2,1.3,0.8,2.2,2.2,2.4C4.6,14,8,14,8,14s3.4,0,5.6-0.4c1.4-0.3,2-1.1,2.2-2.4C16,9.9,16,8,16,8S16,6.1,15.8,4.8z
M6,11V5l5,3L6,11z"></path>
</svg>YouTube</button> and
<button type="button" class="faux-link" data-source="vimeo">
<svg class="icon" role="presentation">
<title>Vimeo</title>
<path d="M16,4.3c-0.1,1.6-1.2,3.7-3.3,6.4c-2.2,2.8-4,4.2-5.5,4.2c-0.9,0-1.7-0.9-2.4-2.6C4,9.9,3.4,5,2,5
C1.9,5,1.5,5.3,0.8,5.8L0,4.8c0.8-0.7,3.5-3.4,4.7-3.5C5.9,1.2,6.7,2,7,3.8c0.3,2,0.8,6.1,1.8,6.1c0.9,0,2.5-3.4,2.6-4
c0.1-0.9-0.3-1.9-2.3-1.1c0.8-2.6,2.3-3.8,4.5-3.8C15.3,1.1,16.1,2.2,16,4.3z"></path>
</svg>Vimeo</button>
</p>
<p>Premium video monitization from
<a href="https://vi.ai/publisher-video-monetization/?aid=plyrio" target="_blank" class="no-border">
<img src="https://cdn.plyr.io/static/vi-logo-24x24.svg" alt="ai.vi">
<span class="sr-only">ai.vi</span>
</a>
</p>
<div class="call-to-action">
<span class="button--with-count">
<a href="https://github.com/sampotts/plyr" target="_blank" class="button" data-shr-network="github">
<svg class="icon" role="presentation">
<title>GitHub</title>
<path d="M8,0.2c-4.4,0-8,3.6-8,8c0,3.5,2.3,6.5,5.5,7.6
C5.9,15.9,6,15.6,6,15.4c0-0.2,0-0.7,0-1.4C3.8,14.5,3.3,13,3.3,13c-0.4-0.9-0.9-1.2-0.9-1.2c-0.7-0.5,0.1-0.5,0.1-0.5
c0.8,0.1,1.2,0.8,1.2,0.8C4.4,13.4,5.6,13,6,12.8c0.1-0.5,0.3-0.9,0.5-1.1c-1.8-0.2-3.6-0.9-3.6-4c0-0.9,0.3-1.6,0.8-2.1
c-0.1-0.2-0.4-1,0.1-2.1c0,0,0.7-0.2,2.2,0.8c0.6-0.2,1.3-0.3,2-0.3c0.7,0,1.4,0.1,2,0.3c1.5-1,2.2-0.8,2.2-0.8
c0.4,1.1,0.2,1.9,0.1,2.1c0.5,0.6,0.8,1.3,0.8,2.1c0,3.1-1.9,3.7-3.7,3.9C9.7,12,10,12.5,10,13.2c0,1.1,0,1.9,0,2.2
c0,0.2,0.1,0.5,0.6,0.4c3.2-1.1,5.5-4.1,5.5-7.6C16,3.8,12.4,0.2,8,0.2z"></path>
</svg>
Download on GitHub
</a>
</span>
</div>
</header>
<main>
<video controls crossorigin playsinline poster="https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.jpg" id="player">
<!-- Video files -->
<source src="https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.mp4" type="video/mp4">
<source src="https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.webm" type="video/webm">
<!-- Text track file -->
<track kind="captions" label="English" srclang="en" src="https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.en.vtt"
default>
<track kind="captions" label="Français" srclang="fr" src="https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.fr.vtt">
<!-- Fallback for browsers that don't support the <video> element -->
<a href="https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.mp4" download>Download</a>
</video>
<ul>
<li class="plyr__cite plyr__cite--video" hidden>
<small>
<svg class="icon">
<title>HTML5</title>
<path d="M14.738.326C14.548.118 14.28 0 14 0H2c-.28 0-.55.118-.738.326S.98.81 1.004 1.09l1 11c.03.317.208.603.48.767l5 3c.16.095.338.143.516.143s.356-.048.515-.143l5-3c.273-.164.452-.45.48-.767l1-11c.026-.28-.067-.557-.257-.764zM12 4H6v2h6v5.72l-4 1.334-4-1.333V9h2v1.28l2 .666 2-.667V8H4V2h8v2z"></path>
</svg>
<a href="http://viewfromabluemoon.com/" target="_blank">View From A Blue Moon</a> &copy; Brainfarm
</small>
</li>
<li class="plyr__cite plyr__cite--audio" hidden>
<small>
<svg class="icon" title="HTML5">
<title>HTML5</title>
<path d="M14.738.326C14.548.118 14.28 0 14 0H2c-.28 0-.55.118-.738.326S.98.81 1.004 1.09l1 11c.03.317.208.603.48.767l5 3c.16.095.338.143.516.143s.356-.048.515-.143l5-3c.273-.164.452-.45.48-.767l1-11c.026-.28-.067-.557-.257-.764zM12 4H6v2h6v5.72l-4 1.334-4-1.333V9h2v1.28l2 .666 2-.667V8H4V2h8v2z"></path>
</svg>
<a href="http://www.kishibashi.com/" target="_blank">Kishi Bashi &ndash; &ldquo;It All Began With A Burst&rdquo;</a> &copy; Kishi Bashi
</small>
</li>
<li class="plyr__cite plyr__cite--youtube" hidden>
<small>
<a href="https://www.youtube.com/watch?v=bTqVqk7FSmY" target="_blank">View From A Blue Moon</a> on&nbsp;
<span class="color--youtube">
<svg class="icon" role="presentation">
<title>YouTube</title>
<path d="M15.8,4.8c-0.2-1.3-0.8-2.2-2.2-2.4C11.4,2,8,2,8,2S4.6,2,2.4,2.4C1,2.6,0.3,3.5,0.2,4.8C0,6.1,0,8,0,8
s0,1.9,0.2,3.2c0.2,1.3,0.8,2.2,2.2,2.4C4.6,14,8,14,8,14s3.4,0,5.6-0.4c1.4-0.3,2-1.1,2.2-2.4C16,9.9,16,8,16,8S16,6.1,15.8,4.8z
M6,11V5l5,3L6,11z"></path>
</svg>YouTube
</span>
</small>
</li>
<li class="plyr__cite plyr__cite--vimeo" hidden>
<small>
<a href="https://vimeo.com/ondemand/viewfromabluemoon4k" target="_blank">View From A Blue Moon</a> on&nbsp;
<span class="color--vimeo">
<svg class="icon" role="presentation">
<title>Vimeo</title>
<path d="M16,4.3c-0.1,1.6-1.2,3.7-3.3,6.4c-2.2,2.8-4,4.2-5.5,4.2c-0.9,0-1.7-0.9-2.4-2.6C4,9.9,3.4,5,2,5
C1.9,5,1.5,5.3,0.8,5.8L0,4.8c0.8-0.7,3.5-3.4,4.7-3.5C5.9,1.2,6.7,2,7,3.8c0.3,2,0.8,6.1,1.8,6.1c0.9,0,2.5-3.4,2.6-4
c0.1-0.9-0.3-1.9-2.3-1.1c0.8-2.6,2.3-3.8,4.5-3.8C15.3,1.1,16.1,2.2,16,4.3z"></path>
</svg>Vimeo
</span>
</small>
</li>
</ul>
</main>
</div>
<aside>
<svg class="icon">
<title>Twitter</title>
<path d="M16,3c-0.6,0.3-1.2,0.4-1.9,0.5c0.7-0.4,1.2-1,1.4-1.8c-0.6,0.4-1.3,0.6-2.1,0.8c-0.6-0.6-1.5-1-2.4-1
C9.3,1.5,7.8,3,7.8,4.8c0,0.3,0,0.5,0.1,0.7C5.2,5.4,2.7,4.1,1.1,2.1c-0.3,0.5-0.4,1-0.4,1.7c0,1.1,0.6,2.1,1.5,2.7
c-0.5,0-1-0.2-1.5-0.4c0,0,0,0,0,0c0,1.6,1.1,2.9,2.6,3.2C3,9.4,2.7,9.4,2.4,9.4c-0.2,0-0.4,0-0.6-0.1c0.4,1.3,1.6,2.3,3.1,2.3
c-1.1,0.9-2.5,1.4-4.1,1.4c-0.3,0-0.5,0-0.8,0c1.5,0.9,3.2,1.5,5,1.5c6,0,9.3-5,9.3-9.3c0-0.1,0-0.3,0-0.4C15,4.3,15.6,3.7,16,3z"></path>
</svg>
<p>If you think Plyr's good,
<a href="https://twitter.com/intent/tweet?text=A+simple+HTML5+media+player+with+custom+controls+and+WebVTT+captions.&amp;url=http%3A%2F%2Fplyr.io&amp;via=Sam_Potts"
target="_blank" data-shr-network="twitter">tweet it</a>
</p>
</aside>
<!-- Polyfills -->
<script src="https://cdn.polyfill.io/v2/polyfill.min.js?features=es6,Array.prototype.includes,CustomEvent,Object.entries"
crossorigin="anonymous"></script>
<!-- Plyr core script -->
<script src="../dist/plyr.js" crossorigin="anonymous"></script>
<!-- Sharing libary (https://shr.one) -->
<script src="https://cdn.shr.one/1.0.1/shr.js" crossorigin="anonymous"></script>
<!-- Rangetouch to fix <input type="range"> on touch devices (see https://rangetouch.com) -->
<script src="https://cdn.rangetouch.com/1.0.1/rangetouch.js" async crossorigin="anonymous"></script>
<!-- Docs script -->
<script src="dist/demo.js" crossorigin="anonymous"></script>
</body>
</html>
@@ -0,0 +1,29 @@
WEBVTT FILE
1
00:00:09.500 --> 00:00:12.000
The ocean floor rises 5 miles to the shores
2
00:00:12.001 --> 00:00:16.500
of what people call, the seven mile miracle
3
00:00:25.500 --> 00:00:28.000
What would it be like to be born on this island?
4
00:00:32.500 --> 00:00:34.500
To grow up on these shores
5
00:00:37.500 --> 00:00:40.000
To witness this water, every day
6
00:00:43.500 --> 00:00:46.000
You're about to meet someone, who did
7
00:02:45.500 --> 00:02:49.000
This is a film about John John Florence
@@ -0,0 +1,29 @@
WEBVTT FILE
1
00:00:09.500 --> 00:00:12.000
Le fond de l'océan monte 5 miles des rives
2
00:00:12.001 --> 00:00:16.500
de ce que les gens appellent le miracle de sept mile
3
00:00:25.500 --> 00:00:28.000
Que serait-il d'être né sur cette île?
4
00:00:32.500 --> 00:00:34.500
Pour grandir sur ces rivages
5
00:00:37.500 --> 00:00:40.000
Pour assister à cette eau, tous les jours
6
00:00:43.500 --> 00:00:46.000
Vous êtes sur le point de rencontrer quelqu'un, qui ne
7
00:02:45.500 --> 00:02:49.000
Ceci est un film sur John John Florence
Binary file not shown.

After

Width:  |  Height:  |  Size: 154 KiB

+277
View File
@@ -0,0 +1,277 @@
// ==========================================================================
// Plyr.io demo
// This code is purely for the https://plyr.io website
// Please see readme.md in the root or github.com/sampotts/plyr
// ==========================================================================
import Raven from 'raven-js';
(() => {
const isLive = window.location.host === 'plyr.io';
// Raven / Sentry
// For demo site (https://plyr.io) only
if (isLive) {
Raven.config('https://d4ad9866ad834437a4754e23937071e4@sentry.io/305555').install();
}
document.addEventListener('DOMContentLoaded', () => {
Raven.context(() => {
if (window.shr) {
window.shr.setup({
count: {
classname: 'button__count',
},
});
}
// Setup tab focus
const tabClassName = 'tab-focus';
// Remove class on blur
document.addEventListener('focusout', event => {
event.target.classList.remove(tabClassName);
});
// Add classname to tabbed elements
document.addEventListener('keydown', event => {
if (event.keyCode !== 9) {
return;
}
// Delay the adding of classname until the focus has changed
// This event fires before the focusin event
setTimeout(() => {
document.activeElement.classList.add(tabClassName);
}, 0);
});
// Setup the player
const player = new Plyr('#player', {
debug: true,
title: 'View From A Blue Moon',
iconUrl: '../dist/plyr.svg',
keyboard: {
global: true,
},
tooltips: {
controls: true,
},
/* controls: [
'play-large',
'restart',
'rewind',
'play',
'fast-forward',
'progress',
'current-time',
'duration',
'mute',
'volume',
'captions',
'settings',
'pip',
'airplay',
'fullscreen',
], */
captions: {
active: true,
},
keys: {
google: 'AIzaSyDrNwtN3nLH_8rjCmu5Wq3ZCm4MNAVdc0c',
},
ads: {
enabled: true,
publisherId: '918848828995742',
},
});
// Expose for tinkering in the console
window.player = player;
// Setup type toggle
const buttons = document.querySelectorAll('[data-source]');
const types = {
video: 'video',
audio: 'audio',
youtube: 'youtube',
vimeo: 'vimeo',
};
let currentType = window.location.hash.replace('#', '');
const historySupport = window.history && window.history.pushState;
// Toggle class on an element
function toggleClass(element, className, state) {
if (element) {
element.classList[state ? 'add' : 'remove'](className);
}
}
// Set a new source
function newSource(type, init) {
// Bail if new type isn't known, it's the current type, or current type is empty (video is default) and new type is video
if (!(type in types) || (!init && type === currentType) || (!currentType.length && type === types.video)) {
return;
}
switch (type) {
case types.video:
player.source = {
type: 'video',
title: 'View From A Blue Moon',
sources: [{
src: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.mp4',
type: 'video/mp4',
}],
poster: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.jpg',
tracks: [
{
kind: 'captions',
label: 'English',
srclang: 'en',
src: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.en.vtt',
default: true,
},
{
kind: 'captions',
label: 'French',
srclang: 'fr',
src: 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.fr.vtt',
},
],
};
break;
case types.audio:
player.source = {
type: 'audio',
title: 'Kishi Bashi &ndash; &ldquo;It All Began With A Burst&rdquo;',
sources: [
{
src: 'https://cdn.plyr.io/static/demo/Kishi_Bashi_-_It_All_Began_With_a_Burst.mp3',
type: 'audio/mp3',
},
{
src: 'https://cdn.plyr.io/static/demo/Kishi_Bashi_-_It_All_Began_With_a_Burst.ogg',
type: 'audio/ogg',
},
],
};
break;
case types.youtube:
player.source = {
type: 'video',
title: 'View From A Blue Moon',
sources: [{
src: 'https://youtube.com/watch?v=bTqVqk7FSmY',
provider: 'youtube',
}],
};
break;
case types.vimeo:
player.source = {
type: 'video',
sources: [{
src: 'https://vimeo.com/76979871',
provider: 'vimeo',
}],
};
break;
default:
break;
}
// Set the current type for next time
currentType = type;
// Remove active classes
Array.from(buttons).forEach(button => toggleClass(button.parentElement, 'active', false));
// Set active on parent
toggleClass(document.querySelector(`[data-source="${type}"]`), 'active', true);
// Show cite
Array.from(document.querySelectorAll('.plyr__cite')).forEach(cite => {
cite.setAttribute('hidden', '');
});
document.querySelector(`.plyr__cite--${type}`).removeAttribute('hidden');
}
// Bind to each button
Array.from(buttons).forEach(button => {
button.addEventListener('click', () => {
const type = button.getAttribute('data-source');
newSource(type);
if (historySupport) {
window.history.pushState({ type }, '', `#${type}`);
}
});
});
// List for backwards/forwards
window.addEventListener('popstate', event => {
if (event.state && 'type' in event.state) {
newSource(event.state.type);
}
});
// On load
if (historySupport) {
const video = !currentType.length;
// If there's no current type set, assume video
if (video) {
currentType = types.video;
}
// Replace current history state
if (currentType in types) {
window.history.replaceState(
{
type: currentType,
},
'',
video ? '' : `#${currentType}`,
);
}
// If it's not video, load the source
if (currentType !== types.video) {
newSource(currentType, true);
}
}
});
});
// Google analytics
// For demo site (https://plyr.io) only
/* eslint-disable */
if (isLive) {
(function(i, s, o, g, r, a, m) {
i.GoogleAnalyticsObject = r;
i[r] =
i[r] ||
function() {
(i[r].q = i[r].q || []).push(arguments);
};
i[r].l = 1 * new Date();
a = s.createElement(o);
m = s.getElementsByTagName(o)[0];
a.async = 1;
a.src = g;
m.parentNode.insertBefore(a, m);
})(window, document, 'script', 'https://www.google-analytics.com/analytics.js', 'ga');
window.ga('create', 'UA-40881672-11', 'auto');
window.ga('send', 'pageview');
}
/* eslint-enable */
})();
+46
View File
@@ -0,0 +1,46 @@
// ==========================================================================
// Plyr.io Demo Page
// ==========================================================================
@charset 'UTF-8';
// Settings
@import '../settings/breakpoints';
@import '../settings/colors';
@import '../settings/cosmetic';
@import '../settings/icons';
@import '../settings/layout';
@import '../settings/plyr';
@import '../settings/spacing';
@import '../settings/type';
// Libs
@import '../lib/fontface';
@import '../lib/animation';
@import '../lib/mixins';
@import '../lib/normalize';
@import '../lib/reset';
// Layout
@import '../layout/core';
@import '../layout/grid';
// Type
@import '../type/base';
@import '../type/headings';
// Components
@import '../components/buttons';
@import '../components/header';
@import '../components/icons';
@import '../components/links';
@import '../components/lists';
@import '../components/media';
@import '../components/navigation';
@import '../components/players';
// Plyr
@import '../../../../src/sass/plyr';
// Utils
@import '../utilities/cosmetic';
@import '../utilities/hidden';
+29
View File
@@ -0,0 +1,29 @@
// ==========================================================================
// Plyr.io Error Page
// ==========================================================================
@charset 'UTF-8';
// Libs
@import '../lib/fontface';
@import '../lib/mixins';
@import '../lib/normalize';
@import '../lib/reset';
// Settings
@import '../settings/colors';
@import '../settings/cosmetic';
@import '../settings/icons';
@import '../settings/layout';
@import '../settings/spacing';
@import '../settings/type';
// Layout
@import '../layout/error';
// Type
@import '../type/base';
@import '../type/headings';
// Components
@import '../components/buttons';
@import '../components/links';
+83
View File
@@ -0,0 +1,83 @@
// ==========================================================================
// Buttons
// ==========================================================================
// Shared
.button,
.button__count {
align-items: center;
background: $color-button-background;
border: 0;
border-radius: $border-radius-base;
box-shadow: 0 1px 1px rgba(#000, 0.1);
color: $color-button-text;
display: inline-flex;
padding: ($spacing-base * 0.75);
position: relative;
text-shadow: none;
user-select: none;
vertical-align: middle;
}
// Buttons
.button {
font-weight: $font-weight-bold;
padding-left: $spacing-base;
padding-right: $spacing-base;
transition: all 0.2s ease;
&:hover,
&:focus {
color: $gray-dark;
// Remove the underline/border
&::after {
display: none;
}
}
&:hover {
box-shadow: 0 2px 2px rgba(#000, 0.1);
transform: translateY(-1px);
}
&:focus {
outline: 0;
}
&.tab-focus {
@include tab-focus();
}
&:active {
transform: translateY(1px);
}
}
// Button group
.button--with-count {
display: inline-flex;
.button .icon {
flex-shrink: 0;
}
}
// Count bubble
.button__count {
animation: fadein 0.2s ease;
margin-left: ($spacing-base / 2);
&::before {
border: $arrow-size solid transparent;
border-left-width: 0;
border-right-color: $color-button-background;
content: '';
height: 0;
position: absolute;
right: 100%;
top: 50%;
transform: translateY(-50%);
width: 0;
}
}
+19
View File
@@ -0,0 +1,19 @@
// ==========================================================================
// Header
// ==========================================================================
header {
padding-bottom: $spacing-base;
text-align: center;
.call-to-action {
margin-top: ($spacing-base * 1.5);
}
@media only screen and (min-width: $screen-md) {
margin-right: ($spacing-base * 3);
max-width: 360px;
padding-bottom: ($spacing-base * 2);
text-align: left;
}
}
@@ -4,23 +4,20 @@
// Base size icon styles
.icon {
fill: currentColor;
width: @icon-size;
height: @icon-size;
vertical-align: -3px;
fill: currentColor;
height: $icon-size;
vertical-align: -3px;
width: $icon-size;
}
// Within elements
a svg,
button svg,
label svg {
pointer-events: none;
pointer-events: none;
}
a .icon,
.btn .icon {
margin-right: (@padding-base / 2);
}
.btn:not(.btn-large) .icon {
width: (@icon-size - 2);
height: (@icon-size - 2);
margin-right: floor($spacing-base / 3);
}
+49
View File
@@ -0,0 +1,49 @@
// ==========================================================================
// Links
// ==========================================================================
// Make a <button> look like an <a>
button.faux-link {
@extend a; // stylelint-disable-line
@include cancel-button-styles();
}
// Links
a {
border-bottom: 1px dotted currentColor;
color: $color-link;
font-weight: $font-weight-bold;
position: relative;
text-decoration: none;
transition: all 0.2s ease;
&::after {
background: currentColor;
content: '';
height: 1px;
left: 50%;
position: absolute;
top: 100%;
transform: translateX(-50%);
transition: width 0.2s ease;
width: 0;
}
&:hover,
&:focus {
border-bottom-color: transparent;
outline: 0;
&::after {
width: 100%;
}
}
&.tab-focus {
@include tab-focus();
}
&.no-border::after {
display: none;
}
}
+11
View File
@@ -0,0 +1,11 @@
// ==========================================================================
// Lists
// ==========================================================================
// Lists
ul,
li {
list-style: none;
margin: 0;
padding: 0;
}
+10
View File
@@ -0,0 +1,10 @@
// ==========================================================================
// Basic media
// ==========================================================================
img,
video,
audio {
max-width: 100%;
vertical-align: middle;
}
+9
View File
@@ -0,0 +1,9 @@
// ==========================================================================
// Navigation
// ==========================================================================
nav {
display: flex;
justify-content: center;
margin-bottom: $spacing-base;
}
+49
View File
@@ -0,0 +1,49 @@
// ==========================================================================
// Examples
// ==========================================================================
// For non supported browsers
video {
max-width: 100%;
vertical-align: middle;
}
// Example players
.plyr {
border-radius: $border-radius-base;
box-shadow: 0 2px 5px rgba(#000, 0.2);
margin: $spacing-base auto;
&.plyr--audio {
max-width: 480px;
}
}
.plyr__video-wrapper::after {
border: 1px solid rgba(#000, 0.15);
border-radius: inherit;
bottom: 0;
content: '';
left: 0;
pointer-events: none;
position: absolute;
right: 0;
top: 0;
}
// Style full supported player
.plyr__cite {
display: none;
margin-top: $spacing-base;
.icon {
margin-right: ceil($spacing-base / 6);
}
}
.plyr--video:not(.plyr--youtube):not(.plyr--vimeo) ~ ul .plyr__cite--video,
.plyr--audio ~ ul .plyr__cite--audio,
.plyr--youtube ~ ul .plyr__cite--youtube,
.plyr--vimeo ~ ul .plyr__cite--vimeo {
display: block;
}
+64
View File
@@ -0,0 +1,64 @@
// ==========================================================================
// Core
// ==========================================================================
html,
body {
display: flex;
width: 100%;
}
html {
background: $page-background;
background-attachment: fixed;
height: 100%;
}
body {
align-items: center;
display: flex;
flex-direction: column;
min-height: 100%;
}
.grid {
flex: 1;
overflow: auto;
}
main {
margin: auto;
padding-bottom: 1px; // Collapsing margins
text-align: center;
}
aside {
align-items: center;
background: #fff;
color: $gray;
display: flex;
flex-shrink: 0;
justify-content: center;
padding: ($spacing-base * 0.75);
position: relative;
text-align: center;
text-shadow: none;
width: 100%;
.icon {
fill: $color-twitter;
margin-right: ($spacing-base / 2);
}
p {
margin: 0;
}
a {
color: $color-twitter;
&.tab-focus {
@include tab-focus($color-twitter);
}
}
}
@@ -7,13 +7,24 @@ html.error,
.error body {
height: 100%;
}
.error body {
width: 100%;
display: table;
table-layout: fixed;
html.error {
background: $page-background;
background-attachment: fixed;
}
.error main {
display: table-cell;
.error body {
align-items: center;
display: flex;
width: 100%;
vertical-align: middle;
}
}
.error main {
padding: $spacing-base;
text-align: center;
width: 100%;
p {
@include font-size($font-size-large);
}
}
+19
View File
@@ -0,0 +1,19 @@
// ==========================================================================
// Super basic grid
// ==========================================================================
.grid {
margin: 0 auto;
padding: $spacing-base;
@media only screen and (min-width: $screen-md) {
align-items: center;
display: flex;
max-width: $container-max-width;
width: 100%;
> * {
flex: 1;
}
}
}
@@ -3,7 +3,11 @@
// ==========================================================================
// Fade
@keyframes fade-in {
0% { opacity: 0 }
100% { opacity: 1 }
}
@keyframes fadein {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
+45
View File
@@ -0,0 +1,45 @@
// ==========================================================================
// Fonts
// ==========================================================================
@font-face {
font-display: swap;
font-family: 'Gordita';
font-style: normal;
font-weight: $font-weight-light;
src: url('https://cdn.plyr.io/static/fonts/gordita-light.woff2') format('woff2'), url('https://cdn.plyr.io/static/fonts/gordita-light.woff') format('woff');
}
@font-face {
font-display: swap;
font-family: 'Gordita';
font-style: normal;
font-weight: $font-weight-regular;
src: url('https://cdn.plyr.io/static/fonts/gordita-regular.woff2') format('woff2'),
url('https://cdn.plyr.io/static/fonts/gordita-regular.woff') format('woff');
}
@font-face {
font-display: swap;
font-family: 'Gordita';
font-style: normal;
font-weight: $font-weight-medium;
src: url('https://cdn.plyr.io/static/fonts/gordita-medium.woff2') format('woff2'),
url('https://cdn.plyr.io/static/fonts/gordita-medium.woff') format('woff');
}
@font-face {
font-display: swap;
font-family: 'Gordita';
font-style: normal;
font-weight: $font-weight-bold;
src: url('https://cdn.plyr.io/static/fonts/gordita-bold.woff2') format('woff2'), url('https://cdn.plyr.io/static/fonts/gordita-bold.woff') format('woff');
}
@font-face {
font-display: swap;
font-family: 'Gordita';
font-style: normal;
font-weight: $font-weight-black;
src: url('https://cdn.plyr.io/static/fonts/gordita-black.woff2') format('woff2'), url('https://cdn.plyr.io/static/fonts/gordita-black.woff') format('woff');
}
+54
View File
@@ -0,0 +1,54 @@
// ==========================================================================
// Mixins
// ==========================================================================
// Convert a <button> into an <a>
// ---------------------------------------
@mixin cancel-button-styles() {
background: transparent;
border: 0;
border-radius: 0;
cursor: pointer;
font: inherit;
line-height: $line-height-base;
margin: 0;
padding: 0;
position: relative;
text-align: inherit;
text-shadow: inherit;
-moz-user-select: text; // stylelint-disable-line
vertical-align: baseline;
width: auto;
}
// Nicer focus styles
// ---------------------------------------
@mixin tab-focus($color: $tab-focus-default-color) {
box-shadow: 0 0 0 3px rgba($color, 0.35);
outline: 0;
}
// Use rems for font sizing
// Leave <body> at 100%/16px
// ---------------------------------------
@function calculate-rem($size) {
$rem: $size / 16;
@return #{$rem}rem;
}
@mixin font-size($size: 16) {
font-size: $size * 1px; // Fallback in px
font-size: calculate-rem($size);
}
// Font smoothing
// ---------------------------------------
@mixin font-smoothing($enabled: true) {
@if $enabled {
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
} @else {
-moz-osx-font-smoothing: auto;
-webkit-font-smoothing: subpixel-antialiased;
}
}
+450
View File
@@ -0,0 +1,450 @@
/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */
/* Document
========================================================================== */
/**
* 1. Correct the line height in all browsers.
* 2. Prevent adjustments of font size after orientation changes in
* IE on Windows Phone and in iOS.
*/
html {
line-height: 1.15; /* 1 */
-ms-text-size-adjust: 100%; /* 2 */
-webkit-text-size-adjust: 100%; /* 2 */
}
/* Sections
========================================================================== */
/**
* Remove the margin in all browsers (opinionated).
*/
body {
margin: 0;
}
/**
* Add the correct display in IE 9-.
*/
article,
aside,
footer,
header,
nav,
section {
display: block;
}
/**
* Correct the font size and margin on `h1` elements within `section` and
* `article` contexts in Chrome, Firefox, and Safari.
*/
h1 {
font-size: 2em;
margin: 0.67em 0;
}
/* Grouping content
========================================================================== */
/**
* Add the correct display in IE 9-.
* 1. Add the correct display in IE.
*/
figcaption,
figure,
main {
/* 1 */
display: block;
}
/**
* Add the correct margin in IE 8.
*/
figure {
margin: 1em 40px;
}
/**
* 1. Add the correct box sizing in Firefox.
* 2. Show the overflow in Edge and IE.
*/
hr {
box-sizing: content-box; /* 1 */
height: 0; /* 1 */
overflow: visible; /* 2 */
}
/**
* 1. Correct the inheritance and scaling of font size in all browsers.
* 2. Correct the odd `em` font sizing in all browsers.
*/
pre {
font-family: monospace, monospace; /* 1 */
font-size: 1em; /* 2 */
}
/* Text-level semantics
========================================================================== */
/**
* 1. Remove the gray background on active links in IE 10.
* 2. Remove gaps in links underline in iOS 8+ and Safari 8+.
*/
a {
background-color: transparent; /* 1 */
-webkit-text-decoration-skip: objects; /* 2 */
}
/**
* 1. Remove the bottom border in Chrome 57- and Firefox 39-.
* 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
*/
abbr[title] {
border-bottom: none; /* 1 */
text-decoration: underline; /* 2 */
text-decoration: underline dotted; /* 2 */
}
/**
* Prevent the duplicate application of `bolder` by the next rule in Safari 6.
*/
b,
strong {
font-weight: inherit;
}
/**
* Add the correct font weight in Chrome, Edge, and Safari.
*/
b,
strong {
font-weight: bolder;
}
/**
* 1. Correct the inheritance and scaling of font size in all browsers.
* 2. Correct the odd `em` font sizing in all browsers.
*/
code,
kbd,
samp {
font-family: monospace, monospace; /* 1 */
font-size: 1em; /* 2 */
}
/**
* Add the correct font style in Android 4.3-.
*/
dfn {
font-style: italic;
}
/**
* Add the correct background and color in IE 9-.
*/
mark {
background-color: #ff0;
color: #000;
}
/**
* Add the correct font size in all browsers.
*/
small {
font-size: 80%;
}
/**
* Prevent `sub` and `sup` elements from affecting the line height in
* all browsers.
*/
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
/* Embedded content
========================================================================== */
/**
* Add the correct display in IE 9-.
*/
audio,
video {
display: inline-block;
}
/**
* Add the correct display in iOS 4-7.
*/
audio:not([controls]) {
display: none;
height: 0;
}
/**
* Remove the border on images inside links in IE 10-.
*/
img {
border-style: none;
}
/**
* Hide the overflow in IE.
*/
svg:not(:root) {
overflow: hidden;
}
/* Forms
========================================================================== */
/**
* 1. Change the font styles in all browsers (opinionated).
* 2. Remove the margin in Firefox and Safari.
*/
button,
input,
optgroup,
select,
textarea {
font-family: sans-serif; /* 1 */
font-size: 100%; /* 1 */
line-height: 1.15; /* 1 */
margin: 0; /* 2 */
}
/**
* Show the overflow in IE.
* 1. Show the overflow in Edge.
*/
button,
input {
/* 1 */
overflow: visible;
}
/**
* Remove the inheritance of text transform in Edge, Firefox, and IE.
* 1. Remove the inheritance of text transform in Firefox.
*/
button,
select {
/* 1 */
text-transform: none;
}
/**
* 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
* controls in Android 4.
* 2. Correct the inability to style clickable types in iOS and Safari.
*/
button,
html [type='button'],
[type='reset'],
[type='submit'] {
-webkit-appearance: button; /* 2 */
}
/**
* Remove the inner border and padding in Firefox.
*/
button::-moz-focus-inner,
[type='button']::-moz-focus-inner,
[type='reset']::-moz-focus-inner,
[type='submit']::-moz-focus-inner {
border-style: none;
padding: 0;
}
/**
* Restore the focus styles unset by the previous rule.
*/
button:-moz-focusring,
[type='button']:-moz-focusring,
[type='reset']:-moz-focusring,
[type='submit']:-moz-focusring {
outline: 1px dotted ButtonText;
}
/**
* Correct the padding in Firefox.
*/
fieldset {
padding: 0.35em 0.75em 0.625em;
}
/**
* 1. Correct the text wrapping in Edge and IE.
* 2. Correct the color inheritance from `fieldset` elements in IE.
* 3. Remove the padding so developers are not caught out when they zero out
* `fieldset` elements in all browsers.
*/
legend {
box-sizing: border-box; /* 1 */
color: inherit; /* 2 */
display: table; /* 1 */
max-width: 100%; /* 1 */
padding: 0; /* 3 */
white-space: normal; /* 1 */
}
/**
* 1. Add the correct display in IE 9-.
* 2. Add the correct vertical alignment in Chrome, Firefox, and Opera.
*/
progress {
display: inline-block; /* 1 */
vertical-align: baseline; /* 2 */
}
/**
* Remove the default vertical scrollbar in IE.
*/
textarea {
overflow: auto;
}
/**
* 1. Add the correct box sizing in IE 10-.
* 2. Remove the padding in IE 10-.
*/
[type='checkbox'],
[type='radio'] {
box-sizing: border-box; /* 1 */
padding: 0; /* 2 */
}
/**
* Correct the cursor style of increment and decrement buttons in Chrome.
*/
[type='number']::-webkit-inner-spin-button,
[type='number']::-webkit-outer-spin-button {
height: auto;
}
/**
* 1. Correct the odd appearance in Chrome and Safari.
* 2. Correct the outline style in Safari.
*/
[type='search'] {
-webkit-appearance: textfield; /* 1 */
outline-offset: -2px; /* 2 */
}
/**
* Remove the inner padding and cancel buttons in Chrome and Safari on macOS.
*/
[type='search']::-webkit-search-cancel-button,
[type='search']::-webkit-search-decoration {
-webkit-appearance: none;
}
/**
* 1. Correct the inability to style clickable types in iOS and Safari.
* 2. Change font properties to `inherit` in Safari.
*/
::-webkit-file-upload-button {
-webkit-appearance: button; /* 1 */
font: inherit; /* 2 */
}
/* Interactive
========================================================================== */
/*
* Add the correct display in IE 9-.
* 1. Add the correct display in Edge, IE, and Firefox.
*/
details,
menu {
display: block;
}
/*
* Add the correct display in all browsers.
*/
summary {
display: list-item;
}
/* Scripting
========================================================================== */
/**
* Add the correct display in IE 9-.
*/
canvas {
display: inline-block;
}
/**
* Add the correct display in IE.
*/
template {
display: none;
}
/* Hidden
========================================================================== */
/**
* Add the correct display in IE 10-.
*/
[hidden] {
display: none;
}
+11
View File
@@ -0,0 +1,11 @@
// ==========================================================================
// Resets
// ==========================================================================
// BORDER-BOX ALL THE THINGS!
// http://paulirish.com/2012/box-sizing-border-box-ftw/
*,
*::after,
*::before {
box-sizing: border-box;
}
+6
View File
@@ -0,0 +1,6 @@
// ==========================================================================
// Breakpoints
// ==========================================================================
$screen-sm: 480px;
$screen-md: 768px;
+32
View File
@@ -0,0 +1,32 @@
// ==========================================================================
// Colors
// ==========================================================================
// Greyscale
$gray-dark: #343f4a;
$gray: #55646b;
$gray-light: #cbd0d3;
$gray-lighter: #dbe3e8;
$off-white: #f2f5f7;
// Text
$color-text: #fff;
// Plyr
$color-brand-primary: #1aafff;
// Brands
$color-twitter: #4baaf4;
$color-youtube: #cc181e;
$color-vimeo: #19b7ed;
// Elements
$color-link: #fff;
$color-background: $color-brand-primary;
// Buttons
$color-button-background: #fff;
$color-button-text: $gray;
// Focus
$tab-focus-default-color: #fff;
+12
View File
@@ -0,0 +1,12 @@
// ==========================================================================
// Misc cosmetic
// ==========================================================================
// Button count arrow size
$arrow-size: 5px;
// Radii
$border-radius-base: 4px;
// Background
$page-background: linear-gradient(to left top, lighten($color-background, 10%), darken($color-background, 20%));
+5
View File
@@ -0,0 +1,5 @@
// ==========================================================================
// Icons
// ==========================================================================
$icon-size: 16px;
+5
View File
@@ -0,0 +1,5 @@
// ==========================================================================
// Layout
// ==========================================================================
$container-max-width: 1280px;
+18
View File
@@ -0,0 +1,18 @@
// ==========================================================================
// Plyr Settings
// ==========================================================================
// Font
$plyr-font-family: inherit;
// Sizes
$plyr-font-size-base: 13px;
$plyr-font-size-small: 12px;
$plyr-font-size-time: 11px;
$plyr-font-size-badges: 9px;
// Captions
$plyr-font-size-captions-base: $plyr-font-size-base;
$plyr-font-size-captions-small: $plyr-font-size-small;
$plyr-font-size-captions-medium: 18px;
$plyr-font-size-captions-large: 21px;
+5
View File
@@ -0,0 +1,5 @@
// ==========================================================================
// Colors
// ==========================================================================
$spacing-base: 20px;
+20
View File
@@ -0,0 +1,20 @@
// ==========================================================================
// Typography
// ==========================================================================
$font-sans-serif: 'Gordita', 'Avenir', 'Helvetica Neue', sans-serif;
$font-size-base: 15;
$font-size-small: 13;
$font-size-large: 18;
$font-size-h1: 64;
$font-weight-light: 300;
$font-weight-regular: 400;
$font-weight-medium: 500;
$font-weight-bold: 600;
$font-weight-black: 900;
$line-height-base: 1.75;
$letter-spacing-headings: -0.025em;
+35
View File
@@ -0,0 +1,35 @@
// ==========================================================================
// Base
// ==========================================================================
// Set to 100% for rem sizing
html {
font-size: 100%;
}
body {
@include font-smoothing();
@include font-size($font-size-base);
color: $color-text;
font-family: $font-sans-serif;
font-weight: $font-weight-medium;
line-height: $line-height-base;
text-shadow: 0 1px 1px rgba(#000, 0.15);
}
button,
input,
select,
textarea {
font: inherit;
}
p,
small {
margin: 0 0 $spacing-base;
}
small {
@include font-size($font-size-small);
display: block;
}
+10
View File
@@ -0,0 +1,10 @@
// ==========================================================================
// Headings
// ==========================================================================
h1 {
@include font-size($font-size-h1);
font-weight: $font-weight-bold;
letter-spacing: $letter-spacing-headings;
margin: 0 0 ($spacing-base / 2);
}
+7
View File
@@ -0,0 +1,7 @@
// ==========================================================================
// Misc cosmetic
// ==========================================================================
.no-border {
border: 0;
}
+20
View File
@@ -0,0 +1,20 @@
// ==========================================================================
// Hidden
// ==========================================================================
[hidden] {
display: none;
}
// Hide only visually, but have it available for screen readers: h5bp.com/v
.sr-only {
border: 0;
clip: rect(0 0 0 0);
height: 1px;
margin: -1px;
opacity: 0.001;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px;
}
BIN
View File
Binary file not shown.
+1 -1
View File
File diff suppressed because one or more lines are too long
+7604 -1
View File
File diff suppressed because one or more lines are too long
+1
View File
File diff suppressed because one or more lines are too long
+2
View File
File diff suppressed because one or more lines are too long
+1
View File
File diff suppressed because one or more lines are too long
+12640
View File
File diff suppressed because it is too large Load Diff
+1
View File
File diff suppressed because one or more lines are too long
+2
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
View File
@@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg"><symbol id="plyr-airplay" viewBox="0 0 18 18"><path d="M16 1H2a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h3v-2H3V3h12v8h-2v2h3a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1z"/><path d="M4 17h10l-5-6z"/></symbol><symbol id="plyr-captions-off" viewBox="0 0 18 18"><path d="M1 1c-.6 0-1 .4-1 1v11c0 .6.4 1 1 1h4.6l2.7 2.7c.2.2.4.3.7.3.3 0 .5-.1.7-.3l2.7-2.7H17c.6 0 1-.4 1-1V2c0-.6-.4-1-1-1H1zm4.52 10.15c1.99 0 3.01-1.32 3.28-2.41l-1.29-.39c-.19.66-.78 1.45-1.99 1.45-1.14 0-2.2-.83-2.2-2.34 0-1.61 1.12-2.37 2.18-2.37 1.23 0 1.78.75 1.95 1.43l1.3-.41C8.47 4.96 7.46 3.76 5.5 3.76c-1.9 0-3.61 1.44-3.61 3.7 0 2.26 1.65 3.69 3.63 3.69zm7.57 0c1.99 0 3.01-1.32 3.28-2.41l-1.29-.39c-.19.66-.78 1.45-1.99 1.45-1.14 0-2.2-.83-2.2-2.34 0-1.61 1.12-2.37 2.18-2.37 1.23 0 1.78.75 1.95 1.43l1.3-.41c-.28-1.15-1.29-2.35-3.25-2.35-1.9 0-3.61 1.44-3.61 3.7 0 2.26 1.65 3.69 3.63 3.69z" fill-rule="evenodd" fill-opacity=".5"/></symbol><symbol id="plyr-captions-on" viewBox="0 0 18 18"><path d="M1 1c-.6 0-1 .4-1 1v11c0 .6.4 1 1 1h4.6l2.7 2.7c.2.2.4.3.7.3.3 0 .5-.1.7-.3l2.7-2.7H17c.6 0 1-.4 1-1V2c0-.6-.4-1-1-1H1zm4.52 10.15c1.99 0 3.01-1.32 3.28-2.41l-1.29-.39c-.19.66-.78 1.45-1.99 1.45-1.14 0-2.2-.83-2.2-2.34 0-1.61 1.12-2.37 2.18-2.37 1.23 0 1.78.75 1.95 1.43l1.3-.41C8.47 4.96 7.46 3.76 5.5 3.76c-1.9 0-3.61 1.44-3.61 3.7 0 2.26 1.65 3.69 3.63 3.69zm7.57 0c1.99 0 3.01-1.32 3.28-2.41l-1.29-.39c-.19.66-.78 1.45-1.99 1.45-1.14 0-2.2-.83-2.2-2.34 0-1.61 1.12-2.37 2.18-2.37 1.23 0 1.78.75 1.95 1.43l1.3-.41c-.28-1.15-1.29-2.35-3.25-2.35-1.9 0-3.61 1.44-3.61 3.7 0 2.26 1.65 3.69 3.63 3.69z" fill-rule="evenodd"/></symbol><symbol id="plyr-enter-fullscreen" viewBox="0 0 18 18"><path d="M10 3h3.6l-4 4L11 8.4l4-4V8h2V1h-7zM7 9.6l-4 4V10H1v7h7v-2H4.4l4-4z"/></symbol><symbol id="plyr-exit-fullscreen" viewBox="0 0 18 18"><path d="M1 12h3.6l-4 4L2 17.4l4-4V17h2v-7H1zM16 .6l-4 4V1h-2v7h7V6h-3.6l4-4z"/></symbol><symbol id="plyr-fast-forward" viewBox="0 0 18 18"><path d="M7.875 7.171L0 1v16l7.875-6.171V17L18 9 7.875 1z"/></symbol><symbol id="plyr-muted" viewBox="0 0 18 18"><path d="M12.4 12.5l2.1-2.1 2.1 2.1 1.4-1.4L15.9 9 18 6.9l-1.4-1.4-2.1 2.1-2.1-2.1L11 6.9 13.1 9 11 11.1zM3.786 6.008H.714C.286 6.008 0 6.31 0 6.76v4.512c0 .452.286.752.714.752h3.072l4.071 3.858c.5.3 1.143 0 1.143-.602V2.752c0-.601-.643-.977-1.143-.601L3.786 6.008z"/></symbol><symbol id="plyr-pause" viewBox="0 0 18 18"><path d="M6 1H3c-.6 0-1 .4-1 1v14c0 .6.4 1 1 1h3c.6 0 1-.4 1-1V2c0-.6-.4-1-1-1zM12 1c-.6 0-1 .4-1 1v14c0 .6.4 1 1 1h3c.6 0 1-.4 1-1V2c0-.6-.4-1-1-1h-3z"/></symbol><symbol id="plyr-pip" viewBox="0 0 18 18"><path d="M13.293 3.293L7.022 9.564l1.414 1.414 6.271-6.271L17 7V1h-6z"/><path d="M13 15H3V5h5V3H2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-6h-2v5z"/></symbol><symbol id="plyr-play" viewBox="0 0 18 18"><path d="M15.562 8.1L3.87.225C3.052-.337 2 .225 2 1.125v15.75c0 .9 1.052 1.462 1.87.9L15.563 9.9c.584-.45.584-1.35 0-1.8z"/></symbol><symbol id="plyr-restart" viewBox="0 0 18 18"><path d="M9.7 1.2l.7 6.4 2.1-2.1c1.9 1.9 1.9 5.1 0 7-.9 1-2.2 1.5-3.5 1.5-1.3 0-2.6-.5-3.5-1.5-1.9-1.9-1.9-5.1 0-7 .6-.6 1.4-1.1 2.3-1.3l-.6-1.9C6 2.6 4.9 3.2 4 4.1 1.3 6.8 1.3 11.2 4 14c1.3 1.3 3.1 2 4.9 2 1.9 0 3.6-.7 4.9-2 2.7-2.7 2.7-7.1 0-9.9L16 1.9l-6.3-.7z"/></symbol><symbol id="plyr-rewind" viewBox="0 0 18 18"><path d="M10.125 1L0 9l10.125 8v-6.171L18 17V1l-7.875 6.171z"/></symbol><symbol id="plyr-settings" viewBox="0 0 18 18"><path d="M16.135 7.784a2 2 0 0 1-1.23-2.969c.322-.536.225-.998-.094-1.316l-.31-.31c-.318-.318-.78-.415-1.316-.094a2 2 0 0 1-2.969-1.23C10.065 1.258 9.669 1 9.219 1h-.438c-.45 0-.845.258-.997.865a2 2 0 0 1-2.969 1.23c-.536-.322-.999-.225-1.317.093l-.31.31c-.318.318-.415.781-.093 1.317a2 2 0 0 1-1.23 2.969C1.26 7.935 1 8.33 1 8.781v.438c0 .45.258.845.865.997a2 2 0 0 1 1.23 2.969c-.322.536-.225.998.094 1.316l.31.31c.319.319.782.415 1.316.094a2 2 0 0 1 2.969 1.23c.151.607.547.865.997.865h.438c.45 0 .845-.258.997-.865a2 2 0 0 1 2.969-1.23c.535.321.997.225 1.316-.094l.31-.31c.318-.318.415-.781.094-1.316a2 2 0 0 1 1.23-2.969c.607-.151.865-.547.865-.997v-.438c0-.451-.26-.846-.865-.997zM9 12a3 3 0 1 1 0-6 3 3 0 0 1 0 6z"/></symbol><symbol id="plyr-volume" viewBox="0 0 18 18"><path d="M15.6 3.3c-.4-.4-1-.4-1.4 0-.4.4-.4 1 0 1.4C15.4 5.9 16 7.4 16 9c0 1.6-.6 3.1-1.8 4.3-.4.4-.4 1 0 1.4.2.2.5.3.7.3.3 0 .5-.1.7-.3C17.1 13.2 18 11.2 18 9s-.9-4.2-2.4-5.7z"/><path d="M11.282 5.282a.909.909 0 0 0 0 1.316c.735.735.995 1.458.995 2.402 0 .936-.425 1.917-.995 2.487a.909.909 0 0 0 0 1.316c.145.145.636.262 1.018.156a.725.725 0 0 0 .298-.156C13.773 11.733 14.13 10.16 14.13 9c0-.17-.002-.34-.011-.51-.053-.992-.319-2.005-1.522-3.208a.909.909 0 0 0-1.316 0zM3.786 6.008H.714C.286 6.008 0 6.31 0 6.76v4.512c0 .452.286.752.714.752h3.072l4.071 3.858c.5.3 1.143 0 1.143-.602V2.752c0-.601-.643-.977-1.143-.601L3.786 6.008z"/></symbol></svg>

After

Width:  |  Height:  |  Size: 4.9 KiB

-1
View File
@@ -1 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg"><symbol id="icon-captions-off" viewBox="0 0 18 18"><title>Captions Off</title><path d="M1 2c-.552 0-1 .448-1 1v12c0 .552.448 1 1 1h16c.552 0 1-.448 1-1V3c0-.552-.448-1-1-1H1zm1 12V4h14v10H2z"/></symbol><symbol id="icon-captions-on" viewBox="0 0 18 18"><title>Captions On</title><path d="M1 2c-.552 0-1 .448-1 1v12c0 .552.448 1 1 1h16c.552 0 1-.448 1-1V3c0-.552-.448-1-1-1H1zm1 12V4h14v10H2z"/><path d="M3 11h3v2H3zM12 11h3v2h-3zM7 11h4v2H7z"/></symbol><symbol id="icon-enter-fullscreen" viewBox="0 0 18 18"><title>Enter Fullscreen</title><path d="M10.3 9.7c.7.677 1.4 0 1.4 0L16 5.4V10h2V3c0-.6-.4-1-1-1h-7v2h4.6l-4.3 4.3s-.7.723 0 1.4z"/><path d="M7 2v2H2v10h14v-1h2v2c0 .6-.4 1-1 1H1c-.6 0-1-.4-1-1V3c0-.6.4-1 1-1h6z"/></symbol><symbol id="icon-exit-fullscreen" viewBox="0 0 18 18"><title>Exit Fullscreen</title><path d="M7.7 8.3c-.7-.677-1.4 0-1.4 0L2 12.6V8H0v7c0 .6.4 1 1 1h7v-2H3.4l4.3-4.3s.7-.723 0-1.4z"/><path d="M11 16v-2h5V4H2v1H0V3c0-.6.4-1 1-1h16c.6 0 1 .4 1 1v12c0 .6-.4 1-1 1h-6z"/></symbol><symbol id="icon-fast-forward" viewBox="0 0 18 18"><title>Fast Forward</title><path d="M17.57 8.246L7 2c-.552 0-1 .448-1 1v1.954L1 2c-.552 0-1 .448-1 1v12c0 .552.448 1 1 1l5-2.955V15c0 .552.448 1 1 1l10.57-6.246c.266-.158.43-.444.43-.754s-.164-.597-.43-.754zM6 10.722l-4 2.364V4.914l4 2.364v3.444zm2 2.364V4.914L14.915 9 8 13.086z"/></symbol><symbol id="icon-muted" viewBox="0 0 18 18"><title>Muted</title><path d="M9.214 2c-.11 0-.225.032-.334.1L4.832 4.91C4.75 4.97 4.65 5 4.55 5H.995C.446 5 0 5.448 0 6v6c0 .552.446 1 .996 1H4.55c.1 0 .2.03.282.09L8.88 15.9c.11.068.223.1.334.1.392 0 .747-.4.747-.95V2.95c0-.55-.354-.95-.746-.95zM7.97 12.834L5.58 11.177c-.166-.115-.364-.178-.566-.178H2.49c-.274 0-.497-.225-.497-.5v-3c0-.277.223-.5.498-.5h2.526c.202 0 .4-.063.566-.18L7.97 5.165v7.67zM14.934 8.8c-.086-1.75-1.514-2.992-2.507-3.65-.47-.312-1.094-.122-1.325.408l-.038.086c-.188.43-.045.94.336 1.194.706.473 1.586 1.247 1.624 2.065.032.676-.553 1.468-1.663 2.27-.397.288-.528.84-.284 1.275l.042.075c.266.475.866.624 1.3.312 1.74-1.25 2.586-2.606 2.516-4.037z"/><path d="M13.957 9.2c.086 1.747 1.514 2.99 2.507 3.648.47.312 1.094.122 1.325-.408l.037-.086c.188-.43.045-.94-.336-1.194-.705-.473-1.585-1.247-1.623-2.065-.032-.676.553-1.468 1.663-2.27.398-.288.53-.84.285-1.275l-.042-.075c-.266-.475-.866-.624-1.3-.312-1.74 1.25-2.586 2.606-2.516 4.037z"/></symbol><symbol id="icon-pause" viewBox="0 0 18 18"><title>Pause</title><path d="M2 4v10c0 2 2 2 2 2h2s2 0 2-2V4c0-2-2-2-2-2H4S2 2 2 4zm2 0h2v10H4V4zM10 4v10c0 2 2 2 2 2h2s2 0 2-2V4c0-2-2-2-2-2h-2s-2 0-2 2zm2 0h2v10h-2V4z"/></symbol><symbol id="icon-play" viewBox="0 0 18 18"><title>Play</title><path d="M5 4.914L11.915 9 5 13.086V4.914zM4 2c-.552 0-1 .448-1 1v12c0 .552.448 1 1 1l10.57-6.246c.266-.158.43-.444.43-.754s-.164-.597-.43-.754L4 2z"/></symbol><symbol id="icon-restart" viewBox="0 0 16 16"><path d="M7.7 1.2l.7 6.4 2.1-2.1c1.9 1.9 1.9 5.1 0 7-.9 1-2.2 1.5-3.5 1.5-1.3 0-2.6-.5-3.5-1.5-1.9-1.9-1.9-5.1 0-7 .6-.6 1.4-1.1 2.3-1.3l-.6-1.9C4 2.6 2.9 3.2 2 4.1-.7 6.8-.7 11.2 2 14c1.3 1.3 3.1 2 4.9 2 1.9 0 3.6-.7 4.9-2 2.7-2.7 2.7-7.1 0-9.9L14 1.9l-6.3-.7z"/></symbol><symbol id="icon-rewind" viewBox="0 0 18 21"><title>Rewind</title><path d="M.43 10.754L11 17c.552 0 1-.448 1-1v-1.954L17 17c.552 0 1-.448 1-1V4c0-.552-.448-1-1-1l-5 2.955V4c0-.552-.448-1-1-1L.43 9.246C.165 9.404 0 9.69 0 10s.164.597.43.754zM12 8.278l4-2.364v8.172l-4-2.364V8.278zm-2-2.364v8.172L3.085 10 10 5.914z"/></symbol><symbol id="icon-volume" viewBox="0 0 18 18"><title>Volume</title><path d="M10.214 2c-.11 0-.225.032-.334.1L5.832 4.91C5.75 4.97 5.65 5 5.55 5H1.995C1.446 5 1 5.448 1 6v6c0 .552.446 1 .996 1H5.55c.1 0 .2.03.282.09L9.88 15.9c.11.068.223.1.334.1.392 0 .747-.4.747-.95V2.95c0-.55-.354-.95-.746-.95zM8.97 12.834L6.58 11.177c-.166-.115-.364-.178-.566-.178H3.49c-.274 0-.497-.225-.497-.5v-3c0-.277.223-.5.498-.5h2.526c.202 0 .4-.063.566-.18L8.97 5.165v7.67zM16.934 8.8c-.086-1.75-1.514-2.992-2.507-3.65-.47-.312-1.094-.122-1.325.408l-.038.086c-.188.43-.045.94.336 1.194.706.473 1.586 1.247 1.624 2.065.032.676-.553 1.468-1.663 2.27-.397.288-.528.84-.284 1.275l.042.075c.266.475.866.624 1.3.312 1.74-1.25 2.586-2.606 2.516-4.037z"/></symbol></svg>

Before

Width:  |  Height:  |  Size: 4.3 KiB

-1
View File
File diff suppressed because one or more lines are too long
-1
View File
@@ -1 +0,0 @@
"document"in self&&("classList"in document.createElement("_")?!function(){"use strict";var e=document.createElement("_");if(e.classList.add("c1","c2"),!e.classList.contains("c2")){var t=function(e){var t=DOMTokenList.prototype[e];DOMTokenList.prototype[e]=function(e){var n,s=arguments.length;for(n=0;s>n;n++)e=arguments[n],t.call(this,e)}};t("add"),t("remove")}if(e.classList.toggle("c3",!1),e.classList.contains("c3")){var n=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(e,t){return 1 in arguments&&!this.contains(e)==!t?t:n.call(this,e)}}e=null}():!function(e){"use strict";if("Element"in e){var t="classList",n="prototype",s=e.Element[n],i=Object,r=String[n].trim||function(){return this.replace(/^\s+|\s+$/g,"")},o=Array[n].indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(t in this&&this[t]===e)return t;return-1},a=function(e,t){this.name=e,this.code=DOMException[e],this.message=t},c=function(e,t){if(""===t)throw new a("SYNTAX_ERR","An invalid or illegal string was specified");if(/\s/.test(t))throw new a("INVALID_CHARACTER_ERR","String contains an invalid character");return o.call(e,t)},l=function(e){for(var t=r.call(e.getAttribute("class")||""),n=t?t.split(/\s+/):[],s=0,i=n.length;i>s;s++)this.push(n[s]);this._updateClassName=function(){e.setAttribute("class",this.toString())}},u=l[n]=[],p=function(){return new l(this)};if(a[n]=Error[n],u.item=function(e){return this[e]||null},u.contains=function(e){return e+="",-1!==c(this,e)},u.add=function(){var e,t=arguments,n=0,s=t.length,i=!1;do e=t[n]+"",-1===c(this,e)&&(this.push(e),i=!0);while(++n<s);i&&this._updateClassName()},u.remove=function(){var e,t,n=arguments,s=0,i=n.length,r=!1;do for(e=n[s]+"",t=c(this,e);-1!==t;)this.splice(t,1),r=!0,t=c(this,e);while(++s<i);r&&this._updateClassName()},u.toggle=function(e,t){e+="";var n=this.contains(e),s=n?t!==!0&&"remove":t!==!1&&"add";return s&&this[s](e),t===!0||t===!1?t:!n},u.toString=function(){return this.join(" ")},i.defineProperty){var d={get:p,enumerable:!0,configurable:!0};try{i.defineProperty(s,t,d)}catch(m){-2146823252===m.number&&(d.enumerable=!1,i.defineProperty(s,t,d))}}else i[n].__defineGetter__&&s.__defineGetter__(t,p)}}(self)),plyr.setup(".js-media-player",{debug:!0,title:"Video demo",tooltips:!0,captions:{defaultActive:!0},onSetup:function(){console.log("✓ Setup done")}}),shr.setup({count:{classname:"btn__count"}}),function(){function e(e,t,n){if(e)if(e.classList)e.classList[n?"add":"remove"](t);else{var s=(" "+e.className+" ").replace(/\s+/g," ").replace(" "+t+" ","");e.className=s+(n?" "+t:"")}}function t(){var t=this,s=t.getAttribute("data-source"),i=document.querySelector(".js-media-player").plyr;switch(s){case"video":i.source({type:"video",title:"View From A Blue Moon",sources:[{src:"https://cdn.selz.com/plyr/1.5/View_From_A_Blue_Moon_Trailer-HD.mp4",type:"video/mp4"},{src:"https://cdn.selz.com/plyr/1.5/View_From_A_Blue_Moon_Trailer-HD.webm",type:"video/webm"}],poster:"https://cdn.selz.com/plyr/1.5/View_From_A_Blue_Moon_Trailer-HD.jpg",tracks:[{kind:"captions",label:"English",srclang:"en",src:"https://cdn.selz.com/plyr/1.0/example_captions_en.vtt","default":!0}]});break;case"audio":i.source({type:"audio",title:"Kishi Bashi &ndash; &ldquo;It All Began With A Burst&rdquo;",sources:[{src:"https://cdn.selz.com/plyr/1.5/Kishi_Bashi_-_It_All_Began_With_a_Burst.mp3",type:"audio/mp3"},{src:"https://cdn.selz.com/plyr/1.5/Kishi_Bashi_-_It_All_Began_With_a_Burst.ogg",type:"audio/ogg"}]});break;case"youtube":i.source({type:"video",title:"View From A Blue Moon",sources:[{src:"bTqVqk7FSmY",type:"youtube"}]});break;case"vimeo":i.source({type:"video",title:"View From A Blue Moon",sources:[{src:"143418951",type:"vimeo"}]})}for(var r=n.length-1;r>=0;r--)e(n[r].parentElement,"active",!1);e((event.target||event.srcElement).parentElement,"active",!0)}for(var n=document.querySelectorAll("[data-source]"),s=n.length-1;s>=0;s--)n[s].addEventListener("click",t)}(),document.domain.indexOf("plyr.io")>-1&&(!function(e,t,n,s,i,r,o){e.GoogleAnalyticsObject=i,e[i]=e[i]||function(){(e[i].q=e[i].q||[]).push(arguments)},e[i].l=1*new Date,r=t.createElement(n),o=t.getElementsByTagName(n)[0],r.async=1,r.src=s,o.parentNode.insertBefore(r,o)}(window,document,"script","//www.google-analytics.com/analytics.js","ga"),ga("create","UA-40881672-11","auto"),ga("send","pageview"));
-1
View File
@@ -1 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg"><symbol id="icon-github" viewBox="0 0 16 16"><path fill-rule="evenodd" clip-rule="evenodd" d="M8 .2c-4.4 0-8 3.6-8 8 0 3.5 2.3 6.5 5.5 7.6.4.1.5-.2.5-.4V14c-2.2.5-2.7-1-2.7-1-.4-.9-.9-1.2-.9-1.2-.7-.5.1-.5.1-.5.8.1 1.2.8 1.2.8.7 1.3 1.9.9 2.3.7.1-.5.3-.9.5-1.1-1.8-.2-3.6-.9-3.6-4 0-.9.3-1.6.8-2.1-.1-.2-.4-1 .1-2.1 0 0 .7-.2 2.2.8.6-.2 1.3-.3 2-.3s1.4.1 2 .3c1.5-1 2.2-.8 2.2-.8.4 1.1.2 1.9.1 2.1.5.6.8 1.3.8 2.1 0 3.1-1.9 3.7-3.7 3.9.3.4.6.9.6 1.6v2.2c0 .2.1.5.6.4 3.2-1.1 5.5-4.1 5.5-7.6-.1-4.4-3.7-8-8.1-8z"/></symbol><symbol id="icon-twitter" viewBox="0 0 16 16"><title>Twitter</title><path d="M16 3c-.6.3-1.2.4-1.9.5.7-.4 1.2-1 1.4-1.8-.6.4-1.3.6-2.1.8-.6-.6-1.5-1-2.4-1-1.7 0-3.2 1.5-3.2 3.3 0 .3 0 .5.1.7-2.7-.1-5.2-1.4-6.8-3.4-.3.5-.4 1-.4 1.7 0 1.1.6 2.1 1.5 2.7-.5 0-1-.2-1.5-.4C.7 7.7 1.8 9 3.3 9.3c-.3.1-.6.1-.9.1-.2 0-.4 0-.6-.1.4 1.3 1.6 2.3 3.1 2.3-1.1.9-2.5 1.4-4.1 1.4H0c1.5.9 3.2 1.5 5 1.5 6 0 9.3-5 9.3-9.3v-.4C15 4.3 15.6 3.7 16 3z"/></symbol><symbol id="icon-vimeo" viewBox="0 0 16 16"><path d="M16 4.3c-.1 1.6-1.2 3.7-3.3 6.4-2.2 2.8-4 4.2-5.5 4.2-.9 0-1.7-.9-2.4-2.6C4 9.9 3.4 5 2 5c-.1 0-.5.3-1.2.8l-.8-1c.8-.7 3.5-3.4 4.7-3.5 1.2-.1 2 .7 2.3 2.5.3 2 .8 6.1 1.8 6.1.9 0 2.5-3.4 2.6-4 .1-.9-.3-1.9-2.3-1.1.8-2.6 2.3-3.8 4.5-3.8 1.7.1 2.5 1.2 2.4 3.3z"/></symbol><symbol id="icon-youtube" viewBox="0 0 16 16"><path d="M15.8 4.8c-.2-1.3-.8-2.2-2.2-2.4C11.4 2 8 2 8 2s-3.4 0-5.6.4C1 2.6.3 3.5.2 4.8 0 6.1 0 8 0 8s0 1.9.2 3.2c.2 1.3.8 2.2 2.2 2.4C4.6 14 8 14 8 14s3.4 0 5.6-.4c1.4-.3 2-1.1 2.2-2.4C16 9.9 16 8 16 8s0-1.9-.2-3.2zM6 11V5l5 3-5 3z"/></symbol></svg>

Before

Width:  |  Height:  |  Size: 1.7 KiB

-18
View File
@@ -1,18 +0,0 @@
<!doctype html>
<html lang="en" class="error">
<head>
<meta charset="utf-8" />
<title>Doh. Looks like something went wrong.</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Docs styles -->
<link rel="stylesheet" href="dist/docs.css">
</head>
<body>
<main>
<h1>Doh.</h1>
<p>Looks like something went wrong.</p>
<a href="http://plyr.io" class="btn">Back to plyr.io</a>
</main>
</body>
</html>
-127
View File
@@ -1,127 +0,0 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Plyr - A simple HTML5 media player</title>
<meta name="description" content="A simple HTML5 media player with custom controls and WebVTT captions.">
<meta name="author" content="Sam Potts">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Styles -->
<link rel="stylesheet" href="../dist/plyr.css">
<!-- Docs styles -->
<link rel="stylesheet" href="dist/docs.css">
</head>
<body>
<header>
<h1>Plyr</h1>
<p>A simple, accessible HTML5 media player by <a href="https://twitter.com/sam_potts" target="_blank">@sam_potts</a> from <a href="https://twitter.com/selz" target="_blank">@selz</a></p>
<nav>
<ul>
<li>
<a href="https://github.com/selz/plyr" target="_blank" class="btn btn--large btn--primary" data-shr-network="github">
<svg class="icon"><use xlink:href="#icon-github"/></svg>Download on GitHub
</a>
</li>
<li>
<a href="https://twitter.com/intent/tweet?text=A+simple+HTML5+media+player+with+custom+controls+and+WebVTT+captions.&url=http%3A%2F%2Fplyr.io&via=Sam_Potts" target="_blank" class="btn btn--large btn--twitter" data-shr-network="twitter">
<svg class="icon"><use xlink:href="#icon-twitter"/></svg>Tweet
</a>
</li>
</ul>
</nav>
</header>
<main role="main" id="main">
<nav class="btn__bar">
<ul>
<li class="active">
<button type="button" class="btn" data-source="video">Video</button>
</li>
<li>
<button type="button" class="btn" data-source="audio">Audio</button>
</li>
<li>
<button type="button" class="btn btn--youtube" data-source="youtube"><svg class="icon"><use xlink:href="#icon-youtube"/></svg>YouTube</button>
</li>
<li>
<button type="button" class="btn btn--vimeo" data-source="vimeo"><svg class="icon"><use xlink:href="#icon-vimeo"/></svg>Vimeo</button>
</li>
</ul>
</nav>
<section>
<div class="js-media-player">
<video poster="https://cdn.selz.com/plyr/1.5/View_From_A_Blue_Moon_Trailer-HD.jpg" controls crossorigin>
<!-- Video files -->
<source src="https://cdn.selz.com/plyr/1.5/View_From_A_Blue_Moon_Trailer-HD.mp4" type="video/mp4">
<source src="https://cdn.selz.com/plyr/1.5/View_From_A_Blue_Moon_Trailer-HD.webm" type="video/webm">
<!-- Text track file -->
<track kind="captions" label="English" srclang="en" src="https://cdn.selz.com/plyr/1.0/example_captions_en.vtt" default>
<!-- Fallback for browsers that don't support the <video> element -->
<a href="https://cdn.selz.com/plyr/1.0/movie.mp4">Download</a>
</video>
</div>
<ul>
<li class="plyr__cite plyr__cite--video"><small><a href="http://viewfromabluemoon.com/" target="_blank">View From A Blue Moon</a> &copy; Brainfarm</small></li>
<li class="plyr__cite plyr__cite--audio"><small><a href="http://www.kishibashi.com/" target="_blank">Kishi Bashi &ndash; &ldquo;It All Began With A Burst&rdquo;</a> &copy; Kishi Bashi</small></li>
<li class="plyr__cite plyr__cite--youtube"><small><a href="https://www.youtube.com/watch?v=bTqVqk7FSmY" target="_blank">View From A Blue Moon</a> on <span class="color--youtube"><svg class="icon"><use xlink:href="#icon-youtube"/></svg>YouTube</span></small>
<li class="plyr__cite plyr__cite--vimeo"><small><a href="https://vimeo.com/ondemand/viewfromabluemoon4k" target="_blank">View From A Blue Moon</a> on <span class="color--vimeo"><svg class="icon"><use xlink:href="#icon-vimeo"/></svg>Vimeo</span></small>
</ul>
</section>
</main>
<!-- Load SVG defs -->
<!-- You should bundle all SVG/Icons into one file using a build tool such as gulp and svg store -->
<script>
(function() {
[
'../dist/sprite.svg',
'dist/docs.svg'
]
.forEach(function(u) {
var x = new XMLHttpRequest(),
b = document.body;
// Check for CORS support
// If you're loading from same domain, you can remove the whole if/else statement
// XHR for Chrome/Firefox/Opera/Safari/IE10+
if ('withCredentials' in x) {
x.open('GET', u, true);
}
// XDomainRequest for IE8 & IE9
else if (typeof XDomainRequest == 'function') {
x = new XDomainRequest();
x.open('GET', u);
}
else { return; }
// Inject hidden div with sprite on load
x.onload = function() {
var c = document.createElement('div');
c.setAttribute('hidden', '');
c.innerHTML = x.responseText;
b.insertBefore(c, b.childNodes[0]);
}
// Timeout for IE9
setTimeout(function () {
x.send();
}, 0);
});
})();
</script>
<!-- Plyr core script -->
<script src="../dist/plyr.js"></script>
<!-- Shr core script -->
<script src="https://cdn.shr.one/0.1.9/shr.js"></script>
<!-- Docs script -->
<script src="dist/docs.js"></script>
</body>
</html>
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 171 KiB

-133
View File
@@ -1,133 +0,0 @@
// ==========================================================================
// Docs example
// ==========================================================================
/*global plyr, shr*/
// Setup the player
plyr.setup('.js-media-player', {
debug: true,
title: 'Video demo',
tooltips: true,
captions: {
defaultActive: true
},
onSetup: function() {
console.log('✓ Setup done');
}
});
// Setup shr
shr.setup({
count: {
classname: 'btn__count'
}
});
// General functions
(function() {
var buttons = document.querySelectorAll('[data-source]');
// Bind to each button
for (var i = buttons.length - 1; i >= 0; i--) {
buttons[i].addEventListener('click', newSource);
}
function toggleClass(element, className, state) {
if (element) {
if (element.classList) {
element.classList[state ? 'add' : 'remove'](className);
}
else {
var name = (' ' + element.className + ' ').replace(/\s+/g, ' ').replace(' ' + className + ' ', '');
element.className = name + (state ? ' ' + className : '');
}
}
}
// Set a new source
function newSource() {
var trigger = this,
type = trigger.getAttribute('data-source'),
player = document.querySelector('.js-media-player').plyr;
switch(type) {
case 'video':
player.source({
type: 'video',
title: 'View From A Blue Moon',
sources: [{
src: 'https://cdn.selz.com/plyr/1.5/View_From_A_Blue_Moon_Trailer-HD.mp4',
type: 'video/mp4'
},
{
src: 'https://cdn.selz.com/plyr/1.5/View_From_A_Blue_Moon_Trailer-HD.webm',
type: 'video/webm'
}],
poster: 'https://cdn.selz.com/plyr/1.5/View_From_A_Blue_Moon_Trailer-HD.jpg',
tracks: [{
kind: 'captions',
label: 'English',
srclang:'en',
src: 'https://cdn.selz.com/plyr/1.0/example_captions_en.vtt',
default: true
}]
});
break;
case 'audio':
player.source({
type: 'audio',
title: 'Kishi Bashi &ndash; &ldquo;It All Began With A Burst&rdquo;',
sources: [{
src: 'https://cdn.selz.com/plyr/1.5/Kishi_Bashi_-_It_All_Began_With_a_Burst.mp3',
type: 'audio/mp3'
},
{
src: 'https://cdn.selz.com/plyr/1.5/Kishi_Bashi_-_It_All_Began_With_a_Burst.ogg',
type: 'audio/ogg'
}]
});
break;
case 'youtube':
player.source({
type: 'video',
title: 'View From A Blue Moon',
sources: [{
src: 'bTqVqk7FSmY',
type: 'youtube'
}]
});
break;
case 'vimeo':
player.source({
type: 'video',
title: 'View From A Blue Moon',
sources: [{
src: '143418951',
type: 'vimeo'
}]
});
break;
}
for (var x = buttons.length - 1; x >= 0; x--) {
toggleClass(buttons[x].parentElement, 'active', false);
}
toggleClass((event.target || event.srcElement).parentElement, 'active', true);
}
})();
// Google analytics
// For demo site (http://[www.]plyr.io) only
if(document.domain.indexOf('plyr.io') > -1) {
(function(i,s,o,g,r,a,m){i.GoogleAnalyticsObject=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-40881672-11', 'auto');
ga('send', 'pageview');
}
-237
View File
@@ -1,237 +0,0 @@
/*
* classList.js: Cross-browser full element.classList implementation.
* 1.1.20150312
*
* By Eli Grey, http://eligrey.com
* License: Dedicated to the public domain.
* See https://github.com/eligrey/classList.js/blob/master/LICENSE.md
*/
/*global self, document, DOMException */
/*! @source http://purl.eligrey.com/github/classList.js/blob/master/classList.js */
if ("document" in self) {
// Full polyfill for browsers with no classList support
if (!("classList" in document.createElement("_"))) {
(function (view) {
"use strict";
if (!('Element' in view)) return;
var
classListProp = "classList"
, protoProp = "prototype"
, elemCtrProto = view.Element[protoProp]
, objCtr = Object
, strTrim = String[protoProp].trim || function () {
return this.replace(/^\s+|\s+$/g, "");
}
, arrIndexOf = Array[protoProp].indexOf || function (item) {
var
i = 0
, len = this.length
;
for (; i < len; i++) {
if (i in this && this[i] === item) {
return i;
}
}
return -1;
}
// Vendors: please allow content code to instantiate DOMExceptions
, DOMEx = function (type, message) {
this.name = type;
this.code = DOMException[type];
this.message = message;
}
, checkTokenAndGetIndex = function (classList, token) {
if (token === "") {
throw new DOMEx(
"SYNTAX_ERR"
, "An invalid or illegal string was specified"
);
}
if (/\s/.test(token)) {
throw new DOMEx(
"INVALID_CHARACTER_ERR"
, "String contains an invalid character"
);
}
return arrIndexOf.call(classList, token);
}
, ClassList = function (elem) {
var
trimmedClasses = strTrim.call(elem.getAttribute("class") || "")
, classes = trimmedClasses ? trimmedClasses.split(/\s+/) : []
, i = 0
, len = classes.length
;
for (; i < len; i++) {
this.push(classes[i]);
}
this._updateClassName = function () {
elem.setAttribute("class", this.toString());
};
}
, classListProto = ClassList[protoProp] = []
, classListGetter = function () {
return new ClassList(this);
}
;
// Most DOMException implementations don't allow calling DOMException's toString()
// on non-DOMExceptions. Error's toString() is sufficient here.
DOMEx[protoProp] = Error[protoProp];
classListProto.item = function (i) {
return this[i] || null;
};
classListProto.contains = function (token) {
token += "";
return checkTokenAndGetIndex(this, token) !== -1;
};
classListProto.add = function () {
var
tokens = arguments
, i = 0
, l = tokens.length
, token
, updated = false
;
do {
token = tokens[i] + "";
if (checkTokenAndGetIndex(this, token) === -1) {
this.push(token);
updated = true;
}
}
while (++i < l);
if (updated) {
this._updateClassName();
}
};
classListProto.remove = function () {
var
tokens = arguments
, i = 0
, l = tokens.length
, token
, updated = false
, index
;
do {
token = tokens[i] + "";
index = checkTokenAndGetIndex(this, token);
while (index !== -1) {
this.splice(index, 1);
updated = true;
index = checkTokenAndGetIndex(this, token);
}
}
while (++i < l);
if (updated) {
this._updateClassName();
}
};
classListProto.toggle = function (token, force) {
token += "";
var
result = this.contains(token)
, method = result ?
force !== true && "remove"
:
force !== false && "add"
;
if (method) {
this[method](token);
}
if (force === true || force === false) {
return force;
} else {
return !result;
}
};
classListProto.toString = function () {
return this.join(" ");
};
if (objCtr.defineProperty) {
var classListPropDesc = {
get: classListGetter
, enumerable: true
, configurable: true
};
try {
objCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc);
} catch (ex) { // IE 8 doesn't support enumerable:true
if (ex.number === -0x7FF5EC54) {
classListPropDesc.enumerable = false;
objCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc);
}
}
} else if (objCtr[protoProp].__defineGetter__) {
elemCtrProto.__defineGetter__(classListProp, classListGetter);
}
}(self));
} else {
// There is full or partial native classList support, so just check if we need
// to normalize the add/remove and toggle APIs.
(function () {
"use strict";
var testElement = document.createElement("_");
testElement.classList.add("c1", "c2");
// Polyfill for IE 10/11 and Firefox <26, where classList.add and
// classList.remove exist but support only one argument at a time.
if (!testElement.classList.contains("c2")) {
var createMethod = function(method) {
var original = DOMTokenList.prototype[method];
DOMTokenList.prototype[method] = function(token) {
var i, len = arguments.length;
for (i = 0; i < len; i++) {
token = arguments[i];
original.call(this, token);
}
};
};
createMethod('add');
createMethod('remove');
}
testElement.classList.toggle("c3", false);
// Polyfill for IE 10 and Firefox <24, where classList.toggle does not
// support the second argument.
if (testElement.classList.contains("c3")) {
var _toggle = DOMTokenList.prototype.toggle;
DOMTokenList.prototype.toggle = function(token, force) {
if (1 in arguments && !this.contains(token) === !force) {
return force;
} else {
return _toggle.call(this, token);
}
};
}
testElement = null;
}());
}
}
-52
View File
@@ -1,52 +0,0 @@
// ==========================================================================
// Base layout
// ==========================================================================
// BORDER-BOX ALL THE THINGS!
// http://paulirish.com/2012/box-sizing-border-box-ftw/
*, *::after, *::before {
box-sizing: border-box;
}
// Hidden
[hidden] {
display: none;
}
// Base
html {
height: 100%;
font-size: 100%;
background: linear-gradient(#fff, @body-background) fixed;
}
body {
font-family: "Avenir", "Helvetica Neue", Helvetica, Arial, sans-serif;
line-height: 1.5;
text-align: center;
color: @gray;
.font-smoothing(on);
padding: 0 (@padding-base / 2);
}
// Header
header {
padding: @padding-base;
margin-bottom: @padding-base;
p {
.font-size(18);
}
@media (min-width: @screen-sm) {
padding-top: (@padding-base * 3);
padding-bottom: (@padding-base * 3);
}
}
// Sections
section {
padding-bottom: @padding-base;
@media (min-width: @screen-sm) {
padding-bottom: (@padding-base * 2);
}
}
-172
View File
@@ -1,172 +0,0 @@
// ==========================================================================
// Buttons
// ==========================================================================
nav {
ul {
list-style: none;
margin: 0;
padding: 0;
font-size: 0;
}
li {
display: inline-block;
margin-top: (@padding-base / 2);
.font-size();
white-space: nowrap;
}
li + li {
margin-left: @padding-base;
}
}
// Tabs
.btn__bar {
position: relative;
margin: 0 auto @padding-base;
max-width: @example-width-video;
white-space: nowrap;
&::before {
content: "";
position: absolute;
top: 50%;
left: 0;
right: 0;
height: 1px;
background: @gray-lighter;
}
ul {
position: relative;
z-index: 1;
display: inline-block;
user-select: none;
}
li {
margin: 0;
&:first-child .btn {
border-radius: 4px 0 0 4px;
}
&:last-child .btn {
border-radius: 0 4px 4px 0;
}
& + li .btn {
margin-left: -1px;
}
&.active .btn {
&:extend(.btn--primary);
box-shadow: inset 0 1px 1px rgba(0,0,0, .2);
position: relative;
z-index: 1;
.icon {
color: inherit;
}
}
&.active + li .btn:hover {
z-index: 0;
}
}
.btn {
position: relative;
display: block;
border-radius: 0;
&:hover,
&:focus {
z-index: 1;
}
}
@media (min-width: 560px) {
margin-bottom: (@padding-base * 2);
}
}
// Shared
.btn,
.btn__count {
display: inline-block;
vertical-align: middle;
border-radius: @border-radius-base;
font-weight: 600;
user-select: none;
}
// Buttons
.btn {
padding: (@padding-base / 2) ((@padding-base / 2) + 2);
background: linear-gradient(lighten(@body-background, 2%), darken(@body-background, 3%));
border: 1px solid @gray-light;
box-shadow: 0 1px 1px rgba(0,0,0, .05);
text-shadow: 0 1px 1px #fff;
color: @gray;
transition: background .1s ease, color .1s ease;
.font-size(@font-size-small);
&:hover,
&:focus {
border-color: darken(@gray-light, 8%);
color: @gray;
outline: 0;
}
}
// Sizes
.btn--large {
padding: (@padding-base / 2) @padding-base;
.font-size();
}
// Styles
.btn--primary {
background-image: linear-gradient(@link-color, darken(@link-color, 5%));
background-color: @link-color;
border-color: darken(@link-color, 10%);
box-shadow: 0 1px 1px rgba(0,0,0, .15);
text-shadow: 0 1px 1px rgba(0,0,0, .1);
color: #fff;
&:hover,
&:focus {
color: #fff;
border-color: darken(@link-color, 20%);
}
}
.btn--youtube .icon {
color: @color-youtube;
}
.btn--vimeo .icon {
color: @color-vimeo;
}
.btn--twitter .icon {
color: @color-twitter;
}
// Count bubble
.btn__count {
position: relative;
margin-left: (@padding-base / 2);
padding: (@padding-base / 2) (@padding-base * .75);
background: #fff;
border: 1px solid @gray-light;
&::before {
content: "";
position: absolute;
display: block;
width: @arrow-size;
height: @arrow-size;
left: 1px;
top: 50%;
margin-top: -(@arrow-size / 2);
background: inherit;
border: inherit;
border-width: 1px 0 0 1px;
transform: rotate(-45deg) translate(-50%, -50%);
}
}
-72
View File
@@ -1,72 +0,0 @@
// ==========================================================================
// Examples
// ==========================================================================
section {
margin: 0 auto @padding-base;
max-width: @example-width-video;
}
video,
.plyr__video-embed {
border-radius: @border-radius-base;
max-width: 100%;
vertical-align: middle;
}
.plyr__video-embed {
-webkit-mask-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC);
}
// Example players
.plyr {
margin: 0 auto;
&__controls {
border-radius: 0 0 @border-radius-base @border-radius-base;
}
video,
.plyr__video-embed {
border-radius: @border-radius-base @border-radius-base 0 0;
}
&--fullscreen,
&--fullscreen-active {
max-width: none;
.plyr-controls,
video,
iframe {
border-radius: 0;
}
iframe {
-webkit-mask-image: none;
}
}
}
.plyr--audio {
max-width: @example-width-audio;
.plyr__controls {
border-radius: @border-radius-base;
}
.plyr__progress {
border-radius: @border-radius-base @border-radius-base 0 0;
overflow: hidden;
}
}
// Style full supported player
.plyr__cite {
display: none;
margin-top: @padding-base;
.icon {
margin-right: (@padding-base / 4);
}
}
.plyr--video ~ ul .plyr__cite--video,
.plyr--audio ~ ul .plyr__cite--audio,
.plyr--youtube ~ ul .plyr__cite--youtube,
.plyr--vimeo ~ ul .plyr__cite--vimeo {
display: block;
}
-63
View File
@@ -1,63 +0,0 @@
// ==========================================================================
// Typography
// ==========================================================================
// Headings
h1,
h2 {
letter-spacing: -.025em;
color: #2E3C44;
margin: 0 0 (@padding-base / 2);
line-height: 1.2;
.font-smoothing();
}
h1 {
.font-size(@font-size-h1);
color: #3498DB;
}
// Paragraph and small
p,
small {
margin: 0 0 @padding-base;
}
small {
display: block;
padding: 0 (@padding-base / 2);
.font-size(@font-size-small);
}
// Lists
ul,
li {
list-style: none;
margin: 0;
padding: 0;
}
// Links
a {
text-decoration: none;
color: @link-color;
border-bottom: 1px dotted currentColor;
transition: background .3s ease, color .3s ease, border .3s ease;
&:hover,
&:focus {
color: @gray-dark;
border-bottom-color: rgba(0,0,0,0);
}
&:focus {
.tab-focus();
}
&.logo {
border: 0;
}
}
.color--vimeo {
color: @color-vimeo;
}
.color--youtube {
color: @color-youtube;
}
-26
View File
@@ -1,26 +0,0 @@
// ==========================================================================
// HTML5 Video Player Demo Page
// ==========================================================================
// CSS Reset
@import "lib/normalize.less";
// Mixins
@import "lib/mixins.less";
// Variables
@import "variables.less";
// Animation
@import "lib/animation.less";
// Type
@import "lib/fontface.less";
@import "components/type.less";
// Components
@import "components/base.less";
@import "components/icons.less";
@import "components/buttons.less";
@import "components/error.less";
@import "components/examples.less";
-18
View File
@@ -1,18 +0,0 @@
// ==========================================================================
// Fonts
// ==========================================================================
@font-face {
font-family: "Avenir";
src: url("//cdn.plyr.io/fonts/avenir-medium.woff2") format("woff2"),
url("//cdn.plyr.io/fonts/avenir-medium.woff") format("woff");
font-style: normal;
font-weight: 400;
}
@font-face {
font-family: "Avenir";
src: url("//cdn.plyr.io/fonts/avenir-bold.woff2") format("woff2"),
url("//cdn.plyr.io/fonts/avenir-bold.woff") format("woff");
font-style: normal;
font-weight: 600;
}
-41
View File
@@ -1,41 +0,0 @@
// ==========================================================================
// Mixins
// ==========================================================================
// Contain floats: nicolasgallagher.com/micro-clearfix-hack/
// ---------------------------------------
.clearfix() {
zoom: 1;
&:before,
&:after { content: ""; display: table; }
&:after { clear: both; }
}
// Webkit-style focus
// ---------------------------------------
.tab-focus() {
// Default
outline: thin dotted @gray-dark;
// Webkit
outline-offset: 1px;
}
// Use rems for font sizing
// Leave <body> at 100%/16px
// ---------------------------------------
.font-size(@font-size: 16){
@rem: round((@font-size / 16), 3);
font-size: (@font-size * 1px);
font-size: ~"@{rem}rem";
}
// Font smoothing
// ---------------------------------------
.font-smoothing(@mode: on) when (@mode = on) {
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
}
.font-smoothing(@mode: on) when (@mode = off) {
-moz-osx-font-smoothing: auto;
-webkit-font-smoothing: subpixel-antialiased;
}
-406
View File
@@ -1,406 +0,0 @@
/*! normalize.css v2.1.3 | MIT License | git.io/normalize */
/* ==========================================================================
HTML5 display definitions
========================================================================== */
/**
* Correct `block` display not defined in IE 8/9.
*/
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
nav,
section,
summary {
display: block;
}
/**
* Correct `inline-block` display not defined in IE 8/9.
*/
audio,
canvas,
video {
display: inline-block;
}
/**
* Prevent modern browsers from displaying `audio` without controls.
* Remove excess height in iOS 5 devices.
*/
audio:not([controls]) {
display: none;
height: 0;
}
/**
* Address `[hidden]` styling not present in IE 8/9.
* Hide the `template` element in IE, Safari, and Firefox < 22.
*/
[hidden],
template {
display: none;
}
/* ==========================================================================
Base
========================================================================== */
/**
* 1. Set default font family to sans-serif.
* 2. Prevent iOS text size adjust after orientation change, without disabling
* user zoom.
*/
html {
font-family: sans-serif; /* 1 */
-ms-text-size-adjust: 100%; /* 2 */
-webkit-text-size-adjust: 100%; /* 2 */
}
/**
* Remove default margin.
*/
body {
margin: 0;
}
/* ==========================================================================
Links
========================================================================== */
/**
* Remove the gray background color from active links in IE 10.
*/
a {
background: transparent;
}
/**
* Address `outline` inconsistency between Chrome and other browsers.
*/
a:focus {
outline: thin dotted;
}
/**
* Improve readability when focused and also mouse hovered in all browsers.
*/
a:active,
a:hover {
outline: 0;
}
/* ==========================================================================
Typography
========================================================================== */
/**
* Address variable `h1` font-size and margin within `section` and `article`
* contexts in Firefox 4+, Safari 5, and Chrome.
*/
h1 {
font-size: 2em;
margin: 0.67em 0;
}
/**
* Address styling not present in IE 8/9, Safari 5, and Chrome.
*/
abbr[title] {
border-bottom: 1px dotted;
}
/**
* Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome.
*/
b,
strong {
font-weight: bold;
}
/**
* Address styling not present in Safari 5 and Chrome.
*/
dfn {
font-style: italic;
}
/**
* Address differences between Firefox and other browsers.
*/
hr {
-moz-box-sizing: content-box;
box-sizing: content-box;
height: 0;
}
/**
* Address styling not present in IE 8/9.
*/
mark {
background: #ff0;
color: #000;
}
/**
* Correct font family set oddly in Safari 5 and Chrome.
*/
code,
kbd,
pre,
samp {
font-family: monospace, serif;
font-size: 1em;
}
/**
* Improve readability of pre-formatted text in all browsers.
*/
pre {
white-space: pre-wrap;
}
/**
* Set consistent quote types.
*/
q {
quotes: "\201C" "\201D" "\2018" "\2019";
}
/**
* Address inconsistent and variable font size in all browsers.
*/
small {
font-size: 80%;
}
/**
* Prevent `sub` and `sup` affecting `line-height` in all browsers.
*/
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sup {
top: -0.5em;
}
sub {
bottom: -0.25em;
}
/* ==========================================================================
Embedded content
========================================================================== */
/**
* Remove border when inside `a` element in IE 8/9.
*/
img {
border: 0;
}
/**
* Correct overflow displayed oddly in IE 9.
*/
svg:not(:root) {
overflow: hidden;
}
/* ==========================================================================
Figures
========================================================================== */
/**
* Address margin not present in IE 8/9 and Safari 5.
*/
figure {
margin: 0;
}
/* ==========================================================================
Forms
========================================================================== */
/**
* Define consistent border, margin, and padding.
*/
fieldset {
border: 1px solid #c0c0c0;
margin: 0 2px;
padding: 0.35em 0.625em 0.75em;
}
/**
* 1. Correct `color` not being inherited in IE 8/9.
* 2. Remove padding so people aren't caught out if they zero out fieldsets.
*/
legend {
border: 0; /* 1 */
padding: 0; /* 2 */
}
/**
* 1. Correct font family not being inherited in all browsers.
* 2. Correct font size not being inherited in all browsers.
* 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome.
*/
button,
input,
select,
textarea {
font-family: inherit; /* 1 */
font-size: 100%; /* 2 */
margin: 0; /* 3 */
}
/**
* Address Firefox 4+ setting `line-height` on `input` using `!important` in
* the UA stylesheet.
*/
button,
input {
line-height: normal;
}
/**
* Address inconsistent `text-transform` inheritance for `button` and `select`.
* All other form control elements do not inherit `text-transform` values.
* Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+.
* Correct `select` style inheritance in Firefox 4+ and Opera.
*/
button,
select {
text-transform: none;
}
/**
* 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
* and `video` controls.
* 2. Correct inability to style clickable `input` types in iOS.
* 3. Improve usability and consistency of cursor style between image-type
* `input` and others.
*/
button,
html input[type="button"], /* 1 */
input[type="reset"],
input[type="submit"] {
-webkit-appearance: button; /* 2 */
cursor: pointer; /* 3 */
}
/**
* Re-set default cursor for disabled elements.
*/
button[disabled],
html input[disabled] {
cursor: default;
}
/**
* 1. Address box sizing set to `content-box` in IE 8/9/10.
* 2. Remove excess padding in IE 8/9/10.
*/
input[type="checkbox"],
input[type="radio"] {
box-sizing: border-box; /* 1 */
padding: 0; /* 2 */
}
/**
* 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
* 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
* (include `-moz` to future-proof).
*/
input[type="search"] {
-webkit-appearance: textfield; /* 1 */
-moz-box-sizing: content-box;
-webkit-box-sizing: content-box; /* 2 */
box-sizing: content-box;
}
/**
* Remove inner padding and search cancel button in Safari 5 and Chrome
* on OS X.
*/
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
/**
* Remove inner padding and border in Firefox 4+.
*/
button::-moz-focus-inner,
input::-moz-focus-inner {
border: 0;
padding: 0;
}
/**
* 1. Remove default vertical scrollbar in IE 8/9.
* 2. Improve readability and alignment in all browsers.
*/
textarea {
overflow: auto; /* 1 */
vertical-align: top; /* 2 */
}
/* ==========================================================================
Tables
========================================================================== */
/**
* Remove most spacing between table cells.
*/
table {
border-collapse: collapse;
border-spacing: 0;
}
-43
View File
@@ -1,43 +0,0 @@
// ==========================================================================
// Variables
// ==========================================================================
// Colors
@blue: #3498db;
@gray-dark: #343f4a;
@gray: #55646b;
@gray-light: #cbd0d3;
@gray-lighter: #dbe3e8;
@off-white: #f2f5f7;
// Brands
@color-twitter: #4BAAF4;
@color-youtube: #cc181e;
@color-vimeo: #19b7ed;
// Base
@body-background: @off-white;
// Type
@font-size-base: 16;
@font-size-small: 14;
@font-size-h1: 64;
// Elements
@link-color: @blue;
@padding-base: 20px;
@arrow-size: 8px;
// Icons
@icon-size: 18px;
// Breakpoints
@screen-sm: 480px;
@screen-md: 768px;
// Radii
@border-radius-base: 4px;
// Examples
@example-width-audio: 520px;
@example-width-video: 1200px;
-12
View File
@@ -1,12 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="16px" height="16px" viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
<path fill-rule="evenodd" clip-rule="evenodd" d="M8,0.2c-4.4,0-8,3.6-8,8c0,3.5,2.3,6.5,5.5,7.6
C5.9,15.9,6,15.6,6,15.4c0-0.2,0-0.7,0-1.4C3.8,14.5,3.3,13,3.3,13c-0.4-0.9-0.9-1.2-0.9-1.2c-0.7-0.5,0.1-0.5,0.1-0.5
c0.8,0.1,1.2,0.8,1.2,0.8C4.4,13.4,5.6,13,6,12.8c0.1-0.5,0.3-0.9,0.5-1.1c-1.8-0.2-3.6-0.9-3.6-4c0-0.9,0.3-1.6,0.8-2.1
c-0.1-0.2-0.4-1,0.1-2.1c0,0,0.7-0.2,2.2,0.8c0.6-0.2,1.3-0.3,2-0.3c0.7,0,1.4,0.1,2,0.3c1.5-1,2.2-0.8,2.2-0.8
c0.4,1.1,0.2,1.9,0.1,2.1c0.5,0.6,0.8,1.3,0.8,2.1c0,3.1-1.9,3.7-3.7,3.9C9.7,12,10,12.5,10,13.2c0,1.1,0,1.9,0,2.2
c0,0.2,0.1,0.5,0.6,0.4c3.2-1.1,5.5-4.1,5.5-7.6C16,3.8,12.4,0.2,8,0.2z"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

-11
View File
@@ -1,11 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="16px" height="16px" viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
<title>Twitter</title>
<path d="M16,3c-0.6,0.3-1.2,0.4-1.9,0.5c0.7-0.4,1.2-1,1.4-1.8c-0.6,0.4-1.3,0.6-2.1,0.8c-0.6-0.6-1.5-1-2.4-1
C9.3,1.5,7.8,3,7.8,4.8c0,0.3,0,0.5,0.1,0.7C5.2,5.4,2.7,4.1,1.1,2.1c-0.3,0.5-0.4,1-0.4,1.7c0,1.1,0.6,2.1,1.5,2.7
c-0.5,0-1-0.2-1.5-0.4c0,0,0,0,0,0c0,1.6,1.1,2.9,2.6,3.2C3,9.4,2.7,9.4,2.4,9.4c-0.2,0-0.4,0-0.6-0.1c0.4,1.3,1.6,2.3,3.1,2.3
c-1.1,0.9-2.5,1.4-4.1,1.4c-0.3,0-0.5,0-0.8,0c1.5,0.9,3.2,1.5,5,1.5c6,0,9.3-5,9.3-9.3c0-0.1,0-0.3,0-0.4C15,4.3,15.6,3.7,16,3z"/>
</svg>

Before

Width:  |  Height:  |  Size: 981 B

-9
View File
@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="16px" height="16px" viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
<path d="M16,4.3c-0.1,1.6-1.2,3.7-3.3,6.4c-2.2,2.8-4,4.2-5.5,4.2c-0.9,0-1.7-0.9-2.4-2.6C4,9.9,3.4,5,2,5
C1.9,5,1.5,5.3,0.8,5.8L0,4.8c0.8-0.7,3.5-3.4,4.7-3.5C5.9,1.2,6.7,2,7,3.8c0.3,2,0.8,6.1,1.8,6.1c0.9,0,2.5-3.4,2.6-4
c0.1-0.9-0.3-1.9-2.3-1.1c0.8-2.6,2.3-3.8,4.5-3.8C15.3,1.1,16.1,2.2,16,4.3z"/>
</svg>

Before

Width:  |  Height:  |  Size: 779 B

-9
View File
@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="16px" height="16px" viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
<path d="M15.8,4.8c-0.2-1.3-0.8-2.2-2.2-2.4C11.4,2,8,2,8,2S4.6,2,2.4,2.4C1,2.6,0.3,3.5,0.2,4.8C0,6.1,0,8,0,8
s0,1.9,0.2,3.2c0.2,1.3,0.8,2.2,2.2,2.4C4.6,14,8,14,8,14s3.4,0,5.6-0.4c1.4-0.3,2-1.1,2.2-2.4C16,9.9,16,8,16,8S16,6.1,15.8,4.8z
M6,11V5l5,3L6,11z"/>
</svg>

Before

Width:  |  Height:  |  Size: 739 B

+360 -224
View File
@@ -1,276 +1,412 @@
// ==========================================================================
// Gulp build script
// ==========================================================================
/*global require, __dirname*/
/*jshint -W079 */
/* global require, __dirname */
/* eslint no-console: "off" */
var fs = require("fs"),
path = require("path"),
gulp = require("gulp"),
gutil = require("gulp-util"),
concat = require("gulp-concat"),
uglify = require("gulp-uglify"),
less = require("gulp-less"),
sass = require("gulp-sass"),
minify = require("gulp-minify-css"),
run = require("run-sequence"),
prefix = require("gulp-autoprefixer"),
svgstore = require("gulp-svgstore"),
svgmin = require("gulp-svgmin"),
rename = require("gulp-rename"),
s3 = require("gulp-s3"),
gzip = require("gulp-gzip"),
replace = require("gulp-replace"),
open = require("gulp-open"),
size = require("gulp-size");
const del = require('del');
const path = require('path');
const gulp = require('gulp');
const gutil = require('gulp-util');
const concat = require('gulp-concat');
const filter = require('gulp-filter');
const sass = require('gulp-sass');
const cleancss = require('gulp-clean-css');
const run = require('run-sequence');
const prefix = require('gulp-autoprefixer');
const gitbranch = require('git-branch');
const svgstore = require('gulp-svgstore');
const svgmin = require('gulp-svgmin');
const rename = require('gulp-rename');
const s3 = require('gulp-s3');
const replace = require('gulp-replace');
const open = require('gulp-open');
const size = require('gulp-size');
const rollup = require('gulp-better-rollup');
const babel = require('rollup-plugin-babel');
const sourcemaps = require('gulp-sourcemaps');
const uglify = require('gulp-uglify-es').default;
const commonjs = require('rollup-plugin-commonjs');
const resolve = require('rollup-plugin-node-resolve');
var root = __dirname,
paths = {
const bundles = require('./bundles.json');
const pkg = require('./package.json');
// Get AWS config
let aws = {};
try {
aws = require('./aws.json'); //eslint-disable-line
} catch (e) {
// Do nothing
}
const minSuffix = '.min';
// Paths
const root = __dirname;
const paths = {
plyr: {
// Source paths
src: {
less: path.join(root, "src/less/**/*"),
sass: path.join(root, "src/sass/**/*"),
js: path.join(root, "src/js/**/*"),
sprite: path.join(root, "src/sprite/*.svg")
sass: path.join(root, 'src/sass/**/*.scss'),
js: path.join(root, 'src/js/**/*'),
sprite: path.join(root, 'src/sprite/*.svg'),
},
// Output paths
output: path.join(root, "dist/")
output: path.join(root, 'dist/'),
},
docs: {
demo: {
// Source paths
src: {
less: path.join(root, "docs/src/less/**/*"),
js: path.join(root, "docs/src/js/**/*"),
sprite: path.join(root, "docs/src/sprite/**/*")
sass: path.join(root, 'demo/src/sass/**/*.scss'),
js: path.join(root, 'demo/src/js/**/*'),
},
// Output paths
output: path.join(root, "docs/dist/"),
// Docs
root: path.join(root, "docs/")
output: path.join(root, 'demo/dist/'),
// Demo
root: path.join(root, 'demo/'),
},
upload: [path.join(root, "dist/**"), path.join(root, "docs/dist/**")]
},
upload: [
path.join(root, `dist/*${minSuffix}.*`),
path.join(root, 'dist/*.css'),
path.join(root, 'dist/*.svg'),
path.join(root, `demo/dist/*${minSuffix}.*`),
path.join(root, 'demo/dist/*.css'),
],
};
// Task arrays
tasks = {
less: [],
sass: [],
js: [],
sprite: []
},
const tasks = {
sass: [],
js: [],
sprite: [],
clean: ['clean'],
};
// Fetch bundles from JSON
bundles = loadJSON(path.join(root, "bundles.json")),
package = loadJSON(path.join(root, "package.json"));
// Size plugin
const sizeOptions = { showFiles: true, gzip: true };
// Load json
function loadJSON(path) {
try {
return JSON.parse(fs.readFileSync(path));
}
catch(err) {
return {};
}
}
// Browserlist
const browsers = ['> 1%'];
var build = {
js: function (files, bundle) {
for (var key in files) {
(function(key) {
var name = "js-" + key;
tasks.js.push(name);
// Babel config
const babelrc = {
presets: [[
'env',
{
targets: {
browsers,
},
useBuiltIns: true,
modules: false,
},
]],
plugins: ['external-helpers'],
babelrc: false,
exclude: 'node_modules/**',
};
gulp.task(name, function () {
return gulp
.src(bundles[bundle].js[key])
.pipe(concat(key))
.pipe(uglify())
.pipe(gulp.dest(paths[bundle].output));
});
})(key);
}
// Clean out /dist
gulp.task('clean', () => {
const dirs = [
paths.plyr.output,
paths.demo.output,
].map(dir => path.join(dir, '**/*'));
// Don't delete the mp4
dirs.push(`!${path.join(paths.plyr.output, '**/*.mp4')}`);
del(dirs);
});
const build = {
js(files, bundle, options) {
Object.keys(files).forEach(key => {
const name = `js:${key}`;
tasks.js.push(name);
const { output } = paths[bundle];
gulp.task(name, () =>
gulp
.src(bundles[bundle].js[key])
.pipe(sourcemaps.init())
.pipe(concat(key))
.pipe(
rollup(
{
plugins: [
resolve(),
commonjs(),
babel(babelrc),
],
},
options,
),
)
.pipe(sourcemaps.write(''))
.pipe(gulp.dest(output))
.pipe(filter('**/*.js'))
.pipe(uglify())
.pipe(size(sizeOptions))
.pipe(rename({ suffix: minSuffix }))
.pipe(sourcemaps.write(''))
.pipe(gulp.dest(output)),
);
});
},
less: function(files, bundle) {
for (var key in files) {
(function (key) {
var name = "less-" + key;
tasks.less.push(name);
sass(files, bundle) {
Object.keys(files).forEach(key => {
const name = `sass:${key}`;
tasks.sass.push(name);
gulp.task(name, function () {
return gulp
.src(bundles[bundle].less[key])
.pipe(less())
.on("error", gutil.log)
.pipe(concat(key))
.pipe(prefix(["last 2 versions"], { cascade: true }))
.pipe(minify())
.pipe(gulp.dest(paths[bundle].output));
});
})(key);
}
gulp.task(name, () =>
gulp
.src(bundles[bundle].sass[key])
.pipe(sass())
.on('error', gutil.log)
.pipe(concat(key))
.pipe(prefix(browsers, { cascade: false }))
.pipe(cleancss())
.pipe(size(sizeOptions))
.pipe(gulp.dest(paths[bundle].output)),
);
});
},
sass: function(files, bundle) {
for (var key in files) {
(function (key) {
var name = "sass-" + key;
tasks.sass.push(name);
gulp.task(name, function () {
return gulp
.src(bundles[bundle].sass[key])
.pipe(sass())
.on("error", gutil.log)
.pipe(concat(key))
.pipe(prefix(["last 2 versions"], { cascade: true }))
.pipe(minify())
.pipe(gulp.dest(paths[bundle].output));
});
})(key);
}
},
sprite: function(bundle) {
var name = "sprite-" + bundle;
sprite(bundle) {
const name = `svg:sprite:${bundle}`;
tasks.sprite.push(name);
// Process Icons
gulp.task(name, function () {
return gulp
gulp.task(name, () =>
gulp
.src(paths[bundle].src.sprite)
.pipe(svgmin({
plugins: [{
removeDesc: true
}]
}))
.pipe(
svgmin({
plugins: [{
removeDesc: true,
}],
}),
)
.pipe(svgstore())
.pipe(rename({ basename: (bundle == "plyr" ? "sprite" : bundle) }))
.pipe(gulp.dest(paths[bundle].output));
});
}
.pipe(rename({ basename: bundle }))
.pipe(size(sizeOptions))
.pipe(gulp.dest(paths[bundle].output)),
);
},
};
// Plyr core files
build.js(bundles.plyr.js, "plyr");
build.less(bundles.plyr.less, "plyr");
build.sass(bundles.plyr.sass, "plyr");
build.sprite("plyr");
build.js(bundles.plyr.js, 'plyr', { name: 'Plyr', format: 'umd' });
build.sass(bundles.plyr.sass, 'plyr');
build.sprite('plyr');
// Docs files
build.less(bundles.docs.less, "docs");
build.js(bundles.docs.js, "docs");
build.sprite("docs");
// Demo files
build.sass(bundles.demo.sass, 'demo');
build.js(bundles.demo.js, 'demo', { format: 'iife' });
// Build all JS
gulp.task("js", function(){
gulp.task('js', () => {
run(tasks.js);
});
// Build SASS (for testing, default is LESS)
gulp.task("sass", function(){
run(tasks.sass);
});
// Watch for file changes
gulp.task("watch", function () {
gulp.task('watch', () => {
// Plyr core
gulp.watch(paths.plyr.src.js, tasks.js);
gulp.watch(paths.plyr.src.less, tasks.less);
gulp.watch(paths.plyr.src.sass, tasks.sass);
gulp.watch(paths.plyr.src.sprite, tasks.sprite);
// Docs
gulp.watch(paths.docs.src.js, tasks.js);
gulp.watch(paths.docs.src.less, tasks.less);
gulp.watch(paths.docs.src.sprite, tasks.sprite);
// Demo
gulp.watch(paths.demo.src.js, tasks.js);
gulp.watch(paths.demo.src.sass, tasks.sass);
});
// Default gulp task
gulp.task("default", function(){
run(tasks.js, tasks.less, tasks.sprite, "watch");
gulp.task('default', () => {
run(tasks.clean, tasks.js, tasks.sass, tasks.sprite, 'watch');
});
// Publish a version to CDN and docs
// Publish a version to CDN and demo
// --------------------------------------------
// Some options
var aws = loadJSON(path.join(root, "aws.json")),
version = package.version,
maxAge = 31536000, // seconds 1 year
options = {
cdn: {
headers: {
"Cache-Control": "max-age=" + maxAge,
"Vary": "Accept-Encoding"
},
gzippedOnly: true
},
docs: {
headers: {
"Cache-Control": "public, must-revalidate, proxy-revalidate, max-age=0",
"Vary": "Accept-Encoding"
},
gzippedOnly: true
}
};
// If aws is setup
if("cdn" in aws) {
var cdnpath = new RegExp(aws.cdn.bucket + "\/(\\d+\\.)?(\\d+\\.)?(\\*|\\d+)","gi"),
localpath = new RegExp("(\.\.\/)?dist", "gi");
if (Object.keys(aws).includes('cdn') && Object.keys(aws).includes('demo')) {
const { version } = pkg;
// Get branch info
const branch = {
current: gitbranch.sync(),
master: 'master',
beta: 'beta',
};
const allowed = [
branch.master,
branch.beta,
];
const maxAge = 31536000; // 1 year
const options = {
cdn: {
headers: {
'Cache-Control': `max-age=${maxAge}`,
Vary: 'Accept-Encoding',
},
},
demo: {
uploadPath: branch.current === branch.beta ? 'beta/' : null,
headers: {
'Cache-Control': 'no-cache, no-store, must-revalidate, max-age=0',
Vary: 'Accept-Encoding',
},
},
symlinks(ver, filename) {
return {
headers: {
// http://stackoverflow.com/questions/2272835/amazon-s3-object-redirect
'x-amz-website-redirect-location': `/${ver}/${filename}`,
'Cache-Control': 'no-cache, no-store, must-revalidate, max-age=0',
},
};
},
};
const regex = '(?:0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*).(?:0|[1-9][0-9]*)(?:-[\\da-z\\-]+(?:.[\\da-z\\-]+)*)?(?:\\+[\\da-z\\-]+(?:.[\\da-z\\-]+)*)?';
const semver = new RegExp(`v${regex}`, 'gi');
const localPath = new RegExp('(../)?dist', 'gi');
const versionPath = `https://${aws.cdn.domain}/${version}`;
const cdnpath = new RegExp(`${aws.cdn.domain}/${regex}/`, 'gi');
gulp.task('version', () => {
console.log(`Updating versions to '${version}'...`);
// Replace versioned URLs in source
const files = [
'plyr.js',
'plyr.polyfilled.js',
'defaults.js',
];
gulp
.src(files.map(file => path.join(root, `src/js/${file}`)))
.pipe(replace(semver, `v${version}`))
.pipe(replace(cdnpath, `${aws.cdn.domain}/${version}/`))
.pipe(gulp.dest(path.join(root, 'src/js/')));
});
// Publish version to CDN bucket
gulp.task('cdn', () => {
if (!allowed.includes(branch.current)) {
console.error(`Must be on ${allowed.join(', ')} to publish! (current: ${branch.current})`);
return null;
}
console.log(`Uploading '${version}' to ${aws.cdn.domain}...`);
// Upload to CDN
return (
gulp
.src(paths.upload)
.pipe(
rename(p => {
p.basename = p.basename.replace(minSuffix, ''); // eslint-disable-line
p.dirname = p.dirname.replace('.', version); // eslint-disable-line
}),
)
// Remove min suffix from source map URL
.pipe(replace(/sourceMappingURL=([\w-?.]+)/, (match, p1) => `sourceMappingURL=${p1.replace(minSuffix, '')}`))
.pipe(
size({
showFiles: true,
gzip: true,
}),
)
.pipe(replace(localPath, versionPath))
.pipe(s3(aws.cdn, options.cdn))
);
});
// Publish to demo bucket
gulp.task('demo', () => {
if (!allowed.includes(branch.current)) {
console.error(`Must be on ${allowed.join(', ')} to publish! (current: ${branch.current})`);
return null;
}
console.log(`Uploading '${version}' demo to ${aws.demo.domain}...`);
// Replace versioned files in readme.md
gulp
.src([`${root}/readme.md`])
.pipe(replace(cdnpath, `${aws.cdn.domain}/${version}/`))
.pipe(gulp.dest(root));
// Replace local file paths with remote paths in demo HTML
// e.g. "../dist/plyr.js" to "https://cdn.plyr.io/x.x.x/plyr.js"
const index = `${paths.demo.root}index.html`;
const error = `${paths.demo.root}error.html`;
const pages = [index];
if (branch.current === branch.master) {
pages.push(error);
}
gulp
.src(pages)
.pipe(replace(localPath, versionPath))
.pipe(s3(aws.demo, options.demo));
// Only update CDN for master (prod)
if (branch.current !== branch.master) {
return null;
}
// Upload error.html to cdn (as well as demo site)
return gulp
.src([error])
.pipe(replace(localPath, versionPath))
.pipe(s3(aws.cdn, options.demo));
});
// Update symlinks for latest
/* gulp.task("symlinks", function () {
console.log("Updating symlinks...");
return gulp.src(paths.upload)
.pipe(through.obj(function (chunk, enc, callback) {
if (chunk.stat.isFile()) {
// Get the filename
var filename = chunk.path.split("/").reverse()[0];
// Create the 0 byte redirect files to upload
createFile(filename, "")
.pipe(rename(function (path) {
path.dirname = path.dirname.replace(".", "latest");
}))
// Upload to S3 with correct headers
.pipe(s3(aws.cdn, options.symlinks(version, filename)));
}
callback(null, chunk);
}));
}); */
// Open the demo site to check it's sweet
gulp.task('open', () => {
console.log(`Opening ${aws.demo.domain}...`);
// A file must be specified or gulp will skip the task
// Doesn't matter which file since we set the URL above
// Weird, I know...
return gulp.src([`${paths.demo.root}index.html`]).pipe(
open('', {
url: `http://${aws.demo.domain}`,
}),
);
});
// Do everything
gulp.task('publish', () => {
run('version', tasks.clean, tasks.js, tasks.sass, tasks.sprite, 'cdn', 'demo');
});
}
// Publish version to CDN bucket
gulp.task("cdn", function () {
console.log("Uploading " + version + " to " + aws.cdn.bucket);
// Upload to CDN
gulp.src(paths.upload)
.pipe(size({
showFiles: true,
gzip: true
}))
.pipe(rename(function (path) {
path.dirname = path.dirname.replace(".", version);
}))
.pipe(gzip())
.pipe(s3(aws.cdn, options.cdn));
});
// Publish to Docs bucket
gulp.task("docs", function () {
console.log("Uploading " + version + " docs to " + aws.docs.bucket);
// Replace versioned files in readme.md
gulp.src([root + "/readme.md"])
.pipe(replace(cdnpath, aws.cdn.bucket + "/" + version))
.pipe(gulp.dest(root));
// Replace local file paths with remote paths in docs
// e.g. "../dist/plyr.js" to "https://cdn.plyr.io/x.x.x/plyr.js"
gulp.src([paths.docs.root + "*.html"])
.pipe(replace(localpath, "https://" + aws.cdn.bucket + "/" + version))
.pipe(gzip())
.pipe(s3(aws.docs, options.docs));
// Upload error.html to cdn (as well as docs site)
gulp.src([paths.docs.root + "error.html"])
.pipe(gzip())
.pipe(s3(aws.cdn, options.docs));
});
// Open the docs site to check it's sweet
gulp.task("open", function () {
console.log("Opening " + aws.docs.bucket + "...");
// A file must be specified or gulp will skip the task
// Doesn't matter which file since we set the URL above
// Weird, I know...
gulp.src([paths.docs.root + "index.html"])
.pipe(open("", {
url: "http://" + aws.docs.bucket
}));
});
// Do everything
gulp.task("publish", function () {
run(tasks.js, tasks.less, tasks.sprite, "cdn", "docs");
});
+1 -1
View File
@@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (c) 2015 Selz.com
Copyright (c) 2017 Sam Potts
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
+72 -41
View File
@@ -1,43 +1,74 @@
{
"name": "plyr",
"version": "1.5.0",
"description": "A simple HTML5 media player using custom controls",
"homepage": "http://plyr.io",
"main": "gulpfile.js",
"dependencies": {},
"devDependencies": {
"gulp": "^3.9.0",
"gulp-autoprefixer": "^3.1.0",
"gulp-concat": "^2.3.3",
"gulp-gzip": "^1.0.0",
"gulp-less": "^3.0.5",
"gulp-minify-css": "^1.2.1",
"gulp-open": "^1.0.0",
"gulp-rename": "^1.2.0",
"gulp-replace": "^0.5.3",
"gulp-s3": "^0.3.0",
"gulp-sass": "^2.1.0",
"gulp-size": "^2.0.0",
"gulp-svgmin": "^1.0.0",
"gulp-svgstore": "^5.0.0",
"gulp-uglify": "^1.5.1",
"gulp-util": "^3.0.7",
"run-sequence": "^1.1.5"
},
"scripts": {
"preinstall": "npm install -g gulp"
},
"keywords": [
"HTML5 Video",
"HTML5 Audio",
"Media Player"
],
"repository": {
"type": "git",
"url": "git://github.com/selz/plyr.git"
},
"authors": [
"Sam Potts <me@sampotts.me>"
],
"license": "MIT"
"name": "plyr",
"version": "3.0.11",
"description": "A simple, accessible and customizable HTML5, YouTube and Vimeo media player",
"homepage": "https://plyr.io",
"main": "./dist/plyr.js",
"browser": "./dist/plyr.min.js",
"sass": "./src/sass/plyr.scss",
"style": "./dist/plyr.css",
"devDependencies": {
"babel-core": "^6.26.0",
"babel-eslint": "^8.2.2",
"babel-plugin-external-helpers": "^6.22.0",
"babel-preset-env": "^1.6.1",
"del": "^3.0.0",
"eslint": "^4.19.1",
"eslint-config-airbnb-base": "^12.1.0",
"eslint-config-prettier": "^2.9.0",
"eslint-plugin-import": "^2.9.0",
"git-branch": "^2.0.1",
"gulp": "^3.9.1",
"gulp-autoprefixer": "^5.0.0",
"gulp-better-rollup": "^3.1.0",
"gulp-clean-css": "^3.9.3",
"gulp-concat": "^2.6.1",
"gulp-filter": "^5.1.0",
"gulp-open": "^3.0.1",
"gulp-rename": "^1.2.2",
"gulp-replace": "^0.6.1",
"gulp-s3": "^0.11.0",
"gulp-sass": "^3.2.1",
"gulp-size": "^3.0.0",
"gulp-sourcemaps": "^2.6.4",
"gulp-svgmin": "^1.2.4",
"gulp-svgstore": "^6.1.1",
"gulp-uglify-es": "^1.0.1",
"gulp-util": "^3.0.8",
"prettier-eslint": "^8.8.1",
"prettier-stylelint": "^0.4.2",
"rollup-plugin-babel": "^3.0.3",
"rollup-plugin-commonjs": "^9.1.0",
"rollup-plugin-node-resolve": "^3.3.0",
"run-sequence": "^2.2.1",
"stylelint": "^9.1.3",
"stylelint-config-prettier": "^3.0.4",
"stylelint-config-recommended": "^2.1.0",
"stylelint-config-sass-guidelines": "^5.0.0",
"stylelint-order": "^0.8.1",
"stylelint-scss": "^2.5.0",
"stylelint-selector-bem-pattern": "^2.0.0"
},
"keywords": ["HTML5 Video", "HTML5 Audio", "Media Player", "DASH", "Shaka", "WordPress", "HLS"],
"repository": {
"type": "git",
"url": "git://github.com/sampotts/plyr.git"
},
"license": "MIT",
"bugs": {
"url": "https://github.com/sampotts/plyr/issues"
},
"directories": {
"doc": "readme.md"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Sam Potts <sam@potts.es>",
"dependencies": {
"babel-polyfill": "^6.26.0",
"custom-event-polyfill": "^0.3.0",
"loadjs": "^3.5.4",
"raven-js": "^3.24.0"
}
}
+31
View File
@@ -0,0 +1,31 @@
{
"folders": [
{
"path": "."
}
],
"settings": {
// Exclude from the editor
"files.exclude": {
"**/node_modules": true
},
// Exclude from search
"search.exclude": {
"dist/": true
},
// Linting
"stylelint.enable": true,
"css.validate": false,
"scss.validate": false,
"javascript.validate.enable": false,
// Prettier
"prettier.eslintIntegration": true,
"prettier.stylelintIntegration": true,
// Formatting
"editor.tabSize": 4,
"editor.insertSpaces": true,
"editor.formatOnSave": true,
// Trim on save
"files.trimTrailingWhitespace": true
}
}
+567 -566
View File
File diff suppressed because it is too large Load Diff
+231
View File
@@ -0,0 +1,231 @@
// ==========================================================================
// Plyr Captions
// TODO: Create as class
// ==========================================================================
import support from './support';
import utils from './utils';
import controls from './controls';
const captions = {
// Setup captions
setup() {
// Requires UI support
if (!this.supported.ui) {
return;
}
// Set default language if not set
const stored = this.storage.get('language');
if (!utils.is.empty(stored)) {
this.captions.language = stored;
}
if (utils.is.empty(this.captions.language)) {
this.captions.language = this.config.captions.language.toLowerCase();
}
// Set captions enabled state if not set
if (!utils.is.boolean(this.captions.active)) {
const active = this.storage.get('captions');
if (utils.is.boolean(active)) {
this.captions.active = active;
} else {
this.captions.active = this.config.captions.active;
}
}
// Only Vimeo and HTML5 video supported at this point
if (!this.isVideo || this.isYouTube || (this.isHTML5 && !support.textTracks)) {
// Clear menu and hide
if (utils.is.array(this.config.controls) && this.config.controls.includes('settings') && this.config.settings.includes('captions')) {
controls.setCaptionsMenu.call(this);
}
return;
}
// Inject the container
if (!utils.is.element(this.elements.captions)) {
this.elements.captions = utils.createElement('div', utils.getAttributesFromSelector(this.config.selectors.captions));
utils.insertAfter(this.elements.captions, this.elements.wrapper);
}
// Set the class hook
utils.toggleClass(this.elements.container, this.config.classNames.captions.enabled, !utils.is.empty(captions.getTracks.call(this)));
// Get tracks
const tracks = captions.getTracks.call(this);
// If no caption file exists, hide container for caption text
if (utils.is.empty(tracks)) {
return;
}
// Get browser info
const browser = utils.getBrowser();
// Fix IE captions if CORS is used
// Fetch captions and inject as blobs instead (data URIs not supported!)
if (browser.isIE && window.URL) {
const elements = this.media.querySelectorAll('track');
Array.from(elements).forEach(track => {
const src = track.getAttribute('src');
const href = utils.parseUrl(src);
if (href.hostname !== window.location.href.hostname && [
'http:',
'https:',
].includes(href.protocol)) {
utils
.fetch(src, 'blob')
.then(blob => {
track.setAttribute('src', window.URL.createObjectURL(blob));
})
.catch(() => {
utils.removeElement(track);
});
}
});
}
// Set language
captions.setLanguage.call(this);
// Enable UI
captions.show.call(this);
// Set available languages in list
if (utils.is.array(this.config.controls) && this.config.controls.includes('settings') && this.config.settings.includes('captions')) {
controls.setCaptionsMenu.call(this);
}
},
// Set the captions language
setLanguage() {
// Setup HTML5 track rendering
if (this.isHTML5 && this.isVideo) {
captions.getTracks.call(this).forEach(track => {
// Show track
utils.on(track, 'cuechange', event => captions.setCue.call(this, event));
// Turn off native caption rendering to avoid double captions
// eslint-disable-next-line
track.mode = 'hidden';
});
// Get current track
const currentTrack = captions.getCurrentTrack.call(this);
// Check if suported kind
if (utils.is.track(currentTrack)) {
// If we change the active track while a cue is already displayed we need to update it
if (Array.from(currentTrack.activeCues || []).length) {
captions.setCue.call(this, currentTrack);
}
}
} else if (this.isVimeo && this.captions.active) {
this.embed.enableTextTrack(this.language);
}
},
// Get the tracks
getTracks() {
// Return empty array at least
if (utils.is.nullOrUndefined(this.media)) {
return [];
}
// Only get accepted kinds
return Array.from(this.media.textTracks || []).filter(track => [
'captions',
'subtitles',
].includes(track.kind));
},
// Get the current track for the current language
getCurrentTrack() {
return captions.getTracks.call(this).find(track => track.language.toLowerCase() === this.language);
},
// Display active caption if it contains text
setCue(input) {
// Get the track from the event if needed
const track = utils.is.event(input) ? input.target : input;
const { activeCues } = track;
const active = activeCues.length && activeCues[0];
const currentTrack = captions.getCurrentTrack.call(this);
// Only display current track
if (track !== currentTrack) {
return;
}
// Display a cue, if there is one
if (utils.is.cue(active)) {
captions.setText.call(this, active.getCueAsHTML());
} else {
captions.setText.call(this, null);
}
utils.dispatchEvent.call(this, this.media, 'cuechange');
},
// Set the current caption
setText(input) {
// Requires UI
if (!this.supported.ui) {
return;
}
if (utils.is.element(this.elements.captions)) {
const content = utils.createElement('span');
// Empty the container
utils.emptyElement(this.elements.captions);
// Default to empty
const caption = !utils.is.nullOrUndefined(input) ? input : '';
// Set the span content
if (utils.is.string(caption)) {
content.textContent = caption.trim();
} else {
content.appendChild(caption);
}
// Set new caption text
this.elements.captions.appendChild(content);
} else {
this.debug.warn('No captions element to render to');
}
},
// Display captions container and button (for initialization)
show() {
// If there's no caption toggle, bail
if (!utils.is.element(this.elements.buttons.captions)) {
return;
}
// Try to load the value from storage
let active = this.storage.get('captions');
// Otherwise fall back to the default config
if (!utils.is.boolean(active)) {
({ active } = this.config.captions);
} else {
this.captions.active = active;
}
if (active) {
utils.toggleClass(this.elements.container, this.config.classNames.captions.active, true);
utils.toggleState(this.elements.buttons.captions, true);
}
},
};
export default captions;
+28
View File
@@ -0,0 +1,28 @@
// ==========================================================================
// Console wrapper
// ==========================================================================
const noop = () => {};
export default class Console {
constructor(enabled = false) {
this.enabled = window.console && enabled;
if (this.enabled) {
this.log('Debugging enabled');
}
}
get log() {
// eslint-disable-next-line no-console
return this.enabled ? Function.prototype.bind.call(console.log, console) : noop;
}
get warn() {
// eslint-disable-next-line no-console
return this.enabled ? Function.prototype.bind.call(console.warn, console) : noop;
}
get error() {
// eslint-disable-next-line no-console
return this.enabled ? Function.prototype.bind.call(console.error, console) : noop;
}
}
+1280
View File
File diff suppressed because it is too large Load Diff
+385
View File
@@ -0,0 +1,385 @@
// ==========================================================================
// Plyr default config
// ==========================================================================
const defaults = {
// Disable
enabled: true,
// Custom media title
title: '',
// Logging to console
debug: false,
// Auto play (if supported)
autoplay: false,
// Only allow one media playing at once (vimeo only)
autopause: true,
// Default time to skip when rewind/fast forward
seekTime: 10,
// Default volume
volume: 1,
muted: false,
// Pass a custom duration
duration: null,
// Display the media duration on load in the current time position
// If you have opted to display both duration and currentTime, this is ignored
displayDuration: true,
// Invert the current time to be a countdown
invertTime: true,
// Clicking the currentTime inverts it's value to show time left rather than elapsed
toggleInvert: true,
// Aspect ratio (for embeds)
ratio: '16:9',
// Click video container to play/pause
clickToPlay: true,
// Auto hide the controls
hideControls: true,
// Revert to poster on finish (HTML5 - will cause reload)
showPosterOnEnd: false,
// Disable the standard context menu
disableContextMenu: true,
// Sprite (for icons)
loadSprite: true,
iconPrefix: 'plyr',
iconUrl: 'https://cdn.plyr.io/3.0.11/plyr.svg',
// Blank video (used to prevent errors on source change)
blankVideo: 'https://cdn.plyr.io/static/blank.mp4',
// Quality default
quality: {
default: 'default',
options: [
'hd2160',
'hd1440',
'hd1080',
'hd720',
'large',
'medium',
'small',
'tiny',
'default',
],
},
// Set loops
loop: {
active: false,
// start: null,
// end: null,
},
// Speed default and options to display
speed: {
selected: 1,
options: [
0.5,
0.75,
1,
1.25,
1.5,
1.75,
2,
],
},
// Keyboard shortcut settings
keyboard: {
focused: true,
global: false,
},
// Display tooltips
tooltips: {
controls: false,
seek: true,
},
// Captions settings
captions: {
active: false,
language: window.navigator.language.split('-')[0],
},
// Fullscreen settings
fullscreen: {
enabled: true, // Allow fullscreen?
fallback: true, // Fallback for vintage browsers
iosNative: false, // Use the native fullscreen in iOS (disables custom controls)
},
// Local storage
storage: {
enabled: true,
key: 'plyr',
},
// Default controls
controls: [
'play-large',
// 'restart',
// 'rewind',
'play',
// 'fast-forward',
'progress',
'current-time',
'mute',
'volume',
'captions',
'settings',
'pip',
'airplay',
'fullscreen',
],
settings: [
'captions',
'quality',
'speed',
],
// Localisation
i18n: {
restart: 'Restart',
rewind: 'Rewind {seektime} secs',
play: 'Play',
pause: 'Pause',
fastForward: 'Forward {seektime} secs',
seek: 'Seek',
played: 'Played',
buffered: 'Buffered',
currentTime: 'Current time',
duration: 'Duration',
volume: 'Volume',
mute: 'Mute',
unmute: 'Unmute',
enableCaptions: 'Enable captions',
disableCaptions: 'Disable captions',
enterFullscreen: 'Enter fullscreen',
exitFullscreen: 'Exit fullscreen',
frameTitle: 'Player for {title}',
captions: 'Captions',
settings: 'Settings',
speed: 'Speed',
quality: 'Quality',
loop: 'Loop',
start: 'Start',
end: 'End',
all: 'All',
reset: 'Reset',
disabled: 'Disabled',
advertisement: 'Ad',
},
// URLs
urls: {
vimeo: {
api: 'https://player.vimeo.com/api/player.js',
},
youtube: {
api: 'https://www.youtube.com/iframe_api',
},
googleIMA: {
api: 'https://imasdk.googleapis.com/js/sdkloader/ima3.js',
},
},
// Custom control listeners
listeners: {
seek: null,
play: null,
pause: null,
restart: null,
rewind: null,
fastForward: null,
mute: null,
volume: null,
captions: null,
fullscreen: null,
pip: null,
airplay: null,
speed: null,
quality: null,
loop: null,
language: null,
},
// Events to watch and bubble
events: [
// Events to watch on HTML5 media elements and bubble
// https://developer.mozilla.org/en/docs/Web/Guide/Events/Media_events
'ended',
'progress',
'stalled',
'playing',
'waiting',
'canplay',
'canplaythrough',
'loadstart',
'loadeddata',
'loadedmetadata',
'timeupdate',
'volumechange',
'play',
'pause',
'error',
'seeking',
'seeked',
'emptied',
'ratechange',
'cuechange',
// Custom events
'enterfullscreen',
'exitfullscreen',
'captionsenabled',
'captionsdisabled',
'languagechange',
'controlshidden',
'controlsshown',
'ready',
// YouTube
'statechange',
'qualitychange',
'qualityrequested',
// Ads
'adsloaded',
'adscontentpause',
'adscontentresume',
'adstarted',
'adsmidpoint',
'adscomplete',
'adsallcomplete',
'adsimpression',
'adsclick',
],
// Selectors
// Change these to match your template if using custom HTML
selectors: {
editable: 'input, textarea, select, [contenteditable]',
container: '.plyr',
controls: {
container: null,
wrapper: '.plyr__controls',
},
labels: '[data-plyr]',
buttons: {
play: '[data-plyr="play"]',
pause: '[data-plyr="pause"]',
restart: '[data-plyr="restart"]',
rewind: '[data-plyr="rewind"]',
fastForward: '[data-plyr="fast-forward"]',
mute: '[data-plyr="mute"]',
captions: '[data-plyr="captions"]',
fullscreen: '[data-plyr="fullscreen"]',
pip: '[data-plyr="pip"]',
airplay: '[data-plyr="airplay"]',
settings: '[data-plyr="settings"]',
loop: '[data-plyr="loop"]',
},
inputs: {
seek: '[data-plyr="seek"]',
volume: '[data-plyr="volume"]',
speed: '[data-plyr="speed"]',
language: '[data-plyr="language"]',
quality: '[data-plyr="quality"]',
},
display: {
currentTime: '.plyr__time--current',
duration: '.plyr__time--duration',
buffer: '.plyr__progress--buffer',
played: '.plyr__progress--played',
loop: '.plyr__progress--loop',
volume: '.plyr__volume--display',
},
progress: '.plyr__progress',
captions: '.plyr__captions',
menu: {
quality: '.js-plyr__menu__list--quality',
},
},
// Class hooks added to the player in different states
classNames: {
video: 'plyr__video-wrapper',
embed: 'plyr__video-embed',
ads: 'plyr__ads',
control: 'plyr__control',
type: 'plyr--{0}',
provider: 'plyr--{0}',
stopped: 'plyr--stopped',
playing: 'plyr--playing',
loading: 'plyr--loading',
error: 'plyr--has-error',
hover: 'plyr--hover',
tooltip: 'plyr__tooltip',
cues: 'plyr__cues',
hidden: 'plyr__sr-only',
hideControls: 'plyr--hide-controls',
isIos: 'plyr--is-ios',
isTouch: 'plyr--is-touch',
uiSupported: 'plyr--full-ui',
noTransition: 'plyr--no-transition',
menu: {
value: 'plyr__menu__value',
badge: 'plyr__badge',
open: 'plyr--menu-open',
},
captions: {
enabled: 'plyr--captions-enabled',
active: 'plyr--captions-active',
},
fullscreen: {
enabled: 'plyr--fullscreen-enabled',
fallback: 'plyr--fullscreen-fallback',
},
pip: {
supported: 'plyr--pip-supported',
active: 'plyr--pip-active',
},
airplay: {
supported: 'plyr--airplay-supported',
active: 'plyr--airplay-active',
},
tabFocus: 'plyr__tab-focus',
},
// Embed attributes
attributes: {
embed: {
provider: 'data-plyr-provider',
id: 'data-plyr-embed-id',
},
},
// API keys
keys: {
google: null,
},
// Advertisements plugin
// Register for an account here: http://vi.ai/publisher-video-monetization/?aid=plyrio
ads: {
enabled: false,
publisherId: '',
},
};
export default defaults;

Some files were not shown because too many files have changed in this diff Show More