UNPKG

@ribajs/bs5

Version:

Bootstrap 5 module for Riba.js

93 lines 7.48 kB
import { Component } from "@ribajs/core"; import { Bs5SliderComponent } from "../bs5-slider/bs5-slider.component.js"; import { VideoComponent } from "@ribajs/extras/src/components/index.js"; export class Bs5SlideVideoComponent extends Component { static tagName = "bs5-slide-video"; scope = { autoplay: false, }; slider = null; videoCo = null; videoEl = null; slideEl = null; static get observedAttributes() { return ["autoplay"]; } connectedCallback() { super.connectedCallback(); this.init(Bs5SlideVideoComponent.observedAttributes); this.onSlideEnd = this.onSlideEnd.bind(this); } onSlideEnd(event) { this.debug("[Bs5SlideVideoComponent] onSlideEnd", event, this.slideEl?.classList); if (this.scope.autoplay) { this.playIfActive(); } } playIfActive() { if (this.slideEl?.classList.contains("active")) { if (this.videoCo) { this.videoCo.play(); } else if (this.videoEl) { this.videoEl.play(); } } } async waitForUserInteraction() { return new Promise((resolve) => { const removeEventListeners = () => { document.removeEventListener("click", clickHandler); document.removeEventListener("scroll", scrollHandler); document.removeEventListener("mousemove", mouseMoveHandler); }; const clickHandler = () => { removeEventListeners(); resolve("click"); }; const scrollHandler = () => { removeEventListeners(); resolve("scroll"); }; const mouseMoveHandler = () => { removeEventListeners(); resolve("mousemove"); }; document.addEventListener("click", clickHandler); document.addEventListener("scroll", scrollHandler); document.addEventListener("mousemove", mouseMoveHandler); }); } addEventListeners() { this.slider?.addEventListener(Bs5SliderComponent.EVENTS.scrollended, this.onSlideEnd); } removeEventListeners() { this.slider?.removeEventListener(Bs5SliderComponent.EVENTS.scrollended, this.onSlideEnd); } async beforeBind() { await super.beforeBind(); this.addEventListeners(); } async afterBind() { if (this.scope.autoplay) { if (this.slideEl?.classList.contains("active")) { const event = await this.waitForUserInteraction(); console.debug("[Bs5SlideVideoComponent] event", event); if (this.slideEl?.classList.contains("active")) { this.playIfActive(); } } } await super.beforeBind(); } async beforeTemplate() { this.slider = this.closest(Bs5SliderComponent.tagName); this.videoCo = this.querySelector(VideoComponent.tagName); this.videoEl = this.querySelector("video"); this.slideEl = this.closest(".slide"); } template() { return null; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnM1LXNsaWRlLXZpZGVvLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2JzNS1zbGlkZS12aWRlby9iczUtc2xpZGUtdmlkZW8uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQW9CLE1BQU0sY0FBYyxDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQVl4RSxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsU0FBUztJQUM1QyxNQUFNLENBQUMsT0FBTyxHQUFHLGlCQUFpQixDQUFDO0lBRW5DLEtBQUssR0FBVTtRQUNwQixRQUFRLEVBQUUsS0FBSztLQUNoQixDQUFDO0lBRUYsTUFBTSxHQUE4QixJQUFJLENBQUM7SUFDekMsT0FBTyxHQUEwQixJQUFJLENBQUM7SUFDdEMsT0FBTyxHQUE0QixJQUFJLENBQUM7SUFDeEMsT0FBTyxHQUF1QixJQUFJLENBQUM7SUFFbkMsTUFBTSxLQUFLLGtCQUFrQjtRQUMzQixPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVTLGlCQUFpQjtRQUN6QixLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRVMsVUFBVSxDQUFDLEtBQWtCO1FBQ3JDLElBQUksQ0FBQyxLQUFLLENBQ1IscUNBQXFDLEVBQ3JDLEtBQUssRUFDTCxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FDeEIsQ0FBQztRQUVGLElBQUksSUFBSSxDQUFD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