/**
* Update Typography Customizer settings live.
*/
( function( $ ){
// Declare variables
var api = wp.customize;
/**
* Outputs custom css for responsive controls
* @param {[string]} sub_setting part of the control except theme prefix and 'control' suffix
* @param {[string]} css_selector
* @param {[string]} css_prop css property to write
* @param {String} ext css value extension eg: px, in
* @return {[string]} css output
*/
function typography_live_media_load( sub_setting, css_selector, css_prop, ext = '') {
wp.customize(
'apex_business_' + sub_setting, function( value ) {
'use strict';
value.bind(
function( to ){
var values = JSON.parse( to );
var desktop_value = JSON.parse( values.desktop );
var tablet_value = JSON.parse( values.tablet );
var mobile_value = JSON.parse( values.mobile );
var class_name = 'customizer-typography-' + sub_setting;
var css_class = $( '.' + class_name );
var selector_name = css_selector;
var property_name = css_prop;
var head_append = '';
if ( css_class.length ) {
css_class.replaceWith( head_append );
} else {
$( "head" ).append( head_append );
}
}
);
}
);
}
/**
* Outputs custom css for non responsive controls
* @param {[string]} sub_setting part of the control except theme prefix
* @param {[string]} css_selector
* @param {[string]} css_prop css property to write
* @return {[string]} css output
*/
function typography_live_load( sub_setting, css_selector, css_prop ) {
wp.customize(
'apex_business_' + sub_setting, function( value ) {
'use strict';
value.bind(
function( to ){
var class_name = 'customizer-typography-' + sub_setting; // Used as id in gfont link
var css_class = $( '.' + class_name );
var selector_name = css_selector;
var property_name = css_prop;
if( property_name == 'font-family' ) {
var css_link_id = $( '#' + class_name );
var font_weight = '100,100i,200,200i,300,300i,400,400i,500,500i,600,600i,700,700i,800,800i,900,900i';
var font_url = 'https://fonts.googleapis.com/css?family=';
var font_url_struc = to.split( ',' )[0];
var font_url_struc = font_url_struc.replace( / /g, "%20" );
var full_url = font_url + font_url_struc + ':' + font_weight;
var head_link_append = '';
if ( css_link_id.length ) {
css_link_id.attr( 'href', full_url );
} else {
$( 'head' ).append( head_link_append );
}
}
var head_append = '';
if ( css_class.length ) {
css_class.replaceWith( head_append );
} else {
$( 'head' ).append( head_append );
}
}
);
}
);
}
var object = new Object();
object['body'] = 'body';
object['h1'] = 'h1';
object['h2'] = 'h2';
object['h3'] = 'h3';
object['h4'] = 'h4';
object['h5'] = 'h5';
object['h6'] = 'h6';
object['blockquote, blockquote p, blockquote span, blockquote a'] = 'blockquote';
object['a'] = 'link';
object['.main-nav > li > a'] = 'header';
object['button, .button, .nav-button'] = 'button';
object['#theme-footer .footer-widget .widget-title'] = 'footer_widget_title';
object['.single-post .entry-container .entry-header .entry-title'] = 'single_post_title';
object['.blog .entry-container .entry-header .entry-title a'] = 'blog_title';
/******** TYPOGRAPHY OPTIONS *********/
for( var i in object ) {
var sub_control_font_family = object[i] + '_font_family_control';
var sub_control_font_weight = object[i] + '_font_weight_setting';
var sub_control_font_style = object[i] + '_font_style_setting';
var sub_control_font_color = object[i] + '_color_setting';
var sub_control_text_transform = object[i] + '_text_transform_setting';
var sub_control_font_size = object[i] + '_font_size_control';
var sub_control_line_height = object[i] + '_line_height_control';
typography_live_load( sub_control_font_family, i, 'font-family' );
typography_live_load( sub_control_font_weight, i, 'font-weight' );
typography_live_load( sub_control_font_style, i, 'font-style' );
typography_live_load( sub_control_font_color, i, 'color' );
typography_live_load( sub_control_text_transform, i, 'text-transform' );
typography_live_media_load( sub_control_font_size, i, 'font-size', 'px' );
typography_live_media_load( sub_control_line_height, i, 'line-height' );
}
} ( jQuery ) )