Customify – A Theme Customizer Booster - Version 1.4.0

Version Description

  • Make Customify compatible with the 4.7 customizer changes
  • Add show_if config option
  • Fix Conflict with Jetpack - Related posts
  • Fix Javascript callbacks loss
  • Switch de default storage from option to theme_mod
  • Fixed Incorrect Color Panel Height
  • Fixed Font field weight in customizer preview
Download this release

Release Info

Developer euthelup
Plugin Icon Customify – A Theme Customizer Booster
Version 1.4.0
Comparing to
See all releases

Code changes from version 1.3.1 to 1.4.0

README.md CHANGED
@@ -189,26 +189,10 @@ new text. I bet this is awesome.
189
 
190
  ### Conditional fields<a name="conditional_fields"></a>
191
 
192
- Once with 1.2.3 version we've added support for conditional fields. This means that you can use the `show_on` argument
193
  to display a field only when another field has a certain value.
194
- For example this read more label will be visible only when the first checkbox will be active
195
- ```
196
- 'enable_read_more_button' => array(
197
- 'type' => 'checkbox',
198
- 'label' => esc_html__( 'Enable Read More Button', 'heap' ),
199
- 'default' => 1,
200
- ),
201
- 'read_more_button_label' => array(
202
- 'type' => 'text',
203
- 'label' => esc_html__( 'Read More Button Text', 'heap' ),
204
- 'default' => '+ READ MORE',
205
- 'show_on' => array( 'enable_read_more_button' ),
206
- )
207
- ```
208
- By default, this field compares with '1' value, if you need another value, just add your preference like this
209
-
210
- `'show_on' => array( 'enable_read_more_button', 'custom_value' )`
211
 
 
212
 
213
  ### Presets<a name="presets_title"></a>
214
 
@@ -218,13 +202,13 @@ Here is and example of how to config this.
218
  ```
219
  'theme_style' => array(
220
  'type' => 'preset',
221
- 'label' => __( 'Select a style:', 'customify_txtd' ),
222
- 'desc' => __( 'Conveniently change the design of your site with built-in style presets. Easy as pie.', 'customify_txtd' ),
223
  'default' => 'silk',
224
  'choices_type' => 'select',
225
  'choices' => array(
226
  'silk' => array(
227
- 'label' => __( 'Silk', 'customify_txtd' ),
228
  'options' => array(
229
  'links_color' => '#FAC2A8', //second
230
  'headings_color' => '#A84469', //main
@@ -234,7 +218,7 @@ Here is and example of how to config this.
234
  )
235
  ),
236
  'red' => array(
237
- 'label' => __( 'Urban', 'customify_txtd' ),
238
  'options' => array(
239
  'links_color' => 'red',
240
  'headings_color' => 'red',
@@ -244,7 +228,7 @@ Here is and example of how to config this.
244
  )
245
  ),
246
  'black' => array(
247
- 'label' => __( 'Black', 'customify_txtd' ),
248
  'options' => array(
249
  'links_color' => '#ebebeb',
250
  'headings_color' => '#333',
@@ -269,17 +253,17 @@ Just add this section in your config
269
 
270
  ```
