# Changelog ### v3.7.8 - Feat: Minor demo style tweaks - Fix: Minor style fixes related to backgrounds and border radii (ð¨ Requires a SCSS/CSS update ð¨) ### v3.7.7 - Fix (Accessibility): Donât set tabindex on parent container - Fix (Accessibility): Add `role="timer"` to time elements - Fix (Accessibility): Leverage native `:focus-visible` in CSS, instead of a custom solution (ð¨ Requires a SCSS/CSS update ð¨) ### v3.7.6 - Fix: Revert postinstall script ### v3.7.5 - Fix: Replace `pnpm` with `npm` in scripts to fix build issues ### v3.7.4 - Fix: Fixed event key with space (thanks @royeden!) - Fix: Changing Vimeo function call from `setVolume` to `setMuted` to fix iOS issue (issue #2624) (thanks @HandreMelo and Andre Fernandes Cristofolini Melo!) - Fix: Call preview-thumbnails listeners() function on load (thanks @mogzol!) - Fix: Fullscreen improvements for iOS & iPadOS - Feat: Remove need for iOS-specific styling (please update [volume.scss](https://github.com/sampotts/plyr/blob/master/src/sass/components/volume.scss)) ### v3.7.3 - Fix: force nowrap in progress tooltips (related: #2549) (thanks @raad-altaie!) - Feat(i18n): Make captions autodetect text direction (#2540) (thanks @ebraminio!) - Fix: fixed menu border radius bug (#2548) (thanks @raad-altaie!) - Chore: navigator.platform is deprecated (#2530) (thanks @stamat!) - Feat: Added configurable property to elements for re-use (#2489) (thanks @NoirHusky!) - Docs: Replace example video ID with one that still works (#2518) (thanks @luvejo!) - Fix: Improve accessibility on control buttons with aria-pressed (#2523) (thanks @emilkarl!) - Fix: Fix for calc() in newer Dart Sass versions (#2519) (thanks @ckhicks!) - Fix: simplify logic for isFunction assertion method - Chore: update types to include string for controls - Chore: upgrade packages - Chore: use `.node-version` instead of `.nvmrc` ### v3.7.2 - Fix: Add `@babel/plugin-proposal-optional-chaining` to transform optional chaining in build output ### v3.7.1 - Feat: Minor styling improvements to the preview thumbnails (ð¨ Requires a SCSS/CSS update ð¨) - Fix: Fix invalid CSS @charset rule in Sass files (thanks @Hashen110!) - Chore: Replace deprecated KeyboardEvent `keyCode` references to use `key` instead (thanks @Hashen110!) - Various other code clean up and typo fixes (thanks @Hashen110!) ## v3.7.0 - Feat: Add markers support (ð¨ Requires a SCSS/CSS update ð¨) (thanks @ForeverSc and @fengshuo!) - Feat: Add support for MediaMetadata (thanks @Hashen110!) - Fix: Pass this context to captions.setup (fixes #2352) (thanks @WilliamMHerring, @willherring and @zenyr!) - Fix: Modify vimeo parseHash to use non-named capture groups (fixes #2396) (thanks @fekle!) - Fix: Replace deprecated String.prototype.substr() (thanks @CommanderRoot!) - Docs: Update speed option default to match the source (thanks @ozgurg!) - Docs: SASS â Sass (thanks @toastal!) ### v3.6.12 - Fix: remove division logic from ads.scss (fixes #2370) ### v3.6.11 - Fix: Replace `list.slash` added in 3.6.10 with `calc` - Chore: Package upgrades - Chore: Sass clean up - Chore: Improvements to style linting ### v3.6.10 - Fix: Use `list.slash` instead of deprecated syntax - Chore: Clean up demo ### v3.6.9 - Fix: Sass issue with division (thanks @ROL4ND909 and @le0pard) - Fix: Captions when switching sources (thanks @zexingguo) - Fix: Icons loading within iframes (thanks @ajgagnon) - Chore: Update TypeScript types (thanks @Jackie1210 and @AntLevin) - Fix: iOS fullscreen centering (thanks @hemratna) - Feat: Added getter and setter for preview thumbnails (thanks @Benny739) - Fix: Change fullscreen element to player rootnode (thanks @Walter van den Houten) - Fix: Fixed errors when Plyr instance is destroyed before constructor setTimeout() functions execute (thanks @emilis-ideait) - Fix: Invalid CSS selector syntax (thanks @BjornBrandewallNaviga) - Fix: Video height issues - Feat: Improve support for Vimeo private videos (thanks @Frosch) - Fix: YouTube duration issues (thanks @liesahead) ### v3.6.8 - Typings: add FullscreenOptions.container to typing files (thanks @MeguminSama!) - Fix: added iPadOS detection to isIos util (thanks @Benny739!) - Fix: issues with Vimeo fullscreen ### v3.6.7 - Fix: remove regression caused by optional chaining and nullish coalescing in check for `window.CSS` check for aspect-ratio (fixes #2174) ### v3.6.6 - Improvements to how aspect ratio is handled. Use `aspect-ratio` CSS property instead of the legacy method (still used as fallback). Also automatically determined aspect ratios are rounded to the nearast standard ratio. This fixes issues with the YouTube embeds showing a 1-2px black bar. - Hide the YouTube poster image container when paused so that the controls underneath can be used. ### v3.6.5 - Migrate color formatting to colorette (thanks @jorgebucaran) - Fix: issue with IE detection - Fix: missing styles for embeds - Fix: regression regarding poster image - Add all required props to vimeo iframe allow attribute - fixes #2151 (thanks @didrip) ### v3.6.4 - Remove unnecessary calc from media query (thanks @naomiaz) - Enhance types (thanks @lunika) - Fix: Object.values for the providers must be used (thanks @syteknet-core) - Fix: Improve support inside iframes (thanks @ajgagnon) - Added --plyr-video-background for having control over the background of a video with alpha channel (webm) or a poster image with alpha channel (thanks @nepomuc) - Fix issue with not entering iosfullscreen of vimeo videos with playsinline=true (thanks @lordon and @Frosch) - fix: use new syntax for iframe allow attribute - chore: package updates - chore: add @babel/plugin-proposal-class-properties - fix: use bound arrow functions in classes ### v3.6.3 - Fix volume when unmuting from volume 0 using YouTube (thanks @stephanefbouchard) - Add missing unit to calc in media query (thanks @vincentorback) - Assigning player's lastSeekTime on rewind/fast forward to prevent immediate controls hide on mobile (thanks @trafium) - Fix for volume control overflowing in Firefox (thanks @dirkjf) - Force fullscreen events to trigger on plyr element (media element in iOS) and not fullscreen container (thanks @theprojectsomething) - TypeScript types improvements (thanks @akuma06 & @iwatakeshi) - Dash demo link fixed (thanks @jonathanarbely) - Fix "A `ReferenceError: _classCallCheck is not defined` error has occurred." error (thanks @hex-ci) - Fix issue with CSS custom property check (thanks @syedhusain-appspace) - Fix for slow loading videos not autoplaying (thanks @DanielHuntleySBG) - Fix for network requests are not cancelled after the player is destroyed (thanks @DanielHuntleySBG) - Added option to disable custom controls for YouTube and Vimeo ### v3.6.2 - Fixes for CSS Custom Property related errors in some build tools (thanks @Bashev) - Fixes for custom controls as element (thanks @taylorchu) - Added missing TypeScript interface for preview thumbnail options (thanks @taylorchu) ### v3.6.1 - Safari bug fix ## v3.6.0 - You can now easily change colors using CSS Custom Properties. See the [README](README.md#customizing-the-css). - Bug fix for Vimeo fullscreen. - Various typos (thanks @likev) - Preload TextTracks as per default video element (thanks @theprojectsomething) - Features/fullscreen container (thanks @theprojectsomething) - Ignore internal play promises (thanks @ydylla) - Ads plugin fixes to allow multiple VAST requests (thanks @Steejo) - Fix shadowroot (thanks @jnoordsij) - Add financial contributors for Open Collective (thanks @monkeywithacupcake) - Update the gitpod setup description to be more precise. (thanks @nisarhassan12) - Completely hide SVG icons to screen readers (thanks @LeBenLeBen) - Preview thumbnails via src:callback() (thanks @doublex) - Add missing Typescripts types and options (thanks @hug963) - Use number instead of string in TS quality definitions (thanks @mogzol) - Fix Vimeo playback rate (thanks @hug963) - Fix issue when controls config is string or element (thanks @CzBiX) - Simplify contributions by fully automating the dev setup with gitpod (thanks @nisarhassan12) ### v3.5.10 - iOS volume display fix ### v3.5.9 - Fix for regression with volume control width - Ensure poster image is not downloaded again for HTML5 videos ### v3.5.8 - Added `flex-direction` property to fix some issues introduced in v3.5.7 when using custom CSS - Cleaned up the organization of some of the SCSS files (should not effect CSS output) - Added `referrerPolicy` option for Vimeo to prevent an issue present in the demo site - Remove all Vimeo controls for Pro & Premium accounts - Improve thumbnail size calculations when size is set per css (thanks @ydylla) - Add previewThumbnails source setter (thanks @ydylla) - More speed setting logic improvements ### v3.5.7 - Typescript typings (thanks @ondratra) - `togglePlay` now also returns a `Promise` (thanks @azizhk) - Documentation improvements and typo fixes (thanks @ffpetrovic, @skerbis, @ayunami2000, @pjbaert, @MaxGiting, @0xflotus and @thatrobotdev) - Accessibility tweak for the play button (thanks @lunika) - Fix for ads configuration (thanks @SoftCreatR) - Fix handling listener return value (thanks @taion) - Added localization key for PIP (picture-in-picture) (thanks @lmislm) - Preserve viewBox attribute in SVG sprite symbols (thanks @bseib) - Fix being unable to unmute autoplayed video on iOS (thanks @sumanbh) - Fixed Plyr container not resizing responsively (thanks @shravan2x) - Change vimeo demo video (thanks @thatrobotdev) - Fix for `Uncaught RangeError: Maximum call stack size exceeded` (thanks @laukstein) - Improve fullscreen experience on some devices (thanks @savroff) - Improvements to buffering state for embedded players (thanks @doostinharrell) - Prevents IE11 with resetOnEnd option set to true to play video again (thanks @Felipe K. De Boni) - Fix for multiple poster image downloads (use the native poster only for HTML5 videos) - Various presentational fixes - Removed logic to hide/show volume controls based on audio track detection due to it's problematic nature. If you want to hide volume control, use the `controls` option to do so. - Fix preview thumbnail scrubbing not working on mobile touch devices (thanks @ydylla) - Add download attribute to download button (thanks @Code1110) - Trap keyboard focus only when fullscreen (thanks @k-jensen) - Improvements to speed options - you can now specify all options in the UI (YouTube and Vimeo only accept 0.5-2) (thanks @ydylla) - Improve/fix quality change state restoring (thanks @ydylla) _Note:_ This update contains CSS changes. ### v3.5.6 - Another Edge fix (thanks Nick Hawk via Slack) ### v3.5.5 - YouTube fix for when there are other embeds on the page (thanks @aFarkas) - Separated demo dependencies into their own package.json - Fix for Edge controls flexbox issue when resizing the player (thanks Nick Hawk via Slack) - More aspect ratio fixes ### v3.5.4 - Added: Set download URL via new setter - Improvement: The order of the `controls` option now effects the order in the DOM - i.e. you can re-order the controls - Note: this may break any custom CSS you have setup. Please see the changes in the PR to the default Sass - Fixed issue with empty controls and preview thumbs - Fixed issue with setGutter call (from Sentry) - Fixed issue with initial selected speed not working - Added notes on `autoplay` config option and browser compatibility - Fixed issue with ads volume not matching current content volume - Fixed race condition where ads were loading during source change - Improvement: Automatic aspect ratio for YouTube is now supported, meaning all aspect ratios are set based on media content - Note: we're now using a different API to get YouTube video metadata so you may need to adjust any CSPs you have setup - Fix for menu in the Shadow DOM (thanks @emielbeinema) ### v3.5.3 - Improved the usage of the `ratio` config option; it now works as expected and for all video types. The default has not changed, it is to dynamically, where possible (except YouTube where 16:9 is used) determine the ratio from the media source so this is not a breaking change. - Added new `ratio` getter and setter - Fix: Properly clear all timeouts on destroy - Fix: Allow absolute paths in preview thumbnails - Improvement: Allow optional hours and ms in VTT parser in preview thumbnails ### v3.5.2 - Fixed issue where the preview thumbnail was present while scrubbing ### v3.5.1 - Fixed build issues with babel and browserslist ## v3.5.0 - Preview seek/scrubbing thumbnails (thanks @jamesoflol) - Fixes for proxy listeners (thanks @gurupras) - Fix for buffer progress transition on WebKit (thanks @samuelgozi) - Fix for error when mime type not specified (fixes #1274) - Support YouTube noCookie (thanks Omar Khatib) - Add Angular plugin reference (thanks @smnbbrv) - Use `Math.trunc` instead of `parseInt` (thanks @taion) - Many fixes for fullscreen in embedded players with non 16:9 screens or videos - Added 'force' fallback option for fullscreen - [RangeTouch](https://rangetouch.com) is now bundled with Plyr as a dependency to fix the scrubber on touch devices ### v3.4.8 - Calling customized controls function with proper arguments (thanks @a60814billy) ### v3.4.7 - Fix for Vimeo fullscreen with non native aspect ratios (fixes #854) ### v3.4.6 - Added picture-in-picture support for Chrome 70+ - Fixed issue with versioning the SVG sprite in the gulp build script ### v3.4.5 - Added download button option to download either current source or a custom URL you specify in options - Prevent immediate hiding of controls on mobile (thanks @jamesoflol) - Don't hide controls on focusout event (fixes #1122) (thanks @jamesoflol) - Fix HTML5 quality settings being incorrectly set in local storage (thanks @TechGuard) ### v3.4.4 - Fixed issue with double binding for `click` and `touchstart` for `clickToPlay` option - Improved "faux" fullscreen on iPhone X/XS phones with notch - Babel 7 upgrade (which reduced the polyfilled build by ~10kb!) ### v3.4.3 - Fixed issue with nodeList for custom playback controls ### v3.4.2 - Fix play/pause button state ### v3.4.1 - Bug fix for custom controls (fixes #1161) ## v3.4.0 - Accessibility improvements (see #905) - Improvements to the way the controls work on iOS - Demo code clean up - YouTube quality selection removed due to their poor support for it. As a result, the `qualityrequested` event has been removed - Controls spacing improvements - Fix for pressed property missing with custom controls (Fixes #1062) - Fix #1153: Captions language fallback (thanks @friday) - Fix for setting pressed property of undefined (Fixes #1102) ### v3.3.23 - Add support for YouTube's hl param (thanks @renaudleo) - Fix for captions positioning when no controls (thanks @friday and @mjfwebb) - Fix #1108: Make sure youtube.onReady doesn't run twice (thanks @friday) - Fix for WebKit repaint loop on the `` elements ### v3.3.22 - Travis & CI improvements (thanks @friday) - Add navigator.languages fallback for iOS 9 (thanks @friday) ### v3.3.21 - Hide currentTime and progress for streams (thanks @mimse) - Fixed condition check (thanks @mimse) - Handle undefined this.player.elements.buttons.play (thanks @klassicd) - Fix captions.toggle() if there is no toggle button (thanks @friday) ### v3.3.20 - Fix for bug where controls wouldn't show on hover over YouTube video ### v3.3.19 - Remove `pointer-events: none` on embed `