PluginProbe
Blockenberg — 600+ Advanced Gutenberg Blocks & AI Agent for WordPress Block Editor / 2.0.11
Blockenberg — 600+ Advanced Gutenberg Blocks & AI Agent for WordPress Block Editor v2.0.11
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 / about-section / frontend.js

frontend.js in Blockenberg — 600+ Advanced Gutenberg Blocks & AI Agent for WordPress Block Editor 2.0.11, at blocks/about-section/frontend.js

151 lines 7.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 (function () {
2 var _typoKeys = {
3 family:'font-family', weight:'font-weight', style:'font-style',
4 transform:'text-transform', decoration:'text-decoration',
5 sizeDesktop:'font-size-d', sizeTablet:'font-size-t', sizeMobile:'font-size-m',
6 lineHeightDesktop:'line-height-d', lineHeightTablet:'line-height-t', lineHeightMobile:'line-height-m',
7 letterSpacingDesktop:'letter-spacing-d', letterSpacingTablet:'letter-spacing-t', letterSpacingMobile:'letter-spacing-m',
8 wordSpacingDesktop:'word-spacing-d', wordSpacingTablet:'word-spacing-t', wordSpacingMobile:'word-spacing-m'
9 };
10 var _typoUnits = { size:'sizeUnit', lineHeight:'lineHeightUnit', letterSpacing:'letterSpacingUnit', wordSpacing:'wordSpacingUnit' };
11 var _typoUnitDefaults = { size:'px', lineHeight:'', letterSpacing:'px', wordSpacing:'px' };
12 function typoCssVarsForEl(el, obj, prefix) {
13 if (!obj || typeof obj !== 'object') return;
14 Object.keys(_typoKeys).forEach(function (k) {
15 var v = obj[k]; if (v === undefined || v === '') return;
16 var prop = _typoKeys[k];
17 var base = k.replace(/Desktop|Tablet|Mobile/, '');
18 var uKey = _typoUnits[base];
19 if (uKey && typeof v === 'number') v = v + (obj[uKey] || _typoUnitDefaults[base] || '');
20 el.style.setProperty('--' + prefix + prop, v);
21 });
22 }
23
24 document.querySelectorAll('.bkbg-about-section-app').forEach(function (root) {
25 var opts = {};
26 try { opts = JSON.parse(root.dataset.opts || '{}'); } catch (e) {}
27
28 var wrap = document.createElement('div');
29 wrap.className = 'bkbg-about-section-wrap bkbg-as-layout-' + (opts.imageLayout || 'left');
30 wrap.style.cssText = 'background:' + (opts.bgColor || '#fff') + ';padding:' + (opts.paddingTop || 80) + 'px 40px ' + (opts.paddingBottom || 80) + 'px;';
31
32 /* Apply typography CSS vars on wrap */
33 typoCssVarsForEl(wrap, opts.headingTypo, 'bkas-hd-');
34 typoCssVarsForEl(wrap, opts.bodyTypo, 'bkas-bd-');
35 typoCssVarsForEl(wrap, opts.labelTypo, 'bkas-lb-');
36 typoCssVarsForEl(wrap, opts.statValueTypo, 'bkas-sv-');
37 typoCssVarsForEl(wrap, opts.statLabelTypo, 'bkas-sl-');
38
39 var inner = document.createElement('div');
40 inner.className = 'bkbg-about-section-inner';
41 inner.style.cssText = '--bkbg-as-max-width:' + (opts.maxWidth || 1200) + 'px;--bkbg-as-gap:' + (opts.colGap || 64) + 'px;--bkbg-as-align:' + (opts.verticalAlign || 'center') + ';';
42
43 // Image column
44 var imgCol = document.createElement('div');
45 imgCol.className = 'bkbg-as-image-col';
46 if (opts.imageUrl) {
47 var img = document.createElement('img');
48 img.src = opts.imageUrl;
49 img.alt = opts.imageAlt || '';
50 img.className = 'bkbg-as-img-' + (opts.imageStyle || 'rounded') + (opts.imageShadow ? ' bkbg-as-img-shadow' : '');
51 imgCol.appendChild(img);
52 } else {
53 imgCol.style.display = 'none';
54 inner.style.gridTemplateColumns = '1fr';
55 }
56
57 // Text column
58 var txtCol = document.createElement('div');
59 txtCol.className = 'bkbg-as-text-col';
60
61 if (opts.showLabel !== false && opts.label) {
62 var lbl = document.createElement('span');
63 lbl.className = 'bkbg-as-label';
64 lbl.style.cssText = 'background:' + (opts.labelBg || '#ede9fe') + ';color:' + (opts.labelColor || '#7c3aed') + ';';
65 lbl.textContent = opts.label;
66 txtCol.appendChild(lbl);
67 }
68
69 if (opts.heading) {
70 var h2 = document.createElement('h2');
71 h2.className = 'bkbg-as-heading';
72 h2.style.cssText = 'color:' + (opts.headingColor || '#111827') + ';';
73 h2.innerHTML = opts.heading;
74 txtCol.appendChild(h2);
75 }
76
77 if (opts.subtext) {
78 var p = document.createElement('p');
79 p.className = 'bkbg-as-body';
80 p.style.cssText = 'color:' + (opts.textColor || '#6b7280') + ';';
81 p.innerHTML = opts.subtext;
82 txtCol.appendChild(p);
83 }
84
85 if (opts.showStats && opts.stats && opts.stats.length) {
86 var statsRow = document.createElement('div');
87 statsRow.className = 'bkbg-as-stats';
88 opts.stats.forEach(function (s) {
89 var statEl = document.createElement('div');
90 statEl.className = 'bkbg-as-stat';
91 var val = document.createElement('div');
92 val.className = 'bkbg-as-stat-value';
93 val.style.cssText = 'color:' + (opts.statValueColor || '#111827') + ';';
94 val.textContent = s.value;
95 var lbl2 = document.createElement('div');
96 lbl2.className = 'bkbg-as-stat-label';
97 lbl2.style.color = opts.statLabelColor || '#6b7280';
98 lbl2.textContent = s.label;
99 statEl.appendChild(val);
100 statEl.appendChild(lbl2);
101 statsRow.appendChild(statEl);
102 });
103 txtCol.appendChild(statsRow);
104 }
105
106 var hasActions = opts.showCta || opts.showCta2 || opts.showSignature;
107 if (hasActions) {
108 var ctaRow = document.createElement('div');
109 ctaRow.className = 'bkbg-as-cta-row';
110
111 if (opts.showCta && opts.ctaLabel) {
112 var btn = document.createElement('a');
113 btn.className = 'bkbg-as-cta-btn ' + (opts.ctaStyle || 'filled');
114 btn.href = opts.ctaUrl || '#';
115 btn.textContent = opts.ctaLabel + '';
116 if (opts.ctaStyle === 'filled') {
117 btn.style.cssText = 'background:' + (opts.ctaBg || '#7c3aed') + ';color:' + (opts.ctaColor || '#fff') + ';';
118 } else if (opts.ctaStyle === 'outline') {
119 btn.style.cssText = 'border:2px solid ' + (opts.accentColor || '#7c3aed') + ';color:' + (opts.accentColor || '#7c3aed') + ';';
120 } else {
121 btn.style.color = opts.accentColor || '#7c3aed';
122 }
123 ctaRow.appendChild(btn);
124 }
125
126 if (opts.showCta2 && opts.cta2Label) {
127 var btn2 = document.createElement('a');
128 btn2.className = 'bkbg-as-cta2-btn';
129 btn2.href = opts.cta2Url || '#';
130 btn2.style.color = opts.headingColor || '#111827';
131 btn2.textContent = opts.cta2Label;
132 ctaRow.appendChild(btn2);
133 }
134
135 if (opts.showSignature && opts.signatureName) {
136 var sig = document.createElement('span');
137 sig.className = 'bkbg-as-signature';
138 sig.style.color = opts.textColor || '#6b7280';
139 sig.textContent = '' + opts.signatureName;
140 ctaRow.appendChild(sig);
141 }
142 txtCol.appendChild(ctaRow);
143 }
144
145 inner.appendChild(imgCol);
146 inner.appendChild(txtCol);
147 wrap.appendChild(inner);
148 root.parentNode.replaceChild(wrap, root);
149 });
150 })();
151