271
  'presets_section' => array(
272
- 'title' => __( 'Style Presets', 'customify_txtd' ),
273
  'options' => array(
274
  'theme_style' => array(
275
  'type' => 'preset',
276
- 'label' => __( 'Select a style:', 'customify_txtd' ),
277
- 'desc' => __( 'Conveniently change the design of your site with built-in style presets. Easy as pie.', 'customify_txtd' ),
278
  'default' => 'royal',
279
  'choices_type' => 'awesome',
280
  'choices' => array(
281
  'royal' => array(
282
- 'label' => __( 'Royal', 'customify_txtd' ),
283
  'preview' => array(
284
  'color-text' => '#ffffff',
285
  'background-card' => '#615375',
@@ -297,7 +281,7 @@ Just add this section in your config
297
  )
298
  ),
299
  'lovely' => array(
300
- 'label' => __( 'Lovely', 'customify_txtd' ),
301
  'preview' => array(
302
  'color-text' => '#ffffff',
303
  'background-card' => '#d15c57',
@@ -315,7 +299,7 @@ Just add this section in your config
315
  )
316
  ),
317
  'queen' => array(
318
- 'label' => __( 'Queen', 'customify_txtd' ),
319
  'preview' => array(
320
  'color-text' => '#fbedec',
321
  'background-card' => '#773347',
@@ -333,7 +317,7 @@ Just add this section in your config
333
  )
334
  ),
335
  'carrot' => array(
336
- 'label' => __( 'Carrot', 'customify_txtd' ),
337
  'preview' => array(
338
  'color-text' => '#ffffff',
339
  'background-card' => '#df421d',
@@ -351,7 +335,7 @@ Just add this section in your config
351
  )
352
  ),
353
  'adler' => array(
354
- 'label' => __( 'Adler', 'customify_txtd' ),
355
  'preview' => array(
356
  'color-text' => '#fff',
357
  'background-card' => '#0e364f',
@@ -369,7 +353,7 @@ Just add this section in your config
369
  )
370
  ),
371
  'velvet' => array(
372
- 'label' => __( 'Velvet', 'customify_txtd' ),
373
  'preview' => array(
374
  'color-text' => '#ffffff',
375
  'background-card' => '#282828',
@@ -474,3 +458,12 @@ function theme_add_customify_theme_fonts ( $fonts ) {
474
  }
475
  add_filter( 'customify_theme_fonts', 'theme_add_customify_theme_fonts' );
476
  ```
 
 
 
 
 
 
 
 
 
189
 
190
  ### Conditional fields<a name="conditional_fields"></a>
191
 
192
+ Once with 1.2.3 version we've added support for conditional fields. This means that you can use the `show_if` argument
193
  to display a field only when another field has a certain value.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
194
 
195
+ This [gist](https://gist.github.com/andreilupu/3a71618fb6d2ea2c2b1429544c667cd1) shows how this can be done.
196
 
197
  ### Presets<a name="presets_title"></a>
198
 
202
  ```
203
  'theme_style' => array(
204
  'type' => 'preset',
205
+ 'label' => __( 'Select a style:', 'customify' ),
206
+ 'desc' => __( 'Conveniently change the design of your site with built-in style presets. Easy as pie.', 'customify' ),
207
  'default' => 'silk',
208
  'choices_type' => 'select',
209
  'choices' => array(
210
  'silk' => array(
211
+ 'label' => __( 'Silk', 'customify' ),
212
  'options' => array(
213
  'links_color' => '#FAC2A8', //second
214
  'headings_color' => '#A84469', //main
218
  )
219
  ),
220
  'red' => array(
221
+ 'label' => __( 'Urban', 'customify' ),
222
  'options' => array(
223
  'links_color' => 'red',
224
  'headings_color' => 'red',
228
  )
229
  ),
230
  'black' => array(
231
+ 'label' => __( 'Black', 'customify' ),
232
  'options' => array(
233
  'links_color' => '#ebebeb',
234
  'headings_color' => '#333',
253
 
254
  ```
255
  'presets_section' => array(
256
+ 'title' => __( 'Style Presets', 'customify' ),
257
  'options' => array(
258
  'theme_style' => array(
259
  'type' => 'preset',
260
+ 'label' => __( 'Select a style:', 'customify' ),
261
+ 'desc' => __( 'Conveniently change the design of your site with built-in style presets. Easy as pie.', 'customify' ),
262
  'default' => 'royal',
263
  'choices_type' => 'awesome',
264
  'choices' => array(
265
  'royal' => array(
266
+ 'label' => __( 'Royal', 'customify' ),
267
  'preview' => array(
268
  'color-text' => '#ffffff',
269
  'background-card' => '#615375',
281
  )
282
  ),
283
  'lovely' => array(
284
+ 'label' => __( 'Lovely', 'customify' ),
285
  'preview' => array(
286
  'color-text' => '#ffffff',
287
  'background-card' => '#d15c57',
299
  )
300
  ),
301
  'queen' => array(
302
+ 'label' => __( 'Queen', 'customify' ),
303
  'preview' => array(
304
  'color-text' => '#fbedec',
305
  'background-card' => '#773347',
317
  )
318
  ),
319
  'carrot' => array(
320
+ 'label' => __( 'Carrot', 'customify' ),
321
  'preview' => array(
322
  'color-text' => '#ffffff',
323
  'background-card' => '#df421d',
335
  )
336
  ),
337
  'adler' => array(
338
+ 'label' => __( 'Adler', 'customify' ),
339
  'preview' => array(
340
  'color-text' => '#fff',
341
  'background-card' => '#0e364f',
353
  )
354
  ),
355
  'velvet' => array(
356
+ 'label' => __( 'Velvet', 'customify' ),
357
  'preview' => array(
358
  'color-text' => '#ffffff',
359
  'background-card' => '#282828',
458
  }
459
  add_filter( 'customify_theme_fonts', 'theme_add_customify_theme_fonts' );
460
  ```
461
+
462
+ ## License
463
+
464
+ ## Thanks!
465
+ This plugin also includes the following libraries:
466
+
467
+ * Select 2 - https://select2.github.io/
468
+ * Ace Editor - https://ace.c9.io/
469
+ * React jQuery Plugin - https://github.com/natedavisolds/jquery-react
class-pixcustomify.php CHANGED
@@ -20,7 +20,7 @@ class PixCustomifyPlugin {
20
  * @since 1.0.0
21
  * @const string
22
  */
23
- protected $version = '1.3.1';
24
  /**
25
  * Unique identifier for your plugin.
26
  * Use this value (not the variable name) as the text domain when internationalizing strings of text. It should
@@ -67,8 +67,6 @@ class PixCustomifyPlugin {
67
 
68
  protected static $media_queries = array();
69
 
70
- protected static $customizer_values;
71
-
72
  protected static $opt_name;
73
 
74
  protected static $typo_settings;
@@ -133,8 +131,6 @@ class PixCustomifyPlugin {
133
  include_once( self::get_base_path() . '/features/class-CSS_Editor.php' );
134
  include_once( self::get_base_path() . 'features/class-Font_Selector.php' );
135
 
136
- self::check_for_customizer_values();
137
-
138
  // Load plugin text domain
139
  add_action( 'init', array( $this, 'load_plugin_textdomain' ) );
140
 
@@ -310,12 +306,8 @@ class PixCustomifyPlugin {
310
  * @since 1.0.0
311
  */
312
  function load_plugin_textdomain() {
313
-
314
  $domain = $this->plugin_slug;
315
- $locale = apply_filters( 'plugin_locale', get_locale(), $domain );
316
-
317
- load_textdomain( $domain, WP_LANG_DIR . '/' . $domain . '/' . $domain . '-' . $locale . '.mo' );
318
- load_plugin_textdomain( $domain, false, basename( dirname( __FILE__ ) ) . '/lang/' );
319
  }
320
 
321
  /** === RESOURCES === **/
@@ -339,6 +331,7 @@ class PixCustomifyPlugin {
339
  'jquery',
340
  'select2',
341
  'underscore',
 
342
  ), $this->version );
343
 
344
  wp_localize_script( $this->plugin_slug . '-customizer-scripts', 'customify_settings', self::$localized );
@@ -1034,8 +1027,8 @@ class PixCustomifyPlugin {
1034
  $panel_args = array(
1035
  'priority' => 10,
1036
  'capability' => 'edit_theme_options',
1037
- 'title' => __( 'Panel title is required', 'textdomain' ),
1038
- 'description' => __( 'Description of what this panel does.', 'textdomain' ),
1039
  );
1040
 
1041
  if ( isset( $panel_settings['priority'] ) && ! empty( $panel_settings['priority'] ) ) {
@@ -1100,7 +1093,7 @@ class PixCustomifyPlugin {
1100
  $wp_customize,
1101
  'reset_customify',
1102
  array(
1103
- 'label' => __( 'Reset Customify to Defaults', 'customify_txtd' ),
1104
  'section' => 'customify_toolbar',
1105
  'settings' => 'reset_customify',
1106
  'action' => 'reset_customify',
@@ -1141,7 +1134,7 @@ class PixCustomifyPlugin {
1141
  $section_args = array(
1142
  'priority' => 10,
1143
  'capability' => 'edit_theme_options',
1144
- 'title' => __( 'Title Section is required', 'textdomain' ),
1145
  'panel' => $panel_id,
1146
  );
1147
  $section_id = $options_name . '[' . $section_key . ']';
@@ -1638,25 +1631,6 @@ class PixCustomifyPlugin {
1638
 
1639
  /** == Helpers == */
1640
 
1641
-
1642
- protected static function check_for_customizer_values() {
1643
- if ( isset( $_POST['customized'] ) && $_POST['customized'] !== '{}' ) {
1644
- $the_value = $_POST['customized'];
1645
- self::$customizer_values = json_decode( $the_value, true );
1646
-
1647
- /**
1648
- * if still empty, use stripslashes_deep to ensure compatibility with 5.2
1649
- * http://stackoverflow.com/questions/28698165/json-data-cannot-be-accessed-in-php-version-5-2-17
1650
- */
1651
- if ( empty( self::$customizer_values ) ) {
1652
- $stripped_value = stripslashes_deep( $the_value );
1653
- self::$customizer_values = json_decode( $stripped_value, true );
1654
- }
1655
- } else {
1656
- self::$customizer_values = false;
1657
- }
1658
- }
1659
-
1660
  protected static function get_current_values() {
1661
  $store_type = self::get_plugin_option( 'values_store_mod', 'option' );
1662
  if ( $store_type === 'option' ) {
@@ -1706,9 +1680,16 @@ class PixCustomifyPlugin {
1706
  }
1707
 
1708
  protected static function get_value( $option ) {
 
 
 
1709
 
1710
- if ( isset( self::$customizer_values[ self::$opt_name . '[' . $option . ']' ] ) ) {
1711
- return self::$customizer_values[ self::$opt_name . '[' . $option . ']' ];
 
 
 
 
1712
  }
1713
 
1714
  // shim
20
  * @since 1.0.0
21
  * @const string
22
  */
23
+ protected $version = '1.4.0';
24
  /**
25
  * Unique identifier for your plugin.
26
  * Use this value (not the variable name) as the text domain when internationalizing strings of text. It should
67
 
68
  protected static $media_queries = array();
69
 
 
 
70
  protected static $opt_name;
71
 
72
  protected static $typo_settings;
131
  include_once( self::get_base_path() . '/features/class-CSS_Editor.php' );
132
  include_once( self::get_base_path() . 'features/class-Font_Selector.php' );
133
 
 
 
134
  // Load plugin text domain
135
  add_action( 'init', array( $this, 'load_plugin_textdomain' ) );
136
 
306
  * @since 1.0.0
307
  */
308
  function load_plugin_textdomain() {
 
309
  $domain = $this->plugin_slug;
310
+ load_plugin_textdomain( $domain, false, basename( dirname( __FILE__ ) ) . '/languages/' );
 
 
 
311
  }
312
 
313
  /** === RESOURCES === **/
331
  'jquery',
332
  'select2',
333
  'underscore',
334
+ 'customize-controls'
335
  ), $this->version );
336
 
337
  wp_localize_script( $this->plugin_slug . '-customizer-scripts', 'customify_settings', self::$localized );
1027
  $panel_args = array(
1028
  'priority' => 10,
1029
  'capability' => 'edit_theme_options',
1030
+ 'title' => __( 'Panel title is required', 'pixcustomify' ),
1031
+ 'description' => __( 'Description of what this panel does.', 'pixcustomify' ),
1032
  );
1033
 
1034
  if ( isset( $panel_settings['priority'] ) && ! empty( $panel_settings['priority'] ) ) {
1093
  $wp_customize,
1094
  'reset_customify',
1095
  array(
1096
+ 'label' => __( 'Reset Customify to Defaults', 'customify' ),
1097
  'section' => 'customify_toolbar',
1098
  'settings' => 'reset_customify',
1099
  'action' => 'reset_customify',
1134
  $section_args = array(
1135
  'priority' => 10,
1136
  'capability' => 'edit_theme_options',
1137
+ 'title' => __( 'Title Section is required', '' ),
1138
  'panel' => $panel_id,
1139
  );
1140
  $section_id = $options_name . '[' . $section_key . ']';
1631
 
1632
  /** == Helpers == */
1633
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1634
  protected static function get_current_values() {
1635
  $store_type = self::get_plugin_option( 'values_store_mod', 'option' );
1636
  if ( $store_type === 'option' ) {
1680
  }
1681
 
1682
  protected static function get_value( $option ) {
1683
+ global $wp_customize;
1684
+
1685
+ if ( ! empty( $wp_customize ) && method_exists( $wp_customize, 'get_setting') ) {
1686
 
1687
+ $option_key = self::$opt_name . '[' . $option . ']';
1688
+ $setting = $wp_customize->get_setting( $option_key );
1689
+ if ( ! empty( $setting ) ) {
1690
+ $value = $setting->value();
1691
+ return $value;
1692
+ }
1693
  }
1694
 
1695
  // shim
core/core.php CHANGED
@@ -191,7 +191,7 @@ class pixcustomify {
191
  }
192
 
193
  /** @var string the translation text domain */
194
- protected static $textdomain = 'pixcustomify_txtd';
195
 
196
  /**
197
  * @return string text domain
@@ -210,7 +210,7 @@ class pixcustomify {
210
  }
211
  else { // null or otherwise empty value
212
  // revert to default
213
- self::$textdomain = 'pixcustomify_txtd';
214
  }
215
  }
216
 
191
  }
192
 
193
  /** @var string the translation text domain */
194
+ protected static $textdomain = 'customify';
195
 
196
  /**
197
  * @return string text domain
210
  }
211
  else { // null or otherwise empty value
212
  // revert to default
213
+ self::$textdomain = 'customify';
214
  }
215
  }
216
 
core/defaults.php CHANGED
@@ -27,8 +27,8 @@
27
 
28
  'errors' => array
29
  (
30
- 'is_numeric' => __('Numberic value required.', pixcustomify::textdomain()),
31
- 'not_empty' => __('Field is required.', pixcustomify::textdomain()),
32
  ),
33
 
34
  'callbacks' => array
27
 
28
  'errors' => array
29
  (
30
+ 'is_numeric' => __('Numberic value required.', 'customify' ),
31
+ 'not_empty' => __('Field is required.', 'customify' ),
32
  ),
33
 
34
  'callbacks' => array
css/admin.css CHANGED
@@ -1,29 +1,49 @@
1
  /* This stylesheet is used to style the admin option form of the plugin. */
2
- .extendable_options {
3
- height: 0;
4
- overflow: hidden; }
5
-
6
- fieldset.group {
7
- border-left: 1px solid #333;
8
- padding-left: 20px; }
9
-
10
- .postbox h3.hndle {
11
- padding: 7px;
12
- font-size: 15px; }
13
-
14
- .postbox .row {
15
- width: 100%;
16
- display: inline-block;
17
- padding: 5px 0; }
18
- .postbox .row .field {
 
 
 
 
 
 
 
 
19
  width: 100%;
 
 
 
 
20
  display: inline-block;
21
- padding: 5px 0; }
22
- .postbox .row .group {
23
- border: 1px solid rgba(203, 203, 203, 0.2);
24
- background-color: rgba(203, 203, 203, 0.2);
 
 
 
25
  padding-left: 15px;
26
- margin-left: 5px; }
27
 
28
- .postbox .uninstall_area {
29
- margin-top: 15px; }
 
 
 
 
 
 
1
  /* This stylesheet is used to style the admin option form of the plugin. */
2
+ .extendable_options
3
+ {
4
+ overflow: hidden;
5
+
6
+ height: 0;
7
+ }
8
+
9
+ fieldset.group
10
+ {
11
+ padding-left: 20px;
12
+
13
+ border-left: 1px solid #333;
14
+ }
15
+
16
+ .postbox h3.hndle
17
+ {
18
+ font-size: 15px;
19
+
20
+ padding: 7px;
21
+ }
22
+
23
+ .postbox .row
24
+ {
25
+ display: inline-block;
26
+
27
  width: 100%;
28
+ padding: 5px 0;
29
+ }
30
+ .postbox .row .field
31
+ {
32
  display: inline-block;
33
+
34
+ width: 100%;
35
+ padding: 5px 0;
36
+ }
37
+ .postbox .row .group
38
+ {
39
+ margin-left: 5px;
40
  padding-left: 15px;
 
41
 
42
+ border: 1px solid rgba(203, 203, 203, .2);
43
+ background-color: rgba(203, 203, 203, .2);
44
+ }
45
+
46
+ .postbox .uninstall_area
47
+ {
48
+ margin-top: 15px;
49
+ }
css/customizer.css CHANGED
@@ -1,306 +1,484 @@
1
- .wp-full-overlay-sidebar * {
2
- box-sizing: border-box; }
3
-
4
- .accordion-section-content {
5
- overflow: visible; }
6
-
7
- .control-section:not(.control-section-themes) .customize-control {
8
- padding: 0px;
9
- width: 100%;
10
- min-height: initial; }
11
-
12
- .customize-controls-close {
13
- width: 48px;
14
- height: 44px;
15
- color: #7da9c3;
16
- background: #ffffff;
17
- border-top: none;
18
- border-right-color: #e0e8ef; }
19
- .customize-controls-close:focus, .customize-controls-close:hover {
20
- background: #f5fcff; }
21
- .customize-controls-close:before {
22
- top: 0px; }
23
-
24
- #customize-controls .customize-info {
25
- border-bottom-color: #e0e8ef; }
26
-
27
- .customize-panel-back, .customize-section-back {
28
- height: 74px;
29
- color: #7da9c3;
30
- border-right-color: #e0e8ef; }
31
- .customize-panel-back:hover, .customize-panel-back:focus, .customize-section-back:hover, .customize-section-back:focus {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  border-left-color: #f5fcff;
33
- background: #f5fcff; }
 
34
 
35
- #customize-theme-controls .theme * {
36
- box-sizing: content-box; }
 
 
37
 
38
- #customize-theme-controls .accordion-section-content {
39
- padding: 17px; }
 
 
40
 
41
- #customize-theme-controls .customize-section-title {
42
- margin-top: -17px;
43
- margin-right: -17px; }
 
 
44
 
45
  #customize-theme-controls .control-panel-content .control-section:nth-child(2),
46
- #customize-theme-controls .control-panel-content .control-section:nth-child(3) {
47
- border-top: none; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
 
49
- #customize-theme-controls .control-panel-content .control-section:nth-last-child(2) {
50
- border-bottom: 1px solid #e0e8ef; }
51
 
52
- #customize-theme-controls #accordion-section-add_menu {
53
- text-align: right;
54
- overflow: visible; }
55
- #customize-theme-controls #accordion-section-add_menu .add-menu-toggle {
56
- float: none; }
57
 
58
- #customize-controls .description {
59
- margin-bottom: 9px;
60
- font-size: 12px;
61
- font-weight: 300;
62
- font-style: normal;
63
- line-height: 1.6;
64
- color: #4d7b90;
65
- text-indent: 0; }
66
 
67
- .customize-control-description {
68
- margin-top: 6px; }
 
 
69
 
70
- .customize-control {
71
- margin-bottom: 24px; }
 
 
72
 
73
- #accordion-section-themes + .control-section {
74
- border-top: none; }
 
 
75
 
76
- #customize-controls .panel-meta.customize-info .accordion-section-title {
77
- border-top: none;
78
- height: 74px; }
 
 
 
79
 
80
  .wp-core-ui .button:not(.theme-details):not(.collapse-sidebar),
81
  .wp-core-ui .button-primary,
82
- .wp-core-ui .button-secondary {
83
- width: auto;
84
- padding: 6px 20px;
85
- font-size: 13px;
86
- font-weight: 400;
87
- color: #F5FCFF;
88
- line-height: 1.4;
89
- text-shadow: none;
90
- border: none;
91
- background: #AED2E5;
92
- box-shadow: 0px 2px 0px 0px #8DBED7;
93
- border-radius: 4px;
94
- transition: all 0.1s; }
95
- .wp-core-ui .button:not(.theme-details):not(.collapse-sidebar):hover,
96
- .wp-core-ui .button-primary:hover,
97
- .wp-core-ui .button-secondary:hover {
 
 
 
 
 
 
98
  color: white;
 
 
99
  text-shadow: none;
100
- background: #98C6DD;
101
- box-shadow: 0px 2px 0px 0px #74A7C2; }
102
-
103
- .wp-core-ui .button-primary {
104
- background: #73C5EE;
105
- box-shadow: 0px 2px 0px 0px #57ABD5; }
106
- .wp-core-ui .button-primary:hover {
107
- background: #58B0DD;
108
- box-shadow: 0px 2px 0px 0px #3F8AAF; }
 
 
 
109
 
110
  .wp-core-ui .reset_section,
111
- .wp-core-ui .reset_panel {
112
- width: 100%;
113
- height: 4em;
114
- display: block;
115
- margin: 0px 0 25px; }
116
-
117
- .wp-core-ui .reset_panel {
118
- margin-top: 10px; }
119
-
120
- .separator.label {
121
- display: block;
122
- font-size: 14px;
123
- line-height: 24px;
124
- font-weight: 600; }
125
-
126
- .customize-control-title, .separator.label {
127
- color: #416B7E; }
128
-
129
- .separator.section:before, .separator.sub-section:before {
130
- content: "";
131
- position: absolute;
132
- top: 0;
133
- bottom: 0;
134
- left: -18px;
135
- right: -18px;
136
- z-index: -1; }
137
-
138
- .separator.label {
139
- margin-bottom: -3px;
140
- margin-bottom: -15px;
141
- font-weight: 500; }
142
-
143
- .separator.large {
144
- margin-top: 12px;
145
- font-size: 16px;
146
- color: #39474D; }
147
-
148
- .separator.section {
149
- position: relative;
150
- padding: 14px 0;
151
- margin-bottom: 0;
152
- background: none;
153
- border: none; }
154
- .separator.section[id*="layout"] {
155
- margin-top: 0; }
156
- .separator.section[id*="layout"]:before {
157
- border: none; }
158
- .separator.section:before {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
159
  border: 1px solid #e0e8ef;
160
- background-color: #ffffff;
161
- box-shadow: 0px 1px 0px 0px #DFE8EF; }
 
 
 
 
 
162
 
163
- .separator.sub-section {
164
- position: relative;
165
- padding: 12px 0; }
166
- .separator.sub-section:before {
167
  border-top: 1px solid #e0e8ef;
168
  border-bottom: 1px solid #e0e8ef;
169
- background-color: #f6fbff; }
170
- .separator.sub-section + span {
 
 
 
 
171
  margin-top: 20px;
172
- font-style: normal; }
173
-
174
- .section-navigation-wrapper {
175
- position: relative;
176
- height: 43px;
177
- margin: -15px -12px 0 -12px;
178
- margin-right: -17px;
179
- margin-left: -17px; }
180
-
181
- .section-navigation {
182
- display: -ms-flexbox;
183
- display: flex;
184
- margin-top: -1px;
185
- clear: both;
186
- border-top: 1px solid #e0e8ef; }
187
- .section-navigation a {
188
- -ms-flex: 1 1 auto;
189
- flex: 1 1 auto;
 
 
 
 
 
 
190
  display: block;
 
191
  padding: 12px 0;
192
- color: #3b484e;
193
- background-color: #ffffff;
194
- border-bottom: 1px solid #e0e8ef;
195
- border-right: 1px solid #e0e8ef;
196
  text-align: center;
197
  text-decoration: none;
198
- transition: background-color .15s ease-in-out; }
199
- .section-navigation a:last-child {
200
- border-right: 0; }
201
 
202
- .customize-section-description-container + .customize-control {
203
- margin-bottom: 0; }
 
 
 
 
 
 
 
 
 
 
204
 
205
  #customize-controls .customize-info.is-sticky.is-sticky,
206
- #customize-controls .customize-section-title.is-sticky.is-sticky {
207
- top: 40px; }
 
 
208
 
209
  #customize-controls .customize-info.is-in-view.is-in-view,
210
- #customize-controls .customize-section-title.is-in-view.is-in-view {
211
- box-shadow: none; }
 
 
212
 
213
  #customize-controls .has-nav .customize-info,
214
- #customize-controls .has-nav .customize-section-title {
215
- margin-right: -12px; }
216
-
217
- #customize-controls .customize-section-title.customize-section-title {
218
- border-bottom: 0; }
219
-
220
- .customize-section-description-container.section-meta.has-nav {
221
- margin-bottom: 0; }
222
-
223
- .font-options__wrapper {
224
- position: relative; }
225
- .font-options__wrapper:after {
226
- content: "";
 
 
 
 
 
 
 
 
227
  position: absolute;
 
228
  top: 90%;
229
- left: 0;
230
  right: 0;
231
- z-index: 0;
 
232
  display: block;
233
- height: 100px; }
234
-
235
- .font-options__head {
236
- display: -ms-flexbox;
237
- display: flex;
238
- -ms-flex-pack: justify;
239
- justify-content: space-between; }
240
- .font-options__head.font-options__head {
 
 
 
 
 
 
 
 
 
 
 
241
  -webkit-appearance: none;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
242
  text-overflow: ellipsis;
243
- white-space: nowrap; }
244
-
245
- .font-options__font-title {
246
- margin-right: 26px;
247
- margin-left: 10px;
248
- font-size: 12px;
249
- line-height: 20px;
250
- font-weight: 300;
251
- color: #98c6dd;
252
- text-overflow: ellipsis;
253
- overflow: hidden;
254
- white-space: nowrap; }
255
-
256
- .font-options__options-list {
257
- position: absolute;
258
- top: calc(100% + 6px);
259
- left: -6px;
260
- right: -6px;
261
- z-index: 2;
262
- display: block;
263
- padding: 10px;
264
- border: 1px solid #dfe8ef;
265
- border-radius: 5px;
266
- background-color: #ffffff;
267
- opacity: 0;
268
- display: none;
269
- transition: opacity .15s linear; }
270
- .font-options__options-list:last-child {
271
- margin-bottom: 0; }
272
- .font-options__options-list:before, .font-options__options-list:after {
273
- content: "";
274
  position: absolute;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
275
  top: -20px;
276
  right: 25px;
277
- height: 0;
278
  width: 0;
 
 
 
 
279
  border: solid transparent;
280
- z-index: 10; }
281
- .font-options__options-list:before {
282
- border-bottom-color: white;
 
 
283
  border-width: 10px;
284
- z-index: 11; }
285
- .font-options__options-list:after {
286
- border-bottom-color: rgba(0, 0, 0, 0.075);
287
- border-width: 12px;
288
  top: -24px;
289
- right: 23px; }
290
-
291
- .customize-control-color .wp-picker-container .wp-picker-open + .wp-picker-input-wrap:after {
292
- content: "";
293
- position: absolute;
294
- bottom: 100%;
295
- right: 12px;
296
- border-collapse: separate;
297
- width: 0;
298
- height: 0;
299
- border-width: 0 9px 9px 9px;
300
- border-style: solid;
301
- border-color: transparent transparent #fff transparent; }
302
-
303
- .font-options__head, .customize-control input[type=text],
 
 
 
 
 
 
 
 
 
 
 
304
  .customize-control input[type=checkbox],
305
  .customize-control input[type=password],
306
  .customize-control input[type=color],
@@ -318,738 +496,1176 @@
318
  .customize-control input[type=search],
319
  .customize-control select,
320
  .customize-control textarea,
321
- .customize-control input[type="number"].range-value, ul.font-options__options-list .select2-container .select2-selection--single {
322
- width: 100%;
323
- height: 44px;
324
- padding: 10px 14px;
325
- background: #FFFFFF;
326
- border: 2px solid #B8DAEB;
327
- border-radius: 4px;
328
- font-size: 14px;
329
- line-height: 1.5;
330
- color: #416B7E;
331
- outline: 0; }
332
- .font-options__head:focus, .customize-control input[type=text]:focus,
333
- .customize-control input[type=checkbox]:focus,
334
- .customize-control input[type=password]:focus,
335
- .customize-control input[type=color]:focus,
336
- .customize-control input[type=date]:focus,
337
- .customize-control input[type=datetime]:focus,
338
- .customize-control input[type=datetime-local]:focus,
339
- .customize-control input[type=email]:focus,
340
- .customize-control input[type=month]:focus,
341
- .customize-control input[type=number]:focus,
342
- .customize-control input[type=radio]:focus,
343
- .customize-control input[type=tel]:focus,
344
- .customize-control input[type=time]:focus,
345
- .customize-control input[type=url]:focus,
346
- .customize-control input[type=week]:focus,
347
- .customize-control input[type=search]:focus,
348
- .customize-control select:focus,
349
- .customize-control textarea:focus,
350
- .customize-control input[type="number"].range-value:focus, ul.font-options__options-list .select2-container .select2-selection--single:focus {
351
- border-color: #73C5EE;
352
- box-shadow: none; }
353
-
354
- .font-options__head, .customize-control select, ul.font-options__options-list .select2-container .select2-selection--single {
355
- width: 100%;
356
- -webkit-appearance: button;
357
- -moz-appearance: none;
358
- font-weight: 600;
359
- background: white url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjE1cHgiIGhlaWdodD0iOXB4IiB2aWV3Qm94PSIwIDAgMTUgOSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDxkZWZzPjwvZGVmcz4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJDdXN0b21pZnktQ29weS0yIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjU2LjAwMDAwMCwgLTM4Ni4wMDAwMDApIiBmaWxsPSIjOThDNkRFIj4KICAgICAgICAgICAgPGcgaWQ9IkhlYWRlciIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTIxLjAwMDAwMCwgNDcuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICA8ZyBpZD0iQ29udGVudCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAuMDAwMDAwLCA3NS4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iVGl0bGUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI2LjAwMDAwMCwgMjE5LjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iRmllbGQtLS1TZWxlY3QtQ29weSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iU2VsZWN0IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMjcuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTI1NC40ODEyLDE4IEwyNTYsMTkuNTE0IEwyNDguNSwyNyBMMjQxLDE5LjUxNCBMMjQyLjUxODgsMTggTDI0OC41LDIzLjk2NzIgTDI1NC40ODEyLDE4IFoiIGlkPSJQYWdlLTEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+) no-repeat;
360
- background-position: right 16px top 16px; }
361
- [multiple].font-options__head, .customize-control select[multiple], ul.font-options__options-list .select2-container [multiple].select2-selection--single {
362
- background: white; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
363
 
364
  .customize-control input[type=text],
365
- .customize-control textarea {
366
- font-size: 13px; }
 
 
367
 
368
- .customize-control textarea {
369
- height: auto; }
 
 
370
 
371
  .customize-control input[type=checkbox],
372
- .customize-control input[type=radio] {
373
- width: 22px;
374
- height: 22px; }
375
- .customize-control input[type=checkbox]:checked,
376
- .customize-control input[type=radio]:checked {
377
- background: #73C5EE;
378
- border-color: #5AB9E8; }
379
- .customize-control input[type=checkbox]:checked:before,
380
- .customize-control input[type=radio]:checked:before {
381
- color: white;
382
- margin: -1px 0 0 -2px; }
383
-
384
- .customize-control.customize-control-checkbox label:not(:only-of-type), .customize-control.customize-control-radio label:not(:only-of-type) {
385
- margin-left: 30px;
386
- padding-top: 0;
387
- padding-bottom: 0;
388
- display: inline-block;
389
- width: calc(49% - 30px);
390
- text-indent: -6px; }
391
-
392
- .customize-control.customize-control-checkbox label, .customize-control.customize-control-radio label {
393
- color: #416B7E; }
394
-
395
- .customize-control-html + .customize-control.customize-control-checkbox, .customize-control-html + .customize-control.customize-control-radio {
396
- margin-top: -24px; }
397
-
398
- [id*="divider"] + .customize-control.customize-control-checkbox, [id*="divider"] + .customize-control.customize-control-radio {
399
- margin-top: 0; }
400
-
401
- .customize-control input[type=radio] {
402
- border-radius: 50%; }
403
- .customize-control input[type=radio]:checked:before {
404
- content: none; }
405
-
406
- .customize-control.customize-control-radio label {
407
- margin-top: 12px; }
408
-
409
- .customize-control input[type="range"] {
410
- width: 65%; }
411
-
412
- .customize-control input[type="range"] {
413
- position: relative;
414
- -webkit-appearance: none;
415
- width: 200px;
416
- height: 22px;
417
- overflow: hidden;
418
- outline: none;
419
- background: none; }
420
- .customize-control input[type="range"]:before {
421
- content: " ";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
422
  position: absolute;
423
  top: 8px;
424
  left: 0;
425
- height: 6px;
426
  width: 100%;
427
- background: #DFE8EF;
428
- box-shadow: inset 0px 1px 3px 0px rgba(0, 0, 0, 0.3);
429
- border-radius: 10px; }
430
- .customize-control input[type="range"]::-webkit-slider-thumb {
431
- -webkit-appearance: none;
 
 
 
 
 
 
 
 
432
  width: 22px;
433
  height: 22px;
 
 
 
434
  background: #27ae60;
435
- position: relative;
436
- z-index: 3;
437
- background: #FFFFFF;
438
- border: 2px solid #B8DAEB;
439
- border-radius: 4px; }
440
- .customize-control input[type="range"]::-webkit-slider-thumb:before {
441
- content: "..";
442
- position: absolute;
443
- left: 5px;
444
- top: -5px;
445
- color: #B8DAEB;
446
- font-size: 1em;
447
- letter-spacing: 1px; }
448
- .customize-control input[type="range"]::-webkit-slider-thumb:after {
449
- content: " ";
450
- width: 200px;
451
- height: 6px;
452
- position: absolute;
453
- z-index: 1;
454
- right: 20px;
455
- top: 6px;
456
- background: #73C5EE; }
457
-
458
- .customize-control input[type="number"].range-value {
459
- min-width: 40px;
460
- max-width: 80px;
461
- width: auto;
462
- height: 30px;
463
- top: -5px;
464
- float: right;
465
- padding: 4px 0px 5px 0px;
466
- margin-left: 10px;
467
- font-size: 13px;
468
- line-height: 1;
469
- text-align: center; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
470
 
471
  .customize-control input[type=number]::-webkit-inner-spin-button,
472
- .customize-control input[type=number]::-webkit-outer-spin-button {
473
- -webkit-appearance: none;
474
- margin: 0; }
475
-
476
- .customize-control-color {
477
- display: block; }
478
- .customize-control-color .customize-control-title, .customize-control-color .separator.label {
479
- float: left; }
480
- .customize-control-color .wp-picker-container {
 
 
 
 
 
 
 
 
 
481
  position: relative;
 
 
482
  float: right;
483
- top: -3px; }
484
- .customize-control-color .wp-picker-container .wp-picker-holder {
485
- position: relative; }
486
- .customize-control-color .wp-picker-container .iris-picker {
487
- position: absolute;
488
- top: 40px;
489
- right: 0;
490
- z-index: 1000;
491
- width: 275px !important;
492
- border-top: none;
493
- border-color: #DFDFDE;
494
- border-radius: 0 0 3px 3px;
495
- border: none;
496
- background: white; }
497
- .customize-control-color .wp-picker-container .iris-picker .iris-square {
498
- width: 215px !important;
499
- height: 173px !important;
500
- margin-right: 0; }
501
- .customize-control-color .wp-picker-container .iris-picker .iris-strip {
502
- float: right;
503
- box-shadow: rgba(0, 0, 0, 0.4) 0 1px 1px inset; }
504
- .customize-control-color .wp-picker-container .iris-picker .iris-strip .ui-slider-handle {
505
- border-color: #aaa !important;
506
- opacity: 1;
507
- box-shadow: none; }
508
- .customize-control-color .wp-picker-container .iris-picker .iris-palette {
509
- width: 24px !important;
510
- height: 24px !important;
511
- border-radius: 50px;
512
- box-shadow: rgba(0, 0, 0, 0.4) 0 1px 1px inset; }
513
- .customize-control-color .wp-picker-container .wp-picker-open + .wp-picker-input-wrap {
514
- position: absolute;
515
- z-index: 1000;
516
- top: 35px;
517
- right: 0;
518
- width: 275px;
519
- padding: 9px 12px;
520
- background: white;
521
- border: none;
522
- border-radius: 3px 3px 0 0; }
523
- .customize-control-color .wp-picker-container .wp-picker-open + .wp-picker-input-wrap input.wp-color-picker {
524
- float: left;
525
- width: 100px;
526
- font-size: 13px;
527
- text-align: left;
528
- margin: 0;
529
- padding: 6px 12px;
530
- height: auto; }
531
- .customize-control-color .wp-picker-container .wp-picker-open + .wp-picker-input-wrap input.button {
532
- float: right;
533
- padding: 4px 12px;
534
- height: 30px; }
535
- .customize-control-color .wp-color-result {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
536
  top: 0;
537
- height: 30px;
538
  width: 40px;
 
539
  margin: 0;
540
  padding: 0;
 
 
541
  border-radius: 4px;
542
- background: #2ECC71;
543
- border: 2px solid #B8DAEB;
544
- box-shadow: none; }
545
- .customize-control-color .wp-color-result:after {
546
- display: none; }
547
-
548
- #accordion-section-live_css_edit_section .customize-section-title {
549
- margin-top: -13px;
550
- border-bottom: 1px solid #ddd; }
551
-
552
- #accordion-section-live_css_edit_section #css_editor {
553
- top: 70px;
554
- border-top: 10px solid white;
555
- overflow: visible; }
556
- #accordion-section-live_css_edit_section #css_editor:before {
557
- content: "";
558
- width: 48px;
559
- height: 10px;
560
- display: block;
561
- background: #e8e8e8;
562
- top: -10px;
 
 
 
 
563
  position: absolute;
564
  z-index: 10000000;
565
- left: 0; }
 
 
 
 
 
 
566
 
567
- #accordion-section-live_css_edit_section .ace_scroller {
568
- padding-left: 10px; }
569
 
570
- .wp-full-overlay.editor_opened {
571
- margin-left: 500px; }
572
- .wp-full-overlay.editor_opened #customize-controls {
573
- width: 500px; }
574
- .wp-full-overlay.editor_opened.collapsed #customize-controls {
575
- width: 300px; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
576
 
577
  .customize-control-media .current,
578
  .customize-control-site_icon .current,
579
- li#customize-control-site_logo .current {
580
- margin-bottom: 10px;
581
- min-height: 44px;
582
- background: #F5FCFF;
583
- border: 2px solid #B8DAEB;
584
- border-radius: 4px; }
585
- .customize-control-media .current .container, .customize-control-media .current span,
586
- .customize-control-site_icon .current .container,
587
- .customize-control-site_icon .current span,
588
- li#customize-control-site_logo .current .container,
589
- li#customize-control-site_logo .current span {
590
- border: none; }
591
-
592
- .customize-control-media .inner, .customize-control-media .current span,
 
 
 
 
 
 
 
593
  .customize-control-site_icon .inner,
594
  .customize-control-site_icon .current span,
595
  li#customize-control-site_logo .inner,
596
- li#customize-control-site_logo .current span {
597
- font-size: 13px;
598
- color: #98C6DD; }
 
 
 
599
 
600
  .customize-control-media .inner,
601
  .customize-control-site_icon .inner,
602
- li#customize-control-site_logo .inner {
603
- line-height: 1.4; }
 
 
604
 
605
  .customize-control-media .thumbnail-image,
606
  .customize-control-site_icon .thumbnail-image,
607
- li#customize-control-site_logo .thumbnail-image {
608
- padding: 14px;
609
- text-align: center; }
610
- .customize-control-media .thumbnail-image img,
611
- .customize-control-site_icon .thumbnail-image img,
612
- li#customize-control-site_logo .thumbnail-image img {
613
- width: auto; }
 
 
 
 
 
614
 
615
  .customize-control-media .actions,
616
  .customize-control-site_icon .actions,
617
- li#customize-control-site_logo .actions {
618
- margin-bottom: 0; }
619
-
620
- .customize-control-typography select, .customize-control-typography select {
621
- margin-bottom: 10px; }
622
-
623
- .customize-control-typography .description, .customize-control-typography .description {
624
- margin-top: -3px; }
625
-
626
- .customize-control-typography ul li, .customize-control-typography ul li {
627
- width: 100%;
628
- margin: 0; }
629
-
630
- .default-preset-button {
631
- background-color: #F5F6F6;
632
- float: right;
633
- padding: 1px 8px;
634
- border-radius: 3px;
635
- border: 1px solid #CBCBCB;
636
- margin-right: 4px;
637
- font-family: "Open Sans",sans-serif;
638
- font-size: 13px; }
639
-
640
- .customize-control-preset .description {
641
- margin-right: 5px;
642
- font-style: normal; }
643
-
644
- .customify_preset.radio_buttons .customify_radio_button {
645
- border: none;
646
- display: inline-block;
647
- padding: 2px;
648
- margin: 3px;
649
- position: relative;
650
- overflow: hidden;
651
- height: auto; }
652
- .customify_preset.radio_buttons .customify_radio_button input[type="radio"] {
653
- opacity: 0;
654
  width: 100%;
655
- height: 100%;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
656
  position: absolute;
657
- z-index: 9999; }
658
- .customify_preset.radio_buttons .customify_radio_button input[type="radio"]:checked + label {
659
- background-color: #ebebeb; }
660
- .customify_preset.radio_buttons .customify_radio_button input[type="radio"]:checked + label:before {
661
- content: '>';
662
- color: inherit; }
663
- .customify_preset.radio_buttons .customify_radio_button input[type="radio"]:checked + label:after {
664
- content: '<';
665
- color: inherit; }
666
- .customify_preset.radio_buttons .customify_radio_button input[type="radio"]:checked:before {
667
- opacity: 0; }
668
- .customify_preset.radio_buttons .customify_radio_button label {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
669
  position: relative;
670
  z-index: 999;
671
- border-left: 4px solid; }
672
-
673
- .customify_preset .awesome_preset {
674
- width: 45%;
675
- position: relative;
676
- display: inline-block;
677
- text-align: center;
678
- color: white;
679
- margin-top: 5px;
680
- margin-bottom: 25px;
681
- transition: all 0.2s; }
682
- .customify_preset .awesome_preset:hover {
683
- opacity: 0.9; }
684
- .customify_preset .awesome_preset:before {
685
- content: '';
 
 
 
 
 
 
 
 
 
 
686
  position: absolute;
 
687
  top: 1px;
688
- left: 1px;
689
  right: 1px;
690
  bottom: 1px;
691
- border: 1px solid #FFF;
692
- background: transparent;
 
 
693
  opacity: .5;
 
694
  border-radius: 4px;
695
- z-index: 5; }
696
- .customify_preset .awesome_preset .preset-wrap .preset-color {
 
 
697
  height: 128px;
 
 
698
  border-radius: 4px 4px 0 0;
699
- padding: 17px 0 27px; }
700
- .customify_preset .awesome_preset .preset-wrap .preset-color .first-font {
701
- display: inline-block;
702
- width: 100%;
703
- font-size: 55px;
704
- line-height: 1; }
705
- .customify_preset .awesome_preset .preset-wrap .preset-color .secondary-font {
706
- display: inline-block;
707
- width: 100%;
708
- font-size: 20px;
709
- line-height: 1;
710
- margin-top: 8px; }
711
- .customify_preset .awesome_preset .preset-wrap .preset-name {
712
- position: relative;
 
 
 
 
 
 
 
 
713
  font-size: 11px;
 
 
 
 
 
714
  text-transform: UPPERCASE;
 
715
  border-radius: 0 0 4px 4px;
716
- padding: 1px; }
717
- .customify_preset .awesome_preset .preset-wrap .preset-name:before {
718
- content: '';
719
- position: absolute;
720
- border-color: inherit;
721
- border: 10px solid;
722
- border-left-color: transparent;
723
- border-right-color: transparent;
724
- border-top: transparent;
725
- top: -10px;
726
- border-bottom-color: inherit;
727
- left: 40%; }
728
- .customify_preset .awesome_preset:nth-child(odd) {
729
- margin-right: 7%; }
730
- .customify_preset .awesome_preset input[type=radio] {
731
- height: 100%;
732
- width: 100%;
733
  position: absolute;
734
- border: 0;
735
- box-shadow: none;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
736
  color: #006505;
737
- background-color: transparent;
738
  border-radius: 0;
739
- margin: 0;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
740
  display: inline-block;
 
 
 
 
 
 
 
 
 
 
 
 
 
741
  top: 0;
 
 
742
  left: 0;
743
- z-index: 10; }
744
- .customify_preset .awesome_preset input[type=radio]:checked:before {
745
- position: absolute;
746
- height: 25px;
747
- width: 25px;
748
- top: -13px;
749
- right: -14px;
750
- background: #FFF;
751
- z-index: 1; }
752
- .customify_preset .awesome_preset input[type=radio]:checked:after {
753
- -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
754
- filter: alpha(opacity=0);
755
- content: '';
756
- position: absolute;
757
- width: 26px;
758
- height: 26px;
759
- border-radius: 50%;
760
- top: -5px;
761
- right: -5px;
762
- z-index: 10;
763
- background: #73C5EE url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjEzcHgiIGhlaWdodD0iOXB4IiB2aWV3Qm94PSIwIDAgMTMgOSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDxkZWZzPjwvZGVmcz4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJDdXN0b21pZnktQ29weSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTIxLjAwMDAwMCwgLTQwOC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgPGcgaWQ9IkhlYWRlciIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTIxLjAwMDAwMCwgNDcuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICA8ZyBpZD0iQ29udGVudCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAuMDAwMDAwLCA3NS4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iRmllbGQtLS1DaGVja2JveC1Db3B5IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNy4wMDAwMDAsIDI0OS4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9IkNoZWNrYm94IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMzAuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTAuMDM4NDk1LDE2IEwxNy4xMTYxMzc1LDguOTIxNDg3NiBMMTUuMTk0NjQ5OCw3IEwxMC4wMzg0OTUsMTIuMTU1MDY3NCBMNi45MjE0ODc2LDkuMDM4OTI5OTcgTDUsMTAuOTYwNDE3NiBMMTAuMDM4NDk1LDE2IFoiIGlkPSJQYWdlLTEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+) no-repeat;
764
- background-position: center center; }
765
-
766
- .customify_radio_image {
767
- display: inline-block; }
768
- .customify_radio_image label {
769
  display: block;
770
- float: left;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
771
  margin-right: 10px;
772
- position: relative; }
773
- .customify_radio_image label input[type=radio] {
774
- position: absolute;
775
- top: 0;
776
- bottom: 0;
777
- left: 0;
778
- right: 0;
779
- width: 100%;
780
- height: 100%;
781
- visibility: hidden; }
782
- .customify_radio_image label input[type=radio] img {
783
- cursor: pointer;
784
- border: 2px solid transparent; }
785
- .customify_radio_image label input[type=radio]:checked + img {
786
- border: 3px solid #73C5EE; }
787
-
788
- .customify_ace_editor {
789
- display: block;
790
- min-height: 200px;
791
- border: 1px solid #ddd; }
792
-
793
- .customize-control-custom_background .hide {
794
- display: none; }
795
-
796
- .customize-control-custom_background .upload_button_div {
797
- margin: 10px 0; }
798
- .customize-control-custom_background .upload_button_div > * {
799
- margin-right: 10px; }
800
-
801
- .customize-control-custom_background .preview_screenshot {
802
- text-align: center;
803
- margin: 10px 0; }
804
- .customize-control-custom_background .preview_screenshot img {
805
- border: 2px solid #ccc; }
806
-
807
- #customify_import_demo_data_button {
808
- width: 70%;
809
- text-align: center;
810
- padding: 10px;
811
- display: inline-block;
812
- height: auto;
813
- margin: 0 15% 10% 15%; }
814
-
815
- .import_step_note {
816
- margin: 5px;
817
- width: 100%;
818
- display: inline-block; }
819
- .import_step_note:before {
820
- content: "\1F449"; }
821
- .import_step_note.success:before {
822
- content: "\1F44D"; }
823
- .import_step_note.failed:before {
824
- content: "\274C"; }
825
-
826
- #customize-header-actions {
827
- background: #ffffff;
828
- border-color: #e0e8ef; }
829
 
830
  .wp-full-overlay-sidebar,
831
- .customize-themes-panel {
832
- background: #eaf9fe;
833
- border-right: 1px solid #e0e8ef; }
834
-
835
- #customize-theme-controls #accordion-section-menu_locations {
836
- border-bottom: 1px solid #e0e8ef; }
837
-
838
- #customize-controls #accordion-section-themes > .accordion-section-title {
839
- font-weight: 600;
840
- border-bottom: 1px solid #e0e8ef; }
841
- #customize-controls #accordion-section-themes > .accordion-section-title:hover {
842
- background: #fff; }
843
-
844
- #customize-controls .panel-meta.customize-info {
845
- border-bottom-color: #e0e8ef; }
846
-
847
- #customize-theme-controls .control-section .accordion-section-title {
848
- font-weight: 400;
849
- border-top: 1px solid #e0e8ef;
850
- border-bottom: none; }
851
-
852
- #customize-theme-controls .control-section:last-of-type > .accordion-section-title {
853
- border-bottom: 1px solid #e0e8ef; }
854
-
855
- #customize-theme-controls .customize-section-title {
856
- border-top: 1px solid #e0e8ef;
857
- border-bottom: 1px solid #e0e8ef; }
858
-
859
- #customize-controls .control-section .accordion-section-title:focus, #customize-controls .control-section .accordion-section-title:hover, #customize-controls .control-section.open .accordion-section-title, #customize-controls .control-section:hover > .accordion-section-title {
860
- color: #056184;
861
- background: #f5fcff;
862
- border-left-color: #f5fcff; }
863
-
864
- [data-balloon] {
865
- position: relative; }
866
-
867
- [data-balloon]::before {
868
- opacity: 0;
869
- pointer-events: none;
870
- transition: all .18s ease-out;
871
- background: rgba(17, 17, 17, 0.9);
872
- border-radius: 4px;
873
- color: #fff;
874
- content: attr(data-balloon);
875
- font-size: 12px;
876
- padding: .5em 1em;
877
- position: absolute;
878
- white-space: nowrap;
879
- z-index: 10; }
880
-
881
- [data-balloon]::after {
882
- background: no-repeat url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="36px" height="12px"><path fill="rgba(17, 17, 17, 0.9)" transform="rotate(0)" d="M2.658,0.000 C-13.615,0.000 50.938,0.000 34.662,0.000 C28.662,0.000 23.035,12.002 18.660,12.002 C14.285,12.002 8.594,0.000 2.658,0.000 Z"/></svg>');
883
- background-size: 100% auto;
884
- width: 18px;
885
- height: 6px;
886
- opacity: 0;
887
- pointer-events: none;
888
- transition: all .18s ease-out;
889
- content: '';
890
- position: absolute;
891
- z-index: 10; }
892
-
893
- [data-balloon]:hover::before, [data-balloon]:hover::after {
894
- opacity: 1;
895
- pointer-events: auto; }
896
-
897
- [data-balloon][data-balloon-pos="up"]::before {
898
- bottom: 100%;
899
- left: 50%;
900
- margin-bottom: 11px;
901
- -webkit-transform: translate3d(-50%, 10px, 0);
902
- transform: translate3d(-50%, 10px, 0);
903
- -webkit-transform-origin: top;
904
- transform-origin: top; }
905
-
906
- [data-balloon][data-balloon-pos="up"]::after {
907
- bottom: 100%;
908
- left: 50%;
909
- margin-bottom: 5px;
910
- -webkit-transform: translate3d(-50%, 10px, 0);
911
- transform: translate3d(-50%, 10px, 0);
912
- -webkit-transform-origin: top;
913
- transform-origin: top; }
914
-
915
- [data-balloon][data-balloon-pos="up"]:hover::before {
916
- -webkit-transform: translate3d(-50%, 0, 0);
917
- transform: translate3d(-50%, 0, 0); }
918
-
919
- [data-balloon][data-balloon-pos="up"]:hover::after {
920
- -webkit-transform: translate3d(-50%, 0, 0);
921
- transform: translate3d(-50%, 0, 0); }
922
-
923
- [data-balloon][data-balloon-pos='down']::before {
924
- left: 50%;
925
- margin-top: 11px;
926
- top: 100%;
927
- -webkit-transform: translate3d(-50%, -10px, 0);
928
- transform: translate3d(-50%, -10px, 0); }
929
-
930
- [data-balloon][data-balloon-pos='down']::after {
931
- background: no-repeat url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="36px" height="12px"><path fill="rgba(17, 17, 17, 0.9)" transform="rotate(180 18 6)" d="M2.658,0.000 C-13.615,0.000 50.938,0.000 34.662,0.000 C28.662,0.000 23.035,12.002 18.660,12.002 C14.285,12.002 8.594,0.000 2.658,0.000 Z"/></svg>');
932
- background-size: 100% auto;
933
- width: 18px;
934
- height: 6px;
935
- left: 50%;
936
- margin-top: 5px;
937
- top: 100%;
938
- -webkit-transform: translate3d(-50%, -10px, 0);
939
- transform: translate3d(-50%, -10px, 0); }
940
-
941
- [data-balloon][data-balloon-pos='down']:hover::before {
942
- -webkit-transform: translate3d(-50%, 0, 0);
943
- transform: translate3d(-50%, 0, 0); }
944
-
945
- [data-balloon][data-balloon-pos='down']:hover::after {
946
- -webkit-transform: translate3d(-50%, 0, 0);
947
- transform: translate3d(-50%, 0, 0); }
948
-
949
- [data-balloon][data-balloon-pos='left']::before {
950
- margin-right: 11px;
951
- right: 100%;
952
- top: 50%;
953
- -webkit-transform: translate3d(10px, -50%, 0);
954
- transform: translate3d(10px, -50%, 0); }
955
-
956
- [data-balloon][data-balloon-pos='left']::after {
957
- background: no-repeat url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="12px" height="36px"><path fill="rgba(17, 17, 17, 0.9)" transform="rotate(-90 18 18)" d="M2.658,0.000 C-13.615,0.000 50.938,0.000 34.662,0.000 C28.662,0.000 23.035,12.002 18.660,12.002 C14.285,12.002 8.594,0.000 2.658,0.000 Z"/></svg>');
958
- background-size: 100% auto;
959
- width: 6px;
960
- height: 18px;
961
- margin-right: 5px;
962
- right: 100%;
963
- top: 50%;
964
- -webkit-transform: translate3d(10px, -50%, 0);
965
- transform: translate3d(10px, -50%, 0); }
966
-
967
- [data-balloon][data-balloon-pos='left']:hover::before {
968
- -webkit-transform: translate3d(0, -50%, 0);
969
- transform: translate3d(0, -50%, 0); }
970
-
971
- [data-balloon][data-balloon-pos='left']:hover::after {
972
- -webkit-transform: translate3d(0, -50%, 0);
973
- transform: translate3d(0, -50%, 0); }
974
-
975
- [data-balloon][data-balloon-pos='right']::before {
976
- left: 100%;
977
- margin-left: 11px;
978
- top: 50%;
979
- -webkit-transform: translate3d(-10px, -50%, 0);
980
- transform: translate3d(-10px, -50%, 0); }
981
-
982
- [data-balloon][data-balloon-pos='right']::after {
983
- background: no-repeat url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="12px" height="36px"><path fill="rgba(17, 17, 17, 0.9)" transform="rotate(90 6 6)" d="M2.658,0.000 C-13.615,0.000 50.938,0.000 34.662,0.000 C28.662,0.000 23.035,12.002 18.660,12.002 C14.285,12.002 8.594,0.000 2.658,0.000 Z"/></svg>');
984
- background-size: 100% auto;
985
- width: 6px;
986
- height: 18px;
987
- left: 100%;
988
- margin-left: 5px;
989
- top: 50%;
990
- -webkit-transform: translate3d(-10px, -50%, 0);
991
- transform: translate3d(-10px, -50%, 0); }
992
-
993
- [data-balloon][data-balloon-pos='right']:hover::before {
994
- -webkit-transform: translate3d(0, -50%, 0);
995
- transform: translate3d(0, -50%, 0); }
996
-
997
- [data-balloon][data-balloon-pos='right']:hover::after {
998
- -webkit-transform: translate3d(0, -50%, 0);
999
- transform: translate3d(0, -50%, 0); }
1000
-
1001
- [data-balloon][data-balloon-length='small']::before {
1002
- white-space: normal;
1003
- width: 80px; }
1004
-
1005
- [data-balloon][data-balloon-length='medium']::before {
1006
- white-space: normal;
1007
- width: 150px; }
1008
-
1009
- [data-balloon][data-balloon-length='large']::before {
1010
- white-space: normal;
1011
- width: 260px; }
1012
-
1013
- [data-balloon][data-balloon-length='xlarge']::before {
1014
- white-space: normal;
1015
- width: 380px; }
1016
-
1017
- @media screen and (max-width: 768px) {
1018
- [data-balloon][data-balloon-length='xlarge']::before {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1019
  white-space: normal;
1020
- width: 90vw; } }
1021
 
1022
- [data-balloon][data-balloon-length='fit']::before {
1023
- white-space: normal;
1024
- width: 100%; }
1025
 
1026
- .font-options__wrapper .font-options__options-list {
1027
- border-color: #B8DAEB;
1028
- box-shadow: 0 10px 20px 0 rgba(0, 0, 0, 0.15); }
1029
 
1030
- .font-options__wrapper .font-options__option {
1031
- margin-bottom: 12px; }
1032
- .font-options__wrapper .font-options__option label {
1033
- display: block;
1034
- margin-bottom: 6px; }
1035
 
1036
- .font-options__wrapper [type=checkbox]:checked ~ .font-options__options-list {
1037
- opacity: 1;
1038
- display: block; }
1039
 
1040
- input.customify_font_tooltip {
1041
- display: none; }
 
1042
 
1043
- ul.font-options__options-list .select2-container {
1044
- width: 100% !important; }
1045
- ul.font-options__options-list .select2-container .select2-selection--single {
1046
- -webkit-appearance: initial; }
1047
- ul.font-options__options-list .select2-container .select2-selection--single .select2-selection__arrow {
1048
- display: none; }
1049
 
1050
- ul.font-options__options-list .select2-container--default .select2-selection--single .select2-selection__rendered {
1051
- color: inherit;
1052
- line-height: initial; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1053
 
1054
- .select2-container.select2-container--open {
1055
- z-index: 99999999; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .wp-full-overlay-sidebar *
2
+ {
3
+ box-sizing: border-box;
4
+ }
5
+
6
+ .accordion-section-content
7
+ {
8
+ overflow: visible;
9
+ }
10
+
11
+ .control-section:not(.control-section-themes) .customize-control
12
+ {
13
+ width: 100%;
14
+ min-height: initial;
15
+ padding: 0;
16
+ }
17
+
18
+ .customize-controls-close
19
+ {
20
+ width: 48px;
21
+ height: 44px;
22
+
23
+ color: #7da9c3;
24
+ border-top: none;
25
+ border-right-color: #e0e8ef;
26
+ background: #fff;
27
+ }
28
+ .customize-controls-close:focus,
29
+ .customize-controls-close:hover
30
+ {
31
+ background: #f5fcff;
32
+ }
33
+ .customize-controls-close:before
34
+ {
35
+ top: 0;
36
+ }
37
+
38
+ #customize-controls .customize-info
39
+ {
40
+ border-bottom-color: #e0e8ef;
41
+ }
42
+
43
+ .customize-panel-back,
44
+ .customize-section-back
45
+ {
46
+ height: 74px;
47
+
48
+ color: #7da9c3;
49
+ border-right-color: #e0e8ef;
50
+ }
51
+ .customize-panel-back:hover,
52
+ .customize-panel-back:focus,
53
+ .customize-section-back:hover,
54
+ .customize-section-back:focus
55
+ {
56
  border-left-color: #f5fcff;
57
+ background: #f5fcff;
58
+ }
59
 
60
+ #customize-theme-controls .theme *
61
+ {
62
+ box-sizing: content-box;
63
+ }
64
 
65
+ #customize-theme-controls .accordion-section-content
66
+ {
67
+ padding: 17px;
68
+ }
69
 
70
+ #customize-theme-controls .customize-section-title
71
+ {
72
+ margin-top: -17px;
73
+ margin-right: -17px;
74
+ }
75
 
76
  #customize-theme-controls .control-panel-content .control-section:nth-child(2),
77
+ #customize-theme-controls .control-panel-content .control-section:nth-child(3)
78
+ {
79
+ border-top: none;
80
+ }
81
+
82
+ #customize-theme-controls .control-panel-content .control-section:nth-last-child(2)
83
+ {
84
+ border-bottom: 1px solid #e0e8ef;
85
+ }
86
+
87
+ #customize-theme-controls #accordion-section-add_menu
88
+ {
89
+ overflow: visible;
90
+
91
+ text-align: right;
92
+ }
93
+ #customize-theme-controls #accordion-section-add_menu .add-menu-toggle
94
+ {
95
+ float: none;
96
+ }
97
+
98
+ #customize-theme-controls .customize-pane-child.open
99
+ {
100
+ height: 100%;
101
+ }
102
+
103
+ #customize-controls .description
104
+ {
105
+ font-size: 12px;
106
+ font-weight: 300;
107
+ font-style: normal;
108
+ line-height: 1.6;
109
 
110
+ margin-bottom: 9px;
 
111
 
112
+ text-indent: 0;
 
 
 
 
113
 
114
+ color: #4d7b90;
115
+ }
 
 
 
 
 
 
116
 
117
+ .customize-control-description
118
+ {
119
+ margin-top: 6px;
120
+ }
121
 
122
+ .customize-control
123
+ {
124
+ margin-bottom: 24px;
125
+ }
126
 
127
+ #accordion-section-themes + .control-section
128
+ {
129
+ border-top: none;
130
+ }
131
 
132
+ #customize-controls .panel-meta.customize-info .accordion-section-title
133
+ {
134
+ height: 74px;
135
+
136
+ border-top: none;
137
+ }
138
 
139
  .wp-core-ui .button:not(.theme-details):not(.collapse-sidebar),
140
  .wp-core-ui .button-primary,
141
+ .wp-core-ui .button-secondary
142
+ {
143
+ font-size: 13px;
144
+ font-weight: 400;
145
+ line-height: 1.4;
146
+
147
+ width: auto;
148
+ padding: 6px 20px;
149
+
150
+ transition: all .1s;
151
+
152
+ color: #f5fcff;
153
+ border: none;
154
+ border-radius: 4px;
155
+ background: #aed2e5;
156
+ box-shadow: 0 2px 0 0 #8dbed7;
157
+ text-shadow: none;
158
+ }
159
+ .wp-core-ui .button:not(.theme-details):not(.collapse-sidebar):hover,
160
+ .wp-core-ui .button-primary:hover,
161
+ .wp-core-ui .button-secondary:hover
162
+ {
163
  color: white;
164
+ background: #98c6dd;
165
+ box-shadow: 0 2px 0 0 #74a7c2;
166
  text-shadow: none;
167
+ }
168
+
169
+ .wp-core-ui .button-primary
170
+ {
171
+ background: #73c5ee;
172
+ box-shadow: 0 2px 0 0 #57abd5;
173
+ }
174
+ .wp-core-ui .button-primary:hover
175
+ {
176
+ background: #58b0dd;
177
+ box-shadow: 0 2px 0 0 #3f8aaf;
178
+ }
179
 
180
  .wp-core-ui .reset_section,
181
+ .wp-core-ui .reset_panel
182
+ {
183
+ display: block;
184
+
185
+ width: 100%;
186
+ height: 4em;
187
+ margin: 0 0 25px;
188
+ }
189
+
190
+ .wp-core-ui .reset_panel
191
+ {
192
+ margin-top: 10px;
193
+ }
194
+
195
+ .separator.label
196
+ {
197
+ font-size: 14px;
198
+ font-weight: 600;
199
+ line-height: 24px;
200
+
201
+ display: block;
202
+ }
203
+
204
+ .customize-control-title,
205
+ .separator.label
206
+ {
207
+ color: #416b7e;
208
+ }
209
+
210
+ .separator.section:before,
211
+ .separator.sub-section:before
212
+ {
213
+ position: absolute;
214
+ z-index: -1;
215
+ top: 0;
216
+ right: -18px;
217
+ bottom: 0;
218
+ left: -18px;
219
+
220
+ content: '';
221
+ }
222
+
223
+ .separator.label
224
+ {
225
+ font-weight: 500;
226
+
227
+ margin-bottom: -3px;
228
+ margin-bottom: -15px;
229
+ }
230
+
231
+ .separator.large
232
+ {
233
+ font-size: 16px;
234
+
235
+ margin-top: 12px;
236
+
237
+ color: #39474d;
238
+ }
239
+
240
+ .separator.section
241
+ {
242
+ position: relative;
243
+
244
+ margin-bottom: 0;
245
+ padding: 14px 0;
246
+
247
+ border: none;
248
+ background: none;
249
+ }
250
+ .separator.section[id*='layout']
251
+ {
252
+ margin-top: 0;
253
+ }
254
+ .separator.section[id*='layout']:before
255
+ {
256
+ border: none;
257
+ }
258
+ .separator.section:before
259
+ {
260
  border: 1px solid #e0e8ef;
261
+ background-color: #fff;
262
+ box-shadow: 0 1px 0 0 #dfe8ef;
263
+ }
264
+
265
+ .separator.sub-section
266
+ {
267
+ position: relative;
268
 
269
+ padding: 12px 0;
270
+ }
271
+ .separator.sub-section:before
272
+ {
273
  border-top: 1px solid #e0e8ef;
274
  border-bottom: 1px solid #e0e8ef;
275
+ background-color: #f6fbff;
276
+ }
277
+ .separator.sub-section + span
278
+ {
279
+ font-style: normal;
280
+
281
  margin-top: 20px;
282
+ }
283
+
284
+ .section-navigation-wrapper
285
+ {
286
+ position: relative;
287
+
288
+ height: 43px;
289
+ margin: -15px -12px 0 -12px;
290
+ margin-right: -17px;
291
+ margin-left: -17px;
292
+ }
293
+
294
+ .section-navigation
295
+ {
296
+ display: -ms-flexbox;
297
+ display: flex;
298
+ clear: both;
299
+
300
+ margin-top: -1px;
301
+
302
+ border-top: 1px solid #e0e8ef;
303
+ }
304
+ .section-navigation a
305
+ {
306
  display: block;
307
+
308
  padding: 12px 0;
309
+
310
+ transition: background-color .15s ease-in-out;
 
 
311
  text-align: center;
312
  text-decoration: none;
 
 
 
313
 
314
+ color: #3b484e;
315
+ border-right: 1px solid #e0e8ef;
316
+ border-bottom: 1px solid #e0e8ef;
317
+ background-color: #fff;
318
+
319
+ -ms-flex: 1 1 auto;
320
+ flex: 1 1 auto;
321
+ }
322
+ .section-navigation a:last-child
323
+ {
324
+ border-right: 0;
325
+ }
326
 
327
  #customize-controls .customize-info.is-sticky.is-sticky,
328
+ #customize-controls .customize-section-title.is-sticky.is-sticky
329
+ {
330
+ top: 40px;
331
+ }
332
 
333
  #customize-controls .customize-info.is-in-view.is-in-view,
334
+ #customize-controls .customize-section-title.is-in-view.is-in-view
335
+ {
336
+ box-shadow: none;
337
+ }
338
 
339
  #customize-controls .has-nav .customize-info,
340
+ #customize-controls .has-nav .customize-section-title
341
+ {
342
+ margin-right: -12px;
343
+ }
344
+
345
+ #customize-controls .customize-section-title.customize-section-title
346
+ {
347
+ border-bottom: 0;
348
+ }
349
+
350
+ .customize-section-description-container.section-meta.has-nav
351
+ {
352
+ margin-bottom: 0;
353
+ }
354
+
355
+ .font-options__wrapper
356
+ {
357
+ position: relative;
358
+ }
359
+ .font-options__wrapper:after
360
+ {
361
  position: absolute;
362
+ z-index: 0;
363
  top: 90%;
 
364
  right: 0;
365
+ left: 0;
366
+
367
  display: block;
368
+
369
+ height: 100px;
370
+
371
+ content: '';
372
+ }
373
+
374
+ .font-options__head
375
+ {
376
+ display: -ms-flexbox;
377
+ display: flex;
378
+
379
+ -ms-flex-pack: justify;
380
+ justify-content: space-between;
381
+ }
382
+ .font-options__head.font-options__head
383
+ {
384
+ white-space: nowrap;
385
+ text-overflow: ellipsis;
386
+
387
  -webkit-appearance: none;
388
+ }
389
+
390
+ .font-options__font-title
391
+ {
392
+ font-size: 12px;
393
+ font-weight: 300;
394
+ line-height: 20px;
395
+
396
+ overflow: hidden;
397
+
398
+ margin-right: 26px;
399
+ margin-left: 10px;
400
+
401
+ white-space: nowrap;
402
  text-overflow: ellipsis;
403
+
404
+ color: #98c6dd;
405
+ }
406
+
407
+ .font-options__options-list
408
+ {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
409
  position: absolute;
410
+ z-index: 2;
411
+ top: calc(100% + 6px);
412
+ right: -6px;
413
+ left: -6px;
414
+
415
+ display: block;
416
+ display: none;
417
+
418
+ padding: 10px;
419
+
420
+ transition: opacity .15s linear;
421
+
422
+ opacity: 0;
423
+ border: 1px solid #dfe8ef;
424
+ border-radius: 5px;
425
+ background-color: #fff;
426
+ }
427
+ .font-options__options-list:last-child
428
+ {
429
+ margin-bottom: 0;
430
+ }
431
+ .font-options__options-list:before,
432
+ .font-options__options-list:after
433
+ {
434
+ position: absolute;
435
+ z-index: 10;
436
  top: -20px;
437
  right: 25px;
438
+
439
  width: 0;
440
+ height: 0;
441
+
442
+ content: '';
443
+
444
  border: solid transparent;
445
+ }
446
+ .font-options__options-list:before
447
+ {
448
+ z-index: 11;
449
+
450
  border-width: 10px;
451
+ border-bottom-color: white;
452
+ }
453
+ .font-options__options-list:after
454
+ {
455
  top: -24px;
456
+ right: 23px;
457
+
458
+ border-width: 12px;
459
+ border-bottom-color: rgba(0, 0, 0, .075);
460
+ }
461
+
462
+ .customize-control-color .wp-picker-container .wp-picker-open + .wp-picker-input-wrap:after
463
+ {
464
+ position: absolute;
465
+ right: 12px;
466
+ bottom: 100%;
467
+
468
+ width: 0;
469
+ height: 0;
470
+
471
+ border-collapse: separate;
472
+
473
+ content: '';
474
+
475
+ border-width: 0 9px 9px 9px;
476
+ border-style: solid;
477
+ border-color: transparent transparent #fff transparent;
478
+ }
479
+
480
+ .font-options__head,
481
+ .customize-control input[type=text],
482
  .customize-control input[type=checkbox],
483
  .customize-control input[type=password],
484
  .customize-control input[type=color],
496
  .customize-control input[type=search],
497
  .customize-control select,
498
  .customize-control textarea,
499
+ .customize-control input[type='number'].range-value,
500
+ ul.font-options__options-list .select2-container .select2-selection--single
501
+ {
502
+ font-size: 14px;
503
+ line-height: 1.5;
504
+
505
+ width: 100%;
506
+ height: 44px;
507
+ padding: 10px 14px;
508
+
509
+ color: #416b7e;
510
+ border: 2px solid #b8daeb;
511
+ border-radius: 4px;
512
+ outline: 0;
513
+ background: #fff;
514
+ }
515
+ .font-options__head:focus,
516
+ .customize-control input[type=text]:focus,
517
+ .customize-control input[type=checkbox]:focus,
518
+ .customize-control input[type=password]:focus,
519
+ .customize-control input[type=color]:focus,
520
+ .customize-control input[type=date]:focus,
521
+ .customize-control input[type=datetime]:focus,
522
+ .customize-control input[type=datetime-local]:focus,
523
+ .customize-control input[type=email]:focus,
524
+ .customize-control input[type=month]:focus,
525
+ .customize-control input[type=number]:focus,
526
+ .customize-control input[type=radio]:focus,
527
+ .customize-control input[type=tel]:focus,
528
+ .customize-control input[type=time]:focus,
529
+ .customize-control input[type=url]:focus,
530
+ .customize-control input[type=week]:focus,
531
+ .customize-control input[type=search]:focus,
532
+ .customize-control select:focus,
533
+ .customize-control textarea:focus,
534
+ .customize-control input[type='number'].range-value:focus,
535
+ ul.font-options__options-list .select2-container .select2-selection--single:focus
536
+ {
537
+ border-color: #73c5ee;
538
+ box-shadow: none;
539
+ }
540
+
541
+ .font-options__head,
542
+ .customize-control select,
543
+ ul.font-options__options-list .select2-container .select2-selection--single
544
+ {
545
+ font-weight: 600;
546
+
547
+ width: 100%;
548
+
549
+ background: white url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjE1cHgiIGhlaWdodD0iOXB4IiB2aWV3Qm94PSIwIDAgMTUgOSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDxkZWZzPjwvZGVmcz4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJDdXN0b21pZnktQ29weS0yIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjU2LjAwMDAwMCwgLTM4Ni4wMDAwMDApIiBmaWxsPSIjOThDNkRFIj4KICAgICAgICAgICAgPGcgaWQ9IkhlYWRlciIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTIxLjAwMDAwMCwgNDcuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICA8ZyBpZD0iQ29udGVudCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAuMDAwMDAwLCA3NS4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iVGl0bGUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI2LjAwMDAwMCwgMjE5LjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iRmllbGQtLS1TZWxlY3QtQ29weSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iU2VsZWN0IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMjcuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTI1NC40ODEyLDE4IEwyNTYsMTkuNTE0IEwyNDguNSwyNyBMMjQxLDE5LjUxNCBMMjQyLjUxODgsMTggTDI0OC41LDIzLjk2NzIgTDI1NC40ODEyLDE4IFoiIGlkPSJQYWdlLTEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+) no-repeat;
550
+ background-position: right 16px top 16px;
551
+
552
+ -webkit-appearance: button;
553
+ -moz-appearance: none;
554
+ }
555
+ [multiple].font-options__head,
556
+ .customize-control select[multiple],
557
+ ul.font-options__options-list .select2-container [multiple].select2-selection--single
558
+ {
559
+ background: white;
560
+ }
561
 
562
  .customize-control input[type=text],
563
+ .customize-control textarea
564
+ {
565
+ font-size: 13px;
566
+ }
567
 
568
+ .customize-control textarea
569
+ {
570
+ height: auto;
571
+ }
572
 
573
  .customize-control input[type=checkbox],
574
+ .customize-control input[type=radio]
575
+ {
576
+ width: 22px;
577
+ height: 22px;
578
+ }
579
+ .customize-control input[type=checkbox]:checked,
580
+ .customize-control input[type=radio]:checked
581
+ {
582
+ border-color: #5ab9e8;
583
+ background: #73c5ee;
584
+ }
585
+ .customize-control input[type=checkbox]:checked:before,
586
+ .customize-control input[type=radio]:checked:before
587
+ {
588
+ margin: -1px 0 0 -2px;
589
+
590
+ color: white;
591
+ }
592
+
593
+ .customize-control.customize-control-checkbox label:not(:only-of-type),
594
+ .customize-control.customize-control-radio label:not(:only-of-type)
595
+ {
596
+ display: inline-block;
597
+
598
+ width: calc(49% - 30px);
599
+ margin-left: 30px;
600
+ padding-top: 0;
601
+ padding-bottom: 0;
602
+
603
+ text-indent: -6px;
604
+ }
605
+
606
+ .customize-control.customize-control-checkbox label,
607
+ .customize-control.customize-control-radio label
608
+ {
609
+ color: #416b7e;
610
+ }
611
+
612
+ .customize-control-html + .customize-control.customize-control-checkbox,
613
+ .customize-control-html + .customize-control.customize-control-radio
614
+ {
615
+ margin-top: -24px;
616
+ }
617
+
618
+ [id*='divider'] + .customize-control.customize-control-checkbox,
619
+ [id*='divider'] + .customize-control.customize-control-radio
620
+ {
621
+ margin-top: 0;
622
+ }
623
+
624
+ .customize-control input[type=radio]
625
+ {
626
+ border-radius: 50%;
627
+ }
628
+ .customize-control input[type=radio]:checked:before
629
+ {
630
+ content: none;
631
+ }
632
+
633
+ .customize-control.customize-control-radio label
634
+ {
635
+ margin-top: 12px;
636
+ }
637
+
638
+ .customize-control input[type='range']
639
+ {
640
+ width: 65%;
641
+ }
642
+
643
+ .customize-control input[type='range']
644
+ {
645
+ position: relative;
646
+
647
+ overflow: hidden;
648
+
649
+ width: 200px;
650
+ height: 22px;
651
+
652
+ outline: none;
653
+ background: none;
654
+
655
+ -webkit-appearance: none;
656
+ }
657
+ .customize-control input[type='range']:before
658
+ {
659
  position: absolute;
660
  top: 8px;
661
  left: 0;
662
+
663
  width: 100%;
664
+ height: 6px;
665
+
666
+ content: ' ';
667
+
668
+ border-radius: 10px;
669
+ background: #dfe8ef;
670
+ box-shadow: inset 0 1px 3px 0 rgba(0, 0, 0, .3);
671
+ }
672
+ .customize-control input[type='range']::-webkit-slider-thumb
673
+ {
674
+ position: relative;
675
+ z-index: 3;
676
+
677
  width: 22px;
678
  height: 22px;
679
+
680
+ border: 2px solid #b8daeb;
681
+ border-radius: 4px;
682
  background: #27ae60;
683
+ background: #fff;
684
+
685
+ -webkit-appearance: none;
686
+ }
687
+ .customize-control input[type='range']::-webkit-slider-thumb:before
688
+ {
689
+ font-size: 1em;
690
+
691
+ position: absolute;
692
+ top: -5px;
693
+ left: 5px;
694
+
695
+ content: '..';
696
+ letter-spacing: 1px;
697
+
698
+ color: #b8daeb;
699
+ }
700
+ .customize-control input[type='range']::-webkit-slider-thumb:after
701
+ {
702
+ position: absolute;
703
+ z-index: 1;
704
+ top: 6px;
705
+ right: 20px;
706
+
707
+ width: 200px;
708
+ height: 6px;
709
+
710
+ content: ' ';
711
+
712
+ background: #73c5ee;
713
+ }
714
+
715
+ .customize-control input[type='number'].range-value
716
+ {
717
+ font-size: 13px;
718
+ line-height: 1;
719
+
720
+ top: -5px;
721
+
722
+ float: right;
723
+
724
+ width: auto;
725
+ min-width: 40px;
726
+ max-width: 80px;
727
+ height: 30px;
728
+ margin-left: 10px;
729
+ padding: 4px 0 5px 0;
730
+
731
+ text-align: center;
732
+ }
733
 
734
  .customize-control input[type=number]::-webkit-inner-spin-button,
735
+ .customize-control input[type=number]::-webkit-outer-spin-button
736
+ {
737
+ margin: 0;
738
+
739
+ -webkit-appearance: none;
740
+ }
741
+
742
+ .customize-control-color
743
+ {
744
+ display: block;
745
+ }
746
+ .customize-control-color .customize-control-title,
747
+ .customize-control-color .separator.label
748
+ {
749
+ float: left;
750
+ }
751
+ .customize-control-color .wp-picker-container
752
+ {
753
  position: relative;
754
+ top: -3px;
755
+
756
  float: right;
757
+ }
758
+ .customize-control-color .wp-picker-container .wp-picker-holder
759
+ {
760
+ position: relative;
761
+ }
762
+ .customize-control-color .wp-picker-container .iris-picker
763
+ {
764
+ position: absolute;
765
+ z-index: 1000;
766
+ top: 40px;
767
+ right: 0;
768
+
769
+ width: 275px !important;
770
+
771
+ border: none;
772
+ border-color: #dfdfde;
773
+ border-top: none;
774
+ border-radius: 0 0 3px 3px;
775
+ background: white;
776
+ }
777
+ .customize-control-color .wp-picker-container .iris-picker .iris-square
778
+ {
779
+ width: 215px !important;
780
+ height: 173px !important;
781
+ margin-right: 0;
782
+ }
783
+ .customize-control-color .wp-picker-container .iris-picker .iris-strip
784
+ {
785
+ float: right;
786
+
787
+ box-shadow: rgba(0, 0, 0, .4) 0 1px 1px inset;
788
+ }
789
+ .customize-control-color .wp-picker-container .iris-picker .iris-strip .ui-slider-handle
790
+ {
791
+ opacity: 1;
792
+ border-color: #aaa !important;
793
+ box-shadow: none;
794
+ }
795
+ .customize-control-color .wp-picker-container .iris-picker .iris-palette
796
+ {
797
+ width: 24px !important;
798
+ height: 24px !important;
799
+
800
+ border-radius: 50px;
801
+ box-shadow: rgba(0, 0, 0, .4) 0 1px 1px inset;
802
+ }
803
+ .customize-control-color .wp-picker-container .wp-picker-open + .wp-picker-input-wrap
804
+ {
805
+ position: absolute;
806
+ z-index: 1000;
807
+ top: 35px;
808
+ right: 0;
809
+
810
+ width: 275px;
811
+ padding: 9px 12px;
812
+
813
+ border: none;
814
+ border-radius: 3px 3px 0 0;
815
+ background: white;
816
+ }
817
+ .customize-control-color .wp-picker-container .wp-picker-open + .wp-picker-input-wrap input.wp-color-picker
818
+ {
819
+ font-size: 13px;
820
+
821
+ float: left;
822
+
823
+ width: 100px;
824
+ height: auto;
825
+ margin: 0;
826
+ padding: 6px 12px;
827
+
828
+ text-align: left;
829
+ }
830
+ .customize-control-color .wp-picker-container .wp-picker-open + .wp-picker-input-wrap input.button
831
+ {
832
+ float: right;
833
+
834
+ height: 30px;
835
+ padding: 4px 12px;
836
+ }
837
+ .customize-control-color .wp-color-result
838
+ {
839
  top: 0;
840
+
841
  width: 40px;
842
+ height: 30px;
843
  margin: 0;
844
  padding: 0;
845
+
846
+ border: 2px solid #b8daeb;
847
  border-radius: 4px;
848
+ background: #2ecc71;
849
+ box-shadow: none;
850
+ }
851
+ .customize-control-color .wp-color-result:after
852
+ {
853
+ display: none;
854
+ }
855
+
856
+ #accordion-section-live_css_edit_section .customize-section-title
857
+ {
858
+ margin-top: -13px;
859
+
860
+ border-bottom: 1px solid #ddd;
861
+ }
862
+
863
+ #accordion-section-live_css_edit_section #css_editor
864
+ {
865
+ top: 70px;
866
+
867
+ overflow: visible;
868
+
869
+ border-top: 10px solid white;
870
+ }
871
+ #accordion-section-live_css_edit_section #css_editor:before
872
+ {
873
  position: absolute;
874
  z-index: 10000000;
875
+ top: -10px;
876
+ left: 0;
877
+
878
+ display: block;
879
+
880
+ width: 48px;
881
+ height: 10px;
882
 
883
+ content: '';
 
884
 
885
+ background: #e8e8e8;
886
+ }
887
+
888
+ #accordion-section-live_css_edit_section .ace_scroller
889
+ {
890
+ padding-left: 10px;
891
+ }
892
+
893
+ .wp-full-overlay.editor_opened
894
+ {
895
+ margin-left: 500px;
896
+ }
897
+ .wp-full-overlay.editor_opened #customize-controls
898
+ {
899
+ width: 500px;
900
+ }
901
+ .wp-full-overlay.editor_opened.collapsed #customize-controls
902
+ {
903
+ width: 300px;
904
+ }
905
 
906
  .customize-control-media .current,
907
  .customize-control-site_icon .current,
908
+ li#customize-control-site_logo .current
909
+ {
910
+ min-height: 44px;
911
+ margin-bottom: 10px;
912
+
913
+ border: 2px solid #b8daeb;
914
+ border-radius: 4px;
915
+ background: #f5fcff;
916
+ }
917
+ .customize-control-media .current .container,
918
+ .customize-control-media .current span,
919
+ .customize-control-site_icon .current .container,
920
+ .customize-control-site_icon .current span,
921
+ li#customize-control-site_logo .current .container,
922
+ li#customize-control-site_logo .current span
923
+ {
924
+ border: none;
925
+ }
926
+
927
+ .customize-control-media .inner,
928
+ .customize-control-media .current span,
929
  .customize-control-site_icon .inner,
930
  .customize-control-site_icon .current span,
931
  li#customize-control-site_logo .inner,
932
+ li#customize-control-site_logo .current span
933
+ {
934
+ font-size: 13px;
935
+
936
+ color: #98c6dd;
937
+ }
938
 
939
  .customize-control-media .inner,
940
  .customize-control-site_icon .inner,
941
+ li#customize-control-site_logo .inner
942
+ {
943
+ line-height: 1.4;
944
+ }
945
 
946
  .customize-control-media .thumbnail-image,
947
  .customize-control-site_icon .thumbnail-image,
948
+ li#customize-control-site_logo .thumbnail-image
949
+ {
950
+ padding: 14px;
951
+
952
+ text-align: center;
953
+ }
954
+ .customize-control-media .thumbnail-image img,
955
+ .customize-control-site_icon .thumbnail-image img,
956
+ li#customize-control-site_logo .thumbnail-image img
957
+ {
958
+ width: auto;
959
+ }
960
 
961
  .customize-control-media .actions,
962
  .customize-control-site_icon .actions,
963
+ li#customize-control-site_logo .actions
964
+ {
965
+ margin-bottom: 0;
966
+ }
967
+
968
+ .customize-control-typography select,
969
+ .customize-control-typography select
970
+ {
971
+ margin-bottom: 10px;
972
+ }
973
+
974
+ .customize-control-typography .description,
975
+ .customize-control-typography .description
976
+ {
977
+ margin-top: -3px;
978
+ }
979
+
980
+ .customize-control-typography ul li,
981
+ .customize-control-typography ul li
982
+ {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
983
  width: 100%;
984
+ margin: 0;
985
+ }
986
+
987
+ .default-preset-button
988
+ {
989
+ font-family: 'Open Sans',sans-serif;
990
+ font-size: 13px;
991
+
992
+ float: right;
993
+
994
+ margin-right: 4px;
995
+ padding: 1px 8px;
996
+
997
+ border: 1px solid #cbcbcb;
998
+ border-radius: 3px;
999
+ background-color: #f5f6f6;
1000
+ }
1001
+
1002
+ .customize-control-preset .description
1003
+ {
1004
+ font-style: normal;
1005
+
1006
+ margin-right: 5px;
1007
+ }
1008
+
1009
+ .customify_preset.radio_buttons .customify_radio_button
1010
+ {
1011
+ position: relative;
1012
+
1013
+ display: inline-block;
1014
+ overflow: hidden;
1015
+
1016
+ height: auto;
1017
+ margin: 3px;
1018
+ padding: 2px;
1019
+
1020
+ border: none;
1021
+ }
1022
+ .customify_preset.radio_buttons .customify_radio_button input[type='radio']
1023
+ {
1024
  position: absolute;
1025
+ z-index: 9999;
1026
+
1027
+ width: 100%;
1028
+ height: 100%;
1029
+
1030
+ opacity: 0;
1031
+ }
1032
+ .customify_preset.radio_buttons .customify_radio_button input[type='radio']:checked + label
1033
+ {
1034
+ background-color: #ebebeb;
1035
+ }
1036
+ .customify_preset.radio_buttons .customify_radio_button input[type='radio']:checked + label:before
1037
+ {
1038
+ content: '>';
1039
+
1040
+ color: inherit;
1041
+ }
1042
+ .customify_preset.radio_buttons .customify_radio_button input[type='radio']:checked + label:after
1043
+ {
1044
+ content: '<';
1045
+
1046
+ color: inherit;
1047
+ }
1048
+ .customify_preset.radio_buttons .customify_radio_button input[type='radio']:checked:before
1049
+ {
1050
+ opacity: 0;
1051
+ }
1052
+ .customify_preset.radio_buttons .customify_radio_button label
1053
+ {
1054
  position: relative;
1055
  z-index: 999;
1056
+
1057
+ border-left: 4px solid;
1058
+ }
1059
+
1060
+ .customify_preset .awesome_preset
1061
+ {
1062
+ position: relative;
1063
+
1064
+ display: inline-block;
1065
+
1066
+ width: 45%;
1067
+ margin-top: 5px;
1068
+ margin-bottom: 25px;
1069
+
1070
+ transition: all .2s;
1071
+ text-align: center;
1072
+
1073
+ color: white;
1074
+ }
1075
+ .customify_preset .awesome_preset:hover
1076
+ {
1077
+ opacity: .9;
1078
+ }
1079
+ .customify_preset .awesome_preset:before
1080
+ {
1081
  position: absolute;
1082
+ z-index: 5;
1083
  top: 1px;
 
1084
  right: 1px;
1085
  bottom: 1px;
1086
+ left: 1px;
1087
+
1088
+ content: '';
1089
+
1090
  opacity: .5;
1091
+ border: 1px solid #fff;
1092
  border-radius: 4px;
1093
+ background: transparent;
1094
+ }
1095
+ .customify_preset .awesome_preset .preset-wrap .preset-color
1096
+ {
1097
  height: 128px;
1098
+ padding: 17px 0 27px;
1099
+
1100
  border-radius: 4px 4px 0 0;
1101
+ }
1102
+ .customify_preset .awesome_preset .preset-wrap .preset-color .first-font
1103
+ {
1104
+ font-size: 55px;
1105
+ line-height: 1;
1106
+
1107
+ display: inline-block;
1108
+
1109
+ width: 100%;
1110
+ }
1111
+ .customify_preset .awesome_preset .preset-wrap .preset-color .secondary-font
1112
+ {
1113
+ font-size: 20px;
1114
+ line-height: 1;
1115
+
1116
+ display: inline-block;
1117
+
1118
+ width: 100%;
1119
+ margin-top: 8px;
1120
+ }
1121
+ .customify_preset .awesome_preset .preset-wrap .preset-name
1122
+ {
1123
  font-size: 11px;
1124
+
1125
+ position: relative;
1126
+
1127
+ padding: 1px;
1128
+
1129
  text-transform: UPPERCASE;
1130
+
1131
  border-radius: 0 0 4px 4px;
1132
+ }
1133
+ .customify_preset .awesome_preset .preset-wrap .preset-name:before
1134
+ {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1135
  position: absolute;
1136
+ top: -10px;
1137
+ left: 40%;
1138
+
1139
+ content: '';
1140
+
1141
+ border: 10px solid;
1142
+ border-color: inherit;
1143
+ border-top: transparent;
1144
+ border-right-color: transparent;
1145
+ border-bottom-color: inherit;
1146
+ border-left-color: transparent;
1147
+ }
1148
+ .customify_preset .awesome_preset:nth-child(odd)
1149
+ {
1150
+ margin-right: 7%;
1151
+ }
1152
+ .customify_preset .awesome_preset input[type=radio]
1153
+ {
1154
+ position: absolute;
1155
+ z-index: 10;
1156
+ top: 0;
1157
+ left: 0;
1158
+
1159
+ display: inline-block;
1160
+
1161
+ width: 100%;
1162
+ height: 100%;
1163
+ margin: 0;
1164
+
1165
  color: #006505;
1166
+ border: 0;
1167
  border-radius: 0;
1168
+ background-color: transparent;
1169
+ box-shadow: none;
1170
+ }
1171
+ .customify_preset .awesome_preset input[type=radio]:checked:before
1172
+ {
1173
+ position: absolute;
1174
+ z-index: 1;
1175
+ top: -13px;
1176
+ right: -14px;
1177
+
1178
+ width: 25px;
1179
+ height: 25px;
1180
+
1181
+ background: #fff;
1182
+ }
1183
+ .customify_preset .awesome_preset input[type=radio]:checked:after
1184
+ {
1185
+ position: absolute;
1186
+ z-index: 10;
1187
+ top: -5px;
1188
+ right: -5px;
1189
+
1190
+ width: 26px;
1191
+ height: 26px;
1192
+
1193
+ content: '';
1194
+
1195
+ border-radius: 50%;
1196
+ background: #73c5ee url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjEzcHgiIGhlaWdodD0iOXB4IiB2aWV3Qm94PSIwIDAgMTMgOSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgIDxkZWZzPjwvZGVmcz4KICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJDdXN0b21pZnktQ29weSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTIxLjAwMDAwMCwgLTQwOC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgPGcgaWQ9IkhlYWRlciIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTIxLjAwMDAwMCwgNDcuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICA8ZyBpZD0iQ29udGVudCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAuMDAwMDAwLCA3NS4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iRmllbGQtLS1DaGVja2JveC1Db3B5IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNy4wMDAwMDAsIDI0OS4wMDAwMDApIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9IkNoZWNrYm94IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwgMzAuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTAuMDM4NDk1LDE2IEwxNy4xMTYxMzc1LDguOTIxNDg3NiBMMTUuMTk0NjQ5OCw3IEwxMC4wMzg0OTUsMTIuMTU1MDY3NCBMNi45MjE0ODc2LDkuMDM4OTI5OTcgTDUsMTAuOTYwNDE3NiBMMTAuMDM4NDk1LDE2IFoiIGlkPSJQYWdlLTEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+) no-repeat;
1197
+ background-position: center center;
1198
+
1199
+ -ms-filter: 'progid:DXImageTransform.Microsoft.Alpha(Opacity=0)';
1200
+ filter: alpha(opacity=0);
1201
+ }
1202
+
1203
+ .customify_radio_image
1204
+ {
1205
  display: inline-block;
1206
+ }
1207
+ .customify_radio_image label
1208
+ {
1209
+ position: relative;
1210
+
1211
+ display: block;
1212
+ float: left;
1213
+
1214
+ margin-right: 10px;
1215
+ }
1216
+ .customify_radio_image label input[type=radio]
1217
+ {
1218
+ position: absolute;
1219
  top: 0;
1220
+ right: 0;
1221
+ bottom: 0;
1222
  left: 0;
1223
+
1224
+ visibility: hidden;
1225
+
1226
+ width: 100%;
1227
+ height: 100%;
1228
+ }
1229
+ .customify_radio_image label input[type=radio] img
1230
+ {
1231
+ cursor: pointer;
1232
+
1233
+ border: 2px solid transparent;
1234
+ }
1235
+ .customify_radio_image label input[type=radio]:checked + img
1236
+ {
1237
+ border: 3px solid #73c5ee;
1238
+ }
1239
+
1240
+ .customify_ace_editor
1241
+ {
 
 
 
 
 
 
 
1242
  display: block;
1243
+
1244
+ min-height: 200px;
1245
+
1246
+ border: 1px solid #ddd;
1247
+ }
1248
+
1249
+ .customize-control-custom_background .hide
1250
+ {
1251
+ display: none;
1252
+ }
1253
+
1254
+ .customize-control-custom_background .upload_button_div
1255
+ {
1256
+ margin: 10px 0;
1257
+ }
1258
+ .customize-control-custom_background .upload_button_div > *
1259
+ {
1260
  margin-right: 10px;
1261
+ }
1262
+
1263
+ .customize-control-custom_background .preview_screenshot
1264
+ {
1265
+ margin: 10px 0;
1266
+
1267
+ text-align: center;
1268
+ }
1269
+ .customize-control-custom_background .preview_screenshot img
1270
+ {
1271
+ border: 2px solid #ccc;
1272
+ }
1273
+
1274
+ #customify_import_demo_data_button
1275
+ {
1276
+ display: inline-block;
1277
+
1278
+ width: 70%;
1279
+ height: auto;
1280
+ margin: 0 15% 10% 15%;
1281
+ padding: 10px;
1282
+
1283
+ text-align: center;
1284
+ }
1285
+
1286
+ .import_step_note
1287
+ {
1288
+ display: inline-block;
1289
+
1290
+ width: 100%;
1291
+ margin: 5px;
1292
+ }
1293
+ .import_step_note:before
1294
+ {
1295
+ content: '\1F449';
1296
+ }
1297
+ .import_step_note.success:before
1298
+ {
1299
+ content: '\1F44D';
1300
+ }
1301
+ .import_step_note.failed:before
1302
+ {
1303
+ content: '\274C';
1304
+ }
1305
+
1306
+ #customize-header-actions
1307
+ {
1308
+ border-color: #e0e8ef;
1309
+ background: #fff;
1310
+ }
 
 
 
 
 
 
 
1311
 
1312
  .wp-full-overlay-sidebar,
1313
+ .customize-themes-panel
1314
+ {
1315
+ border-right: 1px solid #e0e8ef;
1316
+ background: #eaf9fe;
1317
+ }
1318
+
1319
+ #customize-theme-controls #accordion-section-menu_locations
1320
+ {
1321
+ border-bottom: 1px solid #e0e8ef;
1322
+ }
1323
+
1324
+ #customize-controls #accordion-section-themes > .accordion-section-title
1325
+ {
1326
+ font-weight: 600;
1327
+
1328
+ border-bottom: 1px solid #e0e8ef;
1329
+ }
1330
+ #customize-controls #accordion-section-themes > .accordion-section-title:hover
1331
+ {
1332
+ background: #fff;
1333
+ }
1334
+
1335
+ #customize-controls .panel-meta.customize-info
1336
+ {
1337
+ border-bottom-color: #e0e8ef;
1338
+ }
1339
+
1340
+ #customize-theme-controls .control-section .accordion-section-title
1341
+ {
1342
+ font-weight: 400;
1343
+
1344
+ border-top: 1px solid #e0e8ef;
1345
+ border-bottom: none;
1346
+ }
1347
+
1348
+ #customize-theme-controls .control-section:last-of-type > .accordion-section-title
1349
+ {
1350
+ border-bottom: 1px solid #e0e8ef;
1351
+ }
1352
+
1353
+ #customize-theme-controls .customize-section-title
1354
+ {
1355
+ border-top: 1px solid #e0e8ef;
1356
+ border-bottom: 1px solid #e0e8ef;
1357
+ }
1358
+
1359
+ #customize-controls .control-section .accordion-section-title:focus,
1360
+ #customize-controls .control-section .accordion-section-title:hover,
1361
+ #customize-controls .control-section.open .accordion-section-title,
1362
+ #customize-controls .control-section:hover > .accordion-section-title
1363
+ {
1364
+ color: #056184;
1365
+ border-left-color: #f5fcff;
1366
+ background: #f5fcff;
1367
+ }
1368
+
1369
+ [data-balloon]
1370
+ {
1371
+ position: relative;
1372
+ }
1373
+
1374
+ [data-balloon]::before
1375
+ {
1376
+ font-size: 12px;
1377
+
1378
+ position: absolute;
1379
+ z-index: 10;
1380
+
1381
+ padding: .5em 1em;
1382
+
1383
+ content: attr(data-balloon);
1384
+ transition: all .18s ease-out;
1385
+ white-space: nowrap;
1386
+ pointer-events: none;
1387
+
1388
+ opacity: 0;
1389
+ color: #fff;
1390
+ border-radius: 4px;
1391
+ background: rgba(17, 17, 17, .9);
1392
+ }
1393
+
1394
+ [data-balloon]::after
1395
+ {
1396
+ position: absolute;
1397
+ z-index: 10;
1398
+
1399
+ width: 18px;
1400
+ height: 6px;
1401
+
1402
+ content: '';
1403
+ transition: all .18s ease-out;
1404
+ pointer-events: none;
1405
+
1406
+ opacity: 0;
1407
+ background: no-repeat url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="36px" height="12px"><path fill="rgba(17, 17, 17, 0.9)" transform="rotate(0)" d="M2.658,0.000 C-13.615,0.000 50.938,0.000 34.662,0.000 C28.662,0.000 23.035,12.002 18.660,12.002 C14.285,12.002 8.594,0.000 2.658,0.000 Z"/></svg>');
1408
+ background-size: 100% auto;
1409
+ }
1410
+
1411
+ [data-balloon]:hover::before,
1412
+ [data-balloon]:hover::after
1413
+ {
1414
+ pointer-events: auto;
1415
+
1416
+ opacity: 1;
1417
+ }
1418
+
1419
+ [data-balloon][data-balloon-pos='up']::before
1420
+ {
1421
+ bottom: 100%;
1422
+ left: 50%;
1423
+
1424
+ margin-bottom: 11px;
1425
+
1426
+ -webkit-transform: translate3d(-50%, 10px, 0);
1427
+ transform: translate3d(-50%, 10px, 0);
1428
+ -webkit-transform-origin: top;
1429
+ transform-origin: top;
1430
+ }
1431
+
1432
+ [data-balloon][data-balloon-pos='up']::after
1433
+ {
1434
+ bottom: 100%;
1435
+ left: 50%;
1436
+
1437
+ margin-bottom: 5px;
1438
+
1439
+ -webkit-transform: translate3d(-50%, 10px, 0);
1440
+ transform: translate3d(-50%, 10px, 0);
1441
+ -webkit-transform-origin: top;
1442
+ transform-origin: top;
1443
+ }
1444
+
1445
+ [data-balloon][data-balloon-pos='up']:hover::before
1446
+ {
1447
+ -webkit-transform: translate3d(-50%, 0, 0);
1448
+ transform: translate3d(-50%, 0, 0);
1449
+ }
1450
+
1451
+ [data-balloon][data-balloon-pos='up']:hover::after
1452
+ {
1453
+ -webkit-transform: translate3d(-50%, 0, 0);
1454
+ transform: translate3d(-50%, 0, 0);
1455
+ }
1456
+
1457
+ [data-balloon][data-balloon-pos='down']::before
1458
+ {
1459
+ top: 100%;
1460
+ left: 50%;
1461
+
1462
+ margin-top: 11px;
1463
+
1464
+ -webkit-transform: translate3d(-50%, -10px, 0);
1465
+ transform: translate3d(-50%, -10px, 0);
1466
+ }
1467
+
1468
+ [data-balloon][data-balloon-pos='down']::after
1469
+ {
1470
+ top: 100%;
1471
+ left: 50%;
1472
+
1473
+ width: 18px;
1474
+ height: 6px;
1475
+ margin-top: 5px;
1476
+
1477
+ -webkit-transform: translate3d(-50%, -10px, 0);
1478
+ transform: translate3d(-50%, -10px, 0);
1479
+
1480
+ background: no-repeat url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="36px" height="12px"><path fill="rgba(17, 17, 17, 0.9)" transform="rotate(180 18 6)" d="M2.658,0.000 C-13.615,0.000 50.938,0.000 34.662,0.000 C28.662,0.000 23.035,12.002 18.660,12.002 C14.285,12.002 8.594,0.000 2.658,0.000 Z"/></svg>');
1481
+ background-size: 100% auto;
1482
+ }
1483
+
1484
+ [data-balloon][data-balloon-pos='down']:hover::before
1485
+ {
1486
+ -webkit-transform: translate3d(-50%, 0, 0);
1487
+ transform: translate3d(-50%, 0, 0);
1488
+ }
1489
+
1490
+ [data-balloon][data-balloon-pos='down']:hover::after
1491
+ {
1492
+ -webkit-transform: translate3d(-50%, 0, 0);
1493
+ transform: translate3d(-50%, 0, 0);
1494
+ }
1495
+
1496
+ [data-balloon][data-balloon-pos='left']::before
1497
+ {
1498
+ top: 50%;
1499
+ right: 100%;
1500
+
1501
+ margin-right: 11px;
1502
+
1503
+ -webkit-transform: translate3d(10px, -50%, 0);
1504
+ transform: translate3d(10px, -50%, 0);
1505
+ }
1506
+
1507
+ [data-balloon][data-balloon-pos='left']::after
1508
+ {
1509
+ top: 50%;
1510
+ right: 100%;
1511
+
1512
+ width: 6px;
1513
+ height: 18px;
1514
+ margin-right: 5px;
1515
+
1516
+ -webkit-transform: translate3d(10px, -50%, 0);
1517
+ transform: translate3d(10px, -50%, 0);
1518
+
1519
+ background: no-repeat url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="12px" height="36px"><path fill="rgba(17, 17, 17, 0.9)" transform="rotate(-90 18 18)" d="M2.658,0.000 C-13.615,0.000 50.938,0.000 34.662,0.000 C28.662,0.000 23.035,12.002 18.660,12.002 C14.285,12.002 8.594,0.000 2.658,0.000 Z"/></svg>');
1520
+ background-size: 100% auto;
1521
+ }
1522
+
1523
+ [data-balloon][data-balloon-pos='left']:hover::before
1524
+ {
1525
+ -webkit-transform: translate3d(0, -50%, 0);
1526
+ transform: translate3d(0, -50%, 0);
1527
+ }
1528
+
1529
+ [data-balloon][data-balloon-pos='left']:hover::after
1530
+ {
1531
+ -webkit-transform: translate3d(0, -50%, 0);
1532
+ transform: translate3d(0, -50%, 0);
1533
+ }
1534
+
1535
+ [data-balloon][data-balloon-pos='right']::before
1536
+ {
1537
+ top: 50%;
1538
+ left: 100%;
1539
+
1540
+ margin-left: 11px;
1541
+
1542
+ -webkit-transform: translate3d(-10px, -50%, 0);
1543
+ transform: translate3d(-10px, -50%, 0);
1544
+ }
1545
+
1546
+ [data-balloon][data-balloon-pos='right']::after
1547
+ {
1548
+ top: 50%;
1549
+ left: 100%;
1550
+
1551
+ width: 6px;
1552
+ height: 18px;
1553
+ margin-left: 5px;
1554
+
1555
+ -webkit-transform: translate3d(-10px, -50%, 0);
1556
+ transform: translate3d(-10px, -50%, 0);
1557
+
1558
+ background: no-repeat url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="12px" height="36px"><path fill="rgba(17, 17, 17, 0.9)" transform="rotate(90 6 6)" d="M2.658,0.000 C-13.615,0.000 50.938,0.000 34.662,0.000 C28.662,0.000 23.035,12.002 18.660,12.002 C14.285,12.002 8.594,0.000 2.658,0.000 Z"/></svg>');
1559
+ background-size: 100% auto;
1560
+ }
1561
+
1562
+ [data-balloon][data-balloon-pos='right']:hover::before
1563
+ {
1564
+ -webkit-transform: translate3d(0, -50%, 0);
1565
+ transform: translate3d(0, -50%, 0);
1566
+ }
1567
+
1568
+ [data-balloon][data-balloon-pos='right']:hover::after
1569
+ {
1570
+ -webkit-transform: translate3d(0, -50%, 0);
1571
+ transform: translate3d(0, -50%, 0);
1572
+ }
1573
+
1574
+ [data-balloon][data-balloon-length='small']::before
1575
+ {
1576
+ width: 80px;
1577
+
1578
  white-space: normal;
1579
+ }
1580
 
1581
+ [data-balloon][data-balloon-length='medium']::before
1582
+ {
1583
+ width: 150px;
1584
 
1585
+ white-space: normal;
1586
+ }
 
1587
 
1588
+ [data-balloon][data-balloon-length='large']::before
1589
+ {
1590
+ width: 260px;
 
 
1591
 
1592
+ white-space: normal;
1593
+ }
 
1594
 
1595
+ [data-balloon][data-balloon-length='xlarge']::before
1596
+ {
1597
+ width: 380px;
1598
 
1599
+ white-space: normal;
1600
+ }
 
 
 
 
1601
 
1602
+ @media screen and (max-width: 768px)
1603
+ {
1604
+ [data-balloon][data-balloon-length='xlarge']::before
1605
+ {
1606
+ width: 90vw;
1607
+
1608
+ white-space: normal;
1609
+ }
1610
+ }
1611
+
1612
+ [data-balloon][data-balloon-length='fit']::before
1613
+ {
1614
+ width: 100%;
1615
+
1616
+ white-space: normal;
1617
+ }
1618
+
1619
+ .font-options__wrapper .font-options__options-list
1620
+ {
1621
+ border-color: #b8daeb;
1622
+ box-shadow: 0 10px 20px 0 rgba(0, 0, 0, .15);
1623
+ }
1624
+
1625
+ .font-options__wrapper .font-options__option
1626
+ {
1627
+ margin-bottom: 12px;
1628
+ }
1629
+ .font-options__wrapper .font-options__option label
1630
+ {
1631
+ display: block;
1632
 
1633
+ margin-bottom: 6px;
1634
+ }
1635
+
1636
+ .font-options__wrapper [type=checkbox]:checked ~ .font-options__options-list
1637
+ {
1638
+ display: block;
1639
+
1640
+ opacity: 1;
1641
+ }
1642
+
1643
+ input.customify_font_tooltip
1644
+ {
1645
+ display: none;
1646
+ }
1647
+
1648
+ ul.font-options__options-list .select2-container
1649
+ {
1650
+ width: 100% !important;
1651
+ }
1652
+ ul.font-options__options-list .select2-container .select2-selection--single
1653
+ {
1654
+ -webkit-appearance: initial;
1655
+ }
1656
+ ul.font-options__options-list .select2-container .select2-selection--single .select2-selection__arrow
1657
+ {
1658
+ display: none;
1659
+ }
1660
+
1661
+ ul.font-options__options-list .select2-container--default .select2-selection--single .select2-selection__rendered
1662
+ {
1663
+ line-height: initial;
1664
+
1665
+ color: inherit;
1666
+ }
1667
+
1668
+ .select2-container.select2-container--open
1669
+ {
1670
+ z-index: 99999999;
1671
+ }
customify.php CHANGED
@@ -1,23 +1,16 @@
1
  <?php
2
  /*
3
- * @package Customify
4
- * @author PixelGrade <contact@pixelgrade.com>
5
- * @license GPL-2.0+
6
- * @link http://pixelgrade.com
7
- * @copyright 2014 PixelGrade
8
- *
9
- * @wordpress-plugin
10
  Plugin Name: Customify
11
- Plugin URI: http://pixelgrade.com
12
  Description: A Theme Customizer Booster
13
- Version: 1.3.1
14
  Author: PixelGrade
15
- Author URI: http://pixelgrade.com
16
  Author Email: contact@pixelgrade.com
17
- Text Domain: pixcustomify_txtd
18
  License: GPL-2.0+
19
  License URI: http://www.gnu.org/licenses/gpl-2.0.txt
20
- Domain Path: /lang
21
  */
22
 
23
  // If this file is called directly, abort.
@@ -35,7 +28,7 @@ require 'core/bootstrap'.EXT;
35
  $config = include 'plugin-config'.EXT;
36
 
37
  // set textdomain
38
- pixcustomify::settextdomain($config['textdomain']);
39
 
40
  // Ensure Test Data
41
  // ----------------
@@ -66,5 +59,9 @@ require_once( plugin_dir_path( __FILE__ ) . 'class-pixcustomify.php' );
66
  register_activation_hook( __FILE__, array( 'PixCustomifyPlugin', 'activate' ) );
67
  //register_deactivation_hook( __FILE__, array( 'customifyPlugin', 'deactivate' ) );
68
 
69
- global $pixcustomify_plugin;
70
- $pixcustomify_plugin = PixCustomifyPlugin::get_instance();
 
 
 
 
1
  <?php
2
  /*
 
 
 
 
 
 
 
3
  Plugin Name: Customify
4
+ Plugin URI: https://pixelgrade.com
5
  Description: A Theme Customizer Booster
6
+ Version: 1.4.0
7
  Author: PixelGrade
8
+ Author URI: https://pixelgrade.com
9
  Author Email: contact@pixelgrade.com
10
+ Text Domain: customify
11
  License: GPL-2.0+
12
  License URI: http://www.gnu.org/licenses/gpl-2.0.txt
13
+ Domain Path: /languages/
14
  */
15
 
16
  // If this file is called directly, abort.
28
  $config = include 'plugin-config'.EXT;
29
 
30
  // set textdomain
31
+ pixcustomify::settextdomain('customify');
32
 
33
  // Ensure Test Data
34
  // ----------------
59
  register_activation_hook( __FILE__, array( 'PixCustomifyPlugin', 'activate' ) );
60
  //register_deactivation_hook( __FILE__, array( 'customifyPlugin', 'deactivate' ) );
61
 
62
+
63
+ function customify_init_plugin () {
64
+ global $pixcustomify_plugin;
65
+ $pixcustomify_plugin = PixCustomifyPlugin::get_instance();
66
+ }
67
+ add_action('plugins_loaded', 'customify_init_plugin', 20 );
customify_config.php CHANGED
@@ -20,17 +20,17 @@ if ( ! function_exists('add_customify_base_options') ) {
20
  * Presets - This section will handle other options
21
  */
22
  'presets_section' => array(
23
- 'title' => __( 'Style Presets', 'customify_txtd' ),
24
  'options' => array(
25
  'theme_style' => array(
26
  'type' => 'preset',
27
- 'label' => __( 'Select a style:', 'customify_txtd' ),
28
- 'desc' => __( 'Conveniently change the design of your site with built-in style presets. Easy as pie.', 'customify_txtd' ),
29
  'default' => 'royal',
30
  'choices_type' => 'awesome',
31
  'choices' => array(
32
  'royal' => array(
33
- 'label' => __( 'Royal', 'customify_txtd' ),
34
  'preview' => array(
35
  'color-text' => '#ffffff',
36
  'background-card' => '#615375',
@@ -48,7 +48,7 @@ if ( ! function_exists('add_customify_base_options') ) {
48
  )
49
  ),
50
  'lovely' => array(
51
- 'label' => __( 'Lovely', 'customify_txtd' ),
52
  'preview' => array(
53
  'color-text' => '#ffffff',
54
  'background-card' => '#d15c57',
@@ -66,7 +66,7 @@ if ( ! function_exists('add_customify_base_options') ) {
66
  )
67
  ),
68
  'queen' => array(
69
- 'label' => __( 'Queen', 'customify_txtd' ),
70
  'preview' => array(
71
  'color-text' => '#fbedec',
72
  'background-card' => '#773347',
@@ -84,7 +84,7 @@ if ( ! function_exists('add_customify_base_options') ) {
84
  )
85
  ),
86
  'carrot' => array(
87
- 'label' => __( 'Carrot', 'customify_txtd' ),
88
  'preview' => array(
89
  'color-text' => '#ffffff',
90
  'background-card' => '#df421d',
@@ -105,7 +105,7 @@ if ( ! function_exists('add_customify_base_options') ) {
105
 
106
 
107
  'adler' => array(
108
- 'label' => __( 'Adler', 'customify_txtd' ),
109
  'preview' => array(
110
  'color-text' => '#fff',
111
  'background-card' => '#0e364f',
@@ -123,7 +123,7 @@ if ( ! function_exists('add_customify_base_options') ) {
123
  )
124
  ),
125
  'velvet' => array(
126
- 'label' => __( 'Velvet', 'customify_txtd' ),
127
  'preview' => array(
128
  'color-text' => '#ffffff',
129
  'background-card' => '#282828',
@@ -150,11 +150,11 @@ if ( ! function_exists('add_customify_base_options') ) {
150
  * COLORS - This section will handle different elements colors (eg. links, headings)
151
  */
152
  'colors_section' => array(
153
- 'title' => __( 'Colors', 'customify_txtd' ),
154
  'options' => array(
155
  'links_color' => array(
156
  'type' => 'color',
157
- 'label' => __( 'Links Color', 'customify_txtd' ),
158
  'live' => true,
159
  'default' => '#6c6e70',
160
  'css' => array(
@@ -166,7 +166,7 @@ if ( ! function_exists('add_customify_base_options') ) {
166
  ),
167
  'headings_color' => array(
168
  'type' => 'color',
169
- 'label' => __( 'Headings Color', 'customify_txtd' ),
170
  'live' => true,
171
  'default' => '#0aa0d9',
172
  'css' => array(
@@ -181,7 +181,7 @@ if ( ! function_exists('add_customify_base_options') ) {
181
  ),
182
  'body_color' => array(
183
  'type' => 'color',
184
- 'label' => __( 'Body Color', 'customify_txtd' ),
185
  'live' => true,
186
  'default' => '#2d3033',
187
  'css' => array(
@@ -198,11 +198,11 @@ if ( ! function_exists('add_customify_base_options') ) {
198
  * FONTS - This section will handle different elements fonts (eg. headings, body)
199
  */
200
  'typography_section' => array(
201
- 'title' => __( 'Fonts', 'customify_txtd' ),
202
  'options' => array(
203
  'headings_font' => array(
204
  'type' => 'typography',
205
- 'label' => __( 'Headings', 'customify_txtd' ),
206
  'default' => 'Playfair Display',
207
  'selector' => '.site-title a, h1, h2, h3, h4, h5, h6,
208
  h1 a, h2 a, h3 a, h4 a, h5 a, h6 a,
@@ -233,7 +233,7 @@ if ( ! function_exists('add_customify_base_options') ) {
233
  ),
234
  'body_font' => array(
235
  'type' => 'typography',
236
- 'label' => __( 'Body Text', 'customify_txtd' ),
237
  'default' => 'Lato',
238
  'selector' => 'html body',
239
  'load_all_weights' => true,
@@ -254,11 +254,11 @@ if ( ! function_exists('add_customify_base_options') ) {
254
  * BACKGROUNDS - This section will handle different elements colors (eg. links, headings)
255
  */
256
  'backgrounds_section' => array(
257
- 'title' => __( 'Backgrounds', 'customify_txtd' ),
258
  'options' => array(
259
  'page_background' => array(
260
  'type' => 'color',
261
- 'label' => __( 'Page Background', 'customify_txtd' ),
262
  'live' => true,
263
  'default' => '#ffffff',
264
  'css' => array(
@@ -274,7 +274,7 @@ if ( ! function_exists('add_customify_base_options') ) {
274
  * LAYOUTS - This section will handle different elements colors (eg. links, headings)
275
  */
276
  'layout_options' => array(
277
- 'title' => __( 'Layout', 'customify_txtd' ),
278
  'options' => array(
279
  'site_title_size' => array(
280
  'type' => 'range',
@@ -324,14 +324,14 @@ if ( ! function_exists('add_customify_base_options') ) {
324
  **/
325
  // $config['panels'] = array(
326
  // 'panel_id' => array(
327
- // 'title' => __( 'Panel Title', 'customify_txtd' ),
328
  // 'sections' => array(
329
  // 'panel_section' => array(
330
- // 'title' => __( 'Section Title', 'customify_txtd' ),
331
  // 'options' => array(
332
  // 'setting_id' => array(
333
  // 'type' => 'color',
334
- // 'label' => __( 'Label', 'customify_txtd' ),
335
  // 'live' => true, // or false
336
  // 'default' => '#6c6e70',
337
  // 'css' => array(
20
  * Presets - This section will handle other options
21
  */
22
  'presets_section' => array(
23
+ 'title' => __( 'Style Presets', 'customify' ),
24
  'options' => array(
25
  'theme_style' => array(
26
  'type' => 'preset',
27
+ 'label' => __( 'Select a style:', 'customify' ),
28
+ 'desc' => __( 'Conveniently change the design of your site with built-in style presets. Easy as pie.', 'customify' ),
29
  'default' => 'royal',
30
  'choices_type' => 'awesome',
31
  'choices' => array(
32
  'royal' => array(
33
+ 'label' => __( 'Royal', 'customify' ),
34
  'preview' => array(
35
  'color-text' => '#ffffff',
36
  'background-card' => '#615375',
48
  )
49
  ),
50
  'lovely' => array(
51
+ 'label' => __( 'Lovely', 'customify' ),
52
  'preview' => array(
53
  'color-text' => '#ffffff',
54
  'background-card' => '#d15c57',
66
  )
67
  ),
68
  'queen' => array(
69
+ 'label' => __( 'Queen', 'customify' ),
70
  'preview' => array(
71
  'color-text' => '#fbedec',
72
  'background-card' => '#773347',
84
  )
85
  ),
86
  'carrot' => array(
87
+ 'label' => __( 'Carrot', 'customify' ),
88
  'preview' => array(
89
  'color-text' => '#ffffff',
90
  'background-card' => '#df421d',
105
 
106
 
107
  'adler' => array(
108
+ 'label' => __( 'Adler', 'customify' ),
109
  'preview' => array(
110
  'color-text' => '#fff',
111
  'background-card' => '#0e364f',
123
  )
124
  ),
125
  'velvet' => array(
126
+ 'label' => __( 'Velvet', 'customify' ),
127
  'preview' => array(
128
  'color-text' => '#ffffff',
129
  'background-card' => '#282828',
150
  * COLORS - This section will handle different elements colors (eg. links, headings)
151
  */
152
  'colors_section' => array(
153
+ 'title' => __( 'Colors', 'customify' ),
154
  'options' => array(
155
  'links_color' => array(
156
  'type' => 'color',
157
+ 'label' => __( 'Links Color', 'customify' ),
158
  'live' => true,
159
  'default' => '#6c6e70',
160
  'css' => array(
166
  ),
167
  'headings_color' => array(
168
  'type' => 'color',
169
+ 'label' => __( 'Headings Color', 'customify' ),
170
  'live' => true,
171
  'default' => '#0aa0d9',
172
  'css' => array(
181
  ),
182
  'body_color' => array(
183
  'type' => 'color',
184
+ 'label' => __( 'Body Color', 'customify' ),
185
  'live' => true,
186
  'default' => '#2d3033',
187
  'css' => array(
198
  * FONTS - This section will handle different elements fonts (eg. headings, body)
199
  */
200
  'typography_section' => array(
201
+ 'title' => __( 'Fonts', 'customify' ),
202
  'options' => array(
203
  'headings_font' => array(
204
  'type' => 'typography',
205
+ 'label' => __( 'Headings', 'customify' ),
206
  'default' => 'Playfair Display',
207
  'selector' => '.site-title a, h1, h2, h3, h4, h5, h6,
208
  h1 a, h2 a, h3 a, h4 a, h5 a, h6 a,
233
  ),
234
  'body_font' => array(
235
  'type' => 'typography',
236
+ 'label' => __( 'Body Text', 'customify' ),
237
  'default' => 'Lato',
238
  'selector' => 'html body',
239
  'load_all_weights' => true,
254
  * BACKGROUNDS - This section will handle different elements colors (eg. links, headings)
255
  */
256
  'backgrounds_section' => array(
257
+ 'title' => __( 'Backgrounds', 'customify' ),
258
  'options' => array(
259
  'page_background' => array(
260
  'type' => 'color',
261
+ 'label' => __( 'Page Background', 'customify' ),
262
  'live' => true,
263
  'default' => '#ffffff',
264
  'css' => array(
274
  * LAYOUTS - This section will handle different elements colors (eg. links, headings)
275
  */
276
  'layout_options' => array(
277
+ 'title' => __( 'Layout', 'customify' ),
278
  'options' => array(
279
  'site_title_size' => array(
280
  'type' => 'range',
324
  **/
325
  // $config['panels'] = array(
326
  // 'panel_id' => array(
327
+ // 'title' => __( 'Panel Title', 'customify' ),
328
  // 'sections' => array(
329
  // 'panel_section' => array(
330
+ // 'title' => __( 'Section Title', 'customify' ),
331
  // 'options' => array(
332
  // 'setting_id' => array(
333
  // 'type' => 'color',
334
+ // 'label' => __( 'Label', 'customify' ),
335
  // 'live' => true, // or false
336
  // 'default' => '#6c6e70',
337
  // 'css' => array(
features/class-CSS_Editor.php CHANGED
@@ -85,7 +85,7 @@ class Customify_CSS_Live_Editor {
85
  /* An example of a Custom CSS Snippet */
86
  selector {
87
  color: green;
88
- }", 'customify_txtd' );
89
 
90
  if ( $store_type === 'option' ) {
91
  $CSS = get_option( 'live_css_edit' );
@@ -117,14 +117,14 @@ selector {
117
  $wp_customize->add_section( 'live_css_edit_section', array(
118
  'priority' => 11,
119
  'capability' => 'edit_theme_options',
120
- 'title' => __( 'CSS Editor', 'customify_txtd' ),
121
  ) );
122
 
123
  $saving_type = PixCustomifyPlugin::get_plugin_option( 'values_store_mod', 'option' );
124
 
125
  $wp_customize->add_setting( 'live_css_edit', array(
126
  'type' => $saving_type,
127
- 'label' => __( 'CSS Editor', 'customify_txtd' ),
128
  'capability' => 'edit_theme_options',
129
  'transport' => 'postMessage',
130
  'default' => __( "/*
@@ -147,14 +147,14 @@ selector {
147
  /* An example of a Custom CSS Snippet */
148
  selector {
149
  color: green;
150
- }", 'customify_txtd' )
151
  ) );
152
 
153
  $this_control = new Pix_Customize_CSS_Editor_Control(
154
  $wp_customize,
155
  'live_css_edit_control',
156
  array(
157
- 'label' => __( 'Edit Live Css', 'customify_txtd' ),
158
  'section' => 'live_css_edit_section',
159
  'settings' => 'live_css_edit',
160
  )
85
  /* An example of a Custom CSS Snippet */
86
  selector {
87
  color: green;
88
+ }", 'customify' );
89
 
90
  if ( $store_type === 'option' ) {
91
  $CSS = get_option( 'live_css_edit' );
117
  $wp_customize->add_section( 'live_css_edit_section', array(
118
  'priority' => 11,
119
  'capability' => 'edit_theme_options',
120
+ 'title' => __( 'CSS Editor', 'customify' ),
121
  ) );
122
 
123
  $saving_type = PixCustomifyPlugin::get_plugin_option( 'values_store_mod', 'option' );
124
 
125
  $wp_customize->add_setting( 'live_css_edit', array(
126
  'type' => $saving_type,
127
+ 'label' => __( 'CSS Editor', 'customify' ),
128
  'capability' => 'edit_theme_options',
129
  'transport' => 'postMessage',
130
  'default' => __( "/*
147
  /* An example of a Custom CSS Snippet */
148
  selector {
149
  color: green;
150
+ }", 'customify' )
151
  ) );
152
 
153
  $this_control = new Pix_Customize_CSS_Editor_Control(
154
  $wp_customize,
155
  'live_css_edit_control',
156
  array(
157
+ 'label' => __( 'Edit Live Css', 'customify' ),
158
  'section' => 'live_css_edit_section',
159
  'settings' => 'live_css_edit',
160
  )
features/class-Font_Selector.php CHANGED
@@ -11,11 +11,14 @@ class Customify_Font_Selector extends PixCustomifyPlugin {
11
  protected $parent = null;
12
  protected static $typo_settings = null;
13
  protected static $options_list = null;
14
- protected static $theme_fonts = null;
 
15
 
16
  function __construct( $parent ) {
17
- add_action( 'customize_preview_init', array( $this, 'enqueue_admin_customizer_preview_assets' ), 10 );
 
18
  $load_location = PixCustomifyPlugin::get_plugin_option( 'style_resources_location', 'wp_head' );
 
19
  add_action( $load_location, array( $this, 'output_font_dynamic_style' ), 999999999 );
20
 
21
  $this->parent = $parent;
@@ -40,6 +43,16 @@ class Customify_Font_Selector extends PixCustomifyPlugin {
40
  echo "</optgroup>";
41
  }
42
 
 
 
 
 
 
 
 
 
 
 
43
  function output_font_dynamic_style() {
44
 
45
  self::$options_list = $this->get_options();
@@ -65,7 +78,8 @@ class Customify_Font_Selector extends PixCustomifyPlugin {
65
  if ( isset( $font['load_all_weights'] ) && $font['load_all_weights'] == 'true' ) {
66
  $load_all_weights = true;
67
  }
68
- $value = json_decode( wp_unslash( PixCustomifyPlugin::decodeURIComponent( $font['value'] ) ), true );
 
69
 
70
  $value = $this->validate_font_values( $value );
71
 
@@ -143,9 +157,8 @@ class Customify_Font_Selector extends PixCustomifyPlugin {
143
  if ( empty( $font['selector'] ) || empty( $font['value'] ) ) {
144
  continue;
145
  }
 
146
 
147
- $value = json_decode( PixCustomifyPlugin::decodeURIComponent( $font['value'] ), true );
148
- // in case the value is still null, try default value(mostly for google fonts)
149
  if ( $value === null ) {
150
  $value = $this->get_font_defaults_value( $font['value'] );
151
  }
@@ -207,7 +220,6 @@ class Customify_Font_Selector extends PixCustomifyPlugin {
207
  if ( isset( $font['load_all_weights'] ) && $font['load_all_weights'] == 'true' ) {
208
  $load_all_weights = true;
209
  }
210
-
211
  $selected_variant = '';
212
  if ( ! empty( $value['selected_variants'] ) ) {
213
  if ( is_array( $value['selected_variants'] ) ) {
@@ -237,14 +249,16 @@ class Customify_Font_Selector extends PixCustomifyPlugin {
237
  $selected_variant['font-style'] = 'normal !important';
238
  }
239
 
 
 
240
  // output the font weight, if available
241
  if ( ! empty( $selected_variant['font-weight'] ) ) {
242
  echo ": " . $selected_variant['font-weight'] . ";\n";
243
- $this->display_property( 'font-weight', $selected_variant['font-weight'] );
244
  }
245
 
246
- // output the font style, if available
247
- if ( ! empty( $selected_variant['font-style'] ) ) {
248
  $this->display_property( 'font-style', $selected_variant['font-style'] );
249
  }
250
  }
@@ -258,21 +272,17 @@ class Customify_Font_Selector extends PixCustomifyPlugin {
258
  $italic_font = false;
259
 
260
  //determine if this is an italic font (the $weight_and_style is usually like '400' or '400italic' )
261
- if ( strpos( $weight_and_style, 'italic' ) !== false ) {
262
- $weight_and_style = str_replace( 'italic', '', $weight_and_style);
263
- $italic_font = true;
264
- }
265
-
266
  if ( ! empty( $weight_and_style ) ) {
267
  //a little bit of sanity check - in case it's not a number
268
  if( $weight_and_style === 'regular' ) {
269
  $weight_and_style = 'normal';
270
  }
271
- $this->display_property( 'font-weight', $weight_and_style );
272
  }
273
 
274
- if ( $italic_font ) {
275
- $this->display_property( 'font-style', 'italic' );
 
276
  }
277
  }
278
  } else if ( isset( $value['font-family'] ) ) {
@@ -280,7 +290,7 @@ class Customify_Font_Selector extends PixCustomifyPlugin {
280
  }
281
 
282
  if ( ! empty( $value['font_weight'] ) ) {
283
- $this->display_property( 'font-weight', $value['font_weight'] );
284
  }
285
 
286
  if ( ! empty( $value['font_size'] ) ) {
@@ -360,9 +370,21 @@ class Customify_Font_Selector extends PixCustomifyPlugin {
360
  echo "\n" . $property . ": " . $value . $unit . ";\n";
361
  }
362
 
363
- function enqueue_admin_customizer_preview_assets() {
364
- $dir = plugin_dir_url( __FILE__ );
365
- $dir = rtrim( $dir, 'features/' );
366
- wp_enqueue_script( 'font_selector_preview', $dir . '/js/font_selector_preview.js', array( 'jquery' ), false, true );
 
 
 
 
 
 
 
 
 
 
 
 
367
  }
368
  }
11
  protected $parent = null;
12
  protected static $typo_settings = null;
13
  protected static $options_list = null;
14
+ static $theme_fonts = null;
15
+
16
 
17
  function __construct( $parent ) {
18
+ global $pixcustomify_plugin;
19
+
20
  $load_location = PixCustomifyPlugin::get_plugin_option( 'style_resources_location', 'wp_head' );
21
+
22
  add_action( $load_location, array( $this, 'output_font_dynamic_style' ), 999999999 );
23
 
24
  $this->parent = $parent;
43
  echo "</optgroup>";
44
  }
45
 
46
+ function maybe_decode_value( $value ) {
47
+
48
+ $to_return = PixCustomifyPlugin::decodeURIComponent( $value );
49
+ if ( is_string( $value ) ) {
50
+ $to_return = json_decode( wp_unslash( $to_return ), true );
51
+ }
52
+
53
+ return $to_return;
54
+ }
55
+
56
  function output_font_dynamic_style() {
57
 
58
  self::$options_list = $this->get_options();
78
  if ( isset( $font['load_all_weights'] ) && $font['load_all_weights'] == 'true' ) {
79
  $load_all_weights = true;
80
  }
81
+
82
+ $value = $this->maybe_decode_value( $font['value'] );
83
 
84
  $value = $this->validate_font_values( $value );
85
 
157
  if ( empty( $font['selector'] ) || empty( $font['value'] ) ) {
158
  continue;
159
  }
160
+ $value = $this->maybe_decode_value( $font['value'] );
161
 
 
 
162
  if ( $value === null ) {
163
  $value = $this->get_font_defaults_value( $font['value'] );
164
  }
220
  if ( isset( $font['load_all_weights'] ) && $font['load_all_weights'] == 'true' ) {
221
  $load_all_weights = true;
222
  }
 
223
  $selected_variant = '';
224
  if ( ! empty( $value['selected_variants'] ) ) {
225
  if ( is_array( $value['selected_variants'] ) ) {
249
  $selected_variant['font-style'] = 'normal !important';
250
  }
251
 
252
+ $italic_font = false;
253
+
254
  // output the font weight, if available
255
  if ( ! empty( $selected_variant['font-weight'] ) ) {
256
  echo ": " . $selected_variant['font-weight'] . ";\n";
257
+ $italic_font = $this->display_weight_property( $selected_variant['font-weight'] );
258
  }
259
 
260
+ // output the font style, if available and if it wasn't displayed already
261
+ if ( ! $italic_font && ! empty( $selected_variant['font-style'] ) ) {
262
  $this->display_property( 'font-style', $selected_variant['font-style'] );
263
  }
264
  }
272
  $italic_font = false;
273
 
274
  //determine if this is an italic font (the $weight_and_style is usually like '400' or '400italic' )
 
 
 
 
 
275
  if ( ! empty( $weight_and_style ) ) {
276
  //a little bit of sanity check - in case it's not a number
277
  if( $weight_and_style === 'regular' ) {
278
  $weight_and_style = 'normal';
279
  }
280
+ $italic_font = $this->display_weight_property( $weight_and_style );
281
  }
282
 
283
+ // output the font style, if available
284
+ if ( ! $italic_font && ! empty( $selected_variant['font-style'] ) ) {
285
+ $this->display_property( 'font-style', $selected_variant['font-style'] );
286
  }
287
  }
288
  } else if ( isset( $value['font-family'] ) ) {
290
  }
291
 
292
  if ( ! empty( $value['font_weight'] ) ) {
293
+ $italic_font = $this->display_weight_property( $value['font_weight'] );
294
  }
295
 
296
  if ( ! empty( $value['font_size'] ) ) {
370
  echo "\n" . $property . ": " . $value . $unit . ";\n";
371
  }
372
 
373
+ // well weight sometimes comes from google as 600italic which in CSS syntax should come in two separate properties
374
+ function display_weight_property( $value ) {
375
+ $has_style = false;
376
+
377
+ if ( strpos( $value, 'italic' ) !== false ) {
378
+
379
+ $value = str_replace( 'italic', '', $value );
380
+ echo "\n" . 'font-weight' . ": " . $value . ";\n";
381
+ echo "\n" . 'font-style' . ": italic;\n";
382
+ $has_style = true;
383
+ } else {
384
+ echo "\n" . 'font-weight' . ": " . $value . ";\n";
385
+ }
386
+
387
+
388
+ return $has_style;
389
  }
390
  }
features/customizer/controls/class-Pix_Customize_Background_Control.php CHANGED
@@ -5,7 +5,7 @@
5
  * A simple Color Control
6
  */
7
  class Pix_Customize_Background_Control extends Pix_Customize_Control {
8
- public $type = 'custom_background';
9
 
10
  public $value = array();
11
 
@@ -28,6 +28,7 @@ class Pix_Customize_Background_Control extends Pix_Customize_Control {
28
  'preview_height' => '200px',
29
  'transparent' => true,
30
  );
 
31
  /**
32
  * Render the control's content.
33
  *
@@ -74,13 +75,15 @@ class Pix_Customize_Background_Control extends Pix_Customize_Control {
74
  $this->value['media']['height'] = $img[2];
75
  }
76
 
77
- if ( ! isset( $this->value['media'] ) || empty( $this->value['media'] ) ) {
78
- $this->value['media'] = array(
79
- 'id' => '',
80
- 'height' => '',
81
- 'width' => '',
 
82
  'thumbnail' => ''
83
  );
 
84
  }
85
 
86
  $hide = 'hide ';
@@ -93,7 +96,7 @@ class Pix_Customize_Background_Control extends Pix_Customize_Control {
93
  $hide = '';
94
  }
95
 
96
- $placeholder = isset( $this->field['placeholder'] ) ? $this->field['placeholder'] : __( 'No media selected', 'customify_txtd' );
97
 
98
 
99
  if ( ! isset( $this->value['background-image'] ) ) {
@@ -123,23 +126,23 @@ class Pix_Customize_Background_Control extends Pix_Customize_Control {
123
  }
124
 
125
  echo '<div class="' . $hide . 'preview_screenshot">';
126
- echo '<a class="of-uploaded-image" href="' . $this->value['background-image'] . '" target="_blank">';
127
- echo '<img class="preview_image" id="image_' . $this->value['media']['id'] . '" src="' . $this->value['media']['thumbnail'] . '" alt="" target="_blank" rel="external" />';
128
- echo '</a>';
129
  echo '</div>';
130
 
131
  //Upload controls DIV
132
  echo '<div class="upload_button_div">';
133
 
134
- //If the user has WP3.5+ show upload/remove button
135
- echo '<span class="button background_upload_button" id="' . $this->id . '-media" data-setting_id="' . $this->setting->id .'" >' . __( 'Upload', 'customify_txtd' ) . '</span>';
136
 
137
- $hide = '';
138
- if ( empty( $this->value['background-image'] ) || $this->value['background-image'] == '' ) {
139
- $hide = ' hide';
140
- }
141
 
142
- echo '<span class="button remove-image' . $hide . '" id="reset_' . $this->id . '" rel="' . $this->id . '">' . __( 'Remove', 'customify_txtd' ) . '</span>';
143
 
144
  echo '</div>';
145
  }
@@ -155,9 +158,9 @@ class Pix_Customize_Background_Control extends Pix_Customize_Control {
155
 
156
  echo '<select id="' . $this->id . '-repeat-select" name="' . $this->setting->id . '[background-repeat]" class="customify_background_select ' . $this->field['class'] . ' ' . $hide . '" data-select_name="background-repeat" data-customize-setting-link="' . esc_attr( $this->setting->id ) . '[background-repeat]">';
157
  echo '<option></option>';
158
- foreach ( $array as $k => $v ) {
159
- echo '<option value="' . $k . '"' . selected( $this->value['background-repeat'], $k, false ) . '>' . $v . '</option>';
160
- }
161
  echo '</select>';
162
  }
163
 
@@ -244,7 +247,7 @@ class Pix_Customize_Background_Control extends Pix_Customize_Control {
244
  }
245
  }
246
 
247
- static function css_output(){
248
 
249
  }
250
  }
5
  * A simple Color Control
6
  */
7
  class Pix_Customize_Background_Control extends Pix_Customize_Control {
8
+ public $type = 'custom_background';
9
 
10
  public $value = array();
11
 
28
  'preview_height' => '200px',
29
  'transparent' => true,
30
  );
31
+
32
  /**
33
  * Render the control's content.
34
  *
75
  $this->value['media']['height'] = $img[2];
76
  }
77
 
78
+ if ( ! is_array( $this->value ) || ! isset( $this->value['media'] ) || empty( $this->value['media'] ) ) {
79
+ $this->value = array();
80
+ $media_array = array(
81
+ 'id' => '',
82
+ 'height' => '',
83
+ 'width' => '',
84
  'thumbnail' => ''
85
  );
86
+ $this->value['media'] = $media_array;
87
  }
88
 
89
  $hide = 'hide ';
96
  $hide = '';
97
  }
98
 
99
+ $placeholder = isset( $this->field['placeholder'] ) ? $this->field['placeholder'] : __( 'No media selected', 'customify' );
100
 
101
 
102
  if ( ! isset( $this->value['background-image'] ) ) {
126
  }
127
 
128
  echo '<div class="' . $hide . 'preview_screenshot">';
129
+ echo '<a class="of-uploaded-image" href="' . $this->value['background-image'] . '" target="_blank">';
130
+ echo '<img class="preview_image" id="image_' . $this->value['media']['id'] . '" src="' . $this->value['media']['thumbnail'] . '" alt="" target="_blank" rel="external" />';
131
+ echo '</a>';
132
  echo '</div>';
133
 
134
  //Upload controls DIV
135
  echo '<div class="upload_button_div">';
136
 
137
+ //If the user has WP3.5+ show upload/remove button
138
+ echo '<span class="button background_upload_button" id="' . $this->id . '-media" data-setting_id="' . $this->setting->id . '" >' . __( 'Upload', 'customify' ) . '</span>';
139
 
140
+ $hide = '';
141
+ if ( empty( $this->value['background-image'] ) || $this->value['background-image'] == '' ) {
142
+ $hide = ' hide';
143
+ }
144
 
145
+ echo '<span class="button remove-image' . $hide . '" id="reset_' . $this->id . '" rel="' . $this->id . '">' . __( 'Remove', 'customify' ) . '</span>';
146
 
147
  echo '</div>';
148
  }
158
 
159
  echo '<select id="' . $this->id . '-repeat-select" name="' . $this->setting->id . '[background-repeat]" class="customify_background_select ' . $this->field['class'] . ' ' . $hide . '" data-select_name="background-repeat" data-customize-setting-link="' . esc_attr( $this->setting->id ) . '[background-repeat]">';
160
  echo '<option></option>';
161
+ foreach ( $array as $k => $v ) {
162
+ echo '<option value="' . $k . '"' . selected( $this->value['background-repeat'], $k, false ) . '>' . $v . '</option>';
163
+ }
164
  echo '</select>';
165
  }
166
 
247
  }
248
  }
249
 
250
+ static function css_output() {
251
 
252
  }
253
  }
features/customizer/controls/class-Pix_Customize_Font_Control.php CHANGED
@@ -35,6 +35,7 @@ class Pix_Customize_Font_Control extends Pix_Customize_Control {
35
  * @param array $args
36
  */
37
  public function __construct( $manager, $id, $args = array() ) {
 
38
 
39
  self::$std_fonts = apply_filters( 'customify_filter_standard_fonts_list', array(
40
  "Arial, Helvetica, sans-serif" => "Arial, Helvetica, sans-serif",
@@ -89,27 +90,15 @@ class Pix_Customize_Font_Control extends Pix_Customize_Control {
89
  $this->settings = $settings;
90
  $this->CSSID = $this->get_CSS_ID();
91
  $this->load_google_fonts();
92
- $this->current_value = $this->value();
93
- }
94
-
95
- function validate_font_values( $values ) {
96
 
97
- foreach ( $values as $key => $value ) {
 
98
 
99
- if ( strpos( $key, '-' ) !== false ) {
100
- $new_key = str_replace( '-', '_', $key );
101
-
102
- if ( $new_key === 'font_weight' ) {
103
- $values[ 'selected_variants' ] = $value;
104
- unset( $values[ 'font_weight' ] );
105
- } else {
106
- $values[ $new_key ] = $value;
107
- unset( $values[ $key ] );
108
- }
109
- }
110
  }
111
-
112
- return $values;
113
  }
114
 
115
  /**
@@ -154,20 +143,18 @@ class Pix_Customize_Font_Control extends Pix_Customize_Control {
154
  $this->load_all_weights = $current_value->font_load_all_weights;
155
 
156
  $select_data .= ' data-load_all_weights="true"';
157
- }
158
- ?>
159
  <div class="font-options__wrapper">
160
  <?php
161
  $this->display_value_holder( $current_value );
162
- $this->display_field_title( $font_family );
163
- ?>
164
 
165
  <input type="checkbox" class="customify_font_tooltip"
166
  id="tooltip_toogle_<?php echo esc_attr( $this->CSSID ); ?>">
167
 
168
  <ul class="font-options__options-list">
169
  <li class="font-options__option customize-control">
170
- <select class="customify_font_family"<?php echo $select_data; ?> data-field="font_family">
171
  <?php
172
  // Allow others to add options here
173
  do_action( 'customify_font_family_before_options', $font_family, $current_value );
@@ -190,7 +177,7 @@ class Pix_Customize_Font_Control extends Pix_Customize_Control {
190
  }
191
 
192
  foreach ( $grouped_google_fonts as $group_name => $group ) {
193
- echo '<optgroup label="' . __( 'Google fonts', 'customify_txtd' ) . ' ' . $group_name . '">';
194
  foreach ( $group as $key => $font ) {
195
  self::output_font_option( $key, $font_family, $font );
196
  }
@@ -198,7 +185,7 @@ class Pix_Customize_Font_Control extends Pix_Customize_Control {
198
  }
199
 
200
  } else {
201
- echo '<optgroup label="' . __( 'Google fonts', 'customify_txtd' ) . '">';
202
  foreach ( self::$google_fonts as $key => $font ) {
203
  self::output_font_option( $key, $font_family, $font );
204
  }
@@ -225,6 +212,13 @@ class Pix_Customize_Font_Control extends Pix_Customize_Control {
225
  $this->display_text_decoration_field( $current_value ); ?>
226
  </ul>
227
  </div>
 
 
 
 
 
 
 
228
 
229
  <?php if ( ! empty( $this->description ) ) : ?>
230
  <span class="description customize-control-description"><?php echo $this->description; ?></span>
@@ -243,12 +237,12 @@ class Pix_Customize_Font_Control extends Pix_Customize_Control {
243
  data-default="<?php echo esc_attr( PixCustomifyPlugin::encodeURIComponent( json_encode( $current_value ) ) ); ?>"/>
244
  <?php }
245
 
246
- function display_field_title( $font_family ) { ?>
247
  <label class="font-options__head select" for="tooltip_toogle_<?php echo esc_attr( $this->CSSID ); ?>">
248
  <?php if ( ! empty( $this->label ) ) : ?>
249
  <span class="font-options__option-title"><?php echo esc_html( $this->label ); ?></span>
250
  <?php endif; ?>
251
- <span class="font-options__font-title"><?php echo $font_family; ?></span>
252
  </label>
253
  <?php }
254
 
@@ -258,7 +252,7 @@ class Pix_Customize_Font_Control extends Pix_Customize_Control {
258
 
259
  if ( ! empty( $this->recommended ) ) {
260
 
261
- echo '<optgroup label="' . __( 'Recommended', 'customify_txtd' ) . '">';
262
 
263
  foreach ( $this->recommended as $key => $font ) {
264
  $font_type = 'std';
@@ -281,7 +275,7 @@ class Pix_Customize_Font_Control extends Pix_Customize_Control {
281
 
282
  if ( PixCustomifyPlugin::get_plugin_option( 'typography_standard_fonts' ) ) {
283
 
284
- echo '<optgroup label="' . __( 'Standard fonts', 'customify_txtd' ) . '">';
285
  foreach ( self::$std_fonts as $key => $font ) {
286
  self::output_font_option( $key, $font_family, $font, 'std' );
287
  }
@@ -649,6 +643,30 @@ class Pix_Customize_Font_Control extends Pix_Customize_Control {
649
  return $to_return;
650
  }
651
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
652
  private function get_CSS_ID( $id = null ) {
653
 
654
  if ( empty( $id ) ) {
35
  * @param array $args
36
  */
37
  public function __construct( $manager, $id, $args = array() ) {
38
+ global $wp_customize;
39
 
40
  self::$std_fonts = apply_filters( 'customify_filter_standard_fonts_list', array(
41
  "Arial, Helvetica, sans-serif" => "Arial, Helvetica, sans-serif",
90
  $this->settings = $settings;
91
  $this->CSSID = $this->get_CSS_ID();
92
  $this->load_google_fonts();
 
 
 
 
93
 
94
+ // since 4.7 all the customizer data is saved in a post type named changeset this is how we get it.
95
+ $changeset_data = $wp_customize->changeset_data();
96
 
97
+ if ( isset( $changeset_data[$this->setting->id] ) ) {
98
+ $this->current_value = $changeset_data[$this->setting->id]['value'];
99
+ } else {
100
+ $this->current_value = $this->value();
 
 
 
 
 
 
 
101
  }
 
 
102
  }
103
 
104
  /**
143
  $this->load_all_weights = $current_value->font_load_all_weights;
144
 
145
  $select_data .= ' data-load_all_weights="true"';
146
+ } ?>
 
147
  <div class="font-options__wrapper">
148
  <?php
149
  $this->display_value_holder( $current_value );
150
+ $this->display_field_title( $font_family, esc_attr( $this->CSSID ) ); ?>
 
151
 
152
  <input type="checkbox" class="customify_font_tooltip"
153
  id="tooltip_toogle_<?php echo esc_attr( $this->CSSID ); ?>">
154
 
155
  <ul class="font-options__options-list">
156
  <li class="font-options__option customize-control">
157
+ <select id="select_font_font_family_<?php echo esc_attr( $this->CSSID ); ?>" class="customify_font_family"<?php echo $select_data; ?> data-field="font_family">
158
  <?php
159
  // Allow others to add options here
160
  do_action( 'customify_font_family_before_options', $font_family, $current_value );
177
  }
178
 
179
  foreach ( $grouped_google_fonts as $group_name => $group ) {
180
+ echo '<optgroup label="' . __( 'Google fonts', 'customify' ) . ' ' . $group_name . '">';
181
  foreach ( $group as $key => $font ) {
182
  self::output_font_option( $key, $font_family, $font );
183
  }
185
  }
186
 
187
  } else {
188
+ echo '<optgroup label="' . __( 'Google fonts', 'customify' ) . '">';
189
  foreach ( self::$google_fonts as $key => $font ) {
190
  self::output_font_option( $key, $font_family, $font );
191
  }
212
  $this->display_text_decoration_field( $current_value ); ?>
213
  </ul>
214
  </div>
215
+ <script>
216
+ // Update the font name in the font field label
217
+ jQuery( '#select_font_font_family_<?php echo esc_attr( $this->CSSID ); ?>' ).change( function(){
218
+ var newValue = jQuery( '#select_font_font_family_<?php echo esc_attr( $this->CSSID ); ?>' ).val();
219
+ jQuery( '#font_name_<?php echo esc_attr( $this->CSSID ); ?>' ).html( newValue );
220
+ });
221
+ </script>
222
 
223
  <?php if ( ! empty( $this->description ) ) : ?>
224
  <span class="description customize-control-description"><?php echo $this->description; ?></span>
237
  data-default="<?php echo esc_attr( PixCustomifyPlugin::encodeURIComponent( json_encode( $current_value ) ) ); ?>"/>
238
  <?php }
239
 
240
+ function display_field_title( $font_family, $font_name_id ) { ?>
241
  <label class="font-options__head select" for="tooltip_toogle_<?php echo esc_attr( $this->CSSID ); ?>">
242
  <?php if ( ! empty( $this->label ) ) : ?>
243
  <span class="font-options__option-title"><?php echo esc_html( $this->label ); ?></span>
244
  <?php endif; ?>
245
+ <span class="font-options__font-title" id="font_name_<?php echo $font_name_id; ?>"><?php echo $font_family; ?></span>
246
  </label>
247
  <?php }
248
 
252
 
253
  if ( ! empty( $this->recommended ) ) {
254
 
255
+ echo '<optgroup label="' . __( 'Recommended', 'customify' ) . '">';
256
 
257
  foreach ( $this->recommended as $key => $font ) {
258
  $font_type = 'std';
275
 
276
  if ( PixCustomifyPlugin::get_plugin_option( 'typography_standard_fonts' ) ) {
277
 
278
+ echo '<optgroup label="' . __( 'Standard fonts', 'customify' ) . '">';
279
  foreach ( self::$std_fonts as $key => $font ) {
280
  self::output_font_option( $key, $font_family, $font, 'std' );
281
  }
643
  return $to_return;
644
  }
645
 
646
+ function validate_font_values( $values ) {
647
+
648
+ if ( empty( $values ) ) {
649
+ return array();
650
+ }
651
+
652
+ foreach ( $values as $key => $value ) {
653
+
654
+ if ( strpos( $key, '-' ) !== false ) {
655
+ $new_key = str_replace( '-', '_', $key );
656
+
657
+ if ( $new_key === 'font_weight' ) {
658
+ $values[ 'selected_variants' ] = $value;
659
+ unset( $values[ 'font_weight' ] );
660
+ } else {
661
+ $values[ $new_key ] = $value;
662
+ unset( $values[ $key ] );
663
+ }
664
+ }
665
+ }
666
+
667
+ return $values;
668
+ }
669
+
670
  private function get_CSS_ID( $id = null ) {
671
 
672
  if ( empty( $id ) ) {
features/customizer/controls/class-Pix_Customize_Typography_Control.php CHANGED
@@ -154,7 +154,7 @@ class Pix_Customize_Typography_Control extends Pix_Customize_Control {
154
 
155
  <?php
156
  if ( ! empty( $this->typekit_fonts ) ) {
157
- echo '<optgroup label="' . __( 'Typekit', 'customify_txtd' ) . '">';
158
  foreach ( $this->typekit_fonts as $key => $font ) {
159
  self::output_font_option( $font['css_names'][0], $font_family, $font, 'typekit' );
160
  }
@@ -166,7 +166,7 @@ class Pix_Customize_Typography_Control extends Pix_Customize_Control {
166
 
167
  if ( ! empty( $this->recommended ) ) {
168
 
169
- echo '<optgroup label="' . __( 'Recommended', 'customify_txtd' ) . '">';
170
 
171
  foreach ( $this->recommended as $key => $font ) {
172
  $font_type = 'std';
@@ -190,7 +190,7 @@ class Pix_Customize_Typography_Control extends Pix_Customize_Control {
190
 
191
  if ( PixCustomifyPlugin::get_plugin_option( 'typography_standard_fonts' ) ) {
192
 
193
- echo '<optgroup label="' . __( 'Standard fonts', 'customify_txtd' ) . '">';
194
  foreach ( self::$std_fonts as $key => $font ) {
195
  self::output_font_option( $key, $font_family, $font, 'std' );
196
  }
@@ -212,7 +212,7 @@ class Pix_Customize_Typography_Control extends Pix_Customize_Control {
212
  }
213
 
214
  foreach ( $grouped_google_fonts as $group_name => $group ) {
215
- echo '<optgroup label="' . __( 'Google fonts', 'customify_txtd' ) . ' ' . $group_name . '">';
216
  foreach ( $group as $key => $font ) {
217
  self::output_font_option( $key, $font_family, $font );
218
  }
@@ -220,7 +220,7 @@ class Pix_Customize_Typography_Control extends Pix_Customize_Control {
220
  }
221
 
222
  } else {
223
- echo '<optgroup label="' . __( 'Google fonts', 'customify_txtd' ) . '">';
224
  foreach ( self::$google_fonts as $key => $font ) {
225
  self::output_font_option( $key, $font_family, $font );
226
  }
154
 
155
  <?php
156
  if ( ! empty( $this->typekit_fonts ) ) {
157
+ echo '<optgroup label="' . __( 'Typekit', 'customify' ) . '">';
158
  foreach ( $this->typekit_fonts as $key => $font ) {
159
  self::output_font_option( $font['css_names'][0], $font_family, $font, 'typekit' );
160
  }
166
 
167
  if ( ! empty( $this->recommended ) ) {
168
 
169
+ echo '<optgroup label="' . __( 'Recommended', 'customify' ) . '">';
170
 
171
  foreach ( $this->recommended as $key => $font ) {
172
  $font_type = 'std';
190
 
191
  if ( PixCustomifyPlugin::get_plugin_option( 'typography_standard_fonts' ) ) {
192
 
193
+ echo '<optgroup label="' . __( 'Standard fonts', 'customify' ) . '">';
194
  foreach ( self::$std_fonts as $key => $font ) {
195
  self::output_font_option( $key, $font_family, $font, 'std' );
196
  }
212
  }
213
 
214
  foreach ( $grouped_google_fonts as $group_name => $group ) {
215
+ echo '<optgroup label="' . __( 'Google fonts', 'customify' ) . ' ' . $group_name . '">';
216
  foreach ( $group as $key => $font ) {
217
  self::output_font_option( $key, $font_family, $font );
218
  }
220
  }
221
 
222
  } else {
223
+ echo '<optgroup label="' . __( 'Google fonts', 'customify' ) . '">';
224
  foreach ( self::$google_fonts as $key => $font ) {
225
  self::output_font_option( $key, $font_family, $font );
226
  }
js/customizer.js CHANGED
@@ -1,955 +1,951 @@
1
- (function ( $, exports ) {
2
- $(document).ready(function () {
3
- // when the customizer is ready prepare our fields events
4
- wp.customize.bind('ready', function () {
5
- var api = this,
6
- timeout = null;
7
-
8
- // add ace editors
9
- $('.customify_ace_editor').each(function ( key, el ) {
10
- var id = $(this).attr('id'),
11
- css_editor = ace.edit(id);
12
-
13
- var editor_type = $(this).data('editor_type');
14
- // init the ace editor
15
- css_editor.setTheme("ace/theme/github");
16
- css_editor.getSession().setMode("ace/mode/" + editor_type);
17
-
18
- // hide the textarea and enable the ace editor
19
- var textarea = $('#' + id + '_textarea').hide();
20
- css_editor.getSession().setValue(textarea.val());
21
-
22
- // each time a change is triggered start a timeout of 1,5s and when is finished refresh the previewer
23
- // if the user types faster than this delay then reset it
24
- css_editor.getSession().on('change', function ( e ) {
25
- if ( timeout !== null ) {
26
- clearTimeout(timeout);
27
- timeout = null;
28
- } else {
29
- timeout = setTimeout(function () {
30
- //var state = css_editor.session.getState();
31
- textarea.val(css_editor.getSession().getValue());
32
- textarea.trigger('change');
33
- }, 1500);
34
- }
35
- });
36
  });
 
37
 
38
- // simple select2 field
39
- $('.customify_select2').select2();
40
 
41
- customifyFontSelect.init(this);
42
 
43
- prepare_typography_field();
44
 
45
- /**
46
- * Make the customizer save on CMD/CTRL+S action
47
- * This is awesome!!!
48
- */
49
- $(window).bind('keydown', function ( event ) {
50
- if ( event.ctrlKey || event.metaKey ) {
51
- switch ( String.fromCharCode(event.which).toLowerCase() ) {
52
- case 's':
53
- event.preventDefault();
54
- api.previewer.save();
55
- break;
56
- }
57
  }
58
- });
 
59
 
60
- // for each range input add a value preview output
61
- $('input[type="range"]').each(function () {
62
- var $clone = $(this).clone();
63
 
64
- $clone
65
- .attr('type', 'number')
66
- .attr('class', 'range-value');
67
 
68
- $(this).after($clone);
69
 
70
- $(this).on('input', function () {
71
- $(this).siblings('.range-value').val($(this).val());
72
- });
73
  });
 
74
 
75
- if ( $('button[data-action="reset_customify"]').length > 0 ) {
76
- // reset_button
77
- $(document).on('click', '#customize-control-reset_customify button', function ( ev ) {
78
- ev.preventDefault();
79
 
80
- var iAgree = confirm('Do you really want to reset to defaults all the fields? Watch out, this will reset all your Customify options and will save them!');
81
 
82
- if ( !iAgree ) {
83
- return;
84
- }
85
 
86
- $.each(api.settings.controls, function ( key, ctrl ) {
87
- var id = key.replace('_control', '');
88
- var setting = customify_settings.settings[id];
89
 
90
- if ( !_.isUndefined(setting) && !_.isUndefined(setting.default) ) {
91
 
92
- var start_pos = id.indexOf('[') + 1;
93
- var end_pos = id.indexOf(']', start_pos);
94
 
95
- id = id.substring(start_pos, end_pos);
96
- api_set_setting_value(id, setting.default);
97
- }
98
- });
99
-
100
- api.previewer.save();
101
  });
102
 
103
- // add a reset button for each panel
104
- $('.panel-meta').each(function ( el, key ) {
105
- var container = $(this).parents('.control-panel'),
106
- id = container.attr('id'),
107
- panel_id = id.replace('accordion-panel-', '');
108
 
 
 
 
 
 
109
 
110
- $(this).parent().append('<button class="reset_panel button" data-panel="' + panel_id + '">Panel\'s defaults</button>');
111
- });
112
 
113
- // reset panel
114
- $(document).on('click', '.reset_panel', function ( e ) {
115
- e.preventDefault();
116
 
117
- var panel_id = $(this).data('panel'),
118
- panel = api.panel(panel_id),
119
- sections = panel.sections(),
120
- iAgree = confirm("Do you really want to reset " + panel.params.title + "?");
121
 
122
- if ( !iAgree ) {
123
- return;
124
- }
125
- if ( sections.length > 0 ) {
126
- $.each(sections, function () {
127
- //var settings = this.settings();
128
- var controls = this.controls();
129
 
130
- if ( controls.length > 0 ) {
131
- $.each(controls, function ( key, ctrl ) {
132
- var id = ctrl.id.replace('_control', ''),
133
- setting = customify_settings.settings[id];
 
 
 
134
 
135
- if ( !_.isUndefined(setting) && !_.isUndefined(setting.default) ) {
 
 
 
136
 
137
- var start_pos = id.indexOf('[') + 1,
138
- end_pos = id.indexOf(']', start_pos);
139
 
140
- id = id.substring(start_pos, end_pos);
141
- api_set_setting_value(id, setting.default);
142
- }
143
- });
144
- }
145
- });
146
- }
147
- });
148
 
149
- //add reset section
150
- $('.accordion-section-content').each(function ( el, key ) {
151
- var section = $(this).parent(),
152
- section_id = section.attr('id');
 
 
 
 
153
 
154
- if ( ( ( !_.isUndefined(section_id) ) ? section_id.indexOf(customify_settings.options_name) : -1 ) === -1 ) {
155
- return;
156
- }
 
157
 
158
- if ( !_.isUndefined(section_id) && section_id.indexOf('accordion-section-') > -1 ) {
159
- var id = section_id.replace('accordion-section-', '');
160
- $(this).prepend('<button class="reset_section button" data-section="' + id + '">Section\'s defaults</button>');
161
- }
162
- });
163
 
164
- // reset section event
165
- $(document).on('click', '.reset_section', function ( e ) {
166
- e.preventDefault();
 
 
167
 
168
- var section_id = $(this).data('section'),
169
- section = api.section(section_id),
170
- controls = section.controls();
171
 
172
- var iAgree = confirm("Do you really want to reset " + section.params.title + "?");
 
 
173
 
174
- if ( !iAgree ) {
175
- return;
176
- }
177
 
178
- if ( controls.length > 0 ) {
179
- $.each(controls, function ( key, ctrl ) {
180
- var id = ctrl.id.replace('_control', ''),
181
- setting = customify_settings.settings[id];
182
 
183
- if ( !_.isUndefined(setting) && !_.isUndefined(setting.default) ) {
 
 
 
184
 
185
- var start_pos = id.indexOf('[') + 1,
186
- end_pos = id.indexOf(']', start_pos);
187
 
188
- id = id.substring(start_pos, end_pos);
189
- api_set_setting_value(id, setting.default);
190
- }
191
- });
192
- }
193
- });
194
- }
195
 
196
- $(document).on('change', '.customize-control input.range-value', function () {
197
- var range = $(this).siblings('input[type="range"]');
198
- range.val($(this).val());
 
 
199
  });
 
200
 
201
- $(document).on('change', '.customify_typography_font_subsets', function ( ev ) {
 
 
 
202
 
203
- var $input = $(this).parents('.options').siblings('.customify_typography').children('.customify_typography_values'),
204
- current_val = $input.val();
205
 
206
- current_val = JSON.parse(decodeURIComponent(current_val));
 
207
 
208
- //maybe the selected option holds a JSON in its value
209
- current_val.selected_subsets = maybeJsonParse($(this).val());
210
 
211
- $input.val(encodeURIComponent(JSON.stringify(current_val)));
 
212
 
213
- $input.trigger('change');
214
- });
215
 
216
- $(document).on('change', '.customify_typography_font_weight', function ( ev ) {
 
217
 
218
- var $input = $(this).parents('.options').siblings('.customify_typography').children('.customify_typography_values'),
219
- current_val = $input.val();
220
 
221
- current_val = maybeJsonParse(current_val);
222
- // @todo currently the font weight selector works for one value only
223
- // maybe make this a multiselect
224
 
225
- //maybe the selected option holds a JSON in its value
226
- current_val.selected_variants = {0: maybeJsonParse($(this).val())};
 
227
 
228
- $input.val(encodeURIComponent(JSON.stringify(current_val)));
229
- $input.trigger('change');
230
- });
231
 
232
- // presets
233
- $(document).on('change', '.customify_preset.select', function () {
234
- var api = wp.customize,
235
- this_option = $(this).children('[value="' + $(this).val() + '"]'),
236
- data = $(this_option).data('options');
237
 
238
- if ( !_.isUndefined(data) ) {
239
- $.each(data, function ( id, value ) {
240
- api_set_setting_value(id, value);
241
- });
242
- }
243
 
244
- api.previewer.refresh();
245
- });
 
 
 
246
 
247
- $(document).on('click', '.customify_preset.radio input, .customify_preset.radio_buttons input, .awesome_presets input', function () {
248
- var api = wp.customize;
249
- var this_option = this;//$(this).children('[value="' + $(this).val() + '"]');
250
- var data = $(this_option).data('options');
251
 
252
- if ( !_.isUndefined(data) ) {
253
- $.each(data, function ( id, value ) {
254
- api_set_setting_value(id, value);
255
- });
256
- }
257
 
258
- api.previewer.refresh();
259
- });
 
 
 
260
 
261
- // bind our event on click
262
- $(document).on('click', '.customify_import_demo_data_button', function ( event ) {
263
- //if ( $( this ).hasClass( '.wpGrade_button_inactive' ) ) {
264
- // return false;
265
- //} else {
266
- // $( this ).addClass( '.wpGrade_button_inactive' );
267
- // $( this ).attr( 'disabled', 'disabled' );
268
- //}
269
- //var confirmImport = confirm( listable_demodata_params.l10n.import_confirm );
270
- //if ( confirmImport == false ) return false;
271
 
272
- //@todo start an animation here
273
- var key = $(this).data('key');
 
 
 
 
 
 
 
 
274
 
275
- var import_queue = new Queue(api);
 
276
 
277
- /// calculate the number of steps
278
- var steps = [];
279
 
280
- if ( !_.isUndefined(customify_settings.settings[key].imports) ) {
 
281
 
282
- $.each(customify_settings.settings[key].imports, function ( i, import_setts, k ) {
283
- if ( _.isUndefined(import_setts.steps) ) {
284
- steps.push({id: i, type: import_setts.type});
285
- } else {
286
- var count = import_setts.steps;
287
 
288
- while ( count >= 1 ) {
289
- steps.push({id: i, type: import_setts.type, count: count});
290
- count = count - 1;
291
- }
 
 
 
 
 
292
  }
293
- });
294
- }
 
295
 
296
- import_queue.add_steps('import_demo_data_action_id', steps);
297
- return false;
298
- });
299
 
300
- customifyBackgroundJsControl.init();
301
 
302
- // sometimes there may be needed a php save
303
- if ( getUrlVars('save_customizer_once') ) {
304
- api.previewer.save();
305
- }
306
 
307
- setTimeout(function () {
308
- customifyFoldingFields();
309
- }, 1000);
310
 
311
 
312
- // Handle the section tabs (ex: Layout | Fonts | Colors)
313
- (function() {
314
- var $navs = $( '.js-section-navigation' );
315
 
316
- $navs.each( function () {
317
- var $nav = $( this );
318
- var $title = $nav.parents( '.accordion-section-content' ).find( '.customize-section-title' );
319
 
320
- $title.append( $nav ).parent().addClass( 'has-nav' );
321
- });
 
322
 
323
- $('.js-section-navigation a').on( 'click', function(e) {
324
- e.preventDefault();
325
 
326
- var $sidebar = $('.wp-full-overlay-sidebar-content');
327
- var $parent = $(this).parents( '.accordion-section-content' );
328
- var href = $.attr(this, 'href');
329
 
330
- if ( href != '#' ) {
331
- $sidebar.animate({
332
- scrollTop: $( $.attr(this, 'href') ).position().top - $parent.find( '.customize-section-title' ).outerHeight()
333
- }, 500);
334
- }
335
- });
336
- })();
337
- });
 
 
 
 
 
 
 
 
 
 
 
338
 
339
  /**
340
- * This function will search for all the interdependend fields and make a bound between them.
341
- * So whenever a target is changed, it will take actions to the dependent fields.
 
 
 
342
  */
343
- var customifyFoldingFields = function () {
344
 
345
- if ( _.isUndefined(customify_settings) || _.isUndefined(customify_settings.settings) ) {
346
- return; // bail
347
- }
 
 
348
 
349
- /**
350
- * Let's iterate through all the customify settings and gather all the fields that have a "show_on"
351
- * property set.
352
- *
353
- * At the end `targets` will hold a list of [ target : [field, field,...], ... ]
354
- * so when a target is changed we will change all the fields.
355
- */
356
- var targets = {};
357
 
358
- $.fn.reactor.defaults.compliant = function () {
359
- $(this).slideDown();
360
- // $(this).animate({opacity: 1});
361
- $(this).find(':disabled').attr({disabled: false});
362
- };
363
 
364
- $.fn.reactor.defaults.uncompliant = function () {
365
- $(this).slideUp();
366
- // $(this).animate({opacity: 0.25});
367
- $(this).find(':enabled').attr({disabled: true});
368
- };
369
 
370
- var IS = $.extend({}, $.fn.reactor.helpers);
371
 
372
- var process_a_target = function ( parent_id, field ) {
 
 
 
 
 
 
 
 
373
 
374
- if ( _.isUndefined(field[0]) ) {
375
- return; // no id, no fun
376
- }
 
377
 
378
- var key = field[0],
379
- value = 1, // by default we use 1 the most used value for checboxes or inputs
380
- compare = '==', // ... ye
381
- action = "show"; // can only be `show` or `hide`
382
 
383
- var target_key = customify_settings.options_name + '[' + key + ']';
384
- var target_type = customify_settings.settings[target_key].type;
385
 
 
 
 
 
 
 
 
386
 
387
- if ( !_.isUndefined(field[1]) ) {
388
- value = field[1];
389
- }
 
 
390
 
391
- if ( !_.isUndefined(field[2]) ) {
392
- compare = field[2];
393
- }
 
 
394
 
395
- if ( !_.isUndefined(field[3]) ) {
396
- action = field[3];
397
- }
 
 
 
398
 
399
- /**
400
- * Now for each target we have, we will bind a change event to hide or show the dependent fields
401
- */
402
- var target_selector = '[data-customize-setting-link="' + customify_settings.options_name + '[' + key + ']"]';
403
 
404
- if ( target_type == 'checkbox' ) {
 
 
 
 
 
 
405
  $(parent_id).reactIf(target_selector, function () {
406
  return $(this).is(':checked') == value;
407
  });
408
- } else if ( target_type == 'radio' || target_type == 'radio_image' ) {
409
- $(parent_id)
410
- .reactIf(target_selector, function () {
 
 
 
 
 
 
 
 
 
411
  return $(target_selector + ':checked').val() == value;
412
  });
413
- } else {
414
- $(parent_id)
415
- .reactIf(target_selector, function () {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
416
  return $(target_selector).val() == value;
417
  });
418
- }
 
 
419
 
420
- $(target_selector).trigger('change');
421
- $('.reactor').trigger('change.reactor'); // triggers all events on load
422
- };
423
 
424
- $.each(customify_settings.settings, function ( id, field ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
425
 
426
  /**
427
- * Here we have the id of the fields. but we know for sure that we just need his parent selector
428
- * So we just create it
429
  */
430
- var parent_id = id.replace('[', '-');
431
- parent_id = parent_id.replace(']', '');
432
- parent_id = '#customize-control-' + parent_id + '_control';
433
-
434
-
435
- // get only the fields that have a 'show_on' property
436
- if ( field.hasOwnProperty('show_on') && field.show_on.length > 0 ) {
437
-
438
- /**
439
- * The 'show_on' can be a simple array with one target like: [ id, value, comparison, action ]
440
- * Or it could be an array of multiple targets and we need to process both cases
441
- */
442
- if ( _.isString(field.show_on[0]) ) {
443
- process_a_target(parent_id, field.show_on);
444
- } else if ( _.isObject(field.show_on[0]) ) {
445
- $.each(field.show_on, function ( i, j ) {
446
- process_a_target(parent_id, j);
447
- });
448
- }
449
  }
450
- });
451
- };
 
452
 
453
- var get_typography_font_family = function ( $el ) {
454
 
455
- var font_family_value = $el.val();
456
- // first time this will not be a json so catch that error
457
- try {
458
- font_family_value = JSON.parse(font_family_value);
459
- } catch ( e ) {
460
- return {font_family: font_family_value};
461
- }
462
 
463
- if ( !_.isUndefined(font_family_value.font_family) ) {
464
- return font_family_value.font_family;
465
- }
466
 
467
- return false;
468
- };
469
 
470
- // get each typography field and bind events
471
- var prepare_typography_field = function () {
472
 
473
- var $typos = $('.customify_typography_font_family');
474
 
475
- $typos.each(function () {
476
- var font_family_select = this,
477
- $input = $(font_family_select).siblings('.customify_typography_values');
478
- // on change
479
- $(font_family_select).on('change', function () {
480
- update_siblings_selects(font_family_select);
481
- $input.trigger('change');
482
- });
483
  update_siblings_selects(font_family_select);
 
484
  });
485
- };
486
-
487
- var api_set_setting_value = function ( id, value ) {
488
-
489
- var api = wp.customize,
490
- setting_id = customify_settings.options_name + '[' + id + ']',
491
- setting = api(setting_id),
492
- field = $('[data-customize-setting-link="' + setting_id + '"]'),
493
- field_class = $(field).parent().attr('class');
494
 
495
- if ( !_.isUndefined(field_class) && field_class === 'customify_typography' ) {
496
 
497
- var family_select = field.siblings('select');
 
 
 
498
 
499
- if ( _.isString(value) ) {
500
- var this_option = family_select.find('option[value="' + value + '"]');
501
- $(this_option[0]).attr('selected', 'selected');
502
- update_siblings_selects(family_select);
503
- } else if ( _.isObject(value) ) {
504
- var this_family_option = family_select.find('option[value="' + value['font_family'] + '"]');
505
- $(this_family_option[0]).attr('selected', 'selected');
506
 
507
- update_siblings_selects(this_family_option);
508
 
509
- setTimeout(function () {
510
- var weight_select = field.parent().siblings('.options').find('.customify_typography_font_weight');
 
 
 
 
 
511
 
512
- var this_weight_option = weight_select.find('option[value="' + value['selected_variants'] + '"]');
513
 
514
- $(this_weight_option[0]).attr('selected', 'selected');
 
515
 
516
- update_siblings_selects(this_family_option);
517
 
518
- weight_select.trigger('change');
519
- }, 300);
520
- }
521
 
522
- family_select.trigger('change');
523
 
524
- } else {
525
- setting.set(value);
526
  }
527
- };
528
 
529
- var update_siblings_selects = function ( font_select ) {
530
-
531
- this.bound_once = false;
532
- var selected_font = $(font_select).val(),
533
- $input = $(font_select).siblings('.customify_typography_values'),
534
- current_val = $input.attr('value');
535
-
536
- if ( current_val === '[object Object]' ) {
537
- current_val = $input.data('default');
538
- } else if ( _.isString(current_val) && !isJsonString(current_val) && current_val.substr(0, 1) == '[' ) {
539
- // a rare case when the value isn't a json but is a representative string like [family,weight]
540
- current_val = current_val.split(',');
541
- var new_current_value = {};
542
- if ( !_.isUndefined(current_val[0]) ) {
543
- new_current_value['font_family'] = current_val[0];
544
- }
545
 
546
- if ( !_.isUndefined(current_val[1]) ) {
547
- new_current_value['selected_variants'] = current_val[1];
548
- }
 
549
 
550
- current_val = JSON.stringify(new_current_value);
 
 
 
 
 
 
 
 
 
 
 
 
551
  }
552
 
553
- var $font_weight = $(font_select).parent().siblings('ul.options').find('.customify_typography_font_weight'),
554
- $font_subsets = $(font_select).parent().siblings('ul.options').find('.customify_typography_font_subsets');
 
555
 
556
- try {
557
- current_val = JSON.parse(decodeURIComponent(current_val));
558
- } catch ( e ) {
559
 
560
- // in case of an error, force the rebuild of the json
561
- if ( _.isUndefined($(font_select).data('bound_once')) ) {
562
 
563
- $(font_select).data('bound_once', true);
564
- //var api = wp.customize;
565
- //api.previewer.refresh();
566
 
567
- $(font_select).change();
568
- $font_weight.change();
569
- $font_subsets.change();
570
- }
571
- }
572
 
573
- // first try to get the font from sure sources, not from the recommended list.
574
- var option_data = $(font_select).find(':not(optgroup[label=Recommended]) option[value="' + selected_font + '"]');
575
- // however, if there isn't an option found, get what you can
576
- if ( option_data.length < 1 ) {
577
- option_data = $(font_select).find('option[value="' + selected_font + '"]');
578
  }
 
579
 
580
- if ( option_data.length > 0 ) {
581
-
582
- var font_type = option_data.data('type'),
583
- value_to_add = {'type': font_type, 'font_family': selected_font},
584
- variants = null,
585
- subsets = null;
586
-
587
- if ( font_type == 'std' ) {
588
- variants = {
589
- 0: '100',
590
- 1: '200',
591
- 3: '300',
592
- 4: '400',
593
- 5: '500',
594
- 6: '600',
595
- 7: '700',
596
- 8: '800',
597
- 9: '900'
598
- };
599
- if ( !_.isUndefined($(option_data[0]).data('variants')) ) {
600
- //maybe the variants are a JSON
601
- variants = maybeJsonParse($(option_data[0]).data('variants'));
602
- }
603
- } else {
 
 
 
604
  //maybe the variants are a JSON
605
  variants = maybeJsonParse($(option_data[0]).data('variants'));
606
-
607
- //maybe the subsets are a JSON
608
- subsets = maybeJsonParse($(option_data[0]).data('subsets'));
609
  }
 
 
 
610
 
611
- // make the variants selector
612
- if ( !_.isUndefined(variants) && !_.isNull(variants) && !_.isEmpty(variants) ) {
 
613
 
614
- value_to_add['variants'] = variants;
615
- // when a font is selected force the first weight to load
616
- value_to_add['selected_variants'] = {0: variants[0]};
617
 
618
- var variants_options = '',
619
- count_weights = 0;
 
620
 
621
- if ( _.isArray(variants) || _.isObject(variants) ) {
622
- // Take each variant and produce the option markup
623
- $.each(variants, function ( key, el ) {
624
- var is_selected = '';
625
- if ( _.isObject(current_val.selected_variants) && inObject(el, current_val.selected_variants) ) {
626
- is_selected = ' selected="selected"';
627
- } else if ( _.isString(current_val.selected_variants) && el === current_val.selected_variants ) {
628
- is_selected = ' selected="selected"';
629
- }
630
 
631
- // initialize
632
- var variant_option_value = el,
633
- variant_option_display = el;
 
 
 
 
 
 
634
 
635
- // If we are dealing with a object variant then it means things get tricky (probably it's our fault but bear with us)
636
- // This probably comes from our Fonto plugin - a font with individually named variants - hence each has its own font-family
637
- if ( _.isObject(el) ) {
638
- //put the entire object in the variation value - we will need it when outputting the custom CSS
639
- variant_option_value = encodeURIComponent(JSON.stringify(el));
640
- variant_option_display = '';
641
 
642
- //if we have weight and style then "compose" them into something standard
643
- if ( !_.isUndefined(el['font-weight']) ) {
644
- variant_option_display += el['font-weight'];
645
- }
 
 
646
 
647
- if ( _.isString(el['font-style']) && $.inArray(el['font-style'].toLowerCase(), ["normal", "regular"]) < 0 ) { //this comparison means it hasn't been found
648
- variant_option_display += el['font-style'];
649
- }
650
  }
651
 
652
- variants_options += '<option value="' + variant_option_value + '"' + is_selected + '>' + variant_option_display + '</option>';
653
- count_weights++;
654
- });
655
- }
656
-
657
- if ( !_.isUndefined($font_weight) ) {
658
- $font_weight.html(variants_options);
659
- // if there is no weight or just 1 we hide the weight select ... cuz is useless
660
- if ( $(font_select).data('load_all_weights') === true || count_weights <= 1 ) {
661
- $font_weight.parent().css('display', 'none');
662
- } else {
663
- $font_weight.parent().css('display', 'inline-block');
664
- }
665
- }
666
- } else if ( !_.isUndefined($font_weight) ) {
667
- $font_weight.parent().css('display', 'none');
668
- }
669
-
670
- // make the subsets selector
671
- if ( !_.isUndefined(subsets) && !_.isNull(subsets) && !_.isEmpty(subsets) ) {
672
-
673
- value_to_add['subsets'] = subsets;
674
- // when a font is selected force the first subset to load
675
- value_to_add['selected_subsets'] = {0: subsets[0]};
676
- var subsets_options = '',
677
- count_subsets = 0;
678
- $.each(subsets, function ( key, el ) {
679
- var is_selected = '';
680
- if ( _.isObject(current_val.selected_subsets) && inObject(el, current_val.selected_subsets) ) {
681
- is_selected = ' selected="selected"';
682
  }
683
 
684
- subsets_options += '<option value="' + el + '"' + is_selected + '>' + el + '</option>';
685
- count_subsets++;
686
  });
687
-
688
- if ( !_.isUndefined($font_subsets) ) {
689
- $font_subsets.html(subsets_options);
690
-
691
- // if there is no subset or just 1 we hide the subsets select ... cuz is useless
692
- if ( count_subsets <= 1 ) {
693
- $font_subsets.parent().css('display', 'none');
694
- } else {
695
- $font_subsets.parent().css('display', 'inline-block');
696
- }
697
- }
698
- } else if ( !_.isUndefined($font_subsets) ) {
699
- $font_subsets.parent().css('display', 'none');
700
  }
701
 
702
- $input.val(encodeURIComponent(JSON.stringify(value_to_add)));
703
- }
704
- };
705
-
706
- /**
707
- * Function to check if a value exists in an object
708
- * @param value
709
- * @param obj
710
- * @returns {boolean}
711
- */
712
- var inObject = function ( value, obj ) {
713
- for ( var k in obj ) {
714
- if ( !obj.hasOwnProperty(k) ) continue;
715
- if ( _.isEqual(obj[k], value) ) {
716
- return true;
717
  }
 
 
718
  }
719
- return false;
720
- };
721
 
722
- var maybeJsonParse = function ( value ) {
723
- var parsed;
724
-
725
- //try and parse it, with decodeURIComponent
726
- try {
727
- parsed = JSON.parse(decodeURIComponent(value));
728
- } catch ( e ) {
729
-
730
- // in case of an error, treat is as a string
731
- parsed = value;
732
- }
733
-
734
- return parsed;
735
- };
736
-
737
- var customifyBackgroundJsControl = (function () {
738
- "use strict";
739
-
740
- var api = wp.customize;
741
 
742
- function init() {
743
- // Remove the image button
744
- $('.customize-control-custom_background .remove-image, .customize-control-custom_background .remove-file').unbind('click').on('click', function ( e ) {
745
- removeImage($(this).parents('.customize-control-custom_background:first'));
746
- preview($(this));
747
- return false;
748
  });
749
 
750
- // Upload media button
751
- $('.customize-control-custom_background .background_upload_button').unbind().on('click', function ( event ) {
752
- addImage(event, $(this).parents('.customize-control-custom_background:first'));
753
- });
754
 
755
- $('.customify_background_select').on('change', function () {
756
- preview($(this));
757
- });
 
 
 
 
 
 
758
  }
759
 
760
- // Add a file via the wp.media function
761
- function addImage( event, selector ) {
762
-
763
- event.preventDefault();
764
 
765
- var frame;
766
- var jQueryel = jQuery(this);
767
 
768
- // If the media frame already exists, reopen it.
769
- if ( frame ) {
770
- frame.open();
771
- return;
772
- }
773
 
774
- // Create the media frame.
775
- frame = wp.media({
776
- multiple: false,
777
- library: {
778
- //type: 'image' //Only allow images
779
- },
780
- // Set the title of the modal.
781
- title: jQueryel.data('choose'),
782
-
783
- // Customize the submit button.
784
- button: {
785
- // Set the text of the button.
786
- text: jQueryel.data('update')
787
- // Tell the button not to close the modal, since we're
788
- // going to refresh the page when the image is selected.
789
- }
790
- });
791
-
792
- // When an image is selected, run a callback.
793
- frame.on('select', function () {
794
- // Grab the selected attachment.
795
- var attachment = frame.state().get('selection').first();
796
- frame.close();
797
 
798
- if ( attachment.attributes.type !== "image" ) {
799
- return;
800
- }
 
801
 
802
- selector.find('.upload').attr('value', attachment.attributes.url);
803
- selector.find('.upload-id').attr('value', attachment.attributes.id);
804
- selector.find('.upload-height').attr('value', attachment.attributes.height);
805
- selector.find('.upload-width').attr('value', attachment.attributes.width);
806
-
807
- var thumbSrc = attachment.attributes.url;
808
- if ( !_.isUndefined(attachment.attributes.sizes) && !_.isUndefined(attachment.attributes.sizes.thumbnail) ) {
809
- thumbSrc = attachment.attributes.sizes.thumbnail.url;
810
- } else if ( !_.isUndefined(attachment.attributes.sizes) ) {
811
- var height = attachment.attributes.height;
812
- for ( var key in attachment.attributes.sizes ) {
813
- var object = attachment.attributes.sizes[key];
814
- if ( object.height < height ) {
815
- height = object.height;
816
- thumbSrc = object.url;
817
- }
818
- }
819
- } else {
820
- thumbSrc = attachment.attributes.icon;
821
- }
822
 
823
- selector.find('.customify_background_input.background-image').val(attachment.attributes.url);
 
824
 
825
- if ( !selector.find('.upload').hasClass('noPreview') ) {
826
- selector.find('.preview_screenshot').empty().hide().append('<img class="preview_image" src="' + thumbSrc + '">').slideDown('fast');
827
- }
828
- //selector.find('.media_upload_button').unbind();
829
- selector.find('.remove-image').removeClass('hide');//show "Remove" button
830
- selector.find('.customify_background_select').removeClass('hide');//show "Remove" button
831
 
832
- preview(selector);
833
- });
834
 
835
- // Finally, open the modal.
 
836
  frame.open();
 
837
  }
838
 
839
- // Update the background preview
840
- function preview( selector ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
841
 
842
- var $parent = selector.parents('.customize-control-custom_background:first');
 
 
 
 
843
 
844
- if ( selector.hasClass('customize-control-custom_background') ) {
845
- $parent = selector;
846
  }
847
 
848
- if ( $parent.length > 0 ) {
849
- $parent = $($parent[0]);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
850
  } else {
851
- return;
852
  }
853
 
854
- var image_holder = $parent.find('.background-preview');
855
 
856
- if ( !image_holder ) { // No preview present
857
- return;
858
  }
 
 
 
859
 
860
- var the_id = $parent.find('.button.background_upload_button').data('setting_id'),
861
- this_setting = api.instance(the_id);
862
 
863
- var background_data = {};
 
 
864
 
865
- $parent.find('.customify_background_select, .customify_background_input').each(function () {
866
- var data = $(this).serializeArray();
867
 
868
- data = data[0];
869
- if ( data && data.name.indexOf('[background-') != -1 ) {
870
 
871
- background_data[$(this).data('select_name')] = data.value;
 
 
872
 
873
- //default_default[data.name] = data.value;
874
- //if (data.name == "background-image") {
875
- // css += data.name + ':url("' + data.value + '");';
876
- //} else {
877
- // css += data.name + ':' + data.value + ';';
878
- //}
879
- }
880
- });
881
 
882
- api.instance(the_id).set(background_data);
883
- //// Notify the customizer api about this change
884
- api.trigger('change');
885
- api.previewer.refresh();
886
 
887
- //image_holder.attr('style', css).fadeIn();
 
888
  }
889
 
890
- // Update the background preview
891
- function removeImage( parent ) {
892
- var selector = parent.find('.upload_button_div');
893
- // This shouldn't have been run...
894
- if ( !selector.find('.remove-image').addClass('hide') ) {
895
- return;
896
- }
897
 
898
- selector.find('.remove-image').addClass('hide');//hide "Remove" button
899
- parent.find('.customify_background_select').addClass('hide');
900
-
901
- selector.find('.upload').val('');
902
- selector.find('.upload-id').val('');
903
- selector.find('.upload-height').val('');
904
- selector.find('.upload-width').val('');
905
- parent.find('.customify_background_input.background-image').val('');
906
-
907
- var customizer_id = selector.find('.background_upload_button').data('setting_id'),
908
- this_setting = api.control(customizer_id + '_control'),
909
- current_vals = this_setting.setting(),
910
- screenshot = parent.find('.preview_screenshot'),
911
- to_array = $.map(current_vals, function ( value, index ) {
912
- return [value];
913
- });
914
 
915
- // Hide the screenshot
916
- screenshot.slideUp();
917
- selector.find('.remove-file').unbind();
918
- to_array['background-image'] = '';
919
- this_setting.setting(to_array);
920
- }
921
 
922
- return {
923
- init: init
924
- }
925
- })(jQuery);
926
 
927
- var getUrlVars = function ( name ) {
928
- var vars = [], hash;
929
- var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
930
- for ( var i = 0; i < hashes.length; i++ ) {
931
- hash = hashes[i].split('=');
932
 
933
- vars.push(hash[0]);
934
- vars[hash[0]] = hash[1];
935
- }
 
 
 
 
 
936
 
937
- if ( !_.isUndefined(vars[name]) ) {
938
- return vars[name];
939
- }
940
- return false;
941
- };
942
 
943
- var isJsonString = function ( str ) {
944
- try {
945
- JSON.parse(str);
946
- } catch ( e ) {
947
- return false;
 
 
 
 
948
  }
949
- return true;
950
- };
951
- });
952
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
953
 
954
  var customifyFontSelect = (function () {
955
  var wpapi = null,
@@ -975,10 +971,6 @@
975
 
976
  // serialize stuff and refresh
977
  update_font_value(wraper);
978
-
979
- // find weight and subset select
980
- // var api = wp.customize;
981
- // api.previewer.refresh();
982
  });
983
  }, 333);
984
 
@@ -1243,7 +1235,6 @@
1243
  };
1244
  })();
1245
 
1246
-
1247
  var Queue = function () {
1248
  var lastPromise = null;
1249
  var queueDeferred = null;
@@ -1365,4 +1356,61 @@
1365
  }
1366
  };
1367
 
1368
- })(jQuery, window);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ (function ( $, exports, api ) {
2
+ 'use strict';
3
+
4
+ // when the customizer is ready prepare our fields events
5
+ api.bind('ready', function () {
6
+ var timeout = null;
7
+
8
+ // add ace editors
9
+ $('.customify_ace_editor').each(function ( key, el ) {
10
+ var id = $(this).attr('id'),
11
+ css_editor = ace.edit(id);
12
+
13
+ var editor_type = $(this).data('editor_type');
14
+ // init the ace editor
15
+ css_editor.setTheme("ace/theme/github");
16
+ css_editor.getSession().setMode("ace/mode/" + editor_type);
17
+
18
+ // hide the textarea and enable the ace editor
19
+ var textarea = $('#' + id + '_textarea').hide();
20
+ css_editor.getSession().setValue(textarea.val());
21
+
22
+ // each time a change is triggered start a timeout of 1,5s and when is finished refresh the previewer
23
+ // if the user types faster than this delay then reset it
24
+ css_editor.getSession().on('change', function ( e ) {
25
+ if ( timeout !== null ) {
26
+ clearTimeout(timeout);
27
+ timeout = null;
28
+ } else {
29
+ timeout = setTimeout(function () {
30
+ //var state = css_editor.session.getState();
31
+ textarea.val(css_editor.getSession().getValue());
32
+ textarea.trigger('change');
33
+ }, 1500);
34
+ }
 
35
  });
36
+ });
37
 
38
+ // simple select2 field
39
+ $('.customify_select2').select2();
40
 
41
+ customifyFontSelect.init(this);
42
 
43
+ prepare_typography_field();
44
 
45
+ /**
46
+ * Make the customizer save on CMD/CTRL+S action
47
+ * This is awesome!!!
48
+ */
49
+ $(window).bind('keydown', function ( event ) {
50
+ if ( event.ctrlKey || event.metaKey ) {
51
+ switch ( String.fromCharCode(event.which).toLowerCase() ) {
52
+ case 's':
53
+ event.preventDefault();
54
+ api.previewer.save();
55
+ break;
 
56
  }
57
+ }
58
+ });
59
 
60
+ // for each range input add a value preview output
61
+ $('input[type="range"]').each(function () {
62
+ var $clone = $(this).clone();
63
 
64
+ $clone
65
+ .attr('type', 'number')
66
+ .attr('class', 'range-value');
67
 
68
+ $(this).after($clone);
69
 
70
+ $(this).on('input', function () {
71
+ $(this).siblings('.range-value').val($(this).val());
 
72
  });
73
+ });
74
 
75
+ if ( $('button[data-action="reset_customify"]').length > 0 ) {
76
+ // reset_button
77
+ $(document).on('click', '#customize-control-reset_customify button', function ( ev ) {
78
+ ev.preventDefault();
79
 
80
+ var iAgree = confirm('Do you really want to reset to defaults all the fields? Watch out, this will reset all your Customify options and will save them!');
81
 
82
+ if ( !iAgree ) {
83
+ return;
84
+ }
85
 
86
+ $.each(api.settings.controls, function ( key, ctrl ) {
87
+ var id = key.replace('_control', '');
88
+ var setting = customify_settings.settings[id];
89
 
90
+ if ( !_.isUndefined(setting) && !_.isUndefined(setting.default) ) {
91
 
92
+ var start_pos = id.indexOf('[') + 1;
93
+ var end_pos = id.indexOf(']', start_pos);
94
 
95
+ id = id.substring(start_pos, end_pos);
96
+ api_set_setting_value(id, setting.default);
97
+ }
 
 
 
98
  });
99
 
100
+ api.previewer.save();
101
+ });
 
 
 
102
 
103
+ // add a reset button for each panel
104
+ $('.panel-meta').each(function ( el, key ) {
105
+ var container = $(this).parents('.control-panel'),
106
+ id = container.attr('id'),
107
+ panel_id = id.replace('accordion-panel-', '');
108
 
 
 
109
 
110
+ $(this).parent().append('<button class="reset_panel button" data-panel="' + panel_id + '">Panel\'s defaults</button>');
111
+ });
 
112
 
113
+ // reset panel
114
+ $(document).on('click', '.reset_panel', function ( e ) {
115
+ e.preventDefault();
 
116
 
117
+ var panel_id = $(this).data('panel'),
118
+ panel = api.panel(panel_id),
119
+ sections = panel.sections(),
120
+ iAgree = confirm("Do you really want to reset " + panel.params.title + "?");
 
 
 
121
 
122
+ if ( !iAgree ) {
123
+ return;
124
+ }
125
+ if ( sections.length > 0 ) {
126
+ $.each(sections, function () {
127
+ //var settings = this.settings();
128
+ var controls = this.controls();
129
 
130
+ if ( controls.length > 0 ) {
131
+ $.each(controls, function ( key, ctrl ) {
132
+ var id = ctrl.id.replace('_control', ''),
133
+ setting = customify_settings.settings[id];
134
 
135
+ if ( !_.isUndefined(setting) && !_.isUndefined(setting.default) ) {
 
136
 
137
+ var start_pos = id.indexOf('[') + 1,
138
+ end_pos = id.indexOf(']', start_pos);
 
 
 
 
 
 
139
 
140
+ id = id.substring(start_pos, end_pos);
141
+ api_set_setting_value(id, setting.default);
142
+ }
143
+ });
144
+ }
145
+ });
146
+ }
147
+ });
148
 
149
+ //add reset section
150
+ $('.accordion-section-content').each(function ( el, key ) {
151
+ var section = $(this).parent(),
152
+ section_id = section.attr('id');
153
 
154
+ if ( ( ( !_.isUndefined(section_id) ) ? section_id.indexOf(customify_settings.options_name) : -1 ) === -1 ) {
155
+ return;
156
+ }
 
 
157
 
158
+ if ( !_.isUndefined(section_id) && section_id.indexOf('accordion-section-') > -1 ) {
159
+ var id = section_id.replace('accordion-section-', '');
160
+ $(this).prepend('<button class="reset_section button" data-section="' + id + '">Section\'s defaults</button>');
161
+ }
162
+ });
163
 
164
+ // reset section event
165
+ $(document).on('click', '.reset_section', function ( e ) {
166
+ e.preventDefault();
167
 
168
+ var section_id = $(this).data('section'),
169
+ section = api.section(section_id),
170
+ controls = section.controls();
171
 
172
+ var iAgree = confirm("Do you really want to reset " + section.params.title + "?");
 
 
173
 
174
+ if ( !iAgree ) {
175
+ return;
176
+ }
 
177
 
178
+ if ( controls.length > 0 ) {
179
+ $.each(controls, function ( key, ctrl ) {
180
+ var id = ctrl.id.replace('_control', ''),
181
+ setting = customify_settings.settings[id];
182
 
183
+ if ( !_.isUndefined(setting) && !_.isUndefined(setting.default) ) {
 
184
 
185
+ var start_pos = id.indexOf('[') + 1,
186
+ end_pos = id.indexOf(']', start_pos);
 
 
 
 
 
187
 
188
+ id = id.substring(start_pos, end_pos);
189
+ api_set_setting_value(id, setting.default);
190
+ }
191
+ });
192
+ }
193
  });
194
+ }
195
 
196
+ $(document).on('change', '.customize-control input.range-value', function () {
197
+ var range = $(this).siblings('input[type="range"]');
198
+ range.val($(this).val());
199
+ });
200
 
201
+ $(document).on('change', '.customify_typography_font_subsets', function ( ev ) {
 
202
 
203
+ var $input = $(this).parents('.options').siblings('.customify_typography').children('.customify_typography_values'),
204
+ current_val = $input.val();
205
 
206
+ current_val = JSON.parse(decodeURIComponent(current_val));
 
207
 
208
+ //maybe the selected option holds a JSON in its value
209
+ current_val.selected_subsets = maybeJsonParse($(this).val());
210
 
211
+ $input.val(encodeURIComponent(JSON.stringify(current_val)));
 
212
 
213
+ $input.trigger('change');
214
+ });
215
 
216
+ $(document).on('change', '.customify_typography_font_weight', function ( ev ) {
 
217
 
218
+ var $input = $(this).parents('.options').siblings('.customify_typography').children('.customify_typography_values'),
219
+ current_val = $input.val();
 
220
 
221
+ current_val = maybeJsonParse(current_val);
222
+ // @todo currently the font weight selector works for one value only
223
+ // maybe make this a multiselect
224
 
225
+ //maybe the selected option holds a JSON in its value
226
+ current_val.selected_variants = {0: maybeJsonParse($(this).val())};
 
227
 
228
+ $input.val(encodeURIComponent(JSON.stringify(current_val)));
229
+ $input.trigger('change');
230
+ });
 
 
231
 
232
+ // presets
233
+ $(document).on('change', '.customify_preset.select', function () {
234
+ var this_option = $(this).children('[value="' + $(this).val() + '"]'),
235
+ data = $(this_option).data('options');
 
236
 
237
+ if ( !_.isUndefined(data) ) {
238
+ $.each(data, function ( id, value ) {
239
+ api_set_setting_value(id, value);
240
+ });
241
+ }
242
 
243
+ api.previewer.refresh();
244
+ });
 
 
245
 
246
+ $(document).on('click', '.customify_preset.radio input, .customify_preset.radio_buttons input, .awesome_presets input', function () {
247
+ var this_option = this,//$(this).children('[value="' + $(this).val() + '"]');
248
+ data = $(this_option).data('options');
 
 
249
 
250
+ if ( !_.isUndefined(data) ) {
251
+ $.each(data, function ( id, value ) {
252
+ api_set_setting_value(id, value);
253
+ });
254
+ }
255
 
256
+ api.previewer.refresh();
257
+ });
 
 
 
 
 
 
 
 
258
 
259
+ // bind our event on click
260
+ $(document).on('click', '.customify_import_demo_data_button', function ( event ) {
261
+ //if ( $( this ).hasClass( '.wpGrade_button_inactive' ) ) {
262
+ // return false;
263
+ //} else {
264
+ // $( this ).addClass( '.wpGrade_button_inactive' );
265
+ // $( this ).attr( 'disabled', 'disabled' );
266
+ //}
267
+ //var confirmImport = confirm( listable_demodata_params.l10n.import_confirm );
268
+ //if ( confirmImport == false ) return false;
269
 
270
+ //@todo start an animation here
271
+ var key = $(this).data('key');
272
 
273
+ var import_queue = new Queue(api);
 
274
 
275
+ /// calculate the number of steps
276
+ var steps = [];
277
 
278
+ if ( !_.isUndefined(customify_settings.settings[key].imports) ) {
 
 
 
 
279
 
280
+ $.each(customify_settings.settings[key].imports, function ( i, import_setts, k ) {
281
+ if ( _.isUndefined(import_setts.steps) ) {
282
+ steps.push({id: i, type: import_setts.type});
283
+ } else {
284
+ var count = import_setts.steps;
285
+
286
+ while ( count >= 1 ) {
287
+ steps.push({id: i, type: import_setts.type, count: count});
288
+ count = count - 1;
289
  }
290
+ }
291
+ });
292
+ }
293
 
294
+ import_queue.add_steps('import_demo_data_action_id', steps);
295
+ return false;
296
+ });
297
 
298
+ customifyBackgroundJsControl.init();
299
 
300
+ // sometimes there may be needed a php save
301
+ if ( getUrlVars('save_customizer_once') ) {
302
+ api.previewer.save();
303
+ }
304
 
305
+ setTimeout(function () {
306
+ customifyFoldingFields();
307
+ }, 1000);
308
 
309
 
310
+ // Handle the section tabs (ex: Layout | Fonts | Colors)
311
+ (function() {
312
+ var $navs = $( '.js-section-navigation' );
313
 
314
+ $navs.each( function () {
315
+ var $nav = $( this );
316
+ var $title = $nav.parents( '.accordion-section-content' ).find( '.customize-section-title' );
317
 
318
+ $nav.closest('.customize-control').addClass('screen-reader-text');
319
+ $title.append( $nav ).parent().addClass( 'has-nav' );
320
+ });
321
 
322
+ $('.js-section-navigation a').on( 'click', function(e) {
323
+ e.preventDefault();
324
 
325
+ var $sidebar = $('.wp-full-overlay-sidebar-content');
326
+ var $parent = $(this).parents( '.accordion-section-content' );
327
+ var href = $.attr(this, 'href');
328
 
329
+ if ( href != '#' ) {
330
+ $sidebar.animate({
331
+ scrollTop: $( $.attr(this, 'href') ).position().top - $parent.find( '.customize-section-title' ).outerHeight()
332
+ }, 500);
333
+ }
334
+ });
335
+ })();
336
+ });
337
+
338
+ /**
339
+ * This function will search for all the interdependend fields and make a bound between them.
340
+ * So whenever a target is changed, it will take actions to the dependent fields.
341
+ * @TOOD this is still written in a barbaric way, refactor when needed
342
+ */
343
+ var customifyFoldingFields = function () {
344
+
345
+ if ( _.isUndefined(customify_settings) || _.isUndefined(customify_settings.settings) ) {
346
+ return; // bail
347
+ }
348
 
349
  /**
350
+ * Let's iterate through all the customify settings and gather all the fields that have a "show_if"
351
+ * property set.
352
+ *
353
+ * At the end `targets` will hold a list of [ target : [field, field,...], ... ]
354
+ * so when a target is changed we will change all the fields.
355
  */
356
+ var targets = {};
357
 
358
+ $.fn.reactor.defaults.compliant = function () {
359
+ $(this).slideDown();
360
+ // $(this).animate({opacity: 1});
361
+ $(this).find(':disabled').attr({disabled: false});
362
+ };
363
 
364
+ $.fn.reactor.defaults.uncompliant = function () {
365
+ $(this).slideUp();
366
+ // $(this).animate({opacity: 0.25});
367
+ $(this).find(':enabled').attr({disabled: true});
368
+ };
 
 
 
369
 
370
+ var IS = $.extend({}, $.fn.reactor.helpers);
 
 
 
 
371
 
372
+ var bind_folding_events = function ( parent_id, field, relation ) {
 
 
 
 
373
 
374
+ var key = null;
375
 
376
+ if ( _.isString(field) ) {
377
+ key = field;
378
+ } else if ( ! _.isUndefined(field.id) ) {
379
+ key = field.id;
380
+ } else if ( isString( field[0] ) ) {
381
+ key = field[0];
382
+ } else {
383
+ return; // no key, no fun
384
+ }
385
 
386
+ var value = 1, // by default we use 1 the most used value for checboxes or inputs
387
+ compare = '==', // ... ye
388
+ action = "show",
389
+ between = [0,1]; // can only be `show` or `hide`
390
 
391
+ var target_key = customify_settings.options_name + '[' + key + ']';
 
 
 
392
 
393
+ var target_type = customify_settings.settings[target_key].type;
 
394
 
395
+ // we support the usual syntax like a config array like `array( 'id' => $id, 'value' => $value, 'compare' => $compare )`
396
+ // but we also support a non-associative array like `array( $id, $value, $compare )`
397
+ if ( ! _.isUndefined ( field.value ) ) {
398
+ value = field.value;
399
+ } else if ( ! _.isUndefined( field[1] ) && ! _.isString(field[1]) ) {
400
+ value = field[1];
401
+ }
402
 
403
+ if ( ! _.isUndefined(field.compare) ) {
404
+ compare = field.compare;
405
+ } else if ( ! _.isUndefined(field[2]) ) {
406
+ compare = field[2];
407
+ }
408
 
409
+ if ( !_.isUndefined(field.action) ) {
410
+ action = field.action;
411
+ } else if ( !_.isUndefined(field[3]) ) {
412
+ action = field[3];
413
+ }
414
 
415
+ // a field can also overwrite the parent relation
416
+ if ( !_.isUndefined(field.relation) ) {
417
+ action = field.relation;
418
+ } else if ( !_.isUndefined(field[4]) ) {
419
+ action = field[4];
420
+ }
421
 
422
+ if ( !_.isUndefined(field.between) ) {
423
+ between = field.between;
424
+ }
 
425
 
426
+ /**
427
+ * Now for each target we have, we will bind a change event to hide or show the dependent fields
428
+ */
429
+ var target_selector = '[data-customize-setting-link="' + customify_settings.options_name + '[' + key + ']"]';
430
+
431
+ switch ( target_type ) {
432
+ case 'checkbox':
433
  $(parent_id).reactIf(target_selector, function () {
434
  return $(this).is(':checked') == value;
435
  });
436
+ break;
437
+
438
+ case 'radio':
439
+ case 'radio_image':
440
+
441
+ // in case of an array of values we use the ( val in array) condition
442
+ if ( _.isObject(value) ) {
443
+ $(parent_id).reactIf(target_selector, function () {
444
+ return ( value.indexOf( $(target_selector + ':checked').val() ) !== -1 );
445
+ });
446
+ } else { // in any other case we use a simple == comparison
447
+ $(parent_id).reactIf(target_selector, function () {
448
  return $(target_selector + ':checked').val() == value;
449
  });
450
+ }
451
+ break;
452
+
453
+ case 'range':
454
+ var x = IS.Between(between[0], between[1]);
455
+
456
+ $(parent_id).reactIf(target_selector, x);
457
+ break;
458
+
459
+ default:
460
+ // in case of an array of values we use the ( val in array) condition
461
+ if ( _.isObject(value) ) {
462
+ $(parent_id).reactIf(target_selector, function () {
463
+ return ( value.indexOf($(target_selector).val()) !== -1 );
464
+ });
465
+ } else { // in any other case we use a simple == comparison
466
+ $(parent_id).reactIf(target_selector, function () {
467
  return $(target_selector).val() == value;
468
  });
469
+ }
470
+ break;
471
+ }
472
 
473
+ $(target_selector).trigger('change');
474
+ $('.reactor').trigger('change.reactor'); // triggers all events on load
475
+ };
476
 
477
+ $.each(customify_settings.settings, function ( id, field ) {
478
+ /**
479
+ * Here we have the id of the fields. but we know for sure that we just need his parent selector
480
+ * So we just create it
481
+ */
482
+ var parent_id = id.replace('[', '-');
483
+ parent_id = parent_id.replace(']', '');
484
+ parent_id = '#customize-control-' + parent_id + '_control';
485
+
486
+ // get only the fields that have a 'show_if' property
487
+ if ( field.hasOwnProperty('show_if') ) {
488
+ var relation = 'AND';
489
+
490
+ if ( ! _.isUndefined( field.show_if.relation ) ) {
491
+ relation = field.show_if.relation;
492
+ // remove the relation property, we need the config to be array based only
493
+ delete field.show_if.relation;
494
+ }
495
 
496
  /**
497
+ * The 'show_if' can be a simple array with one target like: [ id, value, comparison, action ]
498
+ * Or it could be an array of multiple targets and we need to process both cases
499
  */
500
+
501
+ if ( ! _.isUndefined( field.show_if.id ) ) {
502
+ bind_folding_events(parent_id, field.show_if, relation );
503
+ } else if ( _.isObject( field.show_if ) ) {
504
+ $.each(field.show_if, function ( i, j ) {
505
+ bind_folding_events( parent_id, j, relation );
506
+ });
 
 
 
 
 
 
 
 
 
 
 
 
507
  }
508
+ }
509
+ });
510
+ };
511
 
512
+ var get_typography_font_family = function ( $el ) {
513
 
514
+ var font_family_value = $el.val();
515
+ // first time this will not be a json so catch that error
516
+ try {
517
+ font_family_value = JSON.parse(font_family_value);
518
+ } catch ( e ) {
519
+ return {font_family: font_family_value};
520
+ }
521
 
522
+ if ( !_.isUndefined(font_family_value.font_family) ) {
523
+ return font_family_value.font_family;
524
+ }
525
 
526
+ return false;
527
+ };
528
 
529
+ // get each typography field and bind events
530
+ var prepare_typography_field = function () {
531
 
532
+ var $typos = $('.customify_typography_font_family');
533
 
534
+ $typos.each(function () {
535
+ var font_family_select = this,
536
+ $input = $(font_family_select).siblings('.customify_typography_values');
537
+ // on change
538
+ $(font_family_select).on('change', function () {
 
 
 
539
  update_siblings_selects(font_family_select);
540
+ $input.trigger('change');
541
  });
542
+ update_siblings_selects(font_family_select);
543
+ });
544
+ };
 
 
 
 
 
 
545
 
546
+ var api_set_setting_value = function ( id, value ) {
547
 
548
+ var setting_id = customify_settings.options_name + '[' + id + ']',
549
+ setting = api(setting_id),
550
+ field = $('[data-customize-setting-link="' + setting_id + '"]'),
551
+ field_class = $(field).parent().attr('class');
552
 
553
+ if ( !_.isUndefined(field_class) && field_class === 'customify_typography' ) {
 
 
 
 
 
 
554
 
555
+ var family_select = field.siblings('select');
556
 
557
+ if ( _.isString(value) ) {
558
+ var this_option = family_select.find('option[value="' + value + '"]');
559
+ $(this_option[0]).attr('selected', 'selected');
560
+ update_siblings_selects(family_select);
561
+ } else if ( _.isObject(value) ) {
562
+ var this_family_option = family_select.find('option[value="' + value['font_family'] + '"]');
563
+ $(this_family_option[0]).attr('selected', 'selected');
564
 
565
+ update_siblings_selects(this_family_option);
566
 
567
+ setTimeout(function () {
568
+ var weight_select = field.parent().siblings('.options').find('.customify_typography_font_weight');
569
 
570
+ var this_weight_option = weight_select.find('option[value="' + value['selected_variants'] + '"]');
571
 
572
+ $(this_weight_option[0]).attr('selected', 'selected');
 
 
573
 
574
+ update_siblings_selects(this_family_option);
575
 
576
+ weight_select.trigger('change');
577
+ }, 300);
578
  }
 
579
 
580
+ family_select.trigger('change');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
581
 
582
+ } else {
583
+ setting.set(value);
584
+ }
585
+ };
586
 
587
+ var update_siblings_selects = function ( font_select ) {
588
+ var selected_font = $(font_select).val(),
589
+ $input = $(font_select).siblings('.customify_typography_values'),
590
+ current_val = $input.attr('value');
591
+
592
+ if ( current_val === '[object Object]' ) {
593
+ current_val = $input.data('default');
594
+ } else if ( _.isString(current_val) && !isJsonString(current_val) && current_val.substr(0, 1) == '[' ) {
595
+ // a rare case when the value isn't a json but is a representative string like [family,weight]
596
+ current_val = current_val.split(',');
597
+ var new_current_value = {};
598
+ if ( !_.isUndefined(current_val[0]) ) {
599
+ new_current_value['font_family'] = current_val[0];
600
  }
601
 
602
+ if ( !_.isUndefined(current_val[1]) ) {
603
+ new_current_value['selected_variants'] = current_val[1];
604
+ }
605
 
606
+ current_val = JSON.stringify(new_current_value);
607
+ }
 
608
 
609
+ var $font_weight = $(font_select).parent().siblings('ul.options').find('.customify_typography_font_weight'),
610
+ $font_subsets = $(font_select).parent().siblings('ul.options').find('.customify_typography_font_subsets');
611
 
612
+ try {
613
+ current_val = JSON.parse(decodeURIComponent(current_val));
614
+ } catch ( e ) {
615
 
616
+ // in case of an error, force the rebuild of the json
617
+ if ( _.isUndefined($(font_select).data('bound_once')) ) {
618
+
619
+ $(font_select).data('bound_once', true);
 
620
 
621
+ $(font_select).change();
622
+ $font_weight.change();
623
+ $font_subsets.change();
 
 
624
  }
625
+ }
626
 
627
+ // first try to get the font from sure sources, not from the recommended list.
628
+ var option_data = $(font_select).find(':not(optgroup[label=Recommended]) option[value="' + selected_font + '"]');
629
+ // however, if there isn't an option found, get what you can
630
+ if ( option_data.length < 1 ) {
631
+ option_data = $(font_select).find('option[value="' + selected_font + '"]');
632
+ }
633
+
634
+ if ( option_data.length > 0 ) {
635
+
636
+ var font_type = option_data.data('type'),
637
+ value_to_add = {'type': font_type, 'font_family': selected_font},
638
+ variants = null,
639
+ subsets = null;
640
+
641
+ if ( font_type == 'std' ) {
642
+ variants = {
643
+ 0: '100',
644
+ 1: '200',
645
+ 3: '300',
646
+ 4: '400',
647
+ 5: '500',
648
+ 6: '600',
649
+ 7: '700',
650
+ 8: '800',
651
+ 9: '900'
652
+ };
653
+ if ( !_.isUndefined($(option_data[0]).data('variants')) ) {
654
  //maybe the variants are a JSON
655
  variants = maybeJsonParse($(option_data[0]).data('variants'));
 
 
 
656
  }
657
+ } else {
658
+ //maybe the variants are a JSON
659
+ variants = maybeJsonParse($(option_data[0]).data('variants'));
660
 
661
+ //maybe the subsets are a JSON
662
+ subsets = maybeJsonParse($(option_data[0]).data('subsets'));
663
+ }
664
 
665
+ // make the variants selector
666
+ if ( !_.isUndefined(variants) && !_.isNull(variants) && !_.isEmpty(variants) ) {
 
667
 
668
+ value_to_add['variants'] = variants;
669
+ // when a font is selected force the first weight to load
670
+ value_to_add['selected_variants'] = {0: variants[0]};
671
 
672
+ var variants_options = '',
673
+ count_weights = 0;
 
 
 
 
 
 
 
674
 
675
+ if ( _.isArray(variants) || _.isObject(variants) ) {
676
+ // Take each variant and produce the option markup
677
+ $.each(variants, function ( key, el ) {
678
+ var is_selected = '';
679
+ if ( _.isObject(current_val.selected_variants) && inObject(el, current_val.selected_variants) ) {
680
+ is_selected = ' selected="selected"';
681
+ } else if ( _.isString(current_val.selected_variants) && el === current_val.selected_variants ) {
682
+ is_selected = ' selected="selected"';
683
+ }
684
 
685
+ // initialize
686
+ var variant_option_value = el,
687
+ variant_option_display = el;
 
 
 
688
 
689
+ // If we are dealing with a object variant then it means things get tricky (probably it's our fault but bear with us)
690
+ // This probably comes from our Fonto plugin - a font with individually named variants - hence each has its own font-family
691
+ if ( _.isObject(el) ) {
692
+ //put the entire object in the variation value - we will need it when outputting the custom CSS
693
+ variant_option_value = encodeURIComponent(JSON.stringify(el));
694
+ variant_option_display = '';
695
 
696
+ //if we have weight and style then "compose" them into something standard
697
+ if ( !_.isUndefined(el['font-weight']) ) {
698
+ variant_option_display += el['font-weight'];
699
  }
700
 
701
+ if ( _.isString(el['font-style']) && $.inArray(el['font-style'].toLowerCase(), ["normal", "regular"]) < 0 ) { //this comparison means it hasn't been found
702
+ variant_option_display += el['font-style'];
703
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
704
  }
705
 
706
+ variants_options += '<option value="' + variant_option_value + '"' + is_selected + '>' + variant_option_display + '</option>';
707
+ count_weights++;
708
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
709
  }
710
 
711
+ if ( !_.isUndefined($font_weight) ) {
712
+ $font_weight.html(variants_options);
713
+ // if there is no weight or just 1 we hide the weight select ... cuz is useless
714
+ if ( $(font_select).data('load_all_weights') === true || count_weights <= 1 ) {
715
+ $font_weight.parent().css('display', 'none');
716
+ } else {
717
+ $font_weight.parent().css('display', 'inline-block');
718
+ }
 
 
 
 
 
 
 
719
  }
720
+ } else if ( !_.isUndefined($font_weight) ) {
721
+ $font_weight.parent().css('display', 'none');
722
  }
 
 
723
 
724
+ // make the subsets selector
725
+ if ( !_.isUndefined(subsets) && !_.isNull(subsets) && !_.isEmpty(subsets) ) {
726
+
727
+ value_to_add['subsets'] = subsets;
728
+ // when a font is selected force the first subset to load
729
+ value_to_add['selected_subsets'] = {0: subsets[0]};
730
+ var subsets_options = '',
731
+ count_subsets = 0;
732
+ $.each(subsets, function ( key, el ) {
733
+ var is_selected = '';
734
+ if ( _.isObject(current_val.selected_subsets) && inObject(el, current_val.selected_subsets) ) {
735
+ is_selected = ' selected="selected"';
736
+ }
 
 
 
 
 
 
737
 
738
+ subsets_options += '<option value="' + el + '"' + is_selected + '>' + el + '</option>';
739
+ count_subsets++;
 
 
 
 
740
  });
741
 
742
+ if ( !_.isUndefined($font_subsets) ) {
743
+ $font_subsets.html(subsets_options);
 
 
744
 
745
+ // if there is no subset or just 1 we hide the subsets select ... cuz is useless
746
+ if ( count_subsets <= 1 ) {
747
+ $font_subsets.parent().css('display', 'none');
748
+ } else {
749
+ $font_subsets.parent().css('display', 'inline-block');
750
+ }
751
+ }
752
+ } else if ( !_.isUndefined($font_subsets) ) {
753
+ $font_subsets.parent().css('display', 'none');
754
  }
755
 
756
+ $input.val(encodeURIComponent(JSON.stringify(value_to_add)));
757
+ }
758
+ };
 
759
 
760
+ /** Modules **/
 
761
 
762
+ var customifyBackgroundJsControl = (function () {
763
+ "use strict";
 
 
 
764
 
765
+ function init() {
766
+ // Remove the image button
767
+ $('.customize-control-custom_background .remove-image, .customize-control-custom_background .remove-file').unbind('click').on('click', function ( e ) {
768
+ removeImage($(this).parents('.customize-control-custom_background:first'));
769
+ preview($(this));
770
+ return false;
771
+ });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
772
 
773
+ // Upload media button
774
+ $('.customize-control-custom_background .background_upload_button').unbind().on('click', function ( event ) {
775
+ addImage(event, $(this).parents('.customize-control-custom_background:first'));
776
+ });
777
 
778
+ $('.customify_background_select').on('change', function () {
779
+ preview($(this));
780
+ });
781
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
782
 
783
+ // Add a file via the wp.media function
784
+ function addImage( event, selector ) {
785
 
786
+ event.preventDefault();
 
 
 
 
 
787
 
788
+ var frame;
789
+ var jQueryel = jQuery(this);
790
 
791
+ // If the media frame already exists, reopen it.
792
+ if ( frame ) {
793
  frame.open();
794
+ return;
795
  }
796
 
797
+ // Create the media frame.
798
+ frame = wp.media({
799
+ multiple: false,
800
+ library: {
801
+ //type: 'image' //Only allow images
802
+ },
803
+ // Set the title of the modal.
804
+ title: jQueryel.data('choose'),
805
+
806
+ // Customize the submit button.
807
+ button: {
808
+ // Set the text of the button.
809
+ text: jQueryel.data('update')
810
+ // Tell the button not to close the modal, since we're
811
+ // going to refresh the page when the image is selected.
812
+ }
813
+ });
814
 
815
+ // When an image is selected, run a callback.
816
+ frame.on('select', function () {
817
+ // Grab the selected attachment.
818
+ var attachment = frame.state().get('selection').first();
819
+ frame.close();
820
 
821
+ if ( attachment.attributes.type !== "image" ) {
822
+ return;
823
  }
824
 
825
+ selector.find('.upload').attr('value', attachment.attributes.url);
826
+ selector.find('.upload-id').attr('value', attachment.attributes.id);
827
+ selector.find('.upload-height').attr('value', attachment.attributes.height);
828
+ selector.find('.upload-width').attr('value', attachment.attributes.width);
829
+
830
+ var thumbSrc = attachment.attributes.url;
831
+ if ( !_.isUndefined(attachment.attributes.sizes) && !_.isUndefined(attachment.attributes.sizes.thumbnail) ) {
832
+ thumbSrc = attachment.attributes.sizes.thumbnail.url;
833
+ } else if ( !_.isUndefined(attachment.attributes.sizes) ) {
834
+ var height = attachment.attributes.height;
835
+ for ( var key in attachment.attributes.sizes ) {
836
+ var object = attachment.attributes.sizes[key];
837
+ if ( object.height < height ) {
838
+ height = object.height;
839
+ thumbSrc = object.url;
840
+ }
841
+ }
842
  } else {
843
+ thumbSrc = attachment.attributes.icon;
844
  }
845
 
846
+ selector.find('.customify_background_input.background-image').val(attachment.attributes.url);
847
 
848
+ if ( !selector.find('.upload').hasClass('noPreview') ) {
849
+ selector.find('.preview_screenshot').empty().hide().append('<img class="preview_image" src="' + thumbSrc + '">').slideDown('fast');
850
  }
851
+ //selector.find('.media_upload_button').unbind();
852
+ selector.find('.remove-image').removeClass('hide');//show "Remove" button
853
+ selector.find('.customify_background_select').removeClass('hide');//show "Remove" button
854
 
855
+ preview(selector);
856
+ });
857
 
858
+ // Finally, open the modal.
859
+ frame.open();
860
+ }
861
 
862
+ // Update the background preview
863
+ function preview( selector ) {
864
 
865
+ var $parent = selector.parents('.customize-control-custom_background:first');
 
866
 
867
+ if ( selector.hasClass('customize-control-custom_background') ) {
868
+ $parent = selector;
869
+ }
870
 
871
+ if ( $parent.length > 0 ) {
872
+ $parent = $($parent[0]);
873
+ } else {
874
+ return;
875
+ }
 
 
 
876
 
877
+ var image_holder = $parent.find('.background-preview');
 
 
 
878
 
879
+ if ( !image_holder ) { // No preview present
880
+ return;
881
  }
882
 
883
+ var the_id = $parent.find('.button.background_upload_button').data('setting_id'),
884
+ this_setting = api.instance(the_id);
 
 
 
 
 
885
 
886
+ var background_data = {};
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
887
 
888
+ $parent.find('.customify_background_select, .customify_background_input').each(function () {
889
+ var data = $(this).serializeArray();
 
 
 
 
890
 
891
+ data = data[0];
892
+ if ( data && data.name.indexOf('[background-') != -1 ) {
 
 
893
 
894
+ background_data[$(this).data('select_name')] = data.value;
 
 
 
 
895
 
896
+ //default_default[data.name] = data.value;
897
+ //if (data.name == "background-image") {
898
+ // css += data.name + ':url("' + data.value + '");';
899
+ //} else {
900
+ // css += data.name + ':' + data.value + ';';
901
+ //}
902
+ }
903
+ });
904
 
905
+ api.instance(the_id).set(background_data);
906
+ //// Notify the customizer api about this change
907
+ api.trigger('change');
908
+ api.previewer.refresh();
 
909
 
910
+ //image_holder.attr('style', css).fadeIn();
911
+ }
912
+
913
+ // Update the background preview
914
+ function removeImage( parent ) {
915
+ var selector = parent.find('.upload_button_div');
916
+ // This shouldn't have been run...
917
+ if ( !selector.find('.remove-image').addClass('hide') ) {
918
+ return;
919
  }
 
 
 
920
 
921
+ selector.find('.remove-image').addClass('hide');//hide "Remove" button
922
+ parent.find('.customify_background_select').addClass('hide');
923
+
924
+ selector.find('.upload').val('');
925
+ selector.find('.upload-id').val('');
926
+ selector.find('.upload-height').val('');
927
+ selector.find('.upload-width').val('');
928
+ parent.find('.customify_background_input.background-image').val('');
929
+
930
+ var customizer_id = selector.find('.background_upload_button').data('setting_id'),
931
+ this_setting = api.control(customizer_id + '_control'),
932
+ current_vals = this_setting.setting(),
933
+ screenshot = parent.find('.preview_screenshot'),
934
+ to_array = $.map(current_vals, function ( value, index ) {
935
+ return [value];
936
+ });
937
+
938
+ // Hide the screenshot
939
+ screenshot.slideUp();
940
+ selector.find('.remove-file').unbind();
941
+ to_array['background-image'] = '';
942
+ this_setting.setting(to_array);
943
+ }
944
+
945
+ return {
946
+ init: init
947
+ }
948
+ })(jQuery);
949
 
950
  var customifyFontSelect = (function () {
951
  var wpapi = null,
971
 
972
  // serialize stuff and refresh
973
  update_font_value(wraper);
 
 
 
 
974
  });
975
  }, 333);
976
 
1235
  };
1236
  })();
1237
 
 
1238
  var Queue = function () {
1239
  var lastPromise = null;
1240
  var queueDeferred = null;
1356
  }
1357
  };
1358
 
1359
+ /** HELPERS **/
1360
+
1361
+ /**
1362
+ * Function to check if a value exists in an object
1363
+ * @param value
1364
+ * @param obj
1365
+ * @returns {boolean}
1366
+ */
1367
+ var inObject = function ( value, obj ) {
1368
+ for ( var k in obj ) {
1369
+ if ( !obj.hasOwnProperty(k) ) continue;
1370
+ if ( _.isEqual(obj[k], value) ) {
1371
+ return true;
1372
+ }
1373
+ }
1374
+ return false;
1375
+ };
1376
+
1377
+ var maybeJsonParse = function ( value ) {
1378
+ var parsed;
1379
+
1380
+ //try and parse it, with decodeURIComponent
1381
+ try {
1382
+ parsed = JSON.parse(decodeURIComponent(value));
1383
+ } catch ( e ) {
1384
+
1385
+ // in case of an error, treat is as a string
1386
+ parsed = value;
1387
+ }
1388
+
1389
+ return parsed;
1390
+ };
1391
+
1392
+ var getUrlVars = function ( name ) {
1393
+ var vars = [], hash;
1394
+ var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
1395
+ for ( var i = 0; i < hashes.length; i++ ) {
1396
+ hash = hashes[i].split('=');
1397
+
1398
+ vars.push(hash[0]);
1399
+ vars[hash[0]] = hash[1];
1400
+ }
1401
+
1402
+ if ( !_.isUndefined(vars[name]) ) {
1403
+ return vars[name];
1404
+ }
1405
+ return false;
1406
+ };
1407
+
1408
+ var isJsonString = function ( str ) {
1409
+ try {
1410
+ JSON.parse(str);
1411
+ } catch ( e ) {
1412
+ return false;
1413
+ }
1414
+ return true;
1415
+ };
1416
+ })(jQuery, window, wp.customize);
js/customizer_preview.js CHANGED
@@ -1,20 +1,33 @@
1
- (function($, exports){
2
  $(document).ready(function(){
3
  var api = parent.wp.customize,
4
  wp_settings = api.settings.settings;
5
- api.previewer.bind('highlight',function(e){
6
- $('.customizerHighlight').removeClass('customizerHighlight');
7
 
8
- if ( $(e).length > 0 ) {
9
- $(e).each(function(){
10
- $(this).addClass('customizerHighlight');
11
- });
12
- }
13
- });
14
 
15
  $.each( customify_settings.settings, function( key, el){
16
 
17
- if ( typeof wp_settings[key] !== "undefined" && typeof el.css !== "undefined" && typeof el.live !== 'undefined' && el.live === true ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
 
19
  var sliced_id = key.slice(0, -1);
20
  sliced_id = sliced_id.replace(customify_settings.options_name + '[', '');
@@ -63,6 +76,17 @@
63
  }
64
  });
65
 
 
 
 
 
 
 
 
 
 
 
 
66
 
67
  api( 'live_css_edit', function (setting) {
68
  setting.bind(function (new_text) {
@@ -71,6 +95,163 @@
71
  });
72
 
73
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
74
  var maybeJsonParse = function ( value ) {
75
  var parsed;
76
 
@@ -86,4 +267,4 @@
86
  return parsed;
87
  };
88
  });
89
- })(jQuery, window);
1
+ ;(function ( $, window, document, undefined ) {
2
  $(document).ready(function(){
3
  var api = parent.wp.customize,
4
  wp_settings = api.settings.settings;
 
 
5
 
6
+ load_webfont_once();
 
 
 
 
 
7
 
8
  $.each( customify_settings.settings, function( key, el){
9
 
10
+ if ( el.type === "font" ) {
11
+ var sliced_id = key.slice(0, -1);
12
+ sliced_id = sliced_id.replace(customify_settings.options_name + '[', '');
13
+
14
+ api( key, function (setting) {
15
+ setting.bind(function (to) {
16
+ var $values = maybeJsonParse( to );
17
+
18
+ if ( typeof $values.font_family !== "undefined" ) {
19
+ maybeLoadFontFamily($values);
20
+ }
21
+
22
+ var vls = get_CSS_values( this.id, $values );
23
+ var CSS = get_CSS_code( this.id, vls );
24
+
25
+ var field_style = $('#customify_font_output_for_' + sliced_id);
26
+
27
+ field_style.html( CSS );
28
+ });
29
+ });
30
+ } else if ( typeof wp_settings[key] !== "undefined" && typeof el.css !== "undefined" && typeof el.live !== 'undefined' && el.live === true ) {
31
 
32
  var sliced_id = key.slice(0, -1);
33
  sliced_id = sliced_id.replace(customify_settings.options_name + '[', '');
76
  }
77
  });
78
 
79
+ /** Bind Custom Events **/
80
+
81
+ api.previewer.bind('highlight',function(e){
82
+ $('.customizerHighlight').removeClass('customizerHighlight');
83
+
84
+ if ( $(e).length > 0 ) {
85
+ $(e).each(function(){
86
+ $(this).addClass('customizerHighlight');
87
+ });
88
+ }
89
+ });
90
 
91
  api( 'live_css_edit', function (setting) {
92
  setting.bind(function (new_text) {
95
  });
96
 
97
 
98
+ /*** HELPERS **/
99
+
100
+ function load_webfont_once() {
101
+ if ( typeof WebFont === "undefined" ) {
102
+ var tk = document.createElement( 'script' );
103
+ tk.src = '//ajax.googleapis.com/ajax/libs/webfont/1/webfont.js';
104
+ tk.type = 'text/javascript';
105
+ var s = document.getElementsByTagName( 'script' )[0];
106
+ s.parentNode.insertBefore( tk, s );
107
+ }
108
+ }
109
+
110
+ var get_CSS_values = function ( ID, $values ) {
111
+
112
+ var store = {};
113
+
114
+ if ( typeof $values.font_family !== "undefined" ) {
115
+ store['font-family'] = $values.font_family;
116
+ }
117
+
118
+ if ( typeof $values.selected_variants !== "undefined" ) {
119
+
120
+ var variants = null;
121
+
122
+ if ( typeof $values.selected_variants !== "undefined" && $values.selected_variants !== null ) {
123
+ variants = $values.selected_variants;
124
+ } else if ( typeof $values.variants !== "undefined" && typeof $values.variants[0] !== "undefined" ) {
125
+ variants = $values.variants[0];
126
+ }
127
+
128
+ // google fonts also have the italic string inside, split that
129
+ if ( variants !== null && variants.indexOf('italic') !== -1 ) {
130
+ store['font-style'] = 'italic';
131
+ variants.replace('italic', '');
132
+ }
133
+
134
+ if ( variants !== "" ) {
135
+ store['font-weight'] = variants;
136
+ }
137
+ }
138
+
139
+ if ( typeof $values.font_size !== "undefined" ) {
140
+ store['font-size'] = $values.font_size + get_field_unit( ID, 'font-size' );
141
+ }
142
+
143
+ if ( typeof $values.letter_spacing !== "undefined" ) {
144
+ store['letter-spacing'] = $values.letter_spacing + get_field_unit( ID, 'letter-spacing' );
145
+ }
146
+
147
+ if ( typeof $values.line_height !== "undefined" ) {
148
+ store['line-height'] = $values.line_height + get_field_unit( ID, 'line-height' );
149
+ }
150
+
151
+ if ( typeof $values.text_align !== "undefined" ) {
152
+ store['text-align'] = $values.text_align;
153
+ }
154
+
155
+ if ( typeof $values.text_transform !== "undefined" ) {
156
+ store['text-transform'] = $values.text_transform;
157
+ }
158
+ if ( typeof $values.text_decoration !== "undefined" ) {
159
+ store['text-decoration'] = $values.text_decoration;
160
+ }
161
+
162
+ return store;
163
+ };
164
+
165
+ var get_CSS_code = function ( ID, $values ) {
166
+
167
+ var field = customify_settings.settings[ID];
168
+ var output = '';
169
+
170
+ if ( typeof window !== "undefined" && typeof field.callback !== "undefined" && typeof window[field.callback] === "function" ) {
171
+ output = window[field.callback]( $values, field );
172
+ } else {
173
+ output = field.selector + "{\n";
174
+ $.each($values,function ( k,v ) {
175
+ output += k + ': ' + v + ";\n";
176
+ })
177
+ output += "}\n";
178
+ }
179
+
180
+ return output;
181
+ };
182
+
183
+ var get_field_unit = function ( ID, field ) {
184
+ var unit = 'px';
185
+ if ( typeof customify_settings.settings[ID] === "undefined" || typeof customify_settings.settings[ID].fields[field] === "undefined") {
186
+ return unit;
187
+ }
188
+
189
+ if ( typeof customify_settings.settings[ID].fields[field].unit !=="undefined" ) {
190
+ return customify_settings.settings[ID].fields[field].unit;
191
+ } else if( typeof customify_settings.settings[ID].fields[field][3] !== "undefined" ) {
192
+ // in case of an associative array
193
+ return customify_settings.settings[ID].fields[field][3];
194
+ }
195
+ }
196
+
197
+ var maybeLoadFontFamily = function( font ) {
198
+
199
+ if ( typeof WebFont === "undefined" ) {
200
+ var tk = document.createElement( 'script' );
201
+ tk.src = '//ajax.googleapis.com/ajax/libs/webfont/1/webfont.js';
202
+ tk.type = 'text/javascript';
203
+ var s = document.getElementsByTagName( 'script' )[0];
204
+ s.parentNode.insertBefore( tk, s );
205
+ }
206
+
207
+ if ( font.type === 'theme_font' ) {
208
+ WebFont.load( {
209
+ custom: {
210
+ families: [ font.font_family ],
211
+ urls: [ font.src ]
212
+ }
213
+ });
214
+ } else if ( font.type === 'google' ) {
215
+ var family = font.font_family,
216
+ variants = null,
217
+ subsets = null;
218
+
219
+ if ( typeof font.variants !== "undefined" ) {
220
+ variants = maybeJsonParse( font.variants );
221
+
222
+ family = family + ':';
223
+
224
+ $.each(variants,function ( k,v ) {
225
+ family = family + v;
226
+ if ( Object.keys(variants).length > (parseInt(k) + 1) ) {
227
+ family = family + ',';
228
+ }
229
+ });
230
+ }
231
+
232
+ if ( typeof font.selected_subsets !== "undefined" ) {
233
+ subsets = maybeJsonParse( font.selected_subsets );
234
+
235
+ family = family + ':';
236
+
237
+ $.each(subsets,function ( k,v ) {
238
+ family = family + v;
239
+ if ( Object.keys(subsets).length > (parseInt(k) + 1) ) {
240
+ family = family + ',';
241
+ }
242
+ });
243
+ }
244
+
245
+ WebFont.load( {
246
+ google: {families: [family]},
247
+ classes: false,
248
+ events: false
249
+ } );
250
+ } else {
251
+ // else what?
252
+ }
253
+ }
254
+
255
  var maybeJsonParse = function ( value ) {
256
  var parsed;
257
 
267
  return parsed;
268
  };
269
  });
270
+ })( jQuery, window, document );
js/font_selector_preview.js DELETED
@@ -1,201 +0,0 @@
1
- (function($, exports){
2
-
3
- $(document).ready(function(){
4
-
5
- if ( typeof WebFont === "undefined" ) {
6
- var tk = document.createElement( 'script' );
7
- tk.src = '//ajax.googleapis.com/ajax/libs/webfont/1/webfont.js';
8
- tk.type = 'text/javascript';
9
- var s = document.getElementsByTagName( 'script' )[0];
10
- s.parentNode.insertBefore( tk, s );
11
- }
12
-
13
- var api = parent.wp.customize,
14
- wp_settings = api.settings.settings;
15
-
16
- $.each( customify_settings.settings, function( key, el){
17
-
18
- if ( el.type === "font" ) {
19
- var sliced_id = key.slice(0, -1);
20
- sliced_id = sliced_id.replace(customify_settings.options_name + '[', '');
21
-
22
- api( key, function (setting) {
23
- setting.bind(function (to) {
24
- var $values = maybeJsonParse( to );
25
- if ( typeof $values.font_family !== "undefined" ) {
26
- maybeLoadFontFamily($values);
27
- }
28
-
29
- var vls = get_CSS_values( this.id, $values );
30
- var CSS = get_CSS_code( this.id, vls );
31
-
32
- var field_style = $('#customify_font_output_for_' + sliced_id);
33
-
34
- field_style.html( CSS );
35
- });
36
- });
37
- }
38
- });
39
-
40
-
41
- var get_CSS_values = function ( ID, $values ) {
42
-
43
- var store = {};
44
-
45
- if ( typeof $values.font_family !== "undefined" ) {
46
- store['font-family'] = $values.font_family;
47
- }
48
-
49
- if ( typeof $values.selected_variants !== "undefined" ) {
50
-
51
- var variants = null;
52
-
53
- if ( typeof $values.selected_variants !== "undefined" && $values.selected_variants !== null ) {
54
- variants = $values.selected_variants;
55
- } else if ( typeof $values.variants !== "undefined" && typeof $values.variants[0] !== "undefined" ) {
56
- variants = $values.variants[0];
57
- }
58
-
59
- // google fonts also have the italic string inside, split that
60
- if ( variants !== null && variants.indexOf('italic') !== -1 ) {
61
- store['font-style'] = 'italic';
62
- variants.replace('italic', '');
63
- }
64
-
65
- if ( variants !== "" ) {
66
- store['font-weight'] = variants;
67
- }
68
- }
69
-
70
- if ( typeof $values.font_size !== "undefined" ) {
71
- store['font-size'] = $values.font_size + get_field_unit( ID, 'font-size' );
72
- }
73
-
74
- if ( typeof $values.letter_spacing !== "undefined" ) {
75
- store['letter-spacing'] = $values.letter_spacing + get_field_unit( ID, 'letter-spacing' );
76
- }
77
-
78
- if ( typeof $values.line_height !== "undefined" ) {
79
- store['line-height'] = $values.line_height + get_field_unit( ID, 'line-height' );
80
- }
81
-
82
- if ( typeof $values.text_align !== "undefined" ) {
83
- store['text-align'] = $values.text_align;
84
- }
85
-
86
- if ( typeof $values.text_transform !== "undefined" ) {
87
- store['text-transform'] = $values.text_transform;
88
- }
89
- if ( typeof $values.text_decoration !== "undefined" ) {
90
- store['text-decoration'] = $values.text_decoration;
91
- }
92
-
93
- return store;
94
- };
95
-
96
- var get_CSS_code = function ( ID, $values ) {
97
-
98
- var field = customify_settings.settings[ID];
99
- var output = '';
100
- if ( typeof field.callback !== "undefined" && typeof window[field.callback] === "function" ) {
101
- output = window[field.callback]( $values, field );
102
- } else {
103
- output = field.selector + "{\n";
104
- $.each($values,function ( k,v ) {
105
- output += k + ': ' + v + ";\n";
106
- })
107
- output += "}\n";
108
- }
109
-
110
- return output;
111
- };
112
-
113
- var get_field_unit = function ( ID, field ) {
114
- var unit = 'px';
115
- if ( typeof customify_settings.settings[ID] === "undefined" || typeof customify_settings.settings[ID].fields[field] === "undefined") {
116
- return unit;
117
- }
118
-
119
- if ( typeof customify_settings.settings[ID].fields[field].unit !=="undefined" ) {
120
- return customify_settings.settings[ID].fields[field].unit;
121
- } else if( typeof customify_settings.settings[ID].fields[field][3] !== "undefined" ) {
122
- // in case of an associative array
123
- return customify_settings.settings[ID].fields[field][3];
124
- }
125
- }
126
-
127
- var maybeLoadFontFamily = function( font ) {
128
-
129
- if ( typeof WebFont === "undefined" ) {
130
- var tk = document.createElement( 'script' );
131
- tk.src = '//ajax.googleapis.com/ajax/libs/webfont/1/webfont.js';
132
- tk.type = 'text/javascript';
133
- var s = document.getElementsByTagName( 'script' )[0];
134
- s.parentNode.insertBefore( tk, s );
135
- }
136
-
137
- if ( font.type === 'theme_font' ) {
138
- WebFont.load( {
139
- custom: {
140
- families: [ font.font_family ],
141
- urls: [ font.src ]
142
- }
143
- });
144
- } else if ( font.type === 'google' ) {
145
- var family = font.font_family,
146
- variants = null,
147
- subsets = null;
148
-
149
- if ( typeof font.variants !== "undefined" ) {
150
- variants = maybeJsonParse( font.variants );
151
-
152
- family = family + ':';
153
-
154
- $.each(variants,function ( k,v ) {
155
- family = family + v;
156
- if ( Object.keys(variants).length > (parseInt(k) + 1) ) {
157
- family = family + ',';
158
- }
159
- });
160
- }
161
-
162
- if ( typeof font.selected_subsets !== "undefined" ) {
163
- subsets = maybeJsonParse( font.selected_subsets );
164
-
165
- family = family + ':';
166
-
167
- $.each(subsets,function ( k,v ) {
168
- family = family + v;
169
- if ( Object.keys(subsets).length > (parseInt(k) + 1) ) {
170
- family = family + ',';
171
- }
172
- });
173
- }
174
-
175
- WebFont.load( {
176
- google: {families: [family]},
177
- classes: false,
178
- events: false
179
- } );
180
- } else {
181
- // else what?
182
- }
183
- }
184
-
185
- var maybeJsonParse = function ( value ) {
186
- var parsed;
187
-
188
- //try and parse it, with decodeURIComponent
189
- try {
190
- parsed = JSON.parse(decodeURIComponent(value));
191
- } catch ( e ) {
192
-
193
- // in case of an error, treat is as a string
194
- parsed = value;
195
- }
196
-
197
- return parsed;
198
- };
199
-
200
- });
201
- })(jQuery, window);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/customify.pot ADDED
@@ -0,0 +1,507 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (C) 2017 Customify
2
+ # This file is distributed under the same license as the Customify package.
3
+ msgid ""
4
+ msgstr ""
5
+ "Project-Id-Version: Customify 1.4.0\n"
6
+ "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/customify\n"
7
+ "POT-Creation-Date: 2017-02-13 13:29:14+00:00\n"
8
+ "MIME-Version: 1.0\n"
9
+ "Content-Type: text/plain; charset=UTF-8\n"
10
+ "Content-Transfer-Encoding: 8bit\n"
11
+ "PO-Revision-Date: 2017-MO-DA HO:MI+ZONE\n"
12
+ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
+ "Language-Team: LANGUAGE <LL@li.org>\n"
14
+
15
+ #: class-pixcustomify.php:977
16
+ msgid "Customify"
17
+ msgstr ""
18
+
19
+ #: class-pixcustomify.php:994
20
+ msgid "Settings"
21
+ msgstr ""
22
+
23
+ #: class-pixcustomify.php:1033
24
+ msgid "Panel title is required"
25
+ msgstr ""
26
+
27
+ #: class-pixcustomify.php:1034
28
+ msgid "Description of what this panel does."
29
+ msgstr ""
30
+
31
+ #: class-pixcustomify.php:1099
32
+ msgid "Reset Customify to Defaults"
33
+ msgstr ""
34
+
35
+ #: class-pixcustomify.php:1140
36
+ msgid "Title Section is required"
37
+ msgstr ""
38
+
39
+ #: class-pixcustomify.php:1527
40
+ msgid "Import"
41
+ msgstr ""
42
+
43
+ #: core/defaults.php:30
44
+ msgid "Numberic value required."
45
+ msgstr ""
46
+
47
+ #: core/defaults.php:31
48
+ msgid "Field is required."
49
+ msgstr ""
50
+
51
+ #: customify_config.php:23
52
+ msgid "Style Presets"
53
+ msgstr ""
54
+
55
+ #: customify_config.php:27
56
+ msgid "Select a style:"
57
+ msgstr ""
58
+
59
+ #: customify_config.php:28
60
+ msgid "Conveniently change the design of your site with built-in style presets. Easy as pie."
61
+ msgstr ""
62
+
63
+ #: customify_config.php:33
64
+ msgid "Royal"
65
+ msgstr ""
66
+
67
+ #: customify_config.php:51
68
+ msgid "Lovely"
69
+ msgstr ""
70
+
71
+ #: customify_config.php:69
72
+ msgid "Queen"
73
+ msgstr ""
74
+
75
+ #: customify_config.php:87
76
+ msgid "Carrot"
77
+ msgstr ""
78
+
79
+ #: customify_config.php:108
80
+ msgid "Adler"
81
+ msgstr ""
82
+
83
+ #: customify_config.php:126
84
+ msgid "Velvet"
85
+ msgstr ""
86
+
87
+ #: customify_config.php:153 settings/general.php:52
88
+ msgid "Colors"
89
+ msgstr ""
90
+
91
+ #: customify_config.php:157
92
+ msgid "Links Color"
93
+ msgstr ""
94
+
95
+ #: customify_config.php:169
96
+ msgid "Headings Color"
97
+ msgstr ""
98
+
99
+ #: customify_config.php:184
100
+ msgid "Body Color"
101
+ msgstr ""
102
+
103
+ #: customify_config.php:201
104
+ msgid "Fonts"
105
+ msgstr ""
106
+
107
+ #: customify_config.php:205
108
+ msgid "Headings"
109
+ msgstr ""
110
+
111
+ #: customify_config.php:236
112
+ msgid "Body Text"
113
+ msgstr ""
114
+
115
+ #: customify_config.php:257
116
+ msgid "Backgrounds"
117
+ msgstr ""
118
+
119
+ #: customify_config.php:261
120
+ msgid "Page Background"
121
+ msgstr ""
122
+
123
+ #: customify_config.php:277
124
+ msgid "Layout"
125
+ msgstr ""
126
+
127
+ #: features/class-CSS_Editor.php:68 features/class-CSS_Editor.php:130
128
+ msgid ""
129
+ "/*\n"
130
+ " * Welcome to the Custom CSS Editor\n"
131
+ " *\n"
132
+ " * CSS (Cascading Style Sheets) is a language that helps\n"
133
+ " * the browser render your website. You may remove these\n"
134
+ " * lines and get started with your own customizations.\n"
135
+ " *\n"
136
+ " * The generated code will be placed after the theme\n"
137
+ " * stylesheets, which means that your rules can take\n"
138
+ " * precedence and override the theme CSS rules. Just\n"
139
+ " * write here what you want to change, you don't need\n"
140
+ " * to copy all your theme's stylesheet content.\n"
141
+ " *\n"
142
+ " * Getting started with CSS (tutorial):\n"
143
+ " * http://bit.ly/css-getting-started\n"
144
+ " */\n"
145
+ "\n"
146
+ "/* An example of a Custom CSS Snippet */\n"
147
+ "selector {\n"
148
+ "\tcolor: green;\n"
149
+ "}"
150
+ msgstr ""
151
+
152
+ #: features/class-CSS_Editor.php:120 features/class-CSS_Editor.php:127
153
+ msgid "CSS Editor"
154
+ msgstr ""
155
+
156
+ #: features/class-CSS_Editor.php:157
157
+ msgid "Edit Live Css"
158
+ msgstr ""
159
+
160
+ #: features/class-Customify_Importer.php:52
161
+ msgid "Missing option key"
162
+ msgstr ""
163
+
164
+ #: features/class-Customify_Importer.php:57
165
+ msgid "Missing step id"
166
+ msgstr ""
167
+
168
+ #: features/class-Customify_Importer.php:81
169
+ #: features/class-Customify_Importer.php:108
170
+ msgid "Wrong value, I cannot decode"
171
+ msgstr ""
172
+
173
+ #: features/class-Customify_Importer.php:88
174
+ msgid "This option is already here"
175
+ msgstr ""
176
+
177
+ #: features/class-Customify_Importer.php:94
178
+ #: features/class-Customify_Importer.php:117
179
+ msgid "I can't import this!"
180
+ msgstr ""
181
+
182
+ #: features/class-Customify_Importer.php:127
183
+ msgid "No file"
184
+ msgstr ""
185
+
186
+ #: features/class-Customify_Importer.php:134
187
+ msgid "No url"
188
+ msgstr ""
189
+
190
+ #: features/class-Customify_Importer.php:157
191
+ msgid "No recall type"
192
+ msgstr ""
193
+
194
+ #: features/class-Customify_Importer.php:165
195
+ msgid "No recall data"
196
+ msgstr ""
197
+
198
+ #: features/class-Customify_Importer.php:204
199
+ msgid "This is already imported"
200
+ msgstr ""
201
+
202
+ #: features/class-Customify_Importer.php:210
203
+ msgid "Done"
204
+ msgstr ""
205
+
206
+ #: features/class-Customify_Importer.php:219
207
+ msgid "wrong recall type"
208
+ msgstr ""
209
+
210
+ #: features/class-Customify_Importer.php:228
211
+ msgid "I dont think i should be here"
212
+ msgstr ""
213
+
214
+ #: features/class-Customify_Importer.php:237
215
+ msgid "Wrong import type"
216
+ msgstr ""
217
+
218
+ #: features/class-Customify_Importer.php:314
219
+ #: features/class-Customify_Importer.php:360
220
+ msgid "They are already here"
221
+ msgstr ""
222
+
223
+ #: features/class-Customify_Importer.php:320
224
+ #: features/class-Customify_Importer.php:366
225
+ msgid "Nothing to import"
226
+ msgstr ""
227
+
228
+ #: features/class-Font_Selector.php:35
229
+ msgid "Theme Fonts"
230
+ msgstr ""
231
+
232
+ #: features/customizer/controls/class-Pix_Customize_Background_Control.php:99
233
+ msgid "No media selected"
234
+ msgstr ""
235
+
236
+ #: features/customizer/controls/class-Pix_Customize_Background_Control.php:138
237
+ msgid "Upload"
238
+ msgstr ""
239
+
240
+ #: features/customizer/controls/class-Pix_Customize_Background_Control.php:145
241
+ msgid "Remove"
242
+ msgstr ""
243
+
244
+ #: features/customizer/controls/class-Pix_Customize_Font_Control.php:180
245
+ #: features/customizer/controls/class-Pix_Customize_Font_Control.php:188
246
+ #: features/customizer/controls/class-Pix_Customize_Typography_Control.php:215
247
+ #: features/customizer/controls/class-Pix_Customize_Typography_Control.php:223
248
+ msgid "Google fonts"
249
+ msgstr ""
250
+
251
+ #: features/customizer/controls/class-Pix_Customize_Font_Control.php:255
252
+ #: features/customizer/controls/class-Pix_Customize_Typography_Control.php:169
253
+ msgid "Recommended"
254
+ msgstr ""
255
+
256
+ #: features/customizer/controls/class-Pix_Customize_Font_Control.php:278
257
+ #: features/customizer/controls/class-Pix_Customize_Typography_Control.php:193
258
+ msgid "Standard fonts"
259
+ msgstr ""
260
+
261
+ #: features/customizer/controls/class-Pix_Customize_Font_Control.php:361
262
+ msgid "Font Size"
263
+ msgstr ""
264
+
265
+ #: features/customizer/controls/class-Pix_Customize_Font_Control.php:373
266
+ msgid "Line height"
267
+ msgstr ""
268
+
269
+ #: features/customizer/controls/class-Pix_Customize_Font_Control.php:386
270
+ msgid "Letter Spacing"
271
+ msgstr ""
272
+
273
+ #: features/customizer/controls/class-Pix_Customize_Font_Control.php:398
274
+ msgid "Text Align"
275
+ msgstr ""
276
+
277
+ #: features/customizer/controls/class-Pix_Customize_Font_Control.php:400
278
+ msgid "Initial"
279
+ msgstr ""
280
+
281
+ #: features/customizer/controls/class-Pix_Customize_Font_Control.php:401
282
+ msgid "Center"
283
+ msgstr ""
284
+
285
+ #: features/customizer/controls/class-Pix_Customize_Font_Control.php:402
286
+ msgid "Left"
287
+ msgstr ""
288
+
289
+ #: features/customizer/controls/class-Pix_Customize_Font_Control.php:403
290
+ msgid "Right"
291
+ msgstr ""
292
+
293
+ #: features/customizer/controls/class-Pix_Customize_Font_Control.php:413
294
+ msgid "Text Transform"
295
+ msgstr ""
296
+
297
+ #: features/customizer/controls/class-Pix_Customize_Font_Control.php:415
298
+ #: features/customizer/controls/class-Pix_Customize_Font_Control.php:430
299
+ msgid "None"
300
+ msgstr ""
301
+
302
+ #: features/customizer/controls/class-Pix_Customize_Font_Control.php:416
303
+ msgid "Capitalize"
304
+ msgstr ""
305
+
306
+ #: features/customizer/controls/class-Pix_Customize_Font_Control.php:417
307
+ msgid "Uppercase"
308
+ msgstr ""
309
+
310
+ #: features/customizer/controls/class-Pix_Customize_Font_Control.php:418
311
+ msgid "Lowercase"
312
+ msgstr ""
313
+
314
+ #: features/customizer/controls/class-Pix_Customize_Font_Control.php:428
315
+ msgid "Text Decoration"
316
+ msgstr ""
317
+
318
+ #: features/customizer/controls/class-Pix_Customize_Font_Control.php:431
319
+ msgid "Underline"
320
+ msgstr ""
321
+
322
+ #: features/customizer/controls/class-Pix_Customize_Font_Control.php:432
323
+ msgid "Overline"
324
+ msgstr ""
325
+
326
+ #: features/customizer/controls/class-Pix_Customize_Font_Control.php:433
327
+ msgid "Line Through"
328
+ msgstr ""
329
+
330
+ #: features/customizer/controls/class-Pix_Customize_Import_Demo_Data_Control.php:41
331
+ msgid "Please wait a few minutes (between 1 and 3 minutes usually, but depending on your hosting it can take longer) and "
332
+ msgstr ""
333
+
334
+ #: features/customizer/controls/class-Pix_Customize_Import_Demo_Data_Control.php:42
335
+ msgid "don't reload the page"
336
+ msgstr ""
337
+
338
+ #: features/customizer/controls/class-Pix_Customize_Import_Demo_Data_Control.php:43
339
+ msgid "You will be notified as soon as the import has finished!"
340
+ msgstr ""
341
+
342
+ #: features/customizer/controls/class-Pix_Customize_Typography_Control.php:157
343
+ msgid "Typekit"
344
+ msgstr ""
345
+
346
+ #: plugin-config.php:46
347
+ msgid "Invalid Value."
348
+ msgstr ""
349
+
350
+ #: settings/css_editor.php:9
351
+ msgid "Enable CSS Editor"
352
+ msgstr ""
353
+
354
+ #: settings/css_editor.php:21
355
+ msgid "Use Ace Editor?"
356
+ msgstr ""
357
+
358
+ #: settings/general.php:33
359
+ msgid "Store values as:"
360
+ msgstr ""
361
+
362
+ #: settings/general.php:34
363
+ msgid "You can store the values globally so you can use them with other themes or store them as a \"theme_mod\" which will make an individual set of options only for the current theme"
364
+ msgstr ""
365
+
366
+ #: settings/general.php:38
367
+ msgid "Option (global options)"
368
+ msgstr ""
369
+
370
+ #: settings/general.php:39
371
+ msgid "Theme Mod (per theme options)"
372
+ msgstr ""
373
+
374
+ #: settings/general.php:45
375
+ msgid "Disable default sections"
376
+ msgstr ""
377
+
378
+ #: settings/general.php:46
379
+ msgid "You can disable default sections"
380
+ msgstr ""
381
+
382
+ #: settings/general.php:49
383
+ msgid "Navigation"
384
+ msgstr ""
385
+
386
+ #: settings/general.php:50
387
+ msgid "Front Page"
388
+ msgstr ""
389
+
390
+ #: settings/general.php:51
391
+ msgid "Title"
392
+ msgstr ""
393
+
394
+ #: settings/general.php:53
395
+ msgid "Background"
396
+ msgstr ""
397
+
398
+ #: settings/general.php:54
399
+ msgid "Header"
400
+ msgstr ""
401
+
402
+ #: settings/general.php:55
403
+ msgid "Widgets"
404
+ msgstr ""
405
+
406
+ #: settings/general.php:61
407
+ msgid "Enable Reset Buttons"
408
+ msgstr ""
409
+
410
+ #: settings/general.php:62
411
+ msgid "You can enable \"Reset to defaults\" buttons for panels / sections or all settings. We have disabled this feature by default to avoid accidental resets. If you are sure that you need it please enable this."
412
+ msgstr ""
413
+
414
+ #: settings/general.php:69
415
+ msgid "Enable Editor Style"
416
+ msgstr ""
417
+
418
+ #: settings/general.php:70
419
+ msgid "The styling added by Customify in front-end can be added in the WordPress editor too by enabling this option"
420
+ msgstr ""
421
+
422
+ #: settings/general.php:80
423
+ msgid "Disable Customify sections"
424
+ msgstr ""
425
+
426
+ #: settings/general.php:81
427
+ msgid "You can also disable Customify's sections"
428
+ msgstr ""
429
+
430
+ #: settings/output.php:10
431
+ msgid "Styles location:"
432
+ msgstr ""
433
+
434
+ #: settings/output.php:11
435
+ msgid "Here you can decide where to put your style output, in header or footer"
436
+ msgstr ""
437
+
438
+ #: settings/output.php:15
439
+ msgid "In header (just before the head tag)"
440
+ msgstr ""
441
+
442
+ #: settings/output.php:16
443
+ msgid "Footer (just before the end of the body tag)"
444
+ msgstr ""
445
+
446
+ #: settings/typography.php:9
447
+ msgid "Enable Typography Options"
448
+ msgstr ""
449
+
450
+ #: settings/typography.php:21
451
+ msgid "Use Standard fonts:"
452
+ msgstr ""
453
+
454
+ #: settings/typography.php:22 settings/typography.php:29
455
+ msgid "Would you like them?"
456
+ msgstr ""
457
+
458
+ #: settings/typography.php:28
459
+ msgid "Use Google fonts:"
460
+ msgstr ""
461
+
462
+ #: settings/typography.php:40
463
+ msgid "Group Google fonts:"
464
+ msgstr ""
465
+
466
+ #: settings/typography.php:41
467
+ msgid "You can chose to see the google fonts in groups"
468
+ msgstr ""
469
+
470
+ #: views/admin.php:26
471
+ msgid "PixCustomify"
472
+ msgstr ""
473
+
474
+ #: views/admin.php:33
475
+ msgid "Unable to save settings."
476
+ msgstr ""
477
+
478
+ #: views/admin.php:34
479
+ msgid "Please check the fields for errors and typos."
480
+ msgstr ""
481
+
482
+ #: views/admin.php:41
483
+ msgid "Settings have been updated."
484
+ msgstr ""
485
+
486
+ #: views/admin.php:51
487
+ msgid "Save Changes"
488
+ msgstr ""
489
+ #. Plugin Name of the plugin/theme
490
+ msgid "Customify"
491
+ msgstr ""
492
+
493
+ #. Plugin URI of the plugin/theme
494
+ msgid "http://pixelgrade.com"
495
+ msgstr ""
496
+
497
+ #. Description of the plugin/theme
498
+ msgid "A Theme Customizer Booster"
499
+ msgstr ""
500
+
501
+ #. Author of the plugin/theme
502
+ msgid "PixelGrade"
503
+ msgstr ""
504
+
505
+ #. Author URI of the plugin/theme
506
+ msgid "http://pixelgrade.com"
507
+ msgstr ""
plugin-config.php CHANGED
@@ -14,7 +14,7 @@ $customify_config = require $basepath . 'customify_config.php';
14
  return array(
15
  'plugin-name' => 'pixcustomify',
16
  'settings-key' => 'pixcustomify_settings',
17
- 'textdomain' => 'pixcustomify_txtd',
18
  'template-paths' => array(
19
  $basepath . 'core/views/form-partials/',
20
  $basepath . 'views/form-partials/',
@@ -43,7 +43,7 @@ return array(
43
  'counter' => array( 'is_numeric', 'not_empty' ),
44
  ),
45
  'errors' => array(
46
- 'not_empty' => __( 'Invalid Value.', pixcustomify::textdomain() ),
47
  ),
48
  // 'callbacks' => array(
49
  // 'save_settings' => 'save_customizer_plugin_settings'
14
  return array(
15
  'plugin-name' => 'pixcustomify',
16
  'settings-key' => 'pixcustomify_settings',
17
+ 'textdomain' => 'customify',
18
  'template-paths' => array(
19
  $basepath . 'core/views/form-partials/',
20
  $basepath . 'views/form-partials/',
43
  'counter' => array( 'is_numeric', 'not_empty' ),
44
  ),
45
  'errors' => array(
46
+ 'not_empty' => __( 'Invalid Value.', 'customify' ),
47
  ),
48
  // 'callbacks' => array(
49
  // 'save_settings' => 'save_customizer_plugin_settings'
plugin-defaults.php CHANGED
@@ -3,7 +3,7 @@
3
  # Hidden fields
4
  'settings_saved_once' => '0',
5
  # General
6
- 'values_store_mod' => 'option',
7
 
8
  'typography' => true,
9
  'typography_standard_fonts' => true,
3
  # Hidden fields
4
  'settings_saved_once' => '0',
5
  # General
6
+ 'values_store_mod' => 'theme_mod',
7
 
8
  'typography' => true,
9
  'typography_standard_fonts' => true,
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: pixelgrade, euthelup, babbardel, vlad.olaru, cristianfrumusanu
3
  Tags: customizer, css, editor, live, preview, customise
4
  Requires at least: 4.4.0
5
  Tested up to: 4.7.0
6
- Stable tag: 1.3.1
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
@@ -37,6 +37,15 @@ With [Customify](https://github.com/pixelgrade/customify), developers can easily
37
 
38
  == Changelog ==
39
 
 
 
 
 
 
 
 
 
 
40
  = 1.3.1 =
41
  * Fixed compatibility with PHP <= 5.3.x
42
 
3
  Tags: customizer, css, editor, live, preview, customise
4
  Requires at least: 4.4.0
5
  Tested up to: 4.7.0
6
+ Stable tag: 1.4.0
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
37
 
38
  == Changelog ==
39
 
40
+ = 1.4.0 =
41
+ * Make Customify compatible with the [4.7 customizer changes](https://make.wordpress.org/core/2016/10/12/customize-changesets-technical-design-decisions)
42
+ * Add `show_if` [config option](https://github.com/pixelgrade/customify#conditional-fields)
43
+ * Fix Conflict with Jetpack - Related posts
44
+ * Fix Javascript callbacks loss
45
+ * Switch de default storage from option to theme_mod
46
+ * Fixed Incorrect Color Panel Height
47
+ * Fixed Font field weight in customizer preview
48
+
49
  = 1.3.1 =
50
  * Fixed compatibility with PHP <= 5.3.x
51
 
scss/customizer.scss CHANGED
@@ -135,8 +135,9 @@ $background-hover : #f5fcff;
135
  }
136
  }
137
 
138
-
139
-
 
140
  }
141
 
142
  #customize-controls .description {
@@ -374,10 +375,6 @@ $background-hover : #f5fcff;
374
  }
375
  }
376
 
377
- .customize-section-description-container + .customize-control {
378
- margin-bottom: 0;
379
- }
380
-
381
  #customize-controls .customize-info,
382
  #customize-controls .customize-section-title {
383
  &.is-sticky.is-sticky {
135
  }
136
  }
137
 
138
+ .customize-pane-child.open {
139
+ height: 100%;
140
+ }
141
  }
142
 
143
  #customize-controls .description {
375
  }
376
  }
377
 
 
 
 
 
378
  #customize-controls .customize-info,
379
  #customize-controls .customize-section-title {
380
  &.is-sticky.is-sticky {
settings/css_editor.php CHANGED
@@ -6,7 +6,7 @@ return array(
6
  'label' => 'CSS Editor',
7
  'options' => array(
8
  'css_editor' => array(
9
- 'label' => __( 'Enable CSS Editor', 'pixcustomify_txtd' ),
10
  'default' => true,
11
  'type' => 'switch',
12
  'show_group' => 'css_editor_group',
@@ -18,7 +18,7 @@ return array(
18
  'options' => array(
19
  'css_editor_use_ace' => array(
20
  'name' => 'typography_standard_fonts',
21
- 'label' => __( 'Use Ace Editor?', 'pixcustomify_txtd' ),
22
  'default' => true,
23
  'type' => 'switch',
24
  )
6
  'label' => 'CSS Editor',
7
  'options' => array(
8
  'css_editor' => array(
9
+ 'label' => __( 'Enable CSS Editor', 'customify' ),
10
  'default' => true,
11
  'type' => 'switch',
12
  'show_group' => 'css_editor_group',
18
  'options' => array(
19
  'css_editor_use_ace' => array(
20
  'name' => 'typography_standard_fonts',
21
+ 'label' => __( 'Use Ace Editor?', 'customify' ),
22
  'default' => true,
23
  'type' => 'switch',
24
  )
settings/general.php CHANGED
@@ -30,44 +30,44 @@ $general_settings = array(
30
  'options' => array(
31
  'values_store_mod' => array(
32
  'name' => 'values_store_mod',
33
- 'label' => __( 'Store values as:', 'pixcustomify_txtd' ),
34
- 'desc' => __( 'You can store the values globally so you can use them with other themes or store them as a "theme_mod" which will make an individual set of options only for the current theme', 'pixcustomify_txtd' ),
35
  'default' => 'option',
36
  'type' => 'select',
37
  'options' => array(
38
- 'option' => __( 'Option (global options)', 'pixcustomify_txtd' ),
39
- 'theme_mod' => __( 'Theme Mod (per theme options)', 'pixcustomify_txtd' ),
40
  ),
41
  ),
42
 
43
  'disable_default_sections' => array(
44
  'name' => 'disable_default_sections',
45
- 'label' => __( 'Disable default sections', 'pixcustomify_txtd' ),
46
- 'desc' => __( 'You can disable default sections', 'pixcustomify_txtd' ),
47
  'type' => 'multicheckbox',
48
  'options' => array(
49
- 'nav' => __( 'Navigation', 'pixcustomify_txtd' ),
50
- 'static_front_page' => __( 'Front Page', 'pixcustomify_txtd' ),
51
- 'title_tagline' => __( 'Title', 'pixcustomify_txtd' ),
52
- 'colors' => __( 'Colors', 'pixcustomify_txtd' ),
53
- 'background_image' => __( 'Background', 'pixcustomify_txtd' ),
54
- 'header_image' => __( 'Header', 'pixcustomify_txtd' ),
55
- 'widgets' => __( 'Widgets', 'pixcustomify_txtd' ),
56
  ),
57
  ),
58
 
59
  'enable_reset_buttons' => array(
60
  'name' => 'enable_reset_buttons',
61
- 'label' => __( 'Enable Reset Buttons', 'pixcustomify_txtd' ),
62
- 'desc' => __( 'You can enable "Reset to defaults" buttons for panels / sections or all settings. We have disabled this feature by default to avoid accidental resets. If you are sure that you need it please enable this.', 'pixcustomify_txtd' ),
63
  'default' => false,
64
  'type' => 'switch',
65
  ),
66
 
67
  'enable_editor_style' => array(
68
  'name' => 'enable_editor_style',
69
- 'label' => __( 'Enable Editor Style', 'pixcustomify_txtd' ),
70
- 'desc' => __( 'The styling added by Customify in front-end can be added in the WordPress editor too by enabling this option', 'pixcustomify_txtd' ),
71
  'default' => true,
72
  'type' => 'switch',
73
  ),
@@ -77,8 +77,8 @@ $general_settings = array(
77
  if ( !empty( $customify_sections ) ) {
78
  $general_settings['options']['disable_customify_sections'] = array(
79
  'name' => 'disable_customify_sections',
80
- 'label' => __( 'Disable Customify sections', 'pixcustomify_txtd' ),
81
- 'desc' => __( 'You can also disable Customify\'s sections', 'pixcustomify_txtd' ),
82
  'type' => 'multicheckbox',
83
  'options' => $customify_sections
84
  );
30
  'options' => array(
31
  'values_store_mod' => array(
32
  'name' => 'values_store_mod',
33
+ 'label' => __( 'Store values as:', 'customify' ),
34
+ 'desc' => __( 'You can store the values globally so you can use them with other themes or store them as a "theme_mod" which will make an individual set of options only for the current theme', 'customify' ),
35
  'default' => 'option',
36
  'type' => 'select',
37
  'options' => array(
38
+ 'option' => __( 'Option (global options)', 'customify' ),
39
+ 'theme_mod' => __( 'Theme Mod (per theme options)', 'customify' ),
40
  ),
41
  ),
42
 
43
  'disable_default_sections' => array(
44
  'name' => 'disable_default_sections',
45
+ 'label' => __( 'Disable default sections', 'customify' ),
46
+ 'desc' => __( 'You can disable default sections', 'customify' ),
47
  'type' => 'multicheckbox',
48
  'options' => array(
49
+ 'nav' => __( 'Navigation', 'customify' ),
50
+ 'static_front_page' => __( 'Front Page', 'customify' ),
51
+ 'title_tagline' => __( 'Title', 'customify' ),
52
+ 'colors' => __( 'Colors', 'customify' ),
53
+ 'background_image' => __( 'Background', 'customify' ),
54
+ 'header_image' => __( 'Header', 'customify' ),
55
+ 'widgets' => __( 'Widgets', 'customify' ),
56
  ),
57
  ),
58
 
59
  'enable_reset_buttons' => array(
60
  'name' => 'enable_reset_buttons',
61
+ 'label' => __( 'Enable Reset Buttons', 'customify' ),
62
+ 'desc' => __( 'You can enable "Reset to defaults" buttons for panels / sections or all settings. We have disabled this feature by default to avoid accidental resets. If you are sure that you need it please enable this.', 'customify' ),
63
  'default' => false,
64
  'type' => 'switch',
65
  ),
66
 
67
  'enable_editor_style' => array(
68
  'name' => 'enable_editor_style',
69
+ 'label' => __( 'Enable Editor Style', 'customify' ),
70
+ 'desc' => __( 'The styling added by Customify in front-end can be added in the WordPress editor too by enabling this option', 'customify' ),
71
  'default' => true,
72
  'type' => 'switch',
73
  ),
77
  if ( !empty( $customify_sections ) ) {
78
  $general_settings['options']['disable_customify_sections'] = array(
79
  'name' => 'disable_customify_sections',
80
+ 'label' => __( 'Disable Customify sections', 'customify' ),
81
+ 'desc' => __( 'You can also disable Customify\'s sections', 'customify' ),
82
  'type' => 'multicheckbox',
83
  'options' => $customify_sections
84
  );
settings/output.php CHANGED
@@ -7,24 +7,24 @@ $output_settings = array(
7
  'options' => array(
8
  'style_resources_location' => array(
9
  'name' => 'style_resources_location',
10
- 'label' => __( 'Styles location:', 'pixcustomify_txtd' ),
11
- 'desc' => __( 'Here you can decide where to put your style output, in header or footer', 'pixcustomify_txtd' ),
12
  'default' => 'wp_footer',
13
  'type' => 'select',
14
  'options' => array(
15
- 'wp_head' => __( "In header (just before the head tag)", 'pixcustomify_txtd' ),
16
- 'wp_footer' => __( "Footer (just before the end of the body tag)", 'pixcustomify_txtd' ),
17
  ),
18
  ),
19
  // 'script_resources_location' => array(
20
  // 'name' => 'script_resources_location',
21
- // 'label' => __( 'Script location:', 'pixcustomify_txtd' ),
22
- // 'desc' => __( 'Here you can decide where to put your scripts output, in header or footer', 'pixcustomify_txtd' ),
23
  // 'default' => 'wp_footer',
24
  // 'type' => 'select',
25
  // 'options' => array(
26
- // 'wp_head' => __( 'In <head> (just before </head>', 'pixcustomify_txtd' ),
27
- // 'wp_footer' => __( 'Footer (just before </body>)', 'pixcustomify_txtd' ),
28
  // )
29
  // )
30
  )
7
  'options' => array(
8
  'style_resources_location' => array(
9
  'name' => 'style_resources_location',
10
+ 'label' => __( 'Styles location:', 'customify' ),
11
+ 'desc' => __( 'Here you can decide where to put your style output, in header or footer', 'customify' ),
12
  'default' => 'wp_footer',
13
  'type' => 'select',
14
  'options' => array(
15
+ 'wp_head' => __( "In header (just before the head tag)", 'customify' ),
16
+ 'wp_footer' => __( "Footer (just before the end of the body tag)", 'customify' ),
17
  ),
18
  ),
19
  // 'script_resources_location' => array(
20
  // 'name' => 'script_resources_location',
21
+ // 'label' => __( 'Script location:', 'customify' ),
22
+ // 'desc' => __( 'Here you can decide where to put your scripts output, in header or footer', 'customify' ),
23
  // 'default' => 'wp_footer',
24
  // 'type' => 'select',
25
  // 'options' => array(
26
+ // 'wp_head' => __( 'In <head> (just before </head>', 'customify' ),
27
+ // 'wp_footer' => __( 'Footer (just before </body>)', 'customify' ),
28
  // )
29
  // )
30
  )
settings/typography.php CHANGED
@@ -6,7 +6,7 @@ return array(
6
  'label' => 'Typography Settings',
7
  'options' => array(
8
  'typography' => array(
9
- 'label' => __( 'Enable Typography Options', 'pixcustomify_txtd' ),
10
  'default' => true,
11
  'type' => 'switch',
12
  'show_group' => 'typography_group',
@@ -18,15 +18,15 @@ return array(
18
  'options' => array(
19
  'typography_standard_fonts' => array(
20
  'name' => 'typography_standard_fonts',
21
- 'label' => __( 'Use Standard fonts:', 'pixcustomify_txtd' ),
22
- 'desc' => __( 'Would you like them?', 'pixcustomify_txtd' ),
23
  'default' => true,
24
  'type' => 'switch',
25
  ),
26
  'typography_google_fonts' => array(
27
  'name' => 'typography_google_fonts',
28
- 'label' => __( 'Use Google fonts:', 'pixcustomify_txtd' ),
29
- 'desc' => __( 'Would you like them?', 'pixcustomify_txtd' ),
30
  'default' => true,
31
  'type' => 'switch',
32
  'show_group' => 'typography_google_fonts_group',
@@ -37,8 +37,8 @@ return array(
37
  'options' => array(
38
  'typography_group_google_fonts' => array(
39
  'name' => 'typography_standard_fonts',
40
- 'label' => __( 'Group Google fonts:', 'pixcustomify_txtd' ),
41
- 'desc' => __( 'You can chose to see the google fonts in groups', 'pixcustomify_txtd' ),
42
  'default' => true,
43
  'type' => 'switch',
44
  ),
6
  'label' => 'Typography Settings',
7
  'options' => array(
8
  'typography' => array(
9
+ 'label' => __( 'Enable Typography Options', 'customify' ),
10
  'default' => true,
11
  'type' => 'switch',
12
  'show_group' => 'typography_group',
18
  'options' => array(
19
  'typography_standard_fonts' => array(
20
  'name' => 'typography_standard_fonts',
21
+ 'label' => __( 'Use Standard fonts:', 'customify' ),
22
+ 'desc' => __( 'Would you like them?', 'customify' ),
23
  'default' => true,
24
  'type' => 'switch',
25
  ),
26
  'typography_google_fonts' => array(
27
  'name' => 'typography_google_fonts',
28
+ 'label' => __( 'Use Google fonts:', 'customify' ),
29
+ 'desc' => __( 'Would you like them?', 'customify' ),
30
  'default' => true,
31
  'type' => 'switch',
32
  'show_group' => 'typography_google_fonts_group',
37
  'options' => array(
38
  'typography_group_google_fonts' => array(
39
  'name' => 'typography_standard_fonts',
40
+ 'label' => __( 'Group Google fonts:', 'customify' ),
41
+ 'desc' => __( 'You can chose to see the google fonts in groups', 'customify' ),
42
  'default' => true,
43
  'type' => 'switch',
44
  ),
views/admin.php CHANGED
@@ -23,22 +23,22 @@ $errors = $processor->errors(); ?>
23
 
24
  <div id="icon-options-general" class="icon32"><br></div>
25
 
26
- <h2><?php _e( 'PixCustomify', 'pixcustomify_txtd' ); ?></h2>
27
 
28
  <?php if ( $processor->ok() ): ?>
29
 
30
  <?php if ( ! empty( $errors ) ): ?>
31
  <br/>
32
  <p class="update-nag">
33
- <strong><?php _e( 'Unable to save settings.', 'pixcustomify_txtd' ); ?></strong>
34
- <?php _e( 'Please check the fields for errors and typos.', 'pixcustomify_txtd' ); ?>
35
  </p>
36
  <?php endif;
37
 
38
  if ( $processor->performed_update() ): ?>
39
  <br/>
40
  <p class="update-nag">
41
- <?php _e( 'Settings have been updated.', 'pixcustomify_txtd' ); ?>
42
  </p>
43
  <?php endif;
44
  echo $f = pixcustomify::form( $config, $processor );
@@ -48,7 +48,7 @@ $errors = $processor->errors(); ?>
48
  echo $f->field( 'typography' )->render();
49
  // echo $f->field( 'css_editor' )->render(); ?>
50
  <button type="submit" class="button button-primary">
51
- <?php _e( 'Save Changes', 'pixcustomify_txtd' ); ?>
52
  </button>
53
 
54
  <?php echo $f->endform();
23
 
24
  <div id="icon-options-general" class="icon32"><br></div>
25
 
26
+ <h2><?php _e( 'PixCustomify', 'customify' ); ?></h2>
27
 
28
  <?php if ( $processor->ok() ): ?>
29
 
30
  <?php if ( ! empty( $errors ) ): ?>
31
  <br/>
32
  <p class="update-nag">
33
+ <strong><?php _e( 'Unable to save settings.', 'customify' ); ?></strong>
34
+ <?php _e( 'Please check the fields for errors and typos.', 'customify' ); ?>
35
  </p>
36
  <?php endif;
37
 
38
  if ( $processor->performed_update() ): ?>
39
  <br/>
40
  <p class="update-nag">
41
+ <?php _e( 'Settings have been updated.', 'customify' ); ?>
42
  </p>
43
  <?php endif;
44
  echo $f = pixcustomify::form( $config, $processor );
48
  echo $f->field( 'typography' )->render();
49
  // echo $f->field( 'css_editor' )->render(); ?>
50
  <button type="submit" class="button button-primary">
51
+ <?php _e( 'Save Changes', 'customify' ); ?>
52
  </button>
53
 
54
  <?php echo $f->endform();