// == WPBC BFB Shared Pack Helper: Generic Hint Shortcode
(function ( w, d ) {
'use strict';
w.WPBC_BFB_RegisterShortcodeHintPack = function ( cfg ) {
cfg = cfg || {};
var T = String( cfg.token || '' );
var S = String( cfg.shortcode || T );
var P = String( cfg.prefix || '' );
var L = String( cfg.label || T );
var B = String( cfg.boot || '' );
var F = String( cfg.fallback || '' );
var Core = w.WPBC_BFB_Core || {};
var Registry = Core.WPBC_BFB_Field_Renderer_Registry;
var Base = Core.WPBC_BFB_Field_Base;
if ( ! T ) {
return;
}
if ( ! Registry || typeof Registry.register !== 'function' || ! Base ) {
w._wpbc?.dev?.error?.( 'wpbc_bfb_field_' + T, 'Core registry/base missing' );
return;
}
class ShortcodeHintField extends Base {
static template_id = 'wpbc-bfb-field-' + T;
static get_defaults() {
return { type: T, prefix_text: P, html_id: '', cssclass: '', help: '' };
}
static get_boot() {
return B ? ( w[ B ] || {} ) : {};
}
static render( el, data, ctx ) {
if ( ! el ) {
return;
}
var d_normalized = this.normalize_data( data );
var s = Core.WPBC_BFB_Sanitize || {};
var boot = this.get_boot();
var html_id = d_normalized.html_id ? ( s.sanitize_html_id ? s.sanitize_html_id( String( d_normalized.html_id ) ) : String( d_normalized.html_id ) ) : '';
var cssclass = d_normalized.cssclass ? ( s.sanitize_css_classlist ? s.sanitize_css_classlist( String( d_normalized.cssclass ) ) : String( d_normalized.cssclass ) ) : '';
var tpl = this.get_template( this.template_id );
var is_supported = String( boot.is_supported || '0' ) === '1';
if ( typeof tpl !== 'function' ) {
el.innerHTML = '
Template not found: ' + this.template_id + '.
';
return;
}
try {
el.innerHTML = tpl( Object.assign( {}, d_normalized, {
html_id: html_id,
cssclass: cssclass,
is_supported: is_supported,
upgrade_text: String( boot.upgrade_text || '' ),
preview_value: String( boot.preview_value || F )
} ) );
} catch ( er ) {
w._wpbc?.dev?.error?.( T + '_wptpl.tpl.render', er );
el.innerHTML = 'Error rendering ' + L + ' preview.
';
return;
}
el.dataset.type = T;
el.dataset.prefix_text = d_normalized.prefix_text != null ? String( d_normalized.prefix_text ) : '';
el.dataset.html_id = html_id;
el.dataset.cssclass = cssclass;
el.dataset.help = d_normalized.help != null ? String( d_normalized.help ) : '';
el.setAttribute( 'data-label', d_normalized.prefix_text != null ? String( d_normalized.prefix_text ) : '' );
Core.UI?.WPBC_BFB_Overlay?.ensure?.( ctx?.builder, el );
}
static on_field_drop( data, el, ctx ) {
super.on_field_drop?.( data, el, ctx );
}
}
try {
Registry.register( T, ShortcodeHintField );
} catch ( er ) {
w._wpbc?.dev?.error?.( 'wpbc_bfb_field_' + T + '.register', er );
}
function register_booking_form_exporter() {
var exporter = w.WPBC_BFB_Exporter;
if ( ! exporter || typeof exporter.register !== 'function' ) {
return;
}
if ( typeof exporter.has_exporter === 'function' && exporter.has_exporter( T ) ) {
return;
}
var s = Core.WPBC_BFB_Sanitize || {};
var esc_html = s.escape_html || function ( value ) {
return String( value ).replace( /&/g, '&' ).replace( //g, '>' ).replace( /"/g, '"' ).replace( /'/g, ''' );
};
var sanitize_html_id = s.sanitize_html_id || function ( value ) { return String( value || '' ); };
var sanitize_css_classlist = s.sanitize_css_classlist || function ( value ) { return String( value || '' ); };
exporter.register( T, function ( field, emit ) {
var prefix_text = ( field && typeof field.prefix_text === 'string' ) ? field.prefix_text.trim() : P;
var html_id = field && field.html_id ? sanitize_html_id( field.html_id ) : '';
var cssclass = field && field.cssclass ? sanitize_css_classlist( field.cssclass ) : '';
var body_html = '';
var attrs = '';
if ( prefix_text ) {
body_html += esc_html( prefix_text ) + ' ';
}
body_html += '[' + S + ']';
if ( html_id ) {
attrs += ' id="' + esc_html( html_id ) + '"';
}
if ( cssclass ) {
attrs += ' class="' + esc_html( cssclass ) + '"';
}
if ( attrs ) {
body_html = '' + body_html + '';
}
emit( body_html );
} );
}
if ( w.WPBC_BFB_Exporter && typeof w.WPBC_BFB_Exporter.register === 'function' ) {
register_booking_form_exporter();
} else {
d.addEventListener( 'wpbc:bfb:exporter-ready', register_booking_form_exporter, { once: true } );
}
function register_booking_data_exporter() {
var content_exporter = w.WPBC_BFB_ContentExporter;
if ( ! content_exporter || typeof content_exporter.register !== 'function' ) {
return;
}
if ( typeof content_exporter.has_exporter === 'function' && content_exporter.has_exporter( T ) ) {
return;
}
content_exporter.register( T, function ( field, emit, extras ) {
extras = extras || {};
var cfg_export = extras.cfg || {};
var raw_label = ( field && typeof field.prefix_text === 'string' ) ? field.prefix_text.trim() : '';
var label = raw_label.replace( /\s*:\s*$/, '' ) || L;
if ( typeof content_exporter.emit_line_bold_field === 'function' ) {
// Intentionally stop exporting hints into the "Content of booking fields data" form!
// content_exporter.emit_line_bold_field( emit, label, S, cfg_export );
return;
}
// Intentionally stop exporting hints into the "Content of booking fields data" form!
// emit( '' + label + ': [' + S + ']
' );
} );
}
if ( w.WPBC_BFB_ContentExporter && typeof w.WPBC_BFB_ContentExporter.register === 'function' ) {
register_booking_data_exporter();
} else {
d.addEventListener( 'wpbc:bfb:content-exporter-ready', register_booking_data_exporter, { once: true } );
}
};
})( window, document );