PluginProbe
Elementor Website Builder – more than just a page builder / 4.3.0-beta3
Elementor Website Builder – more than just a page builder v4.3.0-beta3
4.3.0-beta3 4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 4.1.0-dev2 4.0.8 4.1.0-beta1 4.1.0-dev1 All 452 releases
elementor / assets / js / background-video-handler.js

background-video-handler.js in Elementor Website Builder – more than just a page builder 4.3.0-beta3, at assets/js/background-video-handler.js

165 lines 5.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 "use strict";
2
3 (function() {
4
5 //#region \0rolldown/runtime.js
6 var __defProp = Object.defineProperty;
7 var __name = (target, value) => __defProp(target, "name", {
8 value,
9 configurable: true
10 });
11 var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports);
12
13 //#endregion
14
15 //#region modules/atomic-widgets/elements/atomic-background-video/handlers/editor-background-video-state.js
16 var require_editor_background_video_state = /* @__PURE__ */ __commonJSMin(((exports) => {
17 Object.defineProperty(exports, "__esModule", { value: true });
18 exports.getEditorState = getEditorState;
19 exports.isEditorPreview = isEditorPreview;
20 exports.resolveDesignTimeState = resolveDesignTimeState;
21 exports.setEditorState = setEditorState;
22 var _alpinejs$1 = (globalThis.elementorV2.alpinejs);
23 var STORE_NAME = "editor-background-video-state";
24 var PLAYING_STATE = "playing";
25 var PAUSED_STATE = "paused";
26 /**
27 * @typedef {Record<string, 'playing' | 'paused' | ''>} BackgroundVideoState
28 */
29 function ensureStore() {
30 if (!_alpinejs$1.Alpine.store(STORE_NAME)) _alpinejs$1.Alpine.store(
31 STORE_NAME,
32 /** @type {BackgroundVideoState} */
33 {}
34 );
35 return _alpinejs$1.Alpine.store(STORE_NAME);
36 }
37 function resolveDesignTimeState(state) {
38 if (PAUSED_STATE === state || "" === state) return state;
39 return PLAYING_STATE;
40 }
41 function getEditorState(elementId, fallback = PLAYING_STATE) {
42 var _store$elementId;
43 return (_store$elementId = ensureStore()[elementId]) !== null && _store$elementId !== void 0 ? _store$elementId : fallback;
44 }
45 function setEditorState(elementId, state) {
46 const store = ensureStore();
47 store[elementId] = state;
48 }
49 function isEditorPreview() {
50 var _window$elementorFron;
51 var _window$elementorFron2;
52 var _window$parent;
53 return Boolean(((_window$elementorFron = window.elementorFrontend) === null || _window$elementorFron === void 0 || (_window$elementorFron2 = _window$elementorFron.isEditMode) === null || _window$elementorFron2 === void 0 ? void 0 : _window$elementorFron2.call(_window$elementorFron)) || ((_window$parent = window.parent) === null || _window$parent === void 0 ? void 0 : _window$parent.elementor));
54 }
55 }));
56
57 //#endregion
58 //#region modules/atomic-widgets/elements/atomic-background-video/handlers/background-video-handler.js
59 var require_background_video_handler = /* @__PURE__ */ __commonJSMin(((exports) => {
60 Object.defineProperty(exports, "__esModule", { value: true });
61 exports.PLAY_ELEMENT_TYPE = exports.PAUSE_ELEMENT_TYPE = exports.CONTROLS_ELEMENT_TYPE = void 0;
62 var _frontendHandlers = (globalThis.elementorV2.frontendHandlers);
63 var _alpinejs = (globalThis.elementorV2.alpinejs);
64 var _editorBackgroundVideoState = require_editor_background_video_state();
65 var PLAYING_CLASS = "e--playing";
66 var PAUSED_CLASS = "e--paused";
67 var ROOT_PLAYING_CLASS = "e-background-video--playing";
68 var ROOT_PAUSED_CLASS = "e-background-video--paused";
69 exports.PLAY_ELEMENT_TYPE = "e-background-video-play";
70 exports.PAUSE_ELEMENT_TYPE = "e-background-video-pause";
71 exports.CONTROLS_ELEMENT_TYPE = "e-background-video-controls";
72 function applyVideoSettings(video, settings) {
73 if (!video) return;
74 video.muted = Boolean(settings.mute);
75 video.loop = Boolean(settings.loop);
76 video.autoplay = Boolean(settings.autoplay);
77 if (settings.start_time) video.currentTime = Number(settings.start_time);
78 if (settings.autoplay) video.play().catch(() => {});
79 }
80 function enforceEndTime(video, settings, signal) {
81 if (!video) return;
82 const endTime = Number(settings.end_time);
83 const startTime = Number(settings.start_time) || 0;
84 if (!endTime || endTime <= startTime) return;
85 video.addEventListener("timeupdate", () => {
86 if (video.currentTime < endTime) return;
87 if (settings.loop) {
88 video.currentTime = startTime;
89 return;
90 }
91 video.pause();
92 }, { signal });
93 }
94 (0, _frontendHandlers.register)({
95 elementType: "e-background-video",
96 id: "e-background-video-handler",
97 callback: ({ element, settings, signal }) => {
98 const elementId = element.dataset.id;
99 const video = element.querySelector(".e-background-video__media");
100 applyVideoSettings(video, settings);
101 enforceEndTime(video, settings, signal);
102 _alpinejs.Alpine.data(`eBackgroundVideo${elementId}`, () => ({
103 isPlaying: video ? !video.paused : false,
104 isEditor: (0, _editorBackgroundVideoState.isEditorPreview)(),
105 get editorState() {
106 return (0, _editorBackgroundVideoState.getEditorState)(elementId, (0, _editorBackgroundVideoState.resolveDesignTimeState)(settings.state));
107 },
108 get previewState() {
109 if (this.isEditor) return this.editorState;
110 return this.isPlaying ? "playing" : "paused";
111 },
112 get showPlayButton() {
113 return "paused" === this.previewState;
114 },
115 get showPauseButton() {
116 return "playing" === this.previewState;
117 },
118 play() {
119 if (this.isEditor || !video) return;
120 video.play().catch(() => {});
121 },
122 pause() {
123 if (this.isEditor || !video) return;
124 video.pause();
125 },
126 init() {
127 if (video) {
128 video.addEventListener("play", () => {
129 this.isPlaying = true;
130 }, { signal });
131 video.addEventListener("pause", () => {
132 this.isPlaying = false;
133 }, { signal });
134 }
135 },
136 rootState: { ":class"() {
137 if (this.isEditor) return {};
138 return {
139 [ROOT_PLAYING_CLASS]: this.isPlaying,
140 [ROOT_PAUSED_CLASS]: !this.isPlaying
141 };
142 } },
143 controlsWrapper: { ":class"() {
144 return {
145 [PLAYING_CLASS]: "playing" === this.previewState,
146 [PAUSED_CLASS]: "paused" === this.previewState
147 };
148 } },
149 playButton: { "@click"() {
150 this.play();
151 } },
152 pauseButton: { "@click"() {
153 this.pause();
154 } }
155 }));
156 return () => {};
157 }
158 });
159 }));
160
161 //#endregion
162 return require_background_video_handler();
163
164 })();
165 //# sourceMappingURL=background-video-handler.js.map