Menu design tweaks, moved logic into plugins
This commit is contained in:
		
							
								
								
									
										2
									
								
								demo/dist/demo.css
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								demo/dist/demo.css
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @ -65,18 +65,20 @@ | ||||
|                     </svg>Vimeo</button> media player. | ||||
|             </p> | ||||
|  | ||||
|             <a href="https://github.com/sampotts/plyr" target="_blank" class="button" data-shr-network="github"> | ||||
|                 <svg class="icon"> | ||||
|                     <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 | ||||
|             <span class="action"> | ||||
|                 <a href="https://github.com/sampotts/plyr" target="_blank" class="button" data-shr-network="github"> | ||||
|                     <svg class="icon"> | ||||
|                         <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> | ||||
|                     </svg> | ||||
|                     Download on GitHub | ||||
|                 </a> | ||||
|             </span> | ||||
|         </header> | ||||
|  | ||||
|         <main> | ||||
|  | ||||
| @ -11,6 +11,14 @@ header { | ||||
|         .font-size(@font-size-large); | ||||
|     } | ||||
|  | ||||
|     .action { | ||||
|         display: inline-flex; | ||||
|  | ||||
|         .button .icon { | ||||
|             flex-shrink: 0; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @media @mq-md { | ||||
|         max-width: 400px; | ||||
|         margin-right: (@spacing-base * 2); | ||||
|  | ||||
| @ -37,6 +37,7 @@ main { | ||||
|  | ||||
| aside { | ||||
|     display: flex; | ||||
|     flex-shrink: 0; | ||||
|     align-items: center; | ||||
|     justify-content: center; | ||||
|     width: 100%; | ||||
|  | ||||
							
								
								
									
										2
									
								
								dist/plyr.css
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/plyr.css
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								dist/plyr.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/plyr.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								dist/plyr.js.map
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/plyr.js.map
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @ -77,9 +77,9 @@ const vimeo = { | ||||
|  | ||||
|         player.media.paused = true; | ||||
|         player.media.currentTime = 0; | ||||
|         let { currentTime } = player.media; | ||||
|  | ||||
|         // Seeking | ||||
|         let { currentTime } = player.media; | ||||
|         Object.defineProperty(player.media, 'currentTime', { | ||||
|             get() { | ||||
|                 return currentTime; | ||||
| @ -114,14 +114,34 @@ const vimeo = { | ||||
|             set() {}, | ||||
|         }); | ||||
|  | ||||
|         // Volume | ||||
|         let { volume } = player.media; | ||||
|         Object.defineProperty(player.media, 'volume', { | ||||
|             get() { | ||||
|                 return volume; | ||||
|             }, | ||||
|             set(input) { | ||||
|                 volume = input; | ||||
|                 player.embed.setVolume(input); | ||||
|                 utils.dispatchEvent.call(player, player.media, 'volumechange'); | ||||
|             }, | ||||
|         }); | ||||
|  | ||||
|         // Rebuild UI | ||||
|         window.setTimeout(() => ui.build.call(player), 0); | ||||
|  | ||||
|         // Get title | ||||
|         player.embed.getVideoTitle().then(title => { | ||||
|             player.config.title = title; | ||||
|         }); | ||||
|  | ||||
|         // Get current time | ||||
|         player.embed.getCurrentTime().then(value => { | ||||
|             currentTime = value; | ||||
|             utils.dispatchEvent.call(this, this.media, 'timeupdate'); | ||||
|         }); | ||||
|  | ||||
|         // Get duration | ||||
|         player.embed.getDuration().then(value => { | ||||
|             player.media.duration = value; | ||||
|             utils.dispatchEvent.call(player, player.media, 'durationchange'); | ||||
|  | ||||
| @ -140,8 +140,19 @@ const youtube = { | ||||
|                         get() { | ||||
|                             return instance.getPlaybackRate(); | ||||
|                         }, | ||||
|                         set(speed) { | ||||
|                             instance.setPlaybackRate(speed); | ||||
|                         set(input) { | ||||
|                             instance.setPlaybackRate(input); | ||||
|                         }, | ||||
|                     }); | ||||
|  | ||||
|                     // Volume | ||||
|                     Object.defineProperty(player.media, 'volume', { | ||||
|                         get() { | ||||
|                             return instance.getVolume() / 100; | ||||
|                         }, | ||||
|                         set(input) { | ||||
|                             instance.setVolume(input * 100); | ||||
|                             utils.dispatchEvent.call(player, player.media, 'volumechange'); | ||||
|                         }, | ||||
|                     }); | ||||
|  | ||||
| @ -235,9 +246,8 @@ const youtube = { | ||||
|  | ||||
|                             // Poll to get playback progress | ||||
|                             player.timers.playing = window.setInterval(() => { | ||||
|                                 // player.media.currentTime = instance.getCurrentTime(); | ||||
|                                 utils.dispatchEvent.call(player, player.media, 'timeupdate'); | ||||
|                             }, 100); | ||||
|                             }, 50); | ||||
|  | ||||
|                             // Check duration again due to YouTube bug | ||||
|                             // https://github.com/sampotts/plyr/issues/374 | ||||
|  | ||||
| @ -320,40 +320,7 @@ class Plyr { | ||||
|             targetTime = this.duration; | ||||
|         } | ||||
|  | ||||
|         // Set the current time | ||||
|         // TODO: This should be included in the "adapters" | ||||
|         // Embeds | ||||
|         /* if (this.isEmbed) { | ||||
|             // Get current paused state | ||||
|             const { paused } = this.media; | ||||
|  | ||||
|             switch (this.type) { | ||||
|                 case 'youtube': | ||||
|                     this.embed.seekTo(targetTime); | ||||
|                     break; | ||||
|  | ||||
|                 case 'vimeo': | ||||
|                     this.embed.setCurrentTime(targetTime); | ||||
|                     break; | ||||
|  | ||||
|                 default: | ||||
|                     break; | ||||
|             } | ||||
|  | ||||
|             // Restore pause (some will play on seek) | ||||
|             if (paused) { | ||||
|                 this.pause(); | ||||
|             } | ||||
|  | ||||
|             // Set seeking flag | ||||
|             this.media.seeking = true; | ||||
|  | ||||
|             // Trigger seeking | ||||
|             utils.dispatchEvent.call(this, this.media, 'seeking'); | ||||
|         } else { | ||||
|  | ||||
|         } */ | ||||
|  | ||||
|         // Set | ||||
|         this.media.currentTime = targetTime.toFixed(4); | ||||
|  | ||||
|         // Logging | ||||
| @ -364,7 +331,7 @@ class Plyr { | ||||
|         return Number(this.media.currentTime); | ||||
|     } | ||||
|  | ||||
|     // Get the duration (or custom if set) | ||||
|     // Duration | ||||
|     get duration() { | ||||
|         // Faux duration set via config | ||||
|         const fauxDuration = parseInt(this.config.duration, 10); | ||||
| @ -376,7 +343,7 @@ class Plyr { | ||||
|         return !Number.isNaN(fauxDuration) ? fauxDuration : realDuration; | ||||
|     } | ||||
|  | ||||
|     // Set volume | ||||
|     // Volume | ||||
|     set volume(value) { | ||||
|         let volume = value; | ||||
|         const max = 1; | ||||
| @ -409,26 +376,6 @@ class Plyr { | ||||
|         // Set the player volume | ||||
|         this.media.volume = volume; | ||||
|  | ||||
|         // Trigger volumechange for embeds | ||||
|         // TODO: Do in adapters | ||||
|         if (this.isEmbed) { | ||||
|             // Set media volume | ||||
|             switch (this.type) { | ||||
|                 case 'youtube': | ||||
|                     this.embed.setVolume(this.media.volume * 100); | ||||
|                     break; | ||||
|  | ||||
|                 case 'vimeo': | ||||
|                     this.embed.setVolume(this.media.volume); | ||||
|                     break; | ||||
|  | ||||
|                 default: | ||||
|                     break; | ||||
|             } | ||||
|  | ||||
|             utils.dispatchEvent.call(this, this.media, 'volumechange'); | ||||
|         } | ||||
|  | ||||
|         // Toggle muted state | ||||
|         if (volume === 0) { | ||||
|             this.toggleMute(true); | ||||
|  | ||||
| @ -30,7 +30,7 @@ | ||||
|         animation: plyr-popup 0.2s ease; | ||||
|         background: @plyr-menu-bg; | ||||
|         border-radius: 4px; | ||||
|         box-shadow: 0 1px 2px fade(#000, 20%); | ||||
|         box-shadow: @plyr-menu-shadow; | ||||
|         white-space: nowrap; | ||||
|         text-align: left; | ||||
|         color: @plyr-menu-color; | ||||
| @ -117,8 +117,8 @@ | ||||
|                     height: 1px; | ||||
|                     overflow: hidden; | ||||
|                     margin-top: ceil(@plyr-control-padding / 2); | ||||
|                     background: fade(#000, 15%); | ||||
|                     box-shadow: 0 1px 0 fade(#fff, 10%); | ||||
|                     background: @plyr-menu-border-color; | ||||
|                     box-shadow: 0 1px 0 @plyr-menu-border-shadow-color; | ||||
|                 } | ||||
|  | ||||
|                 &.tab-focus::after, | ||||
|  | ||||
| @ -12,7 +12,7 @@ | ||||
|     opacity: 0; | ||||
|     background: @plyr-tooltip-bg; | ||||
|     border-radius: @plyr-tooltip-radius; | ||||
|     box-shadow: 0 1px 2px fade(#000, 10%); | ||||
|     box-shadow: @plyr-tooltip-shadow; | ||||
|     color: @plyr-tooltip-color; | ||||
|     font-size: @plyr-font-size-small; | ||||
|     font-weight: @plyr-font-weight-normal; | ||||
|  | ||||
| @ -48,11 +48,15 @@ | ||||
| @plyr-tooltip-padding: (@plyr-control-spacing / 2); | ||||
| @plyr-tooltip-arrow-size: 4px; | ||||
| @plyr-tooltip-radius: 3px; | ||||
| @plyr-tooltip-shadow: 0 1px 2px fade(#000, 15%); | ||||
|  | ||||
| // Menus | ||||
| @plyr-menu-bg: @plyr-tooltip-bg; | ||||
| @plyr-menu-color: @plyr-tooltip-color; | ||||
| @plyr-menu-arrow-size: 6px; | ||||
| @plyr-menu-border-color: #b6c5cd; | ||||
| @plyr-menu-border-shadow-color: #fff; | ||||
| @plyr-menu-shadow: 0 1px 2px fade(#000, 15%); | ||||
|  | ||||
| // Progress | ||||
| @plyr-progress-loading-size: 25px; | ||||
|  | ||||
		Reference in New Issue
	
	Block a user