PluginProbe
Blockenberg — 600+ Advanced Gutenberg Blocks & AI Agent for WordPress Block Editor / 2.0.7
Blockenberg — 600+ Advanced Gutenberg Blocks & AI Agent for WordPress Block Editor v2.0.7
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 / app-download / frontend.js

frontend.js in Blockenberg — 600+ Advanced Gutenberg Blocks & AI Agent for WordPress Block Editor 2.0.7, at blocks/app-download/frontend.js

168 lines 8.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 (function () {
2 function appleIcon(color) {
3 var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
4 svg.setAttribute('width', '28'); svg.setAttribute('height', '28'); svg.setAttribute('viewBox', '0 0 24 24');
5 var path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
6 path.setAttribute('fill', color);
7 path.setAttribute('d', 'M18.71 19.5c-.83 1.24-1.71 2.45-3.05 2.47-1.34.03-1.77-.79-3.29-.79-1.53 0-2 .77-3.27.82-1.31.05-2.3-1.32-3.14-2.53C4.25 17 2.94 12.45 4.7 9.39c.87-1.52 2.43-2.48 4.12-2.51 1.28-.02 2.5.87 3.29.87.78 0 2.26-1.07 3.8-.91.65.03 2.47.26 3.64 1.98-.09.06-2.17 1.28-2.15 3.81.03 3.02 2.65 4.03 2.68 4.04-.03.07-.42 1.44-1.38 2.83M13 3.5c.73-.83 1.94-1.46 2.94-1.5.13 1.17-.34 2.35-1.04 3.19-.69.85-1.83 1.51-2.95 1.42-.15-1.15.41-2.35 1.05-3.11z');
8 svg.appendChild(path);
9 return svg;
10 }
11
12 function googleIcon() {
13 var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
14 svg.setAttribute('width', '28'); svg.setAttribute('height', '28'); svg.setAttribute('viewBox', '0 0 24 24');
15 var paths = [
16 { d: 'M3.18 23.76A2 2 0 0 1 2 22V2A2 2 0 0 1 3.18.24L13.26 10.3l-10.08 13.46z', fill: '#4285F4' },
17 { d: 'M16.93 13.97l-3.67-3.67 3.67-3.67 4.1 2.36a2.05 2.05 0 0 1 0 2.62l-4.1 2.36z', fill: '#FBBC04' },
18 { d: 'M3.18.24L13.26 10.3l3.67-3.67L4.96.3A2.1 2.1 0 0 0 3.18.24z', fill: '#34A853' },
19 { d: 'M3.18 23.76L13.26 13.7l3.67 3.67-11.97 6.33c-.6.31-1.32.27-1.78-.24z', fill: '#EA4335' }
20 ];
21 paths.forEach(function (p) {
22 var path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
23 path.setAttribute('d', p.d);
24 path.setAttribute('fill', p.fill);
25 svg.appendChild(path);
26 });
27 return svg;
28 }
29
30 function buildBadge(href, icon, smallText, bigText, style) {
31 var a = document.createElement('a');
32 a.href = href;
33 a.className = 'bkbg-app-dl-badge ' + style;
34 a.target = '_blank';
35 a.rel = 'noopener';
36 a.appendChild(icon);
37 var textDiv = document.createElement('div');
38 var s = document.createElement('div');
39 s.className = 'bkbg-app-dl-badge-small';
40 s.style.color = style === 'black' ? '#fff' : '#555';
41 s.textContent = smallText;
42 var b = document.createElement('div');
43 b.className = 'bkbg-app-dl-badge-big';
44 b.style.color = style === 'black' ? '#fff' : '#000';
45 b.textContent = bigText;
46 textDiv.appendChild(s);
47 textDiv.appendChild(b);
48 a.appendChild(textDiv);
49 return a;
50 }
51
52 function typoCssVarsForEl(typo, prefix, el) {
53 if (!typo || typeof typo !== 'object') return;
54 var map = {
55 family:'font-family', weight:'font-weight', style:'font-style',
56 decoration:'text-decoration', transform:'text-transform',
57 sizeDesktop:'font-size-d', sizeTablet:'font-size-t', sizeMobile:'font-size-m',
58 lineHeightDesktop:'line-height-d', lineHeightTablet:'line-height-t', lineHeightMobile:'line-height-m',
59 letterSpacingDesktop:'letter-spacing-d', letterSpacingTablet:'letter-spacing-t', letterSpacingMobile:'letter-spacing-m',
60 wordSpacingDesktop:'word-spacing-d', wordSpacingTablet:'word-spacing-t', wordSpacingMobile:'word-spacing-m'
61 };
62 Object.keys(map).forEach(function(k) {
63 if (typo[k] !== undefined && typo[k] !== '') {
64 var v = typo[k];
65 if (['sizeDesktop','sizeTablet','sizeMobile'].indexOf(k) !== -1) v = v + (typo.sizeUnit || 'px');
66 else if (['lineHeightDesktop','lineHeightTablet','lineHeightMobile'].indexOf(k) !== -1) v = v + (typo.lineHeightUnit || '');
67 else if (['letterSpacingDesktop','letterSpacingTablet','letterSpacingMobile'].indexOf(k) !== -1) v = v + (typo.letterSpacingUnit || 'px');
68 else if (['wordSpacingDesktop','wordSpacingTablet','wordSpacingMobile'].indexOf(k) !== -1) v = v + (typo.wordSpacingUnit || 'px');
69 el.style.setProperty(prefix + map[k], String(v));
70 }
71 });
72 }
73
74 document.querySelectorAll('.bkbg-app-download-app').forEach(function (root) {
75 var opts = {};
76 try { opts = JSON.parse(root.dataset.opts || '{}'); } catch (e) {}
77
78 var bg = opts.bgGradient || opts.bgColor || '#0f172a';
79 var wrap = document.createElement('div');
80 wrap.className = 'bkbg-app-download-wrap';
81 wrap.style.cssText = 'background:' + bg + ';padding:' + (opts.paddingTop || 80) + 'px 40px ' + (opts.paddingBottom || 80) + 'px;';
82 typoCssVarsForEl(opts.headingTypo, '--bkbg-ad-heading-', wrap);
83 typoCssVarsForEl(opts.bodyTypo, '--bkbg-ad-body-', wrap);
84 if (opts.headingSize && opts.headingSize !== 44) wrap.style.setProperty('--bkbg-ad-heading-sz', opts.headingSize + 'px');
85 if (opts.textSize && opts.textSize !== 18) wrap.style.setProperty('--bkbg-ad-body-sz', opts.textSize + 'px');
86
87 var inner = document.createElement('div');
88 inner.className = 'bkbg-app-dl-inner';
89 inner.style.setProperty('--bkbg-ad-max-width', (opts.maxWidth || 1200) + 'px');
90
91 var grid = document.createElement('div');
92 grid.className = 'bkbg-app-dl-grid' + (opts.layout === 'centered' ? ' centered' : '');
93
94 // Text column
95 var textCol = document.createElement('div');
96 textCol.className = 'bkbg-app-dl-text';
97 textCol.style.order = opts.imageLayout === 'right' ? '0' : '1';
98
99 if (opts.showTag !== false && opts.tag) {
100 var tag = document.createElement('span');
101 tag.className = 'bkbg-app-dl-tag';
102 tag.style.cssText = 'background:' + (opts.tagBg || 'rgba(255,255,255,.1)') + ';color:' + (opts.tagColor || '#fff') + ';';
103 tag.textContent = opts.tag;
104 textCol.appendChild(tag);
105 }
106
107 var h2 = document.createElement('h2');
108 h2.className = 'bkbg-app-dl-heading';
109 h2.style.color = opts.headingColor || '#fff';
110 h2.innerHTML = opts.heading || '';
111 textCol.appendChild(h2);
112
113 var p = document.createElement('p');
114 p.className = 'bkbg-app-dl-body';
115 p.style.color = opts.textColor || '#94a3b8';
116 p.innerHTML = opts.subtext || '';
117 textCol.appendChild(p);
118
119 if (opts.showRating) {
120 var ratingRow = document.createElement('div');
121 ratingRow.className = 'bkbg-app-dl-rating';
122 var stars = document.createElement('div');
123 stars.className = 'bkbg-app-dl-stars';
124 stars.style.color = opts.starColor || '#f59e0b';
125 stars.textContent = '�
126
127
128
129
130 ';
131 var ratingText = document.createElement('div');
132 ratingText.className = 'bkbg-app-dl-rating-text';
133 ratingText.style.color = opts.textColor || '#94a3b8';
134 ratingText.textContent = (opts.rating || '4.9') + ' · ' + (opts.ratingCount || '');
135 ratingRow.appendChild(stars);
136 ratingRow.appendChild(ratingText);
137 textCol.appendChild(ratingRow);
138 }
139
140 if (opts.showApple || opts.showGoogle) {
141 var badgeRow = document.createElement('div');
142 badgeRow.className = 'bkbg-app-dl-badges';
143 var bs = opts.badgeStyle || 'black';
144 if (opts.showApple) badgeRow.appendChild(buildBadge(opts.appleUrl || '#', appleIcon(bs === 'black' ? '#fff' : '#000'), 'Download on the', 'App Store', bs));
145 if (opts.showGoogle) badgeRow.appendChild(buildBadge(opts.googleUrl || '#', googleIcon(), 'GET IT ON', 'Google Play', bs));
146 textCol.appendChild(badgeRow);
147 }
148
149 grid.appendChild(textCol);
150
151 // Device image column
152 if (opts.layout !== 'centered' && opts.deviceImageUrl) {
153 var devCol = document.createElement('div');
154 devCol.className = 'bkbg-app-dl-device-col';
155 devCol.style.order = opts.imageLayout === 'right' ? '1' : '0';
156 var img = document.createElement('img');
157 img.src = opts.deviceImageUrl;
158 img.alt = opts.deviceAlt || '';
159 devCol.appendChild(img);
160 grid.appendChild(devCol);
161 }
162
163 inner.appendChild(grid);
164 wrap.appendChild(inner);
165 root.parentNode.replaceChild(wrap, root);
166 });
167 })();
168