PluginProbe
Blockenberg — 600+ Advanced Gutenberg Blocks & AI Agent for WordPress Block Editor / 2.0.6
Blockenberg — 600+ Advanced Gutenberg Blocks & AI Agent for WordPress Block Editor v2.0.6
2.0.13 2.0.12 2.0.11 2.0.10 2.0.9 trunk 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8
blockenberg / blocks / marquee / frontend.js

frontend.js in Blockenberg — 600+ Advanced Gutenberg Blocks & AI Agent for WordPress Block Editor 2.0.6, at blocks/marquee/frontend.js

78 lines 2.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 (function () {
2 'use strict';
3
4 function getCookie(name) {
5 var match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));
6 return match ? match[2] : null;
7 }
8
9 function setCookie(name, value, days) {
10 var expires = '';
11 if (days) {
12 var date = new Date();
13 date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
14 expires = '; expires=' + date.toUTCString();
15 }
16 document.cookie = name + '=' + (value || '') + expires + '; path=/';
17 }
18
19 function initOne(root) {
20 if (!root || root.__bkbgMqInit) return;
21 root.__bkbgMqInit = true;
22
23 var id = root.getAttribute('id') || root.getAttribute('data-instance-id') || 'bkbg-mq-' + Math.random().toString(36).substr(2, 9);
24 var cookieName = 'bkbg_mq_closed_' + id;
25 var persistDays = parseInt(root.getAttribute('data-close-persist-days') || '7', 10);
26 var persist = root.getAttribute('data-close-persist') === '1';
27
28 // Check if already dismissed
29 if (persist && getCookie(cookieName)) {
30 root.classList.add('is-hidden');
31 return;
32 }
33
34 var closeBtn = root.querySelector('.bkbg-marquee-close');
35 if (closeBtn) {
36 closeBtn.addEventListener('click', function (e) {
37 e.preventDefault();
38 root.classList.add('is-hidden');
39 if (persist) {
40 setCookie(cookieName, '1', persistDays);
41 }
42 });
43 }
44
45 // Pause on click
46 var pauseOnClick = root.getAttribute('data-pause-click') === '1';
47 if (pauseOnClick) {
48 var track = root.querySelector('.bkbg-marquee-track');
49 if (track) {
50 root.addEventListener('click', function (e) {
51 if (e.target.closest('.bkbg-marquee-close')) return;
52 root.classList.toggle('is-paused');
53 });
54 }
55 }
56
57 // Duplicate content for seamless loop if needed
58 var content = root.querySelector('.bkbg-marquee-content');
59 var track = root.querySelector('.bkbg-marquee-track');
60 if (content && track && track.children.length < 2) {
61 var clone = content.cloneNode(true);
62 clone.setAttribute('aria-hidden', 'true');
63 track.appendChild(clone);
64 }
65 }
66
67 function initAll() {
68 var nodes = document.querySelectorAll('.bkbg-marquee-wrap');
69 for (var i = 0; i < nodes.length; i++) initOne(nodes[i]);
70 }
71
72 if (document.readyState === 'loading') {
73 document.addEventListener('DOMContentLoaded', initAll);
74 } else {
75 initAll();
76 }
77 })();
78