PageSourceSearch

https://niallhoran.com/cdn/shop/t/56/assets/2530a3a2762ff8604e52_dynamic-video-player-button-embedded_build.js

js niallhoran.com collected 2026-09-24 21:09:15 UTC 6,980 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkgcom_rhythm=self.webpackChunkgcom_rhythm||[]).push([[3710,4935],{5359(e,t,i){i.r(t),i.d(t,{VideoPlayerButtonEmbedded:()=>a,default:()=>d});var s=i(9952);class a extends s.default{init(){this.selectors.video="iframe"}buttonMountedCallback(){this.video?.hasAttribute("lazy-iframe")?this.video.addEventListener("lazy-iframe:loaded",this.setupYoutubeVideo.bind(this),{once:!0}):this.setupYoutubeVideo()}setupYoutubeVideo(){document.addEventListener("iframeAPIReady",this.initializeYoutubeVideo.bind(this)),this.loadYoutubeIframeAPI(),window.YT?.Player&&this.initializeYoutubeVideo()}loadLazyIframe(){this.video?.hasAttribute("lazy-iframe")&&this.video?.dataset.src&&(this.video.src=this.video.dataset.src,this.video.removeAttribute("lazy-iframe"),this.video.dispatchEvent(new CustomEvent("lazy-iframe:loaded",{bubbles:!0})))}getVideoDuration(){return this.videoEmbedded.getDuration()}getVideoState(){const e=this.videoEmbedded.getPlayerState();let t;return 5===e&&(t="videoCued"),3===e&&(t="buffering"),2===e&&(t="paused"),1===e&&(t="playing"),0===e&&(t="ended"),t}playVideo(){this.videoEmbedded.playVideo()}pauseVideo(){this.videoEmbedded.pauseVideo()}loadYoutubeIframeAPI(){if(!document.getElementById("youtube_iframe_api")){window.onYouTubeIframeAPIReady=this.onYouTubeIframeAPIReady;const e=document.createElement("script");e.id="youtube_iframe_api",e.src="https://www.youtube.com/iframe_api";const t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)}}stateListener(e){e.data===YT.PlayerState.PLAYING||e.data===YT.PlayerState.PAUSED||e.data===YT.PlayerState.BUFFERING?this.handleVideoPlayPause():e.data===YT.PlayerState.ENDED&&this.handleVideoEnd()}playOnReadyAutoplay(e){(this.video.dataset.autoplay||this.playOnReady)&&e.target.playVideo(),this.updateButtonState(),this.addEventListeners()}initializeYoutubeVideo(){const e=this.video;e&&(e.dataset.ytInitialized||(e.dataset.ytInitialized="true",e.style.pointerEvents="none",this.videoEmbedded=new YT.Player(e,{events:{onReady:e=>{this.videoEmbedded=e.target,this.playOnReadyAutoplay(e)},onStateChange:this.stateListener.bind(this)}})))}onYouTubeIframeAPIReady(){const e=new CustomEvent("iframeAPIReady");document.dispatchEvent(e)}attributeChangedCallback(e,t,i){if("data-play"===e&&"true"===i)return this.video?.hasAttribute("lazy-iframe")?(this.playOnReady=!0,void this.loadLazyIframe()):void(this.videoEmbedded?this.playVideo():this.playOnReady=!0)}}customElements.define("video-player-button-embedded",a);const d=a},9952(e,t,i){i.r(t),i.d(t,{VideoPlayerButton:()=>s,default:()=>a});class s extends HTMLElement{constructor(){super(),this.timeout=null,this.selectors={video:""},this.urlChanged=!1,this.prevUrlChanged=!1,this.handleClickState=this.handleClickState.bind(this),this.handleResize=this.handleResize.bind(this),this.handleMouseOn=this.handleMouseOn.bind(this),this.handleMouseMove=this.handleMouseMove.bind(this),this.handleMouseOut=this.handleMouseOut.bind(this),this.handleVideoPlayPause=this.handleVideoPlayPause.bind(this),this.handleVideoEnd=this.handleVideoEnd.bind(this),this.init()}init(){this.nativeVideo=!0,this.selectors.video="video"}connectedCallback(){this.video=this.parentElement.querySelector(this.selectors.video),this.video&&this.buttonMountedCallback()}buttonMountedCallback(){this.updateButtonState(),this.addEventListeners()}addEventListeners(){this.addEventListener("click",this.handleClickState),this.addEventListener("mouseover",this.handleMouseOn),this.nextElementSibling.addEventListener("mousemove",this.handleMouseMove),this.video.addEventListener("mouseout",this.handleMouseOut),window.addEventListener("resize",this.handleResize),this.nextElementSibling.addEventListener("touchstart",this.handleMouseMove,{passive:!0}),this.nativeVideo&&(this.video.addEventListener("play",this.handleVideoPlayPause),this.video.addEventListener("pause",this.handleVideoPlayPause),this.video.addEventListener("ended",this.handleVideoEnd))}removeEventListeners(){this.removeEventListener("click",this.handleClickState),this.removeEventListener("mouseover",this.handleMouseOn),this.nextElementSibling.removeEventListener("mousemove",this.handleMouseMove),this.video.removeEventListener("mouseout",this.handleMouseOut),window.removeEventListener("resize",this.handleResize),this.nextElementSibling.removeEventListener("touchstart",this.handleMouseMove),this.nativeVideo&&(this.video.removeEventListener("play",this.handleVideoPlayPause),this.video.removeEventListener("pause",this.handleVideoPlayPause),this.video.removeEventListener("ended",this.handleVideoEnd)
1)}handleVideoPlayPause(){this.updateButtonState(),this.disappearButton()}handleVideoEnd(){this.showButton(),this.updateButtonState(!0)}handleMouseMove(){this.disappearButton(),this.updateButtonState()}handleMouseOn(){this.showButton()}handleResize(){const e=!!this.video?.dataset?.urlChanged;e!==this.prevUrlChanged?(this.urlChanged=!0,this.prevUrlChanged=e):this.urlChanged=!1,this.urlChanged&&this.video?.dataset?.playPress&&("pause"===this.dataset.state?this.playVideo():"play"===this.dataset.state&&(this.loadVideo(),this.updateButtonState(!0)))}handleMouseOut(){this.disappearButton(),this.updateButtonState()}getVideoDuration(){return this.video.duration}getVideoState(){let e="playing";return this.video.paused&&(e="paused"),e}updateButtonState(e=!1){const t=this.getVideoDuration();if(0!==t&&t<5)return void this.removeThis();const i=this.getVideoState();e||"paused"===i||"videoCued"===i?(this.setAttribute("aria-label",window.videoButtonStates.playButton),this.setAttribute("aria-pressed","false"),this.setAttribute("data-state","play")):"playing"!==i&&"buffering"!==i||(this.setAttribute("aria-label",window.videoButtonStates.pauseButton),this.setAttribute("aria-pressed","true"),this.setAttribute("data-state","pause"))}showButton(){this.classList.remove("sr-only"),this.setAttribute("aria-expanded","true"),clearTimeout(this.timeout)}disappearButton(){this.classList.remove("sr-only"),this.setAttribute("aria-expanded","true"),clearTimeout(this.timeout);"paused"!==this.getVideoState()&&(this.timeout=setTimeout(()=>{this.classList.add("sr-only"),this.setAttribute("aria-expanded","false")},2500))}loadVideo(){this.video.load()}playVideo(){this.video.play()}pauseVideo(){this.video.pause()}handleClickState(){const e=this.getVideoState();"playing"!==e&&"buffering"!==e?(this.playVideo(),this.setAttribute("aria-label",window.videoButtonStates.pauseButton),this.setAttribute("aria-pressed","true"),this.setAttribute("data-state","pause")):(this.pauseVideo(),this.setAttribute("aria-label",window.videoButtonStates.playButton),this.setAttribute("aria-pressed","false"),this.setAttribute("data-state","play"))}disconnectedCallback(){this.removeEventListeners()}static get observedAttributes(){return["data-play"]}attributeChangedCallback(e,t,i){"data-play"===e&&"true"===i&&this.playVideo()}removeThis(){this.remove()}}customElements.define("video-player-button",s);const a=s}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.