# blockenberg/2.0.7/blocks/lesson-objectives/frontend.js

Blockenberg — 600+ Advanced Gutenberg Blocks &amp; AI Agent for WordPress Block Editor, version 2.0.7. 143 lines.

- Page: https://pluginprobe.com/plugins/blockenberg/2.0.7/code/blocks/lesson-objectives/frontend.js
- Raw: https://pluginprobe.com/plugins/blockenberg/2.0.7/raw/blocks/lesson-objectives/frontend.js
- Modified: 2026-03-06T12:32:40+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/blockenberg/2.0.7/code/blocks/lesson-objectives/frontend.js#L10-L20`.

```javascript
(function () {
    var _typoKeys = {
        family: 'font-family', weight: 'font-weight', style: 'font-style',
        decoration: 'text-decoration', transform: 'text-transform',
        sizeDesktop: 'font-size-d', sizeTablet: 'font-size-t', sizeMobile: 'font-size-m',
        lineHeightDesktop: 'line-height-d', lineHeightTablet: 'line-height-t', lineHeightMobile: 'line-height-m',
        letterSpacing: 'letter-spacing', wordSpacing: 'word-spacing'
    };
    function typoCssVarsForEl(el, typo, prefix) {
        if (!typo || typeof typo !== 'object') return;
        Object.keys(typo).forEach(function (k) {
            var v = typo[k]; if (v === '' || v == null) return;
            var css = _typoKeys[k]; if (!css) return;
            if ((k === 'letterSpacing' || k === 'wordSpacing') && typeof v === 'number') v = v + 'px';
            if ((/^(sizeDesktop|sizeTablet|sizeMobile)$/).test(k) && typeof v === 'number') v = v + 'px';
            el.style.setProperty(prefix + css, '' + v);
        });
    }

    var BULLETS = { check: '✓', arrow: '→', circle: '●', star: '★' };
    var LEVELS = { beginner: '🟢 Beginner', intermediate: '🟡 Intermediate', advanced: '🔴 Advanced', all: '🔵 All Levels' };

    function init() {
        document.querySelectorAll('.bkbg-lob-app').forEach(function (el) {
            if (el.dataset.rendered) return;
            el.dataset.rendered = '1';
            var opts;
            try { opts = JSON.parse(el.dataset.opts || '{}'); } catch (e) { opts = {}; }
            var o = Object.assign({
                heading: 'What You\'ll Learn', headingIcon: '🎯', showIcon: true,
                objectives: [],
                showLevel: true, level: 'beginner',
                showReadTime: true, readTime: '',
                bulletStyle: 'check', customBullet: '✓',
                style: 'card', columns: 1,
                bgColor: '#f0fdf4', borderColor: '#86efac', accentColor: '#16a34a',
                headingColor: '#14532d', bulletBg: '#dcfce7', bulletColor: '#16a34a',
                textColor: '#166534', metaColor: '#4b7a5a',
                levelBg: '#16a34a', levelColor: '#ffffff',
                borderRadius: 10, paddingTop: 0, paddingBottom: 0
            }, opts);

            var bullet = o.bulletStyle === 'custom' ? (o.customBullet || '✓') : (BULLETS[o.bulletStyle] || '✓');

            var outer = document.createElement('div');
            outer.style.cssText = 'padding:' + o.paddingTop + 'px 0 ' + o.paddingBottom + 'px;';

            var wrap = document.createElement('div');
            wrap.className = 'bkbg-lob-wrap';

            typoCssVarsForEl(wrap, o.headingTypo, '--bkbg-lob-h-');
            typoCssVarsForEl(wrap, o.objectiveTypo, '--bkbg-lob-o-');
            var wrapCss = 'padding:20px 24px;box-sizing:border-box;font-family:inherit;';
            if (o.style === 'card') {
                wrapCss += 'background:' + o.bgColor + ';border:1px solid ' + o.borderColor + ';border-radius:' + o.borderRadius + 'px;';
            } else if (o.style === 'left-border') {
                wrapCss += 'background:' + o.bgColor + ';border:1px solid ' + o.borderColor + ';border-left:4px solid ' + o.accentColor + ';border-radius:' + o.borderRadius + 'px;';
            } else if (o.style === 'top-border') {
                wrapCss += 'background:' + o.bgColor + ';border:1px solid ' + o.borderColor + ';border-top:4px solid ' + o.accentColor + ';border-radius:0 0 ' + o.borderRadius + 'px ' + o.borderRadius + 'px;';
            } else {
                wrapCss += 'background:transparent;padding:0;';
            }
            wrap.style.cssText = wrapCss;

            /* Header */
            var hdr = document.createElement('div');
            hdr.className = 'bkbg-lob-header';
            hdr.style.cssText = 'display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;flex-wrap:wrap;gap:8px;';

            var titleRow = document.createElement('div');
            titleRow.style.cssText = 'display:flex;align-items:center;gap:10px;';
            if (o.showIcon && o.headingIcon) {
                var icon = document.createElement('span');
                icon.className = 'bkbg-lob-icon';
                icon.style.cssText = 'font-size:24px;line-height:1;flex-shrink:0;';
                var _IP = window.bkbgIconPicker;
                if (_IP && o.headingIconType && o.headingIconType !== 'custom-char') {
                    var _iconNode = _IP.buildFrontendIcon(o.headingIconType, o.headingIcon, o.headingIconDashicon, o.headingIconImageUrl, o.headingIconDashiconColor);
                    if (_iconNode) icon.appendChild(_iconNode);
                    else icon.textContent = o.headingIcon;
                } else {
                    icon.textContent = o.headingIcon;
                }
                titleRow.appendChild(icon);
            }
            var h3 = document.createElement('h3');
            h3.className = 'bkbg-lob-heading';
            h3.style.color = o.headingColor;
            h3.innerHTML = o.heading;
            titleRow.appendChild(h3);
            hdr.appendChild(titleRow);

            var meta = document.createElement('div');
            meta.style.cssText = 'display:flex;align-items:center;gap:8px;flex-wrap:wrap;';
            if (o.showLevel && o.level) {
                var lvl = document.createElement('span');
                lvl.style.cssText = 'background:' + o.levelBg + ';color:' + o.levelColor + ';font-size:11px;padding:3px 9px;border-radius:20px;font-weight:600;';
                lvl.textContent = LEVELS[o.level] || o.level;
                meta.appendChild(lvl);
            }
            if (o.showReadTime && o.readTime) {
                var rt = document.createElement('span');
                rt.style.cssText = 'font-size:12px;color:' + o.metaColor + ';';
                rt.textContent = '⏱ ' + o.readTime;
                meta.appendChild(rt);
            }
            hdr.appendChild(meta);
            wrap.appendChild(hdr);

            /* Objectives */
            var grid = document.createElement('div');
            grid.className = 'bkbg-lob-grid';
            grid.style.cssText = 'display:grid;grid-template-columns:repeat(' + (o.columns || 1) + ',1fr);gap:10px;';
            (o.objectives || []).forEach(function (obj) {
                var item = document.createElement('div');
                item.className = 'bkbg-lob-item';
                item.style.cssText = 'display:flex;align-items:flex-start;gap:10px;';

                var bul = document.createElement('span');
                bul.className = 'bkbg-lob-bullet';
                bul.style.cssText = 'background:' + o.bulletBg + ';color:' + o.bulletColor + ';width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;flex-shrink:0;margin-top:1px;';
                bul.textContent = bullet;

                var txt = document.createElement('p');
                txt.className = 'bkbg-lob-text';
                txt.style.color = o.textColor;
                txt.innerHTML = obj.text || '';

                item.appendChild(bul);
                item.appendChild(txt);
                grid.appendChild(item);
            });
            wrap.appendChild(grid);

            outer.appendChild(wrap);
            el.parentNode.insertBefore(outer, el);
        });
    }

    if (document.readyState !== 'loading') { init(); }
    else { document.addEventListener('DOMContentLoaded', init); }
})();

```
