# blockenberg/2.0.7/blocks/objection-handler/frontend.js

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

- Page: https://pluginprobe.com/plugins/blockenberg/2.0.7/code/blocks/objection-handler/frontend.js
- Raw: https://pluginprobe.com/plugins/blockenberg/2.0.7/raw/blocks/objection-handler/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/objection-handler/frontend.js#L10-L20`.

```javascript
(function () {
    'use strict';

    var _typoKeys = {
        family:'font-family', weight:'font-weight', style:'font-style',
        transform:'text-transform', decoration:'text-decoration',
        sizeDesktop:'font-size-d', sizeTablet:'font-size-t', sizeMobile:'font-size-m',
        lineHeightDesktop:'line-height-d', lineHeightTablet:'line-height-t', lineHeightMobile:'line-height-m',
        letterSpacingDesktop:'letter-spacing-d', letterSpacingTablet:'letter-spacing-t', letterSpacingMobile:'letter-spacing-m',
        wordSpacingDesktop:'word-spacing-d', wordSpacingTablet:'word-spacing-t', wordSpacingMobile:'word-spacing-m'
    };
    var _typoUnits = { size:'sizeUnit', lineHeight:'lineHeightUnit', letterSpacing:'letterSpacingUnit', wordSpacing:'wordSpacingUnit' };
    var _typoUnitDefaults = { size:'px', lineHeight:'', letterSpacing:'px', wordSpacing:'px' };
    function typoCssVarsForEl(el, obj, prefix) {
        if (!obj || typeof obj !== 'object') return;
        Object.keys(_typoKeys).forEach(function (k) {
            var v = obj[k]; if (v === undefined || v === '') return;
            var prop = _typoKeys[k];
            var base = k.replace(/Desktop|Tablet|Mobile/, '');
            var uKey = _typoUnits[base];
            if (uKey && typeof v === 'number') v = v + (obj[uKey] || _typoUnitDefaults[base] || '');
            el.style.setProperty(prefix + prop, v);
        });
    }

    function makeEl(tag, className, styles) {
        var el = document.createElement(tag);
        if (className) el.className = className;
        if (styles) Object.keys(styles).forEach(function (k) { el.style[k] = styles[k]; });
        return el;
    }

    function makeText(tag, className, text, styles) {
        var el = makeEl(tag, className, styles);
        el.textContent = text;
        return el;
    }

    function init() {
        document.querySelectorAll('.bkbg-oh-app').forEach(function (appEl) {
            if (appEl.dataset.rendered) return;
            appEl.dataset.rendered = '1';

            var opts;
            try { opts = JSON.parse(appEl.dataset.opts || '{}'); } catch (e) { opts = {}; }
            var o = Object.assign({
                headline: 'Still have questions?',
                subheadline: '',
                showHeadline: true,
                objections: [],
                layout: 'stack',
                style: 'split',
                showIcon: true,
                objectionLabel: 'Concern',
                responseLabel: 'Our Answer',
                borderRadius: 12,
                gap: 16,
                bgColor: '#ffffff',
                headlineColor: '#0f172a',
                subColor: '#64748b',
                objectionBg: '#fff7ed',
                objectionColor: '#9a3412',
                objectionBorderColor: '#fed7aa',
                responseBg: '#f0fdf4',
                responseColor: '#166534',
                responseBorderColor: '#bbf7d0',
                labelColor: '#64748b',
                iconBg: '#f1f5f9'
            }, opts);

            var block = makeEl('div', 'bkbg-oh-block', { background: o.bgColor });
            typoCssVarsForEl(block, o.headlineTypo, '--bkbg-oh-hl-');
            typoCssVarsForEl(block, o.bodyTypo, '--bkbg-oh-bd-');

            // Headline
            if (o.showHeadline) {
                if (o.headline) block.appendChild(makeText('h2', 'bkbg-oh-headline', o.headline, { color: o.headlineColor }));
                if (o.subheadline) block.appendChild(makeText('p', 'bkbg-oh-sub', o.subheadline, { color: o.subColor }));
            }

            // List
            var listClass = 'bkbg-oh-list bkbg-oh-layout-' + o.layout + ' bkbg-oh-style-' + o.style;
            var list = makeEl('div', listClass, { gap: o.gap + 'px' });

            o.objections.forEach(function (obj) {
                var pair = makeEl('div', 'bkbg-oh-pair', { borderRadius: o.borderRadius + 'px' });

                var isCard = o.style === 'card';
                var objRadius = isCard ? o.borderRadius + 'px' : o.borderRadius + 'px 0 0 ' + o.borderRadius + 'px';
                var resRadius = isCard ? o.borderRadius + 'px' : '0 ' + o.borderRadius + 'px ' + o.borderRadius + 'px 0';

                // Objection side
                var objSide = makeEl('div', 'bkbg-oh-objection', {
                    background: o.objectionBg,
                    color: o.objectionColor,
                    borderColor: o.objectionBorderColor,
                    borderRadius: objRadius
                });

                var objHeader = makeEl('div', 'bkbg-oh-side-header');
                if (o.showIcon) {
                    var iconEl = makeEl('span', 'bkbg-oh-icon', { background: o.iconBg });
                    iconEl.textContent = obj.icon || '❓';
                    objHeader.appendChild(iconEl);
                }
                objHeader.appendChild(makeText('span', 'bkbg-oh-side-label', o.objectionLabel, { color: o.labelColor }));
                objSide.appendChild(objHeader);
                objSide.appendChild(makeText('p', 'bkbg-oh-objection-text', '"' + obj.objection + '"'));

                // Arrow (split style)
                if (o.style === 'split') {
                    var arrow = makeEl('div', 'bkbg-oh-arrow', { color: o.responseBg });
                    arrow.textContent = '▶';
                    pair.appendChild(objSide);
                    pair.appendChild(arrow);
                } else {
                    pair.appendChild(objSide);
                }

                // Response side
                var resSide = makeEl('div', 'bkbg-oh-response', {
                    background: o.responseBg,
                    color: o.responseColor,
                    borderColor: o.responseBorderColor,
                    borderRadius: resRadius
                });

                var resHeader = makeEl('div', 'bkbg-oh-side-header');
                var check = makeEl('span', 'bkbg-oh-check', { background: o.responseColor });
                check.textContent = '✓';
                resHeader.appendChild(check);
                resHeader.appendChild(makeText('span', 'bkbg-oh-side-label', o.responseLabel, { color: o.labelColor }));
                resSide.appendChild(resHeader);
                resSide.appendChild(makeText('p', 'bkbg-oh-response-text', obj.response));

                pair.appendChild(resSide);
                list.appendChild(pair);
            });

            block.appendChild(list);

            appEl.parentNode.insertBefore(block, appEl);
            appEl.style.display = 'none';
        });
    }

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

```
