| 
									
										
										
										
											2018-01-20 19:19:24 -08:00
										 |  |  | <div class="video-dialog-wrapper"> | 
					
						
							|  |  |  |   <div class="close-video-button-wrapper"> | 
					
						
							| 
									
										
										
										
											2018-01-20 20:20:33 -08:00
										 |  |  |     <button class="close-video-button" aria-label="Close dialog" on:click="onCloseButtonClicked()"> | 
					
						
							| 
									
										
										
										
											2018-01-20 19:19:24 -08:00
										 |  |  |       <span aria-hidden="true">×</span> | 
					
						
							|  |  |  |     </button> | 
					
						
							|  |  |  |   </div> | 
					
						
							|  |  |  |   <video poster="{{poster}}" | 
					
						
							|  |  |  |          src="{{src}}" | 
					
						
							|  |  |  |          width="{{width}}" | 
					
						
							|  |  |  |          height="{{height}}" | 
					
						
							| 
									
										
										
										
											2018-01-21 10:32:18 -08:00
										 |  |  |          aria-label="Video: {{description || ''}}" | 
					
						
							| 
									
										
										
										
											2018-01-20 19:19:24 -08:00
										 |  |  |          controls | 
					
						
							|  |  |  |   /> | 
					
						
							|  |  |  | </div> | 
					
						
							|  |  |  | <style> | 
					
						
							|  |  |  |   :global(.video-dialog) { | 
					
						
							|  |  |  |     position: fixed; | 
					
						
							|  |  |  |     top: 50%; | 
					
						
							|  |  |  |     transform: translate(0, -50%); | 
					
						
							|  |  |  |     background: #000; | 
					
						
							|  |  |  |     padding: 0; | 
					
						
							| 
									
										
										
										
											2018-01-20 20:20:33 -08:00
										 |  |  |     border: 3px solid var(--main-border); | 
					
						
							| 
									
										
										
										
											2018-01-20 19:19:24 -08:00
										 |  |  |   } | 
					
						
							|  |  |  |   :global(.video-dialog-wrapper) { | 
					
						
							|  |  |  |     display: flex; | 
					
						
							|  |  |  |     flex-direction: column; | 
					
						
							|  |  |  |     align-items: center; | 
					
						
							|  |  |  |     justify-content: center; | 
					
						
							|  |  |  |     max-width: calc(100vw - 40px); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   :global(.video-dialog video) { | 
					
						
							|  |  |  |     max-width: 100%; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   .close-video-button-wrapper { | 
					
						
							|  |  |  |     text-align: right; | 
					
						
							|  |  |  |     width: 100%; | 
					
						
							|  |  |  |     background: var(--nav-bg) | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   .close-video-button { | 
					
						
							|  |  |  |     margin: 0 0 2px; | 
					
						
							|  |  |  |     padding: 0; | 
					
						
							|  |  |  |     background: none; | 
					
						
							|  |  |  |     border: none; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   .close-video-button span { | 
					
						
							|  |  |  |     padding: 0 15px; | 
					
						
							|  |  |  |     font-size: 48px; | 
					
						
							|  |  |  |     color: var(--button-primary-text); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   :global(dialog.video-dialog::backdrop) { | 
					
						
							|  |  |  |     background: rgba(51, 51, 51, 0.8); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   :global(dialog.video-dialog + .backdrop) { | 
					
						
							|  |  |  |     background: rgba(51, 51, 51, 0.8); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | </style> | 
					
						
							|  |  |  | <script> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   import { importDialogPolyfill } from '../_utils/asyncModules' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   export default { | 
					
						
							|  |  |  |     oncreate() { | 
					
						
							| 
									
										
										
										
											2018-01-20 19:30:08 -08:00
										 |  |  |       // TODO: this hack is for Edge 16, which makes the modal too wide | 
					
						
							|  |  |  |       if (typeof setImmediate === 'function' && navigator.userAgent.match(/Edge/)) { | 
					
						
							|  |  |  |         this.get('dialog').style.width = `${this.get('width')}px` | 
					
						
							|  |  |  |       } | 
					
						
							| 
									
										
										
										
											2018-01-20 19:19:24 -08:00
										 |  |  |       this.registration = this.register() | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     methods: { | 
					
						
							|  |  |  |       async register() { | 
					
						
							|  |  |  |         if (typeof HTMLDialogElement === 'undefined') { | 
					
						
							|  |  |  |           let dialogPolyfill = await importDialogPolyfill() | 
					
						
							|  |  |  |           dialogPolyfill.registerDialog(this.get('dialog')) | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |       async showModal() { | 
					
						
							|  |  |  |         await this.registration | 
					
						
							|  |  |  |         this.get('dialog').showModal() | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |       onCloseButtonClicked() { | 
					
						
							|  |  |  |         this.get('dialog').close() | 
					
						
							|  |  |  |         document.body.removeChild(this.get('dialog')) | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | </script> |